diff --git a/nixos/cameras/living.nix b/nixos/cameras/living.nix index ec01cf75..e2b4b802 100644 --- a/nixos/cameras/living.nix +++ b/nixos/cameras/living.nix @@ -5,6 +5,7 @@ ... }: let inherit (gensokyo-zone.lib) mapDefaults; + inherit (lib.strings) concatStringsSep; inherit (config.services) motion; format = "mjpeg"; # or "yuyv" params = { @@ -22,7 +23,12 @@ in { services.motion.cameras.livingcam.settings = mapDefaults { video_device = "/dev/livingcam"; - video_params = "auto_brightness=2,brightness=72,power_line_frequency=2,palette=${toString params.${format}.palette}"; + video_params = concatStringsSep "," [ + #"auto_brightness=2" + "brightness=56" + "power_line_frequency=2" + "palette=${toString params.${format}.palette}" + ]; inherit (params.${format}) width height; #framerate = 30; framerate = 20; diff --git a/nixos/cameras/logistics-webcam.nix b/nixos/cameras/logistics-webcam.nix index 2f05fb9e..02b313ad 100644 --- a/nixos/cameras/logistics-webcam.nix +++ b/nixos/cameras/logistics-webcam.nix @@ -1,8 +1,14 @@ -{gensokyo-zone, ...}: let +{ + config, + gensokyo-zone, + lib, + ... +}: let + inherit (config.services) motion; inherit (gensokyo-zone.lib) mapDefaults; in { services.motion.cameras.webcam.settings = mapDefaults { - video_device = "/dev/video0"; + video_device = "/dev/webcam"; video_params = "palette=15"; width = 1280; height = 720; @@ -10,4 +16,19 @@ in { framerate = 3; text_left = "logistics"; }; + services.udev.extraRules = let + inherit (lib.strings) concatStringsSep; + rules = [ + ''SUBSYSTEM=="video4linux"'' + ''ATTR{index}=="0"'' + ''ATTRS{idVendor}=="5986"'' + ''ATTRS{idProduct}=="111c"'' + ''SYMLINK+="webcam"'' + ''OWNER="${motion.user}"'' + ''TAG+="systemd"'' + ''ENV{SYSTEMD_WANTS}="motion.service"'' + ]; + rulesLine = concatStringsSep ", " rules; + in + rulesLine; } diff --git a/systems/logistics/nixos.nix b/systems/logistics/nixos.nix index bcab4df3..11bb646b 100644 --- a/systems/logistics/nixos.nix +++ b/systems/logistics/nixos.nix @@ -38,6 +38,7 @@ in { mouse.naturalScrolling = config.services.libinput.touchpad.naturalScrolling; }; programs.firefox.enable = true; + services.motion.cameras.webcam.enable = false; services.printing.enable = true; @@ -52,8 +53,6 @@ in { }; environment.systemPackages = [ - # XXX: currently broken in nixpkgs - # pkgs.cura-octoprint ]; users.users.logistics = {