diff --git a/pkgs/by-name/gi/gitbutler/package.nix b/pkgs/by-name/gi/gitbutler/package.nix index 21fe0bb3096b..68679cfcfea4 100644 --- a/pkgs/by-name/gi/gitbutler/package.nix +++ b/pkgs/by-name/gi/gitbutler/package.nix @@ -18,10 +18,12 @@ libsoup, moreutils, openssl, + rust, webkitgtk, nix-update-script, cacert, }: + rustPlatform.buildRustPackage rec { pname = "gitbutler"; version = "0.12.16"; @@ -33,11 +35,10 @@ rustPlatform.buildRustPackage rec { hash = "sha256-L4PVaNb3blpLIcyA7XLc71qwUPUADclxvbOkq1Jc1no="; }; - # deactivate the upstream updater in tauri configuration - # TODO: use `tauri build`'s `--config` flag with the release configuration instead of manually merging - # them. it doesn't seem to like using paths currently, even though it should. + # deactivate the upstream updater in tauri configuration & set the version postPatch = '' - jq --slurp ".[0] * .[1] | .tauri.updater.active = false" crates/gitbutler-tauri/tauri.conf{,.release}.json | sponge crates/gitbutler-tauri/tauri.conf.json + tauri_conf="crates/gitbutler-tauri/tauri.conf.release.json" + jq '.package.version = "${version}" | .tauri.updater.active = false' "$tauri_conf" | sponge "$tauri_conf" ''; cargoLock = { @@ -54,7 +55,7 @@ rustPlatform.buildRustPackage rec { }; nativeBuildInputs = [ - cargo-tauri + cargo-tauri.hook desktop-file-utils jq moreutils @@ -82,7 +83,15 @@ rustPlatform.buildRustPackage rec { ] ); + # extended release configuration + tauriBuildFlags = [ "--config crates/gitbutler-tauri/tauri.conf.release.json" ]; + env = { + # make sure `crates/gitbutler-tauri/inject-git-binaries.sh` can find our + # target dir + # https://github.com/gitbutlerapp/gitbutler/blob/56b64d778042d0e93fa362f808c35a7f095ab1d1/crates/gitbutler-tauri/inject-git-binaries.sh#L10C10-L10C26 + TRIPLE_OVERRIDE = rust.envVars.rustHostPlatformSpec; + # `pnpm`'s `fetchDeps` and `configHook` uses a specific version of pnpm, not upstream's COREPACK_ENABLE_STRICT = 0; @@ -95,14 +104,6 @@ rustPlatform.buildRustPackage rec { # we also need to have `tracing` support in `tokio` for `console-subscriber` RUSTFLAGS = "--cfg tokio_unstable"; - tauriBundle = - { - Linux = "deb"; - Darwin = "app"; - } - .${stdenv.hostPlatform.uname.system} - or (throw "No tauri bundle available for ${stdenv.hostPlatform.uname.system}"); - ESBUILD_BINARY_PATH = lib.getExe ( esbuild.override { buildGoModule = @@ -128,39 +129,23 @@ rustPlatform.buildRustPackage rec { OPENSSL_NO_VENDOR = true; }; - buildPhase = '' - runHook preBuild - + preBuild = '' pushd packages/ui pnpm package popd - - cargo tauri build --bundles "$tauriBundle" - - runHook postBuild ''; - installPhase = - '' - runHook preInstall - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - mkdir -p $out/bin - cp -r target/release/bundle/macos $out/Applications + postInstall = + lib.optionalString stdenv.hostPlatform.isDarwin '' mv $out/Applications/GitButler.app/Contents/MacOS/GitButler $out/bin/git-butler ln -s $out/bin/git-butler $out/Applications/GitButler.app/Contents/MacOS/GitButler '' + lib.optionalString stdenv.hostPlatform.isLinux '' - cp -r target/release/bundle/"$tauriBundle"/*/data/usr $out - desktop-file-edit \ --set-comment "A Git client for simultaneous branches on top of your existing workflow." \ --set-key="Keywords" --set-value="git;" \ --set-key="StartupWMClass" --set-value="GitButler" \ $out/share/applications/git-butler.desktop - '' - + '' - runHook postInstall ''; # the `gitbutler-git` crate's checks do not support release mode