Import or pin hercules-ci-effects
The Nix community does not yet have a standard method for adding dependencies at the Nix level. Flakes are a good candidate, but as of writing, they require the use of unstable versions of Nix, which is not production-ready.
Flakes with flake-parts
Use the template as follows, or make the changes further below.
nix flake init -t github:hercules-ci/hercules-ci-effects#flake-parts
Add to the flake inputs:
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
In your outputs section:
outputs = [email protected]{ self, flake-parts, hercules-ci-effects, ... }:
flake-parts.mkFlake { inherit inputs; } ({ withSystem, ... }: {
imports = [
# Add this
hercules-ci-effects.flakeModule
];
effects = { branch, ... }: withSystem "x86_64-linux" (
{ config, effects, pkgs, inputs', ... }:
{
deploy = effects.runNixOS {
# ...
};
}
);
});
Flakes with overlay
Add to the flake inputs:
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
In your outputs section, call Nixpkgs with the overlay:
outputs = { nixpkgs, hercules-ci-effects, ... }:
let
system = /* ... */; # or however you bring system into scope
pkgs = import nixpkgs {
overlays = [
hercules-ci-effects.overlay
];
};
inherit (pkgs) effects; # optional
in {
# your flake attributes, using `pkgs.effects` or `effects` (optional)
}
Flakes without overlay
Although overlays are a convenient way to make definitions available to all
your expressions, they aren’t necessary for hercules-ci-effects
.
Add the input:
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
Call hercules-ci-effects
:
outputs = { hercules-ci-effects, ... }:
let
pkgs = /* ... */;
effects = hercules-ci-effects.lib.withPkgs pkgs;
in {
# your flake attributes, using `effects`
}
niv
Niv is a simple tool that maintains references to dependencies in a JSON file and accompanying Nix file.
Add as a source:
niv add hercules-ci/hercules-ci-effects
Add
let
inherit (import sources.hercules-ci-effects { inherit pkgs; }) effects;
in
/* ... */
or if you prefer to use the overlay:
let
sources = import ./sources.nix;
pkgs = import sources.nixpkgs {
config = /* ... */;
overlays = [
(import (sources.hercules-ci-effects + "/overlay.nix"))
];
system = /* ... */;
}
in /* use pkgs.effects */
Other methods
Other methods can be used and require expressions similar to those for niv
.
Just replace sources.hercules-ci-effects
by something that returns the
contents of the hercules-ci-effects
repository.