Upstream hermes-agent v2026.8.31 pins sha256-f8bSb… for the artifacts.electronjs.org v43.6.0 headers tarball. The CDN swapped that artifact, breaking every desktop build with a fixed-output derivation hash mismatch (specified f8bSb… vs got xDgc5…). Local copy of upstream nix/desktop.nix with: - verified hash for electron 43.6.0 (nix store prefetch-file) - per-version hash map with a loud throw for unknown versions - icon/desktop-entry paths resolved against the flake input checkout Remove once upstream ships the corrected hash and the hermes-agent input is bumped past that release.
142 lines
4.2 KiB
Nix
142 lines
4.2 KiB
Nix
# 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}"
|
|
# ];
|
|
};
|
|
};
|
|
}
|