{ config, lib, pkgs, user, ... }: { imports = [ ./emacs.nix ./impermanence.nix ./git.nix ./gui ./shell ./ssh.nix ]; config = { # setup fonts for other distros, run "fc-cache -f" to refresh fonts fonts.fontconfig.enable = true; home = { stateVersion = "24.11"; username = user; homeDirectory = "/home/${user}"; activation = { # linkDesktopApplications = { # after = ["writeBoundary" "createXdgUserDirectories"]; # before = []; # data = '' # rm -rf ${config.home.homeDirectory}/.local/share/applications/home-manager # rm -rf ${config.home.homeDirectory}/.icons/nix-icons # mkdir -p ${config.home.homeDirectory}/.local/share/applications/home-manager # mkdir -p ${config.home.homeDirectory}/.icons # ln -sf ${config.home.homeDirectory}/.nix-profile/share/icons ${config.home.homeDirectory}/.icons/nix-icons # # Check if the cached desktop files list exists # if [ -f ${config.home.homeDirectory}/.cache/current_desktop_files.txt ]; then # current_files=$(cat ${config.home.homeDirectory}/.cache/current_desktop_files.txt) # else # current_files="" # fi # # Symlink new desktop entries # ${pkgs.bash}/bin/bash -c < # for desktop_file in "${config.home.homeDirectory}/.nix-profile/share/applications/*.desktop"; do # if ! echo "$current_files" | grep -q "$(basename $desktop_file)"; then # echo $desktop_file # ln -sf "$desktop_file" ${config.home.homeDirectory}/.local/share/applications/home-manager/$(basename $desktop_file) # fi # done # # Update desktop database # ${pkgs.desktop-file-utils}/bin/update-desktop-database ${config.home.homeDirectory}/.local/share/applications # ''; # }; }; }; programs.home-manager.enable = true; xdg = { enable = true; userDirs.enable = true; mimeApps.enable = true; configFile."mimeapps.list".force = true; }; systemd.user.sessionVariables = config.home.sessionVariables; custom = { persist = { home.directories = [ "Documents" "Downloads" "Pictures" "Code" ]; }; }; }; }