From 43b205624d620ecf05f4c0a28b30e320d65c4f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 29 Jun 2025 23:16:17 +0200 Subject: [PATCH 1/4] no longer fallback to "nixos" machineClass we should always have a value defined. --- lib/modules/clan/module.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/modules/clan/module.nix b/lib/modules/clan/module.nix index 4ea328dfd..f993e9989 100644 --- a/lib/modules/clan/module.nix +++ b/lib/modules/clan/module.nix @@ -52,7 +52,7 @@ let allMachines = config.clanInternals.inventoryClass.machines; # <- inventory.machines <- clan.machines machineClasses = lib.mapAttrs ( - name: _: inventory.machines.${name}.machineClass or "nixos" + name: _: inventory.machines.${name}.machineClass ) allMachines; configurations = lib.mapAttrs ( @@ -71,12 +71,12 @@ let # - by the user # - by some test frameworks # IMPORTANT!: It is utterly important that we don't add any logic outside of these modules, as it would get tested. - nixosModules' = lib.filterAttrs ( - name: _: inventory.machines.${name}.machineClass or "nixos" == "nixos" - ) (config.outputs.moduleForMachine); - darwinModules' = lib.filterAttrs ( - name: _: inventory.machines.${name}.machineClass or "nixos" == "darwin" - ) (config.outputs.moduleForMachine); + nixosModules' = lib.filterAttrs (name: _: inventory.machines.${name}.machineClass == "nixos") ( + config.outputs.moduleForMachine + ); + darwinModules' = lib.filterAttrs (name: _: inventory.machines.${name}.machineClass == "darwin") ( + config.outputs.moduleForMachine + ); nixosModules = flip mapAttrs' nixosModules' ( name: machineModule: { From b415e063f155a33a68d1dc1e5a8ccff7b66618e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 29 Jun 2025 23:20:05 +0200 Subject: [PATCH 2/4] darwinConfigurations/darwinModules: export with right _file attributes --- flakeModules/clan.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/flakeModules/clan.nix b/flakeModules/clan.nix index 9ce2bff9a..60f47df7d 100644 --- a/flakeModules/clan.nix +++ b/flakeModules/clan.nix @@ -47,19 +47,13 @@ in darwinConfigurations = lib.mkOption { type = types.lazyAttrsOf types.raw; description = "darwinConfigurations produced by clan for a specific machine"; - apply = lib.mapAttrs ( - k: v: { - _file = "#nixosModules.${k}"; - imports = [ v ]; - } - ); }; darwinModules = lib.mkOption { type = types.lazyAttrsOf types.deferredModule; description = "darwinModules produced by clan for a specific machine"; apply = lib.mapAttrs ( k: v: { - _file = "#nixosModules.${k}"; + _file = "#darwinModules.${k}"; imports = [ v ]; } ); From 622597e70f8c570e0298454c5eb825a5d0b558d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 29 Jun 2025 23:20:21 +0200 Subject: [PATCH 3/4] overridePkgs: drop unneeded parantheses --- lib/modules/machineModules/overridePkgs.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/modules/machineModules/overridePkgs.nix b/lib/modules/machineModules/overridePkgs.nix index 2949050e3..798b2de20 100644 --- a/lib/modules/machineModules/overridePkgs.nix +++ b/lib/modules/machineModules/overridePkgs.nix @@ -7,11 +7,11 @@ }: { imports = [ - ({ + { # For vars we need to ensure that the system so we run vars generate on # is in sync with the pkgs of the system nixpkgs.hostPlatform = lib.mkForce pkgs.system; nixpkgs.pkgs = lib.mkForce pkgs; - }) + } ]; } From f1fd710dd172505779aaf827b49a43b837d09fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 29 Jun 2025 23:50:17 +0200 Subject: [PATCH 4/4] add regression test for macOS evaluation --- checks/flake-module.nix | 3 +++ flake.nix | 8 ++++++++ lib/modules/clan/module.nix | 4 +--- machines/test-darwin-machine/configuration.nix | 7 +++++++ 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 machines/test-darwin-machine/configuration.nix diff --git a/checks/flake-module.nix b/checks/flake-module.nix index 4a42fa05c..7aec75d36 100644 --- a/checks/flake-module.nix +++ b/checks/flake-module.nix @@ -67,6 +67,9 @@ in lib.mapAttrs' ( name: config: lib.nameValuePair "nixos-${name}" config.config.system.build.toplevel ) (lib.filterAttrs (n: _: !lib.hasPrefix "test-" n) self.nixosConfigurations) + // lib.mapAttrs' ( + name: config: lib.nameValuePair "darwin-${name}" config.config.system.build.toplevel + ) (self.darwinConfigurations or { }) // lib.mapAttrs' (n: lib.nameValuePair "package-${n}") packagesToBuild // lib.mapAttrs' (n: lib.nameValuePair "devShell-${n}") self'.devShells // lib.mapAttrs' (name: config: lib.nameValuePair "home-manager-${name}" config.activation-script) ( diff --git a/flake.nix b/flake.nix index f1b4568ff..ad5edac73 100644 --- a/flake.nix +++ b/flake.nix @@ -62,6 +62,14 @@ { clan = { meta.name = "clan-core"; + inventory = { + services = { }; + machines = { + "test-darwin-machine" = { + machineClass = "darwin"; + }; + }; + }; }; systems = import systems; imports = diff --git a/lib/modules/clan/module.nix b/lib/modules/clan/module.nix index f993e9989..dabea62c8 100644 --- a/lib/modules/clan/module.nix +++ b/lib/modules/clan/module.nix @@ -51,9 +51,7 @@ let allMachines = config.clanInternals.inventoryClass.machines; # <- inventory.machines <- clan.machines - machineClasses = lib.mapAttrs ( - name: _: inventory.machines.${name}.machineClass - ) allMachines; + machineClasses = lib.mapAttrs (name: _: inventory.machines.${name}.machineClass) allMachines; configurations = lib.mapAttrs ( name: _: diff --git a/machines/test-darwin-machine/configuration.nix b/machines/test-darwin-machine/configuration.nix new file mode 100644 index 000000000..1cfb23056 --- /dev/null +++ b/machines/test-darwin-machine/configuration.nix @@ -0,0 +1,7 @@ +{ + # Basic system configuration + system.stateVersion = 5; + + # Set the nixpkgs system + nixpkgs.hostPlatform = "aarch64-darwin"; +}