Hardware/TUXEDO

From NixOS Wiki
Revision as of 17:47, 4 July 2023 by imported>Occhioverde (Created page with instructions on how to install the TCC and Tuxedo-Keyboard (old version))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

TUXEDO Computers is a German company that specializes in assembling devices specifically designed to work out-of-the-box with Linux OSes.

When configured with their flagship distro, TUXEDO devices offer particular integrations with the Linux kernel, allowing fan management, CPU underclocking, power profile selection and the tweaking of other hardware-related settings via the preinstalled Tuxedo Control Center and Kernel modules.

In case you installed NixOS on a TUXEDO computer, however, you will have to specifically configure your system in order to gain access to those functionalities.

Tuxedo Control Center

As of today, the Tuxedo Control Center is unfortunately not available in Nixpkgs, making it impossible to install it right away.

Thanks to a project maintained by blitz (Julian Stecklina), however, you can set up the TCC on NixOS just by importing an external module hosted on GitHub.

Doing this operation is quite straightforward, whether your system is configured to use Flakes or not.

Installation with Fakes

At the time of writing, the Flake interface is still experimental, but is stable enough to use it to import and enable this module in your system configuration.

Here you can find what you should add to your flake.nix to install the TCC:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
    tuxedo-nixos = {
      url = "github:blitz/tuxedo-nixos";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, tuxedo-nixos }: {
    nixosConfigurations = {
      your-system = nixpkgs.lib.nixosSystem {
        modules = [
          ./configuration.nix
          tuxedo-nixos.nixosModules.default
          { hardware.tuxedo-control-center.enable = true; }
        ];
      };
    };
  };
}

Installation without Flakes

In case you prefer to avoid enabling and using Flakes, the Tuxedo Control Center can be installed in the old and stable way:

{ config, pkgs, ... }:
let
  tuxedo = import (builtins.fetchTarball "https://github.com/blitz/tuxedo-nixos/archive/master.tar.gz");
in {
  imports = [
    tuxedo.module
  ];
  hardware.tuxedo-control-center.enable = true;
}

Troubleshooting on Nixpkgs > 22.11

As noted in an issue on the project's GitHub page[1], blitz's TCC distribution is tested exclusively against Nixpkgs 22.11; as such, there might be errors when building it after overriding its Nixpkgs version to a newer one.

To avoid such problems, it can be useful to delete the inputs.nixpkgs.follows = "nixpkgs"; line in the example above and to specify tuxedo-control-center.package = tuxedo-nixos.packages.x86_64-linux.default; right after the enable instruction. Doing this, in fact, will build the TCC against the Nixpkgs version it is meant to.

Tuxedo Keyboard

The keyboard installed on some TUXEDO Laptops has a variable color backlight that can be controlled via specific kernel parameters that, obviously, are not available on a generic NixOS installation.

The Kernel module that allows you to set these parameters, however, is already present on Nixpkgs and can easily be enabled by adding the hardware.tuxedo-keyboard.enable = true; option to your NixOS configuration.

After specifying this setting, it is in fact trivial to add the tuxedo_keyboard options to the Kernel commandline by using the boot.kernelParams; config key as in the example below:

{ pkgs, ... }:
{
  hardware.tuxedo-keyboard.enable = true;
  boot.kernelParams = [
    "tuxedo_keyboard.mode=0"
    "tuxedo_keyboard.brightness=25"
    "tuxedo_keyboard.color_left=0x0000ff"
  ];
}

More options can be found in the official tuxedo_keyboard docs.

References

  1. Build broken on nixos-unstable #5, Nov 13, 2022 - https://github.com/blitz/tuxedo-nixos/issues/5