Add Server7 host
This commit is contained in:
parent
7048992e9a
commit
04159778a2
|
@ -0,0 +1,93 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
<nixpkgs/nixos/modules/profiles/minimal.nix>
|
||||||
|
../../lib/hq.nix
|
||||||
|
../../lib/yggdrasil.nix
|
||||||
|
../../lib/emery.nix
|
||||||
|
./containers
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./yggdrasil-prefix.nix
|
||||||
|
./hydra.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
passwordAuthentication = false;
|
||||||
|
permitRootLogin = "no";
|
||||||
|
# DO NOT CHANGE, KINDERGARTEN IS OVER
|
||||||
|
};
|
||||||
|
|
||||||
|
services.yggdrasil = {
|
||||||
|
openMulticastPort = true;
|
||||||
|
configFile = "/var/lib/yggdrasil/keys";
|
||||||
|
config.Peers = [
|
||||||
|
"tcp://[2a03:3b40:fe:ab::1]:46370" # Praha
|
||||||
|
"tcp://ygg.thingylabs.io:443" # Nürnberg
|
||||||
|
"tcp://176.223.130.120:22632" # Wrocław
|
||||||
|
"tcp://[2a05:9403::8b]:7743" # Praha
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.mosh.enable = true;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
package = pkgs.nixFlakes;
|
||||||
|
gc.automatic = true;
|
||||||
|
trustedUsers = [ "root" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "nixbert";
|
||||||
|
useDHCP = false;
|
||||||
|
bridges.br0.interfaces = [ "enp2s0f1" ];
|
||||||
|
interfaces = {
|
||||||
|
enp2s0f0 = {
|
||||||
|
useDHCP = true;
|
||||||
|
preferTempAddress = true;
|
||||||
|
ipv4.addresses = [{
|
||||||
|
address = "172.22.99.245";
|
||||||
|
prefixLength = 24;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
enp2s0f1.useDHCP = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ tmux htop vim gitMinimal nixfmt ];
|
||||||
|
|
||||||
|
services.collectd = {
|
||||||
|
enable = true;
|
||||||
|
autoLoadPlugin = true;
|
||||||
|
extraConfig = ''
|
||||||
|
Interval 10
|
||||||
|
<Plugin "cpu">
|
||||||
|
</Plugin>
|
||||||
|
<Plugin "memory">
|
||||||
|
</Plugin>
|
||||||
|
<Plugin "interface">
|
||||||
|
</Plugin>
|
||||||
|
<Plugin "load">
|
||||||
|
</Plugin>
|
||||||
|
<Plugin "swap">
|
||||||
|
</Plugin>
|
||||||
|
<Plugin "network">
|
||||||
|
Server "grafana.hq.c3d2.de" "25826"
|
||||||
|
</Plugin>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.tmpOnTmpfs = true;
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
system.stateVersion = "19.09"; # Did you read the comment?
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
Each directory containing a file "default.nix" is
|
||||||
|
evulated as a container guest configuration.
|
||||||
|
|
||||||
|
See ./default.nix for the implementation.
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.uhub = {
|
||||||
|
enable = true;
|
||||||
|
enableTLS = false;
|
||||||
|
hubConfig = ''
|
||||||
|
hub_name=c3d2
|
||||||
|
hub_description=<<</>>
|
||||||
|
'';
|
||||||
|
plugins.history.enable = true;
|
||||||
|
plugins.welcome = {
|
||||||
|
enable = true;
|
||||||
|
motd = builtins.readFile ../../../../lib/motd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ config.services.uhub.port ];
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
yggaddr = import ../yggaddr.nix;
|
||||||
|
|
||||||
|
containerFunc = name:
|
||||||
|
# Generate a container expression from the directory at `name`.
|
||||||
|
with builtins;
|
||||||
|
let
|
||||||
|
hash = hashString "sha256" name;
|
||||||
|
hextet0 = substring 0 4 hash;
|
||||||
|
hextet1 = substring 4 4 hash;
|
||||||
|
in {
|
||||||
|
inherit name;
|
||||||
|
value = {
|
||||||
|
# These are attributes common to each container
|
||||||
|
# from the perspective of the host.
|
||||||
|
autoStart = true;
|
||||||
|
privateNetwork = true;
|
||||||
|
hostBridge = "br0";
|
||||||
|
localAddress6 = "${yggaddr.prefix}:c3d2:${hextet0}:${hextet1}/64";
|
||||||
|
# Generate a deterministic IPv6 address for the container.
|
||||||
|
# This address is accessible within HQ and Yggdrasil but not from ARPANET.
|
||||||
|
config = import (./. + "/${name}");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
containerDir = builtins.readDir ../containers;
|
||||||
|
containerSubdirs =
|
||||||
|
lib.filterAttrs (_: kind: kind == "directory") containerDir;
|
||||||
|
containerNames = builtins.attrNames containerSubdirs;
|
||||||
|
|
||||||
|
containers = builtins.listToAttrs (map containerFunc containerNames);
|
||||||
|
|
||||||
|
in {
|
||||||
|
boot.enableContainers = true;
|
||||||
|
inherit containers;
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ <nixpkgs/nixos/modules/installer/scan/not-detected.nix>
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/f14628ce-0f13-4544-9197-0ddda291f48f";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/9812-00B2";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
nix.maxJobs = lib.mkDefault 20;
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
}
|
|
@ -157,49 +157,32 @@ let
|
||||||
meta.description = "Build of Hydra on ${system}";
|
meta.description = "Build of Hydra on ${system}";
|
||||||
passthru.perlDeps = perlDeps;
|
passthru.perlDeps = perlDeps;
|
||||||
};
|
};
|
||||||
in { ... }:
|
in { config, pkgs, ... }: {
|
||||||
|
|
||||||
{
|
users.users.root.password = "k-ot";
|
||||||
boot.enableContainers = true;
|
services.hydra = {
|
||||||
|
enable = true;
|
||||||
|
hydraURL = "https://flakes.hq.c3d2.de";
|
||||||
|
logo = ../../hosts/hydra/c3d2.svg;
|
||||||
|
notificationSender = "hydra@spam.works";
|
||||||
|
package = hydraFlakes pkgs;
|
||||||
|
listenHost = "127.0.0.1";
|
||||||
|
};
|
||||||
|
|
||||||
networking.nat.enable = true;
|
services.nginx = {
|
||||||
networking.nat.internalInterfaces = [ "ve-+" ];
|
enable = true;
|
||||||
networking.nat.externalInterface = "eth0";
|
recommendedProxySettings = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
containers.flakebert = {
|
virtualHosts = {
|
||||||
autoStart = false;
|
"flakes.hq.c3d2.de" = {
|
||||||
privateNetwork = true;
|
default = true;
|
||||||
enableTun = true;
|
forceSSL = false;
|
||||||
|
enableACME = false;
|
||||||
config = { config, pkgs, ... }: {
|
locations."/".proxyPass =
|
||||||
|
"http://127.0.0.1:${toString config.services.hydra.port}";
|
||||||
imports = [ ../../lib/yggdrasil.nix ];
|
|
||||||
|
|
||||||
users.users.root.password = "k-ot";
|
|
||||||
services.hydra = {
|
|
||||||
enable = true;
|
|
||||||
hydraURL = "https://hydra.hq.c3d2.de";
|
|
||||||
logo = ./c3d2.svg;
|
|
||||||
notificationSender = "hydra@spam.works";
|
|
||||||
useSubstitutes = false;
|
|
||||||
package = hydraFlakes pkgs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx = {
|
|
||||||
enable = true;
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
recommendedGzipSettings = true;
|
|
||||||
virtualHosts = {
|
|
||||||
"flakes.hq.c3d2.de" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/".proxyPass =
|
|
||||||
"http://localhost:${toString config.services.hydra.port}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||||
}
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMiDm1b0NubTtcE9NuKrIpEOea5oS/yCW0Ncoaf/w3uy root@nixbert
|
|
@ -0,0 +1 @@
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCmCgVZbItFsh+hwfbX5EefNF4+LgSSQw20JmqZ7UOHMtTcmoJlykr82go1L6/Qd/rOoLClEmZ4Dr+6m6LrYpys2EhRX9XNA8JXqaohMvmroYMPR3ttBkxWQq939K2hiZ67vICTYeESrqVf7B5Cj8oLnef6mKLsjQ03EAUEhFWaowUDDceH4+/M5WRwhaqTvYo78Q2lJ2971rng3tbkKdk2hQnjTK4RLsIUgm2HTkoE81kQva+7NhB1S+fNc9pfg7bDDd1CV6H1xLMYPNYgT/ivFGtf+C2JZHGmWFkk1bk96OBD7tbjuXk4hlKDp5wPcQM+hM8jemqk6VHX2QL1JU3hlgbI+LttszzA4tPMeaaUKEs9QMrXlM/9l9meA0gUuFZL1biEXTHxL05t7vYom//PtBlLKtirZQZ2plVDAd37+f1ZCIHOT7goOeOJULhNqzLU7FTQ8Jx3JFVs9EPLqej3RTXDcP99Tc6OwwdcRUWFrRRU8071JkAw5uSKNnyRQxeh8otbXijPKqfw3Hc23E38wlVFoUI9IsohLQhaTTtdqnxAp3qJyONh3zIct+VN9uM87swsKGODEgsSfvb+46H/5pRPPHMJ4DHoG+8yF0Ohu4/fV68M6nIxcl7b3z4mzkQH8mm8kydCw46x7lwQMNon7bVF1dRW0bjRW/4b7od5aQ== root@nixbert
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
address = "21d:5658:8cee:eb54:d9b6:84e6:9ed8:f07c";
|
||||||
|
prefix = "31d:5658:8cee:eb54:";
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let yggaddr = import ./yggaddr.nix;
|
||||||
|
in {
|
||||||
|
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = 1;
|
||||||
|
|
||||||
|
networking.interfaces.br0.ipv6.addresses = [{
|
||||||
|
address = yggaddr.prefix + ":1";
|
||||||
|
prefixLength = 24;
|
||||||
|
}];
|
||||||
|
|
||||||
|
services.radvd = {
|
||||||
|
enable = true;
|
||||||
|
config = ''
|
||||||
|
interface enp2s0f1
|
||||||
|
{
|
||||||
|
AdvSendAdvert on;
|
||||||
|
prefix ${yggaddr.prefix}:/64 {
|
||||||
|
AdvOnLink on;
|
||||||
|
AdvAutonomous on;
|
||||||
|
};
|
||||||
|
route 200::/7 {};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue