|
| 1 | +{pkgs, lib, ...}: let |
| 2 | + firefox = pkgs.wrapFirefox pkgs.firefox-unwrapped { |
| 3 | + extraPolicies = { |
| 4 | + AutofillAddressEnabled = false; |
| 5 | + AutofillCreditCardEnabled = false; |
| 6 | + CaptivePortal = false; |
| 7 | + DisableFeedbackCommands = true; |
| 8 | + DisableFirefoxAccounts = true; |
| 9 | + DisableFirefoxScreenshots = true; |
| 10 | + DisableFirefoxStudies = true; |
| 11 | + DisablePocket = true; |
| 12 | + DisableSetDesktopBackground = true; |
| 13 | + DisableTelemetry = true; |
| 14 | + DisplayBookmarksToolbar = "never"; |
| 15 | + DisplayMenuBar = "never"; |
| 16 | + DontCheckDefaultBrowser = true; |
| 17 | + NewTabPage = false; |
| 18 | + NoDefaultBookmarks = true; |
| 19 | + OfferToSaveLogins = false; |
| 20 | + OfferToSaveLoginsDefault = false; |
| 21 | + OverrideFirstRunPage = ""; |
| 22 | + OverridePostUpdatePage = ""; |
| 23 | + PasswordManagerEnabled = false; |
| 24 | + FirefoxHome = { |
| 25 | + Search = true; |
| 26 | + Pocket = false; |
| 27 | + Snippets = false; |
| 28 | + TopSites = false; |
| 29 | + Highlights = false; |
| 30 | + }; |
| 31 | + Homepage = { |
| 32 | + URL = "https://duckduckgo.com"; |
| 33 | + Locked = true; |
| 34 | + }; |
| 35 | + UserMessaging = { |
| 36 | + ExtensionRecommendations = false; |
| 37 | + SkipOnboarding = true; |
| 38 | + }; |
| 39 | + Preferences = { |
| 40 | + "browser.search.selectedEngine" = { |
| 41 | + Value = "DuckDuckGo"; |
| 42 | + Status = "locked"; |
| 43 | + }; |
| 44 | + }; |
| 45 | + }; |
| 46 | + }; |
| 47 | + firefox-kiosk = pkgs.writeShellScriptBin "firefox-kiosk" '' |
| 48 | + systemctl --user import-environment DISPLAY WAYLAND_DISPLAY |
| 49 | + systemctl --user start firefox-kiosk-session.target |
| 50 | + ${lib.getExe' pkgs.pulseaudio "pactl"} set-sink-volume @DEFAULT_SINK@ 80% |
| 51 | + ${lib.getExe pkgs.cage} -- ${lib.getExe firefox} |
| 52 | + systemctl --user stop firefox-kiosk-session.target |
| 53 | + ''; |
| 54 | + |
| 55 | + firefox-kiosk-session = |
| 56 | + (pkgs.writeTextDir "share/wayland-sessions/firefox.desktop" '' |
| 57 | + [Desktop Entry] |
| 58 | + Name=Firefox Kiosk |
| 59 | + Comment=A web browser |
| 60 | + Exec=${lib.getExe firefox-kiosk} |
| 61 | + Type=Application |
| 62 | + '').overrideAttrs |
| 63 | + (_: { |
| 64 | + passthru.providedSessions = ["firefox"]; |
| 65 | + }); |
| 66 | +in { |
| 67 | + services.displayManager.sessionPackages = [firefox-kiosk-session]; |
| 68 | + |
| 69 | + systemd.user.targets.firefox-kiosk-session = { |
| 70 | + description = "Firefox session"; |
| 71 | + bindsTo = ["graphical-session.target"]; |
| 72 | + wants = ["graphical-session-pre.target"]; |
| 73 | + after = ["graphical-session-pre.target"]; |
| 74 | + }; |
| 75 | +} |
0 commit comments