rel:: [[Programming Languages]] rel:: [[configuration]] rel:: [[devops]] # nickel ## Description > Nickel is a generic configuration language. Its purpose is to automate the generation of static configuration files - think JSON, YAML, XML, or your favorite data representation language - that are then fed to another system. It is designed to have a simple, well-understood core: it is in essence JSON with functions. - optional typing - design by contract > The motivating use cases are in particular: > - The Nix package manager: Nix is a declarative package manager using its own language for specifying packages. Nickel is an evolution of the Nix language, while trying to overcome some of its limitations. > - Infrastructure as code: infrastructure is becoming increasingly complex, requiring a rigorous approach to deployment, modification and configuration. This is where a declarative approach also shines, as adopted by Terraform, NixOps or Kubernetes, all requiring potentially complex generation of configuration. > - Build systems: build systems (like Bazel) need a specification of the dependency graph. ## [[Reference]] - <https://nickel-lang.org/> - [user manual](https://nickel-lang.org/user-manual/) - [1.0 announcement](https://www.tweag.io/blog/2023-05-17-nickel-1.0-release/) [[2023-05-17]]