Research-Stack/4-Infrastructure/k3s-flake/flake.nix
Brandon Schneider e5fb0a5f4d chore: commit accumulated working tree changes
Lean: update Semantics modules, add new numerics/physics data files
Hardware: update FPGA bitstreams (tangnano9k_uart_loopback)
Infra: k3s-flake tests, netcup-vps configuration, VCN compute substrate
Docs: ARCHITECTURE, specs, citation updates
2026-05-30 00:10:02 -05:00

90 lines
2.6 KiB
Nix

{
description = "Unified NixOS k3s topology Research Stack. Zero embedded IPs or secrets.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, sops-nix }:
let
lib = nixpkgs.lib;
system = "x86_64-linux";
caddyPorkbun = import ./pkgs/caddy-porkbun.nix {
pkgs = nixpkgs.legacyPackages.${system};
};
mkNode = { hostName, extraModules ? [ ], serverAddr ? null, domain ? null }:
assert hostName != "";
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit hostName serverAddr domain caddyPorkbun; };
modules = [
sops-nix.nixosModules.sops
./k3s-configuration.nix
] ++ extraModules;
};
in {
nixosConfigurations = {
k3s-server = mkNode {
hostName = "nixos-laptop";
domain = "researchstack.info";
extraModules = [ ./k3s-server.nix ];
};
k3s-foxtop = mkNode {
hostName = "qfox-1";
serverAddr = "https://100.102.173.61:6443";
extraModules = [ ./roles/foxtop.nix ];
};
k3s-mirror = mkNode {
hostName = "361395-1";
serverAddr = "https://100.102.173.61:6443";
extraModules = [ ./roles/mirror.nix ];
};
k3s-edge = mkNode {
hostName = "microvm-racknerd";
domain = "researchstack.info";
serverAddr = "https://100.102.173.61:6443";
extraModules = [ ./k3s-edge.nix ];
};
k3s-core = mkNode {
hostName = "nixos-steamdeck-1";
serverAddr = "https://100.102.173.61:6443";
extraModules = [ ./roles/core.nix ];
};
k3s-judge = mkNode {
hostName = "";
serverAddr = "";
extraModules = [ ./roles/judge.nix ];
};
};
packages.${system} = {
nixos-anywhere = nixpkgs.legacyPackages.${system}.nixos-anywhere;
caddy-porkbun = caddyPorkbun;
};
apps.${system}.install-edge = {
type = "app";
program = "${nixpkgs.legacyPackages.${system}.writeShellScript "install-edge" ''
set -euo pipefail
TARGET="''${1:-}"
if [ -z "$TARGET" ]; then
echo "Usage: nix run .#install-edge -- root@172.245.19.182"
exit 1
fi
exec nix run github:nix-community/nixos-anywhere -- \
--flake .#k3s-edge "$TARGET"
''}";
};
};
}