# nickel-lang/nickel

Better configuration for less

Repository: https://github.com/nickel-lang/nickel
Canonical: https://ross.abutalabs.com/products/nickel
Homepage: https://nickel-lang.org/
Language: Rust
License: MIT
License Family: permissive
Topics: nix, configuration-language, configuration, infrastructure, nickel, rust
Last push: 2026-08-24T00:02:52+00:00

## Health v2 (maintenance only)
Score: 91/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 75, longevity 100
- inputs: {"age_days": 2794, "days_push": 10, "days_rel": 85, "gap_med": 54, "n_releases_24m": 14}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2981, forks 118 (observed 2026-08-28T04:07:33.175785+00:00)

## What it is
Nickel is a configuration language that generates static configuration files like JSON, YAML, and XML, essentially 'JSON with functions'. It features gradual typing, design-by-contract validation, and composable mergeable records, with a reference interpreter written in Rust.

## Use cases
- generate complex JSON/YAML config files programmatically
- manage Nix or Terraform configuration with reusable modules
- validate configuration data against schemas using contracts
- write modular config blocks and merge them into one output
- replace boilerplate-heavy YAML templating with a real language
- statically type-check configuration functions

## When to choose
- you generate large, complex configuration files for apps or infrastructure
- you want composable, reusable configuration instead of copy-pasted YAML
- you work in the Nix ecosystem and want a friendlier config language
- you need optional static typing plus runtime contract validation

## When to avoid
- you only need simple, static config files with no logic
- your tooling requires plain JSON/YAML authored directly
- your team cannot adopt a new niche language
- you need a mature ecosystem with broad editor and library support

## Facets
- artifact type: cli-tool
- maturity: active
- function: configuration-management, templating, interpreter, type-system, serialization
- domain: infrastructure-as-code, programming-languages, self-hosted
- platform: windows, cli, rust
- tags: configuration-language, nix, gradual-typing, contracts, -yaml-generation, language-server, programming-language, devops, configuration, linux, macos, docker

## Member repositories
- nickel-lang/nickel (main) score 91

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:33.175785+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T08:31:34.423083+00:00, confidence not recorded.
  - readme: https://github.com/nickel-lang/nickel (fetched 2026-08-28T04:07:33.175785+00:00, sha 8dcde439e433)
  - homepage: https://nickel-lang.org/ (fetched 2026-08-29T09:46:39.663075+00:00, sha afdcbac7f224)
  - site_page: https://nickel-lang.org/getting-started (fetched 2026-08-29T09:46:39.665495+00:00, sha 799f17b2a548)
  - site_page: https://nickel-lang.org/user-manual (fetched 2026-08-29T09:46:39.667501+00:00, sha 82c33be02d56)
- Data as of 2026-08-30T08:39:29.467469+00:00.
