I am working on a miso ghcjs project. Since getting ghcjs is so hard, the author provides a default.nix that gets you up and running quickly:
with (import (builtins.fetchTarball {
url = "https://github.com/dmjio/miso/archive/ea25964565074e73d4052b56b60b6e101fa08bc5.tar.gz";
sha256 = "1yb9yvc0ln4yn1jk2k5kwwa1s32310abawz40yd8cqqkm1z7w6wg";
}) {});
pkgs.haskell.packages.ghcjs.callCabal2nix "app" ./. {}
This was working great, but I need a package not available on <nixpkgs>
, namely morpheus-graphql-client
. So when I depend on that in my project’s app.cabal file, I get the following error:
error: anonymous function at /nix/store/vwxsd8yn4iqnh0primn4pbgr3sp9288l-cabal2nix-app/default.nix:1:1 called without required argument 'morpheus-graphql-client'
So I need to provide morpheus-graphql-client to my project’s nix file. On a “normal” haskell project, I would create a nix file for the package like this:
cabal2nix cabal://morpheus-graphql-client > morpheus-client.nix
Then, I would override nixpkgs with the following
let
config = {
packageOverrides = pkgs: rec {
haskellPackages = pkgs.haskellPackages.override {
overrides = haskellPackagesNew: haskellPackagesOld: rec {
project =
haskellPackagesNew.callCabal2nix "project" ./. { };
morpheus-graphql-client =
haskellPackagesNew.callPackage morpheus-client.nix { };
};
};
};
};
pkgs = import <nixpkgs> { inherit config; };
in
pkgs.haskellPackages.project
How do I extend the original default.nix file to include the package I need?