Skip to content
Snippets Groups Projects
Select Git revision
  • 0d32d335aa7cb941eaae06131e624a7ca8e44fdc
  • develop default protected
  • dont-use-etc-hosts
  • sec
  • simplify-grafana
  • simple-docs-build
  • local-test-grid
  • no-morph-on-nodes
  • stuff
  • arion
10 results

grid.nix

Blame
  • Forked from PrivateStorage / PrivateStorageio
    Source project has a limited visibility.
    grid.nix 2.10 KiB
    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";
      }) {};
      # Load our JSON configuration for later use.
      cfg = pkgs.lib.trivial.importJSON ./grid.config.json;
    in
    {
      network =  {
        # Make all of the hosts in this network use the nixpkgs we pinned above.
        inherit pkgs;
        # 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;
    }