Major config overhaul: use custom modules, setup for multi-host config, and less boilerplate
This commit is contained in:
41
modules/system/users/default.nix
Normal file
41
modules/system/users/default.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{ config, lib, inputs, ... }:
|
||||
let
|
||||
userInfo = import inputs.secrets.userInfo;
|
||||
in {
|
||||
options = {
|
||||
systemSettings = {
|
||||
users = lib.mkOption {
|
||||
description = "List of desktop users to create on the system";
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
adminUsers = lib.mkOption {
|
||||
description = "List of desktop users to grant admin (sudo) access on the system";
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
};
|
||||
};
|
||||
config = {
|
||||
|
||||
users.users = builtins.listToAttrs
|
||||
(map (user: {
|
||||
name = user;
|
||||
value = {
|
||||
description = userInfo.${user}.name;
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "networkmanager" "input" "dialout" "video" "render" ] ++ (lib.optionals (lib.any (x: x == user) config.systemSettings.adminUsers) [ "wheel" ]);
|
||||
createHome = true;
|
||||
};
|
||||
}) config.systemSettings.users);
|
||||
|
||||
home-manager.users = builtins.listToAttrs
|
||||
(map (user: {
|
||||
name = user;
|
||||
value = {
|
||||
home.username = user;
|
||||
home.homeDirectory = "/home/"+user;
|
||||
userSettings.name = lib.mkIf (userInfo.${user} ? name) userInfo.${user}.name;
|
||||
userSettings.email = lib.mkIf (userInfo.${user} ? email ) userInfo.${user}.email;
|
||||
};
|
||||
}) config.systemSettings.users);
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user