Skip to content

hyperpolymath/awesome-nickel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Nickel Awesome

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).

Contents

Official Resources

Tools

  • Nickel CLI - The reference interpreter with eval, export, repl, format, and query subcommands.
  • 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 format under 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.

Editor Support

Integrations

  • 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.

Libraries and Contracts

  • nickel-cursor - Define xcursor themes using Nickel contracts.
  • helix-nickel - Nickel contracts for Helix editor configuration.

Configuration Examples

  • Nickel by Example - Official tutorial walking through records, functions, merging, contracts, and more.
  • tf-ncl-examples - Real-world Terraform configurations written in Nickel.

Formats Using 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 .k9 and .k9.ncl files.
  • Conflow - Configuration flow orchestrator for Nickel, CUE, and validation workflows.

Articles and Talks

Community

Contributing

Contributions welcome! Read the contribution guidelines first.

About

A curated list of awesome Nickel language resources, tools, and libraries

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors