nixpkgs/pkgs/development/tools/haskell/lambdabot/default.nix

42 lines
1.4 KiB
Nix
Raw Normal View History

{ lib, haskellLib, fetchpatch, makeWrapper, haskellPackages
2015-04-14 01:06:18 +02:00
, mueval
, withDjinn ? true
, aspell ? null
, packages ? (pkgs: [])
, modules ? "oldDefaultModules"
2015-04-20 15:10:35 +02:00
, configuration ? "[]"
2015-04-14 01:06:18 +02:00
}:
let allPkgs = pkgs: mueval.defaultPkgs pkgs ++ [ pkgs.lambdabot-trusted ] ++ packages pkgs;
mueval' = mueval.override {
inherit haskellPackages;
2015-04-14 01:06:18 +02:00
packages = allPkgs;
};
bins = lib.makeBinPath ([ mueval'
2018-01-31 12:29:02 +01:00
(haskellPackages.ghcWithHoogle allPkgs)
haskellPackages.unlambda
haskellPackages.brainfuck
]
++ lib.optional withDjinn haskellPackages.djinn
++ lib.optional (aspell != null) aspell
);
modulesStr = lib.replaceChars ["\n"] [" "] modules;
2015-04-20 15:10:35 +02:00
configStr = lib.replaceChars ["\n"] [" "] configuration;
2015-04-14 01:06:18 +02:00
in haskellLib.overrideCabal haskellPackages.lambdabot (self: {
patches = (self.patches or []) ++ [ ./custom-config.patch ];
2015-04-14 01:06:18 +02:00
postPatch = (self.postPatch or "") + ''
2015-04-20 15:10:35 +02:00
substituteInPlace src/Main.hs \
--replace '@config@' '${configStr}'
substituteInPlace src/Modules.hs \
--replace '@modules@' '${modulesStr}'
2015-04-14 01:06:18 +02:00
'';
buildTools = (self.buildTools or []) ++ [ makeWrapper ];
2015-04-14 01:06:18 +02:00
postInstall = (self.postInstall or "") + ''
2015-04-14 01:06:18 +02:00
wrapProgram $out/bin/lambdabot \
--prefix PATH ":" '${bins}'
'';
})