Unverified Commit 91a00709 authored by Pierre Bourdon's avatar Pierre Bourdon Committed by GitHub
Browse files

Merge pull request #273219 from Lurkki14/tuxclocker-master

tuxclocker: init at 1.4.0
parents c9bdee2a 60cb6ee9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m

- [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).

- [TuxClocker](https://github.com/Lurkki14/tuxclocker), a hardware control and monitoring program. Available as [programs.tuxclocker](#opt-programs.tuxclocker.enable).

## Backward Incompatibilities {#sec-release-24.05-incompatibilities}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+1 −0
Original line number Diff line number Diff line
@@ -770,6 +770,7 @@
  ./services/misc/tautulli.nix
  ./services/misc/tiddlywiki.nix
  ./services/misc/tp-auto-kbbl.nix
  ./services/misc/tuxclocker.nix
  ./services/misc/tzupdate.nix
  ./services/misc/uhub.nix
  ./services/misc/weechat.nix
+71 −0
Original line number Diff line number Diff line
{ config, pkgs, lib, ... }:

with lib;

let
  cfg = config.programs.tuxclocker;
in
{
  options.programs.tuxclocker = {
    enable = mkEnableOption (lib.mdDoc ''
      TuxClocker, a hardware control and monitoring program
    '');

    enableAMD = mkEnableOption (lib.mdDoc ''
      AMD GPU controls.
      Sets the `amdgpu.ppfeaturemask` kernel parameter to 0xfffd7fff to enable all TuxClocker controls
    '');

    enabledNVIDIADevices = mkOption {
      type = types.listOf types.int;
      default = [ ];
      example = [ 0 1 ];
      description = lib.mdDoc ''
        Enable NVIDIA GPU controls for a device by index.
        Sets the `Coolbits` Xorg option to enable all TuxClocker controls.
      '';
    };

    useUnfree = mkOption {
      type = types.bool;
      default = false;
      example = true;
      description = lib.mdDoc ''
        Whether to use components requiring unfree dependencies.
        Disabling this allows you to get everything from the binary cache.
      '';
    };
  };

  config = let
      package = if cfg.useUnfree then pkgs.tuxclocker else pkgs.tuxclocker-without-unfree;
    in
      mkIf cfg.enable {
        environment.systemPackages = [
          package
        ];

        services.dbus.packages = [
          package
        ];

        # MSR is used for some features
        boot.kernelModules = [ "msr" ];

        # https://download.nvidia.com/XFree86/Linux-x86_64/430.14/README/xconfigoptions.html#Coolbits
        services.xserver.config = let
          configSection = (i: ''
            Section "Device"
              Driver "nvidia"
              Option "Coolbits" "31"
              Identifier "Device-nvidia[${toString i}]"
            EndSection
          '');
        in
          concatStrings (map configSection cfg.enabledNVIDIADevices);

        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd/include/amd_shared.h#n207
        # Enable everything modifiable in TuxClocker
        boot.kernelParams = mkIf cfg.enableAMD [ "amdgpu.ppfeaturemask=0xfffd7fff" ];
      };
}
+66 −0
Original line number Diff line number Diff line
{ lib
, stdenv
, boost
, fetchFromGitHub
, git
, makeWrapper
, meson
, ninja
, pkg-config
, python3
, qtbase
, qtcharts
, tuxclocker-plugins
, wrapQtAppsHook
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "tuxclocker";
  version = "1.4.0";

  src = fetchFromGitHub {
    owner = "Lurkki14";
    repo = "tuxclocker";
    fetchSubmodules = true;
    rev = "${finalAttrs.version}";
    hash = "sha256-8dtuZXBWftXNQpqYgNQOayPGfvEIu9QfbqDShfkt1qA=";
  };

  # Meson doesn't find boost without these
  BOOST_INCLUDEDIR = "${lib.getDev boost}/include";
  BOOST_LIBRARYDIR = "${lib.getLib boost}/lib";

  nativeBuildInputs = [
    git
    makeWrapper
    meson
    ninja
    pkg-config
    wrapQtAppsHook
  ];

  buildInputs = [
    boost
    qtbase
    qtcharts
  ];

  postInstall = ''
    wrapProgram "$out/bin/tuxclockerd" \
      --prefix "TEXTDOMAINDIR" : "${tuxclocker-plugins}/share/locale" \
      --prefix "TUXCLOCKER_PLUGIN_PATH" : "${tuxclocker-plugins}/lib/tuxclocker/plugins" \
      --prefix "PYTHONPATH" : "${python3.pkgs.hwdata}/${python3.sitePackages}"
  '';

  mesonFlags = [
    "-Dplugins=false"
  ];

  meta = with lib; {
    description = "Qt overclocking tool for GNU/Linux";
    homepage = "https://github.com/Lurkki14/tuxclocker";
    license = licenses.gpl3Only;
    maintainers = with maintainers; [ lurkki ];
    platforms = platforms.linux;
  };
})
+14 −0
Original line number Diff line number Diff line
diff --git a/src/plugins/meson.build b/src/plugins/meson.build
index cdd3b5b..a5a2174 100644
--- a/src/plugins/meson.build
+++ b/src/plugins/meson.build
@@ -63,9 +63,3 @@ if all_nvidia_linux_libs
 		install : true,
 		link_with : libtuxclocker)
 endif
-
-shared_library('cpu', 'CPU.cpp', 'Utils.cpp',
-        include_directories : [incdir, fplus_inc],
-        install_dir : get_option('libdir') / 'tuxclocker' / 'plugins',
-        install : true,
-        link_with : libtuxclocker)
Loading