@ -8,7 +8,7 @@ let
cfg = config . services . dbus ;
homeDir = " / v a r / ru n / d b u s " ;
homeDir = " / r u n / d b u s " ;
systemExtraxml = concatStrings ( flip concatMap cfg . packages ( d : [
" < s e r v i c e d i r > ${ d } / s h a r e / d b u s - 1 / s y s t e m - s e r v i c e s < / s e r v i c e d i r > "
@ -20,6 +20,8 @@ let
" < i n c l u d e d i r > ${ d } / e t c / d b u s - 1 / s e s s i o n . d < / i n c l u d e d i r > "
] ) ) ;
daemonArgs = " - - a d d r e s s = s y s t e m d : - - n o f o r k - - n o p i d f i l e - - s y s t e m d - a c t i v a t i o n " ;
configDir = pkgs . runCommand " d b u s - c o n f "
{ preferLocalBuild = true ;
allowSubstitutes = false ;
@ -27,6 +29,14 @@ let
''
mkdir - p $ out
cp $ { pkgs . dbus . out } /share/dbus-1 / { system , session } . conf $ out
# avoid circular includes
sed - ri ' s @ ( < include ignore_missing = " y e s " > /etc/dbus-1 / ( system | session ) \ . conf < /include > ) @ < ! - - \ 1 - -> @ g' $ out / { system , session } . conf
# include by full path
sed - ri " s @ / e t c / d b u s - 1 / ( s y s t e m | s e s s i o n ) - @ $ o u t / \1 - @ " $ out / { system , session } . conf
sed ' $ { ./dbus-system-local.conf.in } ' \
- e ' s , @ servicehelper @ , $ { config . security . wrapperDir } /dbus-daemon-launch-helper , g' \
- e ' s , @ extra @ , $ { systemExtraxml } , ' \
@ -72,11 +82,16 @@ in
'' ;
} ;
socketActivated = mkOption {
type = types . bool ;
default = false ;
description = ''
Make the user instance socket activated .
'' ;
} ;
} ;
} ;
###### implementation
config = mkIf cfg . enable {
@ -114,13 +129,29 @@ in
config . system . path
] ;
# Don't restart dbus-daemon. Bad things tend to happen if we do.
systemd . services . dbus . reloadIfChanged = true ;
systemd . services . dbus = {
# Don't restart dbus-daemon. Bad things tend to happen if we do.
reloadIfChanged = true ;
restartTriggers = [ configDir ] ;
serviceConfig . ExecStart = [
" "
" ${ lib . getBin pkgs . dbus } / b i n / d b u s - d a e m o n - - c o n f i g - f i l e = ${ configDir } / s y s t e m . c o n f ${ daemonArgs } "
] ;
} ;
systemd . services . dbus . restartTriggers = [ configDir ] ;
systemd . user = {
services . dbus = {
# Don't restart dbus-daemon. Bad things tend to happen if we do.
reloadIfChanged = true ;
restartTriggers = [ configDir ] ;
serviceConfig . ExecStart = [
" "
" ${ lib . getBin pkgs . dbus } / b i n / d b u s - d a e m o n - - c o n f i g - f i l e = ${ configDir } / s e s s i o n . c o n f ${ daemonArgs } "
] ;
} ;
sockets . dbus . wantedBy = mkIf cfg . socketActivated [ " s o c k e t s . t a r g e t " ] ;
} ;
environment . pathsToLink = [ " / e t c / d b u s - 1 " " / s h a r e / d b u s - 1 " ] ;
} ;
}