From 3e23ec44503df219b8a705357eafd1f3960f34d9 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Thu, 16 Feb 2017 14:55:38 +0300 Subject: [PATCH] makeDBusConf: init Use XSLT transform to modify stock dbus configuration file. This is needed because some dbus components doesn't support so we need to put our core configuration in the main file. --- .../libraries/dbus/make-dbus-conf.nix | 27 +++++++++++++++ .../libraries/dbus/make-session-conf.xsl | 30 ++++++++++++++++ .../libraries/dbus/make-system-conf.xsl | 34 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +++ 4 files changed, 96 insertions(+) create mode 100644 pkgs/development/libraries/dbus/make-dbus-conf.nix create mode 100644 pkgs/development/libraries/dbus/make-session-conf.xsl create mode 100644 pkgs/development/libraries/dbus/make-system-conf.xsl diff --git a/pkgs/development/libraries/dbus/make-dbus-conf.nix b/pkgs/development/libraries/dbus/make-dbus-conf.nix new file mode 100644 index 000000000000..7e35a9162c8d --- /dev/null +++ b/pkgs/development/libraries/dbus/make-dbus-conf.nix @@ -0,0 +1,27 @@ +{ runCommand, libxslt, dbus, serviceDirectories ? [], suidHelper ? "/var/setuid-wrappers/dbus-daemon-launch-helper" }: + +/* DBus has two configuration parsers -- normal and "trivial", which is used + * for suid helper. Unfortunately the latter doesn't support + * directive. That means that we can't just place our configuration to + * *-local.conf -- it needs to be in the main configuration file. + */ +runCommand "dbus-1" + { + buildInputs = [ libxslt ]; + inherit serviceDirectories suidHelper; + } + '' + mkdir -p $out + + xsltproc \ + --stringparam serviceDirectories "$serviceDirectories" \ + --stringparam suidHelper "$suidHelper" \ + --path ${dbus.doc}/share/xml/dbus \ + ${./make-system-conf.xsl} ${dbus}/share/dbus-1/system.conf \ + > $out/system.conf + xsltproc \ + --stringparam serviceDirectories "$serviceDirectories" \ + --path ${dbus.doc}/share/xml/dbus \ + ${./make-session-conf.xsl} ${dbus}/share/dbus-1/session.conf \ + > $out/session.conf + '' diff --git a/pkgs/development/libraries/dbus/make-session-conf.xsl b/pkgs/development/libraries/dbus/make-session-conf.xsl new file mode 100644 index 000000000000..bc73369af944 --- /dev/null +++ b/pkgs/development/libraries/dbus/make-session-conf.xsl @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + /share/dbus-1/services + /etc/dbus-1/session.d + + + + + diff --git a/pkgs/development/libraries/dbus/make-system-conf.xsl b/pkgs/development/libraries/dbus/make-system-conf.xsl new file mode 100644 index 000000000000..3d8b823437d6 --- /dev/null +++ b/pkgs/development/libraries/dbus/make-system-conf.xsl @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + /share/dbus-1/system-services + /etc/dbus-1/system.d + + + + + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3ba672c477d7..0dadf9b99ffc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7094,6 +7094,11 @@ with pkgs; dbus_libs = dbus; dbus_daemon = dbus.daemon; + makeDBusConf = { suidHelper, serviceDirectories }: + callPackage ../development/libraries/dbus/make-dbus-conf.nix { + inherit suidHelper serviceDirectories; + }; + dee = callPackage ../development/libraries/dee { }; dhex = callPackage ../applications/editors/dhex { };