2.home-manager/modules/services/blueman-applet.nix
Vladislav Grechannik 282b4c98de
blueman-applet: Add option to change systemd targets (#7702)
Introduce new option for a customizable systemd targets to allow enabling
the applet only in certain environments.
2025-08-21 00:48:42 -05:00

65 lines
1.6 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.blueman-applet;
in
{
options = {
services.blueman-applet = {
enable = lib.mkEnableOption "" // {
description = ''
Whether to enable the Blueman applet.
Note that for the applet to work, the `blueman` service should
be enabled system-wide. You can enable it in the system
configuration using
```nix
services.blueman.enable = true;
```
'';
};
package = lib.mkPackageOption pkgs "blueman" { };
systemdTargets = lib.mkOption {
type = with lib.types; listOf str;
default = [ "graphical-session.target" ];
example = [ "sway-session.target" ];
description = ''
The systemd targets that will automatically start the cliphist service.
When setting this value to `["sway-session.target"]`,
make sure to also enable {option}`wayland.windowManager.sway.systemd.enable`,
otherwise the service may never be started.
'';
};
};
};
config = lib.mkIf config.services.blueman-applet.enable {
assertions = [
(lib.hm.assertions.assertPlatform "services.blueman-applet" pkgs lib.platforms.linux)
];
systemd.user.services.blueman-applet = {
Unit = {
Description = "Blueman applet";
Requires = [ "tray.target" ];
After = cfg.systemdTargets ++ [ "tray.target" ];
PartOf = cfg.systemdTargets;
};
Install = {
WantedBy = cfg.systemdTargets;
};
Service = {
ExecStart = "${lib.getExe' cfg.package "blueman-applet"}";
};
};
};
}