{ config, lib, inputs, pkgs, ... }: { imports = [ inputs.preload-ng.nixosModules.default ]; ## Variaveis de ambiente contendo o aumento de cache para placas da nvidia environment.variables = { __GL_SHADER_DISK_CACHE_SIZE = "12000000000"; VK_LAYER_PATH = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d"; }; ## Configuraçoes de boot para otimzar o kernel e alguns patchs para nvidia boot = { modprobeConfig.enable = true; kernelModules = [ "tcp_bbr" ]; extraModprobeConfig = '' options nvidia NVreg_UsePageAttributeTable=1 NVreg_InitializeSystemMemoryAllocations=0 NVreg_DynamicPowerManagement=0x02 ''; kernel.sysctl = { "kernel.split_lock_mitigate" = 0; "kernel.nmi_watchdog" = 0; "net.core.netdev_max_backlog" = 4096; "fs.file-max" = 2097152; "net.ipv4.tcp_congestion_control" = "bbr"; }; }; services = { earlyoom = { enable = true; freeSwapThreshold = 2; freeMemThreshold = 2; extraArgs = [ "-g" "--avoid" "'^(X|plasma.*|konsole|kwin|wayland|gnome.*)$'" ]; }; ## Otimizaçao do Udev para placas de Video da Nvidia udev = { enable = true; extraRules = '' # Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind ACTION=="add|bind", SUBSYSTEM=="pci", DRIVERS=="nvidia", \ ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", \ TEST=="power/control", ATTR{power/control}="auto" # Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind ACTION=="remove|unbind", SUBSYSTEM=="pci", DRIVERS=="nvidia", \ ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", \ TEST=="power/control", ATTR{power/control}="on" ## celular # atack shark KERNEL=="hidraw*", ATTRS{idVendor}=="1d57", ATTRS{idProduct}=="fa60", MODE="0666", SYMLINK+="xenta-mouse-hidraw", TAG+="uaccess" KERNEL=="hidraw*", ATTRS{idVendor}=="1d57", ATTRS{idProduct}=="fa55", MODE="0666", SYMLINK+="xenta-mouse-hidraw", TAG+="uaccess" # Akko Keyboard (WebHID) KERNEL=="hidraw*", ATTRS{idVendor}=="3151", ATTRS{idProduct}=="502d", MODE="0666", TAG+="uaccess" SUBSYSTEM=="usb", ATTRS{idVendor}=="3151", ATTRS{idProduct}=="502d", MODE="0666", TAG+="uaccess" ''; }; preload-ng = { enable = true; settings = { cycle = 15; memTotal = -5; memFree = 70; memCached = 10; memBuffers = 50; minSize = 1000000; processes = 60; sortStrategy = 0; autoSave = 1800; mapPrefix = "/nix/store/;/run/current-system/;!/"; exePrefix = "/nix/store/;/run/current-system/;!/"; }; }; }; systemd.services.set-min-free-mem = { description = "Set vm.min_free_kbytes dynamically"; wantedBy = [ "multi-user.target" ]; after = [ "local-fs.target" ]; serviceConfig = { User = "root"; RemainAfterExit = true; }; script = '' TOTAL_MEM=$(${pkgs.gawk}/bin/awk '/MemTotal/ {printf "%.0f", $2 * 0.01}' /proc/meminfo) if [ -z "$TOTAL_MEM" ] || [ "$TOTAL_MEM" -eq 0 ]; then echo "Failed to calculate memory size" >&2 exit 1 fi ${pkgs.sysctl}/bin/sysctl -w vm.min_free_kbytes=$TOTAL_MEM ''; }; ## sistema de compressao compressao brtfs fileSystems = { "/" = { options = [ "compress=zstd:3" ]; }; }; ## confiuraçao da zram zramSwap = { enable = true; memoryPercent = 40; algorithm = "zstd"; }; }