diff --git a/modules/flake/containers.nix b/modules/flake/containers.nix index a172217..4e696f1 100644 --- a/modules/flake/containers.nix +++ b/modules/flake/containers.nix @@ -14,25 +14,30 @@ let networking.domain = host.config.networking.fqdn; }; mkHost = sharedModule: name: hostModule: { - modules = [ + imports = [ hostModule sharedModule (mkHostname name) ]; }; mkHosts = sharedModule: builtins.mapAttrs (mkHost sharedModule); - containers = mkHosts container cfg.containers; hostContainers = mkHosts hostContainer ( lib.mapAttrs' (name: lib.nameValuePair "${name}.grancel") cfg.hosts ); in { - options.local.containers = lib.mkOption { - type = lib.types.attrsOf lib.types.deferredModule; - default = { }; + options.local = { + containers = lib.mkOption { + type = lib.types.attrsOf lib.types.deferredModule; + default = { }; + }; + resolvedContainers = lib.mkOption { + readOnly = true; + default = mkHosts container cfg.containers; + }; }; - config.flake.nixosConfigurations = builtins.mapAttrs (_: lib.nixosSystem) ( - containers // hostContainers - ); + config.flake.nixosConfigurations = builtins.mapAttrs ( + _: module: lib.nixosSystem { modules = [ module ]; } + ) (cfg.resolvedContainers // hostContainers); } diff --git a/modules/incus/containers.nix b/modules/incus/containers.nix index 21f3c60..482d7d1 100644 --- a/modules/incus/containers.nix +++ b/modules/incus/containers.nix @@ -1,8 +1,13 @@ { inputs, lib, ... }: +let + lxcKey = ./.; +in { flake.modules.nixos.lxc = { pkgs, modulesPath, ... }: { + key = lxcKey; + imports = [ "${modulesPath}/virtualisation/lxc-container.nix" ]; nixpkgs.hostPlatform = "x86_64-linux"; @@ -11,6 +16,8 @@ networking.firewall.allowedTCPPorts = [ 22 ]; }; + flake.modules.nixos.test.disabledModules = [ lxcKey ]; + flake.modules.nixos.container = { imports = [ inputs.self.modules.nixos.lxc ]; diff --git a/modules/nixos/tests.nix b/modules/nixos/tests.nix index 3bcba4c..3da6bbf 100644 --- a/modules/nixos/tests.nix +++ b/modules/nixos/tests.nix @@ -1,6 +1,6 @@ { self, config, ... }: { - flake.modules.nixos.core = + flake.modules.nixos.base = { lib, ... }: { options.local.testScript = lib.mkOption { @@ -26,6 +26,6 @@ }; inherit (self.nixosConfigurations.${name}.config.local) testScript; } - ) config.local.hosts; + ) (config.local.hosts // config.local.resolvedContainers); }; } diff --git a/modules/services/forgejo.nix b/modules/services/forgejo.nix index 1d7b647..e68a61f 100644 --- a/modules/services/forgejo.nix +++ b/modules/services/forgejo.nix @@ -19,6 +19,12 @@ in 2222 ]; + local.testScript = '' + machine.wait_for_unit("forgejo.service") + machine.wait_for_open_port(80) + machine.wait_for_open_port(2222) + ''; + services.forgejo = { enable = true; package = pkgs.forgejo; diff --git a/modules/services/navidrome.nix b/modules/services/navidrome.nix index eeb47f7..770162f 100644 --- a/modules/services/navidrome.nix +++ b/modules/services/navidrome.nix @@ -13,5 +13,10 @@ settings.MusicFolder = "/var/lib/navidrome/annex/music"; }; networking.firewall.allowedTCPPorts = [ 80 ]; + local.testScript = '' + machine.succeed("mkdir -p /var/lib/navidrome/annex/music") + machine.wait_for_unit("navidrome.service") + machine.wait_for_open_port(80) + ''; }; }