nixci

Crates.io

nixci builds all outputs in a flake, or optionally its sub-flakes, which can in turn be used either in CI or locally. Using [devour-flake] it will automatically build the following outputs:

| Type | Output Key | | ---------------------- | ----------------------------------------------- | | Standard flake outputs | packages, apps, checks, devShells | | NixOS | nixosConfigurations.* | | nix-darwin | darwinConfigurations.* | | home-manager | legacyPackages.${system}.homeConfigurations.* |

The [stdout] of nixci will be a list of store paths built.

Install

From nixpkgs

sh nix run nixpkgs#nixci

From source

Note

To make use of the binary cache, first run:

nix run nixpkgs#cachix use srid

To install, run nix profile install github:srid/nixci. You can also use use nix run github:srid/nixci to run nixci directly off this repo without installing it.

Usage

nixci accepts any valid flake URL or a Github PR URL.

```sh

Run nixci on a local flake (default is $PWD)

$ nixci ~/code/myproject

Run nixci on a github repo

$ nixci github:hercules-ci/hercules-ci-agent

Run nixci on a github PR

$ nixci https://github.com/srid/emanote/pull/451 ```

Using in Github Actions

Add the following to your workflow file,

yaml - name: Install Nix uses: DeterminateSystems/nix-installer-action@main - uses: yaxitech/nix-install-pkgs-action@v3 with: packages: "nixpkgs#nixci" - run: nixci

Configuring

By default, nixci will build the top-level flake, but you can tell it to build sub-flakes by adding the following output to your top-level flake:

```nix

myproject/flake.nix

{ nixci.default = { dir1 = { dir = "dir1"; }; dir2 = { dir = "dir2"; overrideInputs.myproject = ./.; }; } } ```

You can have more than one nixci configuration. For eg., nixci .#foo will run the configuration from nixci.foo flake output.

Examples

Some real-world examples of how nixci is used with specific configurations:

What it does

See also