summary refs log tree commit diff
path: root/haskell/shell.nix
diff options
context:
space:
mode:
authorErik Oosting2023-12-18 14:29:00 +0100
committerErik Oosting2023-12-18 14:29:00 +0100
commitdaf044b576feb8ee61bb6be18f28985f5e87f4f4 (patch)
treeb9ec8f9443bcaa339384cecd86d273f530a56f1c /haskell/shell.nix
parenta1be864841356b237cbbee42c163384d69995555 (diff)
add haskell version
Diffstat (limited to 'haskell/shell.nix')
-rw-r--r--haskell/shell.nix33
1 files changed, 33 insertions, 0 deletions
diff --git a/haskell/shell.nix b/haskell/shell.nix
new file mode 100644
index 0000000..78b2637
--- /dev/null
+++ b/haskell/shell.nix
@@ -0,0 +1,33 @@
+{ nixpkgs ? import <nixpkgs> {}, compiler ? "default", doBenchmark ? false }:
+
+let
+
+  inherit (nixpkgs) pkgs;
+
+  f = { mkDerivation, base, bound, lib, llvm-codegen
+      , recursion-schemes
+      }:
+        mkDerivation {
+          pname = "haskell";
+          version = "0.1.0.0";
+          src = ./.;
+          isLibrary = false;
+          isExecutable = true;
+          executableHaskellDepends = [
+            base bound llvm-codegen recursion-schemes
+          ];
+          license = "unknown";
+          mainProgram = "haskell";
+        };
+
+  haskellPackages = if compiler == "default"
+                    then pkgs.callPackage ./pkgs {}
+                    else pkgs.haskell.packages.${compiler};
+
+  variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id;
+
+  drv = variant (haskellPackages.callPackage f {});
+
+in
+
+if pkgs.lib.inNixShell then drv.env else drv