diff --git a/nixos/kde-desktop.nix b/nixos/kde-desktop.nix
index 34dcfc2..bc29862 100644
--- a/nixos/kde-desktop.nix
+++ b/nixos/kde-desktop.nix
@@ -1,6 +1,9 @@
 { inputs, outputs, lib, config, pkgs, hostname, specialArgs, options, ... }:
 
 {
+  imports = [
+    ./misc/dslr-webcam.nix
+  ];
   # Enable the KDE Desktop Environment.
   services.xserver.enable = true;
   services.displayManager.sddm.enable = true;
diff --git a/nixos/misc/dslr-webcam.nix b/nixos/misc/dslr-webcam.nix
new file mode 100644
index 0000000..283e1ec
--- /dev/null
+++ b/nixos/misc/dslr-webcam.nix
@@ -0,0 +1,27 @@
+{ pkgs, lib, ... }:
+
+let
+  dslrWebcamConfContent = ''
+    alias dslr-webcam v4l2loopback
+    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'"'';
+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
+  boot.extraModprobeConfig = dslrWebcamConfContent;
+
+  # Udev rule for DSLR camera
+  services.udev.extraRules = dslrUdevRule;
+}