From 34746e865b71a234749aff1052e703627e167c46 Mon Sep 17 00:00:00 2001 From: mjallen18 Date: Thu, 21 Aug 2025 19:06:51 -0500 Subject: [PATCH] move some apps to namespace --- modules/nixos/actual/default.nix | 3 +- modules/nixos/actual/options.nix | 4 +- .../nixos/apps/free-games-claimer/default.nix | 4 +- .../nixos/apps/free-games-claimer/options.nix | 4 +- modules/nixos/apps/manyfold/default.nix | 4 +- modules/nixos/apps/manyfold/options.nix | 4 +- modules/nixos/apps/mongodb/default.nix | 4 +- modules/nixos/apps/mongodb/options.nix | 4 +- modules/nixos/apps/tdarr/default.nix | 4 +- modules/nixos/apps/tdarr/options.nix | 4 +- modules/nixos/apps/your-spotify/default.nix | 4 +- modules/nixos/apps/your-spotify/options.nix | 4 +- modules/nixos/arrs/default.nix | 3 +- modules/nixos/arrs/options.nix | 4 +- modules/nixos/crowdsec/default.nix | 3 +- modules/nixos/crowdsec/options.nix | 4 +- modules/nixos/disko/x86_64-linux/default.nix | 18 +- modules/nixos/gitea/default.nix | 4 +- modules/nixos/gitea/options.nix | 4 +- modules/nixos/impermanence/default.nix | 7 +- modules/nixos/orca/default.nix | 3 +- modules/nixos/orca/options.nix | 4 +- systems/x86_64-linux/desktop/default.nix | 1 + systems/x86_64-linux/nas/apps.nix | 174 +++++++++--------- systems/x86_64-linux/nuc/default.nix | 8 +- 25 files changed, 149 insertions(+), 135 deletions(-) diff --git a/modules/nixos/actual/default.nix b/modules/nixos/actual/default.nix index 60c2c4b..561e3d0 100644 --- a/modules/nixos/actual/default.nix +++ b/modules/nixos/actual/default.nix @@ -2,11 +2,12 @@ config, pkgs, lib, + namespace, ... }: with lib; let - cfg = config.nas-apps.actual; + cfg = config.${namespace}.services.actual; dataDir = "/data"; hostAddress = "10.0.1.3"; actualUserId = config.users.users.nix-apps.uid; diff --git a/modules/nixos/actual/options.nix b/modules/nixos/actual/options.nix index 6582f4c..60af858 100644 --- a/modules/nixos/actual/options.nix +++ b/modules/nixos/actual/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.actual = { + options.${namespace}.services.actual = { enable = mkEnableOption "actual service"; port = mkOption { diff --git a/modules/nixos/apps/free-games-claimer/default.nix b/modules/nixos/apps/free-games-claimer/default.nix index fc70aaa..0046e4b 100755 --- a/modules/nixos/apps/free-games-claimer/default.nix +++ b/modules/nixos/apps/free-games-claimer/default.nix @@ -1,7 +1,7 @@ -{ lib, config, ... }: +{ lib, config, namespace, ... }: with lib; let - cfg = config.nas-apps.free-games-claimer; + cfg = config.${namespace}.services.free-games-claimer; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/apps/free-games-claimer/options.nix b/modules/nixos/apps/free-games-claimer/options.nix index 5bf17f7..953cd05 100755 --- a/modules/nixos/apps/free-games-claimer/options.nix +++ b/modules/nixos/apps/free-games-claimer/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.free-games-claimer = { + options.${namespace}.services.free-games-claimer = { enable = mkEnableOption "free-games-claimer docker service"; autoStart = mkOption { diff --git a/modules/nixos/apps/manyfold/default.nix b/modules/nixos/apps/manyfold/default.nix index 1681f22..91063bc 100755 --- a/modules/nixos/apps/manyfold/default.nix +++ b/modules/nixos/apps/manyfold/default.nix @@ -1,7 +1,7 @@ -{ lib, config, ... }: +{ lib, config, namespace, ... }: with lib; let - cfg = config.nas-apps.manyfold; + cfg = config.${namespace}.services.manyfold; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/apps/manyfold/options.nix b/modules/nixos/apps/manyfold/options.nix index 21a8d96..1492ed2 100755 --- a/modules/nixos/apps/manyfold/options.nix +++ b/modules/nixos/apps/manyfold/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.manyfold = { + options.${namespace}.services.manyfold = { enable = mkEnableOption "manyfold docker service"; autoStart = mkOption { diff --git a/modules/nixos/apps/mongodb/default.nix b/modules/nixos/apps/mongodb/default.nix index c3e1fab..637e35e 100755 --- a/modules/nixos/apps/mongodb/default.nix +++ b/modules/nixos/apps/mongodb/default.nix @@ -1,7 +1,7 @@ -{ lib, config, ... }: +{ lib, config, namespace, ... }: with lib; let - cfg = config.nas-apps.mongodb; + cfg = config.${namespace}.services.mongodb; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/apps/mongodb/options.nix b/modules/nixos/apps/mongodb/options.nix index da3582a..0cb1878 100755 --- a/modules/nixos/apps/mongodb/options.nix +++ b/modules/nixos/apps/mongodb/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.mongodb = { + options.${namespace}.services.mongodb = { enable = mkEnableOption "mongodb docker service"; autoStart = mkOption { diff --git a/modules/nixos/apps/tdarr/default.nix b/modules/nixos/apps/tdarr/default.nix index ff19578..fc75d80 100755 --- a/modules/nixos/apps/tdarr/default.nix +++ b/modules/nixos/apps/tdarr/default.nix @@ -1,7 +1,7 @@ -{ lib, config, ... }: +{ lib, config, namespace, ... }: with lib; let - cfg = config.nas-apps.tdarr; + cfg = config.${namespace}.services.tdarr; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/apps/tdarr/options.nix b/modules/nixos/apps/tdarr/options.nix index 617203f..a7eea33 100755 --- a/modules/nixos/apps/tdarr/options.nix +++ b/modules/nixos/apps/tdarr/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.tdarr = { + options.${namespace}.services.tdarr = { enable = mkEnableOption "tdarr docker service"; autoStart = mkOption { diff --git a/modules/nixos/apps/your-spotify/default.nix b/modules/nixos/apps/your-spotify/default.nix index 08055f2..0ed2eeb 100755 --- a/modules/nixos/apps/your-spotify/default.nix +++ b/modules/nixos/apps/your-spotify/default.nix @@ -1,7 +1,7 @@ -{ lib, config, ... }: +{ lib, config, namespace, ... }: with lib; let - cfg = config.nas-apps.your_spotify; + cfg = config.${namespace}.services.your_spotify; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/apps/your-spotify/options.nix b/modules/nixos/apps/your-spotify/options.nix index 72ebaa8..dea5d89 100755 --- a/modules/nixos/apps/your-spotify/options.nix +++ b/modules/nixos/apps/your-spotify/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.your_spotify = { + options.${namespace}.services.your_spotify = { enable = mkEnableOption "your_spotify docker service"; autoStart = mkOption { diff --git a/modules/nixos/arrs/default.nix b/modules/nixos/arrs/default.nix index 28fcee7..91da4b3 100755 --- a/modules/nixos/arrs/default.nix +++ b/modules/nixos/arrs/default.nix @@ -2,11 +2,12 @@ config, pkgs, lib, + namespace, ... }: with lib; let - cfg = config.nas-apps.arrs; + cfg = config.${namespace}.services.arrs; radarrDataDir = "/var/lib/radarr"; downloadDir = "/downloads"; incompleteDir = "/downloads-incomplete"; diff --git a/modules/nixos/arrs/options.nix b/modules/nixos/arrs/options.nix index c79de31..ae61166 100644 --- a/modules/nixos/arrs/options.nix +++ b/modules/nixos/arrs/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.arrs = { + options.${namespace}.services.arrs = { enable = mkEnableOption "arrs services"; radarr = { diff --git a/modules/nixos/crowdsec/default.nix b/modules/nixos/crowdsec/default.nix index cacc4a4..52efce2 100755 --- a/modules/nixos/crowdsec/default.nix +++ b/modules/nixos/crowdsec/default.nix @@ -2,11 +2,12 @@ config, lib, pkgs, + namespace, ... }: with lib; let - cfg = config.nas-apps.crowdsec; + cfg = config.${namespace}.services.crowdsec; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/crowdsec/options.nix b/modules/nixos/crowdsec/options.nix index ca72184..02f8c3c 100644 --- a/modules/nixos/crowdsec/options.nix +++ b/modules/nixos/crowdsec/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.crowdsec = { + options.${namespace}.services.crowdsec = { enable = mkEnableOption "crowdsec service"; port = mkOption { diff --git a/modules/nixos/disko/x86_64-linux/default.nix b/modules/nixos/disko/x86_64-linux/default.nix index b0c5909..6f02a7e 100644 --- a/modules/nixos/disko/x86_64-linux/default.nix +++ b/modules/nixos/disko/x86_64-linux/default.nix @@ -79,7 +79,7 @@ in main = { device = rootDisk; type = "disk"; - imageSize = "15G"; + imageSize = "32G"; content = { type = "gpt"; partitions = { @@ -108,23 +108,26 @@ in "--compression=zstd" ]; subvolumes = { - "/root" = { + "subvolumes/root" = { mountpoint = "/"; + mountOptions = [ + "verbose" + ]; }; - "/persistent" = { + "subvolumes/persistent" = { mountpoint = "/persistent"; }; - "/nix" = { + "subvolumes/nix" = { mountOptions = [ "noatime" ]; mountpoint = "/nix"; }; }; - mountpoint = "/partition-root"; }; }; - } (lib.mkIf (cfg.filesystem == "btrfs") { + } + (lib.mkIf (cfg.filesystem == "btrfs") { nodev."/" = { fsType = "tmpfs"; mountOptions = [ @@ -133,6 +136,7 @@ in "size=25%" ]; }; - })]; + }) + ]; }; } diff --git a/modules/nixos/gitea/default.nix b/modules/nixos/gitea/default.nix index f86ec32..b5a10ad 100644 --- a/modules/nixos/gitea/default.nix +++ b/modules/nixos/gitea/default.nix @@ -1,7 +1,7 @@ -{ config, lib, ... }: +{ config, lib, namespace, ... }: with lib; let - cfg = config.nas-apps.gitea; + cfg = config.${namespace}.services.gitea; hostAddress = "10.0.1.3"; # localAddress = "10.0.4.18"; # httpPort = 3000; diff --git a/modules/nixos/gitea/options.nix b/modules/nixos/gitea/options.nix index 294810c..af34b09 100644 --- a/modules/nixos/gitea/options.nix +++ b/modules/nixos/gitea/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.gitea = { + options.${namespace}.services.gitea = { enable = mkEnableOption "gitea service"; httpPort = mkOption { diff --git a/modules/nixos/impermanence/default.nix b/modules/nixos/impermanence/default.nix index 7b9b571..98df851 100755 --- a/modules/nixos/impermanence/default.nix +++ b/modules/nixos/impermanence/default.nix @@ -2,11 +2,12 @@ { config, lib, + namespace, ... }: with lib; let - cfg = config.mjallen.impermanence; + cfg = config.${namespace}.impermanence; in { imports = [ ./options.nix ]; @@ -107,14 +108,14 @@ in config.fileSystems."/".fsType == "btrfs" || config.fileSystems."/".fsType == "bcachefs" || config.fileSystems."/".fsType == "tmpfs" else false; - message = "rootfs must be btrfs, bcachefs, or tmpfs"; + message = "rootfs must be btrfs, bcachefs, or tmpfs; not " + config.fileSystems."/".fsType; } { assertion = if hasAttr "/" config.fileSystems && (config.fileSystems."/".fsType == "btrfs" || config.fileSystems."/".fsType == "bcachefs") then any ( - t: t == "subvol=root" || t == "subvol=/root" || t == "X-mount.subdir=root" + t: t == "subvol=root" || t == "subvol=/root" || t == "X-mount.subdir=subvolumes/root" ) config.fileSystems."/".options else true; diff --git a/modules/nixos/orca/default.nix b/modules/nixos/orca/default.nix index 2aea1f3..d24c953 100644 --- a/modules/nixos/orca/default.nix +++ b/modules/nixos/orca/default.nix @@ -1,11 +1,12 @@ { lib, config, + namespace, ... }: with lib; let - cfg = config.nas-apps.orca-slicer; + cfg = config.${namespace}.services.orca-slicer; in { imports = [ ./options.nix ]; diff --git a/modules/nixos/orca/options.nix b/modules/nixos/orca/options.nix index 3ed0bde..033e97c 100644 --- a/modules/nixos/orca/options.nix +++ b/modules/nixos/orca/options.nix @@ -1,7 +1,7 @@ -{ lib, ... }: +{ lib, namespace, ... }: with lib; { - options.nas-apps.orca-slicer = { + options.${namespace}.services.orca-slicer = { enable = mkEnableOption "orca slicer docker service"; autoStart = mkOption { diff --git a/systems/x86_64-linux/desktop/default.nix b/systems/x86_64-linux/desktop/default.nix index 397693c..42a1d69 100644 --- a/systems/x86_64-linux/desktop/default.nix +++ b/systems/x86_64-linux/desktop/default.nix @@ -40,6 +40,7 @@ in ${namespace} = { hardware.disko.enable = false; bootloader.lanzaboote.enable = true; + impermanence.enable = true; desktop.gnome.enable = true; network = { hostName = "matt-nixos"; diff --git a/systems/x86_64-linux/nas/apps.nix b/systems/x86_64-linux/nas/apps.nix index ce1be17..97189d1 100755 --- a/systems/x86_64-linux/nas/apps.nix +++ b/systems/x86_64-linux/nas/apps.nix @@ -2,6 +2,7 @@ { ${namespace} = { services = { + # Existing properly namespaced services immich.enable = true; jellyfin.enable = true; jellyseerr.enable = true; @@ -11,93 +12,92 @@ paperless.enable = true; traefik.enable = true; wyoming.enable = true; + + # Newly migrated services + actual = { + enable = true; + port = 3333; + localAddress = "10.0.3.18"; + dataDir = "/media/nas/main/nix-app-data/actual"; + reverseProxy = { + enable = true; + host = "actual.mjallen.dev"; + middlewares = [ + "crowdsec" + "whitelist-geoblock" + ]; + }; + }; + + arrs = { + enable = true; + localAddress = "10.0.1.51"; + downloadsDir = "/media/nas/main/ssd_app_data/downloads"; + incompleteDownloadsDir = "/media/nas/main/ssd_app_data/downloads-incomplete"; + moviesDir = "/media/nas/main/movies"; + tvDir = "/media/nas/main/tv"; + isosDir = "/media/nas/main/isos"; + radarr = { + enable = true; + port = 7878; + dataDir = "/media/nas/main/nix-app-data/radarr"; + }; + sonarr = { + enable = true; + port = 8989; + dataDir = "/media/nas/main/nix-app-data/sonarr"; + }; + sabnzbd = { + enable = true; + port = 8280; + dataDir = "/media/nas/main/nix-app-data/sabnzbd"; + }; + deluge = { + enable = true; + port = 8112; + }; + jackett = { + enable = true; + port = 9117; + dataDir = "/media/nas/main/nix-app-data/jackett"; + }; + }; + + crowdsec = { + enable = true; + port = 9898; + apiAddress = "10.0.1.3"; + apiKey = "1daH89qmJ41r2Lpd9hvDw4sxtOAtBzaj3aKFOFqE"; + dataDir = "/media/nas/main/nix-app-data/crowdsec"; + }; + + gitea = { + enable = true; + httpPort = 3000; + sshPort = 2222; + localAddress = "10.0.4.18"; + dataDir = "/media/nas/main/nix-app-data/gitea"; + reverseProxy = { + enable = true; + host = "gitea.mjallen.dev"; + middlewares = [ + "crowdsec" + "whitelist-geoblock" + ]; + }; + }; + + free-games-claimer.enable = true; + + manyfold.enable = true; + + orca-slicer = { + enable = true; + httpPort = "3100"; + httpsPort = "3101"; + }; + + tdarr.enable = true; }; }; - - nas-apps = { - actual = { - enable = true; - port = 3333; - localAddress = "10.0.3.18"; - dataDir = "/media/nas/main/nix-app-data/actual"; - reverseProxy = { - enable = true; - host = "actual.mjallen.dev"; - middlewares = [ - "crowdsec" - "whitelist-geoblock" - ]; - }; - }; - - arrs = { - enable = true; - localAddress = "10.0.1.51"; - downloadsDir = "/media/nas/main/ssd_app_data/downloads"; - incompleteDownloadsDir = "/media/nas/main/ssd_app_data/downloads-incomplete"; - moviesDir = "/media/nas/main/movies"; - tvDir = "/media/nas/main/tv"; - isosDir = "/media/nas/main/isos"; - radarr = { - enable = true; - port = 7878; - dataDir = "/media/nas/main/nix-app-data/radarr"; - }; - sonarr = { - enable = true; - port = 8989; - dataDir = "/media/nas/main/nix-app-data/sonarr"; - }; - sabnzbd = { - enable = true; - port = 8280; - dataDir = "/media/nas/main/nix-app-data/sabnzbd"; - }; - deluge = { - enable = true; - port = 8112; - }; - jackett = { - enable = true; - port = 9117; - dataDir = "/media/nas/main/nix-app-data/jackett"; - }; - }; - - crowdsec = { - enable = true; - port = 9898; - apiAddress = "10.0.1.3"; - apiKey = "1daH89qmJ41r2Lpd9hvDw4sxtOAtBzaj3aKFOFqE"; - dataDir = "/media/nas/main/nix-app-data/crowdsec"; - }; - - gitea = { - enable = true; - httpPort = 3000; - sshPort = 2222; - localAddress = "10.0.4.18"; - dataDir = "/media/nas/main/nix-app-data/gitea"; - reverseProxy = { - enable = true; - host = "gitea.mjallen.dev"; - middlewares = [ - "crowdsec" - "whitelist-geoblock" - ]; - }; - }; - - free-games-claimer.enable = true; - - manyfold.enable = true; - - orca-slicer = { - enable = true; - httpPort = "3100"; - httpsPort = "3101"; - }; - - tdarr.enable = true; - }; } diff --git a/systems/x86_64-linux/nuc/default.nix b/systems/x86_64-linux/nuc/default.nix index bf663e5..b380706 100644 --- a/systems/x86_64-linux/nuc/default.nix +++ b/systems/x86_64-linux/nuc/default.nix @@ -17,10 +17,14 @@ ${namespace} = { services.home-assistant.enable = true; - hardware.disko.enable = true; + hardware.disko = { + enable = true; + filesystem = "bcachefs"; + }; + impermanence.enable = true; network = { hostName = "nuc-nixos"; - useNetworkd = true; + useNetworkd = false; ipv4 = { method = "manual"; address = "10.0.1.4/24";