{ config
, pkgs
, ...
}:
{
  imports = [
    ./helix.nix
    ./alacritty.nix
    ./nushell.nix
    ./waybar.nix
    ./niri
    ./gammastep.nix
    ./hypridle.nix
    ./fuzzel.nix
    ./hyfetch.nix
    ./ssh.nix
    ./firefox.nix
    ./wallpaper.nix
  ];

  # TODO please change the username & home directory to your own
  home.username = "lucy";
  home.homeDirectory = "/home/${config.home.username}";
  # link the configuration file in current directory to the specified location in home directory
  # home.file.".config/i3/wallpaper.jpg".source = ./wallpaper.jpg;

  # link all files in `./scripts` to `~/.config/i3/scripts`
  # home.file.".config/i3/scripts" = {
  #   source = ./scripts;
  #   recursive = true;   # link recursively
  #   executable = true;  # make all files executable
  # };

  # encode the file content in nix configuration file directly
  # home.file.".xxx".text = ''
  #     xxx
  # '';

  manual = {
    html.enable = false;
    json.enable = false;
    manpages.enable = false;
  };

  programs.nix-index = {
    enable = true;
  };

  # set cursor size and dpi for 4k monitor

  # Packages that should be installed to the user profile.
  home.packages = with pkgs; [
    # here is some command line tools I use frequently
    # feel free to add your own or remove some of them

    aerc

    nnn # terminal file manager

    prismlauncher

    # archives
    zip
    xz
    unzip
    p7zip

    # utils
    ripgrep # recursively searches directories for a regex pattern
    jq # A lightweight and flexible command-line JSON processor
    yq-go # yaml processor https://github.com/mikefarah/yq
    eza # A modern replacement for ‘ls’
    fzf # A command-line fuzzy finder

    # networking tools
    mtr # A network diagnostic tool
    iperf3
    dnsutils # `dig` + `nslookup`
    ldns # replacement of `dig`, it provide the command `drill`
    aria2 # A lightweight multi-protocol & multi-source command-line download utility
    socat # replacement of openbsd-netcat
    nmap # A utility for network discovery and security auditing
    ipcalc # it is a calculator for the IPv4/v6 addresses

    # misc
    cowsay
    file
    which
    tree
    gnused
    gnutar
    gawk
    zstd
    gnupg

    # nix related
    #
    # it provides the command `nom` works just like `nix`
    # with more details log output
    nix-output-monitor

    # productivity
    hugo # static site generator
    glow # markdown previewer in terminal

    btop # replacement of htop/nmon
    iotop # io monitoring
    iftop # network monitoring

    # system call monitoring
    strace # system call monitoring
    ltrace # library call monitoring
    lsof # list open files

    # system tools
    sysstat
    lm_sensors # for `sensors` command
    ethtool
    pciutils # lspci
    usbutils # lsusb

    tcsh
    fuzzel
    seatd
    jaq
    wl-clipboard
    element-desktop
    jetbrains.idea-community
    jdk
    gradle
  ];
  # basic configuration of git, please change to your own
  programs.git = {
    enable = true;
    userName = "Lucy von Overheidt";
    userEmail = "git@lucy.giving";
  };

  home.stateVersion = "24.11";

  programs.home-manager.enable = true;

}
