Add haskellPackages.developPackage for local development default.nixes

+21 -6
+7 -5
pkgs/development/haskell-modules/default.nix
··· 12 13 haskellPackages = makePackageSet { 14 package-set = initialPackages; 15 - inherit ghc; 16 }; 17 18 commonConfiguration = import ./configuration-common.nix { inherit pkgs; }; 19 nixConfiguration = import ./configuration-nix.nix { inherit pkgs; }; 20 21 - in 22 - 23 - makeExtensible 24 (extends overrides 25 (extends packageSetConfig 26 (extends compilerConfig 27 (extends commonConfiguration 28 - (extends nixConfiguration haskellPackages)))))
··· 12 13 haskellPackages = makePackageSet { 14 package-set = initialPackages; 15 + inherit ghc extensible-self; 16 }; 17 18 commonConfiguration = import ./configuration-common.nix { inherit pkgs; }; 19 nixConfiguration = import ./configuration-nix.nix { inherit pkgs; }; 20 21 + extensible-self = makeExtensible 22 (extends overrides 23 (extends packageSetConfig 24 (extends compilerConfig 25 (extends commonConfiguration 26 + (extends nixConfiguration haskellPackages))))); 27 + 28 + in 29 + 30 + extensible-self
+14 -1
pkgs/development/haskell-modules/make-package-set.nix
··· 7 # arguments: 8 # * ghc package to use 9 # * package-set: a function that takes { pkgs, stdenv, callPackage } as first arg and `self` as second 10 - { ghc, package-set }: 11 12 # return value: a function from self to the package set 13 self: let ··· 127 then self.callCabal2nix 128 else self.callHackage; 129 in generateExprs name src {}) overrides; 130 131 ghcWithPackages = selectFrom: withPackages (selectFrom self); 132
··· 7 # arguments: 8 # * ghc package to use 9 # * package-set: a function that takes { pkgs, stdenv, callPackage } as first arg and `self` as second 10 + # * extensible-self: the final, fully overriden package set usable with the nixpkgs fixpoint overriding functionality 11 + { ghc, package-set, extensible-self }: 12 13 # return value: a function from self to the package set 14 self: let ··· 128 then self.callCabal2nix 129 else self.callHackage; 130 in generateExprs name src {}) overrides; 131 + 132 + # : { root : Path, source-overrides : Defaulted (Either Path VersionNumber } -> NixShellAwareDerivation 133 + # Given a path to a haskell package directory whose cabal file is 134 + # named the same as the directory name, and an optional set of 135 + # source overrides as appropriate for the 'packageSourceOverrides' 136 + # function, return a derivation appropriate for nix-build or nix-shell 137 + # to build that package. 138 + developPackage = { root, source-overrides ? {} }: 139 + let name = builtins.baseNameOf root; 140 + drv = 141 + (extensible-self.extend (self.packageSourceOverrides source-overrides)).callCabal2nix name root {}; 142 + in if pkgs.lib.inNixShell then drv.env else drv; 143 144 ghcWithPackages = selectFrom: withPackages (selectFrom self); 145