diff --git a/lib/modules/default.nix b/lib/modules/default.nix index 7fbd308..862a7b1 100644 --- a/lib/modules/default.nix +++ b/lib/modules/default.nix @@ -3,5 +3,6 @@ ./lefthook.nix ./taskfile.nix ./cocogitto.nix + ./process_compose.nix ]; } diff --git a/lib/modules/process_compose.nix b/lib/modules/process_compose.nix new file mode 100644 index 0000000..32728d4 --- /dev/null +++ b/lib/modules/process_compose.nix @@ -0,0 +1,47 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (lib) mkEnableOption mkOption mkIf types; + cfg = config.process-compose; + + configFile = (pkgs.formats.yaml {}).generate "process-compose.yaml" cfg.config; + pcAlias = pkgs.writeTextFile { + name = "pc-alias"; + destination = "/bin/${cfg.alias}"; + executable = true; + text = + # sh + '' + ${pkgs.process-compose}/bin/process-compose --config "${configFile}" ''${@:1} + ''; + }; +in { + options.process-compose = { + enable = + mkEnableOption "Process-Compose" + // { + default = cfg.config != {}; + }; + alias = mkOption { + type = types.str; + default = "pc"; + description = '' + Alias for `process-compose`. + ''; + }; + config = mkOption { + type = types.attrs; + default = {}; + description = '' + Configure process-compose here. + ''; + }; + }; + + config = mkIf cfg.enable { + packages = [pcAlias]; + }; +} diff --git a/lib/modules/process_compose_test.nix b/lib/modules/process_compose_test.nix new file mode 100644 index 0000000..86c8935 --- /dev/null +++ b/lib/modules/process_compose_test.nix @@ -0,0 +1,28 @@ +{ + ntlib, + devshell, + ... +}: let + module = ./process_compose.nix; +in { + suites."Process-Compose" = { + pos = __curPos; + tests = [ + { + name = "basic"; + type = "script"; + script = let + shell = devshell.mkShell { + imports = [module]; + process-compose.enable = true; + }; + in + # sh + '' + ${ntlib.helpers.scriptHelpers} + assert "-f ${shell}/bin/pc" "/bin/pc should exist" + ''; + } + ]; + }; +} diff --git a/nix/repo/devShells.nix b/nix/repo/devShells.nix index 9680320..df160d0 100644 --- a/nix/repo/devShells.nix +++ b/nix/repo/devShells.nix @@ -54,6 +54,14 @@ in { }; }; + process-compose.config.processes = { + hello.command = "echo 'Hello World'"; + pc = { + command = "echo 'From Process Compose'"; + depends_on.hello.condition = "process_completed"; + }; + }; + cocogitto.config.changelog = { path = "CHANGELOG.md"; template = "remote";