# Panix - Universal NixOS Deployment Tool

**URL:** https://discourse.nixos.org/t/panix-universal-nixos-deployment-tool/77911
**Category:** Deployments
**Created:** [May 29, 2026, 11:23am UTC](https://discourse.nixos.org/t/panix-universal-nixos-deployment-tool/77911 "2026-05-29T11:23:56Z")
**Posts on this page:** 3
**Page:** 2

<div class="post-metadata">

### Author: ![mihak](https://discourse.nixos.org/user_avatar/discourse.nixos.org/mihak/32/37554_2.png) [@mihak](https://discourse.nixos.org/u/mihak)
#### Post date: [June 10, 2026, 10:49am UTC](https://discourse.nixos.org/t/panix-universal-nixos-deployment-tool/77911/21 "2026-06-10T10:49:45Z")

</div>

Is [Quick Start | Panix](https://panix.xyz/getting-started/) not good?

---

<div class="post-metadata">

### Author: ![mihak](https://discourse.nixos.org/user_avatar/discourse.nixos.org/mihak/32/37554_2.png) [@mihak](https://discourse.nixos.org/u/mihak)
#### Post date: [June 10, 2026, 11:09am UTC](https://discourse.nixos.org/t/panix-universal-nixos-deployment-tool/77911/22 "2026-06-10T11:09:20Z")

</div>

Thanks for taking interest.

1. The approach was chosen, to keep it universally compatible with nix native tooling.

2. To keep project sane development and maintainability wise, a constraint is that we only have 1 source of truth. Either separate config (yaml, nix) or directly in nixosConfigurations. Making it in nixosConfigurations is just more problematic, for all the features we have currently, and may have in the future.

3. I have opened a discussion for this already [feat: draft: Support deploying multiple profiles per machine (home-manager, nixvim, system-manager, etc.) · Issue #5 · mihakrumpestar/panix · GitHub](https://github.com/mihakrumpestar/panix/issues/5). While I would be interested in implementing it, it is not trivial, as the profiles are not exactly standard. Please provide any insight that may make this easier to logically implement.

4. `hostname` does not need to be hardcoded in configuration. It can be resolved from DHCP [systemd: Allow setting the transient hostname via DHCP by primeos · Pull Request #91232 · NixOS/nixpkgs · GitHub](https://github.com/NixOS/nixpkgs/pull/91232).

As always, I am fully open to suggestions and improvements, especially on issue #5. If something could be done better, it should be.

---

<div class="post-metadata">

### Author: ![mihak](https://discourse.nixos.org/user_avatar/discourse.nixos.org/mihak/32/37554_2.png) [@mihak](https://discourse.nixos.org/u/mihak)
#### Post date: [August 22, 2026, 4:12pm UTC](https://discourse.nixos.org/t/panix-universal-nixos-deployment-tool/77911/23 "2026-08-22T16:12:39Z")

</div>

Here is an update after a bit less than three months. The tool has changed a lot since, six releases (v0.7.1 → v0.9.2).

Main change: **Panix is no longer a NixOS deployment tool. It is now a Universal Nix Deployment Orchestrator** : it deploys any flake installable, not just NixOS systems. Each output type carries its own build and activation semantics, while `packages` installs directly into the target’s profile with `nix profile add`.

Built-in output types now include:

- `nixosConfigurations` (NixOS, deploy and bootstrap)
- `homeConfigurations` (home-manager)
- `darwinConfigurations` (nix-darwin)
- `nixOnDroidConfigurations` (nix-on-droid)
- `systemConfigs` (system-manager)
- `packages` (plain packages into the user profile, e.g. nixvim or nvf)
- `maidConfigurations` (nix-maid bundles)

and multiple types can target the same machine in a single run:

```yaml
fleet:
  flakes:
    my-infra:
      installables:
        nixosConfigurations:
          workstation:
            machines:
              workstation:
        homeConfigurations:
          dev:
            machines:
              workstation: # same machine, different installable type

```

There is also support for custom output types: If your flake exposes outputs under a non-standard attribute, you can declare custom types under `output_types` with their own build and activation semantics. Docs: [Custom Output Types | Panix](https://panix.xyz/configuration/output-types/)  
If you think a type should be built-in, open an issue. The goal is comprehensive coverage of the Nix ecosystem.

Added also opt-in `auto_rollback`, settable at fleet, flake, installable or machine level. Panix captures each machine’s pre-deploy generation during Inspect, and when activation fails it reverts to that generation. Docs: [Auto Rollback | Panix](https://panix.xyz/features/auto-rollback/)

Everything else:

- e2e tests that install and redeploy real VMs across installable types (NixOS, home-manager, system-manager, packages, nix-maid), including an auto-rollback scenario
- TUI engine optimizations, lower CPU and memory usage
- shell completions that activate automatically in Nix environments
- optional Cachix cache with prebuilt binaries
- Lix compatibility fixes
- smaller binary

New demo:  
 ![demo](https://discourse.nixos.org/uploads/default/original/3X/f/2/f26f9e3e764a6023019ab3bc0f5b3f43e4cbb390.gif)

TUI:

 ![tui](https://discourse.nixos.org/uploads/default/original/3X/a/3/a39073836c7dc0c365e2024fd53e7f11ad29285d.png)

[Previous page](https://discourse.nixos.org/t/panix-universal-nixos-deployment-tool/77911.md?page=1)
