# Import nixpkgs with niv. https://dataswamp.org/~solene/2022-01-12-nix-niv-shell.html#_Create_a_shell.nix_file
let
  sources = import ./nix/sources.nix;
in
{
  # Colmena config: https://colmena.cli.rs/0.4/tutorial/index.html#basic-configuration
  # Colmena local node: https://colmena.cli.rs/0.4/features/apply-local.html

  meta = {
    # Pin the Nixpkgs version with niv.
    # Note: You can also override Nixpkgs by node.
    nixpkgs = import sources.nixpkgs {};
  };

  defaults = { ... }: {
    # This module will be imported by all hosts.
  };

  #
  # LOCAL DEPLOYMENT
  #

  yodaTux = { name, nodes, ... }: {
    # Import the per-host configuration file.
    imports = [ ./hosts/${name}/configuration.nix ];

    deployment = {
      # Local deployment.
      allowLocalDeployment = true;
      targetHost = null;
    };
  };

  yodaTab = { name, nodes, ... }: {
    # Import the per-host configuration file.
    imports = [ ./hosts/${name}/configuration.nix ];

    deployment = {
      # Local deployment.
      allowLocalDeployment = true;
      targetHost = null;
    };
  };

  #
  # SSH DEPLOYMENT
  #

  remoteYodaTab = { name, nodes, ... }: {
    # Import the per-host configuration file.
    imports = [ ./hosts/yodaTab/configuration.nix ];

    deployment = {
      # SSH deployment.
      targetHost = "192.168.178.33";
      targetPort = 22;

      tags = [];
    };
  };

  yodaYoga = { name, nodes, ... }: {
    # Import the per-host configuration file.
    imports = [ ./hosts/${name}/configuration.nix ];

    deployment = {
      # SSH deployment.
      targetHost = "p1st.de";
      targetPort = 2224;

      tags = [ "server" ];
    };
  };

  yodaNas = { name, nodes, ... }: {
    # Import the per-host configuration file.
    imports = [ ./hosts/${name}/configuration.nix ];

    deployment = {
      # SSH deployment.
      targetHost = "p1st.de";
      targetPort = 2222;

      tags = [ "server" ];
    };
  };
}
