diff options
| author | cashmere <cashmere@autistici.org> | 2026-07-30 20:12:09 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-07-30 20:12:09 +0200 |
| commit | 465071d8232e74b1690280a38a86d435269fc35d (patch) | |
| tree | f9ce8eb12cf87928eb9d528c1359e3fbb8e44b32 /nix/bun-deps.nix | |
| parent | 01509b53c6bc6e891c55da7093e1fdf5d29499d7 (diff) | |
| download | opencut-465071d8232e74b1690280a38a86d435269fc35d.tar.gz | |
build: replace flake with npins, add Nix packages for web and desktop
- npins pins nixpkgs-unstable + Inter font tarball; shell.nix replaces the flake devshell
- nix/bun-deps.nix: fixed-output bun install of the workspace (hash tied to bun.lock)
- nix/web.nix: static Next.js export; next/font/google patched to local Inter for offline builds
- nix/desktop.nix: tsc-built Electron app embedding the web export, wrapped with nixpkgs electron; ffmpeg-static satisfied by nixpkgs ffmpeg
Diffstat (limited to 'nix/bun-deps.nix')
| -rw-r--r-- | nix/bun-deps.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/nix/bun-deps.nix b/nix/bun-deps.nix new file mode 100644 index 00000000..646a91d7 --- /dev/null +++ b/nix/bun-deps.nix @@ -0,0 +1,49 @@ +# Fixed-output derivation: workspace node_modules from bun.lock. +# Only re-runs when the lockfile or manifests change; the hash covers the +# installed dependency tree, so it must be updated whenever bun.lock changes +# (set outputHash = lib.fakeHash, build once, paste the reported hash). +{ + lib, + runCommand, + bun, + cacert, +}: + +let + minimalSrc = runCommand "opencut-bun-src" { } '' + mkdir -p $out/apps/web $out/apps/desktop + cp ${../package.json} $out/package.json + cp ${../bun.lock} $out/bun.lock + cp ${../bunfig.toml} $out/bunfig.toml + cp ${../.npmrc} $out/.npmrc + cp ${../apps/web/package.json} $out/apps/web/package.json + cp ${../apps/desktop/package.json} $out/apps/desktop/package.json + ''; +in +runCommand "opencut-bun-deps" + { + nativeBuildInputs = [ + bun + cacert + ]; + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "sha256-+zRGGTHFoM9d4wjP999J3JdcRgNksTTVOb+nceyvNak="; + } + '' + cp -r ${minimalSrc} src + chmod -R u+w src + cd src + + export HOME=$TMPDIR + export BUN_INSTALL_CACHE_DIR=$TMPDIR/bun-cache + # The electron binary is unused; nixpkgs electron is used at runtime. + export ELECTRON_SKIP_BINARY_DOWNLOAD=1 + + bun install --frozen-lockfile + + mkdir -p $out/apps/web $out/apps/desktop + cp -r node_modules $out/node_modules + cp -r apps/web/node_modules $out/apps/web/node_modules + cp -r apps/desktop/node_modules $out/apps/desktop/node_modules + '' |
