Newer
Older
let
# Pin the deployment package-set to a specific version of nixpkgs. This is
# NixOS 19.03 as of Aug 28 2019. There's nothing special about it. It's
# just recent at the time of development. It can be upgraded when there is
# value in doing so. Meanwhile, our platform doesn't shift around beneath
# us in surprising ways as time passes.
pkgs = import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/3c83ad6ac13b67101cc3e2e07781963a010c1624.tar.gz";
sha256 = "0cdq342wrkvkyccygpp1gvwp7hhqg68hljjwld4vjixm901ayy14";
}) {};
cfg = pkgs.lib.trivial.importJSON ./grid.config.json;
in
{
network = {
# Make all of the hosts in this network use the nixpkgs we pinned above.
# This is just for human consumption as far as I can tell.
description = "PrivateStorage.io Staging Grid";
};
# Here are the hosts that are in this morph network. This is sort of like a
# server manifest. We try to keep as many of the specific details as
# possible out of *this* file so that this file only grows as server count
# grows. If it grows too much, we can load servers by listing contents of a
# directory or reading from another JSON file or some such. For now, I'm
# just manually maintaining these entries.
#
# The name on the left of the `=` is mostly irrelevant but it does provide a
# default hostname for the server if the configuration on the right side
# doesn't specify one.
#
# The names must be unique!
"testing000" = import ./testing000.nix {
publicIPv4 = "3.123.26.90";
# Pass along some of the Tahoe-LAFS configuration. If we have much more
# configuration than this we may want to keep it bundled up in one value
# instead of pulling individual values out to pass along.
inherit (cfg) publicStoragePort;
};
"staging001" = import ./staging001.nix {
publicIPv4 = "209.95.51.251";
inherit (cfg) publicStoragePort;
# Pass the whole grid configuration to the module and let it take what it
# wants.
"staging002" = import ./staging002.nix cfg;