diff options
-rwxr-xr-x | host/Rory-nginx/configuration.nix | 1 | ||||
-rwxr-xr-x | host/Rory-nginx/services/containers/matrixunittests/container.nix | 2 | ||||
-rwxr-xr-x | host/Rory-nginx/services/jitsi.nix | 270 | ||||
-rwxr-xr-x | host/Rory-nginx/services/nginx/nginx.nix | 2 | ||||
-rwxr-xr-x | host/Rory-nginx/services/nginx/rory.gay/jitsi.nix | 32 |
5 files changed, 306 insertions, 1 deletions
diff --git a/host/Rory-nginx/configuration.nix b/host/Rory-nginx/configuration.nix index 28b6125..4261b43 100755 --- a/host/Rory-nginx/configuration.nix +++ b/host/Rory-nginx/configuration.nix @@ -11,6 +11,7 @@ ./services/discordbots.nix ./services/matrix/root.nix ./services/nginx/nginx.nix + ./services/jitsi.nix ]; users.groups.ocp = {}; networking = { diff --git a/host/Rory-nginx/services/containers/matrixunittests/container.nix b/host/Rory-nginx/services/containers/matrixunittests/container.nix index 7c15e04..597b1cf 100755 --- a/host/Rory-nginx/services/containers/matrixunittests/container.nix +++ b/host/Rory-nginx/services/containers/matrixunittests/container.nix @@ -16,7 +16,7 @@ ''; networking.firewall = { enable = true; - allowedTCPPorts = [ 80 ]; + allowedTCPPorts = [ 80 5432 ]; }; }; hostAddress = "192.168.100.12"; diff --git a/host/Rory-nginx/services/jitsi.nix b/host/Rory-nginx/services/jitsi.nix new file mode 100755 index 0000000..27ce78b --- /dev/null +++ b/host/Rory-nginx/services/jitsi.nix @@ -0,0 +1,270 @@ +{ config, pkgs, lib, ... }: + +{ + services.jitsi-meet = { + enable = true; + nginx.enable = false; + interfaceConfig = { + APP_NAME = 'Rory&'s Jitsi Meet Instance'; + AUDIO_LEVEL_PRIMARY_COLOR = "rgba(255,0,255,0.5)"; + AUDIO_LEVEL_SECONDARY_COLOR = "rgba(255,0,255,0.25)"; + AUTO_PIN_LATEST_SCREEN_SHARE = true; + BRAND_WATERMARK_LINK = "https://rory.gay"; + CLOSE_PAGE_GUEST_HINT = false; + DEFAULT_BACKGROUND = "#000000"; + DEFAULT_WELCOME_PAGE_LOGO_URL = ""; + DISABLE_DOMINANT_SPEAKER_INDICATOR = true; + DISABLE_JOIN_LEAVE_NOTIFICATIONS = true; + DISABLE_PRESENCE_STATUS = true; + DISABLE_TRANSCRIPTION_SUBTITLES = true; + DISABLE_VIDEO_BACKGROUND = true; + DISABLE_WELCOME_FOOTER = false; + DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD = false; + DISPLAY_WELCOME_PAGE_CONTENT = false; + DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT = false; + ENABLE_DIAL_OUT = false; + FILM_STRIP_MAX_HEIGHT = 80; + HIDE_INVITE_MORE_HEADER = true; + JITSI_WATERMARK_LINK = ""; + LANG_DETECTION = false; + LOCAL_THUMBNAIL_RATIO = 16 / 9; + MAXIMUM_ZOOMING_COEFFICIENT = 2; + MOBILE_APP_PROMO = false; + OPTIMAL_BROWSERS = [ "firefox" ]; + POLICY_LOGO = ""; + PROVIDER_NAME = "Rory&'s Jitsi Meet Instance"; + SETTINGS_SECTIONS = [ 'devices' 'language' 'moderator' 'profile' 'calendar' 'sounds' 'more' ]; + SHARING_FEATURES = [ 'url' 'embed' ]; + SHOW_BRAND_WATERMARK = true; + SHOW_CHROME_EXTENSION_BANNER = false; + SHOW_JITSI_WATERMARK = false; + SHOW_POWERED_BY = false; + SHOW_PROMOTIONAL_CLOSE_PAGE = false; + VERTICAL_FILMSTRIP = false; + VIDEO_LAYOUT_FIT = "nocrop"; + VIDEO_QUALITY_LABEL_DISABLED = false; + INDICATOR_FONT_SIZES = { + 'localParticipantDisplayName' = 16, + 'remoteParticipantDisplayName' = 16, + 'remoteParticipantAudioIndicator' = 12, + 'remoteParticipantVideoIndicator' = 12, + }; + }; + config = { + #hosts.domain = "jitsi.rory.gay"; + testing = { + assumeBandwidth = false; + noAutoPlayVideo = false; + callStatsTreshold = 100; + }; + disableModeratorIndicator = false; + disableReactions = false; + disableReactionsModeration = false; + disablePolls = false; + disableSelfView = false; + disableSelfViewSettings = false; + screenshotCapture = { + enabled = true; + mode = "always"; + }; + disableAudioLevels = false; + audioLevelsInterval = 12; + enableNoAudioDetection = true; + enableSaveLogs = false; + disableShowMoreStats = false; + enableNoisyMicDetection = false; + startAudioOnly = false; + startAudioMuted = 100; + startSilent = false; + enableOpusRed = true; + audioQuality = { + stereo = false; + opusMaxAverageBitrate = 51000; + enableOpusDtx = true; + }; + resolution = 720; + disableRemoveRaisedHandOnFocus = false; + speakerStats = { + disabled = false; + disableSearc = false; + order = [ + "role" + "name" + "left" + ]; + }; + maxFullResolutionParticipants = 10; + constraints = { + video = { + height = { + ideal = 720; + max = 1080; + min = 144; + }; + }; + }; + disableSimulcast = false; + startVideoMuted = 50; + startWithVideoMuted = false; + desktopSharingFrameRate = { + min = 5; + max = 5; + }; + recordingService.enabled = false; + localRecording = { + disable = true; + notifyAllParticipants = true; + disableSelfRecording = true; + }; + transcription.enabled = false; + connectionIndicators = { + autoHide = false; + autoHideTimeout = 5000; + disabled = false; + disableDetails = false; + inactiveDisabled = false; + }; + videoQuality = { + codecPreferenceOrder = [ "VP9" "VP8" "H264" ]; + maxBitratesVideo = { + H264 = { + low = 200000; # 200 kbps + standard = 500000; # 500 kbps + high = 700000; # 700 kbps + }; + VP8 = { + low = 200000; # 200 kbps + standard = 500000; # 500 kbps + high = 700000; # 700 kbps + }; + VP9 = { + low = 200000; # 200 kbps + standard = 500000; # 500 kbps + high = 700000; # 700 kbps + }; + }; + }; + notificationTimeouts = { + short = 2000; + moderate = 4000; + long = 600; + }; + disableRtx = false; + disableBeforeUnloadHandler = false; + + # UI settings + disableResponsiveTiles = false; + requireDisplayName = true; + enableWebHID = true; + welcomePage = { + disabled = true; + customUrl = "https://jitsi.rory.gay/null"; + }; + lobby = { + autoKnock = true; + enableChat = true; + }; + securityUi = { + hideLobbyButton = false; + disableLobbyPassword = false; + }; + disableShortcuts = true; + disableInitialGUM = true; + enableClosePage = false; + disable1On1Mode = true; + defaultLocalDisplayName = "User"; + defaultRemoteDisplayName = "Other User"; + hideDisplayName = false; + hideDominantSpeakerBadge = false; + disableProfile = false; + hideEmailInSettings = true; + roomPasswordNumberOfDigits = false; + enableCalendarIntegration = false; + prejoinConfig = { + enabled = true; + hideDisplayName = false; + hideExtraJoinButtons = ["by-phone"]; + }; + openSharedDocumentOnJoin = false; + enableInsecureRoomNameWarning = false; + enableAutomaticUrlCopy = false; + toolbarButtons = [ + "camera" + "chat" + #"closedcaptions" + "desktop" + "download" + "embedmeeting" + #"etherpad" + #"feedback" + "filmstrip" + "fullscreen" + "hangup" + #"help" + "highlight" + "invite" + #"linktosalesforce" + "livestreaming" + "microphone" + "noisesuppression" + "participants-pane" + "profile" + "raisehand" + #"recording" + "security" + "select-background" + "settings" + "shareaudio" + "sharedvideo" + "shortcuts" + "stats" + "tileview" + "toggle-camera" + "videoquality" + #"whiteboard" + ]; + toolbarConfig = { + alwaysVisible = true; + }; + gatherStats = true; + pcStatsInterval = 1000; + enableDisplayNameInStats = true; + feedbackPercentage = 0; + p2p = { + enabled = false; + }; + analytics.disabled = true; + remoteVideoMenu = { + disabled = false; + disableKick = false; + disableGrantModerator = false; + disablePrivateChat = false; + }; + disableRemoteMute = false; + enableLipSync = true; + participantsPane = { + hideModeratorSettingsTab = false; + hideMoreActionsButton = false; + hideMuteAllButton = false; + }; + breakoutRooms = { + hideAddRoomButton = true; + hideAutoAssignButton = true; + hideJoinRoomButton = true; + }; + disableVirtualBackground = true; + disableAddingBackgroundImages = true; + disableScreensharingVirtualBackground = true; + backgroundAlpha = 0.5; + hideConferenceTimer = false; + hideConferenceSubject = false; + hideParticipantsStats = false; + displayJids = true; + requireDisplayName = true; + disableChatSmileys = true; + }; + }; + + system.stateVersion = "22.11"; # DO NOT EDIT! +} + diff --git a/host/Rory-nginx/services/nginx/nginx.nix b/host/Rory-nginx/services/nginx/nginx.nix index 4364a2b..3680052 100755 --- a/host/Rory-nginx/services/nginx/nginx.nix +++ b/host/Rory-nginx/services/nginx/nginx.nix @@ -49,6 +49,8 @@ "catgirlsaresexy.com" = import ./catgirlsaresexy.com/root.nix; "sugarcanemc.org" = import ./sugarcanemc.org/root.nix; + "jitsi.rory.gay" = import ./rory.gay/jitsi.nix; + #matrix... "conduit.rory.gay" = import ./rory.gay/conduit.nix; "matrix.rory.gay" = import ./rory.gay/matrix.nix; diff --git a/host/Rory-nginx/services/nginx/rory.gay/jitsi.nix b/host/Rory-nginx/services/nginx/rory.gay/jitsi.nix new file mode 100755 index 0000000..ad8dd89 --- /dev/null +++ b/host/Rory-nginx/services/nginx/rory.gay/jitsi.nix @@ -0,0 +1,32 @@ +{ + enableACME = true; + addSSL = true; + extraConfig = '' + ssi on; + ''; + locations."@root_path".extraConfig = '' + rewrite ^/(.*)$ / break; + ''; + locations."~ ^/([^/\\?&:'\"]+)$".tryFiles = "$uri @root_path"; + locations."^~ /xmpp-websocket" = { + priority = 100; + proxyPass = "http://localhost:5280/xmpp-websocket"; + proxyWebsockets = true; + }; + locations."=/http-bind" = { + proxyPass = "http://localhost:5280/http-bind"; + extraConfig = '' + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + ''; + }; + locations."=/external_api.js" = mkDefault { + alias = "${pkgs.jitsi-meet}/libs/external_api.min.js"; + }; + locations."=/config.js" = mkDefault { + alias = overrideJs "${pkgs.jitsi-meet}/config.js" "config" (recursiveUpdate defaultCfg cfg.config) cfg.extraConfig; + }; + locations."=/interface_config.js" = mkDefault { + alias = overrideJs "${pkgs.jitsi-meet}/interface_config.js" "interfaceConfig" cfg.interfaceConfig ""; + }; +} \ No newline at end of file |