1

Compare commits

...

12 Commits

12 changed files with 197 additions and 45 deletions

View File

@ -38,7 +38,7 @@
# sha256 = "sha256-Gq9klAMXk+SHb7C6z6apErVRz0PB5jyADfixqGZyDDc=";
# };
# });
#
# rich_14_2_0 = pkgs.python313Packages.rich.overridePythonAttrs (old: {
# version = "14.2.0";
# src = pkgs.python313Packages.fetchPypi {
@ -49,22 +49,12 @@
# doCheck = false;
# });
# rich_14_2_0 = pkgs.python313Packages.rich.overridePythonAttrs (old: {
# version = "14.2.0";
# src = pkgs.fetchFromGitHub {
# owner = "Textualize";
# repo = "rich";
# tag = "v14.2.0";
# hash = "sha256-oQbxRbZnVr/Ln+i/hpBw5FlpUp3gcp/7xsxi6onPkn8=";
# };
# });
tidalDlNg = pythonPkgs.buildPythonApplication rec {
pname = "tidal-dl-ng";
version = "0.31.3";
pname = "tidal_dl_ng";
version = "0.33.0";
format = "pyproject";
# TODO: The official repo was deleted, find the new one once it pops up
# The official repo was deleted
# src = pkgs.fetchFromGitHub {
# owner = "exislow";
# repo = "tidal-dl-ng";
@ -72,14 +62,22 @@
# sha256 = "sha256-PUT0anx1yivgXwW21jah7Rv1/BabOT+KPoW446NFNyg=";
# };
src = pkgs.fetchFromGitHub {
owner = "rodvicj";
repo = "tidal_dl_ng-Project";
rev = "4573142c76ef045ebf8e80c34657dd2bec96f17d";
sha256 = "sha256-3sO2qj8V4KXOWK7vQsFAOYeTZo2rsc/M36SwRnC0oVg=";
# Alternative repo
# src = pkgs.fetchFromGitHub {
# owner = "rodvicj";
# repo = "tidal_dl_ng-Project";
# rev = "4573142c76ef045ebf8e80c34657dd2bec96f17d";
# sha256 = "sha256-3sO2qj8V4KXOWK7vQsFAOYeTZo2rsc/M36SwRnC0oVg=";
# };
# Package is still on PyPi
src = pythonPkgs.fetchPypi {
inherit pname version;
sha256 = "sha256-rOMyxnT7uVnMbn678DFtqAu4+Uc5VFGcqGI0jxplnpc=";
};
doCheck = false;
dontCheckRuntimeDeps = true;
catchConflicts = false;
strictDeps = false;

View File

@ -560,6 +560,8 @@ in
audacity
ferdium
gparted
# feishin # electron :(
jellyfin-tui
# Office
kdePackages.wacomtablet # For xournalpp/krita

View File

@ -141,7 +141,7 @@
jellyfin-desktop
jellyfin-mpv-shim
# tidal-hifi
# tidal-dl-ng # TODO: Borked
tidal-dl-ng # TODO: Borked
picard
handbrake
teamspeak6-client

View File

@ -243,7 +243,7 @@ in {
# catppuccin-web-file-icons
clearurls
# cookie-autodelete
dark-background-light-text
# dark-background-light-text
display-_anchors # Easier linking to specific website parts
don-t-fuck-with-paste
# enhancer-for-youtube # Discontinued, use tweaks-for-youtube

View File

@ -49,6 +49,7 @@ in {
tinymist
typescript
vscode-langservers-extracted # includes nodejs
autotools-language-server
# Linters
checkstyle # java
@ -887,6 +888,7 @@ in {
};
};
}
{name = "autotools-language-server";}
# {name = "nil_ls";}
{
name = "nixd";

View File

@ -85,6 +85,9 @@
ip,
router,
nameserver ? "8.8.8.8;8.8.4.4;",
ip6,
router6,
nameserver6 ? "2001:4860:4860::8888;2001:4860:4860::8844;",
autoconnect ? true,
priority ? 0,
}: {
@ -103,7 +106,12 @@
};
ipv6 = {
method = "disabled";
method = "auto";
addr-gen-mode = "stable-privacy";
ignore-auto-dns = "true";
address1 = ip6;
gateway = router6;
dns = nameserver6;
};
};
}

View File

