diff options
Diffstat (limited to 'nixos/profiles/workstation/graphical.nix')
-rw-r--r-- | nixos/profiles/workstation/graphical.nix | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/nixos/profiles/workstation/graphical.nix b/nixos/profiles/workstation/graphical.nix new file mode 100644 index 0000000..d79ed97 --- /dev/null +++ b/nixos/profiles/workstation/graphical.nix @@ -0,0 +1,98 @@ +{ config, pkgs, ... }: + +{ + programs.sway = { + enable = true; + # Execute sway with required environment variables for GTK apps. + wrapperFeatures.gtk = true; + }; + programs.ssh.startAgent = true; + + environment.loginShellInit = '' + [[ "$(tty)" == /dev/tty1 ]] && exec sway + ''; + + environment.systemPackages = with pkgs; [ + swaylock + + # CLI tools + brightnessctl + wl-clipboard # for wl-copy and wl-paste + grim + + # When I ssh into a server my terminal changes to a host-specific background color via + # a LocalCommand configured in ~/.ssh/config and a ZSH function to reset the color on exit. + (writeShellScriptBin "set-bg" (builtins.readFile ./scripts/set-bg)) + (writeShellScriptBin "reset-bg" (builtins.readFile ./scripts/reset-bg)) + + # graphical tools + imv + mpv + + # set and forget + i3status-rust + ]; + + # This generates /etc/xdg/mimeapps.list. The XDG spec and xdg-open don't support wildcards in MIME types. + # TODO: use an xdg-open alternative that supports wildcards in MIME types and doesn't use mimeapps.list + xdg.mime.defaultApplications = + let + defaultBrowser = "firefox.desktop"; + in + { + "text/html" = defaultBrowser; + + "x-scheme-handler/http" = defaultBrowser; + "x-scheme-handler/https" = defaultBrowser; + "x-scheme-handler/mailto" = "thunderbird.desktop"; + }; + + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + security.rtkit.enable = true; # recommended for PipeWire + + programs.thunderbird = { + enable = true; + }; + + programs.firefox = { + enable = true; + + policies = { + DontCheckDefaultBrowser = true; + DisablePocket = true; + FirefoxHome = { + SponsoredTopSites = false; + }; + + SearchSuggestEnabled = false; + # cannot use SearchEngines because it's only available on ESR :( + # (https://mozilla.github.io/policy-templates/#searchengines-this-policy-is-only-available-on-the-esr) + + Preferences = { + "layout.css.devPixelsPerPx" = "1.2"; # with this the default Firefox font size matches my terminal font size of 14px + "browser.uidensity" = 1; + "browser.aboutConfig.showWarning" = false; + "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; # can be changed via UI despite this about:config setting being locked + }; + + ExtensionSettings = { + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + + PasswordManagerEnabled = false; + AutofillCreditCardEnabled = false; + ExtensionSettings."{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + }; +} |