tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
dbus: Enable AppArmor mediation support
Janne Heß
5 years ago
060d20de
e949d758
+20
-5
5 changed files
expand all
collapse all
unified
split
pkgs
development
libraries
dbus
default.nix
make-dbus-conf.nix
make-session-conf.xsl
make-system-conf.xsl
top-level
all-packages.nix
+6
-2
pkgs/development/libraries/dbus/default.nix
···
5
, expat
6
, enableSystemd ? stdenv.isLinux && !stdenv.hostPlatform.isMusl
7
, systemd
0
0
8
, libX11 ? null
9
, libICE ? null
10
, libSM ? null
···
70
libX11
71
libICE
72
libSM
73
-
] ++ lib.optional enableSystemd systemd;
0
74
# ToDo: optional selinux?
75
76
configureFlags = [
···
86
"--with-system-socket=/run/dbus/system_bus_socket"
87
"--with-systemdsystemunitdir=${placeholder ''out''}/etc/systemd/system"
88
"--with-systemduserunitdir=${placeholder ''out''}/etc/systemd/user"
89
-
] ++ lib.optional (!x11Support) "--without-x";
0
90
91
# Enable X11 autolaunch support in libdbus. This doesn't actually depend on X11
92
# (it just execs dbus-launch in dbus.tools), contrary to what the configure script demands.
···
5
, expat
6
, enableSystemd ? stdenv.isLinux && !stdenv.hostPlatform.isMusl
7
, systemd
8
+
, audit
9
+
, libapparmor
10
, libX11 ? null
11
, libICE ? null
12
, libSM ? null
···
72
libX11
73
libICE
74
libSM
75
+
] ++ lib.optional enableSystemd systemd
76
+
++ lib.optionals (!stdenv.isDarwin) [ audit libapparmor ];
77
# ToDo: optional selinux?
78
79
configureFlags = [
···
89
"--with-system-socket=/run/dbus/system_bus_socket"
90
"--with-systemdsystemunitdir=${placeholder ''out''}/etc/systemd/system"
91
"--with-systemduserunitdir=${placeholder ''out''}/etc/systemd/user"
92
+
] ++ lib.optional (!x11Support) "--without-x"
93
+
++ lib.optionals (!stdenv.isDarwin) [ "--enable-apparmor" "--enable-libaudit" ];
94
95
# Enable X11 autolaunch support in libdbus. This doesn't actually depend on X11
96
# (it just execs dbus-launch in dbus.tools), contrary to what the configure script demands.
+4
-1
pkgs/development/libraries/dbus/make-dbus-conf.nix
···
1
{ runCommand, writeText, libxslt, dbus
2
, serviceDirectories ? []
3
, suidHelper ? "/var/setuid-wrappers/dbus-daemon-launch-helper"
0
4
}:
5
6
/* DBus has two configuration parsers -- normal and "trivial", which is used
···
10
*/
11
runCommand "dbus-1"
12
{
13
-
inherit serviceDirectories suidHelper;
14
preferLocalBuild = true;
15
allowSubstitutes = false;
16
XML_CATALOG_FILES = writeText "dbus-catalog.xml" ''
···
33
xsltproc --nonet \
34
--stringparam serviceDirectories "$serviceDirectories" \
35
--stringparam suidHelper "$suidHelper" \
0
36
${./make-system-conf.xsl} ${dbus}/share/dbus-1/system.conf \
37
> $out/system.conf
38
xsltproc --nonet \
39
--stringparam serviceDirectories "$serviceDirectories" \
0
40
${./make-session-conf.xsl} ${dbus}/share/dbus-1/session.conf \
41
> $out/session.conf
42
''
···
1
{ runCommand, writeText, libxslt, dbus
2
, serviceDirectories ? []
3
, suidHelper ? "/var/setuid-wrappers/dbus-daemon-launch-helper"
4
+
, apparmor ? "disabled" # one of enabled, disabled, required
5
}:
6
7
/* DBus has two configuration parsers -- normal and "trivial", which is used
···
11
*/
12
runCommand "dbus-1"
13
{
14
+
inherit serviceDirectories suidHelper apparmor;
15
preferLocalBuild = true;
16
allowSubstitutes = false;
17
XML_CATALOG_FILES = writeText "dbus-catalog.xml" ''
···
34
xsltproc --nonet \
35
--stringparam serviceDirectories "$serviceDirectories" \
36
--stringparam suidHelper "$suidHelper" \
37
+
--stringparam apparmor "$apparmor" \
38
${./make-system-conf.xsl} ${dbus}/share/dbus-1/system.conf \
39
> $out/system.conf
40
xsltproc --nonet \
41
--stringparam serviceDirectories "$serviceDirectories" \
42
+
--stringparam apparmor "$apparmor" \
43
${./make-session-conf.xsl} ${dbus}/share/dbus-1/session.conf \
44
> $out/session.conf
45
''
+4
pkgs/development/libraries/dbus/make-session-conf.xsl
···
15
<xsl:output method='xml' encoding="UTF-8" doctype-system="busconfig.dtd" />
16
17
<xsl:param name="serviceDirectories" />
0
18
19
<xsl:template match="/busconfig">
20
<busconfig>
21
<!-- We leave <standard_session_servicedirs/> because it includes XDG dirs and therefore user Nix profile. -->
22
<xsl:copy-of select="child::node()[name() != 'include' and name() != 'servicedir' and name() != 'includedir']" />
0
0
0
23
24
<xsl:for-each select="str:tokenize($serviceDirectories)">
25
<servicedir><xsl:value-of select="." />/share/dbus-1/services</servicedir>
···
15
<xsl:output method='xml' encoding="UTF-8" doctype-system="busconfig.dtd" />
16
17
<xsl:param name="serviceDirectories" />
18
+
<xsl:param name="apparmor" />
19
20
<xsl:template match="/busconfig">
21
<busconfig>
22
<!-- We leave <standard_session_servicedirs/> because it includes XDG dirs and therefore user Nix profile. -->
23
<xsl:copy-of select="child::node()[name() != 'include' and name() != 'servicedir' and name() != 'includedir']" />
24
+
25
+
<!-- configure AppArmor -->
26
+
<apparmor mode="{$apparmor}"/>
27
28
<xsl:for-each select="str:tokenize($serviceDirectories)">
29
<servicedir><xsl:value-of select="." />/share/dbus-1/services</servicedir>
+4
pkgs/development/libraries/dbus/make-system-conf.xsl
···
16
17
<xsl:param name="serviceDirectories" />
18
<xsl:param name="suidHelper" />
0
19
20
<xsl:template match="/busconfig">
21
<busconfig>
22
<xsl:copy-of select="child::node()[name() != 'include' and name() != 'standard_system_servicedirs' and name() != 'servicehelper' and name() != 'servicedir' and name() != 'includedir']" />
0
0
0
23
24
<!-- set suid helper -->
25
<servicehelper><xsl:value-of select="$suidHelper" /></servicehelper>
···
16
17
<xsl:param name="serviceDirectories" />
18
<xsl:param name="suidHelper" />
19
+
<xsl:param name="apparmor" />
20
21
<xsl:template match="/busconfig">
22
<busconfig>
23
<xsl:copy-of select="child::node()[name() != 'include' and name() != 'standard_system_servicedirs' and name() != 'servicehelper' and name() != 'servicedir' and name() != 'includedir']" />
24
+
25
+
<!-- configure AppArmor -->
26
+
<apparmor mode="{$apparmor}"/>
27
28
<!-- set suid helper -->
29
<servicehelper><xsl:value-of select="$suidHelper" /></servicehelper>
+2
-2
pkgs/top-level/all-packages.nix
···
12471
dbus-sharp-glib-1_0 = callPackage ../development/libraries/dbus-sharp-glib/dbus-sharp-glib-1.0.nix { };
12472
dbus-sharp-glib-2_0 = callPackage ../development/libraries/dbus-sharp-glib { };
12473
12474
-
makeDBusConf = { suidHelper, serviceDirectories }:
12475
callPackage ../development/libraries/dbus/make-dbus-conf.nix {
12476
-
inherit suidHelper serviceDirectories;
12477
};
12478
12479
dee = callPackage ../development/libraries/dee { };
···
12471
dbus-sharp-glib-1_0 = callPackage ../development/libraries/dbus-sharp-glib/dbus-sharp-glib-1.0.nix { };
12472
dbus-sharp-glib-2_0 = callPackage ../development/libraries/dbus-sharp-glib { };
12473
12474
+
makeDBusConf = { suidHelper, serviceDirectories, apparmor }:
12475
callPackage ../development/libraries/dbus/make-dbus-conf.nix {
12476
+
inherit suidHelper serviceDirectories apparmor;
12477
};
12478
12479
dee = callPackage ../development/libraries/dee { };