clouvider-lon01: init
This commit is contained in:
parent
1233ac2d14
commit
7795bd1d0f
3 changed files with 174 additions and 1 deletions
18
ops/nixos/clouvider-lon01/README.md
Normal file
18
ops/nixos/clouvider-lon01/README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
# clouvider-lon01.as205479.net
|
||||||
|
|
||||||
|
Dedicated host running NixOS on clouvider.co.uk.
|
||||||
|
|
||||||
|
* Xeon E3-1275v6 @ 3.80GHz (8 cores).
|
||||||
|
* 64GiB RAM.
|
||||||
|
* 2x 256GiB Samsung SSD 850.
|
||||||
|
|
||||||
|
Internet:
|
||||||
|
|
||||||
|
* 185.198.188.29
|
||||||
|
* 2a0a:54c0:0:17::2
|
155
ops/nixos/clouvider-lon01/default.nix
Normal file
155
ops/nixos/clouvider-lon01/default.nix
Normal file
|
@ -0,0 +1,155 @@
|
||||||
|
# SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
{ depot, lib, pkgs, rebuilder, config, ... }:
|
||||||
|
let
|
||||||
|
inherit (depot.ops) secrets;
|
||||||
|
machineSecrets = secrets.machineSpecific.clouvider-lon01;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../lib/zfs.nix
|
||||||
|
../lib/bgp.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd = {
|
||||||
|
availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"sr_mod"
|
||||||
|
"igb"
|
||||||
|
];
|
||||||
|
network = {
|
||||||
|
enable = true;
|
||||||
|
ssh = {
|
||||||
|
enable = true;
|
||||||
|
hostKeys = ["/persist/etc/ssh/ssh_host_ed25519_key"];
|
||||||
|
authorizedKeys = map builtins.readFile config.users.users.lukegb.openssh.authorizedKeys.keyFiles;
|
||||||
|
};
|
||||||
|
postCommands = ''
|
||||||
|
echo "zfs load-key -a; killall zfs" >> /root/.profile
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
boot.kernelParams = [
|
||||||
|
"ip=185.198.188.29::185.198.188.28:255.255.255.254:clouvider-lon01:enp1s0f0:none"
|
||||||
|
];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||||
|
|
||||||
|
fileSystems = let
|
||||||
|
zfs = device: {
|
||||||
|
device = device;
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
"/" = zfs "tank/local/root";
|
||||||
|
"/nix" = zfs "tank/local/nix";
|
||||||
|
"/persist" = zfs "tank/safe/persist";
|
||||||
|
"/home" = zfs "tank/safe/home";
|
||||||
|
|
||||||
|
"/boot1" = {
|
||||||
|
device = "/dev/disk/by-partlabel/boota";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
"/boot2" = {
|
||||||
|
device = "/dev/disk/by-partlabel/bootb";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.maxJobs = lib.mkDefault 8;
|
||||||
|
|
||||||
|
# Use GRUB, so we can have mirrored bootloaders.
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
version = 2;
|
||||||
|
zfsSupport = true;
|
||||||
|
efiSupport = true;
|
||||||
|
mirroredBoots = map (path: {
|
||||||
|
inherit path;
|
||||||
|
devices = ["nodev"];
|
||||||
|
efiSysMountPoint = path;
|
||||||
|
}) ["/boot1" "/boot2"];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Networking!
|
||||||
|
networking = {
|
||||||
|
hostName = "clouvider-lon01";
|
||||||
|
domain = "as205479.net";
|
||||||
|
hostId = "29aaa324";
|
||||||
|
|
||||||
|
nameservers = [
|
||||||
|
"2001:4860:4860::8888"
|
||||||
|
"2001:4860:4860::8844"
|
||||||
|
"8.8.8.8"
|
||||||
|
"8.8.4.4"
|
||||||
|
];
|
||||||
|
useDHCP = false;
|
||||||
|
defaultGateway = {
|
||||||
|
address = "185.198.188.28";
|
||||||
|
interface = "br-ext";
|
||||||
|
};
|
||||||
|
defaultGateway6 = {
|
||||||
|
address = "2a0a:54c0:0:17::1";
|
||||||
|
interface = "br-ext";
|
||||||
|
};
|
||||||
|
bridges.br-ext.interfaces = ["enp1s0f0"];
|
||||||
|
interfaces.br-ext = {
|
||||||
|
ipv4.addresses = [{ address = "185.198.188.29"; prefixLength = 31; }];
|
||||||
|
ipv6.addresses = [{ address = "2a0a:54c0:0:17::2"; prefixLength = 126; }];
|
||||||
|
};
|
||||||
|
firewall.allowPing = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh.hostKeys = [
|
||||||
|
{
|
||||||
|
path = "/persist/etc/ssh/ssh_host_ed25519_key";
|
||||||
|
type = "ed25519";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
path = "/persist/etc/ssh/ssh_host_rsa_key";
|
||||||
|
type = "rsa";
|
||||||
|
bits = 4096;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users = {
|
||||||
|
lukegb.extraGroups = [ "bird2" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.lukegbgp = let local = {
|
||||||
|
asn = 205479;
|
||||||
|
}; in {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
local = {
|
||||||
|
routerID = "185.198.188.29";
|
||||||
|
};
|
||||||
|
peering = {
|
||||||
|
clouvider = {
|
||||||
|
local = local // {
|
||||||
|
v4 = "185.198.188.29";
|
||||||
|
v6 = "2a0a:54c0:0:17::2";
|
||||||
|
};
|
||||||
|
remote = {
|
||||||
|
asn = 62240;
|
||||||
|
export_community = 3000;
|
||||||
|
routers = [{
|
||||||
|
v4 = "185.198.188.28";
|
||||||
|
v6 = "2a0a:54c0:0:17::1";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "20.09";
|
||||||
|
}
|
|
@ -15,7 +15,7 @@ let
|
||||||
system = builtins.currentSystem;
|
system = builtins.currentSystem;
|
||||||
modules = [ (baseModule systemName) (args: { imports = [ lib/common.nix config ]; }) ];
|
modules = [ (baseModule systemName) (args: { imports = [ lib/common.nix config ]; }) ];
|
||||||
});
|
});
|
||||||
systems = [ "porcorosso" "ixvm-fra01" "marukuru" "clouvider-fra01" "totoro" "kusakabe" "swann" ];
|
systems = [ "porcorosso" "ixvm-fra01" "marukuru" "clouvider-fra01" "totoro" "kusakabe" "swann" "clouvider-lon01" ];
|
||||||
rebuilder = system: (import ./lib/rebuilder.nix (args // { system = system; }));
|
rebuilder = system: (import ./lib/rebuilder.nix (args // { system = system; }));
|
||||||
systemCfgs = lib.genAttrs systems
|
systemCfgs = lib.genAttrs systems
|
||||||
(name: import (./. + "/${name}"));
|
(name: import (./. + "/${name}"));
|
||||||
|
|
Loading…
Reference in a new issue