summaryrefslogtreecommitdiff
path: root/parts
diff options
context:
space:
mode:
Diffstat (limited to 'parts')
-rw-r--r--parts/ci.nix4
-rw-r--r--parts/lib/configs.nix20
2 files changed, 18 insertions, 6 deletions
diff --git a/parts/ci.nix b/parts/ci.nix
index 839f535..7dc1adb 100644
--- a/parts/ci.nix
+++ b/parts/ci.nix
@@ -26,14 +26,14 @@ in {
findCompatible = systems: filterAttrs (s: _: elem s systems);
findCompatibleCfgs = systems: filterAttrs (_: v: elem v.pkgs.system systems);
buildCfgs = mapAttrs (_: v: v.config.system.build.toplevel);
- buildHMUsers = mapAttrs (_: mapAttrs (_: v: v.activationPackage));
+ buildHMUsers = mapAttrs (_: v: v.activationPackage);
#evalCfgs = mapAttrs (_: v: seq v.config.system.build.toplevel v.pkgs.emptyFile);
in
mkForce {
outputs = {
checks = findCompatible amd64 self.checks;
devShells = findCompatible amd64 self.devShells;
- homeConfigurations = buildHMUsers (findCompatible amd64 self.homeConfigurations);
+ homeConfigurations = buildHMUsers (findCompatibleCfgs amd64 self.homeConfigurations);
nixosConfigurations = buildCfgs (findCompatibleCfgs ciSystems self.nixosConfigurations);
};
};
diff --git a/parts/lib/configs.nix b/parts/lib/configs.nix
index 5cc8b61..e3d4f31 100644
--- a/parts/lib/configs.nix
+++ b/parts/lib/configs.nix
@@ -3,9 +3,9 @@
self,
...
}: let
- inherit (builtins) attrNames mapAttrs;
+ inherit (builtins) attrNames elemAt mapAttrs;
inherit (inputs) nixpkgs hm;
- inherit (nixpkgs.lib) genAttrs optional;
+ inherit (nixpkgs.lib) genAttrs optional splitString zipAttrs;
mkSystemCfg = name: {
profile,
@@ -25,7 +25,6 @@
};
mkHMCfg = name: {
- nixpkgs ? nixpkgs,
pkgs ? import nixpkgs {system = "x86_64-linux";},
extraSpecialArgs ? inputs,
modules ? [],
@@ -46,9 +45,22 @@
++ optional pkgs.stdenv.isDarwin ../../users/${name}/darwin.nix
++ modules;
};
+
+ genHMUsersForSys = users: system: let
+ users' = users system;
+ formattedUsers = map (u: "${u}@${system}") (attrNames users');
+ in
+ genAttrs formattedUsers (user: let
+ name = elemAt (splitString "@" user) 0;
+ in
+ mkHMCfg name users'.${name});
in {
inherit mkHMCfg mkSystemCfg;
- mapHMUsers = mapAttrs mkHMCfg;
+ genHMUsers = users: systems: let
+ zipped = zipAttrs (map (genHMUsersForSys users) systems);
+ in
+ mapAttrs (_: v: elemAt v 0) zipped; # why do i need to do this??? ..i'm tired
+
mapSystems = mapAttrs mkSystemCfg;
genHMModules = users: