aboutsummaryrefslogtreecommitdiff
path: root/pkgs/development/tools/haskell/lambdabot
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 /pkgs/development/tools/haskell/lambdabot
parentc904dfa87c08916f838480241f874c59d44a2eb8 (diff)
lambdabot: rework custom modules and configuration
Diffstat (limited to 'pkgs/development/tools/haskell/lambdabot')
-rw-r--r--pkgs/development/tools/haskell/lambdabot/custom-config.patch49
-rw-r--r--pkgs/development/tools/haskell/lambdabot/default.nix37
2 files changed, 63 insertions, 23 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 000000000000..db467f8dd29b
--- /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 f2462ed54e17..01dfe339d141 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}'
'';