Files
TheaninovOS/modules/nixos/hardware/pimax.nix
2025-09-30 09:48:38 +02:00

93 lines
2.6 KiB
Nix

{
pkgs,
lib,
config,
username,
...
}:
with lib;
let
cfg = config.hardware.pimax;
in
{
options.hardware.pimax = {
enable = mkEnableOption "";
};
config = mkIf cfg.enable (
let
monado-pimax =
# https://gitlab.freedesktop.org/Coreforge/monado/-/commits/pimax?ref_type=heads
pkgs.monado.overrideAttrs {
pname = "monado-pimax";
patches = [ ];
src = pkgs.fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "Coreforge";
repo = "monado";
rev = "f858ee5dd8ca7696bd9219e8278f2671df56fe6e";
hash = "sha256-Si56yvG+oSfyUaPAlF1FgB7WJo8td1xuVxYnkJvbu4o=";
};
};
monado-pimax-new =
# https://gitlab.freedesktop.org/Coreforge/monado/-/commits/pimax?ref_type=heads
pkgs.monado.overrideAttrs {
pname = "monado-pimax";
patches = [ ];
src = pkgs.fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "Coreforge";
repo = "monado";
rev = "f712f680dd57753a31d2605ae1505b06f30d50eb";
hash = "sha256-ke7UXimIvPBDvBU7RV7Q8fAum5LYnHC64NLA7x3XftU=";
};
};
in
{
environment.systemPackages = with pkgs; [
opencomposite
];
home-manager.users."${username}".xdg.configFile = {
"openxr/1/active_runtime.json".source = "${monado-pimax}/share/openxr/1/openxr_monado.json";
"openvr/openvrpaths.vrpath".text = builtins.toJSON {
config = [ "~/.local/share/Steam/config" ];
external_drivers = null;
jsonid = "vrpathreg";
log = [ "~/.local/share/Steam/logs" ];
runtime = [ "${pkgs.opencomposite}/lib/opencomposite" ];
version = 1;
};
};
boot.kernelPatches = [
{
name = "pimax-quirks";
patch = ./pimax.patch;
}
{
name = "amdgpu-ignore-ctx-privileges";
patch = pkgs.fetchpatch {
name = "cap_sys_nice_begone.patch";
url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch";
hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo=";
};
}
];
services.monado = {
enable = true;
defaultRuntime = true;
highPriority = true;
package = monado-pimax;
};
systemd.user.services.monado.environment = {
STEAMVR_LH_ENABLE = "1";
XRT_COMPOSITOR_COMPUTE = "1";
};
}
);
}