mirror of https://git.jolheiser.com/nixfig.git
48 lines
771 B
Markdown
48 lines
771 B
Markdown
|
# nixfig
|
||
|
|
||
|
Read a nix file as a config.
|
||
|
|
||
|
Essentially just wraps `nix eval (--json) --expr`.
|
||
|
|
||
|
|
||
|
Allows parsing the following:
|
||
|
```nix
|
||
|
let
|
||
|
user = "jolheiser";
|
||
|
in {
|
||
|
log = {
|
||
|
level = "warn";
|
||
|
# Name the log file after the user....for reasons
|
||
|
file = "${user}.log";
|
||
|
};
|
||
|
http = {
|
||
|
host = "0.0.0.0";
|
||
|
port = 1234;
|
||
|
# Make user an admin, but also make a generic admin user
|
||
|
admins = [user "admin"];
|
||
|
};
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Into a struct like:
|
||
|
```go
|
||
|
type Config struct {
|
||
|
Log struct {
|
||
|
Level string // warn
|
||
|
File string // jolheiser.log
|
||
|
}
|
||
|
HTTP struct {
|
||
|
Host string // 0.0.0.0
|
||
|
Port int // 1234
|
||
|
Admins []string // [jolheiser admin]
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
It can also marshal a struct into a valid (albeit minified) nix expression.
|
||
|
|
||
|
|
||
|
## License
|
||
|
|
||
|
[MIT](LICENSE)
|