{ lib, config, pkgs, home-manager, ... }: let cfg = config._users.timmy; username = "timmy"; email = "tjk@tjkeller.xyz"; fullname = "Tim Keller"; home = "/home/${username}"; userDirs = { desktop = "${home}"; download = "${home}/dls"; documents = "${home}/docs"; pictures = "${home}/pics"; # Set these as null so they're not created music = null; publicShare = null; templates = null; videos = null; }; sshKeyPaths = [ "${home}/.ssh/id_ed25519" ]; sshPublicKeyPaths = lib.map (keyPath: keyPath + ".pub") sshKeyPaths; sshPublicKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnsnAWcz46OVi1MWSxpOIUtUvwalijDwvW+oEvNjzep" ]; in { imports = [ ./hosts.nix ./localization.nix ./nas.nix ./printing.nix ./user.nix ./wifi.nix ]; options._users.timmy = { enable = lib.mkEnableOption "create user timmy"; autologin.enable = lib.mkEnableOption "enables getty automatic login"; }; #config = lib.mkIf cfg.enable { config = { # Setup zsh programs.zsh.enable = true; #environment.systemPackages = [ pkgs.zsh-fast-syntax-highlighting ]; # TODO # Setup normal user users.users.timmy = { home = home; description = 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 = username; }; # Configure sops age key paths since age keys are generated via ssh private key sops.age = { inherit sshKeyPaths; }; # Add authorizedKeys to cgit service services._cgit.ssh.authorizedKeys = { keys = sshPublicKeys; keyFiles = sshPublicKeyPaths; }; # Configure user home home-manager.users.timmy = { # Setup home-manager home = { username = username; homeDirectory = home; stateVersion = "24.05"; }; # Setup userdirs xdg.userDirs = { enable = true; createDirectories = true; } // userDirs; # Setup git programs.git = { enable = true; userName = fullname; userEmail = email; }; # Setup gtk bookmarks gtk.gtk3.bookmarks = ( lib.mapAttrsToList (name: dir: lib.mkIf (dir != null) "file://${dir} ${lib.toUpper (lib.substring 0 1 name)}${lib.substring 1 (-1) name}" # Make first letter upper case ) userDirs ); }; }; }