{
  config,
  pkgs,
  inputs,
  ...
}: {
  imports = [
    ./base.nix
  ];
  # Use latest stable kernel
  boot.kernelPackages = pkgs.linuxPackages_latest;

  # Enable Bluetooth
  hardware.bluetooth.enable = true;

  # Enable the KDE Plasma Desktop Environment.
  services.xserver.enable = true;
  services.displayManager.sddm = {
    enable = true;
    extraPackages = [pkgs.kdePackages.sddm-kcm];
    wayland.enable = true;
    enableHidpi = true;
  };

  services.desktopManager.plasma6.enable = true;
  environment.plasma6.excludePackages = with pkgs.kdePackages; [
    elisa
    kate
  ];

  # Catppuccin
  catppuccin = {
    sddm = {
      enable = true;
      background = "/home/chase/nix-config/home/wallpaper.jpg";
      flavor = "mocha";
      font = "IBM Plex Sans";
      fontSize = "11";
    };
  };

  # Enable graphics
  hardware.graphics = {
    enable = true;
    enable32Bit = true;
  };

  i18n.inputMethod = {
    type = "fcitx5";
    enable = true;
    fcitx5.addons = with pkgs; [
      fcitx5-mozc
      kdePackages.fcitx5-qt
    ];
    fcitx5.waylandFrontend = true;
  };

  # Fonts
  fonts = {
    packages = with pkgs; [
      font-awesome
      ibm-plex
      liberation_ttf
      nerd-fonts.blex-mono
      noto-fonts
      noto-fonts-cjk-sans
      noto-fonts-emoji
    ];
    fontconfig = {
      defaultFonts = {
        serif = ["IBM Plex Serif"];
        sansSerif = ["IBM Plex Sans"];
        monospace = ["BlexMono Nerd Font"];
      };
    };
  };

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

  # Install firefox
  programs.firefox = {
    enable = true;
    nativeMessagingHosts.packages = [pkgs.firefoxpwa];
    policies = {
      DisableTelemetry = true;
      DisableFirefoxAccounts = true;
      DisableFirefoxStudies = true;
      DisablePocket = true;
    };
  };

  # Install Steam
  programs.steam = {
    enable = true;
    remotePlay.openFirewall = true;
    dedicatedServer.openFirewall = true;
    localNetworkGameTransfers.openFirewall = true;
  };

  # List packages installed in system profile.
  environment.systemPackages = with pkgs; [
    bitwarden-desktop
    (catppuccin-kde.override {
      flavour = ["mocha"];
      accents = [
        "blue"
        "lavender"
        "pink"
        "sapphire"
      ];
      winDecStyles = ["classic"];
    })
    firefoxpwa
    qpwgraph
    yubioath-flutter
  ];

  services.fprintd.enable = true;
}
