summary refs log tree commit diff
path: root/pkgs/development/haskell-modules
diff options
context:
space:
mode:
authorBas van Dijk <v.dijk.bas@gmail.com>2017-08-30 14:40:54 +0200
committerBas van Dijk <v.dijk.bas@gmail.com>2017-08-30 14:40:54 +0200
commite410a191a1e6cb041cc62d14d9823b91d054b41c (patch)
tree427810ba5434718f0140c12830655974b1d9434a /pkgs/development/haskell-modules
parent60bdca87e3c014a18188b68848a3a97b6fd96228 (diff)
downloadnixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.tar
nixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.tar.gz
nixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.tar.bz2
nixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.tar.lz
nixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.tar.xz
nixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.tar.zst
nixlib-e410a191a1e6cb041cc62d14d9823b91d054b41c.zip
haskell: add the checkUnusedPackages function including docs
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r--pkgs/development/haskell-modules/lib.nix18
1 files changed, 17 insertions, 1 deletions
diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix
index 43723b807741..6da19794f6f4 100644
--- a/pkgs/development/haskell-modules/lib.nix
+++ b/pkgs/development/haskell-modules/lib.nix
@@ -1,5 +1,5 @@
 # TODO(@Ericson2314): Remove `pkgs` param, which is only used for
-# `buildStackProject` and `justStaticExecutables`
+# `buildStackProject`, `justStaticExecutables` and `checkUnusedPackages`
 { pkgs, lib }:
 
 rec {
@@ -108,6 +108,22 @@ rec {
 
   buildStrictly = pkg: buildFromSdist (appendConfigureFlag pkg "--ghc-option=-Wall --ghc-option=-Werror");
 
+  checkUnusedPackages =
+    { ignoreEmptyImports ? false
+    , ignoreMainModule   ? false
+    , ignorePackages     ? []
+    } : drv :
+      overrideCabal (appendConfigureFlag drv "--ghc-option=-ddump-minimal-imports") (_drv: {
+        postBuild = with lib;
+          let args = concatStringsSep " " (
+                       optional ignoreEmptyImports "--ignore-empty-imports" ++
+                       optional ignoreMainModule   "--ignore-main-module" ++
+                       map (pkg: "--ignore-package ${pkg}") ignorePackages
+                     );
+          in "${pkgs.haskellPackages.packunused}/bin/packunused" +
+             optionalString (args != "") " ${args}";
+      });
+
   buildStackProject = pkgs.callPackage ./generic-stack-builder.nix { };
 
   triggerRebuild = drv: i: overrideCabal drv (drv: { postUnpack = ": trigger rebuild ${toString i}"; });