let
  # Base system - common for all configurations
  base = [
    ./core/default.nix

    ./hardware/fwupd.nix
    ./network/default.nix

    ./programs

    ./services/default.nix
    ./services/docker.nix
    ./services/xdg-portal-fix.nix
  ];

  # GUI-specific modules (display manager, GPU, pipewire)
  gui = [
    ./core/boot.nix # plymouth boot splash
    ./hardware/graphics.nix # GPU drivers
    ./services/greetd.nix # display manager
    ./services/pipewire.nix # audio
  ];

  # Laptop-specific modules (battery, bluetooth, fingerprint)
  laptop = [
    ./hardware/bluetooth.nix
    ./hardware/fingerprint.nix
    ./services/power.nix
  ];
in {
  # TTY: desktop headless (no GUI)
  tty = base;

  # Desktop: desktop with GUI
  desktop = base ++ gui;

  # Laptop: laptop with GUI + battery + bluetooth
  laptop = base ++ gui ++ laptop;
}
