summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseth <[email protected]>2023-08-25 11:44:17 -0400
committerseth <[email protected]>2023-08-25 11:46:03 -0400
commitff2b42324c49dec6fe70e6161fb7288930a8aa98 (patch)
treeb4d92efc1fc2acf7c3bfa578dde325b0a68b8cba
parent811c25ca3d5f1c732b46e658bbeca62878433c45 (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.nix2
-rw-r--r--parts/ci.nix4
-rw-r--r--parts/lib/configs.nix20
-rw-r--r--users/default.nix8
4 files changed, 21 insertions, 13 deletions
diff --git a/flake.nix b/flake.nix
index 4c439ed..07d40dc 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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");
};
}