# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{
  lib,
  inputs,
  config,
  pkgs,
  systems,
  ...
}:
{
  imports = [ ./hardware-configuration.nix ];

  networking.hostName = "kardorf"; # Define your hostname.
  networking.networkmanager.enable = true;

  topology.self = {
    hardware.info = "Pc Kardorf";
  };

  time.timeZone = "Europe/Berlin";

  modules = {
    nix-settings.enable = true;
    xserver-defaults.enable = true;
    keymap.enable = true;
    builder.enable = true;
    system.boot-efi.enable = true;
    sound.enable = true;
    locales.enable = true;
    pcmanfm.enable = true;
    i3.enable = true;
    gdm.enable = true;
    virtualbox.enable = true;
    users-julian.enable = true;
    xdg-portal.enable = true;
    polkit.enable = true;
    keyring.enable = true;
    redshift.enable = true;
  };

  boot.loader.efi.efiSysMountPoint = "/boot/efi";
  services.xserver.videoDrivers = [ "nvidia" ];
  hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470;
  # hardware.nvidia.modesetting.enable = true; # for wayland

  # Enable CUPS to print documents.
  # hardware.sane.enable = true;
  services.printing.enable = true;
  services.printing.browsing = true;
  # services.avahi.enable = true;
  # services.avahi.nssmdns = true;
  services.printing.drivers = with pkgs; [ gutenprint ];

  # List services that you want to enable:
  services.openssh.enable = false;
  services.flatpak.enable = true;
  # Smart card reader
  services.pcscd.enable = true;

  virtualisation.docker.enable = true;

  # Packages needed as root
  environment.systemPackages = with pkgs; [
    vim
    htop
    mc
    gparted-xhost # needs to be installed as system package so it can be actually opened
  ];

  # ======================== DO NOT CHANGE THIS ========================
  system.stateVersion = "22.11";
  # ======================== DO NOT CHANGE THIS ========================
}
