From 6ac7e05813243a1f66840f03e38e2a5ea175f420 Mon Sep 17 00:00:00 2001 From: chexit Date: Fri, 17 Apr 2026 21:06:18 +0300 Subject: [PATCH] big refactor by claude --- configuration.nix | 257 +++++++++++++--------------------------------- desktop.nix | 47 +++++++++ nvidia.nix | 24 +++++ packages.nix | 18 ++-- shell.nix | 11 ++ 5 files changed, 161 insertions(+), 196 deletions(-) create mode 100644 desktop.nix create mode 100644 nvidia.nix create mode 100644 shell.nix diff --git a/configuration.nix b/configuration.nix index 06b28c4..85add6f 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,217 +1,98 @@ -# 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 = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ./packages.nix - ]; + imports = [ + ./hardware-configuration.nix + ./packages.nix + ./desktop.nix + ./nvidia.nix + ./shell.nix + ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - # Bootloader. - boot.loader.systemd-boot.enable = false; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.grub = { - enable = true; - device = "nodev"; - efiSupport = true; - useOSProber = true; + nix = { + settings.experimental-features = [ "nix-command" "flakes" ]; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 14d"; + }; + optimise.automatic = true; }; - # Disks - - fileSystems."/mnt/storage" = { - device = "/dev/disk/by-uuid/C4E29B73E29B6906"; - fsType = "ntfs-3g"; - options = [ "nosuid" "nodev" "nofail" "uid=1000" ]; + boot = { + kernelPackages = pkgs.linuxPackages_zen; + loader = { + efi.canTouchEfiVariables = true; + systemd-boot.enable = false; + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + useOSProber = true; + }; + }; }; - fileSystems."/mnt/ssd_110" = { - device = "/dev/disk/by-uuid/14ca9da9-cd66-431c-be96-c0e05066f3a0"; - fsType = "ext4"; - options = [ "nosuid" "nodev" "nofail" ]; + fileSystems = { + "/mnt/storage" = { + device = "/dev/disk/by-uuid/C4E29B73E29B6906"; + fsType = "ntfs-3g"; + options = [ "nosuid" "nodev" "nofail" "uid=1000" ]; + }; + "/mnt/ssd_110" = { + device = "/dev/disk/by-uuid/14ca9da9-cd66-431c-be96-c0e05066f3a0"; + fsType = "ext4"; + options = [ "nosuid" "nodev" "nofail" ]; + }; + "/mnt/wd_blue" = { + device = "/dev/disk/by-uuid/91feabaf-ea5f-490e-9925-56f7c05e7110"; + fsType = "ext4"; + options = [ "nosuid" "nodev" "nofail" ]; + }; }; - fileSystems."/mnt/wd_blue" = { - device = "/dev/disk/by-uuid/91feabaf-ea5f-490e-9925-56f7c05e7110"; - fsType = "ext4"; - options = [ "nosuid" "nodev" "nofail" ]; + networking = { + hostName = "chexit"; + networkmanager.enable = true; }; - - # Use latest kernel. - boot.kernelPackages = pkgs.linuxPackages_latest; - - networking.hostName = "chexit"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable networking - networking.networkmanager.enable = true; - - # Set your time zone. time.timeZone = "Europe/Moscow"; - # Select internationalisation properties. - i18n.defaultLocale = "en_US.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"; + i18n = { + defaultLocale = "en_US.UTF-8"; + 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"; + }; }; - # Enable the X11 windowing system. - # You can disable this if you're only using the Wayland session. - services.xserver.enable = true; - - # Enable the KDE Plasma Desktop Environment. - services.displayManager.sddm.enable = true; - services.desktopManager.plasma6.enable = true; - - services.xserver.videoDrivers = [ "nvidia" ]; - hardware.nvidia = { - modesetting.enable = true; - powerManagement.enable = true; - open = false; - nvidiaSettings = true; - }; - - hardware.graphics = { - enable = true; - enable32Bit = true; - }; - - qt = { - enable = true; - platformTheme = "kde"; - style = "kvantum"; - }; - - environment.sessionVariables = { - QT_PLUGIN_PATH = [ "${pkgs.kdePackages.qtstyleplugin-kvantum}/lib/qt-6/plugins" ]; - }; - - programs.zsh.enable = true; - users.users.chexit.shell = pkgs.zsh; - programs.zsh.enableCompletion = true; - programs.zsh.autosuggestions.enable = true; - programs.zsh.syntaxHighlighting.enable = true; - programs.zsh.promptInit = "source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - - # Configure keymap in X11 - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable sound with pipewire. - services.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - # If you want to use JACK applications, uncomment this - #jack.enable = true; - - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - #media-session.enable = true; - }; - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. users.users.chexit = { isNormalUser = true; description = "chexit"; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; [ - kdePackages.kate - # thunderbird - ]; + shell = pkgs.zsh; + extraGroups = [ "networkmanager" "wheel" "docker" ]; }; - fonts.packages = with pkgs; [ - geist-font - jetbrains-mono - nerd-fonts.symbols-only - ]; - - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - }; - - services.tailscale.enable = true; - programs.throne = { enable = true; tunMode.enable = true; }; - # Install firefox. - # programs.firefox.enable = true; + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; - # Allow unfree packages - # nixpkgs.config.allowUnfree = true; - - # List packages installed in system profile. To search, run: - # $ nix search wget - # environment.systemPackages = with pkgs; [ - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - # wget - # nano - # git - # ntfs3g - #]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = 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 = "25.11"; # Did you read the comment? + services.tailscale.enable = true; + virtualisation.docker.enable = true; + system.stateVersion = "25.11"; } diff --git a/desktop.nix b/desktop.nix new file mode 100644 index 0000000..4449b32 --- /dev/null +++ b/desktop.nix @@ -0,0 +1,47 @@ +{ pkgs, ... }: + +{ + services = { + xserver = { + enable = true; + xkb = { + layout = "us"; + variant = ""; + }; + }; + displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + desktopManager.plasma6.enable = true; + printing.enable = true; + pulseaudio.enable = false; + pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse.enable = true; + }; + }; + + security.rtkit.enable = true; + + qt = { + enable = true; + platformTheme = "kde"; + style = "kvantum"; + }; + + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + QT_PLUGIN_PATH = [ "${pkgs.kdePackages.qtstyleplugin-kvantum}/lib/qt-6/plugins" ]; + }; + + fonts.packages = with pkgs; [ + geist-font + jetbrains-mono + nerd-fonts.symbols-only + ]; +} diff --git a/nvidia.nix b/nvidia.nix new file mode 100644 index 0000000..22b2f23 --- /dev/null +++ b/nvidia.nix @@ -0,0 +1,24 @@ +{ ... }: + +{ + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware = { + nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + open = false; + nvidiaSettings = true; + }; + graphics = { + enable = true; + enable32Bit = true; + }; + }; + + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "nvidia"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; + }; +} diff --git a/packages.nix b/packages.nix index 770f1e1..e5ee8fc 100644 --- a/packages.nix +++ b/packages.nix @@ -1,25 +1,27 @@ -{ pkgs, ... }: { +{ pkgs, ... }: + +{ nixpkgs.config.allowUnfree = true; environment.systemPackages = with pkgs; [ + # системное wget git - htop - btop + htop + btop nvtopPackages.nvidia ntfs3g kdePackages.qtstyleplugin-kvantum - + kdePackages.kate + # софт firefox vesktop materialgram termius - - # dev - #jetbrains.toolbox + + # dev vscode - docker docker-compose ]; } diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..5575e6d --- /dev/null +++ b/shell.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestions.enable = true; + syntaxHighlighting.enable = true; + promptInit = "source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + }; +}