diff options
| author | seth <[email protected]> | 2023-08-25 11:44:17 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2023-08-25 11:46:03 -0400 |
| commit | ff2b42324c49dec6fe70e6161fb7288930a8aa98 (patch) | |
| tree | b4d92efc1fc2acf7c3bfa578dde325b0a68b8cba | |
| parent | 811c25ca3d5f1c732b46e658bbeca62878433c45 (diff) | |
lib/configs: replace mapHMUsers with genHMUsers
this mainly just flattens the layout of homeConfigurations from
homeConfigurations.<system>.name to homeConfigurations.<name>@<system>
| -rw-r--r-- | flake.nix | 2 | ||||
| -rw-r--r-- | parts/ci.nix | 4 | ||||
| -rw-r--r-- | parts/lib/configs.nix | 20 | ||||
| -rw-r--r-- | users/default.nix | 8 |
4 files changed, 21 insertions, 13 deletions
@@ -128,7 +128,6 @@ }; outputs = { - getchoo, parts, pre-commit, ... @@ -136,7 +135,6 @@ parts.lib.mkFlake {inherit inputs;} { imports = [ pre-commit.flakeModule - getchoo.flakeModules.homeConfigurations ./hosts ./parts 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: diff --git a/users/default.nix b/users/default.nix index 2dc930c..864ed65 100644 --- a/users/default.nix +++ b/users/default.nix @@ -1,16 +1,14 @@ { + config, inputs, self, ... }: let - inherit (self.lib.configs) mapHMUsers genHMModules; + inherit (self.lib.configs) genHMUsers genHMModules; users = import ./users.nix inputs; in { - perSystem = {system, ...}: { - homeConfigurations = mapHMUsers (users system); - }; - flake = { + homeConfigurations = genHMUsers users config.systems; homeManagerModules = genHMModules (users "x86_64-linux"); }; } |
