# 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’).

{ pkgs, pkgs2, spkgs, inputs, ... }:

let
  username = "urec";
in {
  imports = [
    /etc/nixos/hardware-configuration.nix
    inputs.home-manager.nixosModules.default
    ../modules/nixos/bundle.nix
    ./packages.nix
  ];

  # Список сервисов, которые не надо ребутать после rebuild switch
  # Мне это надо, потому что некоторые сервисы кладут систему
  # systemd.services = {
  #   "accounts-daemon".restartIfChanged = false;
  #   "home-manager-buliway".restartIfChanged = false;
  # };

  boot = {
    kernelPackages = pkgs.linuxPackages_latest; # Ядро линуха, ласт версия
    # kernelParams = [ # https://nixos.wiki/wiki/AMD_GPU#Dual_Monitors
    #   "video=1920x1080"
    # ];

    loader = {
      # systemd-boot.enable = true;
      grub = {
        enable = true;
        efiSupport = true;
        device = "nodev"; # nodev позволяет не устанавливать grub в конкретное место, но видеть его ui
      };
      efi.canTouchEfiVariables = true;
    };
  };

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users = {
    defaultUserShell = pkgs.zsh;
    
    users.${username} = {
      isNormalUser = true;
      description = username;
      extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" "video" ];
      # packages = with pkgs; [
      #   clang-tools
      # ];
    };
  };

  home-manager = {
    # also pass inputs to home-manager modules
    useGlobalPkgs = true;
    useUserPackages = true;
    extraSpecialArgs = { inherit spkgs; inherit pkgs2; inherit inputs; };
    users.${username} = import ./home.nix;
  };

  security.polkit = { # Всплывающее меню для ввода пароля
    enable = true;
  };

  xdg.portal = {
    enable = true;
    configPackages = with pkgs; [
      xdg-desktop-portal
      # kdePackages.xdg-desktop-portal-kde
      # xdg-desktop-portal-gtk # Чтоб загружать файлы и стримить в дискорде
    ];
    extraPortals = with pkgs; [
      xdg-desktop-portal
      # kdePackages.xdg-desktop-portal-kde
      # xdg-desktop-portal-gtk # Чтоб загружать файлы и стримить в дискорде
    ];
  };

  nix.settings.experimental-features = ["nix-command" "flakes"];

  system.stateVersion = "24.05"; # Don't change it

}
