about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/purescript/spago/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/purescript/spago/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/purescript/spago/default.nix58
1 files changed, 58 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/purescript/spago/default.nix b/nixpkgs/pkgs/development/tools/purescript/spago/default.nix
new file mode 100644
index 000000000000..ada0eb350efa
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/purescript/spago/default.nix
@@ -0,0 +1,58 @@
+{ haskell
+, lib
+
+# The following are only needed for the passthru.tests:
+, cacert
+, git
+, nodejs
+, purescript
+, runCommand
+}:
+
+let
+  spago =
+    lib.pipe
+      haskell.packages.ghc90.spago
+      [ haskell.lib.compose.justStaticExecutables
+        (haskell.lib.compose.overrideCabal (oldAttrs: {
+          changelog = "https://github.com/purescript/spago/releases/tag/${oldAttrs.version}";
+        }))
+      ];
+in
+
+spago.overrideAttrs (oldAttrs: {
+  passthru = (oldAttrs.passthru or {}) // {
+    updateScript = ./update.sh;
+
+    # These tests can be run with the following command.  The tests access the
+    # network, so they cannot be run in the nix sandbox.  sudo is needed in
+    # order to change the sandbox option.
+    #
+    # $ sudo nix-build -A spago.passthru.tests --option sandbox relaxed
+    #
+    tests =
+      runCommand
+        "spago-tests"
+        {
+          __noChroot = true;
+          nativeBuildInputs = [
+            cacert
+            git
+            nodejs
+            purescript
+            spago
+          ];
+        }
+        ''
+          # spago expects HOME to be set because it creates a cache file under
+          # home.
+          HOME=$(pwd)
+
+          spago --verbose init
+          spago --verbose build
+          spago --verbose test
+
+          touch $out
+        '';
+  };
+})