diff --git a/modules/scripts/onchange.nix b/modules/scripts/onchange.nix index c18b8b01..78e36bf4 100644 --- a/modules/scripts/onchange.nix +++ b/modules/scripts/onchange.nix @@ -1,23 +1,35 @@ +{ withSystem, ... }: + +let + name = "onchange"; +in { + perSystem = + { pkgs, ... }: + with pkgs; + { + packages.${name} = writeShellApplication { + inherit name; + + runtimeInputs = [ + coreutils + entr + ]; + + text = '' + PATTERN="$1" + shift 1 + + find . -path "$PATTERN" -type f | entr -cs "$@" + ''; + }; + }; + flake.modules.homeManager.base = { pkgs, ... }: { home.packages = [ - (pkgs.writeShellApplication { - name = "onchange"; - - runtimeInputs = with pkgs; [ - coreutils - entr - ]; - - text = '' - PATTERN="$1" - shift 1 - - find . -path "$PATTERN" -type f | entr -cs "$@" - ''; - }) + (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) ]; }; } diff --git a/modules/scripts/ptest.nix b/modules/scripts/ptest.nix new file mode 100644 index 00000000..a0cfa6eb --- /dev/null +++ b/modules/scripts/ptest.nix @@ -0,0 +1,42 @@ +{ withSystem, ... }: + +let + name = "ptest"; +in +{ + perSystem = + psArgs@{ pkgs, ... }: + with pkgs; + { + packages.${name} = writeShellApplication { + inherit name; + + runtimeInputs = [ + psArgs.config.packages.onchange + ]; + + text = '' + command="phpunit" + args=("--colors") + + bin="vendor/bin" + + if [[ -x "$bin/pest" ]]; then + command="pest" + args=() + fi + + onchange "**/*.php" \ + "$bin/$command ''${args[*]} $*" + ''; + }; + }; + + flake.modules.homeManager.base = + { pkgs, ... }: + { + home.packages = [ + (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) + ]; + }; +}