NixOps deployment configuration for IOHK devops
Switch branches/tags
Clone or download
iohk-bors[bot] and rvl Merge #429
429: [DEVOPS-1044] bors-ng: fix service restarting r=jmitchell a=rvl

Co-authored-by: Rodney Lorrimar <>
Latest commit b48dd9a Sep 20, 2018
Failed to load latest commit information.
.buildkite [DEVOPS-979] disable benchmark dryrun deploy in CI Jul 30, 2018
benchmarks [PB-13] Enable jsonLog flag on benchmarks environment. Jul 2, 2018
deployments [DEVOPS-1044] infra: bors-ng staging deployment fix Sep 18, 2018
docs [DEVOPS-1039] Github Webhook Utility for measuring CI times Sep 13, 2018
github-webhook-util [DEVOPS-1039] Filter statuses for success/fail before writing to infl… Sep 17, 2018
iohk [DEVOPS-1044] infra: add bors-ng instance Sep 17, 2018
jobsets [DEVOPS-1039] Github Webhook Utility for measuring CI times Sep 13, 2018
lib Add new ssh key for rodney Sep 5, 2018
modules [DEVOPS-1044] bors-ng: fix service restarting Sep 18, 2018
nix-darwin [DEVOPS-1022] nix-darwin: Also do periodic GC Sep 10, 2018
scripts [DEVOPS-1042] Add testnet deployment Sep 11, 2018
static [CSL-2186] Use cardan-sl logging config Jan 31, 2018
terraform [DEVOPS-398] testnet: Add index page to installer S3 bucket Aug 13, 2018
tests global: split out config from options Sep 5, 2017
.gitattributes Ignore diff changes in autogenerated pkgs/default.nix Jun 19, 2017
.gitignore git: fix and extend the ignore list to aid local testing Sep 6, 2018 [DEVOPS-1009] doc: update links Aug 21, 2018
bors.toml [DEVOPS-1044] Add bors.toml Sep 18, 2018
cardano-sl-src.json bump report server again, to fix reply headers Aug 17, 2018
default.nix [DEVOPS-1039] Github Webhook Utility for measuring CI times Sep 13, 2018
fetch-nixpkgs.nix [DEVOPS-482] Sync nixpkgs pinning Nov 1, 2017
globals.nix fix a conflict and refactor all the things Aug 16, 2018
lib.nix [DEVOPS-398] Move ssh-keys to lib subdirectory Aug 13, 2018
mainnet-infra.yaml [DEVOPS-398] Remove unused keys from yaml Aug 13, 2018
mainnet.yaml mainnet, staging: set installer-url-base; become suspicious of simila… Aug 10, 2018
nixpkgs-src.json [DEVOPS-903] Bump nixpkgs to latest 18.03 Jun 11, 2018
production-infra.yaml [DEVOPS-398] Remove unused keys from yaml Aug 13, 2018
relay-batch-3.yaml add another batch of 20 relays in the p-{b,c}-3x range Dec 16, 2017
relay-batch-4.yaml the 40s relays Dec 17, 2017
relay-batch-5.yaml the p-{b,c}-50's batch Dec 17, 2017
relay-batch-6.yaml Add relays6 topology for new public relays cluster. Jan 3, 2018
shell.nix shell.nix: add cabal-install Aug 21, 2018
staging-infra.yaml [DEVOPS-382] staging infra config: reduce delta with production infra… Jan 31, 2018
staging-testnet.yaml Rollback changes to staging-testnet Aug 13, 2018
testnet.yaml [DEVOPS-1042] testnet.yaml: add required installer-url-base setting Sep 11, 2018
topology-benchmark.yaml [PB-13] Added benchmark environment. May 7, 2018
topology-bulk3.yaml fix the northeast zones Dec 17, 2017
topology-bulk4.yaml the 40s relays Dec 17, 2017
topology-bulk5.yaml the p-{b,c}-50's batch Dec 17, 2017
topology-bulk6.yaml Add relays6 topology for new public relays cluster. Jan 3, 2018
topology-development.yaml [DEVOPS-157] topology | development: the devnet configuration key has… Nov 10, 2017
topology-edgenode.yaml [PB-44] cumulative commit to reenable edgenodes in benchmarking Mar 6, 2018
topology-min.yaml topologies: add the now-mandatory zone specs Sep 23, 2017
topology-production.yaml [DEVOPS-398] topology-production.yaml: fix relay count in comment Aug 13, 2018
topology-staging.yaml change zone/region in staging to test relay migration Sep 28, 2017
topology-testnet.yaml [DEVOPS-398] Initial testnet deployment Aug 13, 2018

Build status

Collection of tooling and automation to deploy IOHK infrastructure.


  • deployments - includes all NixOps deployments controlled via .hs scripts
  • modules - NixOS modules
  • lib.nix - wraps upstream <nixpkgs/lib.nix> with our common functions
  • scripts - has bash scripts not converted to Haskell/Turtle into Cardano.hs yet
  • default.nix - is a collection of Haskell packages
  • static includes files using in deployments
  • jobsets is used by Hydra CI
  • terraform - other AWS infrastructure
  • nix-darwin - deployment script and configurations for MacOS X machines

Getting SSH access

  1. Fork
  2. Check out the master branch
  3. Add your username and SSH public key to the appropriate developer section of lib/ssh-keys.nix. Keys should remain sorted alphabetically by username.
  4. Submit a PR against master and let DevOps know.
  5. Wait until the DevOps team deploys the infrastructure cluster.

The io command

Sources for the iohk-ops tool are in the iohk directory.


After cloning this repo, start a nix-shell.

% nix-shell
[nix-shell:~/iohk/iohk-ops]$ io --help

For more documentation, see doc/


To hack on the iohk-ops tool, use

% nix-shell -A ioSelfBuild
[nix-shell:~/iohk/iohk-ops]$ type io
io is a function
io ()
    runhaskell -iiohk iohk/iohk-ops.hs "$@"
[nix-shell:~/iohk/iohk-ops]$ io --help

This will provide a Haskell environment where you can use io to run the script or ghci for development.

Run from anywhere

$(nix-build --no-out-link -A iohk-ops)/bin/iohk-ops --help