1{
2 lib,
3 stdenv,
4 fetchFromGitLab,
5 rustPlatform,
6 replaceVars,
7 cargo,
8 desktop-file-utils,
9 git,
10 itstool,
11 meson,
12 ninja,
13 pkg-config,
14 python3,
15 rustc,
16 wrapGAppsHook4,
17 borgbackup,
18 gtk4,
19 libadwaita,
20 libsecret,
21 nix-update-script,
22}:
23
24stdenv.mkDerivation rec {
25 pname = "pika-backup";
26 version = "0.7.4";
27
28 src = fetchFromGitLab {
29 domain = "gitlab.gnome.org";
30 owner = "World";
31 repo = "pika-backup";
32 rev = "v${version}";
33 hash = "sha256-DtLGD7+Ydj2fvEHU+bDQDMC/E/9VgrlVNMCG6OlPmfg=";
34 };
35
36 cargoDeps = rustPlatform.fetchCargoVendor {
37 inherit pname version src;
38 hash = "sha256-1JFXSVs9HPPzh+IjH4RGugrZEifPVcQho9B3hLSTL6s=";
39 };
40
41 patches = [
42 (replaceVars ./borg-path.patch {
43 borg = lib.getExe borgbackup;
44 })
45 ];
46
47 postPatch = ''
48 patchShebangs build-aux
49 '';
50
51 nativeBuildInputs = [
52 desktop-file-utils
53 git
54 itstool
55 meson
56 ninja
57 pkg-config
58 python3
59 wrapGAppsHook4
60 rustPlatform.cargoSetupHook
61 cargo
62 rustc
63 ];
64
65 buildInputs = [
66 gtk4
67 libadwaita
68 libsecret
69 ];
70
71 passthru = {
72 updateScript = nix-update-script { };
73 };
74
75 meta = {
76 description = "Simple backups based on borg";
77 homepage = "https://apps.gnome.org/app/org.gnome.World.PikaBackup";
78 changelog = "https://gitlab.gnome.org/World/pika-backup/-/blob/v${version}/CHANGELOG.md";
79 license = lib.licenses.gpl3Plus;
80 maintainers = with lib.maintainers; [ dotlambda ];
81 teams = [ lib.teams.gnome-circle ];
82 platforms = lib.platforms.linux;
83 };
84}