diff options
Diffstat (limited to 'pkgs/watch-while')
-rw-r--r-- | pkgs/watch-while/default.nix | 23 | ||||
-rw-r--r-- | pkgs/watch-while/watch-while.zsh | 19 |
2 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/watch-while/default.nix b/pkgs/watch-while/default.nix new file mode 100644 index 0000000..fb29441 --- /dev/null +++ b/pkgs/watch-while/default.nix @@ -0,0 +1,23 @@ +{ + zsh, + mpv, + stdenvNoCC, +}: +stdenvNoCC.mkDerivation rec { + pname = "watch-while"; + version = "0.1.0"; + + src = ./watch-while.zsh; + unpackPhase = ":"; + + buildPhase = '' + substituteAll $src ${pname} + chmod +x ${pname} + ''; + inherit zsh mpv; + + installPhase = '' + mkdir -p $out/bin + mv ${pname} $out/bin/ + ''; +} diff --git a/pkgs/watch-while/watch-while.zsh b/pkgs/watch-while/watch-while.zsh new file mode 100644 index 0000000..d38d393 --- /dev/null +++ b/pkgs/watch-while/watch-while.zsh @@ -0,0 +1,19 @@ +#!@zsh@/bin/zsh + +set -ue + +# This file should be a (symbolik link to a) file which we want to watch. Once +# we're finished with that movie, we just read the next. +movie=${XDG_CONFIG_HOME:-$HOME/.config}/watch-while/movie + +if [ -f $movie ]; then + @mpv@/bin/mpv --save-position-on-quit --autofit='90%x90%' -- $movie >/dev/null 2>&1 & + mpv_pid=$? + trap 'kill -s QUIT $mpv_pid' EXIT + + # We don't exec because we want our exec handler to fire. + "$@" || exit $? +else + # In this case where we don't have any movie we just transparently run the command. + exec "$@" +fi |