WIP: remove kubernetes deployments
This commit is contained in:
parent
c55b0752e7
commit
a335dd4120
11 changed files with 1576 additions and 0 deletions
16
flake-parts/machines/atlas.nix
Normal file
16
flake-parts/machines/atlas.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
machines.atlas = {
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
kubernetesNodeLabels.storageType = "slow";
|
||||||
|
|
||||||
|
nixosModule.lab = {
|
||||||
|
storage.profile = "kubernetes";
|
||||||
|
tailscale.enable = true;
|
||||||
|
|
||||||
|
k3s = {
|
||||||
|
enable = true;
|
||||||
|
serverAddr = "https://jefke.dmz:6443";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
59
flake-parts/machines/default.nix
Normal file
59
flake-parts/machines/default.nix
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
{ nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
lib = pkgs.lib;
|
||||||
|
|
||||||
|
machineOpts = { config, ... }: {
|
||||||
|
options = {
|
||||||
|
arch = lib.mkOption {
|
||||||
|
default = null;
|
||||||
|
type = with lib.types; nullOr str;
|
||||||
|
description = ''
|
||||||
|
CPU architecture of this machine.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
isRaspberryPi = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosModule = lib.mkOption {
|
||||||
|
default = { ... }: { };
|
||||||
|
type = lib.types.anything;
|
||||||
|
description = ''
|
||||||
|
Customized configuration for this machine in the form of a NixOS module.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
kubernetesNodeLabels = lib.mkOption {
|
||||||
|
default = null;
|
||||||
|
type = with lib.types; nullOr attrs;
|
||||||
|
description = ''
|
||||||
|
Any labels to add to the Kubernetes node.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
allOpts = {
|
||||||
|
options = {
|
||||||
|
machines = lib.mkOption {
|
||||||
|
type = with lib.types; attrsOf (submodule machineOpts);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
machines = (lib.modules.evalModules {
|
||||||
|
modules = [
|
||||||
|
allOpts
|
||||||
|
./warwick.nix
|
||||||
|
./atlas.nix
|
||||||
|
./jefke.nix
|
||||||
|
./lewis.nix
|
||||||
|
# ./talos.nix
|
||||||
|
# ./pikvm.nix
|
||||||
|
];
|
||||||
|
}).config.machines;
|
||||||
|
})
|
16
flake-parts/machines/jefke.nix
Normal file
16
flake-parts/machines/jefke.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
machines.jefke = {
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
kubernetesNodeLabels.storageType = "fast";
|
||||||
|
|
||||||
|
nixosModule.lab = {
|
||||||
|
storage.profile = "kubernetes";
|
||||||
|
tailscale.enable = true;
|
||||||
|
|
||||||
|
k3s = {
|
||||||
|
enable = true;
|
||||||
|
clusterInit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
23
flake-parts/machines/lewis.nix
Normal file
23
flake-parts/machines/lewis.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
machines.lewis = {
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
kubernetesNodeLabels = {
|
||||||
|
storageType = "fast";
|
||||||
|
hasMedia = "true";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosModule = {
|
||||||
|
lab = {
|
||||||
|
storage.profile = "kubernetes";
|
||||||
|
backups.enable = true;
|
||||||
|
data-sharing.enable = true;
|
||||||
|
tailscale.enable = true;
|
||||||
|
|
||||||
|
k3s = {
|
||||||
|
enable = true;
|
||||||
|
serverAddr = "https://jefke.dmz:6443";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
23
flake-parts/machines/pikvm.nix
Normal file
23
flake-parts/machines/pikvm.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
machines.pikvm = {
|
||||||
|
arch = "aarch64-linux";
|
||||||
|
isRaspberryPi = true;
|
||||||
|
|
||||||
|
nixosModule = { config, inputs, lib, ... }: {
|
||||||
|
# imports = [ "${inputs.nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix" ];
|
||||||
|
lab = {
|
||||||
|
storage.profile = "pi";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with inputs.nixpkgs.legacyPackages.aarch64-linux; [
|
||||||
|
(mplayer.override {
|
||||||
|
v4lSupport = true;
|
||||||
|
})
|
||||||
|
ffmpeg
|
||||||
|
v4l-utils
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
11
flake-parts/machines/talos.nix
Normal file
11
flake-parts/machines/talos.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
machines.talos = {
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
|
||||||
|
nixosModule = { lib, ... }: {
|
||||||
|
lab.storage.profile = "normal";
|
||||||
|
|
||||||
|
# boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
18
flake-parts/machines/warwick.nix
Normal file
18
flake-parts/machines/warwick.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
machines.warwick = {
|
||||||
|
arch = "aarch64-linux";
|
||||||
|
isRaspberryPi = true;
|
||||||
|
|
||||||
|
nixosModule = { lib, ... }: {
|
||||||
|
lab = {
|
||||||
|
storage.profile = "pi";
|
||||||
|
monitoring.server.enable = true;
|
||||||
|
|
||||||
|
tailscale = {
|
||||||
|
advertiseExitNode = true;
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
20
flake-parts/utils/default.nix
Normal file
20
flake-parts/utils/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ nixpkgs, flake-utils, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
systemAttrs = flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacypackages.${system};
|
||||||
|
lib = pkgs.lib;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
net = import ./net.nix lib;
|
||||||
|
});
|
||||||
|
|
||||||
|
nonSystemAttrs = rec {
|
||||||
|
globals = import ./globals.nix;
|
||||||
|
imagePath = name: "nix:0${globals.imageDir}/${name}.tar";
|
||||||
|
};
|
||||||
|
|
||||||
|
allAttrs = systemAttrs // nonSystemAttrs;
|
||||||
|
in
|
||||||
|
allAttrs
|
65
flake-parts/utils/globals.nix
Normal file
65
flake-parts/utils/globals.nix
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{
|
||||||
|
routerPublicIPv4 = "192.145.57.90";
|
||||||
|
routerPublicIPv6 = "2a0d:6e00:1a77::1";
|
||||||
|
bind9Ipv6 = "2a0d:6e00:1a77:30::134";
|
||||||
|
|
||||||
|
# Load balancer IPv4
|
||||||
|
traefikIPv4 = "192.168.30.128";
|
||||||
|
kmsIPv4 = "192.168.30.129";
|
||||||
|
inbucketIPv4 = "192.168.30.130";
|
||||||
|
piholeIPv4 = "192.168.30.131";
|
||||||
|
gitIPv4 = "192.168.30.132";
|
||||||
|
transmissionIPv4 = "192.168.30.133";
|
||||||
|
bind9IPv4 = "192.168.30.134";
|
||||||
|
dnsmasqIPv4 = "192.168.30.135";
|
||||||
|
minecraftIPv4 = "192.168.30.136";
|
||||||
|
jellyseerrIPv4 = "192.168.30.137";
|
||||||
|
syncthingIPv4 = "192.168.30.138";
|
||||||
|
longhornIPv4 = "192.168.30.139";
|
||||||
|
radarrIPv4 = "192.168.30.140";
|
||||||
|
prowlarrIPv4 = "192.168.30.141";
|
||||||
|
sonarrIPv4 = "192.168.30.142";
|
||||||
|
bazarrIPv4 = "192.168.30.143";
|
||||||
|
paperlessIPv4 = "192.168.30.144";
|
||||||
|
radicaleIPv4 = "192.168.30.145";
|
||||||
|
freshrssIPv4 = "192.168.30.146";
|
||||||
|
immichIPv4 = "192.168.30.147";
|
||||||
|
nextcloudIPv4 = "192.168.30.148";
|
||||||
|
|
||||||
|
imageDir = "/var/docker_images";
|
||||||
|
|
||||||
|
images = {
|
||||||
|
jellyfin = "jellyfin/jellyfin:10.9.9";
|
||||||
|
deluge = "linuxserver/deluge:2.1.1";
|
||||||
|
jellyseerr = "fallenbagel/jellyseerr:1.9.2";
|
||||||
|
radarr = "lscr.io/linuxserver/radarr:5.9.1";
|
||||||
|
prowlarr = "lscr.io/linuxserver/prowlarr:1.21.2";
|
||||||
|
sonarr = "lscr.io/linuxserver/sonarr:4.0.8";
|
||||||
|
bazarr = "lscr.io/linuxserver/bazarr:1.4.3";
|
||||||
|
atuin = "ghcr.io/atuinsh/atuin:18.3.0";
|
||||||
|
postgres14 = "postgres:14";
|
||||||
|
kms = "teddysun/kms:latest";
|
||||||
|
paperless = "ghcr.io/paperless-ngx/paperless-ngx:2.11.6";
|
||||||
|
redis7 = "docker.io/library/redis:7";
|
||||||
|
nextcloud = "nextcloud:29.0.5";
|
||||||
|
postgres15 = "postgres:15";
|
||||||
|
inbucket = "inbucket/inbucket:edge";
|
||||||
|
syncthing = "lscr.io/linuxserver/syncthing:1.27.10";
|
||||||
|
radicale = "tomsquest/docker-radicale:3.2.3.0";
|
||||||
|
ntfy = "binwiederhier/ntfy:v2.11.0";
|
||||||
|
forgejo = "codeberg.org/forgejo/forgejo:8.0.1";
|
||||||
|
pihole = "pihole/pihole:2024.07.0";
|
||||||
|
immich = "ghcr.io/immich-app/immich-server:v1.114.0";
|
||||||
|
immich-machine-learning = "ghcr.io/immich-app/immich-machine-learning:v1.114.0";
|
||||||
|
immich-redis = "docker.io/redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e";
|
||||||
|
immich-postgres = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0";
|
||||||
|
kitchenowl = "tombursch/kitchenowl:v0.5.2";
|
||||||
|
cyberchef = "mpepping/cyberchef:latest";
|
||||||
|
freshrss = "freshrss/freshrss:1.24.3";
|
||||||
|
bind9 = "ubuntu/bind9:9.18-22.04_beta";
|
||||||
|
dnsmasq = "dockurr/dnsmasq:2.90";
|
||||||
|
attic = "git.kun.is/home/atticd:fd910d91c2143295e959d2c903e9ea25cf94ba27";
|
||||||
|
hedgedoc = "quay.io/hedgedoc/hedgedoc:1.9.9";
|
||||||
|
minecraft = "itzg/minecraft-server:latest";
|
||||||
|
};
|
||||||
|
}
|
1323
flake-parts/utils/net.nix
Normal file
1323
flake-parts/utils/net.nix
Normal file
File diff suppressed because it is too large
Load diff
|
@ -70,6 +70,8 @@
|
||||||
./flake-parts/nixos.nix
|
./flake-parts/nixos.nix
|
||||||
./flake-parts/kubenix.nix
|
./flake-parts/kubenix.nix
|
||||||
./flake-parts/shell.nix
|
./flake-parts/shell.nix
|
||||||
|
./flake-parts/utils
|
||||||
|
./flake-parts/machines
|
||||||
] // (flake-utils.lib.eachDefaultSystem (system: {
|
] // (flake-utils.lib.eachDefaultSystem (system: {
|
||||||
formatter = nixpkgs.legacyPackages.${system}.nixfmt;
|
formatter = nixpkgs.legacyPackages.${system}.nixfmt;
|
||||||
}));
|
}));
|
||||||
|
|
Loading…
Reference in a new issue