diff --git a/pkgs/by-name/rc/rclone-ui/package.nix b/pkgs/by-name/rc/rclone-ui/package.nix new file mode 100644 index 000000000000..d9320d6fe6ea --- /dev/null +++ b/pkgs/by-name/rc/rclone-ui/package.nix @@ -0,0 +1,88 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + + cargo-tauri, + nodejs, + npmHooks, + fetchNpmDeps, + + pkg-config, + wrapGAppsHook3, + + openssl, + libsoup_2_4, + webkitgtk_4_1, + glib-networking, + libappindicator, + nix-update-script, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "rclone-ui"; + version = "1.0.4"; + + src = fetchFromGitHub { + owner = "rclone-ui"; + repo = "rclone-ui"; + tag = "v${finalAttrs.version}"; + hash = "sha256-KTi/vCHiZVRAmQAiVXSWHCTTv1NnsvM5UZg8cpuFbRQ="; + }; + + npmDeps = fetchNpmDeps { + name = "${finalAttrs.pname}-${finalAttrs.version}-npm-deps"; + inherit (finalAttrs) src; + forceGitDeps = true; + hash = "sha256-18QkqqYS1kGY701FbFBHLvr5WBkJzxFgR9VMnydeelY="; + }; + + cargoRoot = "src-tauri"; + buildAndTestSubdir = finalAttrs.cargoRoot; + useFetchCargoVendor = true; + cargoHash = "sha256-o21of2eS2KZtg1U1E6RwdaA8jGhEVzg7HkgOv1k5wxI="; + + # Disable tauri bundle updater, can be removed when #389107 is merged + patches = [ ./remove_updater.patch ]; + + postPatch = '' + substituteInPlace src-tauri/Cargo.toml \ + --replace-fail 'name = "app"' 'name = "${finalAttrs.pname}"' + ''; + + nativeBuildInputs = [ + npmHooks.npmConfigHook + nodejs + + cargo-tauri.hook + + pkg-config + wrapGAppsHook3 + ]; + + buildInputs = [ + openssl + libsoup_2_4 + webkitgtk_4_1 + glib-networking + libappindicator + ]; + + dontWrapGApps = true; + + postInstall = '' + wrapProgram $out/bin/rclone-ui \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libappindicator ]} + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Cross-platform desktop GUI for rclone & S3"; + homepage = "https://github.com/rclone-ui/rclone-ui"; + changelog = "https://github.com/rclone-ui/rclone-ui/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ genga898 ]; + mainProgram = "rclone-ui"; + }; +}) diff --git a/pkgs/by-name/rc/rclone-ui/remove_updater.patch b/pkgs/by-name/rc/rclone-ui/remove_updater.patch new file mode 100644 index 000000000000..398ba86b2bc8 --- /dev/null +++ b/pkgs/by-name/rc/rclone-ui/remove_updater.patch @@ -0,0 +1,32 @@ +diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs +index 001faa3..2d7ae0c 100644 +--- a/src-tauri/src/lib.rs ++++ b/src-tauri/src/lib.rs +@@ -82,7 +82,6 @@ pub fn run() { + let _guard = minidump::init(&client); + + let mut app = tauri::Builder::default() +- .plugin(tauri_plugin_updater::Builder::new().build()) + .plugin(tauri_plugin_os::init()) + .plugin(tauri_plugin_notification::init()) + .plugin(tauri_plugin_process::init()) +diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json +index 4f9df22..58d6c06 100644 +--- a/src-tauri/tauri.conf.json ++++ b/src-tauri/tauri.conf.json +@@ -86,14 +86,9 @@ + "installMode": "both" + }, + "signCommand": "trusted-signing-cli %1 -e https://eus.codesigning.azure.net -a sign-1 -c Sign1" +- }, +- "createUpdaterArtifacts": true ++ } + }, + "plugins": { +- "updater": { +- "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDIyNDFENEZGNjFDNTBGOEYKUldTUEQ4VmgvOVJCSWhVZmw0enhmcW1kWFk3TS9mMzBDRjVEZWdxKzQ5ZmRhTlYvT2gvdFNMbE8K", +- "endpoints": ["https://github.com/FTCHD/rclone-ui/releases/latest/download/latest.json"] +- }, + "fs": { + "requireLiteralLeadingDot": false + }