c9e6ec7b23
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.
166 lines
4.5 KiB
Nix
166 lines
4.5 KiB
Nix
{ lib, pkgs, nixpkgs-linuxeol, ... }:
|
||
|
||
rec {
|
||
# Identity
|
||
networking.hostName = "acer"; # Define your hostname.
|
||
networking.hostId = "fc9583ce";
|
||
|
||
# Hardware
|
||
hardware.enableRedistributableFirmware = true;
|
||
services.hardware.bolt.enable = true;
|
||
hardware.bluetooth.enable = true;
|
||
|
||
|
||
# Bootloader.
|
||
boot.loader.systemd-boot.enable = true;
|
||
boot.loader.efi.canTouchEfiVariables = true;
|
||
|
||
# Limiting number of generations to prevent ESP from filling
|
||
# Using Windows' preinstalled ESP which is only 256MB
|
||
boot.loader.systemd-boot.configurationLimit = 3;
|
||
boot.initrd.compressor = "zstd";
|
||
boot.initrd.compressorArgs = [ "-19" "-T16" ];
|
||
|
||
# Kernel
|
||
# boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||
boot.kernelPackages = nixpkgs-linuxeol.legacyPackages."x86_64-linux".linuxKernel.packages.linux_6_19;
|
||
boot.zfs.package = pkgs.zfs_unstable;
|
||
|
||
# Swap
|
||
swapDevices = [
|
||
{ device = "/dev/disk/by-partlabel/SWAP"; }
|
||
];
|
||
|
||
# Storage
|
||
fileSystems."/" =
|
||
{
|
||
device = "acer-ssd/root";
|
||
fsType = "zfs";
|
||
options = [ "zfsutil" ];
|
||
};
|
||
fileSystems."/nix" =
|
||
{
|
||
device = "acer-ssd/nix";
|
||
fsType = "zfs";
|
||
options = [ "zfsutil" ];
|
||
};
|
||
fileSystems."/var" =
|
||
{
|
||
device = "acer-ssd/var";
|
||
fsType = "zfs";
|
||
options = [ "zfsutil" ];
|
||
};
|
||
fileSystems."/home" =
|
||
{
|
||
device = "acer-ssd/home";
|
||
fsType = "zfs";
|
||
options = [ "zfsutil" ];
|
||
};
|
||
|
||
fileSystems."/boot" =
|
||
{ device = "/dev/disk/by-uuid/72EF-7CD3";
|
||
fsType = "vfat";
|
||
options = [ "fmask=0077" "dmask=0077" ];
|
||
};
|
||
|
||
# Config modules
|
||
lumpiasty = {
|
||
pc = true;
|
||
enablePlasma = true;
|
||
intelCpu = false;
|
||
amdCpu = true;
|
||
noMitigations = false;
|
||
enablePulseaudio = true;
|
||
audioRt.enable = true;
|
||
sshd = true;
|
||
users.user = true;
|
||
# users.drugi = true;
|
||
touchPad = {
|
||
enable = true;
|
||
name = "PIXA3848:01 093A:3848 Touchpad";
|
||
vendorId = "2362";
|
||
productId = "14408";
|
||
disableWhileTyping = false;
|
||
scrollSpeed = 0.5;
|
||
naturalScroll = false;
|
||
pointerSpeed = 0.2;
|
||
accelerationProfile = "default";
|
||
};
|
||
laptop = true;
|
||
gaming = true;
|
||
enableTailscale = true;
|
||
};
|
||
|
||
virtualisation.vmVariant = {
|
||
virtualisation = {
|
||
memorySize = 2048;
|
||
cores = 2;
|
||
};
|
||
};
|
||
|
||
# For dev vm stuff
|
||
networking.firewall.trustedInterfaces = [ "br0" ];
|
||
|
||
# Battery driver
|
||
boot.extraModulePackages = [
|
||
# Super ugly hack, for some reason it's not included in pkgs.linuxKernel.packages.linux_6_12
|
||
# Despite being in overlays, something's not working
|
||
(pkgs.linuxPackages.acer-wmi-ext.override {
|
||
kernel = boot.kernelPackages.kernel;
|
||
})
|
||
# (pkgs.callPackage ../pkgs/ms912x/ms912x.nix {
|
||
# kernel = boot.kernelPackages.kernel;
|
||
# })
|
||
];
|
||
boot.kernelModules = [ "acer-wmi-ext" ];
|
||
|
||
# Breaks sleep, not enabling for now
|
||
# lumpiasty.acerUndervolt = true;
|
||
|
||
boot.initrd.kernelModules = [ "amdgpu" "thunderbolt" ];
|
||
|
||
boot.kernelParams = [
|
||
# https://community.frame.work/t/attn-critical-bugs-in-amdgpu-driver-included-with-kernel-6-18-x-6-19-x/79221
|
||
"amdgpu.cwsr_enable=0"
|
||
|
||
# Increase GPU memory limits
|
||
"ttm.pages_limit=7864320" # 30GB in pages (30 * 1024 * 1024 * 1024 / 4096)
|
||
"ttm.page_pool_size=7864320"
|
||
"amdttm.pages_limit=7864320" # Include both for compatibility
|
||
"amdttm.page_pool_size=7864320"
|
||
];
|
||
|
||
programs.corectrl.enable = true;
|
||
hardware.amdgpu.overdrive.enable = true;
|
||
|
||
fonts = {
|
||
fontconfig = {
|
||
enable = true;
|
||
|
||
# Turn on antialiasing
|
||
antialias = true;
|
||
|
||
# Subpixel rendering tuned for your monitors
|
||
subpixel = {
|
||
rgba = "rgb"; # standard RGB stripe
|
||
lcdfilter = "default"; # or "light" if you want a bit thinner glyphs
|
||
};
|
||
|
||
# Hinting: helps a lot at ~90–95 DPI like your 24–25" monitors
|
||
hinting = {
|
||
enable = true;
|
||
style = "slight"; # try "full" if you want sharper / more “pixel-snapped”
|
||
autohint = false;
|
||
};
|
||
};
|
||
};
|
||
|
||
|
||
# This value determines the NixOS release from which the default
|
||
# settings for stateful data, like file locations and database versions
|
||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||
# this value at the release version of the first install of this system.
|
||
# Before changing this value read the documentation for this option
|
||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||
system.stateVersion = "24.05"; # Did you read the comment?
|
||
} |