{ pkgs, lib, ... }:
with lib;
{
  console.useXkbConfig = mkDefault true;
  environment.systemPackages = [
    pkgs.gdk-pixbuf.dev # for gdk-pixbuf-query-loaders
    pkgs.paprefs
    pkgs.pulseaudio # for pactl when using pipewire
  ];

  security.rtkit.enable = true; # optional but recommended
  services.pipewire = {
    enable = true;
    alsa.enable = mkDefault true;
    alsa.support32Bit = mkDefault true;
    pulse.enable = mkDefault true;
  };

  # Allow members of the "adbusers" group to mount Android devices via MTP.
  programs.adb.enable = true;
  programs.dconf.enable = true;
  services.dbus.packages = [ pkgs.dconf ];
  services.gvfs.enable = mkDefault true;
  services.avahi.enable = mkDefault true;

  services.xserver = {
    enable = mkDefault true;
    libinput.enable = mkDefault true;
    exportConfiguration = mkDefault true; # link /usr/share/X11/ properly
    desktopManager = {
      session = [
        # Let the session be generated by home-manager
        {
          name = "home-manager";
          start = ''
            ${pkgs.runtimeShell} $HOME/.hm-xsession &
            waitPID=$!
          '';
        }
      ];
      xterm.enable = mkDefault false;
    };
    displayManager.autoLogin.enable = mkDefault true;
  };

  services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
}