{ config, pkgs, lib, inputs, extraHomeModule ? null, ... }:

{
  nixpkgs.overlays = lib.mkAfter [
    inputs.wired.overlays.default
    inputs.myneovim.overlays.default
    inputs.vnetod.overlay
    inputs.nil.overlays.default
  ];

  programs.zsh.enable = true;

  users.users.jan = {
    isNormalUser = true;
    extraGroups = [
      "wheel" # Enable ‘sudo’ for the user.
      (lib.mkIf config.networking.networkmanager.enable "networkmanager")
      (lib.mkIf config.virtualisation.docker.enable "docker")
    ];
    shell = pkgs.zsh;
    passwordFile = config.age.secrets.users-jan-passfile.path;
  };

  home-manager.users.jan = { lib, ... }: {
    imports = [
      inputs.wired.homeManagerModules.default
      ./home.nix
      extraHomeModule
    ];

    home.stateVersion = config.system.stateVersion;
  };

  nix.settings.trusted-users = lib.mkAfter [ "jan" ];

  age.secrets.users-jan-passfile.file = ../../secrets/users-jan-passfile.age;
}
