Nix flake packaging for GE-Proton by GloriousEggroll - Valve Proton with additional patches for games Valve's builds do not cover yet.
| Project | GloriousEggroll/proton-ge-custom |
| License | BSD-3-Clause (Valve Proton lineage) |
| Tracked | GitHub releases (GE-Proton* tags, daily) |
A Nix flake that fetches the prebuilt GE-Proton release tarballs and exposes them as two-output packages (out + steamcompattool) in the nixpkgs proton-ge-bin shape, so they drop straight into programs.steam.extraCompatPackages. It exists alongside nixpkgs' own proton-ge-bin for one reason: the daily update tracker here follows upstream releases directly, with no nixpkgs maintainer-merge lag.
Every variant upstream publishes is packaged:
| Attribute | Upstream asset | System |
|---|---|---|
proton-ge (packages.default) |
GE-ProtonX-Y.tar.gz |
x86_64-linux |
proton-ge (packages.default) |
GE-ProtonX-Y-aarch64.tar.gz |
aarch64-linux |
Every channel gets a stable Steam identity written into its compatibilitytool.vdf: the rolling channel is GE-Proton-latest, each frozen pin is GE-Proton <version>, mirroring how Steam lists Proton. A game mapped to GE-Proton-latest rides every update; one mapped to a pin stays on that exact build.
- Package integrity - SRI source hashes, verified on every build
- CI security - pinned GitHub Actions (full SHA, not tags), minimal permissions, build-gated PRs
- Upstream trust - daily automated release detection, hash recomputation, and a verified test build, auto-committed to
main - Stale cleanup - weekly
flake.lockrefresh (pushed only if it still builds); orphaned update branches older than 30 days are deleted
Current pins as of 2026-07-23; the live truth is sources.nix (updated daily).
| Attribute | Steam identity | Version |
|---|---|---|
latest (packages.default, pkgs.proton-ge) |
GE-Proton-latest |
GE-Proton11-1 |
v11 |
GE-Proton 11-1 |
GE-Proton11-1 |
v10 |
GE-Proton 10-34 |
GE-Proton10-34 |
v9 |
GE-Proton 9-21 |
GE-Proton9-21 |
v8 |
GE-Proton 8-32 |
GE-Proton8-32 |
v7 |
GE-Proton 7-55 |
GE-Proton7-55 |
latest rolls with every upstream release; each v<major> is a frozen pin on
that major's newest packaged release, so a game mapped to GE-Proton 10-34
never silently changes underneath it.
Add as a flake input:
{
inputs.proton-ge = {
url = "github:Daaboulex/proton-ge-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
}Then either take the package directly:
programs.steam.extraCompatPackages = [
inputs.proton-ge.packages.${pkgs.system}.default
];or apply inputs.proton-ge.overlays.default and use pkgs.proton-ge.
programs.steam = {
enable = true;
extraCompatPackages = [ pkgs.proton-ge ];
};Steam lists GE-Proton-latest (plus each pinned major, e.g. GE-Proton 10-34) in each game's Compatibility dropdown. Pinning an older GE release is nix-native: use its frozen per-major channel - pkgs.proton-ge.v10 after the overlay, or inputs.proton-ge.packages.${pkgs.system}.v10.
The packaging is MIT. GE-Proton itself is upstream's license (Valve Proton BSD-3-Clause lineage plus bundled components); this flake redistributes nothing - tarballs are fetched from upstream's GitHub releases at build time.