Skip to content

Instantly share code, notes, and snippets.

@domenkozar
Created June 23, 2020 08:18
Show Gist options
  • Save domenkozar/42311c302da74c10089a8ac28afd7bbc to your computer and use it in GitHub Desktop.
Save domenkozar/42311c302da74c10089a8ac28afd7bbc to your computer and use it in GitHub Desktop.
Haskell + GitHub Actions + Cachix
name: "CI"
on:
pull_request:
push:
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- 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 = ./.;
};
}
@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