diff --git a/config/hosts/aspects/servers/rpi5.nix b/config/hosts/aspects/servers/rpi5.nix index c6e0008..0d0758d 100644 --- a/config/hosts/aspects/servers/rpi5.nix +++ b/config/hosts/aspects/servers/rpi5.nix @@ -12,10 +12,24 @@ + ]; nixos = { networking.hostName = "nixos-001-rp5"; + fileSystems = { + "/" = { + device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; + fsType = "ext4"; + options = ["noatime"]; + }; + "/boot/firmware" = { + device = "/dev/disk/by-uuid/2175-794E"; + fsType = "vfat"; + options = ["noatime"]; + }; + }; + networking.firewall = { enable = true; allowedTCPPorts = [ diff --git a/config/modules/nixvim/default.nix b/config/modules/nixvim/default.nix index 58643c2..6f943d7 100644 --- a/config/modules/nixvim/default.nix +++ b/config/modules/nixvim/default.nix @@ -22,13 +22,6 @@ homeManager = { pkgs, ... }: let - # REPLACE THIS ONCE ITS FIXED IN UPSTREAM - # cssLsFixed = pkgs.vscode-langservers-extracted.overrideAttrs (old: { - # postInstall = (old.postInstall or "") + '' - # sed -i 's/import\.meta\.url/"file:\/\/"+__filename/g' \ - # $out/lib/node_modules/vscode-langservers-extracted/lib/css-language-server/node/cssServerMain.js - # ''; - # }); tiny-code-action = pkgs.vimUtils.buildVimPlugin { name = "tiny-code-action.nvim"; src = pkgs.fetchFromGitHub { @@ -148,7 +141,7 @@ }; cssls = { enable = true; - # package = cssLsFixed; + package = pkgs.vscode-langservers-extracted; }; svelte.enable = true; }; diff --git a/config/modules/obs.nix b/config/modules/obs.nix index 114bae6..c0105ec 100644 --- a/config/modules/obs.nix +++ b/config/modules/obs.nix @@ -17,9 +17,22 @@ obs-studio = { enable = true; package = ( - pkgs.obs-studio.override { - cudaSupport = true; - } + (pkgs.obs-studio.overrideAttrs (old: { + version = "32.2.0-beta2-unstable"; + src = pkgs.fetchFromGitHub { + owner = "obsproject"; + repo = "obs-studio"; + rev = "27ac23ef750aafb2bb7ddd499ede5755a5a3087f"; + hash = "sha256-3wPHNgYzR+ZIbCYMh5ocyK/nsQxy24Wfa03kheYOU88="; + fetchSubmodules = true; + }; + cmakeFlags = (old.cmakeFlags or []) ++ [ + "-DOBS_VERSION_OVERRIDE=32.2.0-beta2" + ]; + })).override + { + cudaSupport = true; + } ); plugins = with pkgs.obs-studio-plugins; [ obs-pipewire-audio-capture diff --git a/config/modules/raspberry-pi.nix b/config/modules/raspberry-pi.nix index e4ab982..1bbf0d2 100644 --- a/config/modules/raspberry-pi.nix +++ b/config/modules/raspberry-pi.nix @@ -15,50 +15,14 @@ "5" = { nixos = {pkgs, ...}: { imports = [ - # inputs.nixos-hardware.nixosModules.raspberry-pi-5 - inputs.nixos-raspberrypi.lib.inject-overlays-global - inputs.nixos-raspberrypi.nixosModules.trusted-nix-caches - inputs.nixos-raspberrypi.lib.inject-overlays - - inputs.nixos-raspberrypi.nixosModules.raspberry-pi-5.base - inputs.nixos-raspberrypi.nixosModules.raspberry-pi-5.page-size-16k - inputs.nixos-raspberrypi.nixosModules.raspberry-pi-5.display-vc4 - inputs.nixos-raspberrypi.nixosModules.raspberry-pi-5.bluetooth - - inputs.nixos-raspberrypi.nixosModules.sd-image + inputs.nixos-hardware.nixosModules.raspberry-pi-5 ]; environment.systemPackages = with pkgs; [ libraspberrypi ]; - _module.args = {inherit (inputs) nixos-raspberrypi;}; - - sdImage.compressImage = false; - - boot.loader.raspberry-pi.bootloader = "kernel"; - # boot.initrd.systemd.tpm2.enable = false; - # boot.initrd.allowMissingModules = true; boot.supportedFilesystems.zfs = false; - - # hardware.enableRedistributableFirmware = true; - # fileSystems = { - # "/boot/firmware" = { - # device = "/dev/disk/by-uuid/2175-794E"; - # fsType = "vfat"; - # options = [ - # "noatime" - # "noauto" - # "x-systemd.automount" - # "x-systemd.idle-timeout=1min" - # ]; - # }; - # "/" = { - # device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; - # fsType = "ext4"; - # options = ["noatime"]; - # }; - # }; }; }; }; diff --git a/config/modules/services/rtmp-to-whip.nix b/config/modules/services/rtmp-to-whip.nix new file mode 100644 index 0000000..9a06dd7 --- /dev/null +++ b/config/modules/services/rtmp-to-whip.nix @@ -0,0 +1,71 @@ +{ + den, + __findFile, + modules, + ... +}: { + modules.services.provides.rtmp-to-whip = { + nixos = { + config, + pkgs, + ... + }: { + systemd.services.init-rtmp-to-whip-network = { + description = "Create rtmp-to-whip docker network"; + after = [ "docker.service" "docker.socket" ]; + requires = [ "docker.service" "docker.socket" ]; + before = [ "docker-rtmp-to-whip.service" "docker-rtmp-to-whip-frontend.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + ${pkgs.docker}/bin/docker network inspect rtmp-to-whip >/dev/null 2>&1 || \ + ${pkgs.docker}/bin/docker network create rtmp-to-whip + ''; + }; + + virtualisation.oci-containers.containers = { + rtmp-to-whip = { + image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip:latest"; + ports = [ + "0.0.0.0:1935:1935" # RTMP ingestion + "0.0.0.0:6969:6969/udp" # WebRTC UDP + ]; + environment = { + PUBLIC_DOMAIN = "rtmp.h.doloro.co.uk"; + RTC_PORT = "6969"; + SIGNUP_CODE = ""; + }; + volumes = [ + "/data/rtmp-to-whip/db.sqlite:/app/db.sqlite" + ]; + extraOptions = [ "--network=rtmp-to-whip" ]; + }; + + rtmp-to-whip-frontend = { + image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip-frontend:latest"; + ports = [ + "0.0.0.0:3002:3000" + ]; + environment = { + VITE_API_URL = "http://rtmp-to-whip:3000"; + }; + extraOptions = [ "--network=rtmp-to-whip" ]; + }; + }; + + networking.firewall = { + allowedTCPPorts = [ 1935 ]; + allowedUDPPorts = [ 6969 ]; + }; + + services.caddy = pkgs.lib.mkIf config.services.caddy.enable { + virtualHosts."stream.h.doloro.co.uk".extraConfig = '' + reverse_proxy :3002 + ''; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock index a4eb4ee..c01ef39 100644 --- a/flake.lock +++ b/flake.lock @@ -517,11 +517,11 @@ ] }, "locked": { - "lastModified": 1782702263, - "narHash": "sha256-8/MG4Su7PhnynrmsVO61IeAfrK7GuUEu+E+gwbhy1QQ=", + "lastModified": 1782749631, + "narHash": "sha256-slFTUgDy0KTPA4LBAmC/9SngDq8GCPdX+ZR0yQHHN1E=", "owner": "nix-community", "repo": "home-manager", - "rev": "789a35fbdeb3c46b260096daa0b321c11be527ea", + "rev": "5d72a29fc36ac21adae6ae35568fe5ee6700850f", "type": "github" }, "original": { @@ -605,11 +605,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1782658834, - "narHash": "sha256-OYjcMSNogYWLbeP4nxpUVJaO72o6yIK00bDYaAuQI2Y=", + "lastModified": 1782755845, + "narHash": "sha256-pMax4dvo/BbKCO2zvCT8fgziiWbfXGhRH0/5uF8pyd0=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "75f558a536f8003bf80af5cb1a3e91529e78cb6b", + "rev": "254d6bae775258b554e1d3a4a853f3bc244190d9", "type": "github" }, "original": { @@ -782,11 +782,11 @@ ] }, "locked": { - "lastModified": 1782035033, - "narHash": "sha256-pUtCphVzH1iNUTMGdJr4+e/yzUXA6/DZwsn+cyfIVJU=", + "lastModified": 1782639496, + "narHash": "sha256-mjt47Xun3jPcGrXpGpYU85lzUnqvJ2rXLbQjVI1yvLo=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "9d8bf6e810597152eef8906c670b96679af2faec", + "rev": "d2b40ffe7bfcb001bbf5888bb56ff646de53e7db", "type": "github" }, "original": { @@ -929,11 +929,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1782592242, - "narHash": "sha256-kgINba6Ilpj3rdTi2BeKlQBs6ZxTdu3Gb49U5gDUVhg=", + "lastModified": 1782765817, + "narHash": "sha256-RsObTWb8IfWFUHPUIrN681QCsBAgKyuJPliijjgeZwU=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "9e26dfe0fb8d61475b6f9e8d63477fe92509f1db", + "rev": "aea1aaeffbf135445f76112f345b7185c27432fd", "type": "github" }, "original": { @@ -1133,11 +1133,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1782498288, - "narHash": "sha256-8/X3yyTXiE82b38n32ItbOqfWOVBl+gKa8fILyZfR4Q=", + "lastModified": 1782651437, + "narHash": "sha256-10srBgrJz7JOWzS1KG5BhrwHCUPTcPqZgwNKo5N9YE4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3cac626ec5e3703e835f227687e88aa9e2f25701", + "rev": "0a47451dbe2082a660b88a79a83efdc8d85de445", "type": "github" }, "original": { @@ -1632,11 +1632,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1782658900, - "narHash": "sha256-/s51VbBRGLH1NSjJ3AGhOGG8BXH/Jo+5JWMmaa2n+Jk=", + "lastModified": 1782771270, + "narHash": "sha256-1W5Oga37XF1fzjpUut98j32NS9XcLQ5HmZDuOqSSrrY=", "owner": "nix-community", "repo": "stylix", - "rev": "1fbdd38c16645731b2bdc4f70170765f725a3735", + "rev": "47571deb317bb1e53fbbe9c3cbf2a941cd94f794", "type": "github" }, "original": {