Compare commits

...

9 Commits

Author SHA1 Message Date
h7x4
689d6582ae topology: fix ntnu gateway <-> knutsen connection network 2026-01-23 00:56:32 +09:00
h7x4
ccdaeaf4a3 topology: fix gluttony network interface 2026-01-23 00:51:30 +09:00
h7x4
72fdca4998 topology: more connections to powerpuff cluster 2026-01-23 00:50:16 +09:00
h7x4
9ccdeb6ac9 topology: fix new machines 2026-01-23 00:43:20 +09:00
h7x4
8072121b3c skrott: fix sops file location 2026-01-22 19:44:05 +09:00
h7x4
95f6463171 temmie: set up httpd 2026-01-22 19:41:52 +09:00
h7x4
39d3773a10 skrott: move networking config to values, add ipv6 address 2026-01-22 19:30:04 +09:00
h7x4
0e963f8cf0 gluttony: fix eval 2026-01-22 19:17:28 +09:00
h7x4
ba6c1c8205 temmie/nfs-mounts: generate systemd units ourselves 2026-01-22 19:10:30 +09:00
8 changed files with 126 additions and 43 deletions

View File

@@ -10,8 +10,6 @@
(fp /base) (fp /base)
]; ];
boot.loader.systemd-boot.enable = false;
systemd.network.enable = lib.mkForce false; systemd.network.enable = lib.mkForce false;
networking = networking =
let let

View File

