elm2nix: Turn your Elm project into buildable Nix project

[ bsd3, library, program, unclassified ] [ Propose Tags ] [ Report a vulnerability ]

Please see the README on Github at https://github.com/cachix/elm2nix#readme


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0, 0.1.1, 0.1.2, 0.2, 0.2.1, 0.3.0, 0.3.1, 0.4.0, 0.5.0
Change log CHANGELOG.md
Dependencies aeson, async, base (>=4.7 && <5), binary, bytestring, containers, elm2nix, here, optparse-applicative, prettyprinter, process, text, transformers, unordered-containers [details]
License BSD-3-Clause
Copyright 2017-2022 Domen Kozar
Author Domen Kozar
Maintainer domen@dev.si
Home page https://github.com/cachix/elm2nix#readme
Bug tracker https://github.com/cachix/elm2nix/issues
Source repo head: git clone https://github.com/cachix/elm2nix
Uploaded by domenkozar at 2025-09-09T11:32:46Z
Distributions LTSHaskell:0.4.0, NixOS:0.4.0, Stackage:0.5.0
Executables elm2nix
Downloads 2382 total (10 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2025-09-09 [all 1 reports]

Readme for elm2nix-0.5.0

[back to package description]

elm2nix

Build status Hackage

Convert an Elm project into Nix expressions.

It consists of multiple commands:

  • elm2nix convert: Given elm.json in current directory, all dependencies are parsed and their sha256sum calculated
  • elm2nix snapshot: Reads packages from elm.json and writes them to binary cache file registry.dat used by elm-compiler.
  • elm2nix init: Generates default.nix that glues everything together

Assumptions

Supports Elm 0.19.1

Installation

It's already included in devenv when using Elm:

{
  langauges.elm.enable = true;

  tasks = {
    "frontend:elm2nix" = {
      exec = "cd frontend && elm2nix convert > elm-srcs.nix && elm2nix snapshot";
      execIfModified = [ "frontend/elm.json" ];
      before = [ "devenv:enterShell" ];
    };
  };

}

Running tests (as per CI)

$ ./scripts/tests.sh

FAQ

Why is mkDerivation inlined into default.nix?

As it's considered experimental, it's generated for now. Might change in the future.

How do I use elm2nix with ParcelJS and Yarn?

Instead of running elm2nix init, create a default.nix with the following derivation:

https://github.com/cachix/elm2nix/issues/49#issuecomment-1696082884