{ username, pkgs, ... }:
{
  imports = [
    ./networking.nix
    ./packages.nix
    ./services.nix
    ./virtulization.nix
  ];

  # Use the systemd-boot EFI boot loader.
  boot.loader = {
    systemd-boot.enable = true;
    efi.canTouchEfiVariables = true;
  };

  nix = {
    settings = {
      auto-optimise-store = true;
      experimental-features = [ "nix-command" "flakes" ];
    };
    gc = {
      automatic = true;
      dates =  "weekly";
      options = "--delete-older-than 7d";
    };
  };
  nixpkgs.config.allowUnfree = true;

  # Set your time zone.
  time.timeZone = "Europe/Brussels";

  users = {
    defaultUserShell = pkgs.zsh;
    groups = {
      "${username}" = {};
    };
    users.nicolaivds = {
      isNormalUser = true;
      # initialPassword = "gigachad";
      extraGroups = ["wheel" "video" "plugdev" "${username}"];
      packages = with pkgs; [
      ];
    };
  };

  environment.sessionVariables = rec {
    WLR_NO_HARDWARE_CURSORS = "1";
    NIXOS_OZONE_WL = "1";
    LIBSEAT_BACKEND = "logind";

    XDG_CACHE_HOME  = "$HOME/.cache";
    XDG_CONFIG_HOME = "$HOME/.config";
    XDG_DATA_HOME   = "$HOME/.local/share";
    XDG_STATE_HOME  = "$HOME/.local/state";

    # Not officially in the specification
    XDG_BIN_HOME = "$HOME/.local/bin";
    PATH = [
      "${XDG_BIN_HOME}"
    ];
  };

  # 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 = "23.05"; # Did you read the comment?
}