Research-Stack/4-Infrastructure/k3s-flake/flake.nix
Brandon Schneider ac4e23dc9b Expand devcontainer with full Python stack, add MCP servers (Notion/AWS), strengthen Lean theorems
- .devcontainer/Dockerfile: add PostgreSQL client libs, OpenSSL/libffi headers, gfortran/BLAS for scipy, rclone; install full Python dependency set (boto3, psycopg2-binary, fastapi, uvicorn, notion-client, httpx, pytest, numpy, scipy, etc.) in uv-managed venv; add rclone S3 gateway init script as ENTRYPOINT
- .devcontainer/devcontainer.json: switch from build to pre-built image (localhost/research
2026-05-19 01:52:14 -05:00

67 lines
2.3 KiB
Nix

{
description = "Unified NixOS k3s topology Research Stack. Zero embedded IPs or secrets.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
sops-nix.url = "github:Mic92/sops-nix";
};
outputs = { self, nixpkgs, sops-nix }:
let
lib = nixpkgs.lib;
system = "x86_64-linux";
mkNode = { hostName, extraModules ? [ ], serverAddr ? null, domain ? null }:
assert hostName != "";
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit hostName serverAddr domain; };
modules = [
sops-nix.nixosModules.sops
./k3s-configuration.nix
] ++ extraModules;
};
in {
# ─────────────────────────────────────────────────────────────────
# Topology configurations
# Fill in hostName, serverAddr, and domain below
# ─────────────────────────────────────────────────────────────────
nixosConfigurations = {
k3s-server = mkNode {
hostName = ""; # e.g. "k3s-server"
domain = ""; # e.g. "researchstack.info"
extraModules = [ ./k3s-server.nix ];
};
k3s-core = mkNode {
hostName = ""; # e.g. "k3s-core"
serverAddr = ""; # e.g. "https://k3s-server.tail-XXXXX.ts.net:6443"
extraModules = [ ./roles/core.nix ];
};
k3s-judge = mkNode {
hostName = ""; # e.g. "k3s-judge"
serverAddr = "";
extraModules = [ ./roles/judge.nix ];
};
k3s-mirror = mkNode {
hostName = ""; # e.g. "k3s-mirror"
serverAddr = "";
extraModules = [ ./roles/mirror.nix ];
};
k3s-edge = mkNode {
hostName = ""; # e.g. "k3s-edge"
serverAddr = "";
extraModules = [ ./roles/edge.nix ];
};
k3s-foxtop = mkNode {
hostName = ""; # e.g. "k3s-foxtop"
serverAddr = "";
extraModules = [ ./roles/foxtop.nix ];
};
};
};
}