From 32f4cb5cbba313b7af2fce46139c04d9469cb72a Mon Sep 17 00:00:00 2001 From: Kleidi Bujari Date: Fri, 24 Jan 2025 12:14:23 -0500 Subject: 25-jan sprint --- machines/radon/default.nix | 50 +++++++++++++++++++++++++++++++++++++++++++++ machines/radon/jellyfin.nix | 34 ++++++++++++++++++++++++++++++ machines/radon/pxeboot.nix | 48 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 machines/radon/default.nix create mode 100644 machines/radon/jellyfin.nix create mode 100644 machines/radon/pxeboot.nix (limited to 'machines/radon') diff --git a/machines/radon/default.nix b/machines/radon/default.nix new file mode 100644 index 0000000..839ee6d --- /dev/null +++ b/machines/radon/default.nix @@ -0,0 +1,50 @@ +{ lib, inputs, ... }: +let + gitKeys = builtins.fetchurl { + url = "https://github.com/kbujari.keys"; + sha256 = "0fpa679zkrpx77vangzf3gnidwvmky8ifivn8411xx6albrikaqx"; + }; + + inherit (inputs.nixos-hardware.nixosModules) + common-cpu-intel + common-gpu-intel + ; +in +{ + imports = [ + common-cpu-intel + common-gpu-intel + ./jellyfin.nix + ./pxeboot.nix + ]; + + system.stateVersion = "24.11"; + networking.hostName = "radon"; + + users.users.root.initialPassword = "hello"; + + users.groups.media.gid = 2000; + + boot.zfs.pools.radon.devNodes = "/dev/disk/by-id/"; + boot.zfs.extraPools = [ "radon" ]; + + services.nfs.server.enable = true; + + xnet = { + disk = { + enable = true; + device = "/dev/nvme0n1"; + }; + net = { + join = [ "plaza" ]; + interface = "enp1s0"; + sshd.enable = true; + }; + nginx.enable = true; + gitServer = { + enable = true; + gitweb.enable = true; + keys = lib.splitString "\n" (builtins.readFile gitKeys); + }; + }; +} diff --git a/machines/radon/jellyfin.nix b/machines/radon/jellyfin.nix new file mode 100644 index 0000000..7d3a96a --- /dev/null +++ b/machines/radon/jellyfin.nix @@ -0,0 +1,34 @@ +{ config, ... }: +let + inherit (config.services) jellyfin; +in +{ + services.jellyfin.enable = true; + + users.groups.media.members = [ jellyfin.user ]; + + xnet.persist = [ + { + path = jellyfin.cacheDir; + user = jellyfin.user; + group = jellyfin.group; + mode = "0750"; + } + { + path = jellyfin.dataDir; + user = jellyfin.user; + group = jellyfin.group; + mode = "0750"; + } + { + path = jellyfin.configDir; + user = jellyfin.user; + group = jellyfin.group; + mode = "0750"; + } + ]; + + services.nginx.virtualHosts."mov.4kb.net" = { + locations."/".proxyPass = "http://localhost:8096"; + }; +} diff --git a/machines/radon/pxeboot.nix b/machines/radon/pxeboot.nix new file mode 100644 index 0000000..4d897c3 --- /dev/null +++ b/machines/radon/pxeboot.nix @@ -0,0 +1,48 @@ +{ pkgs, lib, ... }: +let + installer = lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ({ config, pkgs, lib, modulesPath, ... }: { + imports = [ + (modulesPath + "/installer/netboot/netboot-minimal.nix") + (modulesPath + "/installer/cd-dvd/channel.nix") + ]; + + services.openssh = { + enable = true; + openFirewall = true; + settings = { + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + }; + }; + + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + }; + + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP7T2uWJFUu8aFZZgQusGKyEMocb2pKbHLDad2eIJus9" + ]; + }) + ]; + }; + + inherit (installer.config.system) build; +in +{ + services.pixiecore = { + enable = true; + openFirewall = true; + kernel = "${build.kernel}/bzImage"; + initrd = "${build.netbootRamdisk}/initrd"; + cmdLine = "init=${build.toplevel}/init loglevel=4"; + mode = "boot"; + port = 8001; + statusPort = 8001; + + # Piggyback on existing network DHCP + dhcpNoBind = true; + }; +} -- cgit v1.3.1