From 5eb022fdb22e90467d05e9ce880c0f9f096c08aa Mon Sep 17 00:00:00 2001 From: wxt <3264117476@qq.com> Date: Wed, 2 Oct 2024 18:20:31 +0800 Subject: [PATCH] gg-jj: init at 0.20.0 --- pkgs/by-name/gg/gg-jj/package.nix | 80 +++++++++++++++++++++++++++++++ pkgs/by-name/gg/gg-jj/webui.nix | 31 ++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 pkgs/by-name/gg/gg-jj/package.nix create mode 100644 pkgs/by-name/gg/gg-jj/webui.nix diff --git a/pkgs/by-name/gg/gg-jj/package.nix b/pkgs/by-name/gg/gg-jj/package.nix new file mode 100644 index 000000000000..9ca0383c17f3 --- /dev/null +++ b/pkgs/by-name/gg/gg-jj/package.nix @@ -0,0 +1,80 @@ +{ + rustPlatform, + callPackage, + pkg-config, + lib, + fetchFromGitHub, + libayatana-appindicator, + openssl, + webkitgtk_4_1, +}: + +rustPlatform.buildRustPackage rec { + pname = "gg-jj"; + version = "0.20.0"; + + src = fetchFromGitHub { + owner = "gulbanana"; + repo = "gg"; + rev = "refs/tags/v${version}"; + hash = "sha256-xOi/AUlH0FeenTXz3hsDYixCEl+yr22PGy6Ow4TKxY0="; + }; + + sourceRoot = "${src.name}/src-tauri"; + + webui = callPackage ./webui.nix { + inherit + src + pname + version + meta + ; + }; + + env = { + OPENSSL_NO_VENDOR = 1; + }; + + buildInputs = [ + webkitgtk_4_1 + openssl + ]; + + nativeBuildInputs = [ + pkg-config + ]; + + cargoHash = "sha256-u3SkRA7327ZwqEnB+Xq2JDbI0k5HfeKzV17dvQ8B6xk="; + + postPatch = '' + buildRoot=$(pwd) + pushd $cargoDepsCopy/libappindicator-sys + oldHash=$(sha256sum src/lib.rs | cut -d " " -f 1) + substituteInPlace src/lib.rs \ + --replace-fail "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1" + substituteInPlace .cargo-checksum.json \ + --replace-fail $oldHash $(sha256sum src/lib.rs | cut -d " " -f 1) + popd + + pushd $cargoDepsCopy/jj-cli + oldHash=$(sha256sum build.rs | cut -d " " -f 1) + substituteInPlace build.rs \ + --replace-fail 'let path = std::env::var("CARGO_MANIFEST_DIR").unwrap();' "let path = \"$buildRoot\";" + substituteInPlace .cargo-checksum.json \ + --replace-fail $oldHash $(sha256sum build.rs | cut -d " " -f 1) + popd + + substituteInPlace ./tauri.conf.json \ + --replace-fail '"frontendDist": "../dist"' '"frontendDist": "${webui}"' \ + --replace-fail '"beforeBuildCommand": "npm run build"' '"beforeBuildCommand": ""' + ''; + + meta = { + homepage = "https://github.com/gulbanana/gg"; + changelog = "https://github.com/gulbanana/gg/releases/tag/v${version}"; + description = "GUI for jj users"; + maintainers = with lib.maintainers; [ bot-wxt1221 ]; + mainProgram = "gg"; + license = lib.licenses.apsl20; + }; +} diff --git a/pkgs/by-name/gg/gg-jj/webui.nix b/pkgs/by-name/gg/gg-jj/webui.nix new file mode 100644 index 000000000000..8d5ef5260c76 --- /dev/null +++ b/pkgs/by-name/gg/gg-jj/webui.nix @@ -0,0 +1,31 @@ +{ + version, + src, + pname, + pnpm, + meta, + buildNpmPackage, +}: + +buildNpmPackage { + inherit version src meta; + pname = "${pname}-webui"; + + npmDepsHash = "sha256-oHBFuX65D/FgnGa03jjpIKAdH8Q4c2NrpD64bhfe720="; + + buildPhase = '' + runHook preBuild + + node --max_old_space_size=1024000 ./node_modules/vite/bin/vite.js build + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + cp -r dist $out + + runHook postInstall + ''; +}