Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

powerstation: init at 0.4.2 #367781

Merged
merged 2 commits into from
Jan 22, 2025
Merged

Conversation

ShadowApex
Copy link
Contributor

Description of changes

Adds a derivation to run PowerStation on NixOS.

PowerStation is an open source TDP (Thermal Design Power) control and performance daemon with DBus interface. It can allow a user to control the TDP of integrated GPUs (typically for handheld gaming PCs like the ROG Ally and Legion Go) and enable/disable CPU cores to greatly extend battery life at the cost of some gaming performance.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@github-actions github-actions bot added 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: documentation This PR adds or changes documentation 8.has: changelog 8.has: module (update) This PR changes an existing module in `nixos/` labels Dec 24, 2024
@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10 labels Dec 24, 2024
@FliegendeWurst FliegendeWurst added the 11.by: upstream-developer This issue or PR was created by the developer of packaged software label Dec 24, 2024
Comment on lines +12 to +15
options.services.powerstation = {
enable = lib.mkEnableOption "PowerStation";
package = lib.mkPackageOption pkgs "powerstation" { };
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a UI for this already or is the user expected to set dbus stuff manually/scripted?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, OpenGamepadUI (which I am also working on packaging for NixOS) provides a UI for both PowerStation and InputPlumber. Both tools are UI agnostic though, so can be used via cli, scripting, or another user interface.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have opened a PR for the OpenGamepadUI derivation here: #368017

@ofborg ofborg bot added 8.has: package (new) This PR adds a new package 11.by: package-maintainer This PR was created by the maintainer of the package it changes 10.rebuild-darwin: 1-10 10.rebuild-darwin: 1 and removed 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin labels Dec 24, 2024
@ShadowApex ShadowApex changed the title powerstation: init at 0.4.0 powerstation: init at 0.4.1 Dec 24, 2024
@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin and removed 10.rebuild-darwin: 1 10.rebuild-darwin: 1-10 labels Dec 24, 2024
@ofborg ofborg bot added 10.rebuild-darwin: 1-10 10.rebuild-darwin: 1 and removed 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin labels Dec 25, 2024
Copy link
Contributor

@misuzu misuzu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The module addition should be in a separate commit.
The commit messages should be like this:

  1. powerstation: init at 0.4.1
  2. nixos/powerstation: init

See https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#commit-conventions

@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin and removed 10.rebuild-darwin: 1 10.rebuild-darwin: 1-10 labels Dec 25, 2024
@ofborg ofborg bot added 10.rebuild-darwin: 1-10 10.rebuild-darwin: 1 and removed 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin labels Dec 25, 2024
@wegank wegank added the 12.approvals: 1 This PR was reviewed and approved by one reputable person label Dec 26, 2024
@FliegendeWurst
Copy link
Member

aarch64-linux failed when building ryzenadj.
Ideally we would avoid the vendored ryzenadj copy:

diff --git a/pkgs/by-name/po/powerstation/package.nix b/pkgs/by-name/po/powerstation/package.nix
index f24da86884f1..b0a308c90120 100644
--- a/pkgs/by-name/po/powerstation/package.nix
+++ b/pkgs/by-name/po/powerstation/package.nix
@@ -5,6 +5,7 @@
   pkg-config,
   udev,
   pciutils,
+  ryzenadj,
   cmake,
 }:
 
@@ -31,8 +32,12 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [
     udev
     pciutils
+    ryzenadj
   ];
 
+  # use our ryzenadj library
+  env.DOCS_RS = "1";
+
   postInstall = ''
     cp -r rootfs/usr/* $out/
   '';

But unfortunately the vendored copy is at 0.15, whilst our package is at 0.16, so it doesn't work.

@ShadowApex
Copy link
Contributor Author

ShadowApex commented Dec 29, 2024

aarch64-linux failed when building ryzenadj. Ideally we would avoid the vendored ryzenadj copy:

diff --git a/pkgs/by-name/po/powerstation/package.nix b/pkgs/by-name/po/powerstation/package.nix
index f24da86884f1..b0a308c90120 100644
--- a/pkgs/by-name/po/powerstation/package.nix
+++ b/pkgs/by-name/po/powerstation/package.nix
@@ -5,6 +5,7 @@
   pkg-config,
   udev,
   pciutils,
+  ryzenadj,
   cmake,
 }:
 
@@ -31,8 +32,12 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [
     udev
     pciutils
+    ryzenadj
   ];
 
+  # use our ryzenadj library
+  env.DOCS_RS = "1";
+
   postInstall = ''
     cp -r rootfs/usr/* $out/
   '';

But unfortunately the vendored copy is at 0.15, whilst our package is at 0.16, so it doesn't work.

I haven't done testing on ARM, so it might not be suitable for that platform, yet. Ryzenadj itself is really only useful on AMD iGPU hardware which is exclusively x86_64, so I may update PowerStation so this dependency is conditional based on the CPU architecture.

@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin and removed 10.rebuild-darwin: 1 10.rebuild-darwin: 1-10 labels Jan 3, 2025
@ShadowApex ShadowApex changed the title powerstation: init at 0.4.1 powerstation: init at 0.4.2 Jan 3, 2025
@ShadowApex
Copy link
Contributor Author

PowerStation v0.4.2 should correctly build for ARM now

@wegank wegank removed the 12.approvals: 1 This PR was reviewed and approved by one reputable person label Jan 3, 2025
@h7x4 h7x4 added the 8.has: module (new) This PR adds a module in `nixos/` label Jan 17, 2025
@FliegendeWurst FliegendeWurst merged commit f06208e into NixOS:master Jan 22, 2025
5 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: changelog 8.has: documentation This PR adds or changes documentation 8.has: module (new) This PR adds a module in `nixos/` 8.has: module (update) This PR changes an existing module in `nixos/` 8.has: package (new) This PR adds a new package 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10 11.by: package-maintainer This PR was created by the maintainer of the package it changes 11.by: upstream-developer This issue or PR was created by the developer of packaged software
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants