Files
NixOS-Configs/modules/graphical/default.nix
Anish Govind 598a43eace refactor: make hosts declarative and consolidate shared config
- add my.username / my.gaming.enable / my.ai.local.enable options and
  gate optional app modules on them instead of per-host import lists
- move vendor-neutral hardware.graphics into modules/graphical, leaving
  only NVIDIA-specific drivers and env vars in modules/hardware/nvidia
- derive the primary user everywhere from my.username (users, getty,
  home-manager, tmpfiles)
- de-duplicate Hyprland autostart down to a single system loginShellInit
  using the start-hyprland wrapper
- consolidate all nixpkgs overlays into modules/core/nix.nix and use
  final.stdenv.hostPlatform.system
- make the zsh rebuild helper target $(hostname) instead of hardcoded hades
- add nixpkgs follows for nixos-hardware, pi and comfy-ui (single nixpkgs)
- add .gitignore and a nixfmt flake formatter; format all nix files
- remove empty browser.nix/display-configuration.nix and rename
  local_ai.nix -> local-ai.nix
- document the my.* toggles in the README
2026-09-18 23:32:32 -07:00

59 lines
1.6 KiB
Nix

{
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;
}