summaryrefslogtreecommitdiffstats
path: root/krebs
diff options
context:
space:
mode:
authorlassulus <lass@aidsballs.de>2016-05-25 11:14:32 +0200
committerlassulus <lass@aidsballs.de>2016-05-25 11:14:32 +0200
commita240a60b52684466a207a43e944e0f040ec75361 (patch)
tree13e872ba019942f6509e2ed17649d44603c3e841 /krebs
parent0f2fc7c4a6a9bb41b965c905949aefebbb6c3f49 (diff)
parent36c5834c288b56b6955e35d95708ae7f65f199f9 (diff)
Merge remote-tracking branch 'cd/master' into HEAD
Diffstat (limited to 'krebs')
-rw-r--r--krebs/5pkgs/builders.nix51
1 files changed, 48 insertions, 3 deletions
diff --git a/krebs/5pkgs/builders.nix b/krebs/5pkgs/builders.nix
index 19169b18..39b91d14 100644
--- a/krebs/5pkgs/builders.nix
+++ b/krebs/5pkgs/builders.nix
@@ -66,7 +66,52 @@ rec {
mv "$textPath" $out
'';
- writeNixFromCabal = name: path: pkgs.runCommand name {} ''
- ${pkgs.cabal2nix}/bin/cabal2nix ${path} > $out
- '';
+ writeHaskellBin =
+ k:
+ let
+ k' = parseDrvName k;
+ name = k'.name;
+ version = if k'.version != "" then k'.version else "0";
+ in
+ { build-depends ? ["base"] ++ depends
+ , depends ? []
+ , ghc-options ? ["-Wall" "-O3" "-threaded" "-rtsopts"]
+ , haskellPackages ? pkgs.haskellPackages
+ , license ? "WTFPL"
+ }:
+ main-text:
+ let
+ cabal-file = pkgs.writeText "${name}-${version}.cabal" ''
+ build-type: Simple
+ cabal-version: >= 1.2
+ name: ${name}
+ version: ${version}
+
+ executable ${name}
+ build-depends: ${concatStringsSep "," build-depends}
+ ghc-options: ${toString ghc-options}
+ main-is: ${main-file.name}
+ '';
+ main-file = pkgs.writeText "${name}-${version}.hs" main-text;
+ in
+ haskellPackages.mkDerivation rec {
+ inherit license version;
+ executableHaskellDepends = attrVals build-depends haskellPackages;
+ isExecutable = true;
+ isLibrary = false;
+ pname = name;
+ src = pkgs.runCommand "${name}-${version}-src" {} ''
+ install -D ${cabal-file} $out/${cabal-file.name}
+ install -D ${main-file} $out/${main-file.name}
+ '';
+ };
+
+ writeNixFromCabal =
+ trace (toString [
+ "The function `writeNixFromCabal` has been deprecated in favour of"
+ "`writeHaskellBin'."
+ ])
+ (name: path: pkgs.runCommand name {} ''
+ ${pkgs.cabal2nix}/bin/cabal2nix ${path} > $out
+ '');
}