about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/polaris/web.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/polaris/web.nix')
-rw-r--r--nixpkgs/pkgs/servers/polaris/web.nix79
1 files changed, 79 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/polaris/web.nix b/nixpkgs/pkgs/servers/polaris/web.nix
new file mode 100644
index 000000000000..b2d6d6de9fad
--- /dev/null
+++ b/nixpkgs/pkgs/servers/polaris/web.nix
@@ -0,0 +1,79 @@
+{ lib
+, stdenv
+, pkgs
+, fetchFromGitHub
+, nodejs
+, cypress
+}:
+
+stdenv.mkDerivation rec {
+  pname = "polaris-web";
+  version = "build-54";
+
+  src = fetchFromGitHub {
+    owner = "agersant";
+    repo = "polaris-web";
+    rev = "${version}";
+    sha256 = "+Tpj4XgWL1U+Y33YbEruilfV/6WGl8Dtj9FdXm2JVNU=";
+  };
+
+  nativeBuildInputs = [
+    nodejs
+  ];
+
+  buildPhase =
+    let
+      nodeDependencies = (import ./node-composition.nix {
+        inherit pkgs nodejs;
+        inherit (stdenv.hostPlatform) system;
+      }).nodeDependencies.override (old: {
+        # access to path '/nix/store/...-source' is forbidden in restricted mode
+        src = src;
+        dontNpmInstall = true;
+
+        # ERROR: .../.bin/node-gyp-build: /usr/bin/env: bad interpreter: No such file or directory
+        # https://github.com/svanderburg/node2nix/issues/275
+        # There are multiple instances of it, hence the globstar
+        preRebuild = ''
+          shopt -s globstar
+          sed -i -e "s|#!/usr/bin/env node|#! ${pkgs.nodejs}/bin/node|" \
+            node_modules/**/node-gyp-build/bin.js \
+        '';
+
+        buildInputs = [ cypress ];
+        # prevent downloading cypress, use the executable in path instead
+        CYPRESS_INSTALL_BINARY = "0";
+
+      });
+    in
+    ''
+      runHook preBuild
+
+      export PATH="${nodeDependencies}/bin:${nodejs}/bin:$PATH"
+
+      ln -s ${nodeDependencies}/lib/node_modules .
+      npm run production
+
+      runHook postBuild
+    '';
+
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share
+    cp -a dist $out/share/polaris-web
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = ./update-web.sh;
+
+  meta = with lib; {
+    description = "Web client for Polaris";
+    homepage = "https://github.com/agersant/polaris-web";
+    license = licenses.mit;
+    maintainers = with maintainers; [ pbsds ];
+    platforms = platforms.unix;
+  };
+}