diff options
Diffstat (limited to 'pkgs/development/haskell-modules/lib.nix')
-rw-r--r-- | pkgs/development/haskell-modules/lib.nix | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix new file mode 100644 index 00000000000..8f932c87023 --- /dev/null +++ b/pkgs/development/haskell-modules/lib.nix @@ -0,0 +1,61 @@ +{ pkgs }: + +rec { + + overrideCabal = drv: f: (drv.override (args: args // { + mkDerivation = drv: args.mkDerivation (drv // f drv); + })) // { + overrideScope = scope: overrideCabal (drv.overrideScope scope) f; + }; + + doHaddock = drv: overrideCabal drv (drv: { doHaddock = true; }); + dontHaddock = drv: overrideCabal drv (drv: { doHaddock = false; }); + + doJailbreak = drv: overrideCabal drv (drv: { jailbreak = true; }); + dontJailbreak = drv: overrideCabal drv (drv: { jailbreak = false; }); + + doCheck = drv: overrideCabal drv (drv: { doCheck = true; }); + dontCheck = drv: overrideCabal drv (drv: { doCheck = false; }); + + dontDistribute = drv: overrideCabal drv (drv: { hydraPlatforms = []; }); + + appendConfigureFlag = drv: x: overrideCabal drv (drv: { configureFlags = (drv.configureFlags or []) ++ [x]; }); + removeConfigureFlag = drv: x: overrideCabal drv (drv: { configureFlags = pkgs.stdenv.lib.remove x (drv.configureFlags or []); }); + + addBuildTool = drv: x: addBuildTools drv [x]; + addBuildTools = drv: xs: overrideCabal drv (drv: { buildTools = (drv.buildTools or []) ++ xs; }); + + addExtraLibrary = drv: x: addExtraLibraries drv [x]; + addExtraLibraries = drv: xs: overrideCabal drv (drv: { extraLibraries = (drv.extraLibraries or []) ++ xs; }); + + addBuildDepend = drv: x: addBuildDepends drv [x]; + addBuildDepends = drv: xs: overrideCabal drv (drv: { buildDepends = (drv.buildDepends or []) ++ xs; }); + + enableCabalFlag = drv: x: appendConfigureFlag (removeConfigureFlag drv "-f-${x}") "-f${x}"; + disableCabalFlag = drv: x: appendConfigureFlag (removeConfigureFlag drv "-f${x}") "-f-${x}"; + + markBroken = drv: overrideCabal drv (drv: { broken = true; }); + markBrokenVersion = version: drv: assert drv.version == version; markBroken drv; + + enableLibraryProfiling = drv: overrideCabal drv (drv: { enableLibraryProfiling = true; }); + disableLibraryProfiling = drv: overrideCabal drv (drv: { enableLibraryProfiling = false; }); + + enableSharedExecutables = drv: overrideCabal drv (drv: { enableSharedExecutables = true; }); + disableSharedExecutables = drv: overrideCabal drv (drv: { enableSharedExecutables = false; }); + + enableSharedLibraries = drv: overrideCabal drv (drv: { enableSharedLibraries = true; }); + disableSharedLibraries = drv: overrideCabal drv (drv: { enableSharedLibraries = false; }); + + enableSplitObjs = drv: overrideCabal drv (drv: { enableSplitObjs = true; }); + disableSplitObjs = drv: overrideCabal drv (drv: { enableSplitObjs = false; }); + + enableStaticLibraries = drv: overrideCabal drv (drv: { enableStaticLibraries = true; }); + disableStaticLibraries = drv: overrideCabal drv (drv: { enableStaticLibraries = false; }); + + appendPatch = drv: x: appendPatches drv [x]; + appendPatches = drv: xs: overrideCabal drv (drv: { patches = (drv.patches or []) ++ xs; }); + + doHyperlinkSource = drv: overrideCabal drv (drv: { hyperlinkSource = true; }); + dontHyperlinkSource = drv: overrideCabal drv (drv: { hyperlinkSource = false; }); + +} |