about summary refs log tree commit diff
path: root/shell.nix
diff options
context:
space:
mode:
Diffstat (limited to 'shell.nix')
-rw-r--r--shell.nix42
1 files changed, 32 insertions, 10 deletions
diff --git a/shell.nix b/shell.nix
index 72fce48..1ab7f90 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,10 +1,32 @@
-{ pkgs ? import <nixpkgs> { } }:
-pkgs.mkShell {
-  buildInputs = with pkgs; [
-    ghc
-    cabal-install
-    stack
-  
-    haskell-language-server
-  ];
-}
+{ nixpkgs ? import <nixpkgs> {}, compiler ? "default", doBenchmark ? false }:
+
+let
+
+  inherit (nixpkgs) pkgs;
+
+  f = { mkDerivation, astro, base, hpack, lib }:
+      mkDerivation {
+        pname = "sky-info";
+        version = "0.1.0.0";
+        src = ./.;
+        isLibrary = true;
+        isExecutable = true;
+        libraryHaskellDepends = [ astro base ];
+        libraryToolDepends = [ hpack ];
+        executableHaskellDepends = [ astro base ];
+        testHaskellDepends = [ astro base ];
+        prePatch = "hpack";
+        homepage = "https://github.com/githubuser/sky-info#readme";
+        license = lib.licenses.bsd3;
+      };
+
+  haskellPackages = if compiler == "default"
+                       then pkgs.haskellPackages
+                       else pkgs.haskell.packages.${compiler};
+
+  variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id;
+
+  drv = variant (haskellPackages.callPackage f {});
+
+in
+  drv.env