diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index c86a571cc0c0..a6766429dfca 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -171,6 +171,7 @@ ./programs/cpu-energy-meter.nix ./programs/command-not-found/command-not-found.nix ./programs/coolercontrol.nix + ./programs/corefreq.nix ./programs/criu.nix ./programs/darling.nix ./programs/dconf.nix diff --git a/nixos/modules/programs/corefreq.nix b/nixos/modules/programs/corefreq.nix new file mode 100644 index 000000000000..c656b4a13da1 --- /dev/null +++ b/nixos/modules/programs/corefreq.nix @@ -0,0 +1,42 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.programs.corefreq; + kernelPackages = config.boot.kernelPackages; +in +{ + options = { + programs.corefreq = { + enable = lib.mkEnableOption "Whether to enable the corefreq daemon and kernel module"; + + package = lib.mkOption { + type = lib.types.package; + default = kernelPackages.corefreq; + defaultText = lib.literalExpression "config.boot.kernelPackages.corefreq"; + description = '' + The corefreq package to use. + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + boot.extraModulePackages = [ cfg.package ]; + boot.kernelModules = [ "corefreqk" ]; + + # Create a systemd service for the corefreq daemon + systemd.services.corefreq = { + description = "CoreFreq daemon"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = lib.getExe' cfg.package "corefreqd"; + }; + }; + }; +}