nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 runCommand,
3 libxslt,
4 dbus,
5 findXMLCatalogs,
6 serviceDirectories ? [ ],
7 suidHelper ? "/var/setuid-wrappers/dbus-daemon-launch-helper",
8 apparmor ? "disabled", # one of enabled, disabled, required
9}:
10
11/*
12 DBus has two configuration parsers -- normal and "trivial", which is used
13 for suid helper. Unfortunately the latter doesn't support <include>
14 directive. That means that we can't just place our configuration to
15 *-local.conf -- it needs to be in the main configuration file.
16*/
17runCommand "dbus-1"
18 {
19 inherit serviceDirectories suidHelper apparmor;
20 preferLocalBuild = true;
21 allowSubstitutes = false;
22
23 nativeBuildInputs = [
24 libxslt.bin
25 findXMLCatalogs
26 ];
27
28 buildInputs = [
29 dbus.out
30 ];
31 }
32 ''
33 mkdir -p $out
34
35 xsltproc --nonet \
36 --stringparam serviceDirectories "$serviceDirectories" \
37 --stringparam suidHelper "$suidHelper" \
38 --stringparam apparmor "$apparmor" \
39 ${./make-system-conf.xsl} ${dbus}/share/dbus-1/system.conf \
40 > $out/system.conf
41 xsltproc --nonet \
42 --stringparam serviceDirectories "$serviceDirectories" \
43 --stringparam apparmor "$apparmor" \
44 ${./make-session-conf.xsl} ${dbus}/share/dbus-1/session.conf \
45 > $out/session.conf
46
47 # check if files are empty or only contain space characters
48 grep -q '[^[:space:]]' "$out/system.conf" || (echo "\"$out/system.conf\" was generated incorrectly and is empty, try building again." && exit 1)
49 grep -q '[^[:space:]]' "$out/session.conf" || (echo "\"$out/session.conf\" was generated incorrectly and is empty, try building again." && exit 1)
50 ''