linting and formatting existing code

This commit is contained in:
Dennis Frieberg 2023-11-08 00:47:14 +01:00
parent f5b2ddaf11
commit 0d528669f1
Signed by: nerf
GPG key ID: 42DED0E2D8F04FB6
11 changed files with 202 additions and 182 deletions

View file

@ -28,6 +28,6 @@
}; };
}; };
outputs = inputs@{ flake-parts, ... }: outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake { inherit inputs; } (import ./flake-module.nix); flake-parts.lib.mkFlake {inherit inputs;} (import ./flake-module.nix);
} }

View file

@ -1,20 +1,30 @@
# copied and adopted from maralorns config # copied and adopted from maralorns config
# This automatically searches for nixos configs in ./machines/${name}/configuration.nix # This automatically searches for nixos configs in ./machines/${name}/configuration.nix
# and exposes them as outputs.nixosConfigurations.${name} # and exposes them as outputs.nixosConfigurations.${name}
{ withSystem, lib, inputs, ... }: { {
withSystem,
lib,
inputs,
...
}: {
flake = { flake = {
nixosConfigurations = withSystem "x86_64-linux" ({ pkgs, ... }: nixosConfigurations = withSystem "x86_64-linux" ({pkgs, ...}: let
let
machines = builtins.attrNames (builtins.readDir ./machines); machines = builtins.attrNames (builtins.readDir ./machines);
makeSystem = name: makeSystem = name: let
importedConfig = import (./. + "/machines/${name}/configuration.nix");
systemConfig =
if lib.isFunction importedConfig
then x: importedConfig (x // {flake-inputs = inputs;})
else importedConfig;
in
pkgs.nixos { pkgs.nixos {
imports = [ imports = [
(import (./. + "/machines/${name}/configuration.nix") inputs) systemConfig
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
inputs.impermanence.nixosModules.impermanence inputs.impermanence.nixosModules.impermanence
]; ];
}; };
in lib.genAttrs machines makeSystem); in
lib.genAttrs machines makeSystem);
}; };
} }

View file

@ -1,19 +1,17 @@
flake-inputs: {
{config, pkgs, lib, ... }: { imports = [
./hardware-configuration.nix
imports = [ ../../modules/jitsi.nix
./hardware-configuration.nix ../../roles
../../modules/jitsi.nix ./network.nix
../../roles ];
./network.nix
];
services.mathebau-jitsi = { services.mathebau-jitsi = {
enable = true; enable = true;
hostName = "meet.mathebau.de"; hostName = "meet.mathebau.de";
}; };
# System configuration here # System configuration here
networking.hostName = "ghatanothoa"; networking.hostName = "ghatanothoa";
system.stateVersion = "23.11"; system.stateVersion = "23.11";
} }

View file

@ -1,15 +1,15 @@
{config, lib, pkgs, modulesPath, ...}: { {lib, ...}: {
imports = [ ]; imports = [];
fileSystems."/" = { fileSystems."/" = {
device = "gha-root"; device = "gha-root";
fsType = "tmpfs"; fsType = "tmpfs";
options = [ "size=1G" "mode=755" ]; options = ["size=1G" "mode=755"];
}; };
fileSystems."/persist" = { fileSystems."/persist" = {
device = "/dev/disk/by-uuid/e0a160ef-7d46-4705-9152-a6b602898136"; device = "/dev/disk/by-uuid/e0a160ef-7d46-4705-9152-a6b602898136";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=persist" ]; options = ["subvol=persist"];
neededForBoot = true; neededForBoot = true;
}; };
fileSystems."/boot" = { fileSystems."/boot" = {
@ -19,11 +19,10 @@
fileSystems."/nix" = { fileSystems."/nix" = {
device = "/dev/disk/by-uuid/e0a160ef-7d46-4705-9152-a6b602898136"; device = "/dev/disk/by-uuid/e0a160ef-7d46-4705-9152-a6b602898136";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=nix" ]; options = ["subvol=nix"];
}; };
swapDevices = swapDevices = [{device = "/dev/disk/by-uuid/e6e3ba6b-c9f5-4960-b56d-f49760d76a4a";}];
[{ device = "/dev/disk/by-uuid/e6e3ba6b-c9f5-4960-b56d-f49760d76a4a"; }];
nix.settings.max-jobs = lib.mkDefault 4; nix.settings.max-jobs = lib.mkDefault 4;

View file

@ -1,15 +1,16 @@
# We sohuld put that config somewhere in roles and give it a parameter or something, # We sohuld put that config somewhere in roles and give it a parameter or something,
# everyone gets the same nameserver and the same prefixLength and address vs defaultGateway alsways # everyone gets the same nameserver and the same prefixLength and address vs defaultGateway alsways
# depend on the same thing # depend on the same thing
{ {
imports = [ ]; imports = [];
networking = { networking = {
interfaces.enX0.ipv4.addresses = [ { interfaces.enX0.ipv4.addresses = [
address = "192.168.0.25"; {
prefixLength = 16; address = "192.168.0.25";
} ]; prefixLength = 16;
}
];
defaultGateway = "192.168.0.152"; defaultGateway = "192.168.0.152";
nameservers = ["130.83.2.22" "130.83.56.60" "130.83.22.60" "130.82.22.63"]; nameservers = ["130.83.2.22" "130.83.56.60" "130.83.22.60" "130.82.22.63"];
}; };
} }

View file

@ -1,47 +1,47 @@
{lib, config, ...} : {
lib,
let config,
inherit (lib) ...
}: let
inherit
(lib)
mkEnableOption mkEnableOption
mkIf mkIf
mkOption mkOption
types types
; ;
cfg = config.impermanence; cfg = config.impermanence;
in in {
imports = [];
{ options.impermanence = {
imports = [ ]; enable = mkEnableOption "impermanence";
storagePath = mkOption {
options.impermanence = { type = types.path;
enable = mkEnableOption "impermanence"; default = "/persist";
storagePath = mkOption { description = "The path where persistent data is stored";
type = types.path; };
default = "/persist"; name = mkOption {
description = "The path where persistent data is stored"; type = types.str;
default = "persist";
description = "the name of the persistent data store";
};
}; };
name = mkOption {
type = types.str;
default = "persist";
description = "the name of the persistent data store";
};
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.persistence.${cfg.name} = { environment.persistence.${cfg.name} = {
persistentStoragePath = cfg.storagePath; persistentStoragePath = cfg.storagePath;
directories = [ directories = [
"/var/log" "/var/log"
"/var/lib/nixos" "/var/lib/nixos"
]; ];
files = [ files = [
"/etc/ssh/ssh_host_ed25519_key" "/etc/ssh/ssh_host_ed25519_key"
"/etc/ssh/ssh_host_ed25519_key.pub" "/etc/ssh/ssh_host_ed25519_key.pub"
"/etc/ssh/ssh_host_rsa_key" "/etc/ssh/ssh_host_rsa_key"
"/etc/ssh/ssh_host_rsa_key.pub" "/etc/ssh/ssh_host_rsa_key.pub"
]; ];
};
environment.etc.machine-id.source = "${cfg.storagePath}/machine-id";
}; };
environment.etc.machine-id.source = "${cfg.storagePath}/machine-id";
};
} }

View file

@ -1,16 +1,21 @@
{pkgs, config, lib, modulesPath, ...}: {
let config,
inherit (lib) lib,
modulesPath,
...
}: let
inherit
(lib)
mkIf mkIf
mkEnableOption mkEnableOption
mkOption mkOption
head; head
;
inherit (lib.types) str; inherit (lib.types) str;
cfg = config.services.mathebau-jitsi; cfg = config.services.mathebau-jitsi;
in in {
{
imports = [(modulesPath + "/services/web-apps/jitsi-meet.nix")]; imports = [(modulesPath + "/services/web-apps/jitsi-meet.nix")];
options.services.mathebau-jitsi = { options.services.mathebau-jitsi = {
enable = mkEnableOption "mathebau jitsi service"; enable = mkEnableOption "mathebau jitsi service";
hostName = mkOption { hostName = mkOption {
@ -23,18 +28,25 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.jitsi-meet = { services = {
enable = true; jitsi-meet = {
hostName = cfg.hostName; enable = true;
config = { config = {
defaultLang = "de"; defaultLang = "de";
};
inherit (cfg) hostName;
}; };
}; jitsi-videobridge = {
services.jitsi-videobridge = { openFirewall = true;
openFirewall = true; nat = {
nat = { publicAddress = "130.83.2.184";
publicAddress = "130.83.2.184"; inherit (cfg) localAddress;
localAddress = cfg.localAddress; };
};
#We are behind a reverse proxy that handles TLS
nginx.virtualHosts."${cfg.hostName}" = {
enableACME = false;
forceSSL = false;
}; };
}; };
environment.persistence.${config.impermanence.name} = { environment.persistence.${config.impermanence.name} = {
@ -43,13 +55,7 @@ in
"/var/lib/prosody" "/var/lib/prosody"
]; ];
}; };
#We are behind a reverse proxy that handles TLS #The network ports for HTTP(S) are not opened automatically
services.nginx.virtualHosts."${cfg.hostName}" = { networking.firewall.allowedTCPPorts = [80 443];
enableACME = false;
forceSSL = false;
};
#The network ports for HTTP(S) are not opened automatically
networking.firewall.allowedTCPPorts = [ 80 443 ];
}; };
} }

View file

@ -1,37 +1,34 @@
{lib, ...} : {lib, ...}:
with lib; with lib; let
let
admins = { admins = {
nerf = { nerf = {
hashedPassword = hashedPassword = "$y$j9T$SJcjUIcs3JYuM5oyxfEQa/$tUBQT07FK4cb9xm.A6ZKVnFIPNOYMOKC6Dt6hadCuJ7";
"$y$j9T$SJcjUIcs3JYuM5oyxfEQa/$tUBQT07FK4cb9xm.A6ZKVnFIPNOYMOKC6Dt6hadCuJ7"; keys = [
keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEdA4LpEGUUmN8esFyrNZXFb2GiBID9/S6zzhcnofQuP nerf@nerflap2"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEdA4LpEGUUmN8esFyrNZXFb2GiBID9/S6zzhcnofQuP nerf@nerflap2" ];
];
}; };
gonne = { gonne = {
hashedPassword = hashedPassword = "$6$EtGpHEcFkOi0yUWp$slXf0CvIUrhdqaoCrQ5YwtYu2IVuE1RGGst4fnDPRLWVm.lYx0ruvSAF2/vw/sLbW37ORJjlb0NHQ.kSG7cVY/";
"$6$EtGpHEcFkOi0yUWp$slXf0CvIUrhdqaoCrQ5YwtYu2IVuE1RGGst4fnDPRLWVm.lYx0ruvSAF2/vw/sLbW37ORJjlb0NHQ.kSG7cVY/"; keys = [
keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFopCUadohY3wg9AoEup9TDRDMyEPSLsQoCnN4lsKCrr gonne@mathebau.de NixOS"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFopCUadohY3wg9AoEup9TDRDMyEPSLsQoCnN4lsKCrr gonne@mathebau.de NixOS" ];
];
}; };
}; };
mkAdmin = name : mkAdmin = name: {
{hashedPassword, keys}: { hashedPassword,
keys,
}: {
"${name}" = { "${name}" = {
isNormalUser = true; isNormalUser = true;
createHome = true; createHome = true;
extraGroups = [ "wheel" ]; extraGroups = ["wheel"];
group = "users"; group = "users";
home = "/home/${name}"; home = "/home/${name}";
openssh.authorizedKeys = { inherit keys; }; openssh.authorizedKeys = {inherit keys;};
inherit hashedPassword; inherit hashedPassword;
}; };
}; };
in { in {
users.users = mkMerge (mapAttrsToList mkAdmin admins); users.users = mkMerge (mapAttrsToList mkAdmin admins);
} }

View file

@ -1,62 +1,72 @@
{pkgs, config, lib, modulesPath, ...} : { {
pkgs,
imports = [ lib,
./admins.nix modulesPath,
./nix_keys.nix ...
./prometheusNodeExporter.nix }: {
(modulesPath + "/virtualisation/xen-domU.nix") imports = [
../modules/impermanence.nix ./admins.nix
./nix_keys.nix
./prometheusNodeExporter.nix
(modulesPath + "/virtualisation/xen-domU.nix")
../modules/impermanence.nix
]; ];
nix = { nix = {
extraOptions = '' extraOptions = ''
experimental-features = nix-command flakes experimental-features = nix-command flakes
builders-use-substitutes = true builders-use-substitutes = true
''; '';
};
networking = {
firewall = { # these shoud be default, but better make sure!
enable = true;
allowPing = true;
};
nftables.enable = true;
useDHCP = false; # We don't speak DHCP and even if we would, we should enable it per interface
# hosts = # TODO write something to autogenerate ip adresses!
};
users = {
mutableUsers = false;
users.root.hashedPassword = "!";
};
impermanence.enable = true;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
environment = {
systemPackages = builtins.attrValues {
inherit (pkgs)
htop lsof tmux btop;
};
};
services = {
journald.extraConfig = "SystemMaxUse=5G";
nginx = {
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedTlsSettings = true;
}; };
openssh = { networking = {
enable = true; firewall = {
settings = { # these shoud be default, but better make sure!
PermitRootLogin = "no"; enable = true;
PasswordAuthentication = false; allowPing = true;
};
nftables.enable = true;
useDHCP = false; # We don't speak DHCP and even if we would, we should enable it per interface
# hosts = # TODO write something to autogenerate ip adresses!
};
users = {
mutableUsers = false;
users.root.hashedPassword = "!";
};
impermanence.enable = true;
sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
environment = {
systemPackages = builtins.attrValues {
inherit
(pkgs)
htop
lsof
tmux
btop
;
}; };
}; };
#Prevent clock drift due to interaction problem with xen hardware clock
timesyncd.enable = lib.mkForce true; services = {
}; journald.extraConfig = "SystemMaxUse=5G";
nginx = {
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedTlsSettings = true;
};
openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
};
};
#Prevent clock drift due to interaction problem with xen hardware clock
timesyncd.enable = lib.mkForce true;
};
} }

