{ config, inputs, pkgs, hostname, ... }: { # NixOS version. system.stateVersion = "25.05"; # Enable flakes. nix.settings.experimental-features = [ "nix-command" "flakes" ]; # Set $NIX_PATH. nix.nixPath = ["nixpkgs=${inputs.nixpkgs}"]; # Enable redistributable firmware. hardware.enableRedistributableFirmware = true; # Enable firmware updates. services.fwupd.enable = true; # Set time zone. time.timeZone = "Australia/Perth"; # Select internationalisation properties. i18n.defaultLocale = "en_AU.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "en_AU.UTF-8"; LC_IDENTIFICATION = "en_AU.UTF-8"; LC_MEASUREMENT = "en_AU.UTF-8"; LC_MONETARY = "en_AU.UTF-8"; LC_NAME = "en_AU.UTF-8"; LC_NUMERIC = "en_AU.UTF-8"; LC_PAPER = "en_AU.UTF-8"; LC_TELEPHONE = "en_AU.UTF-8"; LC_TIME = "en_AU.UTF-8"; }; # Configure keymap in X11. services.xserver.xkb = { layout = "us"; variant = ""; }; # Enable networking. networking.networkmanager.enable = true; users.groups.networkmanager.members = ["fern"]; # Set hostname networking.hostName = hostname; # Define a user account. users.users.fern = { isNormalUser = true; uid = 1000; description = "Fern Garden"; extraGroups = ["wheel"]; }; # Use fish shell programs.fish.enable = true; # https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell programs.bash = { interactiveShellInit = '' if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] then shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" exec fish $LOGIN_OPTION fi ''; }; # Enable nh. programs.nh = { enable = true; clean = { enable = true; extraArgs = "--keep-since 3d"; }; }; # https://discourse.nixos.org/t/slow-build-at-building-man-cache/52365/2 documentation.man.generateCaches = false; # Enable all terminfo. environment.enableAllTerminfo = true; # Enable avahi hostname resolution. services.avahi = { enable = true; nssmdns4 = true; publish = { enable = true; addresses = true; domain = true; userServices = true; }; }; # Universal styling. stylix = { enable = true; base16Scheme = "${pkgs.base16-schemes}/share/themes/everforest-dark-hard.yaml"; polarity = "dark"; cursor = { name = "everforest-cursors"; package = pkgs.phinger-cursors-everforest; size = 32; }; fonts = { sizes = { applications = 11; desktop = config.stylix.fonts.sizes.applications; popups = config.stylix.fonts.sizes.applications; terminal = 12; }; sansSerif = { package = pkgs.adwaita-fonts; name = "Adwaita Sans"; }; serif = config.stylix.fonts.sansSerif; monospace = { package = pkgs.iosevka; name = "IosevkaCustom"; }; emoji = { package = pkgs.noto-fonts-emoji; name = "Noto Color Emoji"; }; }; }; }