Crates.io | flake-watcher |
lib.rs | flake-watcher |
version | 0.1.1 |
source | src |
created_at | 2023-01-16 16:37:52.034177 |
updated_at | 2023-01-16 19:46:13.01528 |
description | A simple tool to watch for changes in a nix flake and run a command when it changes |
homepage | https://github.com/zebreus/flake-watcher |
repository | https://github.com/zebreus/flake-watcher.git |
max_upload_size | |
id | 760339 |
size | 26,640 |
Build a local flake everytime its files change.
flake-watcher will print every new output path to stdout. Errors will be logged to stderr.
To run without installing you can use
nix run github:zebreus/flake-watcher
You can install the flake with nix profile install github:zebreus/flake-watcher
. flake-watcher is also available on crates.io.
Run on the default installable of the flake in the current directory. This will build the default installable every time a file in the flake changes.
$ flake-watcher .#default
/nix/store/wgjr46wxma9cl9wa5csxn22p9vk81rw7-flake-watcher-0.1.0
/nix/store/liin7xdrpd6zj246yz2nrzm9qhgr0ycx-flake-watcher-0.1.0
/nix/store/4cixv5qz39v20a4mazzbm2g4bb64y9l8-flake-watcher-0.1.0
See all options:
$ flake-watcher --help
Usage: flake-watcher [OPTIONS] [INSTALLABLE] [-- <NIX_BUILD_OPTIONS>...]
Arguments:
[INSTALLABLE] The flake output that will get watched. Example: .#foo
[NIX_BUILD_OPTIONS]... Additional options passed to nix build
Options:
--skip-initial-build Usually the flake is build once after starting flake-watcher even if no changes were made. This option skips that initial build
-h, --help Print help
-V, --version Print version
I wanted to build a document with a nix flake and have it update every time I modify the sources. I also wanted to be able to use the same flake to build the document in CI. Originally I planned to integrate a reloading webserver in flake-watcher but I decided to keep it simple and just print the new output path to stdout. This way you can pipe the output to any other program you want. Also I wasted enough time doing this, maybe I'll add a webserver later.
# The flake output contains html files that get hosted with a reloading webserver
export TEMP_DIR=$(mktemp -d)
nix run nixpkgs#python39Packages.livereload $TEMP_DIR &
flake-watcher | xargs -I {} cp -Trf {} $TEMP_DIR