View file

@ -1,5 +1,5 @@
{ {
imports = [ ]; imports = [];
nix.settings.trusted-public-keys = [ nix.settings.trusted-public-keys = [
"nerflap2-1:pDZCg0oo9PxNQxwVSQSvycw7WXTl53PGvVeZWvxuqJc=" "nerflap2-1:pDZCg0oo9PxNQxwVSQSvycw7WXTl53PGvVeZWvxuqJc="
"gonne.mathebau.de-1:FsXFyFiBFE/JxC9MCkt/WuiXjx5dkRI9RXj0FxOQrV0=" "gonne.mathebau.de-1:FsXFyFiBFE/JxC9MCkt/WuiXjx5dkRI9RXj0FxOQrV0="

View file

@ -1,15 +1,14 @@
{config, ...}: {config, ...}: {
{ imports = [];
imports = [ ];
services.prometheus.exporters.node = { services.prometheus.exporters.node = {
enable = true; enable = true;
port = 9100; port = 9100;
# Aligned with https://git.rwth-aachen.de/fsdmath/server/prometheus/-/blob/main/node_exporter/etc/default/prometheus-node-exporter # Aligned with https://git.rwth-aachen.de/fsdmath/server/prometheus/-/blob/main/node_exporter/etc/default/prometheus-node-exporter
# It was compiled along the following steps: # It was compiled along the following steps:
# 1. Does the current Debian release supports the collector? # 1. Does the current Debian release supports the collector?
# 2. Is the collector depracated in the latest release? # 2. Is the collector depracated in the latest release?
# 3. Could you probably use the collected metrics for monitoring or are they useless because they make no sense in our context # 3. Could you probably use the collected metrics for monitoring or are they useless because they make no sense in our context
# (e.g. power adapter inside a VM, use fibre port connection)? # (e.g. power adapter inside a VM, use fibre port connection)?
disabledCollectors = [ disabledCollectors = [
"arp" "arp"
"bcache" "bcache"
@ -35,6 +34,6 @@
"processes" "processes"
]; ];
}; };
networking.firewall.allowedTCPPorts = [ 9100 ]; networking.firewall.allowedTCPPorts = [9100];
environment.persistence.${config.impermanence.name}.directories = [ "/var/lib/${config.services.prometheus.stateDir}" ]; environment.persistence.${config.impermanence.name}.directories = ["/var/lib/${config.services.prometheus.stateDir}"];
} }