Traditional Nix#

This section covers advanced usage of NGI Forge, running applications with the traditional Nix CLI (without Flakes).

Prerequisites#

Configure substituters#

Configure Nix to trust the NGI Forge binary cache so it pulls pre-built binaries rather than building from source:

export NIX_CONFIG='substituters = https://cache.nixos.org https://ngi-forge.cachix.org
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= ngi-forge.cachix.org-1:PK0qK+LhWt4GQVpUtPapyXWxJSM1GhtmPW6CRCoygz0='

Running applications with traditional Nix#

NGI Forge applications can be run using the traditional Nix CLI (nix-shell and nix-build).

In the examples below, replace <commit> with the desired Git commit hash or branch (e.g. master), and <app-name> with the name of the application (e.g. apps.beacondb).

Program runtime#

To launch a single CLI or GUI program:

nix-shell \
  -I forge="https://github.com/ngi-nix/forge/archive/<commit>.tar.gz" \
  -p '(import <forge> {}).<app-name>.program' \
  --command <exec>

For example, to run BeaconDB:

nix-shell \
  -I forge="https://github.com/ngi-nix/forge/archive/master.tar.gz" \
  -p '(import <forge> {}).apps.beacondb.program' \
  --command beacondb

If the default executable matches the package name or no specific command is needed, the --command option can be omitted.

Shell runtime#

To enter a shell environment with CLI or GUI programs available:

nix-shell \
  -I forge="https://github.com/ngi-nix/forge/archive/<commit>.tar.gz" \
  -p '(import <forge> {}).<app-name>'

For example:

nix-shell \
  -I forge="https://github.com/ngi-nix/forge/archive/master.tar.gz" \
  -p '(import <forge> {}).apps.beacondb'

Container runtime#

To run application services in OCI containers:

nix-build \
  -I forge="https://github.com/ngi-nix/forge/archive/<commit>.tar.gz" \
  -E '(import <forge> {}).<app-name>.container'

./result/bin/run-container

To build container images manually without starting them:

nix-build \
  -I forge="https://github.com/ngi-nix/forge/archive/<commit>.tar.gz" \
  -E '(import <forge> {}).<app-name>.container'

./result/bin/build-oci-images

NixOS VM runtime#

To run application services in a local NixOS virtual machine:

nix-build \
  -I forge="https://github.com/ngi-nix/forge/archive/<commit>.tar.gz" \
  -E '(import <forge> {}).<app-name>.vm'

./result/bin/run-<app-name>-vm