Compare commits

..

7 commits

Author SHA1 Message Date
dbd22df285 play.nix wrapper for gojo and haze
Some checks failed
Build NixOS ISOs (x86 only) / build-iso (x86, desktop) (push) Has been cancelled
Build NixOS ISOs (x86 only) / build-iso (x86, server) (push) Has been cancelled
Build NixOS ISOs (x86 only) / create-release (push) Has been cancelled
2025-07-10 10:33:56 -04:00
d4ebe17544 Document more keybinds in dconf.nix; add brightness control scripts and keybinds in brightness.nix 2025-07-01 16:30:07 -04:00
8e18d44867 override ghostty to fix unresponsiveness bug 2025-06-30 23:04:40 -04:00
9d886bf3ca small typo in play.nix for gojo and haze 2025-06-30 23:03:32 -04:00
b331a0113b Flake update; linux firmware update 2025-06-30 22:42:14 -04:00
a13ede65f9 Fix soraka blue color; hard to see before 2025-06-30 22:23:36 -04:00
89296ce75b Refactor gaming wrappers & desktop entries
- Convert wrappers for steam, heroic, and lutris to use defaults
- Update desktop entries with enhanced action options
- Introduce new launcher config in gojo for The Alters with proper environment
2025-06-30 22:23:06 -04:00
11 changed files with 719 additions and 177 deletions

238
flake.lock generated
View file

