Ansible but with Nix. https://nixible.projects.tf
Find a file
TF Renovate Bot ebbb3a2b0a Merge branch 'renovate/lock-file-maintenance-flake.nix' into 'main'
chore(deps): lock file maintenance (flake.nix)

See merge request TECHNOFAB/nixible!3
2026-02-01 00:59:04 +00:00
.gitlab feat: switch from flake-parts and devenv to rensa ecosystem 2025-12-31 18:31:09 +01:00
docs docs: update nixmkdocs, use svg logo, add style.css, set site_url 2025-09-25 20:35:37 +02:00
examples chore: initial commit 2025-07-15 21:10:36 +02:00
lib fix(module): typo 2025-12-31 18:34:13 +01:00
nix/repo chore(deps): lock file maintenance (nix/repo/flake.nix) 2026-01-01 01:09:09 +00:00
tests feat: switch from flake-parts and devenv to rensa ecosystem 2025-12-31 18:31:09 +01:00
.envrc feat: switch from flake-parts and devenv to rensa ecosystem 2025-12-31 18:31:09 +01:00
.gitignore feat: switch from flake-parts and devenv to rensa ecosystem 2025-12-31 18:31:09 +01:00
.gitlab-ci.yml feat: switch from flake-parts and devenv to rensa ecosystem 2025-12-31 18:31:09 +01:00
CHANGELOG.md chore(version): v0.3.0 2025-12-31 20:28:22 +01:00
flake.lock chore(deps): lock file maintenance (flake.nix) 2026-02-01 00:59:00 +00:00
flake.nix feat: switch from flake-parts and devenv to rensa ecosystem 2025-12-31 18:31:09 +01:00
LICENSE.md chore: initial commit 2025-07-15 21:10:36 +02:00
README.md chore: initial commit 2025-07-15 21:10:36 +02:00

Nixible

built with nix pipeline status License: MIT Latest Release Support me Docs

A Nix-based tool for managing Ansible playbooks with type safety and reproducibility.

What is Nixible?

Nixible bridges the Nix and Ansible ecosystems by allowing you to define Ansible playbooks, inventories, and collections as Nix expressions. It provides:

  • Type-safe playbook definitions using Nix's module system
  • Reproducible Ansible environments with locked dependencies
  • Automatic collection management from Ansible Galaxy

Quick Start

1. Define your configuration

Create a some-playbook.nix file:

{pkgs, ...}: {
  collections = {
    "community-general" = {
      version = "8.0.0";
      hash = "sha256-...";
    };
  };
  
  inventory = {}; # can also be omitted, we only use localhost
  
  playbook = [{
    name = "Hello World";
    hosts = "localhost";
    tasks = [{
      name = "Say hello";
      debug.msg = "Hello from Nixible!";
    }];
  }];
}

2. Run with Nix

{
  inputs.nixible.url = "gitlab:TECHNOFAB/nixible?dir=lib";
  # outputs = ...
  # nixible_lib = inputs.nixible.lib { inherit pkgs lib; };
  packages.some-playbook = nixible_lib.mkNixibleCli ./some-playbook.nix;
}
nix run .#some-playbook

Documentation

Check the docs.