# Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { config, pkgs, ... }: { imports = [ ./hardware-configuration.nix ./sway-quirks.nix ]; # bootloader stuff boot = { # enable grub loader.efi.canTouchEfiVariables = true; loader.grub = { enable = true; device = "nodev"; efiSupport = true; # disable for legacy bios gfxmodeEfi = "1024x768"; useOSProber = true; # use os prober to find systems default = "saved"; # set index here to use static default entry extraEntriesBeforeNixOS = true; # add entries before nixos extraEntries = '' menuentry "Firmware" { fwsetup } menuentry "Shutdown" { halt } ''; }; # enable plymouth (hides booting logs) plymouth = { enable = true; theme = "blockchain"; themePackages = with pkgs; [ (adi1090x-plymouth-themes.override { selected_themes = [ "blockchain" "rings" ]; }) ]; }; # enable silent boot consoleLogLevel = 0; initrd.verbose = false; kernelParams = [ "quiet" "splash" "boot.shell_on_fail" "loglevel=3" "rd.systemd.show_status=false" "rd.udev.log_level=3" "udev.log_priority=3" "ipv6.disable=1" # disable ipv6 ]; kernelModules = [ "v4l2loopback" # for virtual camera in obs "snd-aloop" # for sound tricks ]; kernel.sysctl = { # disable ipv6 "net.ipv6.conf.all.disable_ipv6" = "1"; "net.ipv6.conf.default.disable_ipv6" = "1"; "net.ipv6.conf.lo.disable_ipv6" = "1"; }; # emulate arm64 for docker binfmt.emulatedSystems = [ "aarch64-linux" ]; }; # Network settings networking = { hostName = "desktop"; firewall = { enable = true; allowedTCPPorts = [ # 25565 # minecraft ]; }; enableIPv6 = false; # disable ipv6 networkmanager.enable = true; }; hardware.i2c.enable = true; # for hdmi time.timeZone = "Europe/Moscow"; # timezone # set russian locale i18n.defaultLocale = "ru_RU.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "ru_RU.UTF-8"; LC_IDENTIFICATION = "ru_RU.UTF-8"; LC_MEASUREMENT = "ru_RU.UTF-8"; LC_MONETARY = "ru_RU.UTF-8"; LC_NAME = "ru_RU.UTF-8"; LC_NUMERIC = "ru_RU.UTF-8"; LC_PAPER = "ru_RU.UTF-8"; LC_TELEPHONE = "ru_RU.UTF-8"; LC_TIME = "ru_RU.UTF-8"; }; # tty settings console = { enable = true; packages = [ pkgs.terminus_font ]; font = "ter-v16n"; }; # basic X server settings services.xserver.enable = true; services.xserver.xkb.options = "grp:alt_caps_toggle"; services.xserver.xkb.layout = "us,ru"; services.libinput.enable = true; services.libinput.mouse.middleEmulation = false; services.xserver.displayManager.setupCommands = '' ${pkgs.numlockx}/bin/numlockx on ''; # enable zram + zwap zramSwap.enable = true; # enable nvidia drivers services.xserver.videoDrivers = [ "nvidia" ]; hardware.nvidia = { package = config.boot.kernelPackages.nvidiaPackages.stable; modesetting.enable = true; nvidiaSettings = true; open = true; }; # enable graphics hardware.graphics.enable = true; # enable bluetooth support hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; # sound settings (enable pipewire + alsa) services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; jack.enable = true; }; # user settings users.users.user = { isNormalUser = true; description = "user"; extraGroups = [ "networkmanager" "wheel" # "vboxusers" "dialout" "plugdev" "kvm" # "adbusers" # "docker" ]; }; # enable adb programs.adb.enable = true; users.extraGroups.adbusers.members = [ "user" ]; # system-wide packages environment.systemPackages = with pkgs; [ vim curl git ]; # obs programs.obs-studio.enable = true; programs.obs-studio.enableVirtualCamera = true; # enable xdg portal and flatpak xdg.portal.enable = true; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; xdg.portal.config.common.default = "gtk"; services.flatpak.enable = true; # nix store optimisations nix.gc = { # garbage collector automatic = true; dates = "weekly"; options = "--delete-older-than 30d"; }; nix.optimise.automatic = true; # enable flakes and nix command nix.settings.experimental-features = [ "nix-command" "flakes" # "impure-derivations" # allow impure derivations # "ca-derivations" ]; # nixpkgs configs nixpkgs.config.allowUnfree = true; nixpkgs.config.joypixels.acceptLicense = true; nixpkgs.config.cudaSupport = true; # install virtualbox virtualisation.virtualbox.host.enable = true; users.extraGroups.vboxusers.members = [ "user" ]; # install docker virtualisation.docker.enable = true; users.extraGroups.docker.members = [ "user" ]; virtualisation.oci-containers.backend = "docker"; virtualisation.docker.rootless = { enable = false; # enable if you need rootless docker setSocketVariable = true; }; system.stateVersion = "25.05"; }