nandi/frqpublic Fork 0
040f2c1
Commits
Clone
git clone https://git.rickub.com/nandi/frq.git
git clone ssh://git@rickub.com/nandi/frq.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Stop carrying the 32-bit GL stack and half of git

nixGL's flake turns `enable32bits` on for every x86_64 host, which puts a
second i686 mesa — and its own LLVM, intel-media-driver and Python —
beside the 64-bit one. Both halves of frq are 64-bit, so the wrapper's
32-bit paths name drivers nothing here can open. Building nixGL from its
default.nix is the only way to say otherwise; the flake takes no argument.

And jolt shells out to git for `jolt.deps`, which wants clone, fetch and
rev-parse — none of the subcommands that are Perl or Python programs, and
those interpreters are most of what the full package weighs.

Dev shell 2.7 GiB -> 1.7 GiB (374 -> 267 paths); .#frq the same way.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
nandi committed 2026-09-02T16:10:19-07:00 Browse files
040f2c1 parent: 36f6c77
modified flake.nix +16 -3
@@ -94,7 +94,17 @@
9494 # Mesa, despite the name: it covers Intel and AMD alike. The NVIDIA
9595 # wrappers are the ones that need --impure (they read the host kernel
9696 # module's version), which is why this only ever reaches for Intel.
97- nixGLFor = pkgs: nixgl.packages.${pkgs.stdenv.hostPlatform.system}.nixGLIntel;
97+ #
98+ # Built from nixGL's default.nix rather than taken from its flake
99+ # outputs, for the one argument the flake hardcodes on: `enable32bits`,
100+ # which on x86_64 puts a second, i686 copy of mesa, its LLVM, and
101+ # intel-media-driver into the wrapper. frq is 64-bit on both halves —
102+ # the Rust cdylibs and the Chez runtime — so nothing here ever opens the
103+ # 32-bit driver, and carrying it is most of the dev shell's closure.
104+ nixGLFor = pkgs: (import nixgl {
105+ inherit pkgs;
106+ enable32bits = false;
107+ }).nixGLIntel;
98108
99109 # egui reaches for these with dlopen rather than linking them, so being
100110 # in the cdylib's buildInputs is not enough — whatever starts frq has to
@@ -205,7 +215,10 @@
205215 '';
206216
207217 # jolt.deps shells out to git and unzip, and jolt.mvn-http dlopens
208- # OpenSSL through the JOLT_OPENSSL_LIBDIR seam.
218+ # OpenSSL through the JOLT_OPENSSL_LIBDIR seam. gitMinimal rather
219+ # than git: all jolt.deps asks for is clone/fetch/rev-parse, and
220+ # the full package carries Perl and Python for the subcommands
221+ # written in them a quarter of a gigabyte for git-send-email.
209222 #
210223 # TZDIR so a zone *name* resolves wherever this runs: frq.clock
211224 # hands one to tzset, and glibc then looks for the tzfile under
@@ -214,7 +227,7 @@
214227 # machine. --set-default, so a TZDIR the user set still wins.
215228 postFixup = ''
216229 wrapProgram "$out/bin/jolt" \
217- --prefix PATH : "${pkgs.lib.makeBinPath [ pkgs.git pkgs.unzip ]}" \
230+ --prefix PATH : "${pkgs.lib.makeBinPath [ pkgs.gitMinimal pkgs.unzip ]}" \
218231 --set-default JOLT_OPENSSL_LIBDIR "${pkgs.lib.makeLibraryPath [ pkgs.openssl ]}" \
219232 --set-default TZDIR "${pkgs.tzdata}/share/zoneinfo" \
220233 --set-default SSL_CERT_FILE "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
@@ -94,7 +94,17 @@
94 # Mesa, despite the name: it covers Intel and AMD alike. The NVIDIA94 # Mesa, despite the name: it covers Intel and AMD alike. The NVIDIA
95 # wrappers are the ones that need --impure (they read the host kernel95 # wrappers are the ones that need --impure (they read the host kernel
96 # module's version), which is why this only ever reaches for Intel.96 # module's version), which is why this only ever reaches for Intel.
97- nixGLFor = pkgs: nixgl.packages.${pkgs.stdenv.hostPlatform.system}.nixGLIntel;97+ #
98+ # Built from nixGL's default.nix rather than taken from its flake
99+ # outputs, for the one argument the flake hardcodes on: `enable32bits`,
100+ # which on x86_64 puts a second, i686 copy of mesa, its LLVM, and
101+ # intel-media-driver into the wrapper. frq is 64-bit on both halves —
102+ # the Rust cdylibs and the Chez runtime — so nothing here ever opens the
103+ # 32-bit driver, and carrying it is most of the dev shell's closure.
104+ nixGLFor = pkgs: (import nixgl {
105+ inherit pkgs;
106+ enable32bits = false;
107+ }).nixGLIntel;
98 108
99 # egui reaches for these with dlopen rather than linking them, so being109 # egui reaches for these with dlopen rather than linking them, so being
100 # in the cdylib's buildInputs is not enough — whatever starts frq has to110 # in the cdylib's buildInputs is not enough — whatever starts frq has to
@@ -205,7 +215,10 @@
205 '';215 '';
206 216
207 # jolt.deps shells out to git and unzip, and jolt.mvn-http dlopens217 # jolt.deps shells out to git and unzip, and jolt.mvn-http dlopens
208- # OpenSSL through the JOLT_OPENSSL_LIBDIR seam.218+ # OpenSSL through the JOLT_OPENSSL_LIBDIR seam. gitMinimal rather
219+ # than git: all jolt.deps asks for is clone/fetch/rev-parse, and
220+ # the full package carries Perl and Python for the subcommands
221+ # written in them a quarter of a gigabyte for git-send-email.
209 #222 #
210 # TZDIR so a zone *name* resolves wherever this runs: frq.clock223 # TZDIR so a zone *name* resolves wherever this runs: frq.clock
211 # hands one to tzset, and glibc then looks for the tzfile under224 # hands one to tzset, and glibc then looks for the tzfile under
@@ -214,7 +227,7 @@
214 # machine. --set-default, so a TZDIR the user set still wins.227 # machine. --set-default, so a TZDIR the user set still wins.
215 postFixup = ''228 postFixup = ''
216 wrapProgram "$out/bin/jolt" \229 wrapProgram "$out/bin/jolt" \
217- --prefix PATH : "${pkgs.lib.makeBinPath [ pkgs.git pkgs.unzip ]}" \230+ --prefix PATH : "${pkgs.lib.makeBinPath [ pkgs.gitMinimal pkgs.unzip ]}" \
218 --set-default JOLT_OPENSSL_LIBDIR "${pkgs.lib.makeLibraryPath [ pkgs.openssl ]}" \231 --set-default JOLT_OPENSSL_LIBDIR "${pkgs.lib.makeLibraryPath [ pkgs.openssl ]}" \
219 --set-default TZDIR "${pkgs.tzdata}/share/zoneinfo" \232 --set-default TZDIR "${pkgs.tzdata}/share/zoneinfo" \
220 --set-default SSL_CERT_FILE "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"233 --set-default SSL_CERT_FILE "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"