Merge pull request #195341 from zhaofengli/fwupd-extra-daemon-conf

nixos/fwupd: Make daemon.conf structured
This commit is contained in:
Ryan Lahfa 2022-12-13 14:19:26 +01:00 committed by GitHub
commit 78e2fbc4ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 52 additions and 26 deletions

View File

@ -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

View File

@ -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.

View File

@ -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 ];