nixos/services.fwupd: init
This commit is contained in:
parent
227a92f698
commit
c47ea8ca4e
@ -226,6 +226,7 @@
|
|||||||
./services/hardware/bluetooth.nix
|
./services/hardware/bluetooth.nix
|
||||||
./services/hardware/brltty.nix
|
./services/hardware/brltty.nix
|
||||||
./services/hardware/freefall.nix
|
./services/hardware/freefall.nix
|
||||||
|
./services/hardware/fwupd.nix
|
||||||
./services/hardware/illum.nix
|
./services/hardware/illum.nix
|
||||||
./services/hardware/interception-tools.nix
|
./services/hardware/interception-tools.nix
|
||||||
./services/hardware/irqbalance.nix
|
./services/hardware/irqbalance.nix
|
||||||
|
76
nixos/modules/services/hardware/fwupd.nix
Normal file
76
nixos/modules/services/hardware/fwupd.nix
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# fwupd daemon.
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.fwupd;
|
||||||
|
originalEtc =
|
||||||
|
let
|
||||||
|
isRegular = v: v == "regular";
|
||||||
|
listFiles = d: builtins.attrNames (filterAttrs (const isRegular) (builtins.readDir d));
|
||||||
|
copiedDirs = [ "fwupd/remotes.d" "pki/fwupd" "pki/fwupd-metadata" ];
|
||||||
|
originalFiles = concatMap (d: map (f: "${d}/${f}") (listFiles "${pkgs.fwupd}/etc/${d}")) copiedDirs;
|
||||||
|
mkEtcFile = n: nameValuePair n { source = "${pkgs.fwupd}/etc/${n}"; };
|
||||||
|
in listToAttrs (map mkEtcFile originalFiles);
|
||||||
|
in {
|
||||||
|
|
||||||
|
###### interface
|
||||||
|
options = {
|
||||||
|
services.fwupd = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to enable fwupd, a DBus service that allows
|
||||||
|
applications to update firmware.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
blacklistDevices = mkOption {
|
||||||
|
type = types.listOf types.string;
|
||||||
|
default = [];
|
||||||
|
example = [ "2082b5e0-7a64-478a-b1b2-e3404fab6dad" ];
|
||||||
|
description = ''
|
||||||
|
Allow blacklisting specific devices by their GUID
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
blacklistPlugins = mkOption {
|
||||||
|
type = types.listOf types.string;
|
||||||
|
default = [];
|
||||||
|
example = [ "udev" ];
|
||||||
|
description = ''
|
||||||
|
Allow blacklisting specific plugins
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [ pkgs.fwupd ];
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
"fwupd/daemon.conf" = {
|
||||||
|
source = pkgs.writeText "daemon.conf" ''
|
||||||
|
[fwupd]
|
||||||
|
BlacklistDevices=${lib.concatStringsSep ";" cfg.blacklistDevices}
|
||||||
|
BlacklistPlugins=${lib.concatStringsSep ";" cfg.blacklistPlugins}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
} // originalEtc;
|
||||||
|
|
||||||
|
services.dbus.packages = [ pkgs.fwupd ];
|
||||||
|
|
||||||
|
services.udev.packages = [ pkgs.fwupd ];
|
||||||
|
|
||||||
|
systemd.packages = [ pkgs.fwupd ];
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /var/lib/fwupd 0755 root root -"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user