Initial commit

This commit is contained in:
yuri 2023-07-10 15:30:51 +02:00
commit 10abd93889
20 changed files with 395 additions and 0 deletions

View file

@ -0,0 +1,46 @@
{ config, pkgs, ... }:
{
imports = [
../../users/yuri
];
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
console = {
keyMap = "de-latin1";
};
security.sudo.wheelNeedsPassword = false;
nix.settings = {
trusted-users = [ "@wheel" ];
auto-optimise-store = true;
experimental-features = [ "nix-command" "flakes" ];
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
environment.systemPackages = with pkgs; [
htop
parted
tmux
nano
];
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PermitRootLogin = "no";
};
};
services.fstrim.enable = true;
}

View file

@ -0,0 +1,9 @@
{ ... }:
{
imports = [
./hardware-configuration.nix
];
services.qemuGuest.enable = true;
}

View file

@ -0,0 +1,34 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot = {
initrd = {
availableKernelModules = [ "uhci_hcd" "ehci_pci" "ahci" "virtio_pci" "virtio_blk" ];
kernelModules = [ ];
};
kernelModules = [ "kvm-amd" ];
extraModulePackages = [ ];
};
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
options = [ "x-nixos.autoresize" "x-initrd.mount" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

27
flake.lock Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1688764204,
"narHash": "sha256-FsvK+tIvelCI0tWwlMDKfiyb7P/KfxpGbXMrdCKiT8s=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d8bb6c681cf86265fdcf3cc3119f757bbb085835",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

39
flake.nix Normal file
View file

@ -0,0 +1,39 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
};
outputs = { nixpkgs, ... }: {
colmena = {
meta = {
nixpkgs = import nixpkgs {
system = "x86_64-linux";
};
};
nitter = { name, nodes, pkgs, ... }: {
deployment = {
targetHost = "nixos-nitter.vs.grzb.de";
targetUser = "yuri";
};
imports = [
./configuration/common
./configuration/proxmox-vm
./hosts/nitter
];
};
coturn = { name, nodes, pkgs, ... }: {
deployment = {
targetHost = "nixos-coturn.vs.grzb.de";
targetUser = "yuri";
};
imports = [
./configuration/common
./configuration/proxmox-vm
./hosts/coturn
];
};
};
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
boot.loader.grub = {
enable = true;
version = 2;
device = "/dev/vda";
};
networking = {
hostName = "coturn";
firewall.enable = false;
};
system.stateVersion = "23.05";
}

45
hosts/coturn/coturn.nix Normal file
View file

@ -0,0 +1,45 @@
{ ... }:
{
services.coturn = {
enable = true;
min-port = 49200;
max-port = 49500;
use-auth-secret = true;
static-auth-secret-file = "/secrets/static-auth-secret.secret";
realm = "turn.nekover.se";
cert = "/certs/turn.nekover.se/fullchain.pem";
pkey = "/certs/turn.nekover.se/key.pem";
no-tcp-relay = true;
extraConfig = "
external-ip=170.133.2.81/10.202.41.118
prometheus
syslog
no-tlsv1
no-tlsv1_1
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
allowed-peer-ip=10.202.41.118
user-quota=12
total-quota=1200
";
};
}

8
hosts/coturn/default.nix Normal file
View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./configuration.nix
./secrets.nix
./coturn.nix
];
}

11
hosts/coturn/secrets.nix Normal file
View file

@ -0,0 +1,11 @@
{ ... }:
{
deployment.keys."static-auth-secret.secret" = {
keyCommand = [ "env" "GNUPGHOME=/home/yuri/.passinfra_gnupg" "PASSWORD_STORE_DIR=/home/yuri/pass/infra" "pass" "coturn/static-auth-secret" ];
destDir = "/secrets";
user = "turnserver";
group = "turnserver";
permissions = "0640";
uploadAt = "pre-activation";
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./jackett.nix
];
networking = {
hostName = "jackett";
firewall.enable = false;
};
system.stateVersion = "23.05";
}

View file

@ -0,0 +1,6 @@
{ ... }:
{
services.jackett = {
enable = true;
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./tor.nix
];
networking = {
hostName = "tor-relay";
firewall.enable = false;
};
system.stateVersion = "23.05";
}

10
hosts/netbox/netbox.nix Normal file
View file

@ -0,0 +1,10 @@
{ ... }:
{
services.netox = {
enable = true;
settings = {
};
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
boot.loader.grub = {
enable = true;
version = 2;
device = "/dev/vda";
};
networking = {
hostName = "nitter";
firewall.enable = false;
};
system.stateVersion = "23.05";
}

8
hosts/nitter/default.nix Normal file
View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./configuration.nix
./nginx.nix
./nitter.nix
];
}

29
hosts/nitter/nginx.nix Normal file
View file

@ -0,0 +1,29 @@
{ ... }:
{
services.nginx = {
enable = true;
enableReload = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
virtualHosts = {
"nixos-nitter.vs.grzb.de" = {
locations."/robots.txt" = {
return = "200 \"User-agent: *\\nDisallow: /\\n\"";
};
locations."/" = {
proxyPass = "http://localhost:8080";
extraConfig =
"proxy_http_version 1.1;" +
"proxy_set_header Upgrade $http_upgrade;" +
"proxy_set_header Connection \"upgrade\";" +
"proxy_set_header Host $host;"
;
};
};
};
};
}

19
hosts/nitter/nitter.nix Normal file
View file

@ -0,0 +1,19 @@
{ ... }:
{
services.nitter = {
enable = true;
server = {
title = "Birdsite";
https = true;
address = "0.0.0.0";
port = 8080;
};
preferences = {
theme = "Mastodon";
replaceTwitter = "birdsite.nekover.se";
infiniteScroll = true;
};
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./tor.nix
];
networking = {
hostName = "tor-relay";
firewall.enable = false;
};
system.stateVersion = "23.05";
}

18
hosts/tor-relay/tor.nix Normal file
View file

@ -0,0 +1,18 @@
{ ... }:
{
services.tor = {
enable = true;
settings = {
Nickname = "vsm";
ORPort = 9001;
ExitRelay = false;
SOCKSPort = 0;
ControlSocket = null;
ContactInfo = "admin@grzb.de";
RelayBandwidthRate = "70 MBits";
RelayBandwidthBurst = "150 Mbits";
DirPort = 9030;
};
};
}

11
users/yuri/default.nix Normal file
View file

@ -0,0 +1,11 @@
{ ... }:
{
users.users.yuri = {
isNormalUser = true;
extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJEvM35w+UaSpDTuaG5pGPgfHcfwscr+wSZN9Z5Jle82 yuri@kiara"
];
};
}