{ config, pkgs, lib, ... }: { imports = [ ./system-utils.nix # CLI Tools ./user-apps.nix # GUI Apps ]; # ========================================== # 1. CORE SYSTEM SETTINGS # ========================================== # Bootloader (Standard UEFI) boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; # Networking networking.networkmanager.enable = true; # Time & Locale time.timeZone = "Europe/London"; i18n.defaultLocale = "en_US.UTF-8"; # ========================================== # 2. USER ACCOUNT # ========================================== users.users.nimmo = { isNormalUser = true; description = "Nimmo"; extraGroups = [ "networkmanager" "wheel" "docker" ]; }; # ========================================== # 3. COMMON SERVICES # ========================================== # Firmware & Updates services.fwupd.enable = true; # Power (Standard Profile) services.power-profiles-daemon.enable = true; # Filesystem Maintenance services.fstrim.enable = true; zramSwap.enable = true; services.btrfs.autoScrub = { enable = true; interval = "weekly"; fileSystems = [ "/" ]; }; # Garbage Collection nix.gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 7d"; }; # Bluetooth hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; # Audio (Pipewire) security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; # Docker virtualisation.docker.enable = true; # Steam programs.steam = { enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; }; # ========================================== # 4. DESKTOP ENVIRONMENT (Plasma 6) # ========================================== services.xserver.enable = true; services.displayManager.sddm.enable = true; services.displayManager.sddm.wayland.enable = true; services.displayManager.sddm.autoNumlock = true; services.desktopManager.plasma6.enable = true; services.xserver.xkb.layout = "gb"; # ========================================== # 5. NIX CORE SETTINGS # ========================================== nixpkgs.config.allowUnfree = true; nix.settings.experimental-features = [ "nix-command" "flakes" ]; system.stateVersion = "24.11"; # ========================================== # 6. POLISHING # ========================================== fonts.packages = with pkgs; [ noto-fonts noto-fonts-cjk-sans noto-fonts-emoji nerd-fonts.jetbrains-mono ]; programs.nix-ld.enable = true; programs.nix-ld.libraries = with pkgs; [ stdenv.cc.cc.lib zlib fuse3 icu nss openssl curl expat ]; environment.variables.EDITOR = "nano"; }