https://github.com/numtide/nar-serve
Unpack and serve NAR file content on the fly
https://github.com/numtide/nar-serve
binary-cache buildbot-numtide nar nix now-sh
Last synced: about 2 months ago
JSON representation
Unpack and serve NAR file content on the fly
- Host: GitHub
- URL: https://github.com/numtide/nar-serve
- Owner: numtide
- License: apache-2.0
- Created: 2019-05-01T08:56:34.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2025-04-01T19:21:17.000Z (2 months ago)
- Last Synced: 2025-04-01T20:27:03.419Z (2 months ago)
- Topics: binary-cache, buildbot-numtide, nar, nix, now-sh
- Language: Go
- Homepage:
- Size: 383 KB
- Stars: 38
- Watchers: 11
- Forks: 8
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# nar-serve - Serve NAR file content directly from cache
Push your build artifacts to one place.
All the files in https://cache.nixos.org are packed in NAR files which makes
them not directly accessible. This service allows to download, decompress,
unpack and serve any file in the cache on the fly.## Use cases
* Avoid publishing build artifacts to both the binary cache and another service.
* Allows to share build results easily.
* Inspect the content of a NAR file.## Development
Inside the provided nix shell run:
```shell
./start-dev
```This will create a small local server with live reload that emulates now.sh.
Currently, the default port is 8383. You can change it by setting the `PORT`
environment variable, or `HTTP_ADDR` to also change the bind address.## Usage
Store contents can be fetched via a simple HTTP GET request.
Append any store path to the hostname to fetch and unpack it on
the fly. That's it.E.g.:
* https://serve.ntd.one/nix/store/barxv95b8arrlh97s6axj8k7ljn7aky1-go-1.12/share/go/doc/effective_go.html
NAR archives also contain information about the executable bit for each contained file.
nar-serve uses a custom HTTP header named `NAR-executable` to indicate whether the fetched file would be executable.## Configuration
You can use the following environment variables to configure nar-serve:
| Name | Default value | Description |
|:-- |:-- |:-- |
| `PORT` | `8383` | Port number on which nar-service listens |
| `HTTP_ADDR` | `:$PORT` | HTTP address to bind the server to. When set, takes precedence over $PORT. |
| `NIX_CACHE_URL` | `https://cache.nixos.org` | The URL of the Nix store from which NARs are fetched |
| `DOMAIN` | "" | When set, also serve `.$DOMAIN` paths. |## Contributing
Contributions are welcome!
Before adding any new feature it might be best to first discuss them by
creating a new issue in https://github.com/numtide/nar-serve/issues .All code is licensed under the Apache 2.0 license.