Code change:
Project description GitButler is a git client that lets you work on multiple branches at the same time. It allows you to quickly organize file changes into separate branches while still having them applied to your working directory. You can then push branches individually to your remote, or directly create pull requests. In a nutshell, it's a more flexible version of git add -p and git rebase -i, allowing you to efficiently multitask across branches. Metadata homepage URL: source URL: license: FSL-1.0-MIT platforms: linux, darwin
is also a Tauri app so the packaging is likely similar:
I'll work on this over the weekend, unless anyone has already started?
I don't think building from source is gonna be easy, precisely as we don't have done yet and this project uses pnpm workspaces. You can however wrap the Appimage though.
I've made Still draft. It does start the application, but clicking buttons results in problems on my system :sweatsmile: For a quick run: Update: it's now mostly working. The signin/login still gives an error and it's still unclear why. Also, I don't think I'll use gitbutler regularly atm, so it might be best if someone else wants to volunteer as maintainer of this package :sweatsmile:
I have made a PR that builds from source and has no issues with logging in (that just needed ).
Is this request open to contributions?
Would be best to wait for a while, if that PR goes abandoned, you can ask the author if it's okay to open another

Related discussion:
text: <ins> { lib, rustPlatform, buildGoModule, stdenv, fetchFromGitHub, pnpm_9, wrapGAppsHook3, cargo-tauri, darwin, desktop-file-utils, esbuild, git, glib-networking, jq, nodejs, pkg-config, libsoup, moreutils, openssl, webkitgtk, nix-update-script, }: rustPlatform.buildRustPackage rec { pname = "gitbutler"; version = "0.12.2"; src = fetchFromGitHub { owner = "gitbutlerapp"; repo = "gitbutler"; rev = "release/${version}"; hash = "sha256-m2hvcnY2h4DYtM4ME+dxmwnmUh768CHSoAq5VsKl6Sk="; }; # 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. postPatch = '' jq --slurp ".[0] * .[1] | .tauri.updater.active = false" crates/gitbutler-tauri/tauri.conf{,.release}.json | sponge crates/gitbutler-tauri/tauri.conf.json ''; cargoLock = { lockFile = ./Cargo.lock; outputHashes = { "tauri-plugin-context-menu-0.7.1" = "sha256-vKfq20hrFLmfoXO94D8HwAE3UdGcuqVZf3+tOBhLqj0="; "tauri-plugin-log-0.0.0" = "sha256-Mf2/cnKotd751ZcSHfiSLNe2nxBfo4dMBdoCwQhe7yI="; }; }; pnpmDeps = pnpm_9.fetchDeps { inherit pname version src; hash = "sha256-+4SPDvhpvR1bjwTcyLO3HeBuZGL3P03OaEnOvcX9t9c="; }; nativeBuildInputs = [ cargo-tauri desktop-file-utils jq moreutils nodejs pkg-config pnpm_9.configHook wrapGAppsHook3 ]; buildInputs = [ openssl ] ++ lib.optionals stdenv.isLinux [ glib-networking libsoup webkitgtk ] ++ lib.optionals stdenv.isDarwin ( with darwin.apple_sdk.frameworks; [ AppKit CoreServices Security WebKit ] ); env = { # `pnpm`'s `fetchDeps` and `configHook` uses a specific version of pnpm, not upstream's COREPACK_ENABLE_STRICT = 0; # we depend on nightly features RUSTC_BOOTSTRAP = 1; # 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 = args: buildGoModule ( args // rec { version = "0.18.20"; src = fetchFromGitHub { owner = "evanw"; repo = "esbuild"; rev = "v${version}"; hash = "sha256-mED3h+mY+4H465m02ewFK/BgA1i/PQ+ksUNxBlgpUoI="; }; vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ="; } ); } ); }; buildPhase = '' runHook preBuild cargo tauri build --bundles "$tauriBundle" runHook postBuild ''; installPhase = '' runHook preInstall '' + lib.optionalString stdenv.isDarwin '' mkdir -p $out/bin cp -r target/release/bundle/macos $out/Applications 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.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 checkType = "debug"; nativeCheckInputs = [ git ]; passthru = { updateScript = nix-update-script { extraArgs = [ "--version-regex" "release/(.*)" ]; }; }; meta = { description = "Git client for simultaneous branches on top of your existing workflow"; homepage = "https://gitbutler.com"; changelog = "https://github.com/gitbutlerapp/gitbutler/releases/tag/release/${version}"; mainProgram = "git-butler"; license = lib.licenses.fsl11Mit; maintainers = with lib.maintainers; [ getchoo ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; }; } </ins>