about summary refs log tree commit diff
path: root/pkgs/kde/gear/kpmcore/default.nix
blob: 9dfa4f3d6813bac5f6d8534cdb76e7b590ed8666 (plain) (blame)
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];
  }