infra/nix/os/devices/steveej-t14/system.nix

150 lines
3.5 KiB
Nix
Raw Normal View History

2023-02-07 18:23:51 +01:00
{
pkgs,
lib,
config,
nodeName,
repoFlake,
2023-02-07 18:23:51 +01:00
...
}: let
passwords = import ../../../variables/passwords.crypt.nix;
2020-12-21 14:35:50 +01:00
in {
nix.settings = {
substituters = [
"https://holochain-ci.cachix.org"
"https://holochain-ci-internal.cachix.org"
# "https://cache.holo.host/"
];
trusted-public-keys = [
"holochain-ci.cachix.org-1:5IUSkZc0aoRS53rfkvH9Kid40NpyjwCMCzwRTXy+QN8="
"holochain-ci-internal.cachix.org-1:QvVsSrTiearCjrLTVtNtJOdQCDTseXh7UXUuSMx46NE="
"cache.holo.host-1:lNXIXtJgS9Iuw4Cu6X0HINLu9sTfcjEntnrgwMQIMcE="
"cache.holo.host-2:ZJCkX3AUYZ8soxTLfTb60g+F3MkWD7hkH9y8CgqwhDQ="
];
extra-experimental-features = ["impure-derivations"];
2023-05-25 11:30:03 +02:00
system-features = ["recursive-nix" "big-parallel"];
};
2020-12-21 14:35:50 +01:00
networking.extraHosts = ''
'';
2023-02-07 18:23:51 +01:00
networking.bridges."virbr1".interfaces = [];
networking.interfaces."virbr1".ipv4.addresses = [
{
address = "10.254.254.254";
prefixLength = 24;
}
];
2020-12-21 14:35:50 +01:00
networking.firewall.enable = true;
services.openssh.openFirewall = false;
# TODO: upstream feature for inverse rule to work: `! --in-interface zt+`
networking.firewall.interfaces."eth+".allowedTCPPorts = [
22
2020-12-21 14:35:50 +01:00
# syncthing
22000
# iperf3
5201
# used on holochain hackathon for cache reverse proxy
80
2020-12-21 14:35:50 +01:00
];
networking.firewall.interfaces."eth+".allowedUDPPorts = [
# syncthing
22000
21027
];
2020-12-21 14:35:50 +01:00
networking.firewall.interfaces."wlan+".allowedTCPPorts = [
# used on holochain hackathon for cache reverse proxy
80
];
2020-12-21 14:35:50 +01:00
networking.firewall.logRefusedConnections = false;
networking.usePredictableInterfaceNames = false;
services.fwupd.enable = true;
2020-12-21 14:35:50 +01:00
services.fprintd.enable = true;
security.pam.services = {
login.fprintAuth = true;
sudo.fprintAuth = true;
};
# virtualization
virtualisation = {
2023-02-07 18:23:51 +01:00
libvirtd = {enable = true;};
2020-12-21 14:35:50 +01:00
virtualbox.host = {
2022-10-31 11:04:38 +01:00
enable = false;
2020-12-21 14:35:50 +01:00
addNetworkInterface = false;
};
podman = {
2020-12-21 14:35:50 +01:00
enable = true;
dockerCompat = true;
# defaultNetwork.dnsname.enable = true;
2020-12-21 14:35:50 +01:00
};
};
services.samba.extraConfig = ''
# client min protocol = NT1
'';
2023-02-07 18:23:51 +01:00
security.pki.certificateFiles = ["${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"];
2020-12-21 14:35:50 +01:00
2023-02-07 18:23:51 +01:00
services.xserver.videoDrivers = lib.mkForce ["amdgpu"];
2020-12-21 14:35:50 +01:00
services.xserver.serverFlagsSection = ''
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
'';
time.timeZone = lib.mkForce passwords.timeZone.stefan;
2020-12-21 14:35:50 +01:00
hardware.ledger.enable = true;
services.zerotierone = {
enable = true;
joinNetworks = [
# moved to the service below as it's now secret
];
};
systemd.services.zerotieroneSecretNetworks = {
enable = true;
requiredBy = ["zerotierone.service"];
partOf = ["zerotierone.service"];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
script = let
secret = config.sops.secrets.zerotieroneNetworks;
in ''
# include the secret's hash to trigger a restart on change
# ${builtins.hashString "sha256" (builtins.toJSON secret)}
${config.systemd.services.zerotierone.preStart}
rm -rf /var/lib/zerotier-one/networks.d/*.conf
for network in `grep -v '#' ${secret.path}`; do
touch /var/lib/zerotier-one/networks.d/''${network}.conf
done
'';
};
sops.secrets.zerotieroneNetworks = {
sopsFile = ../../../../secrets/zerotierone.txt;
format = "binary";
};
boot.binfmt.emulatedSystems = [
"aarch64-linux"
];
2020-12-21 14:35:50 +01:00
}