{ pkgs, nixvim, river-shifttags, ... }: let
  username = "khais";
in {
  imports = [
    ./stylix.nix
    ./wm
    ./direnv.nix
  ];
  home = {
    packages = with pkgs; [
      # system tools & bragging
      htop neofetch ripgrep usbutils wget curl ncdu
      # remote working
      remmina
      # audio
      audacity
      # communication
      discord
      # passwords
      bitwarden-desktop
      # editors
      zed-editor nixvim
      # make clipboard yanking work in neovim
      # https://superuser.com/a/1803183
      wl-clipboard
      # wm river utils
      playerctl brightnessctl river-shifttags wlr-randr
      # dev tools
      gitu lnav
      # music
      cmus
      # file sending
      magic-wormhole-rs
      # drawing apps
      krita inkscape
      # nixos tools
      nh
    ];

    file = {
      # konsole configuration
      ".local/share/konsole/Nixos.profile".source = ./konsole/Nixos.profile;
    };

    sessionVariables = {
      EDITOR = "nvim";
    };

    inherit username;
    homeDirectory = "/home/${username}";

    stateVersion = "23.11";
  };

  nixpkgs.config.allowUnfree = true;

  programs.git = {
    enable = true;
    userEmail = "khais.colin@gmail.com";
    userName = "Khaïs COLIN";
    # better diffs
    diff-so-fancy.enable = true;
    # set editor
    extraConfig.core.editor = "nvim";
    # always show diff in commits
    extraConfig.commit.verbose = true;
  };

  programs.jujutsu = {
    enable = true;
    settings = {
      user = {
        email = "khais.colin@gmail.com";
        name = "Khaïs COLIN";
      };
      ui.editor = "nvim";
    };
  };

  programs.zsh = {
    enable = true;
    enableVteIntegration = true;
    prezto = {
      enable = true;
    };
    shellAliases = {
      gc = "git commit -v";
      ga = "git add";
      gst = "git status";
      gp = "git push";
      gd = "git diff";
      gds = "git diff --staged";

      vim = "nvim";
      vi = "nvim";
    };
    initExtra = ''
      # enable jj completion
      source <(jj util completion zsh)
    '';
  };

  programs.kitty = {
    enable = true;
    keybindings = {
      "super+shift+enter" = "new_os_window_with_cwd";
    };
    settings = {
      text_fg_override_threshold = 10;
    };
  };
  programs.fuzzel.enable = true;

  programs.ssh = {
    enable = true;
    matchBlocks = {
      "quasar" = {
        hostname = "109.199.126.230";
        user = "root";
      };
    };
  };

  # default connection to qemu for virt-manager
  dconf.settings = {
    "org/virt-manager/virt-manager/connections" = {
      autoconnect = ["qemu:///system"];
      uris = ["qemu:///system"];
    };
  };
}
