Auto generated project files from Nix code, with gitignore handling and many generators. https://soonix.projects.tf
Find a file
TECHNOFAB 9d7257d48c Merge branch 'feat/cli' into 'main'
feat!: add cli with update and list subcommands + gitignore param

See merge request TECHNOFAB/soonix!3
2026-01-28 14:43:27 +01:00
.gitlab feat!: add cli with update and list subcommands + gitignore param 2026-01-05 21:39:41 +01:00
docs feat(generator): add Mustache 2026-01-26 21:23:49 +01:00
lib Merge branch 'feat/cli' into 'main' 2026-01-28 14:43:27 +01:00
nix/repo chore(devShells): use new soonix syntax 2026-01-05 22:12:36 +01:00
tests Merge branch 'feat/cli' into 'main' 2026-01-28 14:43:27 +01:00
.envrc chore: initial commit 2025-08-25 19:14:08 +02:00
.gitignore fix(generator): fix leading newline in generated json files 2025-11-16 20:56:57 +01:00
.gitlab-ci.yml chore: add devtools 2026-01-05 22:11:33 +01:00
CHANGELOG.md chore(version): v0.2.0 2026-01-28 14:40:58 +01:00
flake.lock chore(deps): lock file maintenance 2026-01-01 01:49:31 +00:00
flake.nix feat: add CI with nix-gitlab-ci 2025-09-04 11:01:08 +02:00
LICENSE.md docs: add initial docs base 2025-08-27 11:22:26 +02:00
README.md feat(generator): add Mustache 2026-01-26 21:23:49 +01:00

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 formats
  • string: Output raw string content with optional executable permissions
  • derivation: Use existing Nix derivations as file content
  • gomplate: Advanced Go template rendering via gomplate
  • jinja: Python Jinja2 template rendering
  • mustache: Mustache template rendering

Docs

Docs