Update UPS, NUT, network bridge, zfs backups, oh my
This commit is contained in:
parent
f81a81a675
commit
4d1eb8cd94
1 changed files with 145 additions and 3 deletions
|
@ -3,7 +3,11 @@
|
||||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
{ config, lib, pkgs, inputs, ... }:
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
let
|
||||||
|
upsPassword = "illgettoiteventually";
|
||||||
|
vendorid = "0764";
|
||||||
|
productid = "0501";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
|
@ -31,10 +35,20 @@
|
||||||
|
|
||||||
# Network settings
|
# Network settings
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "gandalf"; # Define your hostname.
|
hostName = "gandalf";
|
||||||
hostId = "e2fc95cd";
|
hostId = "e2fc95cd";
|
||||||
|
useDHCP = false; # needed for bridge
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
firewall.enable = false;
|
firewall.enable = false;
|
||||||
|
interfaces = {
|
||||||
|
"enp130s0f0".useDHCP = true;
|
||||||
|
"enp130s0f1".useDHCP = true;
|
||||||
|
};
|
||||||
|
bridges = {
|
||||||
|
"br0" = {
|
||||||
|
interfaces = [ "enp130s0f1" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
@ -51,6 +65,94 @@
|
||||||
settings.PasswordAuthentication = false;
|
settings.PasswordAuthentication = false;
|
||||||
settings.KbdInteractiveAuthentication = false;
|
settings.KbdInteractiveAuthentication = false;
|
||||||
};
|
};
|
||||||
|
services.prometheus.exporters.zfs.enable = true;
|
||||||
|
services.prometheus.exporters.smartctl.enable = true;
|
||||||
|
|
||||||
|
# UPS & NUT
|
||||||
|
power.ups = {
|
||||||
|
enable = true;
|
||||||
|
ups.cyberpower = {
|
||||||
|
driver = "usbhid-ups";
|
||||||
|
port = "auto";
|
||||||
|
directives = [
|
||||||
|
"vendorid = ${vendorid}"
|
||||||
|
"productid = ${productid}"
|
||||||
|
"product = CP1500AVRLCDa"
|
||||||
|
"serial = CTHKY2013373"
|
||||||
|
"vendor = CPS"
|
||||||
|
"bus = 002"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users = {
|
||||||
|
users.nut = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "nut";
|
||||||
|
# it does not seem to do anything with this directory
|
||||||
|
# but something errored without it, so whatever
|
||||||
|
home = "/var/lib/nut";
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
groups.nut = { };
|
||||||
|
};
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="${vendorid}", ATTRS{idProduct}=="${productid}", MODE="664", GROUP="nut", OWNER="nut"
|
||||||
|
'';
|
||||||
|
|
||||||
|
systemd.services.upsd.serviceConfig = {
|
||||||
|
User = "root";
|
||||||
|
Group = "nut";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.upsdrv.serviceConfig = {
|
||||||
|
User = "root";
|
||||||
|
Group = "nut";
|
||||||
|
};
|
||||||
|
|
||||||
|
# reference: https://github.com/networkupstools/nut/tree/master/conf
|
||||||
|
environment.etc = {
|
||||||
|
# all this file needs to do is exist
|
||||||
|
upsdConf = {
|
||||||
|
text = "";
|
||||||
|
target = "nut/upsd.conf";
|
||||||
|
mode = "0440";
|
||||||
|
group = "nut";
|
||||||
|
user = "nut";
|
||||||
|
};
|
||||||
|
upsdUsers = {
|
||||||
|
# update upsmonConf MONITOR to match
|
||||||
|
text = ''
|
||||||
|
[upsmon]
|
||||||
|
password = ${upsPassword}
|
||||||
|
upsmon master
|
||||||
|
'';
|
||||||
|
target = "nut/upsd.users";
|
||||||
|
mode = "0440";
|
||||||
|
group = "nut";
|
||||||
|
user = "nut";
|
||||||
|
};
|
||||||
|
# RUN_AS_USER is not a default
|
||||||
|
# the rest are from the sample
|
||||||
|
# grep -v '#' /nix/store/8nciysgqi7kmbibd8v31jrdk93qdan3a-nut-2.7.4/etc/upsmon.conf.sample
|
||||||
|
upsmonConf = {
|
||||||
|
text = ''
|
||||||
|
RUN_AS_USER nut
|
||||||
|
|
||||||
|
MINSUPPLIES 1
|
||||||
|
SHUTDOWNCMD "shutdown -h 0"
|
||||||
|
POLLFREQ 5
|
||||||
|
POLLFREQALERT 5
|
||||||
|
HOSTSYNC 15
|
||||||
|
DEADTIME 15
|
||||||
|
RBWARNTIME 43200
|
||||||
|
NOCOMMWARNTIME 300
|
||||||
|
FINALDELAY 5
|
||||||
|
MONITOR cyberpower@localhost 1 upsmon ${upsPassword} master
|
||||||
|
'';
|
||||||
|
target = "nut/upsmon.conf";
|
||||||
|
mode = "0444";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# NFS
|
# NFS
|
||||||
services.nfs.server.enable = true;
|
services.nfs.server.enable = true;
|
||||||
|
@ -172,6 +274,46 @@
|
||||||
daily = 7;
|
daily = 7;
|
||||||
monthly = 12;
|
monthly = 12;
|
||||||
};
|
};
|
||||||
|
"eru/hansonhive" = {
|
||||||
|
recursive = true;
|
||||||
|
autoprune = true;
|
||||||
|
autosnap = true;
|
||||||
|
hourly = 24;
|
||||||
|
daily = 7;
|
||||||
|
monthly = 12;
|
||||||
|
};
|
||||||
|
"eru/tm_joe" = {
|
||||||
|
recursive = true;
|
||||||
|
autoprune = true;
|
||||||
|
autosnap = true;
|
||||||
|
hourly = 24;
|
||||||
|
daily = 7;
|
||||||
|
monthly = 12;
|
||||||
|
};
|
||||||
|
"eru/tm_elisia" = {
|
||||||
|
recursive = true;
|
||||||
|
autoprune = true;
|
||||||
|
autosnap = true;
|
||||||
|
hourly = 24;
|
||||||
|
daily = 7;
|
||||||
|
monthly = 12;
|
||||||
|
};
|
||||||
|
"eru/containers/volumes/xo-data" = {
|
||||||
|
recursive = true;
|
||||||
|
autoprune = true;
|
||||||
|
autosnap = true;
|
||||||
|
hourly = 24;
|
||||||
|
daily = 7;
|
||||||
|
monthly = 12;
|
||||||
|
};
|
||||||
|
"eru/containers/volumes/xo-redis-data" = {
|
||||||
|
recursive = true;
|
||||||
|
autoprune = true;
|
||||||
|
autosnap = true;
|
||||||
|
hourly = 24;
|
||||||
|
daily = 7;
|
||||||
|
monthly = 12;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -195,4 +337,4 @@
|
||||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
system.stateVersion = "23.11"; # Did you read the comment?
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
}
|
}
|
Reference in a new issue