Loading pkgs/applications/networking/sync/celeste/default.nix 0 → 100644 +114 −0 Original line number Diff line number Diff line { lib , stdenv , rust , rustPlatform , fetchFromGitHub , substituteAll , fetchpatch , pkg-config , wrapGAppsHook4 , cairo , gdk-pixbuf , glib , graphene , gtk3 , gtk4 , libadwaita , libappindicator-gtk3 , librclone , pango , rclone }: let # https://github.com/trevyn/librclone/pull/8 librclone-mismatched-types-patch = fetchpatch { name = "use-c_char-to-be-platform-independent.patch"; url = "https://github.com/trevyn/librclone/commit/91fdf3fa5f5eea0dfd06981ba72e09034974fdad.patch"; hash = "sha256-8YDyUNP/ISP5jCliT6UCxZ89fdRFud+6u6P29XdPy58="; }; in rustPlatform.buildRustPackage rec { pname = "celeste"; version = "0.4.6"; src = fetchFromGitHub { owner = "hwittenborn"; repo = "celeste"; rev = "v${version}"; hash = "sha256-VEyQlycpqsGKqtV/QvqBfVHqQhl/H6HsWPRDBtQO3qM="; }; cargoHash = "sha256-fqt0XklJJAXi2jO7eo0tIwRo2Y3oM56qYwoaelKY8iU="; patches = [ (substituteAll { src = ./target-dir.patch; rustTarget = rust.toRustTarget stdenv.hostPlatform; }) ]; postPatch = '' pushd $cargoDepsCopy/librclone-sys oldHash=$(sha256sum build.rs | cut -d " " -f 1) patch -p2 < ${./librclone-path.patch} substituteInPlace build.rs \ --subst-var-by librclone ${librclone} substituteInPlace .cargo-checksum.json \ --replace $oldHash $(sha256sum build.rs | cut -d " " -f 1) popd pushd $cargoDepsCopy/librclone oldHash=$(sha256sum src/lib.rs | cut -d " " -f 1) patch -p1 < ${librclone-mismatched-types-patch} substituteInPlace .cargo-checksum.json \ --replace $oldHash $(sha256sum src/lib.rs | cut -d " " -f 1) popd ''; # Cargo.lock is outdated preConfigure = '' cargo update --offline ''; # We need to build celeste-tray first because celeste/src/launch.rs reads that file at build time. # Upstream does the same: https://github.com/hwittenborn/celeste/blob/765dfa2/justfile#L1-L3 cargoBuildFlags = [ "--bin" "celeste-tray" ]; postConfigure = '' cargoBuildHook cargoBuildFlags= ''; RUSTC_BOOTSTRAP = 1; nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook wrapGAppsHook4 ]; buildInputs = [ cairo gdk-pixbuf glib graphene gtk3 gtk4 libadwaita librclone pango ]; preFixup = '' gappsWrapperArgs+=( --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libappindicator-gtk3 ]}" --prefix PATH : "${lib.makeBinPath [ rclone ]}" ) ''; meta = { changelog = "https://github.com/hwittenborn/celeste/blob/${src.rev}/CHANGELOG.md"; description = "GUI file synchronization client that can sync with any cloud provider"; homepage = "https://github.com/hwittenborn/celeste"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ dotlambda ]; }; } pkgs/applications/networking/sync/celeste/librclone-path.patch 0 → 100644 +31 −0 Original line number Diff line number Diff line diff --git a/librclone-sys/build.rs b/librclone-sys/build.rs index 10e45bc..7d04c08 100644 --- a/librclone-sys/build.rs +++ b/librclone-sys/build.rs @@ -16,15 +16,8 @@ fn main() { println!("cargo:rerun-if-changed=go.mod"); println!("cargo:rerun-if-changed=go.sum"); - Command::new("go") - .args(["build", "--buildmode=c-archive", "-o"]) - .arg(&format!("{}/librclone.a", out_dir)) - .arg("github.com/rclone/rclone/librclone") - .status() - .expect("`go build` failed. Is `go` installed and latest version?"); - - println!("cargo:rustc-link-search=native={}", out_dir); - println!("cargo:rustc-link-lib=static=rclone"); + println!("cargo:rustc-link-search=native={}", "@librclone@/lib"); + println!("cargo:rustc-link-lib=dylib=rclone"); if target_triple.ends_with("darwin") { println!("cargo:rustc-link-lib=framework=CoreFoundation"); @@ -32,7 +25,7 @@ fn main() { } let bindings = bindgen::Builder::default() - .header(format!("{}/librclone.h", out_dir)) + .header(format!("{}/librclone.h", "@librclone@/include")) .allowlist_function("RcloneRPC") .allowlist_function("RcloneInitialize") .allowlist_function("RcloneFinalize") pkgs/applications/networking/sync/celeste/target-dir.patch 0 → 100644 +16 −0 Original line number Diff line number Diff line diff --git a/celeste/src/launch.rs b/celeste/src/launch.rs index 5227170..e3cf189 100644 --- a/celeste/src/launch.rs +++ b/celeste/src/launch.rs @@ -172,10 +172,7 @@ impl TrayApp { perms.set_mode(0o755); file.set_permissions(perms).unwrap(); - #[cfg(debug_assertions)] - let tray_file = include_bytes!("../../target/debug/celeste-tray"); - #[cfg(not(debug_assertions))] - let tray_file = include_bytes!("../../target/release/celeste-tray"); + let tray_file = include_bytes!(concat!("../../target/@rustTarget@/", env!("cargoBuildType"), "/celeste-tray")); file.write_all(tray_file).unwrap(); drop(file); pkgs/top-level/all-packages.nix +2 −0 Original line number Diff line number Diff line Loading @@ -28895,6 +28895,8 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) Carbon; }; celeste = callPackage ../applications/networking/sync/celeste { }; cyan = callPackage ../applications/graphics/cyan {}; cyanrip = callPackage ../applications/audio/cyanrip { }; Loading
pkgs/applications/networking/sync/celeste/default.nix 0 → 100644 +114 −0 Original line number Diff line number Diff line { lib , stdenv , rust , rustPlatform , fetchFromGitHub , substituteAll , fetchpatch , pkg-config , wrapGAppsHook4 , cairo , gdk-pixbuf , glib , graphene , gtk3 , gtk4 , libadwaita , libappindicator-gtk3 , librclone , pango , rclone }: let # https://github.com/trevyn/librclone/pull/8 librclone-mismatched-types-patch = fetchpatch { name = "use-c_char-to-be-platform-independent.patch"; url = "https://github.com/trevyn/librclone/commit/91fdf3fa5f5eea0dfd06981ba72e09034974fdad.patch"; hash = "sha256-8YDyUNP/ISP5jCliT6UCxZ89fdRFud+6u6P29XdPy58="; }; in rustPlatform.buildRustPackage rec { pname = "celeste"; version = "0.4.6"; src = fetchFromGitHub { owner = "hwittenborn"; repo = "celeste"; rev = "v${version}"; hash = "sha256-VEyQlycpqsGKqtV/QvqBfVHqQhl/H6HsWPRDBtQO3qM="; }; cargoHash = "sha256-fqt0XklJJAXi2jO7eo0tIwRo2Y3oM56qYwoaelKY8iU="; patches = [ (substituteAll { src = ./target-dir.patch; rustTarget = rust.toRustTarget stdenv.hostPlatform; }) ]; postPatch = '' pushd $cargoDepsCopy/librclone-sys oldHash=$(sha256sum build.rs | cut -d " " -f 1) patch -p2 < ${./librclone-path.patch} substituteInPlace build.rs \ --subst-var-by librclone ${librclone} substituteInPlace .cargo-checksum.json \ --replace $oldHash $(sha256sum build.rs | cut -d " " -f 1) popd pushd $cargoDepsCopy/librclone oldHash=$(sha256sum src/lib.rs | cut -d " " -f 1) patch -p1 < ${librclone-mismatched-types-patch} substituteInPlace .cargo-checksum.json \ --replace $oldHash $(sha256sum src/lib.rs | cut -d " " -f 1) popd ''; # Cargo.lock is outdated preConfigure = '' cargo update --offline ''; # We need to build celeste-tray first because celeste/src/launch.rs reads that file at build time. # Upstream does the same: https://github.com/hwittenborn/celeste/blob/765dfa2/justfile#L1-L3 cargoBuildFlags = [ "--bin" "celeste-tray" ]; postConfigure = '' cargoBuildHook cargoBuildFlags= ''; RUSTC_BOOTSTRAP = 1; nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook wrapGAppsHook4 ]; buildInputs = [ cairo gdk-pixbuf glib graphene gtk3 gtk4 libadwaita librclone pango ]; preFixup = '' gappsWrapperArgs+=( --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libappindicator-gtk3 ]}" --prefix PATH : "${lib.makeBinPath [ rclone ]}" ) ''; meta = { changelog = "https://github.com/hwittenborn/celeste/blob/${src.rev}/CHANGELOG.md"; description = "GUI file synchronization client that can sync with any cloud provider"; homepage = "https://github.com/hwittenborn/celeste"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ dotlambda ]; }; }
pkgs/applications/networking/sync/celeste/librclone-path.patch 0 → 100644 +31 −0 Original line number Diff line number Diff line diff --git a/librclone-sys/build.rs b/librclone-sys/build.rs index 10e45bc..7d04c08 100644 --- a/librclone-sys/build.rs +++ b/librclone-sys/build.rs @@ -16,15 +16,8 @@ fn main() { println!("cargo:rerun-if-changed=go.mod"); println!("cargo:rerun-if-changed=go.sum"); - Command::new("go") - .args(["build", "--buildmode=c-archive", "-o"]) - .arg(&format!("{}/librclone.a", out_dir)) - .arg("github.com/rclone/rclone/librclone") - .status() - .expect("`go build` failed. Is `go` installed and latest version?"); - - println!("cargo:rustc-link-search=native={}", out_dir); - println!("cargo:rustc-link-lib=static=rclone"); + println!("cargo:rustc-link-search=native={}", "@librclone@/lib"); + println!("cargo:rustc-link-lib=dylib=rclone"); if target_triple.ends_with("darwin") { println!("cargo:rustc-link-lib=framework=CoreFoundation"); @@ -32,7 +25,7 @@ fn main() { } let bindings = bindgen::Builder::default() - .header(format!("{}/librclone.h", out_dir)) + .header(format!("{}/librclone.h", "@librclone@/include")) .allowlist_function("RcloneRPC") .allowlist_function("RcloneInitialize") .allowlist_function("RcloneFinalize")
pkgs/applications/networking/sync/celeste/target-dir.patch 0 → 100644 +16 −0 Original line number Diff line number Diff line diff --git a/celeste/src/launch.rs b/celeste/src/launch.rs index 5227170..e3cf189 100644 --- a/celeste/src/launch.rs +++ b/celeste/src/launch.rs @@ -172,10 +172,7 @@ impl TrayApp { perms.set_mode(0o755); file.set_permissions(perms).unwrap(); - #[cfg(debug_assertions)] - let tray_file = include_bytes!("../../target/debug/celeste-tray"); - #[cfg(not(debug_assertions))] - let tray_file = include_bytes!("../../target/release/celeste-tray"); + let tray_file = include_bytes!(concat!("../../target/@rustTarget@/", env!("cargoBuildType"), "/celeste-tray")); file.write_all(tray_file).unwrap(); drop(file);
pkgs/top-level/all-packages.nix +2 −0 Original line number Diff line number Diff line Loading @@ -28895,6 +28895,8 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) Carbon; }; celeste = callPackage ../applications/networking/sync/celeste { }; cyan = callPackage ../applications/graphics/cyan {}; cyanrip = callPackage ../applications/audio/cyanrip { };