2025-06-11 22:13:00 +01:00
# CI scripts
2024-08-03 18:31:40 +01:00
2025-06-11 22:13:00 +01:00
This directory contains CI-related scripts that are not part of the actual flake.
Unless developing or testing changes, you shouldn't need to run them manually.
2024-08-03 18:31:40 +01:00
## Developing
Because these scripts aren't packaged in the flake, you should use `nix-build` and `nix-shell` instead of `nix build` , `nix run` , and `nix develop` , etc.
For example, `nix-build -A generate` will build `./generate.nix` into `./result/bin/generate` .
A `shell.nix` is available that will place `generate` on your PATH.
You could use this directory's shell/packages from another working directory by supplying `nix-build` or `nix-shell` with a path.
2025-06-11 22:13:00 +01:00
E.g. `nix-shell ./ci` .
2024-08-03 18:31:40 +01:00
## Explanation
2025-06-11 22:13:00 +01:00
These packages are not in the flake outputs for three main reasons:
2024-08-03 18:31:40 +01:00
- Packages built using the flake must follow the flake's `nixConfig`
- Packages included in the flake's output are checked by `nix flake check`
2025-06-11 22:13:00 +01:00
- Some of the packages should have no dependency on the flake at all,
allowing this directory to be [sparse checked out][sparse-checkout] by a workflow
2024-08-03 18:31:40 +01:00
2025-06-11 22:13:00 +01:00
Being unable to bypass `nixConfig` is an issue because we want to disable [IFD] for the flake, but not for these scripts.
2024-08-03 18:31:40 +01:00
If something changes upstream that causes the builds to fail, we don't want this to block us updating `flake.lock` .
We'd still be made aware of any issues by the `update` CI workflow failing.
2025-06-11 22:13:00 +01:00
[sparse-checkout]: https://github.com/actions/checkout#scenarios
2024-08-03 18:31:40 +01:00
[IFD]: https://nixos.org/manual/nix/stable/language/import-from-derivation