{ pkgs, fetchurl, ... }:

{
	imports = [
		../progs/alacritty
		../progs/i3
		../progs/i3status-rust
		../progs/kitty
		../progs/neovim
		../progs/rofi
	];

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

	services.dunst.enable = true;

	services.syncthing = {
		enable = true;
	};

	home = {
		username = "daniel";
		homeDirectory = "/home/daniel";
		sessionVariables = {
			EDITOR = "hx";
		};
		sessionPath = [
			"$HOME/go/bin"
		];

		file = {
			".icons/default".source = "${pkgs.capitaine-cursors}/share/icons/capitaine-cursors";

			".config/helix" = {
				source = ../progs/helix;
				recursive = true;
			};

			"bin/aupdate" = {
				source = ../../scripts/aupdate;
				executable = true;
			};

			"bin/bupdate" = {
				source = ../../scripts/bupdate;
				executable = true;
			};

			"bin/hmupdate" = {
				source = ../../scripts/hmupdate;
				executable = true;
			};

			"bin/supdate" = {
				source = ../../scripts/supdate;
				executable = true;
			};

			"bin/update" = {
				source = ../../scripts/update;
				executable = true;
			};
		};

		packages = with pkgs; [
			_1password
			_1password-gui
			aerc
			discord
			entr
			feh
			fzf
			go_1_18
			gomuks
			gopls
			helix
			i3lock
			i3utils
			iosevka
			mpv
			nerdfonts
			oh-my-zsh
			pavucontrol
			playerctl
			(
				let
					my-python-packages = python-packages: with python-packages; [
						tkinter
						requests
					];
					python-with-my-packages = python3.withPackages my-python-packages;
				in
					python-with-my-packages
			)
			ranger
			restic
			rust-analyzer
			spotify
			starship
			xclip
		];

		keyboard = {
			layout = "gb";
			options = [
				"caps:escape"
			];
		};

		stateVersion = "21.05";
	};

	programs = {

		git = {
			enable = true;
			package = pkgs.gitFull;
			userName = "Daniel Patterson";
			userEmail = "me@danielpatterson.dev";
			extraConfig = {
				pull.rebase = true;
				init.defaultBranch = "main";
			};
		};

		lazygit = {
			enable = true;
			settings = {
				gui = {
					showFileTree = false;
				};
			};
		};

		starship.enable = true;

		vscode.enable = true;

		zsh = {
			enable = true;
			enableAutosuggestions = true;
			oh-my-zsh = {
				enable = true;
				plugins = [ "git" "fzf" ];
				theme = "agnoster";
			};
		};
	};
}
