{ lib, inputs, config, pkgs, username, hostname, gpu, ... }: {
  imports = [ inputs.kde2nix.nixosModules.plasma6 ];

  # Enable sound with pipewire.
  sound.enable = true;
  hardware.pulseaudio.enable = false;
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
  };

  # Configure keymap in X11
  services.xserver = {
    enable = true;
    layout = "us";
    xkbVariant = "";
    autorun = true;
    videoDrivers = [ ] ++ lib.optional (builtins.isString gpu) gpu;
    desktopManager.plasma6.enable = true;
  };

  environment.systemPackages = with pkgs; [
    arc-kde-theme
    arc-theme
    papirus-icon-theme
    plasma-theme-switcher
    tailscale-systray
  ];

  systemd.user.services = {
    "get-theme-times" = {
      enable = true;
      path = [ pkgs.curl ];
      script = ''
        echo "Activating get-theme-times systemd service"
        curl -s wttr.in/?format=%S > /tmp/wttr.sunrise
        curl -s wttr.in/?format=%s > /tmp/wttr.sunset
        echo "get-theme-times - complete"
      '';
      after = [ "networking-online.target" ];
      serviceConfig.Type = "oneshot";
      onSuccess = [ "set-theme.service" ];
    };
    set-theme = {
      enable = true;
      script = ''
        echo "set-theme.service - Checking for theme settings"
        if [ ! -f /tmp/wttr.sunrise ] ; then
          systemctl --user start get-theme-times.service
        fi
        SUNRISE=`date -d \`cat /tmp/wttr.sunrise\` +%s`
        SUNSET=`date -d \`cat /tmp/wttr.sunset\` +%s`
        CURRENT=`date +%s`
        if [ $CURRENT -gt $SUNRISE -a $CURRENT -lt $SUNSET ] ; then 
          /run/current-system/sw/bin/plasma-apply-colorscheme -platform offscreen Arc
        else 
          /run/current-system/sw/bin/plasma-apply-colorscheme -platform offscreen ArcDark
        fi
        echo "set-theme.service - Complete"
      '';
      serviceConfig.Type = "oneshot";
    };
  };

  systemd.user.timers = {
    "get-theme-times" = {
      enable = true;
      wantedBy = [ "default.target" ];
      timerConfig = {
        Unit = "get-theme-times.service";
        OnCalendar = [ "*:00" ];
        OnBootSec = [ "2min" ];
      };
    };
    "set-theme" = {
      enable = true;
      wantedBy = [ "default.target" ];
      timerConfig = {
        Unit = "set-theme.service";
        OnCalendar = [ "*:0..59" ];
        OnBootSec = [ "3min" ];
      };
    };
  };
}