Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Haskell + GitHub Actions + Cachix
name: "CI"
on:
pull_request:
push:
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.1
- uses: cachix/install-nix-action@v10
with:
skip_adding_nixpkgs_channel: true
- uses: cachix/cachix-action@v6
with:
name: mycache
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- run: cachix use iohk
- run: nix-build -A mypackage.components.all
{ haskellNix ? import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/dc7acfeb7628032d5109747a8b330d58817b953f.tar.gz") {}
, nixpkgsSrc ? haskellNix.sources.nixpkgs-2003
, nixpkgsArgs ? haskellNix.nixpkgsArgs
, pkgs ? import nixpkgsSrc nixpkgsArgs
}:
pkgs.haskell-nix.project {
src = pkgs.haskell-nix.haskellLib.cleanGit {
name = "haskell-nix-project";
src = ./.;
};
}
@commandodev
Copy link

This didn't work for me

nix-build -A reanimate.components.all                                                                                                                        ~/p/VisualiseValue/reanimate
trace: To make this a fixed-output derivation but not materialized, set `stack-sha256` to the output of /nix/store/xygihs8zxd7av2md2b9nwg0whjvj24p1-calculateSha
trace: To materialize the output entirely, pass a writable path as the `materialized` argument and pass that path to /nix/store/avg8ski5295yljrgvd8ikqd3217x6c4j-generateMaterialized
error: The Haskell package set does not contain the package: stm (build dependency).
If you are using Stackage, make sure that you are using a snapshot that contains the package. Otherwise you may need to update the Hackage snapshot you are using, usually by updating haskell.nix.

(use '--show-trace' to show detailed location information)

I was trying to add this to an existing project: cdodev/reanimate@e7f7790

@domenkozar
Copy link
Author

@commandodev I think that's one of the top issues people hit with GHC core libraries: input-output-hk/haskell.nix#481

@commandodev
Copy link

Ah right - what to do here then? (Sorry - haven't messed around with haskell.nix too much)

@domenkozar
Copy link
Author

domenkozar commented Jun 23, 2020

Pass the following to project function:

  modules = [{
    nonReinstallablePkgs =                                                                                                                                                                    
      [ "rts"
        "ghc-heap"
        "ghc-prim"
        "integer-gmp"
        "integer-simple"
        "base"
        "deepseq"
        "array"
        "ghc-boot-th"
        "pretty"
        "template-haskell"
        "ghcjs-prim"
        "ghcjs-th"
        "ghc-boot"
        "ghc"
        "Cabal"
        "Win32"
        "array"
        "binary"
        "bytestring"
        "containers"
        "directory"
        "filepath"
        "ghc-boot"
        "ghc-compact"
        "ghc-prim"
        "ghci"
        "haskeline"
        "hpc"
        "mtl"
        "parsec"
        "process"
        "text"
        "time"
        "transformers"
        "unix"
        "xhtml"
        "stm"
        "terminfo"
      ];
   }];

With the list of all module options at https://input-output-hk.github.io/haskell.nix/reference/modules/

@commandodev
Copy link

Ah yep, that seems to work better :-)

@mpickering
Copy link

This is outdated because the iohk cachix cache is no longer updated.

https://input-output-hk.github.io/haskell.nix/tutorials/getting-started/#setting-up-the-binary-cache

@domenkozar
Copy link
Author

Yeah, you need to use hydra.iohk.io

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment