summary refs log tree commit diff
path: root/pkgs/servers/gotify/ui.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/gotify/ui.nix')
-rw-r--r--pkgs/servers/gotify/ui.nix48
1 files changed, 42 insertions, 6 deletions
diff --git a/pkgs/servers/gotify/ui.nix b/pkgs/servers/gotify/ui.nix
index 36e823ac557..e7350c7d35b 100644
--- a/pkgs/servers/gotify/ui.nix
+++ b/pkgs/servers/gotify/ui.nix
@@ -1,5 +1,5 @@
 { yarn2nix-moretea
-, fetchFromGitHub
+, fetchFromGitHub, applyPatches
 }:
 
 yarn2nix-moretea.mkYarnPackage rec {
@@ -10,16 +10,52 @@ yarn2nix-moretea.mkYarnPackage rec {
 
   version = import ./version.nix;
 
-  src_all = fetchFromGitHub {
-    owner = "gotify";
-    repo = "server";
-    rev = "v${version}";
-    sha256 = import ./source-sha.nix;
+  src_all = applyPatches {
+    src = fetchFromGitHub {
+      owner = "gotify";
+      repo = "server";
+      rev = "v${version}";
+      sha256 = import ./source-sha.nix;
+    };
+    postPatch = ''
+      substituteInPlace ui/yarn.lock \
+        --replace \
+          "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz" \
+          "https___registry.npmjs.org_caniuse_lite___caniuse_lite_1.0.30001237.tgz"
+    '';
   };
   src = "${src_all}/ui";
 
   buildPhase = ''
+    export HOME=$(mktemp -d)
+    export WRITABLE_NODE_MODULES="$(pwd)/tmp"
+    mkdir -p "$WRITABLE_NODE_MODULES"
+
+    # react-scripts requires a writable node_modules/.cache, so we have to copy the symlink's contents back
+    # into `node_modules/`.
+    # See https://github.com/facebook/create-react-app/issues/11263
+    cd deps/gotify-ui
+    node_modules="$(readlink node_modules)"
+    rm node_modules
+    mkdir -p "$WRITABLE_NODE_MODULES"/.cache
+    cp -r $node_modules/* "$WRITABLE_NODE_MODULES"
+
+    # In `node_modules/.bin` are relative symlinks that would be broken after copying them over,
+    # so we take care of them here.
+    mkdir -p "$WRITABLE_NODE_MODULES"/.bin
+    for x in "$node_modules"/.bin/*; do
+      ln -sfv "$node_modules"/.bin/"$(readlink "$x")" "$WRITABLE_NODE_MODULES"/.bin/"$(basename "$x")"
+    done
+
+    ln -sfv "$WRITABLE_NODE_MODULES" node_modules
+    cd ../..
+
     yarn build
+
+    cd deps/gotify-ui
+    rm -rf node_modules
+    ln -sf $node_modules node_modules
+    cd ../..
   '';
 
 }