{
  inputs,
  config,
  pkgs,
  ...
}:
{
  imports = [
    ../_base
    ./hardware-configuration.nix

    ../../modules/sddm.nix

    ../../modules/bash.nix
    ../../modules/kitty.nix
    ../../modules/git.nix
    ../../modules/direnv.nix
    ../../modules/firefox.nix
    ../../modules/nvim
  ];

  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  networking.hostName = "kalle-laptop";
  networking.networkmanager.enable = true;

  time.timeZone = "Europe/Amsterdam";

  services.xserver = {
    enable = true;
    xkb.layout = "us";
    xkb.options = "eurosign:e,caps:escape";
  };

  # Disable firewall.
  networking.firewall.enable = false;

  home-manager.users.kalle = {
    home.packages = with pkgs; [
      discord
      vesktop
      firefox
      chromium
      httpie
      kate
      dolphin
      ark
      rustup
      gcc
      pavucontrol
      difftastic
      sops
      obsidian

      cachix
    ];
  };

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It's perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "23.05"; # Did you read the comment?
  # This value determines the Home Manager release that your configuration is
  # compatible with. This helps avoid breakage when a new Home Manager release
  # introduces backwards incompatible changes.
  #
  # You should not change this value, even if you update Home Manager. If you do
  # want to update the value, then make sure to first check the Home Manager
  # release notes.
  home.stateVersion = "23.05"; # Please read the comment before changing.
}