summaryrefslogtreecommitdiff
path: root/nixos/profiles/workstation/graphical.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/profiles/workstation/graphical.nix')
-rw-r--r--nixos/profiles/workstation/graphical.nix98
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";
+ };
+ };
+ };
+}