From b552960c3086266f9f612bc9d067f9947cb137e5 Mon Sep 17 00:00:00 2001 From: m3tam3re Date: Mon, 7 Apr 2025 19:47:07 +0200 Subject: [PATCH] Initial commit --- configuration.nix | 47 ++++++++++++++++++++ formatters/basic-formatters.nix | 58 ++++++++++++++++++++++++ formatters/default.nix | 7 +++ formatters/multiple-files.nix | 67 ++++++++++++++++++++++++++++ formatters/validated-app.nix | 78 +++++++++++++++++++++++++++++++++ formatters/yaml-module.nix | 41 +++++++++++++++++ 6 files changed, 298 insertions(+) create mode 100644 configuration.nix create mode 100644 formatters/basic-formatters.nix create mode 100644 formatters/default.nix create mode 100644 formatters/multiple-files.nix create mode 100644 formatters/validated-app.nix create mode 100644 formatters/yaml-module.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..41d487b --- /dev/null +++ b/configuration.nix @@ -0,0 +1,47 @@ +{ + imports = [ + ./formatters + ]; + + services.simple-app = { + enable = true; + settings = { + server = { + port = 8080; + host = "0.0.0.0"; + }; + logging = { + level = "info"; + file = "/var/log/simple-app.log"; + }; + }; + }; + services.validated-app = { + enable = true; + settings = { + server = { + port = 8080; + host = "0.0.0.0"; + }; + logging = { + level = "info"; + file = "/var/log/simple-app.log"; + }; + }; + }; + services.multi-config-app = { + enable = true; + serverSettings = { + port = 8000; + host = "0.0.0.0"; + }; + databaseSettings = { + url = "postgres://localhost/myapp"; + maxConnections = 50; + }; + loggingSettings = { + level = "warn"; + format = "text"; + }; + }; +} diff --git a/formatters/basic-formatters.nix b/formatters/basic-formatters.nix new file mode 100644 index 0000000..3227740 --- /dev/null +++ b/formatters/basic-formatters.nix @@ -0,0 +1,58 @@ +{pkgs ? import {}}: let + # Initialize formatters + yamlFormat = pkgs.formats.yaml {}; + jsonFormat = pkgs.formats.json {}; + tomlFormat = pkgs.formats.toml {}; + iniFormat = pkgs.formats.ini {}; + + # Example configuration data + exampleConfig = { + server = { + host = "localhost"; + port = 8080; + }; + database = { + url = "postgres://user:pass@localhost/db"; + maxConnections = 100; + }; + logging = { + level = "info"; + file = "/var/log/app.log"; + }; + }; + + # Generate files with each formatter + yamlFile = yamlFormat.generate "config.yaml" exampleConfig; + jsonFile = jsonFormat.generate "config.json" exampleConfig; + tomlFile = tomlFormat.generate "config.toml" exampleConfig; + iniFile = iniFormat.generate "config.ini" exampleConfig; +in + pkgs.runCommand "formatter-examples" {} '' + mkdir -p $out + cp ${yamlFile} $out/config.yaml + cp ${jsonFile} $out/config.json + cp ${tomlFile} $out/config.toml + cp ${iniFile} $out/config.ini + + # Create a simple script to display the files + mkdir -p $out/bin + cat > $out/bin/show-configs <