diff options
author | Marie Ramlow <me@nycode.dev> | 2024-06-06 20:55:15 +0200 |
---|---|---|
committer | Marie Ramlow <me@nycode.dev> | 2024-06-06 21:05:41 +0200 |
commit | a12b6b0555c79c1d9b949ec01355d0565737e810 (patch) | |
tree | 8fb0cb3fb8ea82a87feb41918e544697b75c8a77 /pkgs/by-name/pg | |
parent | 610a87e260a687d20722e3e240348d5f73dbce34 (diff) |
pgrok: move to by-name
Diffstat (limited to 'pkgs/by-name/pg')
-rw-r--r-- | pkgs/by-name/pg/pgrok/build-deps/package.json | 38 | ||||
-rw-r--r-- | pkgs/by-name/pg/pgrok/package.nix | 56 | ||||
-rwxr-xr-x | pkgs/by-name/pg/pgrok/update.sh | 40 | ||||
-rw-r--r-- | pkgs/by-name/pg/pgrok/web.nix | 30 |
4 files changed, 164 insertions, 0 deletions
diff --git a/pkgs/by-name/pg/pgrok/build-deps/package.json b/pkgs/by-name/pg/pgrok/build-deps/package.json new file mode 100644 index 0000000000000..b40bf794c6de0 --- /dev/null +++ b/pkgs/by-name/pg/pgrok/build-deps/package.json @@ -0,0 +1,38 @@ +{ + "name": "pgrokd", + "scripts": { + "dev": "vite", + "build": "tsc && vite build --outDir=dist --emptyOutDir", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0" + }, + "version": "1.4.1", + "dependencies": { + "axios": "~1.4.0", + "react": "~18.2.0", + "react-dom": "~18.2.0", + "react-router-dom": "~6.15.0", + "@headlessui/react": "~1.7.17", + "@heroicons/react": "~2.0.18", + "@tailwindcss/forms": "~0.5.4", + "@trivago/prettier-plugin-sort-imports": "~4.2.0", + "@types/node": "~20.5.1", + "@types/react": "~18.2.15", + "@types/react-dom": "~18.2.7", + "@typescript-eslint/eslint-plugin": "~6.0.0", + "@typescript-eslint/parser": "~6.0.0", + "@vitejs/plugin-react": "~4.0.3", + "autoprefixer": "~10.4.15", + "code-inspector-plugin": "v0.1.9", + "eslint": "~8.45.0", + "eslint-plugin-import": "~2.28.0", + "eslint-plugin-react": "~7.33.2", + "eslint-plugin-react-hooks": "~4.6.0", + "eslint-plugin-react-refresh": "~0.4.3", + "eslint-plugin-unicorn": "~48.0.1", + "postcss": "~8.4.28", + "prettier": "~3.0.2", + "tailwindcss": "~3.3.3", + "typescript": "~5.0.2", + "vite": "~4.4.5" + } +} diff --git a/pkgs/by-name/pg/pgrok/package.nix b/pkgs/by-name/pg/pgrok/package.nix new file mode 100644 index 0000000000000..e5c9610521ce2 --- /dev/null +++ b/pkgs/by-name/pg/pgrok/package.nix @@ -0,0 +1,56 @@ +{ lib +, buildGoModule +, callPackage +, fetchFromGitHub +}: +buildGoModule rec { + pname = "pgrok"; + version = "1.4.1"; + + src = fetchFromGitHub { + owner = "pgrok"; + repo = "pgrok"; + rev = "v${version}"; + hash = "sha256-P36rpFi5J+dF6FrVaPhqupG00h4kwr0qumt4ehL/7vU="; + }; + + vendorHash = "sha256-X5FjzliIJdfJnNaUXBjv1uq5tyjMVjBbnLCBH/P0LFM="; + + outputs = [ "out" "server" ]; + + web = callPackage ./web.nix { inherit src version; }; + + ldflags = [ + "-s" + "-w" + "-X main.version=${version}" + "-X main.commit=unknown" + "-X main.date=unknown" + ]; + + subPackages = [ + "pgrok/pgrok" + "pgrokd/pgrokd" + ]; + + postPatch = '' + # rename packages due to naming conflict + mv pgrok/cli/ pgrok/pgrok/ + mv pgrokd/cli/ pgrokd/pgrokd/ + cp -r ${web} pgrokd/pgrokd/dist + ''; + + postInstall = '' + moveToOutput bin/pgrokd $server + ''; + + passthru.updateScript = ./update.sh; + + meta = { + description = "Selfhosted TCP/HTTP tunnel, ngrok alternative, written in Go"; + homepage = "https://github.com/pgrok/pgrok"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ marie ]; + mainProgram = "pgrok"; + }; +} diff --git a/pkgs/by-name/pg/pgrok/update.sh b/pkgs/by-name/pg/pgrok/update.sh new file mode 100755 index 0000000000000..c19726de6c048 --- /dev/null +++ b/pkgs/by-name/pg/pgrok/update.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix curl nix-update jq + +set -euo pipefail + +nix-update + +cd "$(dirname "$0")" + +nixpkgs=../../../.. +node_packages="$nixpkgs/pkgs/development/node-packages" +pgrok="$nixpkgs/pkgs/by-name/pg/pgrok" + +TARGET_VERSION_REMOTE=$(curl -s https://api.github.com/repos/pgrok/pgrok/releases/latest | jq -r ".tag_name") +TARGET_VERSION=${TARGET_VERSION_REMOTE#v} + +SRC_FILE_BASE="https://raw.githubusercontent.com/pgrok/pgrok/v$TARGET_VERSION" + +# replace ^ versions with ~, replace outdir to dist +curl https://raw.githubusercontent.com/pgrok/pgrok/main/pgrokd/web/package.json \ + | jq "{name,scripts,version: \"${TARGET_VERSION}\",dependencies: (.dependencies + .devDependencies) }" \ + | sed -e 's/"\^/"~/g' -e 's/\.\.\/cli\/dist/dist/g' \ + > "$pgrok/build-deps/package.json.new" + +old_deps="$(jq '.dependencies' "$pgrok/build-deps/package.json")" +new_deps="$(jq '.dependencies' "$pgrok/build-deps/package.json.new")" + +if [[ "$old_deps" == "$new_deps" ]]; then + echo "package.json dependencies not changed, do simple version change" + + sed -e '/^ "pgrok-build-deps/,+3 s/version = ".*"/version = "'"$TARGET_VERSION"'"/' \ + --in-place "$node_packages"/node-packages.nix + mv build-deps/package.json{.new,} +else + echo "package.json dependencies changed, updating nodePackages" + mv build-deps/package.json{.new,} + + ./"$node_packages"/generate.sh +fi + diff --git a/pkgs/by-name/pg/pgrok/web.nix b/pkgs/by-name/pg/pgrok/web.nix new file mode 100644 index 0000000000000..374f79fa84980 --- /dev/null +++ b/pkgs/by-name/pg/pgrok/web.nix @@ -0,0 +1,30 @@ +{ src +, version +, nodejs +, nodePackages +, stdenvNoCC +}: +let + build-deps = nodePackages."pgrok-build-deps-../../by-name/pg/pgrok/build-deps"; +in +stdenvNoCC.mkDerivation { + pname = "pgrok-web"; + inherit version; + src = "${src}/pgrokd/web"; + + nativeBuildInputs = [ nodejs ]; + + buildPhase = '' + runHook preBuild + cp ${./build-deps/package.json} package.json + ln -s ${build-deps}/lib/node_modules/pgrokd/node_modules node_modules + npm run build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + cp -r dist $out + runHook postInstall + ''; +} |