mirror of
https://gitlab.com/TECHNOFAB/soonix.git
synced 2025-12-12 14:20:06 +01:00
61 lines
1.9 KiB
Markdown
61 lines
1.9 KiB
Markdown
# Soonix
|
|
|
|
Soonix helps you declaratively manage configuration files, build scripts, etc. using the Nix module system.
|
|
It minimizes configuration clutter and provides shell hooks for automatic file management.
|
|
|
|
Heavily based on and inspired by [Nixago](https://github.com/nix-community/nixago), thus the name (ago \<-> soon, if that wasn't obvious).
|
|
|
|
## Features
|
|
|
|
- **Declarative Configuration**: Uses Nix modules for type-safe, declarative file management
|
|
- **Multiple Engines**: Support for JSON/YAML/TOML, templates, scripts, and more
|
|
- **Shell Hooks**: Automatic file management with status tracking
|
|
- **Flexible File Handling**: Choose between symlinks and copies based on your needs
|
|
- **GitIgnore Integration**: Automatic management of .gitignore entries
|
|
|
|
## Quick Start
|
|
|
|
```nix
|
|
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
soonix.url = "gitlab:TECHNOFAB/soonix?dir=lib";
|
|
};
|
|
|
|
outputs = { nixpkgs, soonix, ... }: let
|
|
system = "x86_64-linux";
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
|
|
shellHook = (soonix.lib { inherit pkgs; }).mkShellHook {
|
|
hooks = {
|
|
eslintrc = {
|
|
output = ".eslintrc.json";
|
|
generator = "nix";
|
|
data = { extends = ["eslint:recommended"]; };
|
|
opts = { format = "json"; };
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
devShells.${system}.default = pkgs.mkShell {
|
|
packages = [ pkgs.jq ];
|
|
inherit shellHook;
|
|
};
|
|
};
|
|
}
|
|
```
|
|
|
|
If you use [rensa-nix/devshell](https://devshell.rensa.projects.tf), you can also
|
|
use the `devshellModule` for easy integration, see the docs for more.
|
|
|
|
## Available Engines
|
|
|
|
- **`nix`**: Convert Nix data to JSON, YAML, TOML, INI, XML formats
|
|
- **`string`**: Output raw string content with optional executable permissions
|
|
- **`derivation`**: Use existing Nix derivations as file content
|
|
- **`gotmpl`**: Advanced Go template rendering via gomplate
|
|
- **`jinja`**: Python Jinja2 template rendering
|
|
|
|
## Docs
|
|
|
|
[Docs](https://soonix.projects.tf)
|