1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.corefreq;
10 kernelPackages = config.boot.kernelPackages;
11in
12{
13 options = {
14 programs.corefreq = {
15 enable = lib.mkEnableOption "Whether to enable the corefreq daemon and kernel module";
16
17 package = lib.mkOption {
18 type = lib.types.package;
19 default = kernelPackages.corefreq;
20 defaultText = lib.literalExpression "config.boot.kernelPackages.corefreq";
21 description = ''
22 The corefreq package to use.
23 '';
24 };
25 };
26 };
27
28 config = lib.mkIf cfg.enable {
29 environment.systemPackages = [ cfg.package ];
30 boot.extraModulePackages = [ cfg.package ];
31 boot.kernelModules = [ "corefreqk" ];
32
33 # Create a systemd service for the corefreq daemon
34 systemd.services.corefreq = {
35 description = "CoreFreq daemon";
36 wantedBy = [ "multi-user.target" ];
37 serviceConfig = {
38 ExecStart = lib.getExe' cfg.package "corefreqd";
39 };
40 };
41 };
42}