/* * The contents of this file are adapted from digga * https://github.com/divnix/digga * * Licensed under the MIT license */ { lib, inputs }: let getFqdn = c: let net = c.config.networking; fqdn = if (net ? domain) && (net.domain != null) then "${net.hostName}.${net.domain}" else net.hostName; in fqdn; in { mkDeployNodes = systemConfigurations: extraConfig: /* * Synopsis: mkNodes _systemConfigurations_ _extraConfig_ Generate the `nodes` attribute expected by deploy-rs where _systemConfigurations_ are `nodes`. _systemConfigurations_ should take the form of a flake's _nixosConfigurations_. Note that deploy-rs does not currently support deploying to darwin hosts. _extraConfig_, if specified, will be merged into each of the nodes' configurations. Example _systemConfigurations_ input: ``` { hostname-1 = { fastConnection = true; sshOpts = [ "-p" "25" ]; }; hostname-2 = { sshOpts = [ "-p" "19999" ]; sshUser = "root"; }; } ``` * */ lib.recursiveUpdate (lib.mapAttrs ( _: c: { hostname = getFqdn c; profiles.system = { user = "root"; path = inputs.deploy-rs.lib.${c.pkgs.stdenv.hostPlatform.system}.activate.nixos c; }; } ) systemConfigurations) extraConfig; }