{ pkgs, ... }:
{
  security.polkit.enable = true;

  boot.loader.systemd-boot.memtest86.enable = true;
  boot.loader.systemd-boot.netbootxyz.enable = true;
  boot.loader.timeout = 1;
  boot.loader.efi.canTouchEfiVariables = true;

  services.thermald.enable = true;
  services.pcscd.enable = true;
  services.fwupd.enable = true;
  services.gvfs.enable = true;
  services.fstrim.enable = true;
  hardware.opengl = {
    enable = true;
    driSupport = true;
    driSupport32Bit = true;
  };

  programs.zsh.enable = true;

  services.openssh = {
    enable = true;
    settings = {
      PermitRootLogin = "no";
      PasswordAuthentication = false;
    };
  };

  fonts.packages = with pkgs; [
    noto-fonts
    noto-fonts-cjk
    noto-fonts-emoji
    iosevka
    nerdfonts
    roboto
    font-awesome
  ];

  networking.firewall.enable = false;

  services.greetd = {
    enable = true;
    settings = rec {
      initial_session = {
        command = "Hyprland";
        user = "user";
      };
      default_session = initial_session;
    };
  };

  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    jack.enable = true;
  };
  environment.systemPackages = with pkgs; [
    wget
    curl
    git
    lm_sensors
    wireguard-tools

    # Podman
    dive
    podman-tui
    docker-compose
  ];
  services.udev.packages = [ pkgs.yubikey-personalization ];

  virtualisation.containers.enable = true;
  virtualisation = {
    podman = {
      enable = true;
      dockerCompat = true;
      defaultNetwork.settings.dns_enabled = true;
    };
  };

  # Calendar
  # Add the server using gnome-online-accounts:
  # nix-shell -p gnome.gnome-control-center --run "gnome-control-center"
  # Just add the main webdav server and gnome-calendar will automatically pick up all available calendars.
  programs.dconf.enable = true;
  services.gnome.evolution-data-server.enable = true;
  services.gnome.gnome-online-accounts.enable = true;
  services.gnome.gnome-keyring.enable = true;

  services.resolved = {
    enable = true;
    fallbackDns = [ "1.1.1.1" "1.0.0.1" ];
  };

  hardware.bluetooth.enable = true;
  hardware.bluetooth.powerOnBoot = true;
  services.blueman.enable = true;
  systemd.user.services.mpris-proxy = {
    description = "Mpris proxy";
    after = [ "network.target" "sound.target" ];
    wantedBy = [ "default.target" ];
    serviceConfig.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
  };
  hardware.bluetooth.settings = {
    General = {
      Experimental = true;
    };
  };

  fileSystems."/home/server" = {
    device = "10.1:/home/server";
    fsType = "nfs";
    options = [ "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" ];
  };
  fileSystems."/home/user/Workspace" = {
    device = "10.1:/home/server/Workspace";
    fsType = "nfs";
    options = [ "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" ];
  };
  fileSystems."/home/user/Documents" = {
    device = "10.1:/home/server/Storage/Thomas/Documents";
    fsType = "nfs";
    options = [ "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" ];
  };
  fileSystems."/home/user/Pictures" = {
    device = "10.1:/home/server/Storage/Thomas/Pictures";
    fsType = "nfs";
    options = [ "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" ];
  };
  fileSystems."/home/user/Videos" = {
    device = "10.1:/home/server/Storage/Thomas/Videos";
    fsType = "nfs";
    options = [ "x-systemd.automount" "x-systemd.mount-timeout=1" "_netdev" "noauto" "timeo=1" ];
  };

}