From 0f7e28abd021680621aff4762264f640c2fca0ce Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Sun, 12 Oct 2025 20:24:42 -0600 Subject: [PATCH] more migration stuff --- hosts/miniserver/configuration.nix | 2 +- hosts/miniserver/toggles.nix | 14 +--- hosts/server/configuration.nix | 2 +- hosts/server/toggles.nix | 16 +--- hosts/workstation/configuration.nix | 2 +- hosts/workstation/toggles.nix | 7 +- modules/modules.nix | 124 +++++++++++++++------------- parts/core.nix | 26 ++++++ 8 files changed, 101 insertions(+), 92 deletions(-) diff --git a/hosts/miniserver/configuration.nix b/hosts/miniserver/configuration.nix index f687c50..b457615 100644 --- a/hosts/miniserver/configuration.nix +++ b/hosts/miniserver/configuration.nix @@ -5,7 +5,7 @@ ../../config/base.nix ../../config/stylix.nix ]; - my = import ./toggles.nix // { + my = import ./toggles.nix { inherit inputs; } // { nix.cores = 3; nix.maxJobs = 8; users.nixremote.enable = true; diff --git a/hosts/miniserver/toggles.nix b/hosts/miniserver/toggles.nix index 93095f4..a4f148a 100644 --- a/hosts/miniserver/toggles.nix +++ b/hosts/miniserver/toggles.nix @@ -1,16 +1,6 @@ +{ inputs }: let - mkEnabled = name: { - inherit name; - value.enable = true; - }; - mkEnabledWithProxy = name: { - inherit name; - value = { - enable = true; - enableProxy = true; - }; - }; - enableList = func: list: list |> map func |> builtins.listToAttrs; + inherit (inputs.self.lib) mkEnabled mkEnabledWithProxy enableList; in { emacs.enable = true; diff --git a/hosts/server/configuration.nix b/hosts/server/configuration.nix index 587f0ab..b09561a 100644 --- a/hosts/server/configuration.nix +++ b/hosts/server/configuration.nix @@ -10,7 +10,7 @@ ../../config/base.nix ../../config/stylix.nix ]; - my = import ./toggles.nix { inherit config; } // { + my = import ./toggles.nix { inherit config inputs; } // { nix.cores = 6; users.nixremote.enable = true; users.nixremote.authorizedKeys = [ diff --git a/hosts/server/toggles.nix b/hosts/server/toggles.nix index a416e32..2a0e5c5 100644 --- a/hosts/server/toggles.nix +++ b/hosts/server/toggles.nix @@ -1,17 +1,7 @@ -{ config }: +{ config, inputs }: let - mkEnabled = name: { - inherit name; - value.enable = true; - }; - mkEnabledIp = name: { - inherit name; - value = { - enable = true; - ip = config.my.ips.wg-server; - }; - }; - enableList = func: list: list |> map func |> builtins.listToAttrs; + inherit (inputs.self.lib) mkEnabled enableList; + mkEnabledIp = inputs.self.lib.mkEnabledIp config.my.ips.wg-server; in { mainServer = "server"; diff --git a/hosts/workstation/configuration.nix b/hosts/workstation/configuration.nix index 8138e9f..997c073 100644 --- a/hosts/workstation/configuration.nix +++ b/hosts/workstation/configuration.nix @@ -22,7 +22,7 @@ in ../../config/stylix.nix ../../environments/gnome.nix ]; - my = import ./toggles.nix // { + my = import ./toggles.nix { inherit inputs; } // { nix.cores = 8; nix.maxJobs = 8; users.nixremote.enable = true; diff --git a/hosts/workstation/toggles.nix b/hosts/workstation/toggles.nix index 71dd1f5..5f12e62 100644 --- a/hosts/workstation/toggles.nix +++ b/hosts/workstation/toggles.nix @@ -1,9 +1,6 @@ +{ inputs }: let - mkEnabled = name: { - inherit name; - value.enable = true; - }; - enableList = func: list: list |> map func |> builtins.listToAttrs; + inherit (inputs.self.lib) mkEnabled enableList; in { stylix.enable = true; diff --git a/modules/modules.nix b/modules/modules.nix index 6cc2010..4d50b2d 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -105,65 +105,71 @@ in enableProxy = lib.mkEnableOption "nginx reverse proxy for services"; }; config = { - assertions = [ - { - assertion = config.my.servers.nextcloud.enable -> config.my.servers.postgres.enable; - message = "Nextcloud requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.vaultwarden.enable -> config.my.servers.postgres.enable; - message = "Vaultwarden requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.firefly-iii.enable -> config.my.servers.postgres.enable; - message = "Firefly III requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.mealie.enable -> config.my.servers.postgres.enable; - message = "Mealie requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.shiori.enable -> config.my.servers.postgres.enable; - message = "Shiori requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.ryot.enable -> config.my.servers.postgres.enable; - message = "Ryot requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.synapse.enable -> config.my.servers.postgres.enable; - message = "Matrix Synapse requires PostgreSQL to be enabled"; - } - { - assertion = config.my.servers.gitea.enable -> config.my.servers.postgres.enable; - message = "Gitea requires PostgreSQL to be enabled"; - } - { - assertion = - config.my.enableProxy - -> (builtins.any (s: s.enableProxy or false) (builtins.attrValues config.my.servers)); - message = "enableProxy is true but no services have enableProxy enabled"; - } - { - assertion = - config.my.enableContainers - || !(builtins.any (opt: opt) [ - config.my.servers.ryot.enable - config.my.servers.lidarr.enable - config.my.servers.prowlarr.enable - config.my.servers.maloja.enable - config.my.servers.multi-scrobbler.enable - config.my.servers.flame.enable - config.my.servers.flameSecret.enable - config.my.servers.metube.enable - config.my.servers.go-vod.enable - config.my.servers.tranga.enable - config.my.servers.drpp.enable - config.my.servers.plex-discord-bot.enable - ]); - message = "Container services are enabled but enableContainers is false"; - } - ]; + assertions = + # PostgreSQL dependency assertions + inputs.self.lib.mkPostgresDependencies config [ + { + service = "nextcloud"; + name = "Nextcloud"; + } + { + service = "vaultwarden"; + name = "Vaultwarden"; + } + { + service = "firefly-iii"; + name = "Firefly III"; + } + { + service = "mealie"; + name = "Mealie"; + } + { + service = "shiori"; + name = "Shiori"; + } + { + service = "ryot"; + name = "Ryot"; + } + { + service = "synapse"; + name = "Matrix Synapse"; + } + { + service = "gitea"; + name = "Gitea"; + } + ] + ++ + # Other assertions + [ + { + assertion = + config.my.enableProxy + -> (builtins.any (s: s.enableProxy or false) (builtins.attrValues config.my.servers)); + message = "enableProxy is true but no services have enableProxy enabled"; + } + { + assertion = + config.my.enableContainers + || !(builtins.any (opt: opt) [ + config.my.servers.ryot.enable + config.my.servers.lidarr.enable + config.my.servers.prowlarr.enable + config.my.servers.maloja.enable + config.my.servers.multi-scrobbler.enable + config.my.servers.flame.enable + config.my.servers.flameSecret.enable + config.my.servers.metube.enable + config.my.servers.go-vod.enable + config.my.servers.tranga.enable + config.my.servers.drpp.enable + config.my.servers.plex-discord-bot.enable + ]); + message = "Container services are enabled but enableContainers is false"; + } + ]; virtualisation = { containers.enable = true; oci-containers.backend = "podman"; diff --git a/parts/core.nix b/parts/core.nix index 727b5f2..c055c3c 100644 --- a/parts/core.nix +++ b/parts/core.nix @@ -171,6 +171,32 @@ in |> lib.attrValues |> map (srv: srv.port) ); + mkEnabled = name: { + inherit name; + value.enable = true; + }; + mkEnabledWithProxy = name: { + inherit name; + value = { + enable = true; + enableProxy = true; + }; + }; + mkEnabledIp = ip: name: { + inherit name; + value = { + enable = true; + inherit ip; + }; + }; + enableList = func: list: list |> map func |> builtins.listToAttrs; + mkPostgresDependency = config: serviceName: displayName: { + assertion = config.my.servers.${serviceName}.enable -> config.my.servers.postgres.enable; + message = "${displayName} requires PostgreSQL to be enabled"; + }; + mkPostgresDependencies = + config: serviceMap: + serviceMap |> map (entry: inputs.self.lib.mkPostgresDependency config entry.service entry.name); }; }; }