{ pkgs
, inputs
, const
, lib
, util
, config
, 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;
	package     = import ./Package.nix     args;
	termux      = import ./Termux.nix      args;

	# External modules.
	bash   = import ../module/common/bash       args;
	nvim   = import ../module/common/nvim       args;
	ssh    = import ../module/common/ssh        args;
	stylix = import ../module/common/Stylix.nix args;
	tmux   = import ../module/common/tmux       args;
	yazi   = import ../user/common/yazi         args;
in {
	# Configure system.
	time.timeZone    = const.timeZone;
	nix.extraOptions = "experimental-features = nix-command flakes";

	# Install packages.
	environment.packages = package.list;

	# Home manager config.
	home-manager.config = stylix // {
		imports = [
			inputs.stylix.homeManagerModules.stylix
		];

		home = {
			# Release version.
			stateVersion = const.droidStateVersion;

			# Environment variables.
			sessionVariables = environment.variables;

			# Where to put config files.
			file = {
				".dotfiles".source = inputs.self;
				".ssh/config".text = ssh.config;
				".termux/_font.ttf".source        = termux.font;
				".termux/_colors.properties".text = termux.colors;
				".config/yazi/init.lua".source    = yazi.init;
				".config/yazi/keymap.toml".source = yazi.keymap;
				".config/yazi/theme.toml".source  = yazi.theme;
				".config/yazi/yazi.toml".source   = yazi.yazi;
			};
		};

		# Special app configuration.
		programs = {
			home-manager.enable = true;

			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;
				inherit (secret.crypto) publicKeys;
			};
		};
	};
}