summaryrefslogtreecommitdiffhomepage
path: root/gleam/nix-gleam/README.md
blob: 39bd1b6fae1cf8e3fafb58369843663f7c32bafb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# nix-gleam, kept here

`default.nix` is the builder of **nix-gleam**, by Arnar Gauti Ingason,
copied unchanged from

- https://github.com/arnarg/nix-gleam
- `builder/default.nix` at commit `1f38154` (2026-10-06)

under the MIT licence, which is in `LICENSE` beside it.

It is kept here rather than taken as a flake input so that the build does
not depend on a third repository being reachable, and so that what builds
this package is in the package.

## Why it is used

There is no Gleam builder in nixpkgs, and a sandboxed build cannot fetch
from Hex. The usual answer, one fixed output derivation that runs
`gleam deps download` and is pinned by a hash of everything it fetched, has
two faults: the hash has to be updated by hand whenever a dependency
changes, and gleam writes `packages.toml` in a different order on each run,
so the same dependencies do not always give the same hash.

nix-gleam fetches each Hex package on its own with `fetchHex`, using the
checksum gleam has already written for it into `manifest.toml`, and writes
`packages.toml` itself. So there is no hash to maintain, and nothing a run
of gleam could make come out differently.

## Updating it

Copy `builder/default.nix` from a newer commit over `default.nix`, update
the commit above, and build.