{ lib, pkgs, ... }:

let
  inherit (lib) mkDefault;

in
{
  imports = [
    ./hardware.nix
    ./networking.nix
    ./users.nix
  ];

  time.timeZone = "Europe/Amsterdam";
  i18n.defaultLocale = "en_US.UTF-8";
  system.stateVersion = "24.05"; # do not change
  nixpkgs.hostPlatform = mkDefault "x86_64-linux";

  ## This is just nice to have, but it is also particularly important for the
  ## Forgejo CI runners because the Nix configuration in the actions is directly
  ## taken from here.
  nix.extraOptions = ''
    experimental-features = nix-command flakes
  '';

  environment.systemPackages = with pkgs; [
    (pkgs.vim_configurable.customize {
      name = "vim";
      vimrcConfig.packages.myplugins = with pkgs.vimPlugins; {
        start = [ vim-nix ]; # load plugin on startup
      };
      vimrcConfig.customRC = ''
        " your custom vimrc
        set nocompatible
        set backspace=indent,eol,start
        " Turn on syntax highlighting by default
        syntax on
        " ...
      '';
    })
    wget
    subversion
  ];
}