# Desktop environment aggregator — only loaded when context=desktop. # Includes window manager, applications, theming, and desktop session config. { m3taHomeInputs, pkgs, ... }: let # WORKAROUND (2026-09-12): hermes-agent v2026.8.31 pins a stale hash for # the Electron 43.6.0 headers artifact (the CDN swapped the file). Build # the desktop app from a local copy of upstream's nix/desktop.nix with # the verified hash. Remove when upstream fixes it and the input is bumped. hermesDesktopFixed = let hermesAgent = m3taHomeInputs.hermes-agent.packages.${pkgs.stdenv.hostPlatform.system}.default; in pkgs.callPackage ./hermes-desktop.nix { inherit hermesAgent; hermesNpmLib = hermesAgent.hermesNpmLib; hermesSrc = m3taHomeInputs.hermes-agent.outPath; }; in { imports = [ ./wm ./apps ./theme ]; xdg = { enable = true; configFile."mimeapps.list".force = true; mimeApps = { enable = true; associations.added = { "application/zip" = ["org.gnome.FileRoller.desktop"]; "application/csv" = ["calc.desktop"]; "application/pdf" = ["okularApplication_pdf.desktop"]; }; defaultApplications = { "application/zip" = ["org.gnome.FileRoller.desktop"]; "application/csv" = ["calc.desktop"]; "application/pdf" = ["okularApplication_pdf.desktop"]; "application/md" = ["nvim.desktop"]; "application/text" = ["nvim.desktop"]; "x-scheme-handler/http" = ["io.github.zen_browser.zen"]; "x-scheme-handler/https" = ["io.github.zen_browser.zen"]; }; }; userDirs = { enable = true; createDirectories = true; setSessionVariables = true; }; }; home = { sessionVariables = { WEBKIT_DISABLE_COMPOSITING_MODE = "1"; NIXOS_OZONE_WL = "1"; TERMINAL = "ghostty"; QT_QPA_PLATFORM = "wayland"; XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; XDG_SESSION_DESKTOP = "Hyprland"; }; sessionPath = [ "\${XDG_BIN_HOME}" "\${HOME}/.cargo/bin" "$HOME/.npm-global/bin" "$HOME/.cache/.bun/bin" ]; pointerCursor = { enable = true; gtk.enable = true; package = pkgs.bibata-cursors; name = "Bibata-Modern-Ice"; size = 20; }; packages = with pkgs; [ appimage-run bemoji google-chrome dconf (element-desktop.override { commandLineArgs = "--password-store=gnome-libsecret"; }) hermesDesktopFixed launch-webapp file-roller gsettings-desktop-schemas seahorse sushi ksnip nwg-look qt6Packages.qt6ct rose-pine-hyprcursor remmina slack vivaldi vivaldi-ffmpeg-codecs vibetyper ]; }; fonts.fontconfig.enable = true; programs.ghostty = { enable = true; enableFishIntegration = true; enableBashIntegration = true; settings = { font-family = "Fira Code"; copy-on-select = "clipboard"; theme = "dankcolors"; # foreground = "#${config.colorScheme.palette.base05}"; # background = "#${config.colorScheme.palette.base00}"; # selection-foreground = "#${config.colorScheme.palette.base07}"; # selection-background = "#${config.colorScheme.palette.base02}"; # cursor-color = "#${config.colorScheme.palette.base05}"; # palette = [ # "0=#${config.colorScheme.palette.base01}" # "1=#${config.colorScheme.palette.base08}" # "2=#${config.colorScheme.palette.base0B}" # "3=#${config.colorScheme.palette.base0A}" # "4=#${config.colorScheme.palette.base0D}" # "5=#${config.colorScheme.palette.base0E}" # "6=#${config.colorScheme.palette.base0C}" # "7=#${config.colorScheme.palette.base05}" # "8=#${config.colorScheme.palette.base03}" # "9=#${config.colorScheme.palette.base08}" # "10=#${config.colorScheme.palette.base0B}" # "11=#${config.colorScheme.palette.base0A}" # "12=#${config.colorScheme.palette.base0D}" # "13=#${config.colorScheme.palette.base0E}" # "14=#${config.colorScheme.palette.base0C}" # "15=#${config.colorScheme.palette.base07}" # ]; }; }; }