|
6 | 6 |
|
7 | 7 | cfg = config.services.dbus; |
8 | 8 |
|
9 | | - homeDir = "/run/dbus"; |
10 | | - |
11 | | - configDir = pkgs.makeDBusConf { |
| 9 | + configDir = pkgs.makeDBusConf.override { |
12 | 10 | inherit (cfg) apparmor; |
| 11 | + dbus = cfg.dbusPackage; |
13 | 12 | suidHelper = "${config.security.wrapperDir}/dbus-daemon-launch-helper"; |
14 | 13 | serviceDirectories = cfg.packages; |
15 | 14 | }; |
|
37 | 36 | ''; |
38 | 37 | }; |
39 | 38 |
|
| 39 | + dbusPackage = lib.mkPackageOption pkgs "dbus" {}; |
| 40 | + |
| 41 | + brokerPackage = lib.mkPackageOption pkgs "dbus-broker" {}; |
| 42 | + |
40 | 43 | implementation = mkOption { |
41 | 44 | type = types.enum [ "dbus" "broker" ]; |
42 | 45 | default = "dbus"; |
|
46 | 49 | performance and reliability, while keeping compatibility to the D-Bus |
47 | 50 | reference implementation. |
48 | 51 | ''; |
49 | | - |
50 | 52 | }; |
51 | 53 |
|
52 | 54 | packages = mkOption { |
|
94 | 96 | users.users.messagebus = { |
95 | 97 | uid = config.ids.uids.messagebus; |
96 | 98 | description = "D-Bus system message bus daemon user"; |
97 | | - home = homeDir; |
| 99 | + home = "/run/dbus"; |
98 | 100 | homeMode = "0755"; |
99 | 101 | group = "messagebus"; |
100 | 102 | }; |
|
103 | 105 |
|
104 | 106 | # Install dbus for dbus tools even when using dbus-broker |
105 | 107 | environment.systemPackages = [ |
106 | | - pkgs.dbus |
| 108 | + cfg.dbusPackage |
107 | 109 | ]; |
108 | 110 |
|
109 | 111 | # You still need the dbus reference implementation installed to use dbus-broker |
110 | 112 | systemd.packages = [ |
111 | | - pkgs.dbus |
| 113 | + cfg.dbusPackage |
112 | 114 | ]; |
113 | 115 |
|
114 | 116 | services.dbus.packages = [ |
115 | | - pkgs.dbus |
| 117 | + cfg.dbusPackage |
116 | 118 | config.system.path |
117 | 119 | ]; |
118 | 120 |
|
|
125 | 127 | boot.initrd.systemd = { |
126 | 128 | users.messagebus = { }; |
127 | 129 | groups.messagebus = { }; |
128 | | - contents."/etc/dbus-1".source = pkgs.makeDBusConf { |
| 130 | + contents."/etc/dbus-1".source = pkgs.makeDBusConf.override { |
129 | 131 | inherit (cfg) apparmor; |
| 132 | + dbus = cfg.dbusPackage; |
130 | 133 | suidHelper = "/bin/false"; |
131 | | - serviceDirectories = [ pkgs.dbus config.boot.initrd.systemd.package ]; |
| 134 | + serviceDirectories = [ cfg.dbusPackage config.boot.initrd.systemd.package ]; |
132 | 135 | }; |
133 | | - packages = [ pkgs.dbus ]; |
| 136 | + packages = [ cfg.dbusPackage ]; |
134 | 137 | storePaths = [ |
135 | | - "${pkgs.dbus}/bin/dbus-daemon" |
| 138 | + "${cfg.dbusPackage}/bin/dbus-daemon" |
136 | 139 | "${config.boot.initrd.systemd.package}/share/dbus-1/system-services" |
137 | 140 | "${config.boot.initrd.systemd.package}/share/dbus-1/system.d" |
138 | 141 | ]; |
|
142 | 145 |
|
143 | 146 | (mkIf (cfg.implementation == "dbus") { |
144 | 147 | security.wrappers.dbus-daemon-launch-helper = { |
145 | | - source = "${pkgs.dbus}/libexec/dbus-daemon-launch-helper"; |
| 148 | + source = "${cfg.dbusPackage}/libexec/dbus-daemon-launch-helper"; |
146 | 149 | owner = "root"; |
147 | 150 | group = "messagebus"; |
148 | 151 | setuid = true; |
|
181 | 184 |
|
182 | 185 | (mkIf (cfg.implementation == "broker") { |
183 | 186 | environment.systemPackages = [ |
184 | | - pkgs.dbus-broker |
| 187 | + cfg.brokerPackage |
185 | 188 | ]; |
186 | 189 |
|
187 | 190 | systemd.packages = [ |
188 | | - pkgs.dbus-broker |
| 191 | + cfg.brokerPackage |
189 | 192 | ]; |
190 | 193 |
|
191 | 194 | # Just to be sure we don't restart through the unit alias |
|
0 commit comments