{ config, pkgs, ... }:

{
	# Packages that should be installed to the user profile.
	home.packages = with pkgs; [
		asciinema # tool to record terminal sessions
		atuin # tool to save shell history
		bat # cat-alternative
		cachix # tool to manage nix binary caches
		difftastic # tool to compare files
		direnv # tool to load custom environments
		docker-credential-helpers
		doggo # dns client
		du-dust # du alternative
		eza # ls-alternative
		faas-cli # cli for openfaas
		figlet # tool to create ascii art
		fzf # fuzzy finder
		git # git
		gitflow # tool for git workflow
		git-lfs # git support for large files
		haste-client # tool to paste files
		hostname # tool to get hostname
		jq # tool for json
		moar # moar is less
		nix-direnv # allow better nix and direnv integration
		libnotify # allows sending notifications
		lsof # who uses that drive/directory
		openssh # ssh client and server
		pass # password-store
		pre-commit # tool for git pre-commit hooks
		p7zip # tool to extract 7z archives
		rclone # tool for remote storages
		restic # backup tool
		ripgrep # grep-alternative
		rmtrash # rm wrapper to use trash
		shellcheck # tool for shell-syntax
		starship # shell prompt
		tokei # project-language statistics
		trash-cli # trash utils
		unzip # unzip
		vim # vim
		xdg-user-dirs # tool manage user directories
		yadm # dotfile manager
		yq # tool for YAML
		yt-dlp # tool to download videos from the internet
		zellij # terminal multiplexer
		zip # zip
	];

	# 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.05";

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

	targets.genericLinux.enable = true;

	nixpkgs.config.allowUnfree = true;
}