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.
sh
nix run nixpkgs#nixci
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.
nixci
accepts any valid flake URL or a Github PR URL.
```sh
$ nixci ~/code/myproject
$ nixci github:hercules-ci/hercules-ci-agent
$ nixci https://github.com/srid/emanote/pull/451 ```
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
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
{ 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.
Some real-world examples of how nixci is used with specific configurations:
nixci.default
) to indicate sub-flakes to build, along with their input overridesflake.lock
is in syncnixci
as a Groovy function