# ============================================================================ # Boot configuration module # ============================================================================ # This module defines: # - Bootloader configuration (systemd-boot with Plymouth) # - Timezone and locale settings # - Systemd sleep configuration # # Only applies to: # - Linux systems (not Darwin/macOS) # - Systems with actual boot hardware (not containers/WSL) { config, lib, pkgs, ... }: let # Check if this is a bootable system (not container, not WSL) isBootable = !(config.boot.isContainer or false) && (pkgs.stdenv.isLinux); in { config = lib.mkIf isBootable { boot = { loader.systemd-boot.enable = lib.mkDefault true; loader.efi.canTouchEfiVariables = lib.mkDefault true; plymouth.enable = lib.mkDefault true; # Enable "Silent boot" consoleLogLevel = 3; initrd.verbose = false; # Hide the OS choice for bootloaders. # It's still possible to open the bootloader list by pressing any key # It will just not appear on screen unless a key is pressed loader.timeout = lib.mkDefault 0; }; # Set your time zone. time.timeZone = "America/New_York"; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "en_US.UTF-8"; LC_IDENTIFICATION = "en_US.UTF-8"; LC_MEASUREMENT = "en_US.UTF-8"; LC_MONETARY = "en_US.UTF-8"; LC_NAME = "en_US.UTF-8"; LC_NUMERIC = "en_US.UTF-8"; LC_PAPER = "en_US.UTF-8"; LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8"; }; systemd.sleep.extraConfig = '' SuspendState=freeze HibernateDelaySec=2h ''; }; }