{ lib, config, pkgs, ... }: with lib; let psCfg = config.pub-solar; in { options.pub-solar.graphical = { v4l2loopback.enable = mkOption { type = types.bool; default = false; description = "WebCam streaming tool"; }; }; config = { boot = mkIf psCfg.graphical.v4l2loopback.enable { extraModulePackages = with config.boot.kernelPackages; [v4l2loopback]; kernelModules = ["v4l2loopback"]; extraModprobeConfig = '' options v4l2loopback exclusive_caps=1 devices=3 ''; }; environment.systemPackages = with pkgs; [ linuxPackages.v4l2loopback ]; programs.sway.enable = true; xdg.portal = { enable = true; wlr = { enable = true; settings = { screencast = { max_fps = 30; chooser_type = "simple"; chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or"; }; }; }; extraPortals = with pkgs; [xdg-desktop-portal-gtk]; }; services.pipewire.enable = true; users.users."${psCfg.user.name}".packages = with pkgs; [ sway grim kanshi slurp swaybg xwayland libappindicator-gtk3 wl-clipboard wf-recorder brightnessctl gammastep geoclue2 xsettingsd ydotool sway-launcher record-screen import-gtk-settings s wcwd ]; home-manager.users."${psCfg.user.name}" = { systemd.user.services.sway = import ./sway.service.nix {inherit pkgs psCfg;}; systemd.user.services.xsettingsd = import ./xsettingsd.service.nix {inherit pkgs psCfg;}; systemd.user.targets.sway-session = import ./sway-session.target.nix {inherit pkgs psCfg;}; xdg.configFile."sway/config".text = import ./config/config.nix {inherit config pkgs;}; xdg.configFile."sway/config.d/colorscheme.conf".source = ./config/config.d/colorscheme.conf; xdg.configFile."sway/config.d/theme.conf".source = ./config/config.d/theme.conf; xdg.configFile."sway/config.d/gaps.conf".source = ./config/config.d/gaps.conf; xdg.configFile."sway/config.d/custom-keybindings.conf".source = ./config/config.d/custom-keybindings.conf; xdg.configFile."sway/config.d/mode_system.conf".text = import ./config/config.d/mode_system.conf.nix {inherit pkgs psCfg;}; xdg.configFile."sway/config.d/applications.conf".source = ./config/config.d/applications.conf; xdg.configFile."sway/config.d/systemd.conf".source = ./config/config.d/systemd.conf; services.swayidle = with pkgs; { enable = true; events = [ { event = "before-sleep"; command = "${systemd}/bin/systemctl hibernate"; } ]; timeouts = [ { timeout = 120; command = "${swaylock-bg}/bin/swaylock-bg"; } { timeout = 130; command = "${sway}/bin/swaymsg \"output * dpms off\""; resumeCommand = "${sway}/bin/swaymsg \"output * dpms on\""; } { timeout = 300; command = "${systemd}/bin/systemctl hibernate"; } ]; systemdTarget = "sway-session.target"; }; }; }; }