lib/ cleanup, introduced utils to reduce code duplication

This commit is contained in:
Giulio De Pasquale 2023-02-14 21:14:30 +01:00
parent be0a1be47d
commit 51d961484e
4 changed files with 24 additions and 18 deletions

View File

@ -36,8 +36,11 @@
inherit (pkgs.lib) makeScope; inherit (pkgs.lib) makeScope;
inherit (pkgs) newScope; inherit (pkgs) newScope;
in in
makeScope newScope (self: { makeScope newScope (self: rec {
inherit nixpkgs home-manager nixos-unstable; inherit nixpkgs home-manager nixos-unstable;
inherit (self.callPackage ./lib/utils.nix { }) mkSysRole mkHomeRole;
inherit (user) mkUser;
user = self.callPackage ./lib/user.nix { }; user = self.callPackage ./lib/user.nix { };
host = self.callPackage ./lib/host.nix { }; host = self.callPackage ./lib/host.nix { };
}); });

View File

@ -1,18 +1,16 @@
{ pkgs, nixpkgs, nixos-unstable, unstable, home-manager, user, system, ... }: { pkgs, nixpkgs, nixos-unstable, unstable, home-manager, system, mkHomeRole, mkSysRole, mkUser, ... }:
{ {
mkHost = { name, users, roles ? [ ], imports ? [ ] }: mkHost = { name, users, roles ? [ ], imports ? [ ] }:
let let
mkRole = role: pkgs.callPackage (../roles + "/${role}.nix") { };
users_mod = (map users_mod = (map
(u: (u:
user.mkUser { mkUser {
name = u.user; name = u.user;
roles = u.roles; roles = u.roles;
}) })
users); users);
roles_mod = (map (r: mkRole r) roles); roles_mod = (map (r: mkSysRole r) roles);
add_imports = imports; add_imports = imports;
in in
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
@ -20,7 +18,10 @@
modules = [ modules = [
{ {
imports = users_mod ++ roles_mod ++ add_imports; imports = users_mod ++ roles_mod ++ add_imports ++ [
(mkSysRole "common")
(mkSysRole "acme")
];
nixpkgs = { inherit pkgs; }; nixpkgs = { inherit pkgs; };
nix.nixPath = [ "nixpkgs=${nixpkgs}" "unstable=${nixos-unstable}" ]; nix.nixPath = [ "nixpkgs=${nixpkgs}" "unstable=${nixos-unstable}" ];
@ -30,7 +31,7 @@
users.users.root = { shell = pkgs.zsh; }; users.users.root = { shell = pkgs.zsh; };
home-manager = { home-manager = {
users.root.imports = [ ../roles/home/common.nix ]; users.root.imports = [ (mkHomeRole "common") ];
extraSpecialArgs.unstable = unstable; extraSpecialArgs.unstable = unstable;
useGlobalPkgs = true; useGlobalPkgs = true;
}; };
@ -38,8 +39,6 @@
} }
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
../roles/common.nix
../roles/acme.nix
../hosts/${name}/default.nix ../hosts/${name}/default.nix
]; ];
}; };

View File

@ -1,10 +1,9 @@
{ pkgs, unstable, home-manager, ... }: { pkgs, unstable, home-manager, mkHomeRole, ... }:
{ {
mkUser = { name, roles ? [ ] }: mkUser = { name, roles ? [ ] }:
let let
mkRole = role: import (../roles/home + "/${role}.nix"); roles_mod = (map (r: mkHomeRole r) roles);
roles_mod = (map (r: mkRole r) roles);
in in
{ {
users.groups.plugdev = { }; users.groups.plugdev = { };
@ -21,13 +20,12 @@
extraGroups = [ "wheel" "plugdev" ]; extraGroups = [ "wheel" "plugdev" ];
}; };
home-manager.users.${name}.imports = [ (mkRole "common") ] ++ roles_mod; home-manager.users.${name}.imports = [ (mkHomeRole "common") ] ++ roles_mod;
}; };
mkHMUser = { name, roles }: mkHMUser = { name, roles ? [ ] }:
let let
mkRole = role: import (../roles/home + "/${role}.nix"); roles_mod = (map (r: mkHomeRole r) roles);
roles_mod = (map (r: mkRole r) roles);
in in
home-manager.lib.homeManagerConfiguration { home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
@ -39,7 +37,7 @@
if pkgs.stdenv.isLinux then "/home/${name}" else "/Users/${name}"; if pkgs.stdenv.isLinux then "/home/${name}" else "/Users/${name}";
}; };
} }
(mkRole "common") (mkHomeRole "common")
] ++ roles_mod; ] ++ roles_mod;
}; };
} }

6
lib/utils.nix Normal file
View File

@ -0,0 +1,6 @@
{ ... }:
{
mkSysRole = role: import (../roles/${role}.nix);
mkHomeRole = role: import (../roles/home/${role}.nix);
}