From 1f3653c6fbf1db6929f82ed11ba58d37bd38e5b4 Mon Sep 17 00:00:00 2001 From: Alex Davies Date: Thu, 6 Jun 2024 13:31:48 -0300 Subject: [PATCH] DSLR-webcam, so old vr-desktop crap I was playing with but didn't remove --- flake.nix | 1 + nixos/kde-desktop.nix | 1 - nixos/misc/dslr-webcam.nix | 22 +++++++++++++++------- nixos/misc/wifi-multiplex.nix | 4 +++- nixos/vr-desktop.nix | 16 ++++++++++++++++ 5 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 nixos/vr-desktop.nix diff --git a/flake.nix b/flake.nix index 75c7248..83aebdb 100644 --- a/flake.nix +++ b/flake.nix @@ -117,6 +117,7 @@ ./nixos/kde-desktop.nix ./nixos/zerotier.nix ./nixos/work.nix + ./nixos/vr-desktop.nix ./nixos/cad.nix ./nixos/gaming.nix ]; diff --git a/nixos/kde-desktop.nix b/nixos/kde-desktop.nix index bb79e19..0eb512d 100644 --- a/nixos/kde-desktop.nix +++ b/nixos/kde-desktop.nix @@ -3,7 +3,6 @@ { imports = [ ./misc/dslr-webcam.nix - ./misc/wifi-multiplex.nix ]; # Enable the KDE Desktop Environment. services.xserver.enable = true; diff --git a/nixos/misc/dslr-webcam.nix b/nixos/misc/dslr-webcam.nix index 283e1ec..df094a3 100644 --- a/nixos/misc/dslr-webcam.nix +++ b/nixos/misc/dslr-webcam.nix @@ -1,3 +1,4 @@ + { pkgs, lib, ... }: let @@ -6,17 +7,19 @@ let options v4l2loopback exclusive_caps=1 max_buffers=2 card_label="DSLR" video_nr=10 ''; - dslrUdevRule = ''ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", ATTR{idProduct}=="317b", RUN+="/bin/sh -c 'gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/video10'"''; + dslrUdevRule = '' + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", ENV{ID_USB_MODEL}=="Canon_Digital_Camera", RUN+="${pkgs.writeScriptBin "dslr-webcam" dslrWebcamScript}/bin/dslr-webcam" + ''; + + dslrWebcamScript = '' + #!/bin/sh + modprobe dslr-webcam || true + exec "${pkgs.gphoto2}/bin/gphoto2" --stdout --capture-movie | "${pkgs.ffmpeg}/bin/ffmpeg" -i - -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/video10 + ''; in { # Ensure your system configuration includes these options: - environment.systemPackages = with pkgs; [ - # Ensure you have gphoto2 and ffmpeg available - gphoto2 - ffmpeg - ]; - boot.extraModulePackages = [ pkgs.linuxPackages.v4l2loopback ]; # Load v4l2loopback module with the required options @@ -24,4 +27,9 @@ in # Udev rule for DSLR camera services.udev.extraRules = dslrUdevRule; + + # Install dslr-webcam script + environment.systemPackages = with pkgs; [ + (writeScriptBin "dslr-webcam" dslrWebcamScript) + ]; } diff --git a/nixos/misc/wifi-multiplex.nix b/nixos/misc/wifi-multiplex.nix index e25d380..813c827 100644 --- a/nixos/misc/wifi-multiplex.nix +++ b/nixos/misc/wifi-multiplex.nix @@ -1,8 +1,10 @@ + { pkgs, lib, ... }: let wifiUdevRule = '' - ACTION=="add", SUBSYSTEM=="net", ENV{DEVTYPE}=="wlan", !KERNEL=="phy*", RUN+="${pkgs.iw}/bin/iw dev %k info | grep -q '_ap' || ${pkgs.iw}/bin/iw dev %k interface add %k_ap type station" + ACTION=="add", SUBSYSTEM=="net", ENV{DEVTYPE}=="wlan", ENV{ID_NET_NAME_MAC}=="", RUN+="/bin/sh -c '${pkgs.iw}/bin/iw dev %k interface add %k_ap type station'" + ''; in { diff --git a/nixos/vr-desktop.nix b/nixos/vr-desktop.nix new file mode 100644 index 0000000..8b94c0c --- /dev/null +++ b/nixos/vr-desktop.nix @@ -0,0 +1,16 @@ +{ config, pkgs, lib, ... }: +{ + nixpkgs.overlays = [ + # (import (pkgs.fetchFromGitHub "https://github.com/SimulaVR/Simula.git")) + ]; + + services.monado.enable = true; + + programs.alvr = { + enable = true; + openFirewall = true; + }; + + environment.systemPackages = with pkgs; [ + ]; +}