diff options
author | Shea Levy <shea@shealevy.com> | 2020-09-23 06:44:40 -0400 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2020-09-23 08:11:04 -0400 |
commit | affe6660bbeda9ad74e5e57a390d714282e70106 (patch) | |
tree | 57b30a911efa79ce6b0281f8b4689b7bbf5a26b7 | |
parent | 3efe313b1d47aad022f1295d3015fb2d90746310 (diff) |
Add system76 NixOS module
(cherry picked from commit 4b1850bad3c8cba93ffb12041da1a530cbe03c6d)
-rw-r--r-- | nixos/modules/hardware/system-76.nix | 56 | ||||
-rw-r--r-- | nixos/modules/module-list.nix | 1 |
2 files changed, 57 insertions, 0 deletions
diff --git a/nixos/modules/hardware/system-76.nix b/nixos/modules/hardware/system-76.nix new file mode 100644 index 0000000000000..48eb63f4f22de --- /dev/null +++ b/nixos/modules/hardware/system-76.nix @@ -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 ]; +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index b516b1785195a..41cbb50132312 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -60,6 +60,7 @@ ./hardware/printers.nix ./hardware/raid/hpsa.nix ./hardware/steam-hardware.nix + ./hardware/system-76.nix ./hardware/tuxedo-keyboard.nix ./hardware/usb-wwan.nix ./hardware/onlykey.nix |