Skip to main content

Registry

The glixos registry is a JSON file that maps short names to flake refs. It's the second step in the resolver chain (after URI passthrough, before nix registry list); see ADR-004.

Shape

{
"schema": 1,
"packages": {
"hello": {
"flake": "github:donnismoore/glixos?dir=examples/pkg-hello",
"description": "GNU Hello example"
},
"greeting": {
"flake": "github:donnismoore/glixos?dir=examples/pkg-greeting",
"description": "Demo home module"
}
}
}

There is no server. The registry is just a file at an HTTPS URL. The default lives in this repo under registry/registry.json.

Configuring a registry

Per host, in glix.toml:

[settings]
registry_url = "https://raw.githubusercontent.com/donnismoore/glixos/main/registry/registry.json"

Per invocation:

glix add --registry-url=https://example.com/my-registry.json firefox
glix search --refresh hello

Caching

The fetched JSON is cached under $XDG_CACHE_HOME/glix/. Use --refresh to force a refetch:

glix search --refresh hello
glix add --refresh hello

Self-hosting

Any HTTPS endpoint that serves the JSON schema above works. Common approaches:

  • A file in a public git repo, served via raw.githubusercontent.com.
  • A static site behind your own domain.
  • A file inside an internal-only HTTP server for private deployments.

Bypassing entirely

If you never want to use the registry, always pass full flake refs:

glix add github:owner/repo
glix add path:./local/flake

glix add only consults the registry for short names; URIs go straight through.