snowfield/lib/luj.nix

314 lines
8.9 KiB
Nix

inputs: lib:
with lib;
let
modules = [
{
options.machines = mkOption {
description = "My machines";
type =
with types;
attrsOf (
submodule (
{ name, ... }:
{
freeformType = attrs;
options = {
hostname = mkOption {
description = "The machine's hostname";
type = str;
default = name;
readOnly = true;
};
sshPort = mkOption {
description = "The port for the ssh server of the machine";
type = int;
default = 45;
};
sshUser = mkOption {
description = "The user for ssh connection to the machine";
default = "julien";
};
};
}
)
);
default = { };
};
config = rec {
_module.freeformType = with types; attrs;
domain = "julienmalka.me";
internalDomain = "luj";
tld = "luj";
machines = {
lisa = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "212.129.40.11";
vpn = "100.100.45.12";
};
ipv6 = {
public = "2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb";
vpn = "fd7a:115c:a1e0::c";
};
};
lisanew = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "163.172.91.82";
vpn = "100.100.45.32";
};
};
x2100 = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs_patched;
hm_version = inputs.home-manager-unstable;
# TODO: Fix colmena deployment
ipv4.public = "127.0.0.1";
};
fischer = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs_patched;
hm_version = inputs.home-manager-unstable;
# TODO: Fix colmena deployment
ipv4.public = "127.0.0.1";
};
enigma = {
inherit tld;
arch = "aarch64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4.vpn = "100.100.45.21";
};
lambda = {
inherit tld;
arch = "aarch64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "141.145.197.219";
vpn = "100.100.45.13";
};
ipv6 = {
public = "2603:c027:c001:89aa:aad9:34b3:f3c9:924f";
vpn = "fd7a:115c:a1e0::d";
};
};
tower = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.103";
vpn = "100.100.45.9";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:8ec7:b5d2:f663:a67a";
vpn = "fd7a:115c:a1e0::9";
};
};
gustave = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.90";
vpn = "100.100.45.24";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:eb2:aaaa::45";
vpn = "fd7a:115c:a1e0::18";
};
};
core-security = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.175";
vpn = "100.100.45.14";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:40f0:8cff:fe31:3e94";
vpn = "fd7a:115c:a1e0::e";
};
};
core-data = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.66";
vpn = "100.100.45.26";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:be24:11ff:fe09:638d";
vpn = "fd7a:115c:a1e0::1a";
};
};
nuage = {
inherit tld;
arch = "x86_64-linux";
nixpkgs_version = inputs.nixpkgs;
hm_version = inputs.home-manager;
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.101";
vpn = "100.100.45.28";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:95c9:b2e2:e999:1a45";
vpn = "fd7a:115c:a1e0::1c";
};
};
doma-backups = {
inherit tld;
subdomains = [ "doma-backups.julienmalka.me" ];
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.250";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:6b86:c2c:2141:6702";
};
};
proxmox-nixos-infra = {
inherit tld;
subdomains = [ "proxmox-nixos-update-logs.saumon.network" ];
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.177";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:eb2:caa1::78";
};
};
doma-zulip = {
inherit tld;
subdomains = [ "zulip.julienmalka.me" ];
ipv4 = {
public = "82.67.34.230";
local = "192.168.0.187";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:6830:ddff:fe52:a444";
};
};
pve1 = {
inherit tld;
ipv4 = {
public = "82.67.34.230";
local = "192.168.1.1";
vpn = "100.100.45.3";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:d250:99ff:fefa:b62";
vpn = "fd7a:115c:a1e0::3";
};
sshPort = 22;
sshUser = "root";
};
pve2 = {
inherit tld;
ipv4 = {
public = "82.67.34.230";
local = "192.168.1.2";
vpn = "100.100.45.15";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:aaa1:59ff:fec7:1d6";
vpn = "fd7a:115c:a1e0::f";
};
sshPort = 22;
sshUser = "root";
};
pve3 = {
inherit tld;
ipv4 = {
public = "82.67.34.230";
local = "192.168.1.3";
vpn = "100.100.45.16";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:aaa1:59ff:fec1:aa10";
vpn = "fd7a:115c:a1e0::10";
};
sshPort = 22;
sshUser = "root";
};
pve4 = {
inherit tld;
ipv4 = {
public = "82.67.34.230";
local = "192.168.1.4";
vpn = "100.100.45.17";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:d250:99ff:fefa:b76";
vpn = "fd7a:115c:a1e0::11";
};
sshPort = 22;
sshUser = "root";
};
saves-paris = {
inherit tld;
subdomains = [ "saves-paris.luj" ];
ipv4 = {
public = "82.67.34.230";
local = "192.168.4.5";
vpn = "100.100.45.4";
};
ipv6 = {
public = "2a01:e0a:de4:a0e1:3af3:abff:fe6a:1f54";
vpn = "fd7a:115c:a1e0::4";
};
sshPort = 22;
sshUser = "root";
};
saves-lyon = {
inherit tld;
subdomains = [ "saves-lyon.luj" ];
ipv4 = {
vpn = "100.100.45.20";
};
ipv6 = {
vpn = "fd7a:115c:a1e0::14";
};
sshPort = 22;
sshUser = "root";
};
};
};
}
];
in
(evalModules { inherit modules; }).config