#Access Internet using:
#nmcli device wifi list
#nmcli device wifi connect <ssid> password <password>
# or if no password (open wifi)
#nmcli device wifi connect <ssid>

{ config, pkgs, lib, username, version, ... }:
{
  imports =
    [
      ./hardware-configuration.nix
      ./zsh.nix
      #./ncli.nix
      #./neovim.nix
      ./packages.nix
    ];

  #networking.hostName = "nixos";
  # Define your hostname.
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  networking.networkmanager.enable = true;

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

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  i18n.extraLocaleSettings = {
    LC_ADDRESS = "de_DE.UTF-8";
    LC_IDENTIFICATION = "de_DE.UTF-8";
    LC_MEASUREMENT = "de_DE.UTF-8";
    LC_MONETARY = "de_DE.UTF-8";
    LC_NAME = "de_DE.UTF-8";
    LC_NUMERIC = "de_DE.UTF-8";
    LC_PAPER = "de_DE.UTF-8";
    LC_TELEPHONE = "de_DE.UTF-8";
    LC_TIME = "de_DE.UTF-8";
  };
  
  services = {
    # Enable the OpenSSH daemon.
    openssh.enable = true;
  };

  # Configure console keymap
  console.keyMap = "de";

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.cookiez = {
    isNormalUser = true;
    description = "Cookiez";
    extraGroups = [ "networkmanager" "wheel" "docker" ];
    packages = with pkgs; [
      #User Packages Here
    ];
  };

  virtualisation.docker.enable = true;

  #So no user in the group Wheel has to input the password in order to use sudo
  security.sudo.wheelNeedsPassword = false;  

  #Allow Nix Commands
  nix.settings.experimental-features = [ "nix-command" "flakes" ];
  
  # Allow unfree packages
  nixpkgs.config.allowUnfree = true;
 
  environment.variables = {
  	EDITOR = "nvim";
  	# XKB_DEFAULT_LAYOUT = "de";
  };

  environment.sessionVariables = {
    NIXOS_OZONE_WL = "1";   #For chromium to work under wayland and with virtual Keyboards (Only really needed for virtual keyboards, but doest hurt ...)
    TERMINAL = "kitty";
  };

  system.stateVersion = version;
}
