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 0e5b85fd42
Signed by: cat
SSH Key Fingerprint: SHA256:gQ67O0enBZ7UdZypgtspB2FDM1g3GVw8nX0XSdcFw8Q
1 changed files with 38 additions and 1 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 = { capability = {
wayland = mkOption { wayland = mkOption {
type = bool; type = bool;
@ -82,7 +111,7 @@ in
dbus = mkOption { dbus = mkOption {
type = bool; type = bool;
default = false; default = true;
description = '' description = ''
Whether to proxy D-Bus. Whether to proxy D-Bus.
''; '';
@ -193,11 +222,19 @@ in
with launcher.capability; with launcher.capability;
let let
command = if launcher.command == null then name else launcher.command; command = if launcher.command == null then name else launcher.command;
dbusConfig =
if launcher.dbus.config != null then
pkgs.writeText "${name}-dbus.json" (builtins.toJSON launcher.dbus.config)
else
null;
capArgs = capArgs =
(if wayland then " -wayland" else "") (if wayland then " -wayland" else "")
+ (if x11 then " -X" else "") + (if x11 then " -X" else "")
+ (if dbus then " -dbus" else "") + (if dbus then " -dbus" else "")
+ (if pulse then " -pulse" else "") + (if pulse then " -pulse" else "")
+ (if launcher.dbus.mpris then " -mpris" else "")
+ (if launcher.dbus.id != null then " -dbus-id ${dbus.id}" else "")
+ (if dbusConfig != null then " -dbus-config ${dbusConfig}" else "")
+ (if launcher.method == "fortify-sudo" then " -sudo" else ""); + (if launcher.method == "fortify-sudo" then " -sudo" else "");
in in
pkgs.writeShellScriptBin name ( pkgs.writeShellScriptBin name (