summary refs log tree commit diff
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-09-08 17:17:09 +0300
committerNikolay Amiantov <ab@fmap.me>2015-09-08 17:50:55 +0300
commit57c33c1c54dba43c52b0e2d488dd4a77b3a896e2 (patch)
tree8eb7f4d030879fccbffeda4c5b576046a5e29cf3
parentc904dfa87c08916f838480241f874c59d44a2eb8 (diff)
downloadnixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.tar
nixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.tar.gz
nixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.tar.bz2
nixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.tar.lz
nixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.tar.xz
nixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.tar.zst
nixpkgs-57c33c1c54dba43c52b0e2d488dd4a77b3a896e2.zip
lambdabot: rework custom modules and configuration
-rw-r--r--pkgs/development/tools/haskell/lambdabot/custom-config.patch49
-rw-r--r--pkgs/development/tools/haskell/lambdabot/default.nix37
-rw-r--r--pkgs/development/tools/haskell/mueval/default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix4
4 files changed, 69 insertions, 27 deletions
diff --git a/pkgs/development/tools/haskell/lambdabot/custom-config.patch b/pkgs/development/tools/haskell/lambdabot/custom-config.patch
new file mode 100644
index 00000000000..db467f8dd29
--- /dev/null
+++ b/pkgs/development/tools/haskell/lambdabot/custom-config.patch
@@ -0,0 +1,49 @@
+diff --git a/src/Main.hs b/src/Main.hs
+index 61da2f3..39e5c9b 100644
+--- a/src/Main.hs
++++ b/src/Main.hs
+@@ -73,11 +73,14 @@ main = do
+     config' <- sequence config
+     dir <- P.getDataDir
+     exitWith <=< lambdabotMain modulesInfo $
+-        [dataDir ==> dir, lbVersion ==> P.version] ++ config'
++        [dataDir ==> dir, lbVersion ==> P.version] ++ configInfo ++ config'
+ 
+ -- special online target for ghci use
+ online :: [String] -> IO ()
+ online strs = do
+     dir <- P.getDataDir
+-    void $ lambdabotMain modulesInfo
+-        [dataDir ==> dir, lbVersion ==> P.version, onStartupCmds ==> strs]
++    void $ lambdabotMain modulesInfo $
++        [dataDir ==> dir, lbVersion ==> P.version, onStartupCmds ==> strs] ++ configInfo
++
++configInfo :: [DSum Config Identity]
++configInfo = @config@
+diff --git a/src/Modules.hs b/src/Modules.hs
+index 036ea1f..eaafa50 100644
+--- a/src/Modules.hs
++++ b/src/Modules.hs
+@@ -14,10 +14,15 @@ import Lambdabot.Plugin.Reference
+ import Lambdabot.Plugin.Social
+ 
+ modulesInfo :: Modules
+-modulesInfo = $(modules $ corePlugins
+-    ++ haskellPlugins
+-    ++ ["irc", "localtime", "topic"] -- ircPlugins
+-    ++ ["dummy", "fresh", "todo"] -- miscPlugins
+-    ++ ["bf", "dice", "elite", "filter", "quote", "slap", "unlambda", "vixen"] -- noveltyPlugins
+-    ++ referencePlugins
+-    ++ socialPlugins)
++modulesInfo =
++  $(modules $
++    let oldDefaultModules =
++          corePlugins
++          ++ haskellPlugins
++          ++ ["irc", "localtime", "topic"] -- ircPlugins
++          ++ ["dummy", "fresh", "todo"] -- miscPlugins
++          ++ ["bf", "dice", "elite", "filter", "quote", "slap", "unlambda", "vixen"] -- noveltyPlugins
++          ++ referencePlugins
++          ++ socialPlugins
++    in @modules@
++   )
diff --git a/pkgs/development/tools/haskell/lambdabot/default.nix b/pkgs/development/tools/haskell/lambdabot/default.nix
index f2462ed54e1..01dfe339d14 100644
--- a/pkgs/development/tools/haskell/lambdabot/default.nix
+++ b/pkgs/development/tools/haskell/lambdabot/default.nix
@@ -1,16 +1,9 @@
-{ lib, makeWrapper, haskellngPackages
+{ lib, haskell-lib, fetchpatch, makeWrapper, haskellPackages
 , mueval
 , withDjinn ? true
 , aspell ? null
 , packages ? (pkgs: [])
-, modules ? ''
-    haskellPlugins
-    ++ ["irc", "localtime", "topic"]
-    ++ ["dummy", "fresh", "todo"]
-    ++ ["bf", "dice", "elite", "filter", "quote", "slap", "unlambda", "vixen"]
-    ++ referencePlugins
-    ++ socialPlugins
-''
+, modules ? "oldDefaultModules"
 , configuration ? "[]"
 }:
 
@@ -18,34 +11,32 @@
 
 let allPkgs = pkgs: mueval.defaultPkgs pkgs ++ [ pkgs.lambdabot-trusted ] ++ packages pkgs;
     mueval' = mueval.override {
-      inherit haskellngPackages;
+      inherit haskellPackages;
       packages = allPkgs;
     };
     bins = lib.makeSearchPath "bin" ([ mueval'
-                                       (haskellngPackages.ghcWithPackages allPkgs)
-                                       haskellngPackages.unlambda
-                                       haskellngPackages.brainfuck
+                                       (haskellPackages.ghcWithPackages allPkgs)
+                                       haskellPackages.unlambda
+                                       haskellPackages.brainfuck
                                      ]
-                                     ++ lib.optional withDjinn haskellngPackages.djinn
+                                     ++ lib.optional withDjinn haskellPackages.djinn
                                      ++ lib.optional (aspell != null) aspell
                                     );
