58 lines
1.4 KiB
Nix
58 lines
1.4 KiB
Nix
|
{ lib, config, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
cfg = config.main_user;
|
||
|
in
|
||
|
{
|
||
|
options.main_user = {
|
||
|
enable = lib.mkEnableOption "enable user module";
|
||
|
|
||
|
isDesktopUser = lib.mkOption {
|
||
|
default = false;
|
||
|
example = true;
|
||
|
description = "Add additional user groups for desktop users";
|
||
|
};
|
||
|
|
||
|
userName = lib.mkOption {
|
||
|
default = "mainuser";
|
||
|
description = "username";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = lib.mkIf cfg.enable {
|
||
|
users.users.${cfg.userName} = lib.mkMerge [
|
||
|
{
|
||
|
isNormalUser = true;
|
||
|
initialPassword = "password";
|
||
|
|
||
|
description = "main user";
|
||
|
shell = pkgs.zsh;
|
||
|
}
|
||
|
|
||
|
(lib.mkIf (!cfg.isDesktopUser) {
|
||
|
extraGroups = [
|
||
|
"wheel"
|
||
|
"networkmanager"
|
||
|
cfg.userName
|
||
|
];
|
||
|
})
|
||
|
(lib.mkIf cfg.isDesktopUser {
|
||
|
extraGroups = [
|
||
|
"wheel"
|
||
|
"networkmanager"
|
||
|
cfg.userName
|
||
|
"video"
|
||
|
"audio"
|
||
|
# For android
|
||
|
"adbusers"
|
||
|
# For serial interfaces
|
||
|
"dialout"
|
||
|
# For docker
|
||
|
"docker"
|
||
|
"syncthing"
|
||
|
];
|
||
|
})
|
||
|
];
|
||
|
};
|
||
|
}
|