51 lines
1.4 KiB
Nix
51 lines
1.4 KiB
Nix
{ ... }: {
|
|
flake.nixosModules.systemBluetooth =
|
|
{ config, lib, pkgs, ... }:
|
|
let
|
|
cfg = config.chiasson.system.bluetooth;
|
|
d = config.chiasson.desktop or { };
|
|
guiEnabled =
|
|
((d.hyprland or { }).enable or false)
|
|
|| ((d.niri or { }).enable or false)
|
|
|| ((d.plasma or { }).enable or false);
|
|
in
|
|
{
|
|
options.chiasson.system.bluetooth = {
|
|
enable = lib.mkEnableOption ''
|
|
BlueZ defaults (power on boot, experimental, fast connectable). Pull via `client-services` or direct import; off on BT-less boxes.
|
|
'' // {
|
|
default = true;
|
|
};
|
|
|
|
installBluejay = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
[Bluejay](https://invent.kde.org/plasma/bluejay) on GUI hosts with BT. False → `bluetoothctl` only.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkMerge [
|
|
(lib.mkIf cfg.enable {
|
|
hardware.bluetooth = {
|
|
enable = true;
|
|
powerOnBoot = true;
|
|
settings = {
|
|
General = {
|
|
Experimental = true;
|
|
FastConnectable = true;
|
|
};
|
|
Policy = {
|
|
AutoEnable = true;
|
|
};
|
|
};
|
|
};
|
|
})
|
|
(lib.mkIf (cfg.enable && cfg.installBluejay && guiEnabled) {
|
|
environment.systemPackages = [ pkgs.bluejay ];
|
|
})
|
|
];
|
|
};
|
|
}
|