/ 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 })