-    modulesStr = lib.replaceChars ["\n"] [" "] ("corePlugins ++ " + modules);
+    modulesStr = lib.replaceChars ["\n"] [" "] modules;
     configStr = lib.replaceChars ["\n"] [" "] configuration;
 
-in lib.overrideDerivation haskellngPackages.lambdabot (self: {
+in haskell-lib.overrideCabal haskellPackages.lambdabot (self: {
+  patches = (self.patches or []) ++ [ ./custom-config.patch ];
   postPatch = (self.postPatch or "") + ''
-    sed -i 's/\(\$(modules \$ \).*/\1@modules@)/; /@modules@/q' src/Modules.hs
-    # not via sed to avoid escaping issues
-    substituteInPlace src/Modules.hs \
-      --replace '@modules@' '${modulesStr}'
-    sed -i 's/\[dataDir :=> dir\]/@config@ ++ \0/' src/Main.hs
     substituteInPlace src/Main.hs \
       --replace '@config@' '${configStr}'
+    substituteInPlace src/Modules.hs \
+      --replace '@modules@' '${modulesStr}'
   '';
 
-  buildInputs = self.buildInputs ++ [ makeWrapper ];
+  buildTools = (self.buildTools or []) ++ [ makeWrapper ];
 
-  postInstall = (self.postInstall or "") + lib.optionalString (bins != "") ''
+  postInstall = (self.postInstall or "") + ''
     wrapProgram $out/bin/lambdabot \
       --prefix PATH ":" '${bins}'
   '';
diff --git a/pkgs/development/tools/haskell/mueval/default.nix b/pkgs/development/tools/haskell/mueval/default.nix
index aa445238f22..3b4a6406f70 100644
--- a/pkgs/development/tools/haskell/mueval/default.nix
+++ b/pkgs/development/tools/haskell/mueval/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, makeWrapper, haskellngPackages, packages ? (pkgs: [])
+{ stdenv, makeWrapper, haskellPackages, packages ? (pkgs: [])
 }:
 
 let defaultPkgs = pkgs: [ pkgs.show
@@ -6,14 +6,14 @@ let defaultPkgs = pkgs: [ pkgs.show
                           pkgs.QuickCheck
                           pkgs.mtl
                         ];
-    env = haskellngPackages.ghcWithPackages
+    env = haskellPackages.ghcWithPackages
            (pkgs: defaultPkgs pkgs ++ packages pkgs);
     libDir = "${env}/lib/ghc-${env.version}";
 
 in stdenv.mkDerivation {
   name = "mueval-env";
 
-  inherit (haskellngPackages) mueval;
+  inherit (haskellPackages) mueval;
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f41cc083232..f3b22857efb 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8064,7 +8064,9 @@ let
 
   readosm = callPackage ../development/libraries/readosm { };
 
-  lambdabot = callPackage ../development/tools/haskell/lambdabot { };
+  lambdabot = callPackage ../development/tools/haskell/lambdabot {
+    haskell-lib = haskell.lib;
+  };
 
   leksah = callPackage ../development/tools/haskell/leksah {
     inherit (haskellPackages) ghcWithPackages;