diff options
author | Shea Levy <shea@shealevy.com> | 2017-06-10 20:04:46 -0400 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2017-06-10 20:13:21 -0400 |
commit | 01e047d0887ae4be165823109ebd095cd8025813 (patch) | |
tree | cb1d6f04efcd80dc10ed7ba59a17ac98db0afbd4 /pkgs | |
parent | 219bb1c80c33b02c739b3a7cd206543efad8fe92 (diff) | |
download | nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.gz nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.bz2 nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.lz nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.xz nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.zst nixlib-01e047d0887ae4be165823109ebd095cd8025813.zip |
Add haskellPackages.developPackage for local development default.nixes
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/haskell-modules/default.nix | 12 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/make-package-set.nix | 15 |
2 files changed, 21 insertions, 6 deletions
diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix index 8e7d19e089fd..6b5812cd07f5 100644 --- a/pkgs/development/haskell-modules/default.nix +++ b/pkgs/development/haskell-modules/default.nix @@ -12,17 +12,19 @@ let haskellPackages = makePackageSet { package-set = initialPackages; - inherit ghc; + inherit ghc extensible-self; }; commonConfiguration = import ./configuration-common.nix { inherit pkgs; }; nixConfiguration = import ./configuration-nix.nix { inherit pkgs; }; -in - - makeExtensible + extensible-self = makeExtensible (extends overrides (extends packageSetConfig (extends compilerConfig (extends commonConfiguration - (extends nixConfiguration haskellPackages))))) + (extends nixConfiguration haskellPackages))))); + +in + + extensible-self diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index 52988dc4cbbe..f933d6ebfeb9 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -7,7 +7,8 @@ # arguments: # * ghc package to use # * package-set: a function that takes { pkgs, stdenv, callPackage } as first arg and `self` as second -{ ghc, package-set }: +# * extensible-self: the final, fully overriden package set usable with the nixpkgs fixpoint overriding functionality +{ ghc, package-set, extensible-self }: # return value: a function from self to the package set self: let @@ -128,6 +129,18 @@ in package-set { inherit pkgs stdenv callPackage; } self // { else self.callHackage; in generateExprs name src {}) overrides; + # : { root : Path, source-overrides : Defaulted (Either Path VersionNumber } -> NixShellAwareDerivation + # Given a path to a haskell package directory whose cabal file is + # named the same as the directory name, and an optional set of + # source overrides as appropriate for the 'packageSourceOverrides' + # function, return a derivation appropriate for nix-build or nix-shell + # to build that package. + developPackage = { root, source-overrides ? {} }: + let name = builtins.baseNameOf root; + drv = + (extensible-self.extend (self.packageSourceOverrides source-overrides)).callCabal2nix name root {}; + in if pkgs.lib.inNixShell then drv.env else drv; + ghcWithPackages = selectFrom: withPackages (selectFrom self); ghcWithHoogle = selectFrom: |