@ -76,11 +76,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1750851678,
"narHash": "sha256-vZRqRdZH5SegK8qn1VMI0Fjnsh9uTc6Y4EaYcrBDTzs=",
"lastModified": 1751333492,
"narHash": "sha256-ePQTd+GHFiFK2bxmZm3aiWlhyTwbpasjmc+kuM0nxeg=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "1e8d69811b5d6cd53f71a34e19a00746c94a830d",
"rev": "d107b2c87bf7446959668fcc22b2b09b37b27cf3",
"type": "github"
},
"original": {
@ -208,7 +208,7 @@
},
"flake-utils": {
"inputs": {
"systems": "systems_3"
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
@ -226,7 +226,7 @@
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_2"
"flake-utils": "flake-utils_3"
},
"locked": {
"lastModified": 1715533576,
@ -247,6 +247,24 @@
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_5"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
@ -261,9 +279,9 @@
"type": "github"
}
},
"flake-utils_3": {
"flake-utils_4": {
"inputs": {
"systems": "systems_6"
"systems": "systems_7"
},
"locked": {
"lastModified": 1681202837,
@ -279,9 +297,9 @@
"type": "github"
}
},
"flake-utils_4": {
"flake-utils_5": {
"inputs": {
"systems": "systems_7"
"systems": "systems_8"
},
"locked": {
"lastModified": 1731533236,
@ -401,11 +419,11 @@
]
},
"locked": {
"lastModified": 1750730235,
"narHash": "sha256-rZErlxiV7ssvI8t7sPrKU+fRigNc2KvoKZG3gtUtK50=",
"lastModified": 1751238753,
"narHash": "sha256-hJUPWfz/h+QgXKaKovPwFAdNBnALsvVMggAPgBB+Qvw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d07e9cceb4994ed64a22b9b36f8b76923e87ac38",
"rev": "cab8104e9236fab1eb9a702165454ffed353c20f",
"type": "github"
},
"original": {
@ -421,11 +439,11 @@
]
},
"locked": {
"lastModified": 1750798083,
"narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=",
"lastModified": 1751336185,
"narHash": "sha256-ptnVr2x+sl7cZcTuGx/0BOE2qCAIYHTcgfA+/h60ml0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82",
"rev": "96354906f58464605ff81d2f6c2ea23211cbf051",
"type": "github"
},
"original": {
@ -435,6 +453,27 @@
}
},
"home-manager_3": {
"inputs": {
"nixpkgs": [
"play",
"nixpkgs"
]
},
"locked": {
"lastModified": 1751336185,
"narHash": "sha256-ptnVr2x+sl7cZcTuGx/0BOE2qCAIYHTcgfA+/h60ml0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "96354906f58464605ff81d2f6c2ea23211cbf051",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_4": {
"inputs": {
"nixpkgs": [
"stylix",
@ -461,7 +500,7 @@
"rose-pine-hyprcursor",
"nixpkgs"
],
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1709914708,
@ -503,15 +542,15 @@
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1750816932,
"narHash": "sha256-93dN5ieDQ1VTUCbTCf2WHogjUu3pPk9iLmCQpdQk6R0=",
"lastModified": 1751335864,
"narHash": "sha256-gzOCRagb6AYmjw6pSKNAJUajnSk0gKNsfZYSbiyrBkM=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "b630fd69c213f3a92ef799ba8169ed2926731c0f",
"rev": "9ebdcaea0533a5277a65b4fc9935b66e0619e053",
"type": "github"
},
"original": {
@ -545,11 +584,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1750741721,
"narHash": "sha256-Z0djmTa1YmnGMfE9jEe05oO4zggjDmxOGKwt844bUhE=",
"lastModified": 1751271578,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4b1164c3215f018c4442463a27689d973cffd750",
"rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
"type": "github"
},
"original": {
@ -576,11 +615,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1750622754,
"narHash": "sha256-kMhs+YzV4vPGfuTpD3mwzibWUE6jotw5Al2wczI0Pv8=",
"lastModified": 1751211869,
"narHash": "sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c7ab75210cb8cb16ddd8f290755d9558edde7ee1",
"rev": "b43c397f6c213918d6cfe6e3550abfe79b5d1c51",
"type": "github"
},
"original": {
@ -592,11 +631,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1750741721,
"narHash": "sha256-Z0djmTa1YmnGMfE9jEe05oO4zggjDmxOGKwt844bUhE=",
"lastModified": 1751271578,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4b1164c3215f018c4442463a27689d973cffd750",
"rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
"type": "github"
},
"original": {
@ -608,11 +647,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1750741721,
"narHash": "sha256-Z0djmTa1YmnGMfE9jEe05oO4zggjDmxOGKwt844bUhE=",
"lastModified": 1751271578,
"narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4b1164c3215f018c4442463a27689d973cffd750",
"rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
"type": "github"
},
"original": {
@ -699,6 +738,31 @@
"type": "github"
}
},
"play": {
"inputs": {
"chaotic": [
"chaotic"
],
"flake-utils": "flake-utils",
"home-manager": "home-manager_3",
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1751323468,
"narHash": "sha256-CxsOWsjihH47iATdnbaYjJjrTgpULX4cDrJDKwkxyAE=",
"owner": "tophc7",
"repo": "play.nix",
"rev": "e1d48215ee2c0ce9d25bd72d11268925d12d4537",
"type": "github"
},
"original": {
"owner": "tophc7",
"repo": "play.nix",
"type": "github"
}
},
"root": {
"inputs": {
"chaotic": "chaotic",
@ -709,6 +773,7 @@
"nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable",
"nixvirt": "nixvirt",
"play": "play",
"rose-pine-hyprcursor": "rose-pine-hyprcursor",
"snapraid-aio": "snapraid-aio",
"solaar": "solaar",
@ -746,11 +811,11 @@
]
},
"locked": {
"lastModified": 1750732748,
"narHash": "sha256-HR2b3RHsPeJm+Fb+1ui8nXibgniVj7hBNvUbXEyz0DU=",
"lastModified": 1751165203,
"narHash": "sha256-3QhlpAk2yn+ExwvRLtaixWsVW1q3OX3KXXe0l8VMLl4=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "4b4494b2ba7e8a8041b2e28320b2ee02c115c75f",
"rev": "90f547b90e73d3c6025e66c5b742d6db51c418c3",
"type": "github"
},
"original": {
@ -761,24 +826,24 @@
},
"snapraid-aio": {
"inputs": {
"flake-utils": "flake-utils",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
"nixpkgs-unstable"
],
"snapraid-aio-src": "snapraid-aio-src"
},
"locked": {
"lastModified": 1746396069,
"narHash": "sha256-nLsYmvA42+wOzy3oYdMBfrmz8pzQkuwPtWk0aZ0l8Fo=",
"ref": "refs/heads/main",
"owner": "tophc7",
"repo": "snapraid-aio.nix",
"rev": "31697d56771a9ac899a563da96fa27e88b20f036",
"revCount": 3,
"type": "git",
"url": "https://git.ryot.foo/toph/snapraid-aio.nix.git"
"type": "github"
},
"original": {
"type": "git",
"url": "https://git.ryot.foo/toph/snapraid-aio.nix.git"
"owner": "tophc7",
"repo": "snapraid-aio.nix",
"type": "github"
}
},
"snapraid-aio-src": {
@ -855,10 +920,10 @@
"flake-parts": "flake-parts_2",
"git-hooks": "git-hooks",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_3",
"home-manager": "home-manager_4",
"nixpkgs": "nixpkgs_4",
"nur": "nur",
"systems": "systems_5",
"systems": "systems_6",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
@ -866,11 +931,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1750810405,
"narHash": "sha256-7Aa6jLbbltPVBCz34UXjIXkmrV1qq+6TYhJ37fErQhg=",
"lastModified": 1751296480,
"narHash": "sha256-PMuzVs9khM7cYrjUCXQeV2OP6WVtbsmdZwa4Cc21y0o=",
"owner": "danth",
"repo": "stylix",
"rev": "1fc22894545f5adf915e245b3c3e92639fd70f64",
"rev": "4ead8043f70cc3b951e704a1f6e40c8a10230e61",
"type": "github"
},
"original": {
@ -880,21 +945,6 @@
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -909,6 +959,21 @@
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
@ -984,6 +1049,21 @@
"type": "github"
}
},
"systems_8": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
@ -1089,7 +1169,7 @@
},
"utils": {
"inputs": {
"systems": "systems_2"
"systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
@ -1107,7 +1187,7 @@
},
"vscode-server": {
"inputs": {
"flake-utils": "flake-utils_3",
"flake-utils": "flake-utils_4",
"nixpkgs": [
"nixpkgs-unstable"
]
@ -1128,23 +1208,23 @@
},
"yay": {
"inputs": {
"flake-utils": "flake-utils_4",
"flake-utils": "flake-utils_5",
"nixpkgs": [
"nixpkgs"
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1750129774,
"narHash": "sha256-3r/9KDvmciXiM12xBTPoC2YqIMJX7XlkrNSa6lNvfrc=",
"ref": "refs/heads/main",
"rev": "eb39f490a252ac063746d093ac71e73327c5de27",
"revCount": 15,
"type": "git",
"url": "https://git.ryot.foo/toph/yay.nix.git"
"lastModified": 1750969106,
"narHash": "sha256-RRryqilYizTb0+NF4sZVMWpoJxoXNppdfDUmoziSl5o=",
"owner": "tophc7",
"repo": "yay.nix",
"rev": "b1b6463a7045b1ac121ce241d6b147e71f5d953f",
"type": "github"
},
"original": {
"type": "git",
"url": "https://git.ryot.foo/toph/yay.nix.git"
"owner": "tophc7",
"repo": "yay.nix",
"type": "github"
}
},
"zen-browser": {
@ -1154,11 +1234,11 @@
]
},
"locked": {
"lastModified": 1750219862,
"narHash": "sha256-wce+erYDBm6wpLJm6IJh85KYqy/NtdKp6DZQCn4YP1Q=",
"lastModified": 1751256876,
"narHash": "sha256-4A8LmE0Hd9RvQwSEPYdITJebpLt7J99VY76IphzqZKc=",
"owner": "youwen5",
"repo": "zen-browser-flake",
"rev": "18d6cd2f5a9cd1527d478d4f716e9b9ee6fb6cbb",
"rev": "615b9244dc7ac777b8f0bc3a9cb7290936e4fcf9",
"type": "github"
},
"original": {

View file

@ -43,7 +43,10 @@
play = {
url = "github:tophc7/play.nix";
inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs = {
nixpkgs.follows = "nixpkgs-unstable";
chaotic.follows = "chaotic";
};
};
## Misc Packages ##

View file

@ -25,7 +25,7 @@
};
wrappers = {
steam = {
steam = lib.mkDefault {
enable = true;
command = "${lib.getExe osConfig.programs.steam.package} -bigpicture -tenfoot";
extraOptions = {
@ -37,7 +37,7 @@
};
};
heroic = {
heroic = lib.mkDefault {
enable = true;
package = pkgs.heroic; # No special package configured by play.nix
extraOptions = {
@ -45,7 +45,7 @@
};
};
lutris = {
lutris = lib.mkDefault {
enable = true;
package = osConfig.play.lutris.package;
extraOptions = {
@ -58,9 +58,10 @@
};
};
# Override default desktop entries to use gamescope wrappers
xdg.desktopEntries = {
steam = {
## Steam and Games ##
steam = lib.mkDefault {
name = "Steam";
comment = "Steam Big Picture in Gamescope Session";
exec = "${lib.getExe config.play.wrappers.steam.wrappedPackage}";
@ -80,14 +81,19 @@
Keywords = "gaming;";
};
actions = {
bigpicture = {
client = {
name = "Steam Client (No Gamescope)";
exec = "${lib.getExe (config.play.steam.package or pkgs.steam)}";
exec = "${lib.getExe osConfig.programs.steam.package}";
};
steamdeck = {
name = "Steam Deck (Gamescope)";
exec = "${lib.getExe config.play.wrappers.steam.wrappedPackage} -steamdeck";
};
};
};
"com.heroicgameslauncher.hgl" = {
## Other Launchers ##
"com.heroicgameslauncher.hgl" = lib.mkDefault {
name = "Heroic Games Launcher";
comment = "Heroic in Gamescope Session";
exec = "${lib.getExe config.play.wrappers.heroic.wrappedPackage}";
@ -103,10 +109,10 @@
};
};
"net.lutris.Lutris" = {
"net.lutris.Lutris" = lib.mkDefault {
name = "Lutris";
comment = "Video Game Preservation Platform";
exec = "${lib.getExe (config.play.lutris.package or pkgs.lutris)} %U";
exec = "${lib.getExe osConfig.play.lutris.package} %U";
icon = "net.lutris.Lutris";
type = "Application";
terminal = false;
@ -126,9 +132,7 @@
broken-exposed = {
name = "Lutris (Gamescope BROKEN; Exposed Wayland)";
exec = ''${lib.getExe config.play.gamescoperun.package} -x "--force-windows-fullscreen --expose-wayland" ${
lib.getExe (config.play.lutris.package or pkgs.lutris)
}'';
exec = ''${lib.getExe config.play.gamescoperun.package} -x "--force-windows-fullscreen --expose-wayland" ${lib.getExe osConfig.play.lutris.package}'';
};
};
};

View file

@ -24,46 +24,114 @@ with lib.hm.gvariant;
};
"org/gnome/desktop/wm/keybindings" = lib.mkDefault {
maximize = [ ];
move-to-monitor-down = [ ];
move-to-monitor-left = [ ];
move-to-monitor-right = [ ];
move-to-monitor-up = [ ];
move-to-workspace-down = [ "<Control><Shift><Alt>Down" ];
move-to-workspace-left = [ ];
move-to-workspace-right = [ ];
move-to-workspace-up = [ "<Control><Shift><Alt>Up" ];
shift-overview-down = [ "" ];
shift-overview-up = [ "" ];
switch-applications = [ ];
switch-applications-backward = [
"<Shift><Super>Tab"
"<Shift><Alt>Tab"
];
## Workspace switching ##
switch-to-workspace-1 = [ ]; # Default: ['<Super>Home']
switch-to-workspace-2 = [ ];
switch-to-workspace-3 = [ ];
switch-to-workspace-4 = [ ];
switch-to-workspace-5 = [ ];
switch-to-workspace-6 = [ ];
switch-to-workspace-7 = [ ];
switch-to-workspace-8 = [ ];
switch-to-workspace-9 = [ ];
switch-to-workspace-10 = [ ];
switch-to-workspace-11 = [ ];
switch-to-workspace-12 = [ ];
switch-to-workspace-left = [ ]; # Default: ['<Super>Page_Up','<Super><Alt>Left','<Control><Alt>Left']
switch-to-workspace-right = [ ]; # Default: ['<Super>Page_Down','<Super><Alt>Right','<Control><Alt>Right']
switch-to-workspace-up = [ ]; # Default: ['<Control><Alt>Up']
switch-to-workspace-down = [ ]; # Default: ['<Control><Alt>Down']
switch-to-workspace-last = [ ]; # Default: ['<Super>End']
## Application/Window switching ##
switch-group = [
"<Super>Above_Tab"
"<Alt>Above_Tab"
# Default: ['<Super>Above_Tab','<Alt>Above_Tab']
];
switch-group-backward = [
"<Shift><Super>Above_Tab"
"<Shift><Alt>Above_Tab"
# Default: ['<Shift><Super>Above_Tab','<Shift><Alt>Above_Tab']
];
switch-input-source = [ ];
switch-input-source-backward = [ ];
switch-panels = [ "<Control><Alt>Tab" ];
switch-panels-backward = [ "<Shift><Control><Alt>Tab" ];
switch-to-workspace-1 = [ ];
switch-to-workspace-down = [ "" ];
switch-to-workspace-last = [ ];
switch-to-workspace-left = [ ];
switch-to-workspace-right = [ ];
switch-to-workspace-up = [ "" ];
toggle-application-view = [ "" ];
toggle-message-tray = [ "" ];
unmaximize = [ ];
switch-applications = [ ]; # Default: ['<Super>Tab','<Alt>Tab']
switch-applications-backward = [
"<Shift><Super>Tab"
"<Shift><Alt>Tab"
# Default: ['<Shift><Super>Tab','<Shift><Alt>Tab']
];
switch-windows = [ ];
switch-windows-backward = [ ];
switch-panels = [ "<Control><Alt>Tab" ]; # Default: ['<Control><Alt>Tab']
switch-panels-backward = [ "<Shift><Control><Alt>Tab" ]; # Default: ['<Shift><Control><Alt>Tab']
## Direct cycling ##
cycle-group = [ ]; # Default: ['<Alt>F6']
cycle-group-backward = [ ]; # Default: ['<Shift><Alt>F6']
cycle-windows = [ ]; # Default: ['<Alt>Escape']
cycle-windows-backward = [ ]; # Default: ['<Shift><Alt>Escape']
cycle-panels = [ ]; # Default: ['<Control><Alt>Escape']
cycle-panels-backward = [ ]; # Default: ['<Shift><Control><Alt>Escape']
## Window management ##
show-desktop = [ ];
panel-main-menu = [ ]; # DEPRECATED
panel-run-dialog = [ ]; # Default: ['<Alt>F2']
set-spew-mark = [ ];
activate-window-menu = [ ]; # Default: ['<Alt>space']
toggle-fullscreen = [ ];
toggle-maximized = [ ]; # Default: ['<Alt>F10']
toggle-above = [ ];
maximize = [ ]; # Default: ['<Super>Up']
unmaximize = [ ]; # Default: ['<Super>Down','<Alt>F5']
minimize = [ ]; # Default: ['<Super>h']
close = [ ]; # Default: ['<Alt>F4']
begin-move = [ ]; # Default: ['<Alt>F7']
begin-resize = [ ]; # Default: ['<Alt>F8']
toggle-on-all-workspaces = [ ];
move-to-workspace-1 = [ ]; # Default: ['<Super><Shift>Home']
move-to-workspace-2 = [ ];
move-to-workspace-3 = [ ];
move-to-workspace-4 = [ ];
move-to-workspace-5 = [ ];
move-to-workspace-6 = [ ];
move-to-workspace-7 = [ ];
move-to-workspace-8 = [ ];
move-to-workspace-9 = [ ];
move-to-workspace-10 = [ ];
move-to-workspace-11 = [ ];
move-to-workspace-12 = [ ];
move-to-workspace-last = [ ]; # Default: ['<Super><Shift>End']
move-to-workspace-left = [ ]; # Default: ['<Super><Shift>Page_Up','<Super><Shift><Alt>Left','<Control><Shift><Alt>Left']
move-to-workspace-right = [ ]; # Default: ['<Super><Shift>Page_Down','<Super><Shift><Alt>Right','<Control><Shift><Alt>Right']
move-to-workspace-up = [ ]; # Default: ['<Control><Shift><Alt>Up']
move-to-workspace-down = [ ]; # Default: ['<Control><Shift><Alt>Down']
move-to-monitor-left = [ ]; # Default: ['<Super><Shift>Left']
move-to-monitor-right = [ ]; # Default: ['<Super><Shift>Right']
move-to-monitor-up = [ ]; # Default: ['<Super><Shift>Up']
move-to-monitor-down = [ ]; # Default: ['<Super><Shift>Down']
raise-or-lower = [ ];
raise = [ ];
lower = [ ];
maximize-vertically = [ ];
maximize-horizontally = [ ];
move-to-corner-nw = [ ];
move-to-corner-ne = [ ];
move-to-corner-sw = [ ];
move-to-corner-se = [ ];
move-to-side-n = [ ];
move-to-side-s = [ ];
move-to-side-e = [ ];
move-to-side-w = [ ];
move-to-center = [ ];
always-on-top = [ ];
## Input switching ##
switch-input-source = [ ]; # Default: ['<Super>space','XF86Keyboard']
switch-input-source-backward = [ ]; # Default: ['<Shift><Super>space','<Shift>XF86Keyboard']
};
"org/gnome/desktop/wm/preferences" = lib.mkForce {
"org/gnome/desktop/wm/preferences" = lib.mkDefault {
num-workspaces = 3;
};
@ -75,40 +143,127 @@ with lib.hm.gvariant;
night-light-enabled = true;
night-light-schedule-automatic = false;
night-light-schedule-from = 19.0;
night-light-temperature = mkUint32 3892;
night-light-temperature = (mkUint32 3892);
};
"org/gnome/settings-daemon/plugins/media-keys" = lib.mkDefault {
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/"
];
## Non-static ##:
battery-status = [ ];
calculator = [ ];
control-center = [ ];
decrease-text-size = [ ];
eject = [ ];
email = [ ];
help = [ ]; # Default: ['', '<Super>F1']
hibernate = [ ];
home = [ ];
increase-text-size = [ ];
keyboard-brightness-down = [ ];
keyboard-brightness-toggle = [ ];
keyboard-brightness-up = [ ];
logout = [ "<Control><Alt>Delete" ];
magnifier = [ ]; # Default: ['<Alt><Super>8']
magnifier-zoom-in = [ ]; # Default: ['<Alt><Super>equal']
magnifier-zoom-out = [ ]; # Default: ['<Alt><Super>minus']
media = [ ];
mic-mute = [ ];
next = [ "AudioNext" ];
on-screen-keyboard = [ ];
pause = [ ];
play = [ "AudioPlay" ];
playback-forward = [ ];
playback-random = [ ];
playback-repeat = [ ];
playback-rewind = [ ];
power = [ ];
previous = [ "AudioPrev" ];
reboot = [ "<Super>r" ];
rotate-video-lock-static = [ ];
rfkill = [ ];
rfkill-bluetooth = [ ];
rotate-video-lock = [ ];
screen-brightness-cycle = [ ];
screen-brightness-down = [ ];
screen-brightness-up = [ ];
screenreader = [ ];
screensaver = [ ]; # Default: ['<Super>l']
search = [ ];
shutdown = [ "<Super>x" ];
stop = [ ];
suspend = [ ];
toggle-contrast = [ ];
touchpad-off = [ ];
touchpad-on = [ ];
touchpad-toggle = [ ];
volume-down = [ "AudioLowerVolume" ];
volume-down-precise = [ ];
volume-down-quiet = [ ];
volume-mute = [ "AudioMute" ];
volume-mute-quiet = [ ];
volume-step = 5; # Default: 6
volume-up = [ "AudioRaiseVolume" ];
volume-up-precise = [ ];
volume-up-quiet = [ ];
www = [ "<Super>w" ];
## Static keys ##
# NOTE: Many of these interfere with custom keybindings, so I just disable them
battery-status-static = [ ]; # Default: ['XF86Battery']
calculator-static = [ ]; # Default: ['XF86Calculator']
control-center-static = [ ]; # Default: ['XF86Tools']
eject-static = [ ]; # Default: ['XF86Eject']
email-static = [ ]; # Default: ['XF86Mail']
hibernate-static = [ ]; # Default: ['XF86Suspend', 'XF86Hibernate']
home-static = [ "<Super>f" ]; # Default: ['XF86Explorer']
keyboard-brightness-down-static = [ ]; # Default: ['XF86KbdBrightnessDown']
keyboard-brightness-toggle-static = [ ]; # Default: ['XF86KbdLightOnOff']
keyboard-brightness-up-static = [ ]; # Default: ['XF86KbdBrightnessUp']
media-static = [ ]; # Default: ['XF86AudioMedia']
mic-mute-static = [ ]; # Default: ['XF86AudioMicMute']
next-static = [ ]; # Default: ['XF86AudioNext', '<Ctrl>XF86AudioNext']
pause-static = [ ]; # Default: ['XF86AudioPause']
play-static = [ ]; # Default: ['XF86AudioPlay', '<Ctrl>XF86AudioPlay']
playback-forward-static = [ ]; # Default: ['XF86AudioForward']
playback-random-static = [ ]; # Default: ['XF86AudioRandomPlay']
playback-repeat-static = [ ]; # Default: ['XF86AudioRepeat']
playback-rewind-static = [ ]; # Default: ['XF86AudioRewind']
power-static = [ ]; # Default: ['XF86PowerOff']
previous-static = [ ]; # Default: ['XF86AudioPrev', '<Ctrl>XF86AudioPrev']
rfkill-bluetooth-static = [ ]; # Default: ['XF86Bluetooth']
rfkill-static = [ ]; # Default: ['XF86WLAN', 'XF86UWB', 'XF86RFKill']
rotate-video-lock-static = [ ]; # Default: ['<Super>o', 'XF86RotationLockToggle']
screen-brightness-cycle-static = [ ]; # Default: ['XF86MonBrightnessCycle']
screen-brightness-down-static = [ ]; # Default: ['XF86MonBrightnessDown']
screen-brightness-up-static = [ ]; # Default: ['XF86MonBrightnessUp']
screensaver-static = [ ]; # Default: ['XF86ScreenSaver']
search-static = [ ]; # Default: ['XF86Search']
stop-static = [ ]; # Default: ['XF86AudioStop']
suspend-static = [ ]; # Default: ['XF86Sleep']
touchpad-off-static = [ ]; # Default: ['XF86TouchpadOff']
touchpad-on-static = [ ]; # Default: ['XF86TouchpadOn']
touchpad-toggle-static = [ ]; # Default: ['XF86TouchpadToggle', '<Ctrl><Super>XF86TouchpadToggle']
volume-down-precise-static = [ ]; # Default: ['<Shift>XF86AudioLowerVolume', '<Ctrl><Shift>XF86AudioLowerVolume']
volume-down-quiet-static = [ ]; # Default: ['<Alt>XF86AudioLowerVolume', '<Alt><Ctrl>XF86AudioLowerVolume']
volume-down-static = [ ]; # Default: ['XF86AudioLowerVolume', '<Ctrl>XF86AudioLowerVolume']
volume-mute-quiet-static = [ ]; # Default: ['<Alt>XF86AudioMute']
volume-mute-static = [ ]; # Default: ['XF86AudioMute']
volume-up-precise-static = [ ]; # Default: ['<Shift>XF86AudioRaiseVolume', '<Ctrl><Shift>XF86AudioRaiseVolume']
volume-up-quiet-static = [ ]; # Default: ['<Alt>XF86AudioRaiseVolume', '<Alt><Ctrl>XF86AudioRaiseVolume']
volume-up-static = [ ]; # Default: ['XF86AudioRaiseVolume', '<Ctrl>XF86AudioRaiseVolume']
www-static = [ ]; # Default: ['XF86WWW']
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = lib.mkDefault {
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "<Super>t";
command = "ghostty";
name = "Terminal";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = lib.mkDefault {
binding = "<Super>f";
command = "nautilus";
name = "Files";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2" = lib.mkDefault {
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
binding = "<Super>e";
command = "code";
name = "Code";
@ -144,8 +299,8 @@ with lib.hm.gvariant;
last-selected-power-profile = lib.mkDefault "performance";
};
"org/gnome/shell/extensions/alphabetical-app-grid" = {
folder-order-position = lib.mkDefault "start";
"org/gnome/shell/extensions/alphabetical-app-grid" = lib.mkDefault {
folder-order-position = "start";
};
"org/gnome/shell/extensions/appindicator" = lib.mkDefault {
@ -322,7 +477,7 @@ with lib.hm.gvariant;
vertical-margin-bottom = 8;
window-gap = 8;
winprops = [
''
''
{"wm_class":"Code","spaceIndex":0}
''
''
@ -356,60 +511,101 @@ with lib.hm.gvariant;
{"wm_class":".gamescope-wrapped","preferredWidth":"100%","spaceIndex":2}
''
];
# "workspaces" = lib.mkDefault {
# list = [
# "000ef222-dd9f-4487-bff9-5e1960e54ab7"
# "b986bc1f-bbe1-454d-8aa8-a55614b330ec"
# "437c83fc-b11d-48f9-bac4-3df6ca297939"
# "8d4b2910-fe68-4192-b349-386c09ebf660"
# "613a7a94-8355-4519-b7a4-b3f279a3e48a"
# ];
# };
# "workspaces/000ef222-dd9f-4487-bff9-5e1960e54ab7" = lib.mkDefault {
# background = "";
# color = "rgb(255, 241, 39)";
# index = 0;
# };
# "workspaces/b986bc1f-bbe1-454d-8aa8-a55614b330ec" = lib.mkDefault {
# background = "";
# color = "rgb(98,160,234)";
# index = 1;
# };
# "workspaces/437c83fc-b11d-48f9-bac4-3df6ca297939" = lib.mkDefault {
# background = "";
# color = "rgb(219, 13, 13)";
# index = 2;
# };
# "workspaces/8d4b2910-fe68-4192-b349-386c09ebf660" = lib.mkDefault {
# background = "";
# color = "rgb(249, 102, 252)";
# index = 3;
# };
# "workspaces/613a7a94-8355-4519-b7a4-b3f279a3e48a" = lib.mkDefault {
# background = "";
# color = "rgb(202, 202, 202)";
# index = 4;
# };
};
"org/gnome/shell/extensions/paperwm/keybindings" = lib.mkDefault {
center = [ "<Super>c" ];
center-horizontally = [ "" ];
center-vertically = [ "" ];
center-horizontally = [ ];
center-vertically = [ ];
close-window = [ "<Super>q" ];
cycle-height = [ "<Alt><Super>Up" ];
cycle-height-backwards = [ "<Alt><Super>Down" ];
cycle-width = [ "<Alt><Super>Right" ];
cycle-width-backwards = [ "<Alt><Super>Left" ];
live-alt-tab = [ "<Alt>Tab" ];
live-alt-tab-backward = [ "" ];
live-alt-tab-scratch = [ "" ];
live-alt-tab-scratch-backward = [ "" ];
live-alt-tab-backward = [ ];
live-alt-tab-scratch = [ ];
live-alt-tab-scratch-backward = [ ];
move-down = [ "<Shift><Super>Down" ];
move-down-workspace = [ "<Control><Super>Down" ];
move-left = [ "<Shift><Super>Left" ];
move-monitor-above = [ "" ];
move-monitor-below = [ "" ];
move-monitor-above = [ ];
move-monitor-below = [ ];
move-monitor-left = [ "<Control><Super>Left" ];
move-monitor-right = [ "<Control><Super>Right" ];
move-previous-workspace = [ "" ];
move-previous-workspace-backward = [ "" ];
move-previous-workspace = [ ];
move-previous-workspace-backward = [ ];
move-right = [ "<Shift><Super>Right" ];
move-space-monitor-above = [ "" ];
move-space-monitor-below = [ "" ];
move-space-monitor-left = [ "" ];
move-space-monitor-right = [ "" ];
move-space-monitor-above = [ ];
move-space-monitor-below = [ ];
move-space-monitor-left = [ ];
move-space-monitor-right = [ ];
move-up = [ "<Shift><Super>Up" ];
move-up-workspace = [ "<Control><Super>Up" ];
new-window = [ "<Super>n" ];
previous-workspace = [ "" ];
previous-workspace-backward = [ "" ];
swap-monitor-above = [ "" ];
swap-monitor-below = [ "" ];
swap-monitor-left = [ "" ];
swap-monitor-right = [ "" ];
previous-workspace = [ ];
previous-workspace-backward = [ ];
swap-monitor-above = [ ];
swap-monitor-below = [ ];
swap-monitor-left = [ ];
swap-monitor-right = [ ];
switch-down-workspace = [ "<Super>Page_Down" ];
switch-focus-mode = [ "<Alt><Super>a" ];
switch-monitor-above = [ "" ];
switch-monitor-below = [ "" ];
switch-monitor-left = [ "" ];
switch-monitor-right = [ "" ];
switch-next = [ "" ];
switch-open-window-position = [ "" ];
switch-previous = [ "" ];
switch-monitor-above = [ ];
switch-monitor-below = [ ];
switch-monitor-left = [ ];
switch-monitor-right = [ ];
switch-next = [ ];
switch-open-window-position = [ ];
switch-previous = [ ];
switch-up-workspace = [ "<Super>Page_Up" ];
take-window = [ "" ];
toggle-maximize-width = [ "" ];
take-window = [ ];
toggle-maximize-width = [ ];
toggle-scratch = [ "<Super>BackSpace" ];
toggle-scratch-layer = [ "<Control><Super>BackSpace" ];
toggle-scratch-window = [ "" ];
toggle-top-and-position-bar = [ "" ];
toggle-scratch-window = [ ];
toggle-top-and-position-bar = [ ];
};
"org/gnome/shell/extensions/user-theme" = lib.mkDefault {

View file

@ -0,0 +1,134 @@
{ pkgs, lib, ... }:
let
# Script to detect and save bus numbers
detectBusesScript = pkgs.writeScript "detect-buses" ''
#!${lib.getExe pkgs.fish}
# Create cache directory if it doesn't exist
mkdir -p /tmp/ddcutil-cache
# Detect buses and save to cache file
set buses (${pkgs.ddcutil}/bin/ddcutil detect 2>/dev/null | ${pkgs.gnugrep}/bin/grep "I2C bus:" | ${pkgs.gnused}/bin/sed 's/.*i2c-\([0-9]\+\).*/\1/' | ${pkgs.coreutils}/bin/sort -n | ${pkgs.coreutils}/bin/tr '\n' ' ' | ${pkgs.gnused}/bin/sed 's/ $//')
if test -n "$buses"
echo "$buses" > /tmp/ddcutil-cache/buses
echo "Detected I2C buses: $buses"
else
echo "No I2C buses detected"
# Create empty file to indicate detection was attempted
touch /tmp/ddcutil-cache/buses
end
'';
# The brightness control script
brightnessScript = pkgs.writeScriptBin "brightness" ''
#!${lib.getExe pkgs.fish}
# Usage:
# brightness --up 10
# brightness + 10
# brightness --down 15
# brightness - 15
if test (count $argv) -ne 2
echo "Usage: $argv[0] [--up|+|--down|-] <INTEGER>"
exit 1
end
set option $argv[1]
set value $argv[2]
if test "$option" = "--up" -o "$option" = "+"
set op "+"
else if test "$option" = "--down" -o "$option" = "-"
set op "-"
else
echo "Invalid option. Use --up | + or --down | -"
exit 1
end
# Read cached bus numbers
if test -f /tmp/ddcutil-cache/buses
set buses_string (cat /tmp/ddcutil-cache/buses)
# Split the space-separated string into individual bus numbers
set buses (string split " " "$buses_string")
else
echo "Bus cache not found. Make sure ddcutil-detect service is running."
echo "Try: systemctl --user start ddcutil-detect"
exit 1
end
if test -z "$buses_string"
echo "No I2C buses found in cache. Check ddcutil configuration."
exit 1
end
echo "Using cached buses: $buses"
for bus in $buses
echo "Changing brightness on bus $bus"
${pkgs.ddcutil}/bin/ddcutil setvcp 10 $op $value --bus $bus
end
'';
in
{
home.packages = [ brightnessScript ];
dconf.settings = {
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/brightness-up/"
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/brightness-down/"
];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/brightness-up" = {
binding = "MonBrightnessUp";
command = "${lib.getExe brightnessScript} + 10";
name = "Brightness up";
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/brightness-down" = {
binding = "MonBrightnessDown";
command = "${lib.getExe brightnessScript} - 10";
name = "Brightness down";
};
};
# Systemd user service to detect buses at startup
systemd.user.services.ddcutil-detect = {
Unit = {
Description = "Detect DDC/CI I2C buses for brightness control";
After = [ "graphical-session.target" ];
Wants = [ "graphical-session.target" ];
};
Service = {
Type = "oneshot";
ExecStart = "${detectBusesScript}";
RemainAfterExit = true;
};
Install = {
WantedBy = [ "default.target" ];
};
};
# Timer to periodically refresh the bus cache (optional)
systemd.user.timers.ddcutil-detect = {
Unit = {
Description = "Refresh DDC/CI bus detection";
};
Timer = {
OnBootSec = "2min";
OnUnitActiveSec = "1h";
};
Install = {
WantedBy = [ "timers.target" ];
};
};
}

View file

@ -8,6 +8,7 @@
font-family = "monospace";
font-size = "11";
background-opacity = "0.85";
# async-backend = "epoll";
};
};

View file

@ -0,0 +1,60 @@
{
config,
osConfig,
lib,
pkgs,
inputs,
...
}:
let
# Get primary monitor and calculate resolution minus 20 pixels
primaryMonitor = lib.custom.getPrimaryMonitor config.monitors;
resX = toString (primaryMonitor.width - 10);
resY = toString (primaryMonitor.height - 10);
refresh = toString primaryMonitor.refreshRate;
in
{
play = {
wrappers = {
alters = {
enable = true;
command = "${lib.getExe osConfig.programs.steam.package} steam://rungameid/1601570 -tenfoot -nochatui -nofriendsui -ResX=${resX} -ResY=${resY} -refresh=${refresh} -windowed -nomouse";
extraOptions = {
"disable-layers" = true;
"nested-height" = resY;
"nested-width" = resX;
"steam" = true;
};
environment = {
__GL_SHADER_DISK_CACHE_SKIP_CLEANUP = 1;
PROTON_USE_SDL = 1;
STEAM_FORCE_DESKTOPUI_SCALING = 1;
STEAM_GAMEPADUI = 1;
WAYLANDDRV_RAWINPUT = 1;
};
};
};
};
# Override default desktop entries to use gamescoperun wrappers/launchers
home.activation.removeExistingDesktopFiles = lib.hm.dag.entryBefore [ "writeBoundary" ] ''
rm -f "${config.home.homeDirectory}/.local/share/applications/The Alters.desktop"
'';
xdg.desktopEntries = {
"The Alters" = {
name = "The Alters";
comment = "A game about life, choices, and the people we meet";
exec = "${lib.getExe config.play.wrappers.alters.wrappedPackage}";
icon = "steam_icon_1601570";
type = "Application";
terminal = false;
categories = [ "Game" ];
actions = {
regular = {
name = "The Alters (No Gamescope)";
exec = "${lib.getExe osConfig.programs.steam.package} steam://rungameid/1601570 -nochatui -nofriendsui -silent -ResX=${resX} -ResY=${resY} -refresh=${refresh} -windowed -nomouse";
};
};
};
};
}

View file

@ -0,0 +1,60 @@
{
config,
osConfig,
lib,
pkgs,
inputs,
...
}:
let
# Get primary monitor and calculate resolution minus 20 pixels
primaryMonitor = lib.custom.getPrimaryMonitor config.monitors;
resX = toString (primaryMonitor.width - 10);
resY = toString (primaryMonitor.height - 10);
refresh = toString primaryMonitor.refreshRate;
in
{
play = {
wrappers = {
alters = {
enable = true;
command = "${lib.getExe osConfig.programs.steam.package} steam://rungameid/1601570 -tenfoot -nochatui -nofriendsui -ResX=${resX} -ResY=${resY} -refresh=${refresh} -windowed -nomouse";
extraOptions = {
"disable-layers" = true;
"nested-height" = resY;
"nested-width" = resX;
"steam" = true;
};
environment = {
__GL_SHADER_DISK_CACHE_SKIP_CLEANUP = 1;
PROTON_USE_SDL = 1;
STEAM_FORCE_DESKTOPUI_SCALING = 1;
STEAM_GAMEPADUI = 1;
WAYLANDDRV_RAWINPUT = 1;
};
};
};
};
# Override default desktop entries to use gamescoperun wrappers/launchers
home.activation.removeExistingDesktopFiles = lib.hm.dag.entryBefore [ "writeBoundary" ] ''
rm -f "${config.home.homeDirectory}/.local/share/applications/The Alters.desktop"
'';
xdg.desktopEntries = {
"The Alters" = {
name = "The Alters";
comment = "A game about life, choices, and the people we meet";
exec = "${lib.getExe config.play.wrappers.alters.wrappedPackage}";
icon = "steam_icon_1601570";
type = "Application";
terminal = false;
categories = [ "Game" ];
actions = {
regular = {
name = "The Alters (No Gamescope)";
exec = "${lib.getExe osConfig.programs.steam.package} steam://rungameid/1601570 -nochatui -nofriendsui -silent -ResX=${resX} -ResY=${resY} -refresh=${refresh} -windowed -nomouse";
};
};
};
};
}

View file

@ -5,7 +5,6 @@ with lib.hm.gvariant;
{
dconf.settings = {
"org/gnome/desktop/app-folders" = {
folder-children = [
"System"

View file

@ -17,14 +17,11 @@ palette:
base0A: "E8D792" # Yellow
base0B: "99D27F" # Green
base0C: "85CED8" # Cyan
base0D: "282E7B" # Blue
base0D: "424BC2" # Blue
base0E: "514A8F" # Purple
base0F: "754558" # Magenta
# https://coolors.co/1f2332-42444d-656569-898784-aca8a0-d0c9bb-d7d1c6-ded9d0
# https://coolors.co/8f66b9-827767-be5a47-9c7149-7d7772-8d7177-857665-947066
# https://coolors.co/1f2333-2a293f-352e4a-4a3960-92bdea-c9d5f5-e4e1fa-ffecff
# https://coolors.co/d44763-f7a94e-fceea1-8de364-a5e4eb-313568-be68c9-c2708f
# https://coolors.co/1D2434-2D364D-3D4967-4D5B80-DEC2A3-E7CDBA-EFD7D1-FFECFF
# https://coolors.co/A22A48-CC9C66-E8D792-99D27F-85CED8-424BC2-514A8F-754558
# flavours generate dark ./wallpapers/soraka.jpg --stdout > soraka.yaml

View file

@ -18,14 +18,22 @@ let
modifications = final: prev: {
## FIXME: Workaround, amd drivers are borked on current nixpkgs-unstable
linux-firmware = prev.linux-firmware.overrideAttrs (old: rec {
version = "20250625";
version = "20250630";
src = prev.fetchFromGitLab {
owner = "kernel-firmware";
repo = "linux-firmware";
rev = "b05fabcd6f2a16d50b5f86c389dde7a33f00bb81";
rev = "e2dad11e8d4b169fdeac476d694d6ef8f2d3b5bf";
hash = "sha256-AvSsyfKP57Uhb3qMrf6PpNHKbXhD9IvFT1kcz5J7khM=";
};
});
ghostty = prev.ghostty.overrideAttrs (_: {
preBuild = ''
shopt -s globstar
sed -i 's/^const xev = @import("xev");$/const xev = @import("xev").Epoll;/' **/*.zig
shopt -u globstar
'';
});
};
stable-packages = final: _prev: {