summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/haskell-modules/lib.nix')
-rw-r--r--pkgs/development/haskell-modules/lib.nix61
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; });
+
+}