{ config, lib, pkgs, inputs, ... }: { imports = [ /etc/nixos/hardware-configuration.nix ]; # Nix settings ## Limit Cores on rebuild and enable Flakes nix.settings = { cores = 6; download-buffer-size = 524288000; experimental-features = [ "nix-command" "flakes" ]; }; ## Allow unfree packages and add pkgs.unstable nixpkgs = { config = { allowUnfree = true; packageOverrides = pkgs: { unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") { config = { allowUnfree = true; }; }; }; }; }; ## Optimise Nix store on rebuild and collect garbage as a service nix.optimise.automatic = true; nix.gc = { automatic = true; dates = "daily"; options = "--delete-older-than 5d"; }; # Bootloader theming and plymouth boot = { loader = { timeout = 2; efi = { canTouchEfiVariables = true; }; grub = { efiSupport = true; device = "nodev"; theme = pkgs.catppuccin-grub; }; }; plymouth = { enable = true; theme = "catppuccin-mocha"; themePackages = with pkgs; [ # By default we would install all themes (catppuccin-plymouth.override { variant = "mocha"; }) ]; }; }; ## Use latest kernel boot.kernelPackages = pkgs.linuxPackages_latest; # Bluetooth and Networking hardware.bluetooth.enable = true; hardware.xpadneo.enable = true; networking.networkmanager.enable = true; networking.networkmanager.dns = "none"; networking.nameservers = [ "1.1.1.1" "8.8.8.8" ]; # Locale time.timeZone = "Europe/London"; i18n.defaultLocale = "en_GB.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "en_GB.UTF-8"; LC_IDENTIFICATION = "en_GB.UTF-8"; LC_MEASUREMENT = "en_GB.UTF-8"; LC_MONETARY = "en_GB.UTF-8"; LC_NAME = "en_GB.UTF-8"; LC_NUMERIC = "en_GB.UTF-8"; LC_PAPER = "en_GB.UTF-8"; LC_TELEPHONE = "en_GB.UTF-8"; LC_TIME = "en_GB.UTF-8"; }; # Userspace Stuff ## Keymap services.xserver.xkb = { layout = "gb"; variant = ""; }; console.keyMap = "uk"; ## Desktop services.xserver.enable = true; programs.hyprland = { enable = true; package = pkgs.unstable.hyprland; }; security.polkit.enable = true; ## Audio Server services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; # Local User ## User config users.users.user01 = { isNormalUser = true; shell = pkgs.zsh; description = "user01"; extraGroups = [ "input" "root" "plugdev" "bluetooth" "networkmanager" "docker" "wheel" ]; packages = with pkgs; let input = { package, output ? "default", }: inputs.${package}.packages.${pkgs.stdenv.hostPlatform.system}.${output}; wrap = { name, pkg, modules, }: pkgs.symlinkJoin { inherit name; paths = [ pkg ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/${name} \ --prefix PATH : ${pkgs.lib.makeBinPath modules} ''; }; in [ # Ricing ## Desktop bibata-cursors catppuccin-gtk waybar hyprlock dunst wlogout wpaperd ## Desktop Utilities grimblast gsettings-desktop-schemas wl-clipboard (wrap { name = "otter-launcher"; pkg = ( input { package = "otter-launcher"; } ); modules = [ chafa jq ]; }) (input { package = "fsel"; }) # Terminal ## Styling / Functionality oh-my-posh carapace zsh-autocomplete bat ## Tools lazygit p7zip-rar any-nix-shell dysk bluetui fzf ripgrep wget htop playerctl git lsd (input { package = "doot"; }) ## Other CLI Apps nodejs fastfetch zellij cava cmatrix opencode tailscale syncthing (input { package = "norgolith"; }) jellyfin-tui # Apps ## Actual Useful Stuff nemo kitty firefox gotify-desktop pavucontrol mpv input-remapper ## Other Nonsense tor-browser techmino prismlauncher delfin (input { package = "chataigne"; }) ]; }; ## Zsh programs.zsh = { enable = true; enableCompletion = true; enableBashCompletion = true; autosuggestions.enable = true; syntaxHighlighting.enable = true; histSize = 10000; ohMyZsh = { enable = true; plugins = [ "git" "dirhistory" "history" ]; }; }; users.defaultUserShell = pkgs.zsh; ## User programs programs = { dconf.enable = true; xfconf.enable = true; gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; # For wlogout svgs }; ## User Services services = { gvfs.enable = true; input-remapper.enable = true; tailscale.enable = true; printing.enable = true; upower.enable = true; openssh.enable = true; avahi.enable = true; }; ## Fonts fonts.packages = with pkgs; [ nerd-fonts.fira-mono ]; fonts.fontconfig.defaultFonts.serif = [ "Fira Mono Nerd Font" ]; # System Packages environment.systemPackages = with pkgs; [ # Utilities inputs.nvim-wrapped.packages.${stdenv.hostPlatform.system}.default vim unzip python310 usbutils curlWithGnuTls # System mesa vulkan-tools gvfs clang xdg-desktop-portal xdg-desktop-portal-hyprland glib gnutls liblzf librsvg appimage-run libnotify gsettings-desktop-schemas ]; # The comment system.stateVersion = "25.05"; # Did you read the comment? }