{ lib, config, ... }: with lib; let
	cfg = config.module.docker;
in {
	options = {
		module.docker = {
			enable = mkEnableOption "Enable Cocker";
			rootless = mkOption {
				default = false;
				type    = types.bool;
			};
			autostart = mkOption {
				default = false;
				type    = types.bool;
			};
		};
	};

	config = mkIf cfg.enable (mkMerge [
		{
			virtualisation.docker.enable = true;

			systemd = if cfg.autostart then {} else {
				services = {
					docker-prune.wantedBy = mkForce [];
					docker.wantedBy       = mkForce [];
				};
				sockets.docker.wantedBy = mkForce [];
			};
		}

		(mkIf cfg.rootless {
			virtualisation.docker.rootless = {
				enable            = true;
				setSocketVariable = true;
			};
		})
	]);
}