{pkgs, ...}: {
  services = {
    # Configure greetd for "auto" login (single user only)
    greetd = let
      startSway = pkgs.writeScript "startsway" ''
        # Use NVIDIA variables if drivers are in use
        if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then
          # NVIDIA/AMD variables
          export LIBVA_DRIVER_NAME=nvidia
          export GBM_BACKEND=nvidia-drm
          export __GLX_VENDOR_LIBRARY_NAME=nvidia
          export WLR_NO_HARDWARE_CURSORS=1
        else
          :
        fi

        # Sway/Wayland
        export XDG_CURRENT_DESKTOP=sway
        export QT_QPA_PLATFORM="wayland;xcb"

        # Start Sway
        sway --unsupported-gpu
      '';
    in {
      enable = true;
      restart = true;
      settings = {
        terminal = {
          vt = 2;
          switch = true;
        };
        default_session = {
          command = "${startSway}";
          user = "jimbo";
        };
      };
    };
    dbus.enable = true;
  };

  programs.xwayland = {
    enable = true;
  };

  # Enable backlight and theme control
  programs = {
    dconf.enable = true;
    light.enable = true;
  };

  # Packages needed for Wayland
  environment.systemPackages = with pkgs; [
    wl-clipboard
    wdisplays
    clipman
    libnotify
    grim
    slurp
    swappy
    jq
    lm_sensors
  ];
}