{
  config,
  pkgs,
  lib,
  ...
}: {
  imports = [
    # sway as windowmanager
    ../../modules/home-manager/sway.nix
    # zsh config
    ../../modules/home-manager/zsh.nix
    # foot terminal emulator
    ../../modules/home-manager/foot.nix
    # often used terminal programs
    ../../modules/home-manager/btop.nix
    ../../modules/home-manager/bat.nix
    ../../modules/home-manager/lazygit.nix
    ../../modules/home-manager/git.nix
    # use mpd for music
    ../../modules/home-manager/mpd.nix
    # email config
    ../../modules/home-manager/thunderbird.nix
  ];

  # Home Manager needs a bit of information about you and the paths it should
  # manage.
  home.username = "max";
  home.homeDirectory = "/home/max";

  nixpkgs.config.allowUnfree = true;

  # 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.11"; # Please read the comment before changing.

  # The home.packages option allows you to install Nix packages into your
  # environment.
  home.packages = with pkgs; [
    unzip
    rustup
    nextcloud-client
    firefox
    thunderbird
    xournalpp
    kicad
    prismlauncher
    steam
    blender
    flip-link
    bacon
    probe-rs
    betaflight-configurator
    loudgain
    youtube-dl
    dconf
    distrobox
    gyroflow
    libqalculate
    sops
    pwvucontrol
    qpwgraph
    (pkgs.discord.override {
      withOpenASAR = true;
      withVencord = true;
    })
    vesktop
  ];

  home.sessionVariables = {
    EDITOR = "${pkgs.neovim}/bin/nvim";
  };

  xdg.enable = true;

  services.nextcloud-client.enable = true;

  # Let Home Manager install and manage itself.
  programs.home-manager.enable = true;
}