{ pkgs, ... }:
{
  # Enable the X11 windowing system.
  services.xserver.enable = true;
  services.xserver.libinput.enable = true;
  services.xserver.desktopManager.gnome.enable = true;
  services.xserver.displayManager = {
    gdm.enable = true;
    gdm.wayland = false;
    autoLogin.enable = true;
    autoLogin.user = "fruchti";
  };
  security.pam.services.gdm.enableGnomeKeyring = true;

  services.touchegg.enable = true;
  services.gnome.gnome-settings-daemon.enable = true;
  services.gnome.tracker-miners.enable = false;
  services.gnome.tracker.enable = false;

  environment.systemPackages = with pkgs; [
    gnome.gnome-tweaks gnome.gnome-shell-extensions
    gnomeExtensions.caffeine gnomeExtensions.tray-icons-reloaded gnomeExtensions.x11-gestures gnomeExtensions.git
    # gnome.nautilus-python nautilus-open-any-terminal
    pinentry-gnome
    (callPackage ../packages/alias.nix {
        inputPackage = kitty;
        inputName = "kitty";
        outputName = "gnome-terminal";
    })
    # (gnome-console.overrideAttrs (old: {
    #     phases = [ "installPhase" ];
    #     installPhase = ''
    #         mkdir -p $out/bin
    #         ln -s ${kitty}/bin/kitty $out/bin/gnome-console
    #     '';
    # }))
  ];

  programs.gnupg.agent.pinentryFlavor = "gnome3";
  services.pcscd.enable = true;
  services.dbus.packages = [ pkgs.gcr ];

  environment.gnome.excludePackages = (with pkgs; [
      gnome-photos
      gnome-tour
      gnome-console
      modemmanager
  ]) ++ (with pkgs.gnome; [
      cheese # webcam tool
      gnome-music
      gnome-terminal
      gedit # text editor
      epiphany # web browser
      geary # email reader
      gnome-characters
      totem # video player
      tali # poker game
      iagno # go game
      hitori # sudoku game
      atomix # puzzle game
  ]);
}
