{pkgs, lib, config, writeTextDir, ...}: with lib; {
	options.programs.parallel = {
		enable = mkEnableOption "parallel";
		package = mkPackageOption pkgs "parallel" { };
		willCite = mkOption {
			default = false;
			defaultText = literalExpression "false";
			example = literalExpression "true";
			description = "Indicate that you will cite parallel if you use it in an academic paper";
			type = types.bool;
		};
	};
	config = mkIf config.programs.parallel.enable {
		home.packages = [
			(
				pkgs.symlinkJoin {
					name = "parallel";
					paths = [ config.programs.parallel.package ];
					buildInputs = [ pkgs.makeWrapper ];
					parallelHome = if config.programs.parallel.willCite
						then pkgs.writeTextDir "will-cite" ""
						else pkgs.runCommand "parallel-home-nocite" {} "mkdir $out";
					postBuild = ''
						wrapProgram $out/bin/parallel    \
							--set-default PARALLEL_HOME $parallelHome
					'';
				}
			)
		];
	};
}