Add haskellPackages.developPackage for local development default.nixes
This commit is contained in:
@@ -12,17 +12,19 @@ let
|
|||||||
|
|
||||||
haskellPackages = makePackageSet {
|
haskellPackages = makePackageSet {
|
||||||
package-set = initialPackages;
|
package-set = initialPackages;
|
||||||
inherit ghc;
|
inherit ghc extensible-self;
|
||||||
};
|
};
|
||||||
|
|
||||||
commonConfiguration = import ./configuration-common.nix { inherit pkgs; };
|
commonConfiguration = import ./configuration-common.nix { inherit pkgs; };
|
||||||
nixConfiguration = import ./configuration-nix.nix { inherit pkgs; };
|
nixConfiguration = import ./configuration-nix.nix { inherit pkgs; };
|
||||||
|
|
||||||
in
|
extensible-self = makeExtensible
|
||||||
|
|
||||||
makeExtensible
|
|
||||||
(extends overrides
|
(extends overrides
|
||||||
(extends packageSetConfig
|
(extends packageSetConfig
|
||||||
(extends compilerConfig
|
(extends compilerConfig
|
||||||
(extends commonConfiguration
|
(extends commonConfiguration
|
||||||
(extends nixConfiguration haskellPackages)))))
|
(extends nixConfiguration haskellPackages)))));
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
extensible-self
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
# arguments:
|
# arguments:
|
||||||
# * ghc package to use
|
# * ghc package to use
|
||||||
# * package-set: a function that takes { pkgs, stdenv, callPackage } as first arg and `self` as second
|
# * 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
|
# return value: a function from self to the package set
|
||||||
self: let
|
self: let
|
||||||
@@ -128,6 +129,18 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
|
|||||||
else self.callHackage;
|
else self.callHackage;
|
||||||
in generateExprs name src {}) overrides;
|
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);
|
ghcWithPackages = selectFrom: withPackages (selectFrom self);
|
||||||
|
|
||||||
ghcWithHoogle = selectFrom:
|
ghcWithHoogle = selectFrom:
|
||||||
|
|||||||
Reference in New Issue
Block a user