tricu

A lazy functional language based on Tree Calculus
Log | Files | Refs | README | LICENSE

default.nix (1321B)


      1 { pkgs }:
      2 let
      3   lock = builtins.fromJSON (builtins.readFile ./sources.json);
      4   sources = builtins.listToAttrs (map (row: {
      5     name = row.slug;
      6     value = pkgs.fetchzip { url = "https://api.github.com/repos/${row.repo}/tarball/${row.rev}"; hash = row.hash; extension = "tar.gz"; };
      7   }) lock);
      8   aliases = pkgs.lib.concatMapStringsSep " " (row: "--alias:${row.name}=${sources.${row.slug}}/${row.entry}") lock;
      9   dependencies = pkgs.lib.concatMapStringsSep "\n" (row: ''
     10     cp -r ${sources.${row.slug}} "deps/${row.slug}"
     11   '') lock;
     12   licenses = pkgs.lib.concatMapStringsSep "\n" (row: ''
     13     cp ${sources.${row.slug}}/LICENSE "$out/licenses/${row.slug}.txt"
     14   '') lock;
     15 in pkgs.runCommand "arboricx-codemirror" { nativeBuildInputs = [pkgs.esbuild pkgs.typescript pkgs.python3]; } ''
     16   mkdir -p "$out/licenses"
     17   cp ${./entry.ts} entry.ts
     18   mkdir -p deps
     19   ${dependencies}
     20   cp ${./sources.json} sources.json
     21   python3 ${./typecheck.py}
     22   tsc -p tsconfig.upstream.json
     23   esbuild entry.ts --bundle --format=esm --target=es2022 --tsconfig-raw='{"compilerOptions":{"useDefineForClassFields":false}}' --minify --legal-comments=linked ${aliases} --outfile="$out/codemirror.js" --metafile="$out/bundle-meta.json"
     24   cp ${./sources.json} "$out/sources.json"
     25   ${licenses}
     26   cp -r types "$out/types"
     27   cp -r deps "$out/deps"
     28 ''