{ lib, config, ... }: let cfg = config._users.${username}.home; 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; #projects = "${home}/docs/src" }; in { options._users.${username}.home = { enable = lib.mkEnableOption "configure home for user ${username}"; }; config = lib.mkIf cfg.enable { # 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; settings = { user = { name = fullname; email = email; }; merge.tool = "nvimdiff"; mergetool.nvimdiff = { cmd = ''nvim -d "$LOCAL" "$MERGED" "$REMOTE"''; prompt = false; }; # Unfortunately, this doesn't work for some reason #url = { # "ssh://git@publicgit/".insteadOf = "https://git.tjkeller.xyz/"; #}; }; }; # 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 ); }; }