#flake #nix #watcher #nixos #nix-build #nixpkgs

app flake-watcher

一个简单的工具,用于监视 nix flake 的更改并在更改时运行命令

2 个版本

0.1.1 2023 年 1 月 16 日
0.1.0 2023 年 1 月 16 日

#1304开发工具

MIT 许可证

11KB
152

flake-watcher

每次文件更改时构建本地 flake。

flake-watcher 将打印每个新的输出路径到 stdout。错误将被记录到 stderr。

安装

要运行而不安装,可以使用

nix run github:zebreus/flake-watcher

您可以使用 nix profile install github:zebreus/flake-watcher 安装 flake。flake-watcher 也在 crates.io 上提供。

示例

在当前目录中运行 flake 的默认可安装版本。这将每次 flake 中的文件更改时构建默认可安装版本。

$ 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

查看所有选项

$ 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

动机

我想构建一个带有 nix flake 的文档,并且每次我修改源文件时它都会更新。我还想能够在 CI 中使用相同的 flake 来构建文档。最初我计划在 flake-watcher 中集成一个重新加载的 web 服务器,但我决定保持简单,只打印新的输出路径到 stdout。这样您可以将输出管道到任何其他您想要的程序。此外,我已经在这方面浪费了足够的时间,也许以后我会添加一个 web 服务器。

# 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

依赖关系

~1.6–9MB
~74K SLoC