@@ -1,10 +1,12 @@
{ config, pkgs, lib, fp, ... }: { { config, pkgs, lib, fp, values, ... }: {
imports = [ imports = [
# ./hardware-configuration.nix # ./hardware-configuration.nix
(fp /base) (fp /base)
]; ];
sops.defaultSopsFile = fp /secrets/skrott/skrott.yaml;
boot = { boot = {
consoleLogLevel = 0; consoleLogLevel = 0;
enableContainers = false; enableContainers = false;
@@ -36,7 +38,11 @@
interfaces.eth0 = { interfaces.eth0 = {
useDHCP = false; useDHCP = false;
ipv4.addresses = [{ ipv4.addresses = [{
address = "129.241.210.235"; address = values.hosts.skrott.ipv4;
prefixLength = 25;
}];
ipv6.addresses = [{
address = values.hosts.skrott.ipv6;
prefixLength = 25; prefixLength = 25;
}]; }];
}; };

View File

@@ -1,18 +1,21 @@
{ config, fp, pkgs, values, ... }: { config, fp, pkgs, values, ... }:
{ {
imports = [ imports = [
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
(fp /base) (fp /base)
./services/nfs-mounts.nix ./services/nfs-mounts.nix
]; ./services/userweb.nix
];
systemd.network.networks."30-ens18" = values.defaultNetworkConfig // { systemd.network.networks."30-ens18" = values.defaultNetworkConfig // {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
address = with values.hosts.temmie; [ (ipv4 + "/25") (ipv6 + "/64") ]; address = with values.hosts.temmie; [ (ipv4 + "/25") (ipv6 + "/64") ];
}; };
services.nginx.enable = false;
services.qemuGuest.enable = true; services.qemuGuest.enable = true;
# Don't change (even during upgrades) unless you know what you are doing. # Don't change (even during upgrades) unless you know what you are doing.

View File

@@ -1,21 +1,60 @@
{ pkgs, lib, ... }: { lib, values, ... }:
let
# See microbel:/etc/exports
letters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
in
{ {
fileSystems = let systemd.targets."pvv-homedirs" = {
# See microbel:/etc/exports description = "PVV Homedir Partitions";
shorthandAreas = lib.listToAttrs (map };
(l: lib.nameValuePair "/run/pvv-home-mounts/${l}" "homepvv${l}.pvv.ntnu.no:/export/home/pvv/${l}")
[ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ]); systemd.mounts = map (l: {
in { } description = "PVV Homedir Partition ${l}";
//
(lib.mapAttrs (_: device: { before = [ "remote-fs.target" ];
inherit device; wantedBy = [ "multi-user.target" ];
fsType = "nfs"; requiredBy = [ "pvv-homedirs.target" ];
options = [
type = "nfs";
what = "homepvv${l}.pvv.ntnu.no:/export/home/pvv/${l}";
where = "/run/pvv-home-mounts/${l}";
options = lib.concatStringsSep "," [
"nfsvers=3" "nfsvers=3"
"noauto"
# NOTE: this is a bit unfortunate. The address above seems to resolve to IPv6 sometimes,
# and it doesn't seem possible to specify proto=tcp,tcp6, meaning we have to tell
# NFS which exact address to use here, despite it being specified in the `what` attr :\
"proto=tcp" "proto=tcp"
"x-systemd.automount" "addr=${values.hosts.microbel.ipv4}"
"x-systemd.idle-timeout=300" "mountproto=tcp"
"mounthost=${values.hosts.microbel.ipv4}"
"port=2049"
# NOTE: this is yet more unfortunate. When enabling locking, it will sometimes complain about connection failed.
# dmesg(1) reveals that it has something to do with registering the lockdv1 RPC service (errno: 111), not
# quite sure how to fix it. Living life on dangerous mode for now.
"nolock"
# Don't wait on every read/write
"async"
# Always keep mounted
"noauto"
# We don't want to update access time constantly
"noatime"
# No SUID/SGID, no special devices
"nosuid"
"nodev"
# TODO: are there cgi scripts that modify stuff in peoples homedirs?
# "ro"
"rw"
# TODO: can we enable this and still run cgi stuff?
# "noexec"
]; ];
}) shorthandAreas); }) letters;
} }

View File

@@ -0,0 +1,29 @@
{ ... }:
{
services.httpd = {
enable = true;
# extraModules = [];
# virtualHosts."userweb.pvv.ntnu.no" = {
virtualHosts."temmie.pvv.ntnu.no" = {
forceSSL = true;
enableACME = true;
};
};
systemd.services.httpd = {
after = [ "pvv-homedirs.target" ];
requires = [ "pvv-homedirs.target" ];
serviceConfig = {
ProtectHome = "tmpfs";
BindPaths = let
letters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
in map (l: "/run/pvv-home-mounts/${l}:/home/pvv/${l}") letters;
};
};
# TODO: create phpfpm pools with php environments that contain packages similar to those present on tom
}

View File

@@ -53,7 +53,7 @@ in {
nodes.ntnu-pvv-router = mkRouter "NTNU PVV Gateway" { nodes.ntnu-pvv-router = mkRouter "NTNU PVV Gateway" {
interfaceGroups = [ ["wan1"] ["eth1"] ]; interfaceGroups = [ ["wan1"] ["eth1"] ];
connections.eth1 = mkConnection "knutsen" "em1"; connections.eth1 = mkConnection "knutsen" "em1";
interfaces.eth1.network = "pvv"; interfaces.eth1.network = "ntnu";
}; };
nodes.knutsen = mkRouter "knutsen" { nodes.knutsen = mkRouter "knutsen" {
@@ -82,6 +82,8 @@ in {
(mkConnection "buskerud" "eth1") (mkConnection "buskerud" "eth1")
# (mkConnection "knutsen" "eth1") # (mkConnection "knutsen" "eth1")
(mkConnection "powerpuff-cluster" "eth1") (mkConnection "powerpuff-cluster" "eth1")
(mkConnection "powerpuff-cluster" "eth2")
(mkConnection "powerpuff-cluster" "eth3")
(mkConnection "lupine-1" "enp0s31f6") (mkConnection "lupine-1" "enp0s31f6")
(mkConnection "lupine-2" "enp0s31f6") (mkConnection "lupine-2" "enp0s31f6")
(mkConnection "lupine-3" "enp0s31f6") (mkConnection "lupine-3" "enp0s31f6")
@@ -139,7 +141,7 @@ in {
hardware.info = "Dell PowerEdge R730 x 3"; hardware.info = "Dell PowerEdge R730 x 3";
interfaceGroups = [ [ "eth1" ] ]; interfaceGroups = [ [ "eth1" "eth2" "eth3" ] ];
services = { services = {
proxmox = { proxmox = {
@@ -167,6 +169,13 @@ in {
interfaces.ens18.network = "pvv"; interfaces.ens18.network = "pvv";
}; };
nodes.temmie = {
guestType = "proxmox";
parent = config.nodes.powerpuff-cluster.id;
interfaces.ens18.network = "pvv";
};
nodes.ustetind = { nodes.ustetind = {
guestType = "proxmox LXC"; guestType = "proxmox LXC";
parent = config.nodes.powerpuff-cluster.id; parent = config.nodes.powerpuff-cluster.id;
@@ -219,7 +228,7 @@ in {
(mkConnection "demiurgen" "eno1") (mkConnection "demiurgen" "eno1")
(mkConnection "sanctuary" "ethernet_0") (mkConnection "sanctuary" "ethernet_0")
(mkConnection "torskas" "eth0") (mkConnection "torskas" "eth0")
(mkConnection "skrott" "eth0") (mkConnection "skrot" "eth0")
(mkConnection "homeassistant" "eth0") (mkConnection "homeassistant" "eth0")
(mkConnection "orchid" "eth0") (mkConnection "orchid" "eth0")
(mkConnection "principal" "em0") (mkConnection "principal" "em0")
@@ -249,6 +258,12 @@ in {
interfaces.ens4.network = "ntnu"; interfaces.ens4.network = "ntnu";
}; };
nodes.gluttony = {
guestType = "openstack";
parent = config.nodes.stackit.id;
interfaces.ens3.network = "ntnu";
};
nodes.wenche = { nodes.wenche = {
guestType = "openstack"; guestType = "openstack";
parent = config.nodes.stackit.id; parent = config.nodes.stackit.id;

View File

@@ -290,21 +290,6 @@ in {
}; };
}; };
nodes.skrott = mkDevice "skrott" {
# TODO: the interface name is likely wrong
interfaceGroups = [ [ "eth0" ] ];
interfaces.eth0 = {
# mac = "";
addresses = [
"129.241.210.235"
];
gateways = [
values.hosts.gateway
values.hosts.gateway6
];
};
};
nodes.torskas = mkDevice "torskas" { nodes.torskas = mkDevice "torskas" {
deviceIcon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/arch_linux.svg"; deviceIcon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/arch_linux.svg";

View File

@@ -69,10 +69,18 @@ in rec {
ipv4 = pvv-ipv4 223; ipv4 = pvv-ipv4 223;
ipv6 = pvv-ipv6 223; ipv6 = pvv-ipv6 223;
}; };
microbel = {
ipv4 = pvv-ipv4 179;
ipv6 = pvv-ipv6 "1:2";
};
ustetind = { ustetind = {
ipv4 = pvv-ipv4 234; ipv4 = pvv-ipv4 234;
ipv6 = pvv-ipv6 234; ipv6 = pvv-ipv6 234;
}; };
skrott = {
ipv4 = pvv-ipv4 235;
ipv6 = pvv-ipv6 235;
};
temmie = { temmie = {
ipv4 = pvv-ipv4 167; ipv4 = pvv-ipv4 167;
ipv6 = pvv-ipv6 167; ipv6 = pvv-ipv6 167;