From 3a46f032ca951b4a9e106b5f3aa204ca1b01ebd3 Mon Sep 17 00:00:00 2001 From: Ophestra Umiker Date: Mon, 9 Sep 2024 04:37:42 +0900 Subject: [PATCH] nix: implement new dbus options in nixos module Signed-off-by: Ophestra Umiker --- nixos.nix | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/nixos.nix b/nixos.nix index fb48011..2ef2e58 100644 --- a/nixos.nix +++ b/nixos.nix @@ -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} $@ ''