diff options
| author | seth <[email protected]> | 2024-04-17 03:50:34 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2024-04-17 03:50:34 -0400 |
| commit | dfdb0ceed87923086f258f5291276c9db0b7ecd0 (patch) | |
| tree | cf292e6da1789f71b07e85c8f2936bd60d210fce /nix/default.nix | |
| parent | cbcc5c09585229ec31cf76f2ab666b2d34129914 (diff) | |
nix: remove all inputs
Diffstat (limited to 'nix/default.nix')
| -rw-r--r-- | nix/default.nix | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..a0dcda0 --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,106 @@ +{ + lib, + stdenvNoCC, + cacert, + jq, + moreutils, + nodejs, +}: +stdenvNoCC.mkDerivation (finalAttrs: { + name = "getchoo-website"; + + src = lib.fileset.toSource { + root = ../.; + fileset = lib.fileset.gitTracked ../.; + }; + + __structuredAttrs = true; + + nativeBuildInputs = [ + nodejs + nodejs.pkgs.pnpm + ]; + + env = { + pnpmDeps = stdenvNoCC.mkDerivation (finalAttrs': { + name = "${finalAttrs.name}-pnpm-deps"; + inherit (finalAttrs) src; + + __structuredAttrs = true; + + nativeBuildInputs = [ + cacert + jq + moreutils + nodejs.pkgs.pnpm + ]; + + dontConfigure = true; + dontBuild = true; + doCheck = false; + + installPhase = '' + runHook preInstall + + export HOME="$(mktemp -d)" + pnpm config set store-dir "$out" + pnpm install --force --frozen-lockfile --ignore-script + + runHook postInstall + ''; + + fixupPhase = '' + runHook preFixup + + rm -rf "$out"/v3/tmp + for f in $(find "$out" -name "*.json"); do + sed -i -E -e 's/"checkedAt":[0-9]+,//g' $f + jq --sort-keys . $f | sponge $f + done + + runHook postFixup + ''; + + outputHashMode = "recursive"; + outputHash = "sha256-pKo1t9K24HUOjjfwfubx+JorlAJeshAQBLSABRoSF/k="; + }); + }; + + postConfigure = '' + export HOME="$(mktemp -d)" + export STORE_PATH="$(mktemp -d)" + + cp -rT "$pnpmDeps" "$STORE_PATH" + chmod -R +w "$STORE_PATH" + + pnpm config set store-dir "$STORE_PATH" + + pnpm install --force --frozen-lockfile --ignore-script --offline + + patchShebangs node_modules/{*,.*} + ''; + + buildPhase = '' + runHook preBuild + pnpm run build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mv dist "$out" + runHook postInstall + ''; + + checkPhase = '' + runHook preCheck + pnpm run check + runHook postCheck + ''; + + meta = with lib; { + homepage = "https://github.com/getchoo/website"; + license = licenses.mit; + maintainers = with maintainers; [getchoo]; + }; +}) |
