{ config, lib, pkgs, sops, ... }: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ../../modules/common.nix ../../modules/aarch64-emu.nix ../../modules/smartd.nix ]; boot = { blacklistedKernelModules = [ "k10temp" ]; extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; kernelParams = [ "amd_pstate=passive" ]; loader.systemd-boot.enable = true; loader.efi.canTouchEfiVariables = true; binfmt.registrations.appimage = { wrapInterpreterInShell = false; interpreter = "${pkgs.appimage-run}/bin/appimage-run"; recognitionType = "magic"; offset = 0; mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff''; magicOrExtension = ''\x7fELF....AI\x02''; }; }; powerManagement.cpuFreqGovernor = "schedutil"; sops.secrets."cdombroski/password" = { neededForUsers = true; sopsFile = ../../secrets/smolboi/users.yaml; }; networking = { hostName = "smolboi"; # Define your hostname. networkmanager.enable = true; # Easiest to use and most distros use this by default. firewall.allowedTCPPorts = [ 22000 ]; }; nixpkgs.config = { allowUnfree = true; permittedInsecurePackages = [ "electron-25.9.0" "nix-2.16.2" ]; packageOverrides = pkgs: { steam = pkgs.steam.override { extraPkgs = pkgs: with pkgs; [ xorg.libXcursor xorg.libXi xorg.libXinerama xorg.libXScrnSaver libpng libpulseaudio libvorbis stdenv.cc.cc.lib libkrb5 keyutils winetricks ]; }; }; }; services = { xserver = { enable = true; displayManager.sddm = { enable = true; autoNumlock = true; }; desktopManager.plasma5.enable = true; }; printing = { enable = true; drivers = [ pkgs.gutenprint ]; }; avahi = { enable = true; nssmdns = true; openFirewall = true; }; printing.cups-pdf.enable = true; pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; hardware.openrgb.enable = true; resolved.enable = true; btrfs.autoScrub = { enable = true; fileSystems = [ "/" "/home" ]; }; }; hardware = { sane = { enable = true; extraBackends = [ pkgs.sane-airscan ]; }; bluetooth.enable = true; }; security = { rtkit.enable = true; }; users = { mutableUsers = false; users = { cdombroski = { isNormalUser = true; extraGroups = [ "wheel" ]; uid = 1000; hashedPasswordFile = config.sops.secrets."cdombroski/password".path; }; }; }; environment = { systemPackages = with pkgs; [ vim-full # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. libreoffice-qt firefox syncthing chromium skanlite htop kate cifs-utils tio ]; pathsToLink = [ "/share/bash-completion" ]; }; programs = { gnupg.agent = { enable = true; enableSSHSupport = true; }; steam = { enable = true; remotePlay.openFirewall = true; gamescopeSession.enable = true; }; firefox.nativeMessagingHosts.packages = with pkgs; [keepassxc libsForQt5.plasma-browser-integration ]; gamemode = { enable = true; settings = { general = { reaper_freq = 5; desiredgov = "performance"; softrealtime = "auto"; }; gpu = { apply_gpu_optimisations = "accept-responsibility"; gpu_device = 0; amd_performance_level = "high"; }; }; }; gamescope.enable = true; }; zramSwap = { enable = true; writebackDevice = "/dev/disk/by-partuuid/e8f5eaf8-46ca-40de-854a-f6dfe964b92d"; }; fileSystems = { "/".options = [ "compress=lzo" "autodefrag" "discard=async" "defaults" ]; "/nix".options = [ "compress=lzo" "autodefrag" "discard=async" "noatime" "defaults" ]; "/steam-library".options = [ "compress=lzo" "autodefrag" "discard=async" "defaults" ]; "/home".options = [ "compress=lzo" "autodefrag" "discard=async" "defaults" ]; }; system.stateVersion = "23.11"; # Did you read the comment? }