nix: implement new dbus options in nixos module

Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
This commit is contained in:
Ophestra Umiker 2024-09-09 04:37:42 +09:00
parent cdc08817a7
commit 3a46f032ca
Signed by: cat
SSH Key Fingerprint: SHA256:gQ67O0enBZ7UdZypgtspB2FDM1g3GVw8nX0XSdcFw8Q
1 changed files with 37 additions and 3 deletions

View File

@ -63,6 +63,35 @@ in
'';
};
dbus = {
config = mkOption {
type = nullOr anything;
default = null;
description = ''
D-Bus custom configuration.
Setting this to null will enable built-in defaults.
'';
};
id = mkOption {
type = nullOr str;
default = null;
description = ''
D-Bus application id.
Setting this to null will disable own path in defaults.
Has no effect if custom configuration is set.
'';
};
mpris = mkOption {
type = bool;
default = false;
description = ''
Whether to enable MPRIS in D-Bus defaults.
'';
};
};
capability = {
wayland = mkOption {
type = bool;
@ -82,7 +111,7 @@ in
dbus = mkOption {
type = bool;
default = false;
default = true;
description = ''
Whether to proxy D-Bus.
'';
@ -193,15 +222,20 @@ in
with launcher.capability;
let
command = if launcher.command == null then name else launcher.command;
dbusConfig = pkgs.writeText "${name}-dbus.json" (builtins.toJSON dbus.config);
inherit (launcher) dbus method;
capArgs =
(if wayland then " -wayland" else "")
+ (if x11 then " -X" else "")
+ (if dbus then " -dbus" else "")
+ (if pulse then " -pulse" else "")
+ (if launcher.method == "fortify-sudo" then " -sudo" else "");
+ (if dbus.mpris then " -mpris" else "")
+ (if dbus.id != null then " -dbus-id ${dbus.id}" else "")
+ (if dbus.config != null then " -dbus-config ${dbusConfig}" else "")
+ (if method == "fortify-sudo" then " -sudo" else "");
in
pkgs.writeShellScriptBin name (
if launcher.method == "sudo" then
if method == "sudo" then
''
exec sudo -u ${user} -i ${command} $@
''