diff --git a/pkgs/development/tools/lambdabot/default.nix b/pkgs/development/tools/lambdabot/default.nix new file mode 100644 index 00000000000..e6e3eff99f3 --- /dev/null +++ b/pkgs/development/tools/lambdabot/default.nix @@ -0,0 +1,47 @@ +{ lib, makeWrapper, haskellngPackages +, 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 +'' +}: + +# FIXME: fix hoogle search + +let allPkgs = pkgs: mueval.defaultPkgs pkgs ++ [ pkgs.lambdabot-trusted ] ++ packages pkgs; + mueval' = mueval.override { + inherit haskellngPackages; + packages = allPkgs; + }; + bins = lib.makeSearchPath "bin" ([ mueval' + (haskellngPackages.ghcWithPackages allPkgs) + haskellngPackages.unlambda + haskellngPackages.brainfuck + ] + ++ lib.optional withDjinn haskellngPackages.djinn + ++ lib.optional (aspell != null) aspell + ); + modulesStr = lib.replaceChars ["\n"] [" "] ("corePlugins ++ " + modules); + +in lib.overrideDerivation haskellngPackages.lambdabot (self: { + 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}' + ''; + + buildInputs = self.buildInputs ++ [ makeWrapper ]; + + postInstall = (self.postInstall or "") + lib.optionalString (bins != "") '' + wrapProgram $out/bin/lambdabot \ + --prefix PATH ":" '${bins}' + ''; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ad6ac239339..919e74e3706 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7415,6 +7415,8 @@ let readosm = callPackage ../development/libraries/readosm { }; + lambdabot = callPackage ../development/tools/lambdabot { }; + leksah = callPackage ../development/tools/leksah { inherit (haskellngPackages) ghcWithPackages; };