1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
{ lib
, stdenv
, acl
, e2fsprogs
, libb2
, lz4
, openssh
, openssl
, python3Packages
, xxHash
, zstd
, installShellFiles
, nixosTests
, fetchPypi
}:
let
python = python3Packages.python.override {
packageOverrides = self: super: {
msgpack = super.msgpack.overrideAttrs (oldAttrs: rec {
version ="1.0.4";
src = fetchPypi {
pname = "msgpack";
inherit version;
hash = "sha256-9dhpwY8DAgLrQS8Iso0q/upVPWYTruieIA16yn7wH18=";
};
});
};
};
in
python.pkgs.buildPythonApplication rec {
pname = "borgbackup";
version = "1.2.7";
format = "pyproject";
src = fetchPypi {
inherit pname version;
hash = "sha256-9j8oozg8BBlxzsh7BhyjmoFbX9RF2ySqgXLKxBfZQRo=";
};
postPatch = ''
# sandbox does not support setuid/setgid/sticky bits
substituteInPlace src/borg/testsuite/archiver.py \
--replace "0o4755" "0o0755"
'';
nativeBuildInputs = with python.pkgs; [
cython
setuptools-scm
pkgconfig
# docs
sphinxHook
guzzle-sphinx-theme
# shell completions
installShellFiles
];
sphinxBuilders = [ "singlehtml" "man" ];
buildInputs = [
libb2
lz4
xxHash
zstd
openssl
] ++ lib.optionals stdenv.isLinux [
acl
];
propagatedBuildInputs = with python.pkgs; [
msgpack
packaging
(if stdenv.isLinux then pyfuse3 else llfuse)
];
makeWrapperArgs = [
''--prefix PATH ':' "${openssh}/bin"''
];
postInstall = ''
installShellCompletion --cmd borg \
--bash scripts/shell_completions/bash/borg \
--fish scripts/shell_completions/fish/borg.fish \
--zsh scripts/shell_completions/zsh/_borg
'';
nativeCheckInputs = with python.pkgs; [
e2fsprogs
py
python-dateutil
pytest-benchmark
pytest-xdist
pytestCheckHook
];
pytestFlagsArray = [
"--benchmark-skip"
"--pyargs" "borg.testsuite"
];
disabledTests = [
# fuse: device not found, try 'modprobe fuse' first
"test_fuse"
"test_fuse_allow_damaged_files"
"test_fuse_mount_hardlinks"
"test_fuse_mount_options"
"test_fuse_versions_view"
"test_migrate_lock_alive"
"test_readonly_mount"
# Error: Permission denied while trying to write to /var/{,tmp}
"test_get_cache_dir"
"test_get_keys_dir"
"test_get_security_dir"
"test_get_config_dir"
# https://github.com/borgbackup/borg/issues/6573
"test_basic_functionality"
];
preCheck = ''
export HOME=$TEMP
'';
passthru.tests = {
inherit (nixosTests) borgbackup;
};
outputs = [ "out" "doc" "man" ];
meta = with lib; {
changelog = "https://github.com/borgbackup/borg/blob/${version}/docs/changes.rst";
description = "Deduplicating archiver with compression and encryption";
homepage = "https://www.borgbackup.org";
license = licenses.bsd3;
platforms = platforms.unix; # Darwin and FreeBSD mentioned on homepage
mainProgram = "borg";
maintainers = with maintainers; [ dotlambda globin ];
};
}
|