diff --git a/modules/misc/news/2025/11/2025-11-30_00-04-38.nix b/modules/misc/news/2025/11/2025-11-30_00-04-38.nix new file mode 100644 index 000000000..e5beb0ce9 --- /dev/null +++ b/modules/misc/news/2025/11/2025-11-30_00-04-38.nix @@ -0,0 +1,7 @@ +{ + time = "2025-11-29T23:04:38+00:00"; + condition = true; + message = '' + A new module is available: 'programs.parallel'. + ''; +} diff --git a/modules/programs/parallel.nix b/modules/programs/parallel.nix new file mode 100644 index 000000000..4bb39a248 --- /dev/null +++ b/modules/programs/parallel.nix @@ -0,0 +1,42 @@ +{ + config, + lib, + pkgs, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkOption + types + ; + + cfg = config.programs.parallel; +in +{ + meta.maintainers = [ lib.maintainers.xavwe ]; + + options.programs.parallel = { + enable = mkEnableOption "GNU Parallel"; + + package = lib.mkPackageOption pkgs "parallel-full" { }; + + will-cite = mkOption { + type = types.bool; + default = false; + description = '' + Accept GNU Parallels citation policy: + ''; + }; + }; + + config = mkIf cfg.enable { + home = { + packages = [ cfg.package ]; + file.".parallel/will-cite" = mkIf cfg.will-cite { + text = "generated by home manager (programs.parallel.will-cite)"; + }; + }; + }; +} diff --git a/tests/modules/programs/parallel/default.nix b/tests/modules/programs/parallel/default.nix new file mode 100644 index 000000000..c73192cdb --- /dev/null +++ b/tests/modules/programs/parallel/default.nix @@ -0,0 +1 @@ +{ parallel-example-config = ./example-config.nix; } diff --git a/tests/modules/programs/parallel/example-config.nix b/tests/modules/programs/parallel/example-config.nix new file mode 100644 index 000000000..90c5d7c25 --- /dev/null +++ b/tests/modules/programs/parallel/example-config.nix @@ -0,0 +1,10 @@ +{ + programs.parallel = { + enable = true; + will-cite = true; + }; + + nmt.script = '' + assertFileExists home-files/.parallel/will-cite + ''; +}