57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
|
|
# Non-flake Inputs
|
||
|
|
|
||
|
|
This note covers `41-non-flake-inputs/`, which declares `inputs.releaseData.flake = false;` so the input is consumed as raw source instead of as a flake.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. What `flake = false` Changes
|
||
|
|
|
||
|
|
Normally, a flake input is expected to expose `outputs`. Setting `flake = false` tells Nix to treat the input as a plain source tree instead.
|
||
|
|
|
||
|
|
The example reads that source through `self.inputs.releaseData`, so it works with files directly instead of importing another flake interface.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. Why This Example Uses a Local Path
|
||
|
|
|
||
|
|
The example keeps the source local with:
|
||
|
|
|
||
|
|
```nix
|
||
|
|
releaseData = {
|
||
|
|
url = "path:./release-data";
|
||
|
|
flake = false;
|
||
|
|
};
|
||
|
|
```
|
||
|
|
|
||
|
|
That makes the boundary obvious:
|
||
|
|
|
||
|
|
- `release-data/` has no `flake.nix`,
|
||
|
|
- the parent flake reads `manifest.json` directly, and
|
||
|
|
- the package is built from values parsed out of that JSON file.
|
||
|
|
|
||
|
|
The same pattern works with remote GitHub sources that are not flakes. The important part is `flake = false`, not the transport.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. What the Check Verifies
|
||
|
|
|
||
|
|
The check looks at both layers:
|
||
|
|
|
||
|
|
- parsed values such as the release name and wave count, and
|
||
|
|
- the raw JSON text from the input path.
|
||
|
|
|
||
|
|
That keeps the example focused on the real distinction: a non-flake input gives you files to read, not outputs to import.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. Commands to Try
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd 41-non-flake-inputs
|
||
|
|
|
||
|
|
nix flake metadata
|
||
|
|
nix build
|
||
|
|
./result/bin/show-raw-release
|
||
|
|
nix flake check
|
||
|
|
```
|