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
|
{
lib,
mkKdeDerivation,
writeText,
pkg-config,
cryptsetup,
lvm2,
mdadm,
smartmontools,
systemdMinimal,
util-linux,
btrfs-progs,
dosfstools,
e2fsprogs,
exfatprogs,
f2fs-tools,
fatresize,
hfsprogs,
jfsutils,
nilfs-utils,
ntfs3g,
reiser4progs,
reiserfsprogs,
udftools,
xfsprogs,
zfs,
}: let
# https://github.com/KDE/kpmcore/blob/06f15334ecfbe871730a90dbe2b694ba060ee998/src/util/externalcommand_whitelist.h
runtimeDeps = [
cryptsetup
lvm2
mdadm
smartmontools
systemdMinimal
util-linux
btrfs-progs
dosfstools
e2fsprogs
exfatprogs
f2fs-tools
fatresize
hfsprogs
jfsutils
nilfs-utils
ntfs3g
reiser4progs
reiserfsprogs
udftools
xfsprogs
zfs
# FIXME: Missing command: hfsck hformat fsck.nilfs2 {fsck,mkfs,debugfs,tunefs}.ocfs2
# FIXME: audit to see if these are all still required
];
trustedprefixes = writeText "kpmcore-trustedprefixes" (lib.concatStringsSep "\n" (map lib.getBin runtimeDeps));
in
mkKdeDerivation {
pname = "kpmcore";
postPatch = ''
cp ${trustedprefixes} src/util/trustedprefixes
'';
preConfigure = ''
substituteInPlace src/util/CMakeLists.txt \
--replace \$\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\} $out/share/polkit-1/actions
substituteInPlace src/backend/corebackend.cpp \
--replace /usr/share/polkit-1/actions/org.kde.kpmcore.externalcommand.policy $out/share/polkit-1/actions/org.kde.kpmcore.externalcommand.policy
'';
extraNativeBuildInputs = [pkg-config];
}
|