nlewo/comin

GitOps For NixOS Servers and Laptops

Go

1,059

459 commits

updated Oct 11, 2026

See the code

README

comin - GitOps for NixOS Servers and Laptops

comin is a NixOS deployment tool operating in pull mode. Running on a machine, it periodically polls Git repositories and deploys the NixOS configuration associated to the machine.

Main features

Quick start

This is a basic flake.nix example:

{
  inputs = {
    nixpkgs.url = "github:nixOS/nixpkgs";
    comin = {
      url = "github:nlewo/comin";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { self, nixpkgs, comin }: {
    nixosConfigurations = {
      myMachine = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          comin.nixosModules.comin
          ({
            services.comin = {
              enable = true;
              remotes = [{
                name = "origin";
                url = "https://gitlab.com/your/infra.git";
                branches.main.name = "main";
              }];
            };
          })
        ];
      };
    };
  };
}

This enables a systemd service, which periodically pulls the main branch of the repository https://gitlab.com/your/infra.git and deploys the NixOS configuration corresponding to the machine hostname myMachine.

A new commit in the main branch of the repository https://gitlab.com/your/infra.git is then deployed in the next 60 seconds.

Comin exposes much more options which are described in the generated documentation.

Documentation

Community

We have a Matrix room at https://matrix.to/#/#nixos-comin:matrix.org.

cicd
continuous-deployment
deployment
gitops
nix
nixos

nlewo/comin

GitOps For NixOS Servers and Laptops

Go

1,059

459 commits

updated Oct 11, 2026

See the code

README

comin - GitOps for NixOS Servers and Laptops

comin is a NixOS deployment tool operating in pull mode. Running on a machine, it periodically polls Git repositories and deploys the NixOS configuration associated to the machine.

Main features

Quick start

This is a basic flake.nix example:

{
  inputs = {
    nixpkgs.url = "github:nixOS/nixpkgs";
    comin = {
      url = "github:nlewo/comin";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { self, nixpkgs, comin }: {
    nixosConfigurations = {
      myMachine = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          comin.nixosModules.comin
          ({
            services.comin = {
              enable = true;
              remotes = [{
                name = "origin";
                url = "https://gitlab.com/your/infra.git";
                branches.main.name = "main";
              }];
            };
          })
        ];
      };
    };
  };
}

This enables a systemd service, which periodically pulls the main branch of the repository https://gitlab.com/your/infra.git and deploys the NixOS configuration corresponding to the machine hostname myMachine.

A new commit in the main branch of the repository https://gitlab.com/your/infra.git is then deployed in the next 60 seconds.

Comin exposes much more options which are described in the generated documentation.

Documentation

Community

We have a Matrix room at https://matrix.to/#/#nixos-comin:matrix.org.

cicd
continuous-deployment
deployment
gitops
nix
nixos

Project health

Latest release

v0.14.0 · Jul 19, 2026

Releases this year

5

Significant stargazers

(top 24 of 101)

Steve Purcell

3,272 followers · starred Mar 2024

Wilfred Hughes

1,249 followers · starred Apr 2024

Łukasz Jan Niemier

349 followers · starred Mar 2024

Benedikt Ritter

247 followers · starred May 2024