{ lib, config, pkgs, userDetails, ... }: let cfg = config._archetypes.users.primary; in { options._archetypes.users.primary = { enable = lib.mkEnableOption "create primary user"; autologin.enable = lib.mkEnableOption "enables getty automatic login"; }; config = lib.mkIf cfg.enable { # Enable zsh programs.zsh.enable = true; # Setup normal user users.users.${userDetails.username} = { home = userDetails.home; description = userDetails.fullname; isNormalUser = true; shell = pkgs.zsh; extraGroups = [ "nixbld" "video" "wheel" ] ++ lib.optionals config.hardware.i2c.enable [ "i2c" ] ++ lib.optionals config.virtualisation.libvirtd.enable [ "libvirtd" ] ++ lib.optionals config.virtualisation.docker.enable [ "docker" ]; }; # Configure automatic login with getty services.getty = lib.mkIf cfg.autologin.enable { autologinUser = userDetails.username; }; }; }