{ pkgs, lib, config, ... }: { options = { main-user = { enable = lib.mkEnableOption "Enable main user"; name = lib.mkOption { type = lib.types.str; default = "default-user"; description = "Name of the user"; }; groups = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; description = "List of groups to add the user to"; }; sudo = lib.mkEnableOption "Should the user be in the sudoers group or not"; shell = lib.mkOption { default = pkgs.zsh; description = "The shell of the user"; }; home-manager = { enable = lib.mkEnableOption "Enable home-manager for the user"; import = lib.mkOption { description = "Import path. MUST BE SET IN CONFIGURATION.NIX"; }; }; }; }; config = lib.mkIf config.main-user.enable { users.users.${config.main-user.name} = { isNormalUser = true; initialPassword = "1234"; description = "Main system user"; extraGroups = [ "networkmanager" "audio" ] ++ config.main-user.groups ++ (lib.lists.optional config.main-user.sudo "wheel"); shell = config.main-user.shell; }; home-manager.users.${config.main-user.name} = lib.mkIf config.main-user.home-manager.enable config.main-user.home-manager.import; }; }