diff --git a/hosts/envy/default.nix b/hosts/envy/default.nix index 88c4251..686e31b 100644 --- a/hosts/envy/default.nix +++ b/hosts/envy/default.nix @@ -16,6 +16,7 @@ }; system = { + desktop.enable = true; lanzaboote.enable = true; wireguard.client.enable = true; libvirtd.enable = true; diff --git a/hosts/envy/disko/default.nix b/hosts/envy/disko/default.nix index c229671..22e38bc 100644 --- a/hosts/envy/disko/default.nix +++ b/hosts/envy/disko/default.nix @@ -62,18 +62,14 @@ mountOptions = [ "compress=zstd" "noatime" "ssd" ]; }; - # Impermanence - "/persist" = { - mountpoint = "/persist"; - mountOptions = [ "compress=zstd" "noatime" "ssd" ]; - }; - "/persist/.snapshots" = { }; - - "${config.sysusers.main}" = { - mountpoint = "/persist/home/${config.sysusers.main}"; - mountOptions = [ "compress=zstd" "noatime" "ssd" ]; - }; - "/${config.sysusers.main}/.snapshots" = { }; + # Impermanence + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ "compress=zstd" "noatime" "ssd" ]; + }; + "/persist/.snapshots" = { }; + "/persist/home/${config.sysusers.main}" = { }; + "/persist/home/${config.sysusers.main}/.snapshots" = { }; }; }; }; @@ -90,8 +86,5 @@ }; # Needed for impermanence - fileSystems = { - "/persist".neededForBoot = true; - "/persist/home/${config.sysusers.main}".neededForBoot = true; - }; + fileSystems."/persist".neededForBoot = true; } diff --git a/hosts/envy/users/main/default.nix b/hosts/envy/users/main/default.nix index 1988a95..d0dee73 100644 --- a/hosts/envy/users/main/default.nix +++ b/hosts/envy/users/main/default.nix @@ -1,6 +1,9 @@ { config, lib, ... }: { home-manager.users."${config.sysusers.main}" = { - home.stateVersion = lib.mkForce "24.11"; + home = { + desktop.enable = true; + stateVersion = lib.mkForce "24.11"; + }; }; } diff --git a/hosts/kitty/default.nix b/hosts/kitty/default.nix index 4e00377..8475880 100644 --- a/hosts/kitty/default.nix +++ b/hosts/kitty/default.nix @@ -15,7 +15,6 @@ }; system = { - desktop.enable = false; server.enable = true; fileserver.enable = true; socialserver.enable = true; diff --git a/hosts/prophet/default.nix b/hosts/prophet/default.nix index 287eb20..5bdab45 100644 --- a/hosts/prophet/default.nix +++ b/hosts/prophet/default.nix @@ -17,7 +17,6 @@ environment.persistence."/persist".enable = lib.mkForce false; system = { - desktop.enable = false; mailserver.enable = true; wireless.enable = false; wireguard.client.enable = true; diff --git a/hosts/redmond/default.nix b/hosts/redmond/default.nix index 0dcbc31..43b4065 100644 --- a/hosts/redmond/default.nix +++ b/hosts/redmond/default.nix @@ -16,6 +16,7 @@ }; system = { + desktop.enable = true; lanzaboote.enable = true; wireguard.client.enable = true; stateVersion = "24.05"; diff --git a/hosts/tower/default.nix b/hosts/tower/default.nix index ebd0f53..ecae484 100644 --- a/hosts/tower/default.nix +++ b/hosts/tower/default.nix @@ -17,6 +17,7 @@ }; system = { + desktop.enable = true; lanzaboote.enable = true; wireless.enable = false; video.nvidia.enable = true; diff --git a/hosts/tower/disko/default.nix b/hosts/tower/disko/default.nix index 65c24b3..65641b1 100644 --- a/hosts/tower/disko/default.nix +++ b/hosts/tower/disko/default.nix @@ -68,12 +68,8 @@ mountOptions = [ "compress=zstd" "noatime" "ssd" ]; }; "/persist/.snapshots" = { }; - - "/${config.sysusers.main}" = { - mountpoint = "/persist/home/${config.sysusers.main}"; - mountOptions = [ "compress=zstd" "noatime" "ssd" ]; - }; - "/${config.sysusers.main}/.snapshots" = { }; + "/persist/home/${config.sysusers.main}" = { }; + "/persist/home/${config.sysusers.main}/.snapshots" = { }; }; }; }; diff --git a/hosts/tower/users/main/default.nix b/hosts/tower/users/main/default.nix index 7029b4e..32b949f 100644 --- a/hosts/tower/users/main/default.nix +++ b/hosts/tower/users/main/default.nix @@ -1,6 +1,9 @@ { config, lib, ... }: { home-manager.users."${config.sysusers.main}" = { - home.stateVersion = lib.mkForce "24.05"; + home = { + desktop.enable = true; + stateVersion = lib.mkForce "24.05"; + }; }; } diff --git a/modules/home/default.nix b/modules/home/default.nix index 105cddc..4922538 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,8 +1,7 @@ -{ nur, ... }: +{ nur, lib, ... }: { imports = [ ./files - ./options ./programs ./services ./settings @@ -14,6 +13,12 @@ nur.modules.homeManager.default ]; - nixpkgs.config.allowUnfree = true; - home.stateVersion = "24.11"; + options.home = { + desktop.enable = lib.mkEnableOption "Enable desktop programs and services."; + }; + + config = { + nixpkgs.config.allowUnfree = true; + home.stateVersion = "24.11"; + }; } diff --git a/modules/home/options/default.nix b/modules/home/options/default.nix deleted file mode 100644 index bc877b4..0000000 --- a/modules/home/options/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ lib, ... }: -with lib; { - options.home.desktop.enable = mkOption { - type = types.bool; - default = true; - }; -} diff --git a/modules/system/default.nix b/modules/system/default.nix index b3b2dd7..381c04f 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -1,13 +1,17 @@ -{ ... }: +{ lib, ... }: { imports = [ ./accounts ./devices - ./options ./programs ./secrets ./services ./settings ../extras ]; + + options.system = { + desktop.enable = lib.mkEnableOption "Enable desktop apps and services"; + server.enable = lib.mkEnableOption "Enable server apps and services"; + }; } diff --git a/modules/system/options/default.nix b/modules/system/options/default.nix deleted file mode 100644 index 08b7e98..0000000 --- a/modules/system/options/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, ... }: -with lib; { - options.system = { - desktop.enable = mkOption { - type = types.bool; - default = true; - }; - server.enable = mkOption { - type = types.bool; - default = false; - }; - }; -} diff --git a/modules/system/services/server/ddclient/default.nix b/modules/system/services/server/ddclient/default.nix new file mode 100644 index 0000000..0074ff8 --- /dev/null +++ b/modules/system/services/server/ddclient/default.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: +{ + config = lib.mkIf config.system.server.enable { + services.ddclient = { + enable = true; + protocol = "cloudflare"; + zone = "${config.domains.p2}"; + usev6 = ""; + username = "token"; + passwordFile = "${pkgs.writeText "cloudflareapikey" config.secrets.flareApiKey}"; + }; + environment.persistence."/persist".directories = [ + "/var/lib/private/ddclient" + ]; + }; +} diff --git a/modules/system/services/server/default.nix b/modules/system/services/server/default.nix index 2a1f1fc..f0f1c54 100644 --- a/modules/system/services/server/default.nix +++ b/modules/system/services/server/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ + ./ddclient ./fileserver ./forgejo ./icecast diff --git a/modules/system/services/server/fileserver/default.nix b/modules/system/services/server/fileserver/default.nix index 84a1287..98de5ed 100644 --- a/modules/system/services/server/fileserver/default.nix +++ b/modules/system/services/server/fileserver/default.nix @@ -1,9 +1,6 @@ { lib, ... }: { - options.system.fileserver.enable = lib.mkOption { - type = lib.types.bool; - default = false; - }; + options.system.fileserver.enable = lib.mkEnableOption "Enable file serving services"; imports = [ ./jellyfin diff --git a/modules/system/services/server/mailserver/default.nix b/modules/system/services/server/mailserver/default.nix index f3c8bbc..8ef1778 100644 --- a/modules/system/services/server/mailserver/default.nix +++ b/modules/system/services/server/mailserver/default.nix @@ -1,9 +1,6 @@ { lib, ... }: { - options.system.mailserver.enable = lib.mkOption { - type = lib.types.bool; - default = false; - }; + options.system.mailserver.enable = lib.mkEnableOption "Enable Simple NixOS Mailserver"; imports = [ ./simplenix diff --git a/modules/system/services/server/socialserver/default.nix b/modules/system/services/server/socialserver/default.nix index 1191cd7..825a43d 100644 --- a/modules/system/services/server/socialserver/default.nix +++ b/modules/system/services/server/socialserver/default.nix @@ -1,9 +1,6 @@ { lib, ... }: { - options.system.socialserver.enable = lib.mkOption { - type = lib.types.bool; - default = false; - }; + options.system.socialserver.enable = lib.mkEnableOption "Enable social media like services"; imports = [ ./mastodon diff --git a/modules/system/services/server/webserver/ddclient/default.nix b/modules/system/services/server/webserver/ddclient/default.nix deleted file mode 100644 index 117eaa6..0000000 --- a/modules/system/services/server/webserver/ddclient/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, pkgs, ... }: -{ - services.ddclient = { - enable = config.system.server.enable; - protocol = "cloudflare"; - zone = "${config.domains.p2}"; - usev6 = ""; - username = "token"; - passwordFile = "${pkgs.writeText "cloudflareapikey" config.secrets.flareApiKey}"; - }; - environment.persistence."/persist".directories = lib.mkIf config.services.ddclient.enable [ - "/var/lib/private/ddclient" - ]; -} diff --git a/modules/system/services/server/webserver/default.nix b/modules/system/services/server/webserver/default.nix index 24fc6f2..5e54d9d 100644 --- a/modules/system/services/server/webserver/default.nix +++ b/modules/system/services/server/webserver/default.nix @@ -1,8 +1,9 @@ { lib, ... }: { + options.system.webserver.enable = lib.mkEnableOption "Enable nginx related services"; + imports = [ ./acme - ./ddclient ./nginx ]; }