{ config, pkgs, ... }:

{
  imports = [
    ./pulseaudio.nix
  ];

  i18n.inputMethod = {
    enabled = "fcitx";
    fcitx.engines = with pkgs.fcitx-engines; [ mozc anthy table-other m17n ];
  };

  fonts = {
    enableDefaultFonts = false;
    fonts = with pkgs; [
      xorg.fontbhlucidatypewriter100dpi
      xorg.fontbhlucidatypewriter75dpi
      dejavu_fonts
      freefont_ttf
      gyre-fonts # TrueType substitutes for standard PostScript fonts
      liberation_ttf
      xorg.fontbh100dpi
      xorg.fontmiscmisc
      xorg.fontcursormisc
      # unifont

      wqy_microhei
      inconsolata
      dejavu_fonts
      ipafont
      ipaexfont
      ubuntu_font_family
      source-code-pro
      fira fira-mono fira-code
      noto-fonts-emoji
      noto-fonts-cjk

      cantarell_fonts # from gnome3 module

      font-awesome_5
    ];
  };

  # prevent satanic torture
  programs.qt5ct.enable = true;

  hardware.uinput.enable = true;
  users.extraUsers.gebner.extraGroups = [ "input" "tty" "audio" "video" "uinput" ];

  services.dbus.packages = with pkgs; [ gnome3.gcr ];
  services.udev.packages = [ pkgs.gnome3.gnome-settings-daemon ];

  # copied from gnome3 module
  security.polkit.enable = true;
  services.udisks2.enable = true;
  services.accounts-daemon.enable = true;
  services.geoclue2.enable = true;
  services.gnome3.at-spi2-core.enable = true;
  services.gnome3.gnome-keyring.enable = true;
  services.gvfs.enable = true;
  programs.seahorse.enable = true;
  services.gnome3.sushi.enable = true;
  services.gnome3.gnome-settings-daemon.enable = true;
  services.telepathy.enable = true;
  networking.networkmanager.enable = true;
  services.upower.enable = config.powerManagement.enable;
  programs.dconf.enable = true;
  services.flatpak.enable = true;
  xdg.portal = {
    enable = true;
    extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
  };
  # Needed for themes and backgrounds
  environment.pathsToLink = [ "/share" ];
  environment.variables.GIO_EXTRA_MODULES = with pkgs.gnome3; [
    "${pkgs.lib.getLib dconf}/lib/gio/modules"
    "${glib_networking.out}/lib/gio/modules"
    "${gvfs}/lib/gio/modules" ];

  hardware.bluetooth = {
    enable = true;
    package = pkgs.bluezFull;
  };
  services.blueman.enable = true;

  programs.gnupg = {
    agent.enable = true;
    agent.pinentryFlavor = "gnome3";
  };

}