Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / networking / sync / celeste / default.nix
blob7386c32c279c47321e7e7a437014152888ae03e4
1 { lib
2 , stdenv
3 , rustPlatform
4 , fetchFromGitHub
5 , substituteAll
6 , just
7 , pkg-config
8 , wrapGAppsHook4
9 , cairo
10 , dbus
11 , gdk-pixbuf
12 , glib
13 , graphene
14 , gtk4
15 , libadwaita
16 , librclone
17 , pango
18 , rclone
21 rustPlatform.buildRustPackage rec {
22   pname = "celeste";
23   version = "0.8.0";
25   src = fetchFromGitHub {
26     owner = "hwittenborn";
27     repo = "celeste";
28     rev = "v${version}";
29     hash = "sha256-U+2imF4hUDJAwwf/RFZXfOgTxA+O8c6C+CzQoEQreJw=";
30   };
32   cargoHash = "sha256-9DrJoXT/uD8y7y2r58DMuURSaic+TtlnPPbw/gq9jPA=";
34   postPatch = ''
35     pushd $cargoDepsCopy/librclone-sys
36     oldHash=$(sha256sum build.rs | cut -d " " -f 1)
37     patch -p2 < ${./librclone-path.patch}
38     substituteInPlace build.rs \
39       --subst-var-by librclone ${librclone}
40     substituteInPlace .cargo-checksum.json \
41       --replace $oldHash $(sha256sum build.rs | cut -d " " -f 1)
42     popd
44     substituteInPlace justfile \
45       --replace "{{ env_var('DESTDIR') }}/usr" "${placeholder "out"}"
46     # buildRustPackage takes care of installing the binary
47     sed -i "#/bin/celeste#d" justfile
48   '';
50   # Cargo.lock is outdated
51   preConfigure = ''
52     cargo update --offline
53   '';
55   RUSTC_BOOTSTRAP = 1;
57   nativeBuildInputs = [
58     just
59     pkg-config
60     rustPlatform.bindgenHook
61     wrapGAppsHook4
62   ];
64   buildInputs = [
65     cairo
66     dbus
67     gdk-pixbuf
68     glib
69     graphene
70     gtk4
71     libadwaita
72     librclone
73     pango
74   ];
76   preFixup = ''
77     gappsWrapperArgs+=(
78       --prefix PATH : "${lib.makeBinPath [ rclone ]}"
79     )
80   '';
82   postInstall = ''
83     just install
84   '';
86   meta = {
87     changelog = "https://github.com/hwittenborn/celeste/blob/${src.rev}/CHANGELOG.md";
88     description = "GUI file synchronization client that can sync with any cloud provider";
89     homepage = "https://github.com/hwittenborn/celeste";
90     license = lib.licenses.gpl3Only;
91     maintainers = with lib.maintainers; [ dotlambda ];
92   };