{ config, pkgs, inputs, lib, ... }: { imports = [ inputs.impermanence.nixosModules.home-manager.impermanence ]; home.persistence."/persist/home/rayandrew/common" = { directories = [ "Downloads" "Music" "Pictures" "Documents" "Videos" "Code" ".gnupg" # ".ssh" ".local/share/keyrings" ".local/share/direnv" ".config/1Password" ".zoom" ".config/Slack" ".config/skypeforlinux" ]; files = [ ".bash_history" ".config/zoomus.conf" ]; allowOther = false; }; home.persistence."/persist/home/rayandrew/desktop" = { removePrefixDirectory = false; allowOther = false; directories = [ ".config/gtk-3.0" ".config/gtk-4.0" ".config/KDE" ".config/kde.org" ".config/plasma-workspace" ".config/xsettingsd" ".kde" ".local/share/baloo" ".local/share/dolphin" ".local/share/kactivitymanagerd" ".local/share/kate" ".local/share/klipper" ".local/share/konsole" ".local/share/kscreen" ".local/share/kwalletd" ".local/share/kxmlgui5" ".local/share/RecentDocuments" ".local/share/sddm" ]; files = [ ".config/monitors.xml" ".config/akregatorrc" ".config/baloofileinformationrc" ".config/baloofilerc" ".config/bluedevilglobalrc" ".config/device_automounter_kcmrc" ".config/dolphinrc" ".config/filetypesrc" # ".config/gtkrc" # ".config/gtkrc-2.0" # ".config/gtkrc-3.0" ".config/gwenviewrc" ".config/kactivitymanagerd-pluginsrc" ".config/kactivitymanagerd-statsrc" ".config/kactivitymanagerd-switcher" ".config/kactivitymanagerdrc" ".config/katemetainfos" ".config/katerc" ".config/kateschemarc" ".config/katevirc" ".config/kcmfonts" ".config/kcminputrc" ".config/kconf_updaterc" ".config/kded5rc" ".config/kdeglobals" ".config/kgammarc" ".config/kglobalshortcutsrc" ".config/khotkeysrc" ".config/kmixrc" ".config/konsolerc" ".config/kscreenlockerrc" ".config/ksmserverrc" ".config/ksplashrc" ".config/ktimezonedrc" ".config/kwinrc" ".config/kwinrulesrc" ".config/kxkbrc" # ".config/mimeapps.list" ".config/partitionmanagerrc" ".config/plasma-localerc" ".config/plasma-nm" ".config/plasma-org.kde.plasma.desktop-appletsrc" ".config/plasmanotifyrc" ".config/plasmarc" ".config/plasmashellrc" ".config/PlasmaUserFeedback" ".config/plasmawindowed-appletsrc" ".config/plasmawindowedrc" ".config/powermanagementprofilesrc" ".config/spectaclerc" ".config/startkderc" ".config/systemsettingsrc" ".config/Trolltech.conf" # ".config/user-dirs.dirs" ".config/user-dirs.locale" ".local/share/krunnerstaterc" ".local/share/user-places.xbel" # ".local/share/user-places.xbel.bak" ".local/share/user-places.xbel.tbcache" ]; }; home.persistence."/persist/home/rayandrew/firefox" = { directories = [ ".mozilla" ]; allowOther = true; }; home.persistence."/persist/home/rayandrew/dotfiles" = { removePrefixDirectory = true; allowOther = true; directories = [ "scripts/bin" "ssh/.config/ssh" ]; files = [ ]; }; programs.home-manager = { enable = true; }; dconf.settings = { "org/gnome/shell" = { disable-user-extensions = false; enabled-extensions = [ "pop-shell@system76.com" "keyd" ]; favorite-apps = [ "org.gnome.Console.desktop" "firefox.desktop" ]; }; "org/gnome/desktop/wm/keybindings" = { minimize = []; lock = []; switch-to-workspace-left = []; switch-to-workspace-right = []; maximize = [ "f" ]; unmaximize = [ "f" ]; move-to-monitor-up = [ ]; move-to-monitor-down = []; move-to-monitor-left = []; move-to-monitor-right = []; move-to-workspace-down = []; move-to-workspace-up = []; close = [ "q" "F4" ]; }; "org/gnome/settings-daemon/plugins/media-keys" = { video-out = [ ]; custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/" ]; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = { binding = "Return"; command = "kgx"; name = "GNOME Console"; }; "org/gnome/mutter/keybindings" = { toggle-tiled-left = []; toggle-tiled-right = []; switch-monitor = [ "XF86Display" ]; }; "org/gnome/shell/extensions/pop-shell" = { activate-launcher = [ "Space" ]; toggle-float = [ "p" ]; tile-enter = ["r"]; tile-by-default = true; }; "org/gnome/desktop/background" = { picture-uri-dark = "file://${pkgs.nixos-artwork.wallpapers.nineish-dark-gray.src}"; }; "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; }; }; gtk = { enable = true; theme = { name = "Adwaita-dark"; package = pkgs.gnome-themes-extra; }; gtk2 = { configLocation = "${config.home.homeDirectory}/.config/gtkrc-2.0"; }; }; qt = { enable = true; platformTheme.name = "adwaita"; style.name = "adwaita-dark"; }; xdg = { mimeApps = { enable = true; defaultApplications = { "application/pdf" = "firefox.desktop"; "application/x-extension-htm" = "firefox.desktop"; "application/x-extension-html" = "firefox.desktop"; "application/x-extension-shtml" = "firefox.desktop"; "application/x-extension-xht" = "firefox.desktop"; "application/x-extension-xhtml" = "firefox.desktop"; "application/xhtml+xml" = "firefox.desktop"; "image/jpeg" = "firefox.desktop"; "image/png" = "firefox.desktop"; "text/html" = "firefox.desktop"; "text/uri-list" = "firefox.desktop"; "x-scheme-handler/chrome" = "firefox.desktop"; "x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "firefox.desktop"; }; }; configFile."mimeapps.list".force = true; }; xdg.portal = { enable = true; xdgOpenUsePortal = true; extraPortals = with pkgs; [ xdg-desktop-portal-kde xdg-desktop-portal-gnome xdg-desktop-portal-gtk ]; config = { common = { default = [ "gtk" ]; }; gnome = { default = [ "gnome" "gtk" ]; }; }; }; home.packages = with pkgs; [ zoom-us slack skypeforlinux desktop-file-utils gnomeExtensions.pop-shell gnomeExtensions.tray-icons-reloaded gnomeExtensions.hibernate-status-button pop-launcher ]; programs.git = { enable = true; }; programs.bash.profileExtra = lib.mkAfter '' rm -rf ${config.home.homeDirectory}/.local/share/applications/home-manager rm -rf ${config.home.homeDirectory}/.icons/nix-icons ls ${config.home.homeDirectory}/.nix-profile/share/applications/*.desktop > ${config.home.homeDirectory}/.cache/current_desktop_files.txt ''; home.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 for desktop_file in ${config.home.homeDirectory}/.nix-profile/share/applications/*.desktop; do if ! echo "$current_files" | grep -q "$(basename $desktop_file)"; then 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.emacs = { enable = true; package = pkgs.emacs; }; programs.vscode = { enable = true; }; programs.zathura = { enable = true; }; xdg.configFile."keyd/app.conf" = { text = '' [firefox] control.p = up control.n = down control.e = end control.a = home control.shift.p = macro(C-S-p) ''; }; home.file.".local/share/gnome-shell/extensions/keyd" = { source = "${pkgs.keyd}/share/keyd/gnome-extension-45"; recursive = true; }; # systemd.user.services.keyd-application-mapper = { # Install.WantedBy = [ "default.target" ]; # Unit = { Description = "keyd-application-mapper"; }; # Service = { # ExecStart = "${pkgs.keyd}/bin/keyd-application-mapper"; # }; # }; # Wayland, X, etc. support for session vars systemd.user.sessionVariables = config.home.sessionVariables; home.stateVersion = "24.11"; }