/ default.nix
default.nix
 1  { pkgs ? import <nixpkgs> {}
 2  , haskellPackages ? pkgs.haskellPackages
 3  , withHoogle ? false }:
 4  
 5  let haskellOverrides = self: super:
 6      ( if withHoogle
 7        then {
 8          ghc = super.ghc // { withPackages = super.ghc.withHoogle; };
 9          ghcWithPackages = self.ghc.withPackages;
10        } else {}
11      ) // {
12        # somePackage = self.callHackage "somePackage" "0.version.bump.0" {};
13      };
14      hp = haskellPackages.override { overrides = haskellOverrides; };
15      cabal2nixResult = src: pkgs.runCommand "cabal2nixResult" {
16        buildCommand = ''
17          cabal2nix file://"${src}" >"$out"
18        '';
19        buildInputs = [ pkgs.cabal2nix ];
20  
21        # Support unicode characters in cabal files
22        ${if !pkgs.stdenv.isDarwin then "LOCALE_ARCHIVE" else null} = "${pkgs.glibcLocales}/lib/locale/locale-archive";
23        ${if !pkgs.stdenv.isDarwin then "LC_ALL" else null} = "en_US.UTF-8";
24      } "";
25  
26  in pkgs.haskell.lib.overrideCabal (hp.callPackage (cabal2nixResult ./.) {}) (self: {
27    src = builtins.filterSource (path: type:
28      type != "unknown"
29      && baseNameOf path != ".git"
30      && baseNameOf path != "result"
31      && baseNameOf path != "dist"
32      && baseNameOf path != ".stack-work"
33    ) self.src;
34  })