{ flake, userName, pkgs, customUtils, lib, ... }: { imports = with flake.nixosModules.userProfiles.${userName}; [ zsh tmux utils direnv ]; users.users.${userName} = { description = "Gregor Kleen"; extraGroups = [ "wheel" "networkmanager" "lp" "dialout" "audio" "video" "xmpp" "mail" "ssh" "vboxusers" "libvirtd" "wireshark" "games" "webdav"]; createHome = true; home = "/home/${userName}"; shell = "${pkgs.zsh}/bin/zsh"; isNormalUser = true; openssh.authorizedKeys.keyFiles = let dir = ./authorized-keys; in lib.mapAttrsToList (n: _: dir + "/${n}") (builtins.readDir dir); hashedPassword = "$6$rounds=500000$dOMgCU7DAk$yQFYGOURTEt12387LIYBnFKSWmtwXMUk1LJWnV0m7OFt.y2TnxQn2abdGA5dhwG9EmMB5wZGXf4J5F71c746C/"; }; home-manager.users.${userName} = { home.keyboard = { layout = "us"; variant = "dvp"; options = [ "ctl:nocaps" "compose:caps" ]; }; programs = { git = { enable = true; userEmail = "gkleen@yggdrasil.li"; userName = "Gregor Kleen"; delta.enable = true; extraConfig = { core.excludesfile = toString ./gitignore; pull.rebase = true; submodule.recurse = true; init.defaultBranch = "main"; column.ui = "auto"; branch.sort = "-committerdate"; tag.sort = "version:refname"; diff = { algorithm = "histogram"; colorMoved = "plain"; mnemonicPrefix = true; renames = true; }; push = { default = "simple"; autoSetupRemote = true; followTags = true; }; fetch = { prune = true; pruneTags = true; all = true; }; rerere = { enabled = true; autoupdate = true; }; rebase = { autoSquash = true; autoStash = true; updateRefs = true; }; merge.conflictstyle = "zdiff3"; }; }; ssh = { enable = true; controlMaster = "auto"; controlPersist = "30m"; serverAliveInterval = 6; serverAliveCountMax = 10; hashKnownHosts = true; extraConfig = '' IdentitiesOnly true ''; }; gpg.enable = true; }; }; }