parent
9f43146ec4
commit
4b1850bad3
@ -0,0 +1,56 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
let |
||||
inherit (lib) mkOption mkEnableOption types mkIf mkMerge optional versionOlder; |
||||
cfg = config.hardware.system76; |
||||
|
||||
kpkgs = config.boot.kernelPackages; |
||||
modules = [ "system76" "system76-io" ] ++ (optional (versionOlder kpkgs.kernel.version "5.5") "system76-acpi"); |
||||
modulePackages = map (m: kpkgs.${m}) modules; |
||||
moduleConfig = mkIf cfg.kernel-modules.enable { |
||||
boot.extraModulePackages = modulePackages; |
||||
|
||||
boot.kernelModules = modules; |
||||
|
||||
services.udev.packages = modulePackages; |
||||
}; |
||||
|
||||
firmware-pkg = pkgs.system76-firmware; |
||||
firmwareConfig = mkIf cfg.firmware-daemon.enable { |
||||
services.dbus.packages = [ firmware-pkg ]; |
||||
|
||||
systemd.services.system76-firmware-daemon = { |
||||
description = "The System76 Firmware Daemon"; |
||||
|
||||
serviceConfig = { |
||||
ExecStart = "${firmware-pkg}/bin/system76-firmware-daemon"; |
||||
|
||||
Restart = "on-failure"; |
||||
}; |
||||
|
||||
wantedBy = [ "multi-user.target" ]; |
||||
}; |
||||
}; |
||||
in { |
||||
options = { |
||||
hardware.system76 = { |
||||
enableAll = mkEnableOption "all recommended configuration for system76 systems"; |
||||
|
||||
firmware-daemon.enable = mkOption { |
||||
default = cfg.enableAll; |
||||
example = true; |
||||
description = "Whether to enable the system76 firmware daemon"; |
||||
type = types.bool; |
||||
}; |
||||
|
||||
kernel-modules.enable = mkOption { |
||||
default = cfg.enableAll; |
||||
example = true; |
||||
description = "Whether to make the system76 out-of-tree kernel modules available"; |
||||
type = types.bool; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
config = mkMerge [ moduleConfig firmwareConfig ]; |
||||
} |
Loading…
Reference in new issue