mlaga97-nixos/systems/bastion/bastion-actual.nix

118 lines
3.1 KiB
Nix

{ pkgs, ... }: {
networking.hostName = "bastion";
networking.hostId = "0d13f99b";
# WARNING: BUILT-IN ETHERNET HARDWARE IS BORKED!!!
# https://xcp-ng.org/docs/networking.html#intel-i218-i219-slow-speed
# https://serverfault.com/questions/581265/disable-tcp-checksum-offloading-on-kvm-virtual-network
imports = [
./bastion_base.nix
../../features/intelgpu.nix
../../tweaks/powersave.nix
];
boot.loader.grub.mirroredBoots = [
{
devices = [ "nodev" ];
path = "/boot0";
}
{
devices = [ "nodev" ];
path = "/boot1";
}
];
fileSystems = {
"/boot0" = {
device = "/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_Plus_500GB_S58SNG0MA07159M-part1";
fsType = "vfat";
options = [ "nofail" ];
};
"/boot1" = {
device = "/dev/disk/by-id/ata-PNY_CS900_1TB_SSD_PNY244624111201023FB-part1";
fsType = "vfat";
options = [ "nofail" ];
};
"/exports/Frigate" = {
device = "bastion-frigate";
fsType = "zfs";
};
"/exports/MyBook" = {
device = "MyBook/root";
fsType = "zfs";
options = [ "nofail" ];
};
};
##############################################################################
##############################################################################
##############################################################################
# Networking
systemd.network.networks = {
"30-eno1" = {
matchConfig.Name = "eno1";
networkConfig.Bridge = "br0";
linkConfig.RequiredForOnline = "enslaved";
};
"30-enp0s20f0u8" = {
matchConfig.Name = "enp0s20f0u8";
networkConfig.Bridge = "br0";
linkConfig.RequiredForOnline = "enslaved";
};
"90-tinc" = {
matchConfig.Name = "tinc.mlaga97spa";
address = [ "10.86.84.105/32" ];
routes = [ { Destination = "10.86.84.0/24"; } ];
};
};
services.tinc.networks.mlaga97space = {
name = "bastion";
ed25519PrivateKeyFile = "/root/tinc/mlaga97space_ed25519_key.priv";
chroot = false;
settings.ConnectTo = [ "fortress" "citadel" ];
};
##############################################################################
##############################################################################
##############################################################################
# Services
hardware.coral.pcie.enable = true;
services.apcupsd = {
enable = true;
configText = ''
UPSTYPE usb
NISIP 0.0.0.0
BATTERYLEVEL 5
MINUTES 3
'';
};
# TODO: Put scripts into version control
services.cron = {
enable = true;
mailto = "";
systemCronJobs = [
# Sync Restic from Archive to MyBook daily at 0600
"0 6 * * * root /home/lauren_lagarde/bin/SyncRestic > /dev/null"
# Copy footage from Frigate to MyBook and clear up space on both every 10 minutes
"*/10 * * * * root /home/lauren_lagarde/bin/MaintainFrigate > /dev/null"
# Grab a still photo from all cameras once per minute
"* * * * * root /home/lauren_lagarde/bin/GetAllCameraImages > /dev/null"
# TODO: Automatically Collate Camera Images Monthly
];
};
}