lib/ cleanup, introduced utils to reduce code duplication
This commit is contained in:
parent
be0a1be47d
commit
51d961484e
@ -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 { };
|
||||||
});
|
});
|
||||||
|
17
lib/host.nix
17
lib/host.nix
@ -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
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
14
lib/user.nix
14
lib/user.nix
@ -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
6
lib/utils.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
mkSysRole = role: import (../roles/${role}.nix);
|
||||||
|
mkHomeRole = role: import (../roles/home/${role}.nix);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user