diff --git a/README.md b/README.md index 99c0748..3036ac6 100644 --- a/README.md +++ b/README.md @@ -86,19 +86,88 @@ nixos-rebuild switch --flake .#mow0m --build-host master@mow0m --target-host mas SSH Config
 Host mow0m
-        HostName mow0m.lan
-        User master
-        Port 9553
-        IdentityFile ~/.ssh/master@mow0m
+  HostName mow0m.lan
+  User master
+  Port 9553
+  IdentityFile ~/.ssh/master@mow0m
 Host remoteunlock-mow0m
-        HostName mow0m.lan
-        User root
-        Port 2550
-        IdentityFile ~/.ssh/remoteunlock-mow0m
+ HostName mow0m.lan + User root + Port 2550 + IdentityFile ~/.ssh/remoteunlock-mow0m - +### senfnvp + +[Configuration](./systems/aarch64-linux/senfnvp) + + + + + + + + + + + + + + + + + + + + + + +
Usermaster@senfnvp
Cpudummy-virt (10)
Ram16GB
Build
nixos-rebuild switch --flake .#senfnvp --target-host master@senfnvp --build-host master@senfnvp --use-remote-sudo
SSH Config
+Host senfnvp
+  Port 9553
+  User master
+  HostName senfnvp.kb-one.de
+  IdentityFile ~/.ssh/master@senfnvp
+Host remoteunlock-senfnvp
+  Port 7299
+  User root
+  HostName senfnvp.kb-one.de
+  IdentityFile ~/.ssh/root@remoteunlock-senfnvp
+ +### pkpnafs + +[Configuration](./systems/x68_64-linux/pkpnafs) + + + + + + + + + + + + + + + + + + + + + + +
Usermaster@pkpnafs
CpuAMD EPYC 7702P 64-Core (4) @ 2.00 GHz
Ram16GB
Build
nixos-rebuild switch --flake .#pkpnafs --target-host master@pkpnafs --build-host master@pkpnafs --use-remote-sudo
SSH Config
+Host pkpnafs
+  Port 3422
+  User master
+  HostName pkpnafs.kb-one.de
+  IdentityFile /home/kb/.ssh/master@pkpnafs
+ + ## License diff --git a/flake.nix b/flake.nix index 3d4c9c0..f821701 100644 --- a/flake.nix +++ b/flake.nix @@ -27,35 +27,27 @@ nix.optimise.automatic = true; channels-config.allowUnfree = false; - # Configure Flake Utils Plus - supportedSystems = inputs.snowfall-lib.inputs.flake-utils-plus.lib.defaultSystems ++ ["i686-linux"]; - # Configure Snowfall Lib snowfall = { - meta.name = "kB01s System Configuration Flake"; - meta.title = "kB01s System Configuration Flake"; - namespace = "kb-one"; + meta.name = "Serverraum mit Matratze Infra Configuration"; + meta.title = "Serverraum mit Matratze Infra Configuration"; + namespace = "internal"; }; - # Modules for Host HyperC - systems.hosts.HyperC.modules = with inputs; [ + # Modules for Host mow0m + systems.hosts.mow0m.modules = with inputs; [ + lix-module.nixosModules.default + ]; + # Modules for Host senfnvp + systems.hosts.senfnvp.modules = with inputs; [ lix-module.nixosModules.default ]; - # Modules for Host kb-game-01 - systems.hosts.kb-game-01.modules = with inputs; [ + # Modules for Host pkpnafs + systems.hosts.pkpnafs.modules = with inputs; [ lix-module.nixosModules.default ]; - # Modules for Host LoyAdjo - systems.hosts.LoyAdjo.modules = with inputs; [ - lix-module.nixosModules.default - ]; - - # Modules for Host Rubtrm - systems.hosts.Rubtrm.modules = with inputs; [ - # lix-module.nixosModules.default - ]; # Modules that get imported to every NixOS system systems.modules.nixos = with inputs; [ @@ -65,13 +57,5 @@ outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; }; - - # outputs = { self, nixpkgs, ... }@inputs: { - # nixosConfigurations."Rubtrm" = nixpkgs.lib.nixosSystem { - # system = "i686-linux"; - # modules = [ ./systems/i686-linux/Rubtrm/default.nix ]; - # }; - # }; - } diff --git a/modules/nixos/services/minecraft/README.md b/modules/nixos/services/minecraft/README.md new file mode 100644 index 0000000..ff3215a --- /dev/null +++ b/modules/nixos/services/minecraft/README.md @@ -0,0 +1,10 @@ +# Minecraft Server Configuration + +Details about the Minecraft Module. + +## Installation + +1. Rebuild switch configuration +2. Create Database Structure + 1. New Database `sudo mysql -u root < /run/secrets/rendered/minecraft/database/database-init.sql` + 2. Restore Backup `sudo mysql -u root < path/to/backup.sql` diff --git a/modules/nixos/services/minecraft/database.nix b/modules/nixos/services/minecraft/database.nix new file mode 100644 index 0000000..f530f8d --- /dev/null +++ b/modules/nixos/services/minecraft/database.nix @@ -0,0 +1,27 @@ +{ + inputs, + config, + lib, + pkgs, + system, + ... +}: +let + cfg = config.services.minecraft; +in +{ + config = lib.mkIf (cfg.enable && (cfg.servers.velocity.enable || cfg.servers.survival.enable)) { + services.mysql = { + package = pkgs.mariadb; + enable = true; + settings.mysqld.port = 3459; + }; + sops.secrets."minecraft/database/luckperms_password" = { sopsFile = ./secrets.yaml; }; + sops.templates."minecraft/database/database-init.sql".content = '' + CREATE DATABASE 'luckperms'; + CREATE USER 'luckperms'@'localhost'; + GRANT ALL PRIVILEGES ON luckperms.* TO 'luckperms'@'localhost' IDENTIFIED BY '${config.sops.placeholder."minecraft/database/luckperms_password"}'; + ''; + # services.mysqlBackup.databases = [ "luckperms" ]; # Add Luckperms Database to Backups + }; +} diff --git a/modules/nixos/services/minecraft/default.nix b/modules/nixos/services/minecraft/default.nix new file mode 100644 index 0000000..25284c2 --- /dev/null +++ b/modules/nixos/services/minecraft/default.nix @@ -0,0 +1,49 @@ +{ inputs, config, lib, pkgs, ... }: +let + cfg = config.services.minecraft; +in +{ + imports = [ + inputs.nix-minecraft.nixosModules.minecraft-servers + ./vanilla-test.nix + ./survival.nix + ./velocity.nix + ./database.nix + ]; + + options.services.minecraft = { + enable = lib.mkOption { + type = with lib.types; uniq bool; + default = false; + description = "Enable kBs Minecraft Servers"; + }; + servers.vanilla.enable = lib.mkOption { + type = with lib.types; uniq bool; + default = false; + description = "test server"; + }; + servers.survival.enable = lib.mkOption { + type = with lib.types; uniq bool; + default = false; + description = "Survival Server"; + }; + servers.velocity.enable = lib.mkOption { + type = with lib.types; uniq bool; + default = false; + description = "Velocity Proxy Server"; + }; + }; + + config = lib.mkIf cfg.enable { + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "minecraft-server" + ]; + services.minecraft-servers = { + enable = true; + eula = true; + }; + + + }; +} + diff --git a/modules/nixos/services/minecraft/secrets.yaml b/modules/nixos/services/minecraft/secrets.yaml new file mode 100644 index 0000000..30a3e9c --- /dev/null +++ b/modules/nixos/services/minecraft/secrets.yaml @@ -0,0 +1,23 @@ +minecraft: + database: + luckperms_password: ENC[AES256_GCM,data:Gnt/SilH7q4t1NzCeaqCc6nxso9cWt7b/KXCxzrDdR1LAnmex3QL5Q==,iv:PrTkXcMPPyfJkAKxSKUkaPbYcH+9n6W7MPcTR5e4L8g=,tag:sxDdUHyN+fCIi4g0K+oQIw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age165jt2q3uxp79k4jfsegnq7ul9j54l2rqsn87rq0qjkcv3y5krcmqsznyw7 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBScTUyNFBNdHFwd1pudWNK + Y2F2aXFLYmh4RURJLy9mMisxMU96VGRiU2hjCjdSZmxLRFF6OVpFNy9iQ0NLdytl + UHdSaUVtMnlWQ3d1ZnluNXVHOWdoalkKLS0tIDBxVGdaZWhTclJWZ3FwZHRHSTN1 + RDhlN1JjWW1XZERLWExRSTlDN3ZjZkEKMiQaUezdBcWOH82Sk451PdB54SzYwcXY + YkjGp+bB7rIz07no68Xl4qmO+/iHKSFlPvG4jR/j4ZaNYiU9aeldLA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-01-17T14:22:01Z" + mac: ENC[AES256_GCM,data:BlLD3wEezCCA9t1X4xmy9lfT3ztsR3dknio78Si9v3UJmpJSOpwJ/VhU5RRbMzL1EyOrU1abEr6em83s6LRq87fwso1j6asOavELT5WOfl6f5CU2iK8nQGWZCFeR+09d9hVI+AAH9farpgTDd5sHfUFPCKEaGwuTenpeF4Tonak=,iv:JYoHMIPkT+Dv3GZlp1wt7wlU7IYL6erd/u0cuclB0Ow=,tag:XD8pd/GCrdLRvdEFBgowJA==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.9.2 diff --git a/modules/nixos/services/minecraft/survival.nix b/modules/nixos/services/minecraft/survival.nix new file mode 100644 index 0000000..f1e0879 --- /dev/null +++ b/modules/nixos/services/minecraft/survival.nix @@ -0,0 +1,49 @@ +{ + inputs, + config, + lib, + pkgs, + system, + ... +}: +let + cfg = config.services.minecraft; +in +{ + config = lib.mkIf (cfg.enable && cfg.servers.survival.enable) { + services.minecraft-servers.servers."survival" = { + enable = true; + autoStart = true; + enableReload = true; + package = pkgs.paperServers.paper-1_21_4; + serverProperties = { + online-mode = false; + server-ip = "127.0.0.1"; + server-port = 49333; + difficulty = 3; + gamemode = 1; + max-players = 5; + }; + openFirewall = false; # Should use Velocity Player Proxy + + # Add Plugins + symlinks = { + "plugins/LuckPerms.jar" = pkgs.fetchurl { + url = "https://download.luckperms.net/1567/bukkit/loader/LuckPerms-Bukkit-5.4.150.jar"; + sha512 = "39cr9nd68afrrvn80kvdgaml37xkj3mzhv50y3app5j1199hg12kls29r49x06p9rxm6dk7i0j8aww2hw4ahm18andb69a5kp97vf94"; + }; + }; + + # Configure Velocity Modern forwarding https://docs.papermc.io/velocity/player-information-forwarding#configuring-modern-forwarding-for-paper + files."spigot.yml".value = { + settings.bungeecord = false; + }; + files."config/paper-global.yml".value = { + proxies.velocity.enabled = true; + proxies.velocity.online-mode = "online-mode"; + forwarding.secret = ""; # TODO: Add Forewarding Secret using Sops + }; + }; + }; +} + diff --git a/modules/nixos/services/minecraft/vanilla-test.nix b/modules/nixos/services/minecraft/vanilla-test.nix new file mode 100644 index 0000000..4a2474e --- /dev/null +++ b/modules/nixos/services/minecraft/vanilla-test.nix @@ -0,0 +1,30 @@ +{ + inputs, + config, + lib, + pkgs, + system, + ... +}: +let + cfg = config.services.minecraft; +in +{ + config = lib.mkIf (cfg.enable && cfg.servers.vanilla.enable) { + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "minecraft-server" + ]; + + services.minecraft-servers.servers."vanilla-test" = { + enable = true; + autoStart = true; + enableReload = true; + package = pkgs.vanillaServers.vanilla; + whitelist = { + kB01guy = "1ff88b66-beda-4386-85b9-a00a5c27437a"; + }; + openFirewall = true; + }; + }; +} + diff --git a/modules/nixos/services/minecraft/velocity.nix b/modules/nixos/services/minecraft/velocity.nix new file mode 100644 index 0000000..3ab1b26 --- /dev/null +++ b/modules/nixos/services/minecraft/velocity.nix @@ -0,0 +1,73 @@ +{ + inputs, + config, + lib, + pkgs, + system, + ... +}: +let + cfg = config.services.minecraft; +in +{ + config = lib.mkIf (cfg.enable && cfg.servers.velocity.enable) { + + # Configure Server + services.minecraft-servers.servers."velocity" = { + enable = true; + autoStart = true; + enableReload = true; + stopCommand = "end"; + package = pkgs.velocityServers.velocity; + symlinks = { + "plugins/LuckPerms.jar" = pkgs.fetchurl { + url = "https://download.luckperms.net/1567/velocity/LuckPerms-Velocity-5.4.150.jar"; + sha512 = "3dr69g2fbav3if44nmifgz7hn86gdf62hcks92kkvwxf4xa3z7x615j426kgljyhgy84hf75wzpai258mg7dj9x17vpkn634kkzwmw6"; + }; + "plugins/Geyser-Velocity.jar" = pkgs.fetchurl { + url = "https://download.geysermc.org/v2/projects/geyser/versions/2.6.0/builds/730/downloads/velocity"; + sha512 = "3shnm8q8vq8j44xxg4qwqwalw6ml9nkzfrzvv8pkblkjp25nfk3h14b4y9vdim1sa2a18mkf8hmhb16g1mka2rh7l0z0yg4kh3lj2i0"; + }; + "plugins/floodgate-velocity.jar" = pkgs.fetchurl { + url = "https://download.geysermc.org/v2/projects/floodgate/versions/2.2.3/builds/114/downloads/velocity"; + sha512 = "1k7qban3gar0fxxi5kp5i8d72k6ck65cvsfbg4nh8bz40jwqn35fx9gj3zbb06x5l8sg6qxl7w2nsn3jan4hjq7m5lwf2c1l1mjaw81"; + }; + "plugins/LibreLogin.jar" = pkgs.fetchurl { + url = "https://modrinth.com/plugin/libre-login/version/0.23.0"; + sha512 = "1wrnp82vv47hhvjp1lxdndmngndykshi7iindnpg61j0v7i8bdgr9rk5qvanvw95gcj59cnhxdmjynq8fm127n4gv53acdidlxz39sd"; + }; + }; + files = { + "velocity.toml".value = { + config-version = "2.7"; # NEVER change this! + bind = "0.0.0.0:25565"; + online-mode = false; + player-info-forwarding-mode = "modern"; + enable-player-address-logging = false; + # servers.lobby = ""; + servers.survival = "127.0.0.1:${toString config.services.minecraft-servers.servers."survival".serverProperties.server-port}"; + servers.lobby = "127.0.0.1:123"; + servers.try = [ + #"lobby" + "survival" + ]; + forced-hosts."lobby.example.com" = [ "lobby" ]; + advanced.tcp-fast-open = true; + }; + }; + }; + networking.firewall.allowedTCPPorts = [ 25565 ]; + + # Configure Plugin Luckperms + sops.templates."minecraft/velocity/plugin/luckperms/config.yml".path = "/srv/minecraft/velocity/plugins/luckperms/config.yml"; + sops.templates."minecraft/velocity/plugin/luckperms/config.yml".owner = config.services.minecraft-servers.user; + sops.templates."minecraft/velocity/plugin/luckperms/config.yml".content = lib.generators.toYAML { } { # Unfortunately currently lib.generators.toYAML generates JSON, and the File will not be Human readable + storage-method = "mariadb"; + data.address = "localhost:${toString config.services.mysql.settings.mysqld.port}"; + data.database = "luckperms"; + data.username = "luckperms"; + data.password = ''${config.sops.placeholder."minecraft/database/luckperms_password"}''; # Secret created in ./database.nix + }; + }; +} + diff --git a/systems/aarch64-linux/senfnvp/default.nix b/systems/aarch64-linux/senfnvp/default.nix new file mode 100644 index 0000000..d4beb4f --- /dev/null +++ b/systems/aarch64-linux/senfnvp/default.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./hardware.nix + ]; + + # Configure Nix + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.trusted-users=[ "remotebuild" ]; + nix.package = pkgs.lix; + + # Networking + networking.hostName = "senfnvp"; + networking.networkmanager.enable = true; + networking.nameservers = [ + "1.1.1.1" + ]; + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "de"; + }; + + users.users.master = { # Managed by Homemanager + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJszrrdVHmMUdgOakyFNOIPV9BfopwflqivmK13Fmsab kb@Ohybke" + ]; + isNormalUser = true; + extraGroups = [ "wheel" ]; + }; + + users.users.remotebuild = { + isNormalUser = true; + createHome = true; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJV9cwMXlbaBdg2gReSnLxH3EV5cyFoSi21f5fZhPfdC kb@Ohybke" + ]; + }; + + environment.systemPackages = with pkgs; [ + git + wget + vim + tree + fastfetch + ]; + + # Default Editor + programs.vim.enable = true; + programs.vim.defaultEditor = true; + + # SSH and Mosh + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + ports = [ 9553 ]; + openFirewall = true; + }; + programs.mosh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + + system.stateVersion = "24.11"; # NEVER CHANGE THIS !!!! + +} + diff --git a/systems/aarch64-linux/senfnvp/hardware.nix b/systems/aarch64-linux/senfnvp/hardware.nix new file mode 100644 index 0000000..1df4e24 --- /dev/null +++ b/systems/aarch64-linux/senfnvp/hardware.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, modulesPath, ... }: +{ + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + # System + boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_scsi" "sr_mod" "sr_mod" "r8169" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; + + # Boot Loader + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # SSH Remote Unlock + boot.kernelParams = [ "ip=dhcp" ]; + boot.initrd.systemd.users.root.shell = "/bin/cryptsetup-askpass"; + boot.initrd.network = { + enable = true; + ssh = { + enable = true; + port = 7299; + authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ6jJa135d46R9XgV7h5SfxALabycI5ZPN8kdSQbEkYM kb@Ohybke" ]; + hostKeys = [ "/etc/secrets/initrd/ssh_host_rsa_key" ]; + }; + postCommands = '' + echo 'cryptsetup-askpass' >> /root/.profile + ''; + }; + + # Disks + boot.initrd.luks.devices."luks-2d08047a-a014-480b-8a24-a70e20a2d7d7".device = "/dev/disk/by-uuid/2d08047a-a014-480b-8a24-a70e20a2d7d7"; + fileSystems."/" = { + device = "/dev/disk/by-uuid/9c1d9682-5cfb-4683-a789-f544fc6e7681"; + fsType = "ext4"; + }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/FEAA-61DA"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # Networking + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp7s0.useDHCP = lib.mkDefault true; + +} diff --git a/systems/x86_64-linux/pkpnafs/default.nix b/systems/x86_64-linux/pkpnafs/default.nix new file mode 100644 index 0000000..e1021a9 --- /dev/null +++ b/systems/x86_64-linux/pkpnafs/default.nix @@ -0,0 +1,102 @@ +{ config, lib, pkgs, inputs, ... }: + +{ + imports = [ # Include the results of the hardware scan. + ./hardware.nix + ]; + + # Configure Nix + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.trusted-users=[ "remotebuild" ]; + nix.settings.trusted-public-keys = [ + "cache.HyperC:90YNJ0eWsuBGVVP989lJh1rL8C0KM6IKbAtEUiu+FCU=" + ]; + nix.package = pkgs.lix; + nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; + + # Use the GRUB 2 boot loader. + boot.loader.grub.enable = true; + boot.loader.grub.efiSupport = true; + boot.loader.grub.devices = [ "nodev" ]; + boot.loader.efi.canTouchEfiVariables = true; + + # Define your hostname. + networking.hostName = "pkpnafs"; + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Configure keymap in X11 + services.xserver.xkb.layout = "us"; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.master = { + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLbU0GpeqkYOsccsddQgZAppd5SFiokGAfjKr+dEEjY kb HyperC" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHS3DoQe/4TtdTLD/Fl41rTjE0n5MyFMl59VGVejcskO kb voloxo" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPpN/3esM0SFLJ2guCBOYX8IdBC+jUiMF+xPYkTEuzbe kb-work yerukall" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMN1LWMOfFtRKkSLIA/XTj3KYm7OG2bjqEmGXj0gmDc7 kb@LoyAdjo" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE7W8FUUvM8rUGK6qV3XOIxR0y/pdyo9z5HZNzOADs5+ kb@Rubtrm" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgfAxGyxjNOZyuUZIlwVCzj/mBM9uM7apNDzEJ3g+F+ kb@LANA9C" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKurR2GzSHyD3AM0Xn+YmwfGcLjBlQX1ZRh93S8YiQwn kb@Ohybke" + ]; + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + vim + sops + ]; + }; + + users.users.remotebuild = { + isNormalUser = true; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBHdxVb42GEb/rwrsQx/Wc2v2P+WIq8/WNlF+l31Rl/a Remotebuilds from HyperC" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL/WONflZXVoZd8I4HdNMXNtoYELnCaxqdFY0QKDXXS9 Remotebuilds from Rubtrm" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJqjdhtK0xeJcHwwCAia6I+WuZCkN9pUS21MNjJ2jOuc Remotebuilds from LANA9Z" + ]; + }; + + # List packages installed in system profile. To search, run: + environment.systemPackages = with pkgs; [ + vim + wget + git + tree + ]; + + # Default Editor + programs.vim.enable = true; + programs.vim.defaultEditor = true; + + # Sops Secrets Config + sops.defaultSopsFormat = "yaml"; + sops.age.keyFile = "/home/master/.config/sops/age/keys.txt"; + + # SSH and Mosh + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + ports = [ 3422 ]; + openFirewall = true; + }; + programs.mosh.enable = true; + + # Minecraft Servers + services.minecraft = { + enable = true; + servers.velocity.enable = true; + servers.survival.enable = true; + }; + + # Forgejo Runner + services.forgejo-runner.enable = true; + + # Binary Cache + services.binary-cache.enable = false; # No Binary-Cache, when there are Secrets in the /nix/store + + # Do NOT change this value + system.stateVersion = "24.05"; # Did you read the comment? +} + diff --git a/systems/x86_64-linux/pkpnafs/hardware.nix b/systems/x86_64-linux/pkpnafs/hardware.nix new file mode 100644 index 0000000..a21a766 --- /dev/null +++ b/systems/x86_64-linux/pkpnafs/hardware.nix @@ -0,0 +1,27 @@ +{ config, lib, pkgs, modulesPath, ... }: +{ + imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + # Filesystems + fileSystems."/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + swapDevices = [ ]; + + # Misc + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} +