You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# TFTP boot with shared image # Requests store path to install from master # Runs disko and nixos-install
{ pkgs, lib, config, nodes, ... }@args:
with lib;
let targets = { "50:46:5d:da:0b:d6" = "node-00"; };
installer = pkgs.nixos [ ./installer.nix { _module.args = { manangerConfig = config; }; } ];
api = pkgs.linkFarm "pixiecore-api" (mapAttrs' (mac: name: nameValuePair "v1/boot/${mac}" (pkgs.writeText "pixieboot-api-${name}" ( let boot = installer.config.system.build; node = nodes.${name}.config.system.build; in builtins.toJSON { kernel = "file://${boot.kernel}/bzImage"; initrd = "file://${boot.netbootRamdisk}/initrd"; cmdline = concatStringsSep "\n" [ "init=${boot.toplevel}/init" "loglevel=4" "nixos.install=${node.toplevel}" ]; message = "NixOS Automatic Installer for ${name}"; } ))) targets); in { services.pixiecore = { enable = true; mode = "api"; dhcpNoBind = true; debug = true; openFirewall = true; port = 5080; statusPort = 6080; apiServer = "http://boot.${config.networking.domain}/pixiecore"; };
services.nginx = { virtualHosts = { "boot.${config.networking.domain}" = { locations."/".proxyPass = "http://localhost:${toString config.services.pixiecore.port}"; locations."/status".proxyPass = "http://localhost:${toString config.services.pixiecore.statusPort}"; locations."/pixiecore".root = api; }; }; };
hpc.hostFile.aliases = [ "boot.${config.networking.domain}" ]; }
|