mirror of
https://github.com/mdlayher/homelab.git
synced 2024-12-14 11:47:32 +00:00
127 lines
2.8 KiB
Nix
127 lines
2.8 KiB
Nix
{ lib, pkgs, ... }:
|
|
|
|
let
|
|
vars = import ./lib/vars.nix;
|
|
unstable = import <nixos-unstable-small> { };
|
|
|
|
in {
|
|
imports = [
|
|
# Hardware and base system configuration.
|
|
./hardware-configuration.nix
|
|
./lib/system.nix
|
|
|
|
# Service configuration.
|
|
./containers.nix
|
|
./prometheus.nix
|
|
./storage.nix
|
|
];
|
|
|
|
networking = {
|
|
# Host name and ID.
|
|
hostName = "servnerr-3";
|
|
hostId = "efdd2a1b";
|
|
|
|
# No local firewall.
|
|
firewall.enable = false;
|
|
|
|
# Set up a bridge interface for VMs which is tagged into a lab VLAN.
|
|
bridges.br0.interfaces = [ "enp6s0" ];
|
|
|
|
# Use DHCP for all interfaces, but force the deprecated global setting off.
|
|
useDHCP = false;
|
|
interfaces = {
|
|
# 1GbE on management.
|
|
enp5s0.useDHCP = true;
|
|
|
|
# 10GbE VLAN.
|
|
enp12s0.useDHCP = true;
|
|
|
|
# 1GbE on Lab VLAN.
|
|
br0.useDHCP = false;
|
|
};
|
|
};
|
|
|
|
boot = {
|
|
# Use the systemd-boot EFI boot loader.
|
|
loader = {
|
|
systemd-boot.enable = true;
|
|
efi.canTouchEfiVariables = true;
|
|
};
|
|
|
|
# Enable ZFS.
|
|
supportedFilesystems = [ "zfs" ];
|
|
|
|
kernelParams = [
|
|
# Enable serial console.
|
|
"console=ttyS0,115200n8"
|
|
# 24GiB ZFS ARC.
|
|
"zfs.zfs_arc_max=25769803776"
|
|
];
|
|
};
|
|
|
|
# Start getty over serial console.
|
|
systemd.services."serial-getty@ttyS0" = {
|
|
enable = true;
|
|
# Make sure agetty spawns at boot and always restarts whenever it
|
|
# exits due to user logout.
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = { Restart = "always"; };
|
|
};
|
|
|
|
# Scale down CPU frequency when load is low.
|
|
powerManagement.cpuFreqGovernor = "ondemand";
|
|
|
|
# Packages specific to this machine. The base package set is defined in
|
|
# lib/system.nix.
|
|
environment.systemPackages = with pkgs; [
|
|
flac
|
|
mkvtoolnix-cli
|
|
zfs
|
|
zrepl
|
|
];
|
|
|
|
services = {
|
|
apcupsd.enable = true;
|
|
|
|
# Deploy CoreRAD monitor mode on all interfaces.
|
|
corerad = {
|
|
enable = true;
|
|
|
|
# Enable as necessary to get development builds of CoreRAD.
|
|
# v1.0.0 is packaged in unstable.
|
|
package = unstable.corerad;
|
|
|
|
settings = {
|
|
debug = {
|
|
address = ":9430";
|
|
prometheus = true;
|
|
pprof = true;
|
|
};
|
|
|
|
interfaces = lib.forEach [ "enp5s0" ] (name: {
|
|
inherit name;
|
|
monitor = true;
|
|
});
|
|
};
|
|
};
|
|
|
|
grafana = {
|
|
enable = true;
|
|
# Bind to all interfaces.
|
|
addr = "";
|
|
};
|
|
|
|
# Enable the OpenSSH daemon.
|
|
openssh = {
|
|
enable = true;
|
|
passwordAuthentication = false;
|
|
};
|
|
};
|
|
|
|
virtualisation.libvirtd.enable = true;
|
|
|
|
# root SSH key for remote builds.
|
|
users.users.root.openssh.authorizedKeys.keys = [
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP3+HUx05h15g95ID/lWbU5uvF6TLr2XESmthQjU7qvR NixOS distributed build"
|
|
];
|
|
}
|