1.0 KiB
1.0 KiB
title, date
| title | date |
|---|---|
| Nix and Haskell | 2018-09-20 |
The simplest way you can use haskell and nix together is by calling
callCabal2nix on the cabal file and using the resulting artifacts.
I usually create two files release.nix and default.nix. At least when
developing, I avoid using the cabal2nix tool and instead let nix handle
calling it for me. If I ever published an actual package, I would probably
provide the autogenerated default.nix and nothing else.
Build instructions are managed by default.nix. At its simplest it's just
a call to callCabal2nix, but might contain for example some extra cabal flags
or adding patches.
# default.nix
{ haskellPackages }:
haskellPackages.callCabal2nix "foo" ./. {}
Pinning of haskell packages and system libraries are managed by this file.
Nixpkgs requires a bootstrap <nixpkgs> in scope so that we can pin to a
specific commit hash.
# release.nix
{ pkgs ? import <nixpkgs> {} }:
# No pinning yet
pkgs.callPackage ./default.nix {}