{ pkgs, config, ... }:
{
  # ======================================================
  #  _   _               
  # | | | |___  ___ _ __ 
  # | | | / __|/ _ \ '__|
  # | |_| \__ \  __/ |   
  #  \___/|___/\___|_|
  #
  # Configuration for user servostar

  # Define a user account. Don't forget to set a password with passwd.
  users.users.servostar = {
    isNormalUser = true;
    description = "adminstrator";
    # member groups for this user
    extraGroups = [
      "networkmanager"
      "wheel"
      "libvirtd"
      "dialout"
      "tty"
      "uucp"
      "plugdev"
      "docker"
    ];
    # use zsh
    shell = pkgs.zsh;

    # ------------------------------------------------------
    # user packages

    packages = with pkgs; [
      # browsers
      librewolf
      ungoogled-chromium
      tor-browser-bundle-bin

      # games
      prismlauncher

      # social media
      discord
      signal-desktop

      # LaTeX and tlmgr
      texlive.combined.scheme-full

      godot_4

      # command line tools
      neofetch
      lolcat
      figlet
      cowsay
      cmatrix
      eza
      btop
      htop
      tmux
      nvtop-amd
      asciiquarium
      pipes
      tldr
      ranger
      nmap
      busybox
      tcpdump
      onefetch # neofetch for git repositories
      catimg
      hollywood
      efibootmgr
      # less like program for listing a file with colors
      # used as a replacement pager for colored man pages
      most
      lazygit
      lazydocker
      pandoc
      yt-dlp
      fzf
      nyancat
      hexedit
      unzip
      fd
      wget
      gzip
      ripgrep

      lua
      okteta
      kate
      keepassxc
      vlc
      mpv
      inkscape
      krita
      libreoffice-qt
      libsForQt5.kcalc
      libsForQt5.ark
      libsForQt5.ksystemlog
      libsForQt5.kcharselect
      libsForQt5.kget
      libsForQt5.kclock
      libsForQt5.breeze-gtk
      libsForQt5.kpmcore
      libsForQt5.kdenlive
      libsForQt5.breeze-gtk
      libsForQt5.kweather
      libsForQt5.kompare
      libsForQt5.skanpage
      isoimagewriter
      blender
      obs-studio
      tor
      xournalpp

      jetbrains-toolbox
   ];
  };

  # ------------------------------------------------------
  #  _   _                                                                  
  # | | | | ___  _ __ ___   ___ _ __ ___   __ _ _ __   __ _  __ _  ___ _ __ 
  # | |_| |/ _ \| '_ ` _ \ / _ \ '_ ` _ \ / _` | '_ \ / _` |/ _` |/ _ \ '__|
  # |  _  | (_) | | | | | |  __/ | | | | | (_| | | | | (_| | (_| |  __/ |   
  # |_| |_|\___/|_| |_| |_|\___|_| |_| |_|\__,_|_| |_|\__,_|\__, |\___|_|   
  #                                                         |___/           

  home-manager.users.servostar = {
    home = {
      stateVersion = "23.05";
    };
    programs.vscode = {
      enable = true;
      package = pkgs.vscodium;
      extensions = with pkgs.vscode-extensions; [
        james-yu.latex-workshop
        jnoortheen.nix-ide
        pkief.material-icon-theme
        rust-lang.rust-analyzer
        bungcip.better-toml
        mhutchie.git-graph
        ms-azuretools.vscode-docker
        ms-python.python
        twxs.cmake
        ms-python.vscode-pylance
      ];
    };
    programs.starship = {
      enable = true;
      enableZshIntegration = true;
    };
    programs.kitty = {
      enable = true;
    };

    # ------------------------------------------------------
    # Config files
    xdg.configFile."starship.toml".source = config/starship.toml;               # starship prompt configuration
    xdg.configFile."VSCodium/User/settings.json".source = config/settings.json; # VSCodium settings
    xdg.configFile."aacs/KEYDB.cfg".source = config/keydb.cfg;                  # key database for blueray decryption
    # kitty configuration
    xdg.configFile."kitty/kitty.conf".source = config/kitty/kitty.conf;
    xdg.configFile."kitty/tokyonight.conf".source = config/kitty/tokyonight.conf;

    # ------------------------------------------------------
    # ZSH
    programs.zsh = {
      enable = true;
      autocd = true;
      completionInit = "autoload -U compinit";
      initExtra = ''
        export PAGER="most"
        export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=242"
      '';
      # Custom keybindings
      initExtraFirst = ''
        bindkey "^[[1;5C" emacs-forward-word
        bindkey "^[[1;5D" emacs-backward-word
      '';
      enableCompletion = true;
      enableAutosuggestions = true;
      syntaxHighlighting = {
        enable = true;
      };
      shellAliases = {
        ls = "eza --icons";
      };
      history = {
        size = 10000;
        share = true;
      };
      zplug = {
        enable = true;
        plugins = [
          { name = "MichaelAquilina/zsh-you-should-use"; }
          { name = "akash329d/zsh-alias-finder"; }
          { name = "zsh-users/zsh-completions"; }
        ];
      };
    };

    # ------------------------------------------------------
    # git
    programs.git = {
      enable = true;
      userName  = "servostar";
      userEmail = "sven.vogel123@web.de";
      lfs.enable = true;
    };
    programs.command-not-found.enable = true;
    programs.neovim = {
      enable = true;
      viAlias = true;
      vimAlias = true;
    };
  };
}
