{ inputs, config, pkgs, host, username, options, ... }: let inherit (import ./variables.nix) keyboardLayout; in { imports = [ ./hardware.nix ./users.nix ../../modules/amd-drivers.nix ../../modules/nvidia-drivers.nix ../../modules/nvidia-prime-drivers.nix ../../modules/intel-drivers.nix ../../modules/vm-guest-services.nix ../../modules/local-hardware-clock.nix ]; boot = { # Kernel kernelPackages = pkgs.linuxPackages_zen; # This is for OBS Virtual Cam Support kernelModules = ["v4l2loopback"]; extraModulePackages = [config.boot.kernelPackages.v4l2loopback]; # Needed For Some Steam Games kernel.sysctl = { "vm.max_map_count" = 2147483642; }; # Bootloader. loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = true; }; # Make /tmp a tmpfs tmp = { useTmpfs = false; tmpfsSize = "30%"; }; # Appimage Support 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''; }; plymouth.enable = true; }; # Styling Options stylix = { enable = true; image = ../../config/wallpapers/attack-on-titan-mikasa-ackerman.jpg; # base16Scheme = { # base00 = "232136"; # base01 = "2a273f"; # base02 = "393552"; # base03 = "6e6a86"; # base04 = "908caa"; # base05 = "e0def4"; # base06 = "e0def4"; # base07 = "56526e"; # base08 = "eb6f92"; # base09 = "f6c177"; # base0A = "ea9a97"; # base0B = "3e8fb0"; # base0C = "9ccfd8"; # base0D = "c4a7e7"; # base0E = "f6c177"; # base0F = "56526e"; # }; polarity = "dark"; opacity.terminal = 0.8; cursor = { package = pkgs.bibata-cursors; name = "Bibata-Modern-Ice"; size = 24; }; fonts = { monospace = { package = pkgs.nerd-fonts.fira-mono; name = "FiraCode Nerd Fonts Mono"; }; sansSerif = { package = pkgs.nerd-fonts.fira-code; name = "FiraCode Nerd Fonts"; }; serif = { package = pkgs.nerd-fonts.fira-code; name = "FiraCode Nerd Fonts"; }; sizes = { applications = 12; terminal = 15; desktop = 11; popups = 12; }; }; }; # Extra Module Options drivers = { amdgpu.enable = true; nvidia.enable = false; nvidia-prime = { enable = false; intelBusID = ""; nvidiaBusID = ""; }; intel.enable = false; }; vm.guest-services.enable = false; local.hardware-clock.enable = false; # Enable networking networking = { nameservers = ["176.9.1.117" "213.196.191.96" "2a01:4f8:151:34aa::198"]; networkmanager.enable = true; hostName = host; timeServers = options.networking.timeServers.default ++ ["pool.ntp.org"]; }; # Set your time zone. time.timeZone = "Europe/Warsaw"; i18n = { defaultLocale = "pl_PL.UTF-8"; extraLocaleSettings = { LC_ADDRESS = "pl_PL.UTF-8"; LC_IDENTIFICATION = "pl_PL.UTF-8"; LC_MEASUREMENT = "pl_PL.UTF-8"; LC_MONETARY = "pl_PL.UTF-8"; LC_NAME = "pl_PL.UTF-8"; LC_NUMERIC = "pl_PL.UTF-8"; LC_PAPER = "pl_PL.UTF-8"; LC_TELEPHONE = "pl_PL.UTF-8"; LC_TIME = "pl_PL.UTF-8"; }; }; programs = { firefox.enable = false; starship = { enable = true; settings = { add_newline = false; buf = { symbol = " "; }; c = { symbol = " "; }; directory = { read_only = " 󰌾"; }; docker_context = { symbol = " "; }; fossil_branch = { symbol = " "; }; git_branch = { symbol = " "; }; golang = { symbol = " "; }; hg_branch = { symbol = " "; }; hostname = { ssh_symbol = " "; }; lua = { symbol = " "; }; memory_usage = { symbol = "󰍛 "; }; meson = { symbol = "󰔷 "; }; nim = { symbol = "󰆥 "; }; nix_shell = { symbol = " "; }; nodejs = { symbol = " "; }; ocaml = { symbol = " "; }; package = { symbol = "󰏗 "; }; python = { symbol = " "; }; rust = { symbol = " "; }; swift = { symbol = " "; }; zig = { symbol = " "; }; }; }; dconf.enable = true; seahorse.enable = true; fuse.userAllowOther = true; mtr.enable = true; gnupg.agent = { enable = true; enableSSHSupport = true; }; virt-manager.enable = true; steam = { enable = true; gamescopeSession.enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; }; auto-cpufreq = { enable = true; settings = { charger = { governor = "performance"; turbo = "auto"; }; battery = { governor = "powersave"; turbo = "auto"; }; }; }; thunar = { enable = true; plugins = with pkgs.xfce; [ thunar-archive-plugin thunar-volman ]; }; }; nixpkgs.config = { allowUnfree = true; pulseaudio = true; }; users = { mutableUsers = true; }; environment.systemPackages = with pkgs; [ wget killall eza git cmatrix lolcat libvirt lxqt.lxqt-policykit lm_sensors unzip unrar libnotify v4l-utils ydotool duf ncdu wl-clipboard pciutils ffmpeg socat cowsay ripgrep lshw bat pkg-config meson hyprpicker ninja brightnessctl virt-viewer swappy appimage-run networkmanagerapplet yad inxi playerctl nh nixfmt-rfc-style discord libvirt swww grim slurp file-roller swaynotificationcenter imv mpv gimp pavucontrol tree greetd.tuigreet librewolf protonup plex-media-player plexamp bitwarden-desktop vlc nixd ungoogled-chromium slack alejandra tutanota-desktop ookla-speedtest rustdesk bun docker docker-compose docker-slim sl nodejs kdePackages.kdenlive galculator obs-studio thefuck cifs-utils libreoffice bastet nsnake exiftool python3 figlet fortune wtf pipes cava wineWowPackages.waylandFull # wine64 lazydocker lazygit lutris (vscode-with-extensions.override { vscode = vscodium; vscodeExtensions = with vscode-extensions; [ batisteo.vscode-django bradlc.vscode-tailwindcss christian-kohler.npm-intellisense christian-kohler.path-intellisense continue.continue davidanson.vscode-markdownlint dbaeumer.vscode-eslint donjayamanne.githistory esbenp.prettier-vscode ethansk.restore-terminals formulahendry.auto-close-tag formulahendry.auto-rename-tag grapecity.gc-excelviewer gruntfuggly.todo-tree hediet.vscode-drawio jnoortheen.nix-ide mechatroner.rainbow-csv ms-azuretools.vscode-docker ms-python.debugpy ms-python.flake8 ms-python.python ms-python.vscode-pylance njpwerner.autodocstring octref.vetur oderwat.indent-rainbow shd101wyy.markdown-preview-enhanced streetsidesoftware.code-spell-checker supermaven.supermaven tomoki1207.pdf visualstudioexptteam.intellicode-api-usage-examples visualstudioexptteam.vscodeintellicode vscode-icons-team.vscode-icons vue.volar wholroyd.jinja yoavbls.pretty-ts-errors ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ { name = "goto-alias"; publisher = "antfu"; version = "0.2.1"; hash = "sha256-BJBJVG/zW2BW6K0UqQ4EE12VVIxW3g+z5CecZXRPIrM="; } { name = "vite"; publisher = "antfu"; version = "0.2.5"; hash = "sha256-F3uaqoaLXLE7M8OPzNIIUSraTBeRMwtjxrbgQyMIyZE="; } { name = "django-html"; publisher = "bibhasdn"; version = "1.3.0"; hash = "sha256-7xVJVcjmwl6917lqkTa0KFwMLkAvHkNT2wVML14gVCk="; } { name = "django"; publisher = "bigonesystems"; version = "1.0.2"; hash = "sha256-UBmvaCiNQ84qpAObDWyFL18TVFBn0z/6SBDKWeAIzTc="; } { name = "align-imports"; publisher = "danielcanada"; version = "0.1.0"; hash = "sha256-Aj87mxOGer24O24/4/bGQqgLpgoBvfwOCKQyJ8NLplU="; } { name = "python-environment-manager"; publisher = "donjayamanne"; version = "1.2.7"; hash = "sha256-w3csu6rJm/Z6invC/TR7tx6Aq5DD77VM62nem8/QMlg="; } { name = "python-extension-pack"; publisher = "donjayamanne"; version = "1.7.0"; hash = "sha256-ewOw6nMVzNSYddLcCBGKVNvllztFwhEtncE2RFeFcOc="; } { name = "one-dark-pro-monokai-darker"; publisher = "eserozvataf"; version = "1.1.0"; hash = "sha256-jUjBiy0CD7jw2WBMvM3h8bEC2ySEuj7532dC3v9lpyI="; } { name = "imports-sorter"; publisher = "glhrmoura"; version = "0.1.6"; hash = "sha256-M+SWEJAwn8wPJJ+abi2mN0ziK7P6Sjt0iRAKSyTWvkg="; } { name = "bootstrap-intellisense"; publisher = "hossaini"; version = "2.0.2"; hash = "sha256-io6mPkF19EYo1tVTnd87EWX1mH9zAz0Zzks6v5XN3UE="; } { name = "tab-indent-space-align"; publisher = "j-zeppenfeld"; version = "0.0.3"; hash = "sha256-+WEdYJOVWW7YumfzLkvZmrnpUiC85oLsG1BKMwL1NHc="; } { name = "bun-lockb"; publisher = "jaaxxx"; version = "0.0.7"; hash = "sha256-CkdH/luVTFycRn4Td6ovFnEQep+tVEIXsyUjhfJwfN4="; } { name = "search-node-modules"; publisher = "jasonnutter"; version = "1.3.0"; hash = "sha256-X2CkCVF46McnXDlASlRHKixlAzR+hU4ys8A8JsbpfYI="; } { name = "polacode-2019"; publisher = "jeff-hykin"; version = "0.6.1"; hash = "sha256-SbfsD28gaVHAmJskUuc1Q8kA47jrVa3OO5Ur7ULk3jI="; } { name = "vsc-python-indent"; publisher = "kevinrose"; version = "1.19.0"; hash = "sha256-gX0L416RXIQ9S4kFguEJJ7u4GSo7WbpifXmL/mWCU08="; } { name = "json-to-ts"; publisher = "mariusalchimavicius"; version = "1.8.0"; hash = "sha256-WoSycVtUAkVXv7BDuh+jFbnaU1IdVLvVjOYuIuUp79M="; } { name = "inline-fold"; publisher = "moalamri"; version = "0.2.6"; hash = "sha256-VPEp4gtXH787iK0RxjfciIZO1cjkYacjNELzjzcs/FI="; } { name = "vscode-language-pack-pl"; publisher = "ms-ceintl"; version = "1.97.2025020509"; hash = "sha256-D2x745VgarYs6vRo6Eiyx7Zy4FHmFfF01xddbWlLmjM="; } { name = "mdc"; publisher = "nuxt"; version = "0.2.0"; hash = "sha256-M/29ZDg1sva9msGgRe6xqpCYDpW6X/BqKxmiJhzeVXQ="; } { name = "nuxt-vscode-extentions"; publisher = "nuxtr"; version = "0.0.7"; hash = "sha256-LMShrm9fQHr0M8yXHSziq4NZWfK+n1azc5bjiM972O0="; } { name = "nuxtr-vscode"; publisher = "nuxtr"; version = "0.2.16"; hash = "sha256-DVoq8zdlJ2ch8PCG34f1PRkILym9XdclUHQ9s2B5OME="; } { name = "bun-vscode"; publisher = "oven"; version = "0.0.26"; hash = "sha256-klMkKAorWJj2o015FWbQQfpmYe4JM0UOM+WVh+YPtI4="; } { name = "csv-to-table"; publisher = "phplasma"; version = "1.4.1"; hash = "sha256-npe7cQ4lAZr8HCyQSJmVsCDUJcOhGhL6y1QtUtqUY50="; } { name = "nuxt-snippets"; publisher = "praburangki"; version = "1.8.0"; hash = "sha256-qrWrrDO/Ie/mdygw18C0mrPzNQzZLsd+fapUyTVhc14="; } { name = "bash-debug"; publisher = "rogalmic"; version = "0.3.9"; hash = "sha256-f8FUZCvz/PonqQP9RCNbyQLZPnN5Oce0Eezm/hD19Fg="; } { name = "vs-code-prettier-eslint"; publisher = "rvest"; version = "6.0.0"; hash = "sha256-PogNeKhIlcGxUKrW5gHvFhNluUelWDGHCdg5K+xGXJY="; } { name = "vscode-preview-docs"; publisher = "selemondev"; version = "0.1.7"; hash = "sha256-Q9bEIb2m6cqHtdVjOaNivfYvbc5/VVdabM2NVTwBOFA="; } { name = "svg-preview"; publisher = "simonsiefke"; version = "2.8.3"; hash = "sha256-hIVe1MmkyuHoDa56ZQUsSAGMlKWABoQ0FBOfgZZDbCw="; } { name = "autoimport"; publisher = "steoates"; version = "1.5.4"; hash = "sha256-7iIwJJsoNbtTopc+BQ+195aSCLqdNAaGtMoxShyhBWY="; } { name = "code-spell-checker-polish"; publisher = "streetsidesoftware"; version = "2.1.3"; hash = "sha256-MZeTvK9dO4Kj6hK+afJPWGmnKBtlLrrnoqtUd5s2te0="; } { name = "vscode-pets"; publisher = "tonybaloney"; version = "1.30.0"; hash = "sha256-RxOA6xQ29JuB0NzEqMDkF9W1U+AsvgAOzGbtIUw0WyM="; } { name = "explorer"; publisher = "vitest"; version = "1.12.1"; hash = "sha256-WG2/MWxU/XhSOjXuBoyszpD/HFb8mfrt525povSEES4="; } ]; }) ]; fonts = { packages = with pkgs; [ noto-fonts-emoji noto-fonts-cjk-sans font-awesome # Commenting Symbola out to fix install this will need to be fixed or an alternative found. # symbola material-icons ]; }; environment.variables = { ZANEYOS_VERSION = "2.2"; ZANEYOS = "true"; }; # Extra Portal Configuration xdg.portal = { enable = true; xdgOpenUsePortal = true; wlr.enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal ]; configPackages = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland pkgs.xdg-desktop-portal ]; }; # Services to start services = { xserver = { enable = false; xkb = { layout = "${keyboardLayout}"; variant = ""; }; }; resolved = { enable = true; dnssec = "true"; domains = ["~."]; # "use as default interface for all requests" # (see man resolved.conf) # let Avahi handle mDNS publication extraConfig = '' DNSOverTLS=opportunistic MulticastDNS=resolve ''; llmnr = "true"; }; greetd = { enable = true; vt = 3; settings = { default_session = { # Wayland Desktop Manager is installed only for user ryan via home-manager! user = username; # .wayland-session is a script generated by home-manager, which links to the current wayland compositor(sway/hyprland or others). # with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config here. # command = "$HOME/.wayland-session"; # start a wayland session directly without a login manager command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager }; }; }; smartd = { enable = false; autodetect = true; }; libinput.enable = true; fstrim.enable = true; gvfs.enable = true; openssh.enable = true; flatpak.enable = false; printing = { enable = true; drivers = [ # pkgs.hplipWithPlugin ]; }; # auto-cpufreq.enable = true; gnome.gnome-keyring.enable = true; avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; ipp-usb.enable = true; syncthing = { enable = false; user = "${username}"; dataDir = "/home/${username}"; configDir = "/home/${username}/.config/syncthing"; }; pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; pulseaudio = { enable = false; extraConfig = "load-module module-combine-sink"; }; rpcbind.enable = false; nfs.server.enable = false; # ollama = { # enable = true; # package = pkgs.ollama; # # acceleration = "rocm"; # # environmentVariables = { # # HCC_AMDGPU_TARGET = "gfx1036"; # # }; # # rocmOverrideGfx = "10.3.6"; # loadModels = [ # # "deepseek-r1:1.5b" # # "deepseek-r1:7b" # ]; # }; # open-webui = { # enable = true; # package = pkgs.open-webui; # }; }; systemd.services.flatpak-repo = { path = [pkgs.flatpak]; script = '' flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo ''; }; hardware = { sane = { enable = true; extraBackends = [pkgs.sane-airscan]; disabledDefaultBackends = ["escl"]; }; logitech = { wireless = { enable = false; enableGraphical = false; }; }; bluetooth = { enable = true; powerOnBoot = true; }; graphics = { enable = true; enable32Bit = true; }; }; services.blueman.enable = true; # Security / Polkit security = { rtkit.enable = true; polkit = { enable = true; extraConfig = '' polkit.addRule(function(action, subject) { if ( subject.isInGroup("users") && ( action.id == "org.freedesktop.login1.reboot" || action.id == "org.freedesktop.login1.reboot-multiple-sessions" || action.id == "org.freedesktop.login1.power-off" || action.id == "org.freedesktop.login1.power-off-multiple-sessions" ) ) { return polkit.Result.YES; } }) ''; }; pam.services.swaylock = { text = '' auth include login ''; }; sudo = { enable = true; extraConfig = '' Defaults pwfeedback ''; }; }; # Optimization settings and garbage collection automation nix = { settings = { auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; substituters = ["https://hyprland.cachix.org"]; trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; }; gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 7d"; }; nixPath = ["nixpkgs=${inputs.nixpkgs}"]; }; # Virtualization / Containers virtualisation = { libvirtd.enable = true; docker = { enable = true; package = pkgs.docker; }; # podman = { # enable = true; # dockerCompat = true; # defaultNetwork.settings.dns_enabled = true; # }; }; # fileSystems."/mnt/Garand-Library" = { # device = "//192.168.1.156/Garand-Library"; # fsType = "cifs"; # options = [ # "rw" # Odczyt i zapis # "uid=1000" # UID użytkownika montującego (np. 1000 to często UID pierwszego użytkownika) # "gid=100" # GID grupy użytkownika montującego # "file_mode=0775" # Uprawnienia dla plików # "dir_mode=0775" # Uprawnienia dla katalogów # "credentials=/etc/smb-credentials" # ]; # }; # services.openvpn.servers = { # RO-P2P = { # config = '' # config /home/garand_plg/Documents/RO-ovpn-tcp.ovpn # ''; # updateResolvConf = true; # }; # }; console.keyMap = "${keyboardLayout}"; # 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 = "23.11"; # Did you read the comment? }