{ config, pkgs, inputs, ... }:

{
  imports = [
    ./hardware-configuration.nix
    ./hpc.nix
  ];

  services.avahi.enable = true;
  services.avahi.nssmdns = true;

  services.peerix = {
    enable = true;
    package = inputs.peerix.packages.x86_64-linux.peerix;
    openFirewall = true;
    privateKeyFile = "/var/lib/peerix/peerix-private";
    # publicKeyFile = "/var/lib/peerix/peerix-public";
    publicKey = "cyberbox:peerix-cyberbox:tU7BvNanoiDAFqXQcPItEUCE4jLzdoZ589e3DYqPM9E= peerix-abbenay:sWkpQo5oyhEEXXMEm+8+2KkVcBkfIVpa06jhBs2LRXM=";
  };
  # services.xserver = {
  #   enable = true;
  #   layout = "de";
  #   xkbOptions = "eurosign:e,caps:escape";
  #   displayManager.gdm.enable = true;
  #   desktopManager.gnome.enable = true;
  # };
  # services.gnome.gnome-keyring.enable = pkgs.lib.mkForce false;

  environment.systemPackages = with pkgs; [
    gnome3.gnome-tweaks
    flatpak
    # for mounting samba
    cifs-utils
  ];

  networking = {
    hostName = "abbenay";

    useDHCP = false;
    interfaces.enp3s0.useDHCP = true;
    # networkmanager shouldn't handle nixos container
    networkmanager.unmanaged = [ "interface-name:ve-*" ];
  };
  # nixos containers should have internet access
  networking.nat = {
    enable = true;
    internalInterfaces = ["ve-+"];
    externalInterface = "eth0";
  };

  boot = {
    extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
    kernelModules = [ "v4l2loopback" ];
  };

  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;
  boot.binfmt.emulatedSystems = [ "aarch64-linux" ];

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "20.03"; # Did you read the comment?

}