Go to file
jolheiser 8b2170b2ec
initial commit
Signed-off-by: jolheiser <john.olheiser@gmail.com>
2023-11-29 13:08:49 -06:00
cmd/nixfig initial commit 2023-11-29 13:08:49 -06:00
testdata initial commit 2023-11-29 13:08:49 -06:00
.gitignore initial commit 2023-11-29 13:08:49 -06:00
LICENSE initial commit 2023-11-29 13:08:49 -06:00
README.md initial commit 2023-11-29 13:08:49 -06:00
go.mod initial commit 2023-11-29 13:08:49 -06:00
go.sum initial commit 2023-11-29 13:08:49 -06:00
nixfig.go initial commit 2023-11-29 13:08:49 -06:00
nixfig_test.go initial commit 2023-11-29 13:08:49 -06:00

README.md

nixfig

Read a nix file as a config.

Essentially just wraps nix eval (--json) --expr.

Allows parsing the following:

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:

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