From 9445478e2b05c42c2cc911c69bd378ceef9ba582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 21 Feb 2024 10:44:00 +0100 Subject: [PATCH] fix cross-system deploy This allows to be nixpkgs.pkgs and deploy systems of a different arch. --- lib/build-clan/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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 {