@ -27,23 +27,65 @@
useNetworkManager = true;
# Systemd-networkd configs
networks = {
networks = let
# TODO: mylib.networking.mkStaticSystemdNetwork needs improvement to accomodate for this
mkConfig = name: routable: rec {
enable = true;
# See man systemd.link, man systemd.netdev, man systemd.network
matchConfig = {
# This corresponds to the [MATCH] section
Name = name; # Match ethernet interface
};
# Static IP + DNS + Gateway
address = ["192.168.86.50/24"];
gateway = ["192.168.86.5"]; # Don't add "fd00::5", rely on router advertisement instead
dns = ["129.168.86.26" "fd00::1a" "8.8.8.8" "8.8.4.4" "2001:4860:4860::8888" "2001:4860:4860::8844"];
routes = builtins.map (r: {Gateway = r;}) gateway;
# See man systemd.network
networkConfig = {
# This corresponds to the [NETWORK] section
DHCP = "no";
IPv6AcceptRA = "yes"; # Accept Router Advertisements
# MulticastDNS = "no";
# LLMNR = "no";
# LinkLocalAddressing = "ipv6";
};
addresses = [
{
# Don't add this to address, we don't want to create any routes with this
Address = "fd00::32/64"; # IPv6 Unique-Local Address (ULA)
}
];
linkConfig = {
# This corresponds to the [LINK] section
RequiredForOnline = routable;
};
};
in {
# "10-ether-2_5G" = mylib.networking.mkStaticSystemdNetwork {
# interface = "enp8s0";
# ips = ["192.168.86.50/24"];
# routers = ["192.168.86.5"];
# nameservers = ["192.168.86.26" "8.8.8.8"];
# routable = true;
# };
# "10-ether-1G" = mylib.networking.mkStaticSystemdNetwork {
# interface = "enp5s0";
# ips = ["192.168.86.50/24"];
# routers = ["192.168.86.5"];
# nameservers = ["192.168.86.26" "8.8.8.8"];
# routable = false;
# };
# This should override the default network 50-ether
"10-ether-2_5G" = mylib.networking.mkStaticSystemdNetwork {
interface = "enp8s0";
ips = ["192.168.86.50/24"];
routers = ["192.168.86.5"];
nameservers = ["192.168.86.26" "8.8.8.8"];
routable = true;
};
"10-ether-1G" = mylib.networking.mkStaticSystemdNetwork {
interface = "enp5s0";
ips = ["192.168.86.50/24"];
routers = ["192.168.86.5"];
nameservers = ["192.168.86.26" "8.8.8.8"];
routable = false;
};
# "10-ether-1G" = mylib.networking.mkStaticSystemdNetwork {...};
"10-ether-1G" = mkConfig "enp5s0" "no";
"10-ether-2_5G" = mkConfig "enp8s0" "routable";
};
# NetworkManager profiles
@ -56,6 +98,9 @@
ip = "192.168.86.50/24";
router = "192.168.86.5";
nameserver = "192.168.86.26;8.8.8.8;";
ip6 = "fd00::32/64";
router6 = "fd00::5";
nameserver6 = "2001:4860:4860::8888;2001:4860:4860::8844;";
priority = 10; # Rather connect to 2.5G than to 1G
};
"10-ether-1G" = mylib.networking.mkStaticNetworkManagerProfile {
@ -64,6 +109,9 @@
ip = "192.168.86.50/24";
router = "192.168.86.5";
nameserver = "192.168.86.26;8.8.8.8;";
ip6 = "fd00::32/64";
router6 = "fd00::5";
nameserver6 = "2001:4860:4860::8888;2001:4860:4860::8844;";
};
};

View File

