mirror of
https://gitlab.com/TECHNOFAB/soonix.git
synced 2025-12-10 13:20:05 +01:00
Auto generated project files from Nix code, with gitignore handling and many generators. https://soonix.projects.tf
| docs | ||
| lib | ||
| nix/repo | ||
| tests | ||
| .envrc | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE.md | ||
| README.md | ||
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, 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
{
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, 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 formatsstring: Output raw string content with optional executable permissionsderivation: Use existing Nix derivations as file contentgotmpl: Advanced Go template rendering via gomplatejinja: Python Jinja2 template rendering