SaaSHub helps you find the best software and product alternatives Learn more →
Top 14 Rust Configuration Projects
-
config-rs
⚙️ Layered configuration system for Rust applications (with strong support for 12-factor applications).
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
twelf
Twelf is a configuration solution for Rust including 12-Factor support. It is designed with layers in order to configure different sources and formats to build your configuration. The main goal is to be very simple using a proc macro.
-
cvars
Configuration variables and consoles for games in Rust. An alternative to inline_tweak / const-tweaker with different tradeoffs.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
I like config.rs, but I am struggling to overwrite config profiles with environment variables. The desired config is mixed, like .toml
So, its key features are:
1. domain-specific: designed for conveniently creating and composing derivations. This reason alone already justifies a new language, or an embedded domain-specific language (such as the Guile/Scheme for guix), or a mix of both (Starlark, the build language of Bazel embedded in a restricted Python-variant).
2. purely functional: this ties well into the philosophical backing of Nix the package manager, which aims to be purely functional, also known as hermeticity in other build systems (Bazel).
3. lazily evaluated: similar to other build systems (including Bazel), so that you can build only what you need on demand.
4. dynamically typed: this one is controversial. Being dynamically typed—in other words, not developing a type system—gets Nix out of the door first. But users often complain about the lack of proper types and modularity. There are experiments to address this, such as Nickel (https://github.com/tweag/nickel).
It is understandable that a one-pager may not have space for the whys.
KCL: A declarative configuration and policy programming language implemented by Rust, which improves the writing of a large number of complex configurations through mature programming language technology and practice, and is committed to building better modularity, scalability and stability around configuration, simpler logic writing, fast automation and good ecological extensionally.
Project mention: Published my first Crate today to map Environment Variables to Enums | /r/rust | 2023-06-11Have you seen envy?
Project mention: Ask HN: How do you manage dotfiles and provision machines? | news.ycombinator.com | 2023-05-26Probably true but as an aging and burned out dev I really hoped that there would be some ready and baked solutions by mid-2023, you know.
It's actually quite the glaring hole in dev tooling. Everyone formulating their own cloud or GIT synced adhoc scripts is a huge waste of energy IMO!
Guess I'll have to start allocating time and check out Ansible, Chef and Puppet (I heard they can do OS- and distro-agnostic package management which sounds promising). Or, since I have no plans to use Windows for anything except gaming ever again and will stick to Macs and Linux machines, then I'll just carefully compose a few bash/zsh scripts with some package manager shims and command/arguments translation and nail that and use it to my grave.
Still, I really expected dev tooling to be better. It's weird how each one of us has to invent their own package syncing manager.
The only tool I was able to find is https://github.com/tversteeg/emplace -- but I am still fighting with it and I can't even make it use config file on a custom location, and it does seem semi-defunct. Will research it a bit, still have hope it'll work but likely not. Oh well.
Thank you, I thought about this one. The challenge with config.rs it doesn't support lists and hashes in environment variables. I found a crate which does exactly what I need Twelf - surprisingly unpopular.
Project mention: Announcing cvars 0.4.2 - significant build time improvements, new features, consoles updated to latest macroquad and fyrox | /r/rust_gamedev | 2023-07-21
Rust Configuration related posts
-
RCL: A Reasonable Configuration Language
-
Hey Rustaceans! Got a question? Ask here (49/2023)!
-
KCL is an open-source constraint-based record and functional language
-
Show HN: Flake schemas – teaching Nix about your flake outputs
-
KCL: A Python Like Configuration Programming Language written in Rust and Python
-
KCL programming language. - Mutation Validation Abstraction Production-Ready | KCL programming language.
-
Announcing cvars 0.4.2 - significant build time improvements, new features, consoles updated to latest macroquad and fyrox
-
A note from our sponsor - SaaSHub
www.saashub.com | 10 May 2024
Index
What are some of the best open-source Configuration projects in Rust? This list will help you:
Project | Stars | |
---|---|---|
1 | config-rs | 2,348 |
2 | nickel | 2,161 |
3 | kcl | 1,325 |
4 | confy | 850 |
5 | envy | 803 |
6 | dotter | 770 |
7 | emplace | 246 |
8 | confique | 156 |
9 | rcl | 135 |
10 | twelf | 107 |
11 | autokernel | 87 |
12 | cvars | 52 |
13 | cfg-rs | 38 |
14 | json_env | 4 |
Sponsored