{ pkgs, inputs, const, style, util, key, setting, secret, ... } @args: let
	# Path where Termux stores user data.
	homePath = "/data/data/com.termux.nix/files/home";

	# Android modules.
	environment = import ./Environment.nix args;
	git         = import ./Git.nix         args;
	nix         = import ./Nix.nix         args;
	package     = import ./Package.nix     args;
	termux      = import ./Termux.nix      args;

	# External modules.
	bash = import ../common/bash args;
	nvim = import ../common/nvim args;
	ssh  = import ../common/ssh  args;
	tmux = import ../common/tmux args;
in {
	time.timeZone    = const.timeZone;
	nix.extraOptions = nix.extraOptions;

	environment.packages = package.list;

	home-manager.config = {
		home = {
			stateVersion     = const.droidStateVersion;
			sessionVariables = environment.variables;
			file = {
				".dotfiles".source = inputs.self;
				".ssh/config".text = ssh.config;
				".termux/_font.ttf".source        = termux.font;
				".termux/_colors.properties".text = termux.colors;
			};
		};

		programs = {
			bash = {
				enable = true;
				bashrcExtra = bash.config + termux.initScript;
			};

			tmux = {
				enable = true;
				extraConfig = tmux.config;
			};

			git = {
				enable = true;
				extraConfig = git.config;
			};

			neovim = {
				enable = true;
				extraConfig = nvim.config;
			};

			gpg = {
				enable = true;
				publicKeys = secret.crypto.publicKeys;
			};
		};
	};
}