Effect Core Options

The modularEffect function is a module system-based wrapper for mkEffect.

This page documents the options which are always available. You may add additional options using the module imports syntax.

effectDerivation

The final representation of the effect​.

Type: package (read only)

Declared by:

effectDerivationArgs

The arguments to the mkEffect function, producing effectDerivation​.

Generally you won’t have to set these, as they are represented by other options, with the added benefit of accurate types and support for the merging of definitions​.

Type: lazy attribute set of unspecified value

Declared by:

effectScript

Bash statements that form the essence of the effect​.

Type: string

Default: ""

Declared by:

env

The initial environment variables to set in the effect sandbox​.

Type: unspecified value

Default: { }

Declared by:

extraAttributes

Attributes to add to the returned effect​. These only exist at the expression level and do not become part of the executable effect​.

This is similar to passthru in mkDerivation​.

Type: attribute set of raw value

Default: { }

Declared by:

getStateScript

Bash statements for retrieving deployment state ahead of a deployment​.

Stateless deployments do not need this​.

Type: strings concatenated with “\n”

Default: ""

Declared by:

gid

Since hercules-ci-agent 0​.10​.1

The virtual group id, which processes in the contain think they have​.

See uid​.

Type: signed integer

Default: 0

Declared by:

inputs

A list of packages that are added to PATH​. This behaves like nativeBuildInputs in mkDerivation​.

Type: list of package

Default: [ ]

Declared by:

mounts

Since hercules-ci-agent 0​.10​.1

Mounts that are made available to the effect​. The keys are the mount points​. The values are the keys of the effectMountables configured on the agents​.

Type: lazy attribute set of string

Default: { }

Example:

{
  "/dev/kvm" = "dev-kvm";
}

Declared by:

name

Optional​. Allows customization of the name of the effect derivation produced​.

Generally the attribute name where the effect is put is more relevant​.

Type: null or string

Default: null

Declared by:

putStateScript

Bash statements for saving the deployment state after a deployment​.

These will also be run when the effectScript fails​.

Type: strings concatenated with “\n”

Default: ""

Declared by:

secretsMap

An attribute set of strings that select secrets from the agent’s secrets​.json​. For example

The attribute values are converted by retrieving their values and passed to the effect as the JSON file in $HERCULES_CI_SECRETS_JSON​.

Type: lazy attribute set of (string or (submodule))

Default: { }

Example:

{
  # simple string means look up in secrets.json on the agent
  "ssh" = "default-ssh";
  # GitToken secrets are provided by Hercules CI backend
  "git" = { type = "GitToken"; };
}

Declared by:

src

A source to be unpacked by the stdenv unpack hook, like mkDerivation would​.

Type: null or path

Default: null

Example:

lib.fileset.toSource {
  root = ./.;
  fileset =
    lib.fileset.unions [
      ./config
      ./deploy
    ];
}

Declared by:

uid

Since hercules-ci-agent 0​.10​.1

The virtual user id, which processes in the contain think they have​.

The real user id is always that of the hercules-ci-agent that runs the effect, or that of the user calling hci effect run​.

See also gid​.

Type: signed integer

Default: 0

Declared by:

userSetupScript

Bash statements to set up user configuration files​. Unlike the Nix build sandbox, Effects can make use of a home directory​.

Various bash functions are available, such as writeSSHKey​.

Type: strings concatenated with “\n”

Default: ""

Declared by: