nixops-lan-party/lan-network.nix

154 lines
4.3 KiB
Nix

let
era = { ethernetAddress = "28:80:23:00:2f:45";
hostName = "era";
ipAddress = "10.42.0.254"; };
eddieValiant = { ethernetAddress = "00:23:ae:89:04:60";
hostName = "eddieValiant";
ipAddress = "10.42.0.1"; };
rogerRabbit = { ethernetAddress = "00:23:ae:82:82:7a";
hostName = "rogerRabbit";
ipAddress = "10.42.0.2"; };
jessicaRabbit = { ethernetAddress = "00:23:ae:88:fb:b9";
hostName = "jessicaRabbit";
ipAddress = "10.42.0.3"; };
bongo = { ethernetAddress = "00:21:9b:2f:1f:99";
hostName = "bongo";
ipAddress = "10.42.0.4"; };
shareDir = "/srv/public";
common =
{
boot.loader.grub.devices = [ "/dev/sda" ];
i18n = {
consoleFont = "Lat2-Terminus16";
consoleKeyMap = "fr-bepo";
defaultLocale = "en_US.UTF-8";
};
services = {
openssh = {
enable = true;
permitRootLogin = "yes";
};
};
#networking.firewall.allowedTCPPorts = [ 22 ];
networking.firewall.enable = false;
users.mutableUsers = false;
security.initialRootPassword = "$6$hoiRRInkFqRV$WmQzqHPTRqaptmXPqNKfIBmiyyckmHKksVJZd94WQ0HHNx5wnGWL76H8.pN.gQ.9Mf.JaVL6oSAw4MjMoTcSF1";
};
in
{
network.description = "DJL machines";
# TF2 server
rogerRabbit = { config, pkgs, lib, ... }:
lib.recursiveUpdate common {
imports = [ ./rogerRabbit-hw.nix ];
environment.systemPackages = with pkgs; [
steam-run
];
nixpkgs.config.allowUnfree = true;
};
# Urban Terror server
# http://openarena.wikia.com/wiki/Dedicated_server#Dedicated_server
jessicaRabbit = { config, pkgs, lib, ... }:
lib.recursiveUpdate common {
imports = [ ./jessicaRabbit-hw.nix ];
environment.systemPackages = with pkgs; [
zeroad
widelands
xonotic
xpilot-ng
armagetronad
hedgewars
openclonk
];
nixpkgs.config.allowUnfree = true;
};
# file server
bongo = { config, pkgs, lib, ... }:
lib.recursiveUpdate common {
imports = [ ./bongo-hw.nix ];
system.activationScripts = {
share = {
text = ''
mkdir -p ${shareDir}
chmod -R +r ${shareDir}
'';
deps = [];
};
};
services.samba = {
enable = true;
shares.public = {
browseable = "yes";
comment = "Partage de fichiers demi-journée ludique";
"guest ok" = "yes";
path = shareDir;
"read only" = true;
};
};
services.nginx = {
enable = true;
recommendedOptimisation = true;
recommendedTlsSettings = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
virtualHosts = {
"${bongo.ipAddress}" = {
locations."/" = {
root = shareDir;
index = "index.html index.htm";
extraConfig = ''
autoindex on;
'';
};
};
};
};
networking.firewall.allowedTCPPorts = [ 139 445 80 443 ];
networking.firewall.allowedUDPPorts = [ 137 138 ];
};
# DHCP/DNS server
eddieValiant = { config, pkgs, lib, ... }:
lib.recursiveUpdate common {
imports = [ ./eddieValiant-hw.nix ];
services = {
dhcpd4 = {
enable = true;
interfaces = [ "enp2s0" ];
machines = [ era rogerRabbit jessicaRabbit bongo ];
extraConfig = ''
subnet 10.42.0.0 netmask 255.255.0.0 {
authoritative;
range 10.42.0.50 10.42.0.200;
default-lease-time 3600;
max-lease-time 3600;
option subnet-mask 255.255.0.0;
option broadcast-address 10.42.255.255;
option routers 10.42.0.0;
#option domain-name-servers 10.42.0.1;
#option domain-name "djl.local";
}
'';
};
};
networking = {
dhcpcd.enable = false;
interfaces."enp2s0".ipAddress = eddieValiant.ipAddress;
interfaces."enp2s0".prefixLength = 16;
};
};
}