Files
nixos-config/home-modules/pc.nix
T
Lumpiasty c9e6ec7b23 add audio-rt module to fight xruns under cpu load
EasyEffects DSP plugins (rnnoise, deepfilternet, crystalizer) drop audio
when the system is under load. Layered workaround with per-optimization
toggles for bisecting impact:

- cgroup-based CPU partitioning: dedicated audio.slice with AllowedCPUs
  pinning, restricted app/session/background slices for everything else
- rlimits so PipeWire's module-rt sets SCHED_FIFO 88 directly instead of
  going through RTKit's priority-10 ceiling
- persistent watcher that re-applies performance governor on audio cores
  (gamemoded/PPD keep resetting it)
- ananicy rule pinning easyeffects to nice -12 for non-RT DSP threads
- znver4-tuned rebuilds of easyeffects and its DSP deps

Master switch + per-feature toggles via lumpiasty.audioRt.*; all enabled
by default on acer host. None of this fully eliminates dropouts on this
thermally constrained laptop but each layer is independently testable.
2026-05-18 17:20:21 +02:00

75 lines
2.3 KiB
Nix

{ config, lib, pkgs, osConfig, ... }:
{
options.lumpiastyHome.enablePcApps = lib.mkEnableOption "Enable desktop apps for this account";
config = lib.mkIf (config.lumpiastyHome.enablePcApps && osConfig.lumpiasty.pc) {
home.packages = with pkgs; [
vesktop
# Manual update, not yet in nixpkgs as for now
(spotify.overrideAttrs (old: rec {
version = "1.2.86.502.g8cd7fb22";
rev = "94";
src = fetchurl {
name = "spotify-${version}-${rev}.snap";
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
hash = "sha256-XhwyaObck6viIvDRXEztlSLja5fsfw5HgHUUQzMehLI=";
};
}))
pass-wayland
teamspeak6-client
easyeffects
libreoffice-qt6-fresh
vlc
inkscape
(qtpass.overrideAttrs (old: rec {
version = "1.7.0";
src = pkgs.fetchFromGitHub {
owner = "IJHack";
repo = "QtPass";
tag = "v${version}";
hash = "sha256-0qbKM24v7xRiuBEs+rHP2l1W8bCl7uJRc3jzpDdjp/c=";
};
}))
signal-desktop
transmission_4-qt6
thunderbird
pwgen
siyuan
gimp
ventoy-full-qt
];
programs.librewolf.enable = true;
services.easyeffects.enable = true;
systemd.user.services.easyeffects.Service = lib.mkIf osConfig.lumpiasty.audioRt.cpuPartitioning {
# Move easyeffects into audio.slice (defined in modules/desktop/audio-rt.nix)
# which has AllowedCPUs=<audioCpus> — pins all DSP work to the reserved cores.
Slice = "audio.slice";
};
programs.chromium.enable = true;
programs.chromium.package = pkgs.ungoogled-chromium;
services.flatpak.remotes = [{
name = "flathub"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}];
services.flatpak.packages = [
# "org.onlyoffice.desktopeditors"
];
# Vesktop settings
# Nope, TODO
# home.file.vesktop = {
# enable = true;
# executable = false;
# source = ./Vencord/settings.json;
# target = ".config/Vencord/settings.json";
# };
# home.file.vesktopPlugins = {
# enable = true;
# executable = false;
# source = ./Vencord/settings/settings.json;
# target = ".config/vesktop/settings/settings.json";
# };
};
}