diff --git a/hosts/garand-laptop/config.nix b/hosts/garand-laptop/config.nix index 6a5fcaf..99fe329 100644 --- a/hosts/garand-laptop/config.nix +++ b/hosts/garand-laptop/config.nix @@ -1,17 +1,22 @@ -{ - inputs, - config, - pkgs, - host, - username, - options, - ... -}: let +{...}: let inherit (import ./variables.nix) keyboardLayout; in { imports = [ ./hardware.nix ./users.nix + + ./config/boot.nix + ./config/drivers.nix + ./config/hardware.nix + ./config/localization.nix + ./config/networking.nix + ./config/nixpkgs.nix + ./config/programs.nix + ./config/security.nix + ./config/services.nix + ./config/stylix.nix + ./config/virtualization.nix + ../../modules/amd-drivers.nix ../../modules/nvidia-drivers.nix ../../modules/nvidia-prime-drivers.nix @@ -20,799 +25,10 @@ in { ../../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"; diff --git a/hosts/garand-laptop/config/boot.nix b/hosts/garand-laptop/config/boot.nix new file mode 100644 index 0000000..7bf4541 --- /dev/null +++ b/hosts/garand-laptop/config/boot.nix @@ -0,0 +1,37 @@ +{ + config, + pkgs, + ... +}: { + 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; + }; +} diff --git a/hosts/garand-laptop/config/drivers.nix b/hosts/garand-laptop/config/drivers.nix new file mode 100644 index 0000000..e4a14db --- /dev/null +++ b/hosts/garand-laptop/config/drivers.nix @@ -0,0 +1,15 @@ +{...}: { + # 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; +} diff --git a/hosts/garand-laptop/config/hardware.nix b/hosts/garand-laptop/config/hardware.nix new file mode 100644 index 0000000..97d3948 --- /dev/null +++ b/hosts/garand-laptop/config/hardware.nix @@ -0,0 +1,23 @@ +{pkgs, ...}: { + 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; + }; + }; +} diff --git a/hosts/garand-laptop/config/localization.nix b/hosts/garand-laptop/config/localization.nix new file mode 100644 index 0000000..1ee5730 --- /dev/null +++ b/hosts/garand-laptop/config/localization.nix @@ -0,0 +1,19 @@ +{...}: { + # 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"; + }; + }; +} diff --git a/hosts/garand-laptop/config/networking.nix b/hosts/garand-laptop/config/networking.nix new file mode 100644 index 0000000..1d07fdd --- /dev/null +++ b/hosts/garand-laptop/config/networking.nix @@ -0,0 +1,13 @@ +{ + host, + options, + ... +}: { + # 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"]; + }; +} diff --git a/hosts/garand-laptop/config/nixpkgs.nix b/hosts/garand-laptop/config/nixpkgs.nix new file mode 100644 index 0000000..1bb46b1 --- /dev/null +++ b/hosts/garand-laptop/config/nixpkgs.nix @@ -0,0 +1,379 @@ +{ + inputs, + pkgs, + ... +}: { + # 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}"]; + }; + + nixpkgs.config = { + allowUnfree = true; + pulseaudio = 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 + ]; + }; + + environment = { + variables = { + ZANEYOS_VERSION = "2.2"; + ZANEYOS = "true"; + }; + + 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="; + } + ]; + }) + ]; + }; +} diff --git a/hosts/garand-laptop/config/programs.nix b/hosts/garand-laptop/config/programs.nix new file mode 100644 index 0000000..0da5ee2 --- /dev/null +++ b/hosts/garand-laptop/config/programs.nix @@ -0,0 +1,110 @@ +{pkgs, ...}: { + 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 + ]; + }; + }; +} diff --git a/hosts/garand-laptop/config/security.nix b/hosts/garand-laptop/config/security.nix new file mode 100644 index 0000000..09de7c0 --- /dev/null +++ b/hosts/garand-laptop/config/security.nix @@ -0,0 +1,36 @@ +{...}: { + # 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 + ''; + }; + }; +} diff --git a/hosts/garand-laptop/config/services.nix b/hosts/garand-laptop/config/services.nix new file mode 100644 index 0000000..b2ebefe --- /dev/null +++ b/hosts/garand-laptop/config/services.nix @@ -0,0 +1,109 @@ +{ + pkgs, + username, + ... +}: let + inherit (import ../variables.nix) keyboardLayout; +in { + # Services to start + services = { + blueman.enable = true; + 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 + ]; + }; + 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 + ''; + }; +} diff --git a/hosts/garand-laptop/config/stylix.nix b/hosts/garand-laptop/config/stylix.nix new file mode 100644 index 0000000..811a609 --- /dev/null +++ b/hosts/garand-laptop/config/stylix.nix @@ -0,0 +1,63 @@ +{pkgs, ...}: { + # 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; + }; + }; + }; + + 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 + ]; + }; +} diff --git a/hosts/garand-laptop/config/virtualization.nix b/hosts/garand-laptop/config/virtualization.nix new file mode 100644 index 0000000..f1cc25e --- /dev/null +++ b/hosts/garand-laptop/config/virtualization.nix @@ -0,0 +1,15 @@ +{pkgs, ...}: { + # Virtualization / Containers + virtualisation = { + libvirtd.enable = true; + docker = { + enable = true; + package = pkgs.docker; + }; + # podman = { + # enable = true; + # dockerCompat = true; + # defaultNetwork.settings.dns_enabled = true; + # }; + }; +}