celeste: init at 0.4.6
This commit is contained in:
parent
6d9f07d8fe
commit
ea0070a518
114
pkgs/applications/networking/sync/celeste/default.nix
Normal file
114
pkgs/applications/networking/sync/celeste/default.nix
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
{ 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 ];
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
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")
|
16
pkgs/applications/networking/sync/celeste/target-dir.patch
Normal file
16
pkgs/applications/networking/sync/celeste/target-dir.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
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);
|
@ -28895,6 +28895,8 @@ with pkgs;
|
|||||||
inherit (darwin.apple_sdk.frameworks) Carbon;
|
inherit (darwin.apple_sdk.frameworks) Carbon;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
celeste = callPackage ../applications/networking/sync/celeste { };
|
||||||
|
|
||||||
cyan = callPackage ../applications/graphics/cyan {};
|
cyan = callPackage ../applications/graphics/cyan {};
|
||||||
|
|
||||||
cyanrip = callPackage ../applications/audio/cyanrip { };
|
cyanrip = callPackage ../applications/audio/cyanrip { };
|
||||||
|
Loading…
Reference in New Issue
Block a user