diff --git a/lib/build-clan/default.nix b/lib/build-clan/default.nix index 244fca4ff..eaccc25ef 100644 --- a/lib/build-clan/default.nix +++ b/lib/build-clan/default.nix @@ -4,6 +4,8 @@ , machines ? { } # allows to include machine-specific modules i.e. machines.${name} = { ... } , clanName # Needs to be (globally) unique, as this determines the folder name where the flake gets downloaded to. , clanIcon ? null # A path to an icon to be used for the clan, should be the same for all machines +, pkgsForSystem ? (_system: null) # A map from arch to pkgs, if specified this nixpkgs will be only imported once for each system. + # This improves performance, but all nipxkgs.* options will be ignored. }: let machinesDirs = lib.optionalAttrs (builtins.pathExists "${directory}/machines") (builtins.readDir (directory + /machines)); @@ -78,13 +80,23 @@ let configsPerSystem = builtins.listToAttrs (builtins.map (system: lib.nameValuePair system - (lib.mapAttrs (name: _: nixosConfiguration { inherit name system; }) allMachines)) + (lib.mapAttrs + (name: _: nixosConfiguration { + inherit name system; + pkgs = pkgsForSystem system; + }) + allMachines)) supportedSystems); configsFuncPerSystem = builtins.listToAttrs (builtins.map (system: lib.nameValuePair system - (lib.mapAttrs (name: _: args: nixosConfiguration (args // { inherit name system; })) allMachines)) + (lib.mapAttrs + (name: _: args: nixosConfiguration (args // { + inherit name system; + pkgs = pkgsForSystem system; + })) + allMachines)) supportedSystems); in {