@ -28,6 +28,7 @@
../services/gitea.nix
../services/immich.nix
../services/jellyfin.nix
../services/kiwix.nix
../services/kopia.nix
../services/nextcloud.nix
../services/nginx-proxy-manager.nix
@ -50,7 +51,12 @@
{
name = "behind-nginx";
disable_masquerade = false;
# We have 4 IPv6 prefixes, one is used for LAN, one is used for ThinkNix behind-nginx docker network (for DNS).
# Questionable if we should enable it here aswell...
ipv6.enable = false;
# ipv6.gateway = "fd00::5";
# ipv6.subnet = "2001:7d8:8023:a00a::/64";
}
];
@ -58,12 +64,52 @@
useNetworkManager = false;
networks = {
"10-ether-1G" = mylib.networking.mkStaticSystemdNetwork {
interface = "ens18";
ips = ["192.168.86.25/24"];
routers = ["192.168.86.5"];
nameservers = ["8.8.8.8"]; # NOTE: Use reliable DNS for servers instead of 192.168.86.26
routable = true;
# "10-ether-1G" = mylib.networking.mkStaticSystemdNetwork {
# interface = "ens18";
# ips = ["192.168.86.25/24" "fd00::19/64"];
# routers = ["192.168.86.5" "fd00::5"];
# nameservers = ["8.8.8.8" "2001:4860:4860::8888"]; # NOTE: Use reliable DNS for servers instead of 192.168.86.26
# routable = true;
# };
# TODO: mylib.networking.mkStaticSystemdNetwork needs improvement to accomodate for this
"10-ether-1G" = rec {
enable = true;
# See man systemd.link, man systemd.netdev, man systemd.network
matchConfig = {
# This corresponds to the [MATCH] section
Name = "ens18"; # Match ethernet interface
};
# Static IP + DNS + Gateway
address = ["192.168.86.25/24"];
gateway = ["192.168.86.5"]; # Don't add IPv6 gateway, rely on router advertisement instead
dns = ["8.8.8.8" "8.8.4.4" "2001:4860:4860:8888" "2001:4860:4860:8844"];
routes = builtins.map (r: {Gateway = r;}) gateway;
# See man systemd.network
networkConfig = {
# This corresponds to the [NETWORK] section
DHCP = "no";
IPv6AcceptRA = "yes"; # Accept Router Advertisements
# MulticastDNS = "no";
# LLMNR = "no";
# LinkLocalAddressing = "ipv6";
};
addresses = [
{
# Don't add this to address, we don't want to create any routes with this
Address = "fd00::19/64";
}
];
linkConfig = {
# This corresponds to the [LINK] section
RequiredForOnline = "routable";
};
};
};
@ -89,6 +135,8 @@
3000 # Gitea (runner needs to reach local gitea instance)
5520 # HyTale
30033 # Teamspeak
9987 # Teamspeak
];

View File

@ -6,7 +6,7 @@
}: let
vectorchordVersion = "0.4.2";
pgvectorsVersion = "0.2.0";
immichVersion = "2.3.1";
immichVersion = "2.5.2";
in {
virtualisation.oci-containers.containers = {
immich-database = {

40
system/services/kiwix.nix Normal file
View File

@ -0,0 +1,40 @@
{
config,
lib,
pkgs,
...
}: let
kiwixVersion = "3.8.1";
in {
virtualisation.oci-containers.containers = {
kiwix = {
image = "ghcr.io/kiwix/kiwix-serve:${kiwixVersion}";
autoStart = true;
dependsOn = [];
ports = [
# "8080:80"
];
volumes = [
# TODO: Add network location for .zim files
"kiwix_data:/data"
];
environment = {
PUID = "1000";
PGID = "1000";
TZ = "Europe/Berlin";
};
cmd = ["*.zim"];
extraOptions = [
# "--privileged"
# "--device=nvidia.com/gpu=all"
"--net=behind-nginx"
];
};
};
}

View File

@ -26,6 +26,9 @@ in {
"80:80"
# "81:81" # Web interface
"443:443"
# TODO: Should probably split the nginx configs for ServeNix and ThinkNix
"5520:5520" # HyTale
];
volumes = [

View File

@ -142,9 +142,11 @@ in {
(mkUDir ".config/blender" m755)
(mkUDir ".config/chromium" m755) # TODO: Remove this someday
(mkUDir ".config/Ferdium" m755)
(mkUDir ".config/feishin" m755)
(mkUDir ".config/fish/completions" m755)
(mkUDir ".config/impermanence" m755)
(mkUDir ".config/jellyfin-mpv-shim" m755)
(mkUDir ".config/jellyfin-tui" m755) # TODO: Generate this config file, have to use sops because it includes the password in cleartext
(mkUDir ".config/JetBrains" m755)
(mkUDir ".config/kdeconnect" m755)
(mkUDir ".config/keepassxc" m755)
@ -171,6 +173,7 @@ in {
(mkUDir ".local/share/fish" m755)
(mkUDir ".local/share/flatpak" m755)
(mkUDir ".local/share/jellyfin-desktop" m755)
(mkUDir ".local/share/jellyfin-tui" m755)
(mkUDir ".local/share/JetBrains" m755) # Unity
(mkUDir ".local/share/hyprland" m755)
(mkUDir ".local/share/keyrings" m755) # m700