Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Usage with Flakes

Installation

colmena is included in Nixpkgs beginning with 21.11.

For this tutorial, use the following command to enter an ephemeral environment with the colmena command:

nix shell nixpkgs#colmena

If you are interested in trying out the bleeding-edge version of Colmena, Read the unstable version of the Manual for instructions.

Basic Configuration

Colmena reads the colmenaHive output in your Flake, generated with colmena.lib.makeHive.

Here is a short example:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    colmena.url = "github:nix-community/colmena";
  };
  outputs = { nixpkgs, colmena, ... }: {
    colmenaHive = colmena.lib.makeHive {
      meta = {
        nixpkgs = import nixpkgs {
          system = "x86_64-linux";
          overlays = [];
        };
      };

      host-a = { name, nodes, pkgs, ... }: {
        boot.isContainer = true;
        time.timeZone = nodes.host-b.config.time.timeZone;
      };
      host-b = {
        deployment = {
          targetHost = "somehost.tld";
          targetPort = 1234;
          targetUser = "luser";
        };
        boot.isContainer = true;
        time.timeZone = "America/Los_Angeles";
      };
    };
  };
}

The full set of deployment options can be found here. You can also check out the example in the main tutorial for some inspiration.

Now you are ready to use Colmena! To build the configuration:

colmena build

To build and deploy to all nodes:

colmena apply

Migrating to Direct Flake Evaluation

error: flake ‘git+file:///path/to/flake’ does not provide attribute ‘packages.x86_64-linux.colmenaHive’, ‘legacyPackages.x86_64-linux.colmenaHive’ or ‘colmenaHive’

Colmena now uses nix eval to evaluate flakes. Your flake needs to depend on Colmena itself as an input and expose a new output called colmenaHive:

 {
   inputs = {
+    # ADDED: Colmena input
+    colmena.url = "github:nix-community/colmena";

     # ... Rest of configuration ...
   };
   outputs = { self, colmena, ... }: {
+    # ADDED: New colmenaHive output
+    colmenaHive = colmena.lib.makeHive self.outputs.colmena;

     # Your existing colmena output
     colmena = {
       # ... Rest of configuration ...
     };
   };
 }

Using Legacy Flake Evaluation (Deprecated)

By default, Colmena uses nix eval to evaluate your flake. If you need to use the old evaluation method based on nix-instantiate and builtins.getFlake, add the --legacy-flake-eval flag. The legacy flake evaluator uses the colmena output and does not work purely on Nix 2.21+.

Next Steps

  • Head to the Features section to see what else Colmena can do.
  • Read more about options available in Colmena in the Reference section.