{ config, pkgs, lib, ... }: { programs.hyprland = { enable = true; xwayland.enable = true; }; services.getty.autologinUser = config.my.username; # Boot straight into Hyprland from the first virtual console on any machine. # No display manager required; tty2-6 remain available as plain shells. # The start-hyprland wrapper ships with programs.hyprland and sets up the # session environment correctly. environment.loginShellInit = '' if [ "$(tty)" = "/dev/tty1" ]; then exec start-hyprland fi ''; # Vendor-neutral graphics stack. Vendor modules (e.g. modules/hardware/nvidia.nix) # only add drivers and vendor-specific environment variables. hardware.graphics = { enable = true; enable32Bit = true; }; # Machine-agnostic Wayland session variables. # GPU/vendor specific variables live with their hardware module (e.g. modules/hardware/nvidia.nix). environment.sessionVariables = { NIXOS_OZONE_WL = "1"; HYPRCURSOR_ENABLED = "1"; MOZ_ENABLE_WAYLAND = "1"; QT_QPA_PLATFORM = "wayland;xcb"; QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; CLUTTER_BACKEND = "wayland"; GDK_BACKEND = "wayland,x11,*"; }; # Fonts used across the desktop shell (Silicon Volt theme): # JetBrains Mono for terminal/UI mono, IBM Plex Sans for UI sans, # Instrument Serif for display italics, Nanum Gothic Coding as mono fallback. fonts.packages = with pkgs; [ nerd-fonts.jetbrains-mono nerd-fonts.fira-code font-awesome ibm-plex nanum-gothic-coding ] ++ lib.optional (lib.hasAttr "instrument-serif" pkgs) pkgs.instrument-serif; }