diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index be44f99c3cee..1abc5c1d9c2e 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -10010,6 +10010,12 @@ githubId = 55911173; name = "Gwendolyn Quasebarth"; }; + lamarios = { + matrix = "@lamarios:matrix.org"; + github = "lamarios"; + githubId = 1192563; + name = "Paul Fauchon"; + }; lambda-11235 = { email = "taranlynn0@gmail.com"; github = "lambda-11235"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index c54569d729a3..4dd7563aa27e 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -516,6 +516,7 @@ ./services/hardware/argonone.nix ./services/hardware/asusd.nix ./services/hardware/auto-cpufreq.nix + ./services/hardware/auto-epp.nix ./services/hardware/bluetooth.nix ./services/hardware/bolt.nix ./services/hardware/brltty.nix diff --git a/nixos/modules/services/hardware/auto-epp.nix b/nixos/modules/services/hardware/auto-epp.nix new file mode 100644 index 000000000000..84b6a337d28a --- /dev/null +++ b/nixos/modules/services/hardware/auto-epp.nix @@ -0,0 +1,80 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.auto-epp; + format = pkgs.formats.ini {}; + + inherit (lib) mkOption types; +in { + options = { + services.auto-epp = { + enable = lib.mkEnableOption (lib.mdDoc "auto-epp for amd active pstate"); + + package = lib.mkPackageOptionMD pkgs "auto-epp" {}; + + settings = mkOption { + type = types.submodule { + freeformType = format.type; + options = { + Settings = { + epp_state_for_AC = mkOption { + type = types.str; + default = "balance_performance"; + description = lib.mdDoc '' + energy_performance_preference when on plugged in + + ::: {.note} + See available epp states by running: + {command}`cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences` + ::: + ''; + }; + + epp_state_for_BAT = mkOption { + type = types.str; + default = "power"; + description = lib.mdDoc '' + `energy_performance_preference` when on battery + + ::: {.note} + See available epp states by running: + {command}`cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences` + ::: + ''; + }; + }; + }; + }; + default = {}; + description = lib.mdDoc '' + Settings for the auto-epp application. + See upstream example: <https://github.com/jothi-prasath/auto-epp/blob/master/sample-auto-epp.conf> + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + + boot.kernelParams = [ + "amd_pstate=active" + ]; + + environment.etc."auto-epp.conf".source = format.generate "auto-epp.conf" cfg.settings; + systemd.packages = [ cfg.package ]; + + systemd.services.auto-epp = { + after = [ "multi-user.target" ]; + wantedBy = [ "multi-user.target" ]; + description = "auto-epp - Automatic EPP Changer for amd-pstate-epp"; + serviceConfig = { + Type = "simple"; + User = "root"; + ExecStart = lib.getExe cfg.package; + Restart = "on-failure"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ lamarios ]; +} diff --git a/pkgs/by-name/au/auto-epp/package.nix b/pkgs/by-name/au/auto-epp/package.nix new file mode 100644 index 000000000000..07e06ba5b4b9 --- /dev/null +++ b/pkgs/by-name/au/auto-epp/package.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitHub, python3 }: +stdenv.mkDerivation rec { + pname = "auto-epp"; + version = "1.2.1"; + + src = fetchFromGitHub { + owner = "jothi-prasath"; + repo = "auto-epp"; + rev = "refs/tags/v${version}"; + hash = "sha256-7sI8K+7ZAdzBN/XOzYQQZ1f9t+fFo6fcXYzX6abNyQ8="; + }; + + buildInputs = [ python3 ]; + + installPhase = '' + runHook preInstall + install -Dm555 auto-epp $out/bin/auto-epp + runHook postInstall + ''; + + meta = with lib; { + mainProgram = "auto-epp"; + homepage = "https://github.com/jothi-prasath/auto-epp"; + description = "Auto-epp (energy performance preference) for AMD processors when amd_pstate=active"; + platforms = platforms.linux; + license = licenses.mit; + maintainers = [ maintainers.lamarios ]; + }; +}