A configuration language that combines the simplicity of JSON with the power of functions, types, and contracts.
Nickel is the universal configuration language. It automates the generation of static configuration files (JSON, YAML, TOML) using a principled design with gradual typing, first-class functions, and a contract system for validation. Nickel is developed by Tweag (a part of Modus Create).
- Official Resources
- Tools
- Editor Support
- Integrations
- Libraries and Contracts
- Configuration Examples
- Articles and Talks
- Community
- Nickel Website - Official website with getting started guide.
- Nickel Repository - Source code and issue tracker.
- User Manual - Comprehensive language documentation.
- Nickel Playground - Try Nickel in the browser.
- Standard Library Reference - Built-in functions and contracts.
- Getting Started - Installation and first steps.
- Nickel CLI - The reference interpreter with
eval,export,repl,format, andquerysubcommands. - Nickel Language Server (NLS) - LSP server providing diagnostics, type hints, completion, and formatting.
- json-schema-to-nickel - Convert JSON Schema specifications into Nickel contracts.
- Topiary - Universal formatter with Nickel support, used by
nickel formatunder the hood. - tree-sitter-nickel - Tree-sitter grammar for Nickel, enabling syntax highlighting across editors.
- nickel-mine - Package index for discovering and sharing Nickel packages.
- nickel-customs - Sanity-checking tool for published Nickel packages.
- Amalgam - Generate type-safe Nickel configurations from any schema source.
- nickel2ci - Generate multiple CI configuration files from a single Nickel expression.
- VS Code Extension - Official VS Code extension with NLS integration.
- vim-nickel - Vim/Neovim plugin for syntax highlighting.
- nickel-mode - Emacs major mode for Nickel.
- Zed Extension - Nickel support for the Zed editor.
- Organist - Batteries-included development environments with Nickel inside, controlling shells, formatters, and linters from a single console.
- Terraform-Nickel (tf-ncl) - Write Terraform configurations in Nickel with auto-generated provider contracts.
- tf-ncl-examples - Example Terraform configurations written with tf-ncl.
- nickel-kubernetes - Auto-generated Nickel contracts for Kubernetes resources, enabling type-checked and modular K8s definitions.
- rules_nickel - Bazel ruleset for generating configuration files with Nickel during builds.
- go-nickel - Go bindings for embedding the Nickel configuration language.
- NickelEval.jl - Julia FFI bindings for evaluating Nickel configurations.
- Oclis - CLI specification format using Nickel contracts, with code generation for Rust, Haskell, and PureScript.
- smart-keymap - Keyboard firmware using Nickel for keylayout configuration.
- care - Configuration management and reconciliation tool using Nickel.
- nickel-cursor - Define xcursor themes using Nickel contracts.
- helix-nickel - Nickel contracts for Helix editor configuration.
- Nickel by Example - Official tutorial walking through records, functions, merging, contracts, and more.
- tf-ncl-examples - Real-world Terraform configurations written in Nickel.
- K9 (Self-Validating Components) - Configuration format where components validate against Nickel contracts at three security levels: Kennel (data), Yard (contracts), and Hunt (execution).
- K9 Specification - Format specification and documentation for K9.
- k9-rs - Rust parser for K9 self-validating component files.
- k9-haskell - Haskell parser for K9 self-validating component files.
- k9-validate-action - GitHub Action to validate K9 configuration files.
- vscode-k9 - VS Code syntax highlighting for K9
.k9and.k9.nclfiles. - Conflow - Configuration flow orchestrator for Nickel, CUE, and validation workflows.
- Announcing Nickel 1.0 - Release announcement covering the vision and features of Nickel 1.0.
- Tweag Nickel Blog Posts - All Nickel-related posts from the Tweag engineering blog, including deep dives on contracts, gradual typing, and language design.
- Nickel: the Nix language spin-off - NixOS Discourse announcement explaining Nickel's relationship to Nix.
- Nickel: Better Configuration for Less (Hacker News) - Community discussion on Nickel's design goals.
- Discord - Official Nickel Discord server.
- GitHub Discussions - Ask questions and discuss Nickel development.
- GitHub Issues - Report bugs and request features.
- NixOS Discourse - Broader Nix community where Nickel is frequently discussed.
Contributions welcome! Read the contribution guidelines first.