From 4b871d332eca03dfb774bcb08f99a81605570e04 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Tue, 23 Sep 2025 12:31:56 +0100 Subject: [PATCH 1/4] Refactor Signed-off-by: Oliver Davies --- packages/create-script.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/create-script.nix b/packages/create-script.nix index 1753e45f..840018fd 100755 --- a/packages/create-script.nix +++ b/packages/create-script.nix @@ -7,9 +7,7 @@ pkgs.writeShellApplication { cat > "$1" << EOF #!/usr/bin/env bash - set -o errexit - set -o nounset - set -o pipefail + set -euo pipefail EOF From a74ee06ec3167b696bd709d1290ebc5d77198715 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 24 Sep 2025 01:35:51 +0100 Subject: [PATCH 2/4] Create `onchange` script Signed-off-by: Oliver Davies --- modules/scripts/onchange.nix | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 modules/scripts/onchange.nix diff --git a/modules/scripts/onchange.nix b/modules/scripts/onchange.nix new file mode 100644 index 00000000..c18b8b01 --- /dev/null +++ b/modules/scripts/onchange.nix @@ -0,0 +1,23 @@ +{ + 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 "$@" + ''; + }) + ]; + }; +} From 4f53f5de75e1b048ec59251c56d554276732d918 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 24 Sep 2025 02:04:46 +0100 Subject: [PATCH 3/4] Add `ptest` to run and watch PHP tests Signed-off-by: Oliver Davies --- modules/scripts/onchange.nix | 42 +++++++++++++++++++++++------------- modules/scripts/ptest.nix | 42 ++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 modules/scripts/ptest.nix 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})) + ]; + }; +} From c80ebf9355fc2fa75e6f07ed09f3bd00b64e307a Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 24 Sep 2025 23:40:15 +0100 Subject: [PATCH 4/4] Add `datepath` script Signed-off-by: Oliver Davies --- modules/scripts/datepath.nix | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 modules/scripts/datepath.nix diff --git a/modules/scripts/datepath.nix b/modules/scripts/datepath.nix new file mode 100644 index 00000000..fa2b4e4d --- /dev/null +++ b/modules/scripts/datepath.nix @@ -0,0 +1,26 @@ +{ withSystem, ... }: + +let + name = "datepath"; +in +{ + perSystem = + { pkgs, ... }: + { + packages.${name} = pkgs.writeShellApplication { + inherit name; + + runtimeInputs = with pkgs; [ coreutils ]; + + text = ''date "+%4Y/%m/%d" "-d ''${*:-now}"''; + }; + }; + + flake.modules.homeManager.base = + { pkgs, ... }: + { + home.packages = [ + (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) + ]; + }; +}