{ config, pkgs, nix-colors, username, ... }:

{
  imports = [ 
    nix-colors.homeManagerModules.default
    ./modules/dunst.nix
    ./modules/waybar.nix
    ./modules/ranger.nix
    ./hyperland
  ];
  colorScheme = nix-colors.colorSchemes.gruvbox-material-dark-hard;

  # TODO please change the username & home directory to your own
  home.username = "${username}";
  home.homeDirectory = "/home/${username}";


  # Packages that should be installed to the user profile.
  home.packages = with pkgs; [
    kitty
    eza
    git
    git-lfs
    obsidian
    jq
    direnv
    
    skypeforlinux
    signal-desktop

    slack
    jetbrains-toolbox
    nextcloud-client

    font-awesome
    (nerdfonts.override {fonts = ["JetBrainsMono" "CascadiaCode" "FiraCode"];})

  ];


  programs.ssh = {
    enable = true;
    extraConfig = ''
      Host *
          IdentityAgent "~/.1password/agent.sock"
    '';
  };

  programs.git = {
    enable = true;
    lfs.enable = true;
  };

  programs.bash = {
    enable = true;
    historyIgnore = [ "l" "ls" "ll" "cd" "exit" ];
    historyControl = [ "erasedups" ];
    shellAliases = {
      grep = "grep --color=auto";
      ".." = "cd ..";
    };
    initExtra = ''
      # Custom colored bash prompt
      PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    '';
    profileExtra = ''
      # Include user's private bin if present
      if [ -d "$HOME/.local/bin" ] ; then
          PATH="$HOME/.local/bin:$PATH"
      fi
    '';
  };


  programs.starship = {
    enable = true;
    enableBashIntegration = 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 can update home Manager without changing this value. See
  # the home Manager release notes for a list of state version
  # changes in each release.
  home.stateVersion = "23.11";

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