corpus

Log | Files | Refs | README | LICENSE

commit 48ed620d52f0b827c3b9f437858475c00e181d88
parent 5bb8bf128cbc9765fdd2a840b0d33bf5849013d3
Author: mtmn <miro@haravara.org>
Date:   Sat,  2 May 2026 03:11:03 +0200

chore: remove `flake-utils` dependency

Diffstat:
Mflake.lock | 42++++--------------------------------------
Mflake.nix | 340+++++++++++++++++++++++++++++++++++++++----------------------------------------
2 files changed, 172 insertions(+), 210 deletions(-)

diff --git a/flake.lock b/flake.lock @@ -36,24 +36,6 @@ "type": "indirect" } }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "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" - } - }, "nixpkgs": { "locked": { "lastModified": 1767364772, @@ -70,16 +52,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1777548390, - "narHash": "sha256-WacE23EbHTsBKvr8cu+1DFNbP6Rh1brHUH5SDUI0NQI=", + "lastModified": 1777268161, + "narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7aaa00e7cc9be6c316cb5f6617bd740dd435c59d", + "rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -87,7 +69,6 @@ "root": { "inputs": { "elm2nix": "elm2nix", - "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs_2" } }, @@ -105,21 +86,6 @@ "repo": "default", "type": "github" } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix @@ -1,183 +1,179 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; elm2nix.url = "github:dwayne/elm2nix"; }; outputs = { self, nixpkgs, - flake-utils, elm2nix, - }: - flake-utils.lib.eachDefaultSystem ( - system: let - pkgs = nixpkgs.legacyPackages.${system}; - - inherit - (elm2nix.lib.elm2nix pkgs) - generateRegistryDat - prepareElmHomeScript - ; - - duckdbPrebuilt = pkgs.fetchurl { - url = "https://npm.duckdb.org/duckdb/duckdb-v1.4.4-node-v137-linux-x64.tar.gz"; - hash = "sha256-Z91EJB81gRaZoLDjkw5lVVQ+jtGIvMV0tMJeOAY7Q3g="; - }; - - spagoRegistry = pkgs.fetchFromGitHub { - owner = "purescript"; - repo = "registry"; - rev = "19f237b9f13c7b286ce2e7129d25d575db787bee"; - hash = "sha256-xC8+jSfKM/MmdmAqRQ44ccRFTAvpwAnnAVs4IRoDhL4="; - }; - - spagoRegistryIndex = pkgs.fetchFromGitHub { - owner = "purescript"; - repo = "registry-index"; - rev = "77163eff5ea12e25d7391cf52fe5b9178145d843"; - hash = "sha256-ez73ecGmzf5d7EkamNZ9KT8u7e4yR7jSvdiGu4bGAHs="; - }; - - registryDat = generateRegistryDat {elmLock = ./elm.lock;}; - - elmHomeScript = prepareElmHomeScript { - elmLock = ./elm.lock; - inherit registryDat; - }; - - spagoDeps = pkgs.stdenv.mkDerivation { - name = "corpus-spago-deps"; - - src = pkgs.lib.cleanSourceWith { - src = self; - filter = name: _type: let - baseName = baseNameOf (toString name); - in - pkgs.lib.elem baseName - [ - "package.json" - "package-lock.json" - "spago.yaml" - "spago.lock" - ]; - }; - - nativeBuildInputs = with pkgs; [nodejs git cacert purescript]; - - outputHashAlgo = "sha256"; - outputHashMode = "recursive"; - outputHash = "sha256-dBorhgF/CIngAe+6fvvGHnGkQsk070SDZbgF5xTGx9c="; - - buildPhase = '' - export HOME=$TMPDIR - export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" - - mkdir -p $HOME/.cache/spago-nodejs - cp -r ${spagoRegistry} $HOME/.cache/spago-nodejs/registry - cp -r ${spagoRegistryIndex} $HOME/.cache/spago-nodejs/registry-index - chmod -R u+w $HOME/.cache/spago-nodejs - - npm ci --ignore-scripts - patchShebangs node_modules - mkdir -p node_modules/.bin - ln -sf ${pkgs.purescript}/bin/purs node_modules/.bin/purs - npx spago install - ''; - - installPhase = '' - mkdir -p $out - cp -r .spago/p $out/packages - ''; - }; - - src = pkgs.lib.cleanSourceWith { - src = self; - filter = name: _type: let - relPath = pkgs.lib.removePrefix (toString self + "/") (toString name); - topDir = builtins.head (pkgs.lib.splitString "/" relPath); - in - pkgs.lib.elem topDir [ - ".env.example" - "package.json" - "package-lock.json" - "elm.json" - "spago.yaml" - "spago.lock" - "server.js" - "client.js" - "assets" - "users.json" - "src" - ]; - }; - - corpus = pkgs.buildNpmPackage { - pname = "corpus"; - inherit ((builtins.fromJSON (builtins.readFile ./package.json))) version; - inherit src; - - npmDepsHash = "sha256-c7OXTEehvJpIRSe4aFUItaHS56EUwCFSn4pwiZh1D5k="; - npmRebuildFlags = ["--ignore-scripts"]; - - nativeBuildInputs = with pkgs; [ - makeWrapper - nodejs - git - purescript - elmPackages.elm + }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + + inherit + (elm2nix.lib.elm2nix pkgs) + generateRegistryDat + prepareElmHomeScript + ; + + duckdbPrebuilt = pkgs.fetchurl { + url = "https://npm.duckdb.org/duckdb/duckdb-v1.4.4-node-v137-linux-x64.tar.gz"; + hash = "sha256-Z91EJB81gRaZoLDjkw5lVVQ+jtGIvMV0tMJeOAY7Q3g="; + }; + + spagoRegistry = pkgs.fetchFromGitHub { + owner = "purescript"; + repo = "registry"; + rev = "19f237b9f13c7b286ce2e7129d25d575db787bee"; + hash = "sha256-xC8+jSfKM/MmdmAqRQ44ccRFTAvpwAnnAVs4IRoDhL4="; + }; + + spagoRegistryIndex = pkgs.fetchFromGitHub { + owner = "purescript"; + repo = "registry-index"; + rev = "77163eff5ea12e25d7391cf52fe5b9178145d843"; + hash = "sha256-ez73ecGmzf5d7EkamNZ9KT8u7e4yR7jSvdiGu4bGAHs="; + }; + + registryDat = generateRegistryDat {elmLock = ./elm.lock;}; + + elmHomeScript = prepareElmHomeScript { + elmLock = ./elm.lock; + inherit registryDat; + }; + + spagoDeps = pkgs.stdenv.mkDerivation { + name = "corpus-spago-deps"; + + src = pkgs.lib.cleanSourceWith { + src = self; + filter = name: _type: let + baseName = baseNameOf (toString name); + in + pkgs.lib.elem baseName + [ + "package.json" + "package-lock.json" + "spago.yaml" + "spago.lock" ]; - - buildPhase = '' - export HOME="$TMPDIR" - - mkdir -p node_modules/duckdb/lib/binding - tar -xf ${duckdbPrebuilt} -C node_modules/duckdb/lib/binding --strip-components=1 - - mkdir -p .spago - cp -r ${spagoDeps}/packages .spago/p - chmod -R u+w .spago - - mkdir -p $HOME/.cache/spago-nodejs - cp -r ${spagoRegistry} $HOME/.cache/spago-nodejs/registry - cp -r ${spagoRegistryIndex} $HOME/.cache/spago-nodejs/registry-index - chmod -R u+w $HOME/.cache/spago-nodejs - - eval ${elmHomeScript} - npm run release - ''; - - installPhase = '' - mkdir -p $out/lib/corpus - cp -r server.js client.js users.json package.json node_modules assets $out/lib/corpus/ - if [ -f .env ]; then - cp .env $out/lib/corpus/ - else - cp .env.example $out/lib/corpus/.env - fi - - mkdir -p $out/bin - makeWrapper ${pkgs.nodejs}/bin/node $out/bin/corpus-server \ - --add-flags "--no-deprecation" \ - --add-flags "$out/lib/corpus/server.js" \ - --chdir "$out/lib/corpus" - ''; - }; - in { - devShells.default = pkgs.mkShell { - name = "corpus"; - packages = [ - elm2nix.packages.${system}.default - pkgs.nodejs - pkgs.purescript - pkgs.elmPackages.elm - pkgs.elmPackages.elm-format - pkgs.elmPackages.elm-json - ]; - }; - - packages.default = corpus; - } - ); + }; + + nativeBuildInputs = with pkgs; [nodejs git cacert purescript]; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = "sha256-dBorhgF/CIngAe+6fvvGHnGkQsk070SDZbgF5xTGx9c="; + + buildPhase = '' + export HOME=$TMPDIR + export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" + + mkdir -p $HOME/.cache/spago-nodejs + cp -r ${spagoRegistry} $HOME/.cache/spago-nodejs/registry + cp -r ${spagoRegistryIndex} $HOME/.cache/spago-nodejs/registry-index + chmod -R u+w $HOME/.cache/spago-nodejs + + npm ci --ignore-scripts + patchShebangs node_modules + mkdir -p node_modules/.bin + ln -sf ${pkgs.purescript}/bin/purs node_modules/.bin/purs + npx spago install + ''; + + installPhase = '' + mkdir -p $out + cp -r .spago/p $out/packages + ''; + }; + + src = pkgs.lib.cleanSourceWith { + src = self; + filter = name: _type: let + relPath = pkgs.lib.removePrefix (toString self + "/") (toString name); + topDir = builtins.head (pkgs.lib.splitString "/" relPath); + in + pkgs.lib.elem topDir [ + ".env.example" + "package.json" + "package-lock.json" + "elm.json" + "spago.yaml" + "spago.lock" + "server.js" + "client.js" + "assets" + "users.json" + "src" + ]; + }; + + corpus = pkgs.buildNpmPackage { + pname = "corpus"; + inherit ((builtins.fromJSON (builtins.readFile ./package.json))) version; + inherit src; + + npmDepsHash = "sha256-c7OXTEehvJpIRSe4aFUItaHS56EUwCFSn4pwiZh1D5k="; + npmRebuildFlags = ["--ignore-scripts"]; + + nativeBuildInputs = with pkgs; [ + makeWrapper + nodejs + git + purescript + elmPackages.elm + ]; + + buildPhase = '' + export HOME="$TMPDIR" + + mkdir -p node_modules/duckdb/lib/binding + tar -xf ${duckdbPrebuilt} -C node_modules/duckdb/lib/binding --strip-components=1 + + mkdir -p .spago + cp -r ${spagoDeps}/packages .spago/p + chmod -R u+w .spago + + mkdir -p $HOME/.cache/spago-nodejs + cp -r ${spagoRegistry} $HOME/.cache/spago-nodejs/registry + cp -r ${spagoRegistryIndex} $HOME/.cache/spago-nodejs/registry-index + chmod -R u+w $HOME/.cache/spago-nodejs + + eval ${elmHomeScript} + npm run release + ''; + + installPhase = '' + mkdir -p $out/lib/corpus + cp -r server.js client.js users.json package.json node_modules assets $out/lib/corpus/ + if [ -f .env ]; then + cp .env $out/lib/corpus/ + else + cp .env.example $out/lib/corpus/.env + fi + + mkdir -p $out/bin + makeWrapper ${pkgs.nodejs}/bin/node $out/bin/corpus-server \ + --add-flags "--no-deprecation" \ + --add-flags "$out/lib/corpus/server.js" \ + --chdir "$out/lib/corpus" + ''; + }; + in { + devShells.${system}.default = pkgs.mkShell { + name = "corpus"; + packages = [ + elm2nix.packages.${system}.default + pkgs.nodejs + pkgs.purescript + pkgs.elmPackages.elm + pkgs.elmPackages.elm-format + pkgs.elmPackages.elm-json + ]; + }; + + packages.${system}.default = corpus; + }; }