Merge pull request #195341 from zhaofengli/fwupd-extra-daemon-conf
nixos/fwupd: Make daemon.conf structured
This commit is contained in:
commit
78e2fbc4ce
@ -238,6 +238,14 @@
|
||||
the Nix store.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>services.fwupd</literal> module now allows
|
||||
arbitrary daemon settings to be configured in a structured
|
||||
manner
|
||||
(<link linkend="opt-services.fwupd.daemonSettings"><literal>services.fwupd.daemonSettings</literal></link>).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>unifi-poller</literal> package and corresponding
|
||||
|
@ -70,4 +70,6 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- Resilio sync secret keys can now be provided using a secrets file at runtime, preventing these secrets from ending up in the Nix store.
|
||||
|
||||
- The `services.fwupd` module now allows arbitrary daemon settings to be configured in a structured manner ([`services.fwupd.daemonSettings`](#opt-services.fwupd.daemonSettings)).
|
||||
|
||||
- The `unifi-poller` package and corresponding NixOS module have been renamed to `unpoller` to match upstream.
|
||||
|
@ -7,13 +7,16 @@ with lib;
|
||||
let
|
||||
cfg = config.services.fwupd;
|
||||
|
||||
format = pkgs.formats.ini {
|
||||
listToValue = l: lib.concatStringsSep ";" (map (s: generators.mkValueStringDefault {} s) l);
|
||||
mkKeyValue = generators.mkKeyValueDefault {} "=";
|
||||
};
|
||||
|
||||
customEtc = {
|
||||
"fwupd/daemon.conf" = {
|
||||
source = pkgs.writeText "daemon.conf" ''
|
||||
[fwupd]
|
||||
DisabledDevices=${lib.concatStringsSep ";" cfg.disabledDevices}
|
||||
DisabledPlugins=${lib.concatStringsSep ";" cfg.disabledPlugins}
|
||||
'';
|
||||
source = format.generate "daemon.conf" {
|
||||
fwupd = cfg.daemonSettings;
|
||||
};
|
||||
};
|
||||
"fwupd/uefi_capsule.conf" = {
|
||||
source = pkgs.writeText "uefi_capsule.conf" ''
|
||||
@ -67,24 +70,6 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
disabledDevices = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "2082b5e0-7a64-478a-b1b2-e3404fab6dad" ];
|
||||
description = lib.mdDoc ''
|
||||
Allow disabling specific devices by their GUID
|
||||
'';
|
||||
};
|
||||
|
||||
disabledPlugins = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "udev" ];
|
||||
description = lib.mdDoc ''
|
||||
Allow disabling specific plugins
|
||||
'';
|
||||
};
|
||||
|
||||
extraTrustedKeys = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
@ -120,18 +105,49 @@ in {
|
||||
Which fwupd package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
daemonSettings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = format.type.nestedTypes.elemType;
|
||||
options = {
|
||||
DisabledDevices = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "2082b5e0-7a64-478a-b1b2-e3404fab6dad" ];
|
||||
description = lib.mdDoc ''
|
||||
List of device GUIDs to be disabled.
|
||||
'';
|
||||
};
|
||||
|
||||
DisabledPlugins = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "udev" ];
|
||||
description = lib.mdDoc ''
|
||||
List of plugins to be disabled.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
default = {};
|
||||
description = lib.mdDoc ''
|
||||
Configurations for the fwupd daemon.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "fwupd" "blacklistDevices"] [ "services" "fwupd" "disabledDevices" ])
|
||||
(mkRenamedOptionModule [ "services" "fwupd" "blacklistPlugins"] [ "services" "fwupd" "disabledPlugins" ])
|
||||
(mkRenamedOptionModule [ "services" "fwupd" "blacklistDevices"] [ "services" "fwupd" "daemonSettings" "DisabledDevices" ])
|
||||
(mkRenamedOptionModule [ "services" "fwupd" "blacklistPlugins"] [ "services" "fwupd" "daemonSettings" "DisabledPlugins" ])
|
||||
(mkRenamedOptionModule [ "services" "fwupd" "disabledDevices" ] [ "services" "fwupd" "daemonSettings" "DisabledDevices" ])
|
||||
(mkRenamedOptionModule [ "services" "fwupd" "disabledPlugins" ] [ "services" "fwupd" "daemonSettings" "DisabledPlugins" ])
|
||||
];
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
# Disable test related plug-ins implicitly so that users do not have to care about them.
|
||||
services.fwupd.disabledPlugins = cfg.package.defaultDisabledPlugins;
|
||||
services.fwupd.daemonSettings.DisabledPlugins = cfg.package.defaultDisabledPlugins;
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user