mirror of
https://github.com/simplex-chat/haskell.nix.git
synced 2026-06-03 09:17:32 +00:00
7545dc496b
Haskell.nix's `default.nix` is now a function that needs to be called and `hackage-package` can no longer rely on the default internal GHC so `compiler-nix-name` needs to be specified explicitly.
2.2 KiB
2.2 KiB
Build a specific package from Hackage or Stackage
From a Stackage snapshot
To build a package, say lens, from a Stackage snapshot, say lts-13.28, you could run:
nix build '(with import <nixpkgs> (import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz") {}).nixpkgsArgs; haskell-nix.snapshots."lts-13.28").lens.components.library'
This would build the (public) library component of the lens package as
fixed by the lts-13.28 stackage snapshot. Nightly snapshots like
nightly-2020-06-21 are also available.
A specific version from Hackage
To build any package from hackage, say lens, at any version, say 4.17.1, you could run:
nix build '(with import <nixpkgs> (import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz") {}).nixpkgsArgs; (haskell-nix.hackage-package { name = "lens"; version = "4.17.1"; compiler-nix-name = "ghc8102"; })).components.library'
This would build the (public) library component of the lens-4.17.1 package from hackage.
Pinning hackage index
The dependencies would be resolved against the most recent hackage-index-state which comes with your haskell.nix checkout via the hackage.nix pin. A specific one can be specified as well:
nix build '(with import <nixpkgs> (import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz") {}).nixpkgsArgs; (haskell-nix.hackage-package { name = "lens"; version = "4.17.1"; compiler-nix-name = "ghc8102"; index-state = "2019-07-14T00:00:00Z"; })).components.library'
This would use the hackage index as of 2019-07-14T00:00:00Z to produce a
build plan for the lens-4.17.1 package.