So I’m using flake.nix
along with haskell.nix
(IOHK), but I’m stumped and I cannot find any documentation on how to overlay a haskell package.
I have a flake.nix
file like so:
{
# This is a template created by `hix init`
inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils, haskellNix }:
let
supportedSystems = [
"x86_64-linux"
# uncomment additional systems as needed
# "x86_64-darwin"
# "aarch64-linux"
# "aarch64-darwin"
];
in flake-utils.lib.eachSystem supportedSystems (system:
let
pkgsOrig = import nixpkgs {inherit system;};
overlays = [
(import ./overlays/haskell-overlays.nix)
haskellNix.overlay
(final: prev: {
hixProject = final.haskell-nix.hix.project {
src = ./.;
evalSystem = system;
};
})
];
pkgs = import nixpkgs {
inherit system overlays;
inherit (haskellNix) config;
};
flake = pkgs.hixProject.flake { };
in flake // {
legacyPackages = pkgs;
packages = flake.packages // { default = flake.packages."testpkg"; };
});
# --- Flake Local Nix Configuration ----------------------------
nixConfig = {
# This sets the flake to use the IOG nix cache.
# Nix should ask for permission before using it,
# but remove it here if you do not want it to.
extra-substituters = [ "https://cache.iog.io" ];
extra-trusted-public-keys =
[ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ];
allow-import-from-derivation = "true";
};
}
This was created by the haskell.nix template (and needed some adjustments since it used an obsolete compiler).
As you can see, I have an overlay I’ve defined in ./overlays/haskell-overlays.nix
. But this overlay is not updating the package set. The package I’m trying to overlay is still the older version as per cabal’s output.
Am I not understanding something basic about applying overlays with using haskell.nix
and flakes?