okami.mom/albedo

git clone https://git.nkp.pet/okami.mom/albedo

Aly Raffaufrefactor(gleam): clean up code and enforce focused lint checksb585313

main
1.9 KiB58 linesraw
1{
2  lib,
3  stdenv,
4  fetchurl,
5  gleam,
6  beamPackages,
7  makeWrapper,
8  src,
9}: let
10  manifest = builtins.fromTOML (builtins.readFile "${src}/manifest.toml");
11  packages =
12    map (package: {
13      inherit (package) name version;
14      archive = fetchurl {
15        url = "https://repo.hex.pm/tarballs/${package.name}-${package.version}.tar";
16        sha256 = lib.toLower package.outer_checksum;
17      };
18    })
19    manifest.packages;
20  packageIndex = builtins.toFile "packages.toml" ("[packages]\n"
21    + lib.concatMapStrings (package: "${package.name} = \"${package.version}\"\n") packages
22    + "\n[git]\n");
23in
24  stdenv.mkDerivation {
25    pname = "glinter";
26    inherit (builtins.fromTOML (builtins.readFile "${src}/gleam.toml")) version;
27    inherit src;
28    nativeBuildInputs = [gleam beamPackages.erlang makeWrapper];
29    buildPhase = ''
30      runHook preBuild
31      mkdir -p build/packages
32      ${lib.concatMapStringsSep "\n" (package: ''
33          mkdir -p build/packages/${package.name} "$TMPDIR/hex-${package.name}"
34          tar -xf ${package.archive} -C "$TMPDIR/hex-${package.name}"
35          tar -xzf "$TMPDIR/hex-${package.name}/contents.tar.gz" -C build/packages/${package.name}
36        '')
37        packages}
38      cp ${packageIndex} build/packages/packages.toml
39      chmod -R u+w build/packages
40      gleam export erlang-shipment
41      runHook postBuild
42    '';
43    installPhase = ''
44      runHook preInstall
45      mkdir -p $out/lib/glinter $out/bin
46      cp -R build/erlang-shipment/. $out/lib/glinter/
47      makeWrapper $out/lib/glinter/entrypoint.sh $out/bin/glinter \
48        --add-flags run \
49        --prefix PATH : ${lib.makeBinPath [beamPackages.erlang]}
50      runHook postInstall
51    '';
52    meta = {
53      description = "Gleam linter for development checks";
54      license = lib.licenses.mit;
55      mainProgram = "glinter";
56      platforms = lib.platforms.unix;
57    };
58  }