about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/gotify
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/gotify')
-rw-r--r--nixpkgs/pkgs/servers/gotify/default.nix24
-rw-r--r--nixpkgs/pkgs/servers/gotify/package.json87
-rw-r--r--nixpkgs/pkgs/servers/gotify/source-sha.nix1
-rw-r--r--nixpkgs/pkgs/servers/gotify/ui.nix72
-rwxr-xr-xnixpkgs/pkgs/servers/gotify/update.sh40
-rw-r--r--nixpkgs/pkgs/servers/gotify/vendor-sha.nix1
-rw-r--r--nixpkgs/pkgs/servers/gotify/version.nix1
7 files changed, 41 insertions, 185 deletions
diff --git a/nixpkgs/pkgs/servers/gotify/default.nix b/nixpkgs/pkgs/servers/gotify/default.nix
index 6a33f2a40094..b940f35e6a57 100644
--- a/nixpkgs/pkgs/servers/gotify/default.nix
+++ b/nixpkgs/pkgs/servers/gotify/default.nix
@@ -5,19 +5,18 @@
 , sqlite
 , callPackage
 , nixosTests
+, nix-update-script
 }:
 
 buildGoModule rec {
   pname = "gotify-server";
-  # should be update just like all other files imported like that via the
-  # `update.sh` script.
-  version = import ./version.nix;
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "gotify";
     repo = "server";
     rev = "v${version}";
-    sha256 = import ./source-sha.nix;
+    hash = "sha256-fWcdnmpLZycg7hmPNnphGcuSMTI4bsq57XPoSyQSGDA=";
   };
 
   # With `allowGoReference = true;`, `buildGoModule` adds the `-trimpath`
@@ -26,20 +25,28 @@ buildGoModule rec {
   #   server[780]: stat /var/lib/private/ui/build/index.html: no such file or directory
   allowGoReference = true;
 
-  vendorSha256 = import ./vendor-sha.nix;
+  vendorHash = "sha256-im7Pauit0tWi0BcyKtxybOqsu7rrIHZwY5Olta3nJJI=";
 
   doCheck = false;
 
-  buildInputs = [ sqlite ];
+  buildInputs = [
+    sqlite
+  ];
 
   ui = callPackage ./ui.nix { };
 
   preBuild = ''
-    cp -r ${ui}/libexec/gotify-ui/deps/gotify-ui/build ui/build && go run hack/packr/packr.go
+    if [ -n "$ui" ] # to make the preBuild a no-op inside the goModules fixed-output derivation, where it would fail
+    then
+      cp -r $ui ui/build
+    fi
   '';
 
   passthru = {
-    updateScript = ./update.sh;
+    # For nix-update to detect the location of this attribute from this
+    # derivation.
+    inherit (ui) offlineCache;
+    updateScript = nix-update-script { };
     tests = {
       nixos = nixosTests.gotify-server;
     };
@@ -60,5 +67,4 @@ buildGoModule rec {
     maintainers = with maintainers; [ doronbehar ];
     mainProgram = "server";
   };
-
 }
diff --git a/nixpkgs/pkgs/servers/gotify/package.json b/nixpkgs/pkgs/servers/gotify/package.json
deleted file mode 100644
index c2f9e71ec419..000000000000
--- a/nixpkgs/pkgs/servers/gotify/package.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "name": "gotify-ui",
-  "version": "0.2.0",
-  "private": true,
-  "homepage": ".",
-  "proxy": "http://localhost:80",
-  "dependencies": {
-    "@material-ui/core": "^4.11.4",
-    "@material-ui/icons": "^4.9.1",
-    "axios": "^0.21.1",
-    "codemirror": "^5.61.1",
-    "detect-browser": "^5.2.0",
-    "js-base64": "^3.6.1",
-    "mobx": "^5.15.6",
-    "mobx-react": "^6.3.0",
-    "mobx-utils": "^5.6.1",
-    "notifyjs": "^3.0.0",
-    "prop-types": "^15.6.2",
-    "react": "^16.4.2",
-    "react-codemirror2": "^7.2.1",
-    "react-dom": "^16.4.2",
-    "react-infinite": "^0.13.0",
-    "react-markdown": "^6.0.2",
-    "react-router": "^5.2.0",
-    "react-router-dom": "^5.2.0",
-    "react-timeago": "^6.2.1",
-    "remark-gfm": "^1.0.0",
-    "remove-markdown": "^0.3.0",
-    "typeface-roboto": "1.1.13"
-  },
-  "scripts": {
-    "start": "react-scripts start",
-    "build": "react-scripts build",
-    "test": "react-scripts test --env=node",
-    "eject": "react-scripts eject",
-    "lint": "eslint \"src/**/*.{ts,tsx}\"",
-    "format": "prettier \"src/**/*.{ts,tsx}\" --write",
-    "testformat": "prettier \"src/**/*.{ts,tsx}\" --list-different"
-  },
-  "devDependencies": {
-    "@types/codemirror": "5.60.0",
-    "@types/detect-browser": "^4.0.0",
-    "@types/get-port": "^4.0.0",
-    "@types/jest": "^26.0.23",
-    "@types/js-base64": "^3.3.1",
-    "@types/node": "^15.12.2",
-    "@types/notifyjs": "^3.0.2",
-    "@types/puppeteer": "^5.4.6",
-    "@types/react": "^16.9.49",
-    "@types/react-dom": "^16.9.8",
-    "@types/react-infinite": "0.0.35",
-    "@types/react-router-dom": "^5.1.7",
-    "@types/remove-markdown": "^0.3.0",
-    "@types/rimraf": "^3.0.0",
-    "@typescript-eslint/eslint-plugin": "^4.1.0",
-    "@typescript-eslint/parser": "^4.1.0",
-    "eslint-config-prettier": "^6.11.0",
-    "eslint-plugin-import": "^2.22.0",
-    "eslint-plugin-jest": "^24.0.0",
-    "eslint-plugin-prefer-arrow": "^1.2.2",
-    "eslint-plugin-react": "^7.20.6",
-    "eslint-plugin-unicorn": "^21.0.0",
-    "get-port": "^5.1.1",
-    "prettier": "^2.3.1",
-    "puppeteer": "^17.1.3",
-    "react-scripts": "^4.0.3",
-    "rimraf": "^3.0.2",
-    "tree-kill": "^1.2.0",
-    "typescript": "4.0.2",
-    "wait-on": "^5.3.0"
-  },
-  "eslintConfig": {
-    "extends": "react-app"
-  },
-  "browserslist": {
-    "production": [
-      ">0.2%",
-      "not dead",
-      "not op_mini all"
-    ],
-    "development": [
-      "last 1 chrome version",
-      "last 1 firefox version",
-      "last 1 safari version"
-    ]
-  }
-}
diff --git a/nixpkgs/pkgs/servers/gotify/source-sha.nix b/nixpkgs/pkgs/servers/gotify/source-sha.nix
deleted file mode 100644
index 4ef0649df7a1..000000000000
--- a/nixpkgs/pkgs/servers/gotify/source-sha.nix
+++ /dev/null
@@ -1 +0,0 @@
-"1kc4l95hrhi7lb9x8gy19xpwj12j4syg6w1kbllf3g3k83sr444f"
diff --git a/nixpkgs/pkgs/servers/gotify/ui.nix b/nixpkgs/pkgs/servers/gotify/ui.nix
index 2933a6ca474b..811fa41540ab 100644
--- a/nixpkgs/pkgs/servers/gotify/ui.nix
+++ b/nixpkgs/pkgs/servers/gotify/ui.nix
@@ -1,67 +1,47 @@
-{ yarn2nix-moretea
-, fetchFromGitHub, applyPatches
+{ stdenv
+, yarn
+, fixup_yarn_lock
+, nodejs-slim
+, fetchFromGitHub
 , fetchYarnDeps
+, gotify-server
 }:
 
-yarn2nix-moretea.mkYarnPackage rec {
+stdenv.mkDerivation rec {
   pname = "gotify-ui";
+  inherit (gotify-server) version;
 
-  packageJSON = ./package.json;
+  src = gotify-server.src + "/ui";
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
     hash = "sha256-ejHzo6NHCMlNiYePWvfMY9Blb58pj3UQ5PFI0V84flI=";
   };
 
-  version = import ./version.nix;
+  nativeBuildInputs = [ yarn fixup_yarn_lock nodejs-slim ];
 
-  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";
+  postPatch = ''
+    export HOME=$NIX_BUILD_TOP/fake_home
+    yarn config --offline set yarn-offline-mirror $offlineCache
+    fixup_yarn_lock yarn.lock
+    yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
+    patchShebangs node_modules/
+  '';
 
   buildPhase = ''
-    export HOME=$(mktemp -d)
-    export WRITABLE_NODE_MODULES="$(pwd)/tmp"
-    export NODE_OPTIONS=--openssl-legacy-provider
-    mkdir -p "$WRITABLE_NODE_MODULES"
+    runHook preBuild
 
-    # 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"
+    export NODE_OPTIONS=--openssl-legacy-provider
+    yarn --offline build
 
-    # 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
+    runHook postBuild
+  '';
 
-    ln -sfv "$WRITABLE_NODE_MODULES" node_modules
-    cd ../..
+  installPhase = ''
+    runHook preInstall
 
-    yarn build
+    mv build $out
 
-    cd deps/gotify-ui
-    rm -rf node_modules
-    ln -sf $node_modules node_modules
-    cd ../..
+    runHook postInstall
   '';
-
 }
diff --git a/nixpkgs/pkgs/servers/gotify/update.sh b/nixpkgs/pkgs/servers/gotify/update.sh
deleted file mode 100755
index 7df5f3711e1f..000000000000
--- a/nixpkgs/pkgs/servers/gotify/update.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash -p wget yarn2nix-moretea.yarn2nix nix-prefetch-git jq
-
-set -euo pipefail
-
-dirname="$(dirname "$0")"
-
-latest_release=$(curl --silent https://api.github.com/repos/gotify/server/releases/latest)
-version=$(jq -r '.tag_name' <<<"$latest_release")
-echo got version $version
-echo \""${version#v}"\" > "$dirname/version.nix"
-printf '%s\n' $(nix-prefetch-git --quiet --rev ${version} https://github.com/gotify/server | jq .sha256) > $dirname/source-sha.nix
-tput setaf 1
-echo zeroing vendorSha256 in $dirname/vendor-sha.nix
-tput sgr0
-printf '"%s"\n' "0000000000000000000000000000000000000000000000000000" > $dirname/vendor-sha.nix
-
-GOTIFY_WEB_SRC="https://raw.githubusercontent.com/gotify/server/$version"
-
-curl --silent "$GOTIFY_WEB_SRC/ui/package.json" -o $dirname/package.json
-echo downloaded package.json
-curl --silent "$GOTIFY_WEB_SRC/ui/yarn.lock" -o $dirname/yarn.lock
-echo downloaded yarndeps.nix
-echo running yarn2nix
-yarn2nix --lockfile=$dirname/yarn.lock > $dirname/yarndeps.nix
-rm $dirname/yarn.lock
-echo removed yarn.lock
-
-echo running nix-build for ui
-nix-build -A gotify-server.ui
-echo running nix-build for gotify itself in order to get vendorSha256
-set +e
-vendorSha256="$(nix-build -A gotify-server 2>&1 | grep "got:" | cut -d':' -f2)"
-set -e
-printf '"%s"\n' "$vendorSha256" > $dirname/vendor-sha.nix
-tput setaf 2
-echo got vendorSha256 of: $vendorSha256
-tput sgr0
-echo running nix-build -A gotify-server which should build gotify-server normally
-nix-build -A gotify-server
diff --git a/nixpkgs/pkgs/servers/gotify/vendor-sha.nix b/nixpkgs/pkgs/servers/gotify/vendor-sha.nix
deleted file mode 100644
index 6cd9d28fdba4..000000000000
--- a/nixpkgs/pkgs/servers/gotify/vendor-sha.nix
+++ /dev/null
@@ -1 +0,0 @@
-"sha256-TxxiyfWzlzQ2R2hgeBzB11FIiOz5rIBfaIm15DQ+dL0="
diff --git a/nixpkgs/pkgs/servers/gotify/version.nix b/nixpkgs/pkgs/servers/gotify/version.nix
deleted file mode 100644
index d3eb9bb03b76..000000000000
--- a/nixpkgs/pkgs/servers/gotify/version.nix
+++ /dev/null
@@ -1 +0,0 @@
-"2.2.4"