diff --git a/flake.nix b/flake.nix index 26da78c0..f854a22a 100644 --- a/flake.nix +++ b/flake.nix @@ -127,10 +127,11 @@ users = digga.lib.rakeLeaves ./users; }; suites = with profiles; rec { - base = [ core users.nixos users.root nvim users.anish ]; # TODO make anish non gui + base = [ core users.root nvim users.anish ]; # TODO make anish non gui sealight = [ base ]; # matrix rsshub backup wireguard mossnet = [ base ]; # shaarli wallabag nextcloud taskwarrior headphones - curve = [ base desktop ]; + graphical = [ base users.profiles.firefox users.profiles.desktop ]; + curve = [ graphical ]; }; }; }; @@ -142,7 +143,7 @@ profiles = digga.lib.rakeLeaves ./users/profiles; suites = with profiles; rec { base = [ direnv git ]; - gui = [ base firefox desktop ]; + #gui = [ base profiles.firefox profiles.desktop ]; }; }; users = { diff --git a/hosts/curve/default.nix b/hosts/curve/default.nix index bf1109dc..de770132 100644 --- a/hosts/curve/default.nix +++ b/hosts/curve/default.nix @@ -3,11 +3,16 @@ imports = [ ./configuration.nix profiles.users.anish + #profiles.users.profiles.firefox + #profiles.users.profiles.desktop ] ++ suites.curve; - home-manager.users.anish = { suites, ... }: { - imports = suites.gui; - }; + #home-manager.users.anish = { suites, ... }: { + # imports = [ + # profiles.users.profiles.desktop + # profiles.users.profiles.firefox + # ]; + #}; #bud.enable = true; } diff --git a/profiles/desktop/default.nix b/profiles/desktop/default.nix index f6bea38b..25ff03e8 100644 --- a/profiles/desktop/default.nix +++ b/profiles/desktop/default.nix @@ -2,46 +2,46 @@ { #imports = [ ./music.nix ] - environment.systemPackages = with pkgs; [ - lightdm - dunst - libnotify - (polybar.override { - pulseSupport = true; - nlSupport = true; - }) - ]; - - services = { - picom.enable = true; - #redshift.enable = true; - xserver = { - enable = true; - displayManager = { - defaultSession = "none+bspwm"; - lightdm.enable = true; - #lightdm.greeters.mini.enable = true; - #lightdm.greeters.mini.user = "anish"; # TODO hardcoded - }; - windowManager.bspwm.enable = true; - windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc"; - windowManager.bspwm.sxhkd.configFile = "/home/anish/sxhkdrc"; - #windowManager.default = "bspwm"; - }; - }; - - #systemd.user.services."dunst" = { - # enable = true; - # description = ""; - # wantedBy = [ "default.target" ]; - # serviceConfig.Restart = "always"; - # serviceConfig.RestartSec = 2; - # serviceConfig.ExecStart = "${pkgs.dunst}/bin/dunst"; - #}; - services.xserver.displayManager.lightdm.greeters.mini.extraConfig = '' - text-color = "#ff79c6" - password-background-color = "#1E2029" - window-color = "#181a23" - border-color = "#181a23" - ''; +# environment.systemPackages = with pkgs; [ +# lightdm +# dunst +# libnotify +# (polybar.override { +# pulseSupport = true; +# nlSupport = true; +# }) +# ]; +# +# services = { +# picom.enable = true; +# #redshift.enable = true; +# xserver = { +# enable = true; +# displayManager = { +# defaultSession = "none+bspwm"; +# lightdm.enable = true; +# lightdm.greeters.mini.enable = true; +# lightdm.greeters.mini.user = "anish"; # TODO hardcoded +# }; +# windowManager.bspwm.enable = true; +# windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc"; +# windowManager.bspwm.sxhkd.configFile = "/home/anish/sxhkdrc"; +# #windowManager.default = "bspwm"; +# }; +# }; +# +# #systemd.user.services."dunst" = { +# # enable = true; +# # description = ""; +# # wantedBy = [ "default.target" ]; +# # serviceConfig.Restart = "always"; +# # serviceConfig.RestartSec = 2; +# # serviceConfig.ExecStart = "${pkgs.dunst}/bin/dunst"; +# #}; +# services.xserver.displayManager.lightdm.greeters.mini.extraConfig = '' +# text-color = "#ff79c6" +# password-background-color = "#1E2029" +# window-color = "#181a23" +# border-color = "#181a23" +# ''; } diff --git a/users/anish/default.nix b/users/anish/default.nix index 440f7180..83bff457 100644 --- a/users/anish/default.nix +++ b/users/anish/default.nix @@ -10,13 +10,13 @@ extraGroups = [ "wheel" "audio" ]; }; - #home-manager.programs.git = { - # userName = "Anish Lakhwara"; - # userEmail = "anish+git@lakhwara.com"; - # delta.enable = true; - #}; - - home-manager.users.anish = { suites, ... }: { - imports = suites.gui; + home-manager.users.anish.programs.git = { + userName = "Anish Lakhwara"; + userEmail = "anish+git@lakhwara.com"; + delta.enable = true; }; + + #home-manager.users.anish = { suites, ... }: { + # imports = suites.gui; + #}; } diff --git a/users/profiles/desktop/ayu-kitty.conf b/users/profiles/desktop/ayu-kitty.conf new file mode 100644 index 00000000..3ad94cdc --- /dev/null +++ b/users/profiles/desktop/ayu-kitty.conf @@ -0,0 +1,25 @@ +#: This is a port of ayu Mirage color scheme +#: based on : +#: https://github.com/ayu-theme/ayu-colors + +background #1F2430 +foreground #CBCCC6 +cursor #FFCC66 +selection_background #33415E +color0 #000000 +color8 #4D5566 +color1 #FF3333 +color9 #F27983 +color2 #BAE67E +color10 #A6CC70 +color3 #FFA759 +color11 #F29E74 +color4 #73D0FF +color12 #77A8D9 +color5 #D4BFFF +color13 #A37ACC +color6 #95E6CB +color14 #4CBF99 +color7 #ffffff +color15 #F0F0F0 +selection_foreground #CBCCC6 diff --git a/users/profiles/desktop/bspwmrc b/users/profiles/desktop/bspwmrc index b942f75a..a68f97c6 100755 --- a/users/profiles/desktop/bspwmrc +++ b/users/profiles/desktop/bspwmrc @@ -15,6 +15,20 @@ bspc monitor $MONITOR -d {1,2,3,4,5} bspc config remove_disabled_monitors true bspc config remove_unplugged_monitors true +bspc config borderless_monocle true +bspc config gapless_monocle true + +bspc config border_width 1 +bspc config window_gap 4 + +bspc config normal_border_color "#181a23" +bspc config active_border_color "#181a23" +bspc config focused_border_color "#bd93f9" +bspc config presel_feedback_color "#bd93f9" + +# Extra padding for polybar +bspc config -m primary top_padding 34 +bspc config -m primary bottom_padding 0 # Rules bspc rule -r '*' @@ -28,7 +42,7 @@ bspc rule -a 'Emacs:scratch' state=floating bspc rule -a 'Emacs:emacs-everywhere' state=floating sticky=on bspc rule -a '*:scratch' state=floating sticky=on center=on border=off rectangle=1000x800+0+0 -# +# polybar for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do source "$file" done diff --git a/users/profiles/desktop/default.nix b/users/profiles/desktop/default.nix index 0a8572cc..f5b80d44 100644 --- a/users/profiles/desktop/default.nix +++ b/users/profiles/desktop/default.nix @@ -1,107 +1,108 @@ {pkgs, ...}: { - # Enable bspwm and sxhkd - xsession.windowManager.bspwm = { - enable = true; - extraConfig = '' - bspc config remove_disabled_monitors true - bspc config remove_unplugged_monitors true + #imports = [ ./xdg.nix ]; - bspc config borderless_monocle true - bspc config gapless_monocle true - - bspc config border_width 1 - bspc config window_gap 4 - - bspc config normal_border_color "#181a23" - bspc config active_border_color "#181a23" - bspc config focused_border_color "#bd93f9" - bspc config presel_feedback_color "#bd93f9" - - # Extra padding for polybar - bspc config -m primary top_padding 34 - bspc config -m primary bottom_padding 0 + environment.systemPackages = with pkgs; [ + rofi + lightdm + dunst + libnotify + (polybar.override { + pulseSupport = true; + nlSupport = true; + }) + ]; - # Load polybar - for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do - source "$file" - done - ''; - }; - services.sxhkd.enable = true; - - # Add gtk theme for Dracular and Paper - # Set wallpaper - - # Install themes - # More nixOS Config - #packages = with pkgs; [ - # dracula-theme - # paper-icon-theme - #]; - - # Font stuff - #fonts = { - # fonts = with pkgs; [ - # fire-code - # hermit - # hack - # fire-code-symbols - # siji - # font-awesome-ttf - # ]; - # fontconfig.defaultFonts = { - # sansSerif = ["Hermit"]; - # monospace = ["Hermit"]; - # }; - #}; - - # Move required config files around - home.file = { - "bspwm/rc.d/polybar".source = ./run.sh; - "bspwm/bspwmrc".source = ./bspwmrc; - "sxhkdrc".source = ./sxhkdrc; - "rofi/theme" = { - source = ./rofi; - recursive = true; + services = { + picom.enable = true; + #redshift.enable = true; + xserver = { + enable = true; + displayManager = { + defaultSession = "none+bspwm"; + lightdm.enable = true; + lightdm.greeters.mini.enable = true; + lightdm.greeters.mini.user = "anish"; # TODO hardcoded + lightdm.greeters.mini.extraConfig = '' + text-color = "#ff79c6" + password-background-color = "#1E2029" + window-color = "#181a23" + border-color = "#181a23" + ''; + }; + windowManager.bspwm.enable = true; + #windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc"; + windowManager.bspwm.sxhkd.configFile = "/home/anish/.config/sxhkdrc"; }; - "polybar" = { - source = ./polybar; - recursive = true; - }; - "dunst/dunstrc".source = ./dunstrc; }; - # Login screen - # not a home-manager variable, just nixOS one - #services.xserver.displayManager.lightdm.greeters.mini.extraConfig = '' - # text-color = "#ff79c6" - # password-background-color = "#1E2029" - # window-color = "#181a23" - # border-color = "#181a23" - # ''; + home-manager.users.anish = { + # Add gtk theme for Dracular and Paper + # Set wallpaper - # Compositor - services.picom = { - fade = true; - fadeDelta = 1; - fadeSteps = [ 0.01 0.012 ]; - shadow = true; - shadowOffsets = [ (-10) (-10) ]; - shadowOpacity = 0.22; - # activeOpacity = "1.00"; - # inactiveOpacity = "0.92"; - extraOptions = '' - shadow-radius = 12; - # blur-background = true; - # blur-background-frame = true; - # blur-background-fixed = true; - blur-kern = "7x7box"; - blur-strength = 320; - ''; - }; + # Install themes + home.packages = with pkgs; [ + dracula-theme + paper-icon-theme + ]; - programs.autorandr.enable = true; - services.udiskie.automount = true; + # Font stuff + #fonts = { + # fonts = with pkgs; [ + # fire-code + # hermit + # hack + # fire-code-symbols + # siji + # font-awesome-ttf + # ]; + # fontconfig.defaultFonts = { + # sansSerif = ["Hermit"]; + # monospace = ["Hermit"]; + # }; + #}; + + # Move required config files around + home.file = { + ".config/bspwm/rc.d/polybar".source = ./run.sh; + ".config/bspwm/bspwmrc".source = ./bspwmrc; + ".config/sxhkdrc".source = ./sxhkdrc; + ".config/rofi/theme" = { + source = ./rofi; + recursive = true; + }; + ".config/polybar" = { + source = ./polybar; + recursive = true; + }; + ".config/dunst/dunstrc".source = ./dunstrc; + ".config/kitty/kitty.conf".source = ./kitty.conf; + ".config/kitty/ayu.conf".source = ./ayu-kitty.conf; + }; + + + # Compositor + services.picom = { + fade = true; + fadeDelta = 1; + fadeSteps = [ 0.01 0.012 ]; + shadow = true; + shadowOffsets = [ (-10) (-10) ]; + shadowOpacity = 0.22; + # activeOpacity = "1.00"; + # inactiveOpacity = "0.92"; + extraOptions = '' + shadow-radius = 12; + # blur-background = true; + # blur-background-frame = true; + # blur-background-fixed = true; + blur-kern = "7x7box"; + blur-strength = 320; + ''; + }; + + programs.autorandr.enable = true; + services.udiskie.automount = true; + }; } diff --git a/users/profiles/desktop/kitty.conf b/users/profiles/desktop/kitty.conf new file mode 100644 index 00000000..afa5db73 --- /dev/null +++ b/users/profiles/desktop/kitty.conf @@ -0,0 +1 @@ +include ayu.conf diff --git a/users/profiles/desktop/sxhkdrc b/users/profiles/desktop/sxhkdrc index d9acf138..d3800afe 100644 --- a/users/profiles/desktop/sxhkdrc +++ b/users/profiles/desktop/sxhkdrc @@ -32,16 +32,13 @@ super + e emacsclient --eval "(emacs-everywhere)" super + space - $DOTFILES_BIN/rofi/appmenu + rofi -show drun -modi drun,run -show-icons -theme theme/appmenu.rasi super + Tab - $DOTFILES_BIN/rofi/windowmenu + rofi -show window -show-icons -theme theme/windowmenu.rasi super + p - $DOTFILES_BIN/rofi/bwmenu - -super + shift + p - $DOTFILES_BIN/rofi/bwmenu -r + $DOTFILES_BIN/rofi/passmenu super + slash $DOTFILES_BIN/rofi/filemenu -x diff --git a/users/profiles/desktop/xdg.nix b/users/profiles/desktop/xdg.nix new file mode 100644 index 00000000..bd80d869 --- /dev/null +++ b/users/profiles/desktop/xdg.nix @@ -0,0 +1,50 @@ +# xdg.nix +# +# Set up and enforce XDG compliance. Other modules will take care of their own, +# but this takes care of the general cases. + +{ config, home-manager, ... }: +{ + ### A tidy $HOME is a tidy mind + home-manager.users.anish.xdg.enable = true; + + environment = { + sessionVariables = { + # These are the defaults, and xdg.enable does set them, but due to load + # order, they're not set before environment.variables are set, which could + # cause race conditions. + XDG_CACHE_HOME = "$HOME/.cache"; + XDG_CONFIG_HOME = "$HOME/.config"; + XDG_DATA_HOME = "$HOME/.local/share"; + XDG_BIN_HOME = "$HOME/.local/bin"; + }; + variables = { + # Conform more programs to XDG conventions. The rest are handled by their + # respective modules. + __GL_SHADER_DISK_CACHE_PATH = "$XDG_CACHE_HOME/nv"; + ASPELL_CONF = '' + per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; + personal $XDG_CONFIG_HOME/aspell/en_US.pws; + repl $XDG_CONFIG_HOME/aspell/en.prepl; + ''; + #CUDA_CACHE_PATH = "$XDG_CACHE_HOME/nv"; + HISTFILE = "$XDG_DATA_HOME/bash/history"; + INPUTRC = "$XDG_CONFIG_HOME/readline/inputrc"; + LESSHISTFILE = "$XDG_CACHE_HOME/lesshst"; + WGETRC = "$XDG_CONFIG_HOME/wgetrc"; + + # Tools I don't use + # SUBVERSION_HOME = "$XDG_CONFIG_HOME/subversion"; + # BZRPATH = "$XDG_CONFIG_HOME/bazaar"; + # BZR_PLUGIN_PATH = "$XDG_DATA_HOME/bazaar"; + # BZR_HOME = "$XDG_CACHE_HOME/bazaar"; + # ICEAUTHORITY = "$XDG_CACHE_HOME/ICEauthority"; + }; + + # Move ~/.Xauthority out of $HOME (setting XAUTHORITY early isn't enough) + #extraInit = '' + # export XAUTHORITY=/tmp/Xauthority + # [ -e ~/.Xauthority ] && mv -f ~/.Xauthority "$XAUTHORITY" + #''; + }; +} diff --git a/users/profiles/firefox/default.nix b/users/profiles/firefox/default.nix index 766c3a0b..f251415a 100644 --- a/users/profiles/firefox/default.nix +++ b/users/profiles/firefox/default.nix @@ -1,111 +1,115 @@ {pkgs, ... }: { - programs.browserpass.enable = true; - programs.browserpass.browsers = [ "firefox" ]; - #env.XDG_DEXSTOP_DIR = "$HOME/"; - programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css); - programs.firefox.profiles.anish.settings = { - "devtools.theme" = "dark"; - # Enable userContent.css and userChrome.css for our theme modules - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - # Stop creating ~/Downloads! - "browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this! - # Don't use the built-in password manager; a nixos user is more likely - # using an external one (you are using one, right?). - #"signon.rememberSignons" = false; - # Do not check if Firefox is the default browser - "browser.shell.checkDefaultBrowser" = false; - # Disable the "new tab page" feature and show a blank tab instead - # https://wiki.mozilla.org/Privacy/Reviews/New_Tab - # https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off - "browser.newtabpage.enabled" = false; - "browser.newtab.url" = "about:blank"; - # Disable Activity Stream - # https://wiki.mozilla.org/Firefox/Activity_Stream - "browser.newtabpage.activity-stream.enabled" = false; - # Disable new tab tile ads & preload - # http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox - # http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331 - # https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping - # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source - # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping - "browser.newtabpage.enhanced" = false; - "browser.newtab.preload" = false; - "browser.newtabpage.directory.ping" = ""; - "browser.newtabpage.directory.source" = "data:text/plain,{}"; - # Disable some not so useful functionality. - "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; - "extensions.htmlaboutaddons.recommendations.enabled" = false; - "extensions.htmlaboutaddons.discover.enabled" = false; - "extensions.pocket.enabled" = false; - "app.normandy.enabled" = false; - "app.normandy.api_url" = ""; - "extensions.shield-recipe-client.enabled" = false; - "app.shield.optoutstudies.enabled" = false; - # Disable battery API - # https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager - # https://bugzilla.mozilla.org/show_bug.cgi?id=1313580 - "dom.battery.enabled" = false; - # Disable "beacon" asynchronous HTTP transfers (used for analytics) - # https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon - "beacon.enabled" = false; - # Disable pinging URIs specified in HTML ping= attributes - # http://kb.mozillazine.org/Browser.send_pings - "browser.send_pings" = false; - # Disable gamepad API to prevent USB device enumeration - # https://www.w3.org/TR/gamepad/ - # https://trac.torproject.org/projects/tor/ticket/13023 - "dom.gamepad.enabled" = false; - # Don't try to guess domain names when entering an invalid domain name in URL bar - # http://www-archive.mozilla.org/docs/end-user/domain-guessing.html - "browser.fixup.alternate.enabled" = false; - # Disable telemetry - # https://wiki.mozilla.org/Platform/Features/Telemetry - # https://wiki.mozilla.org/Privacy/Reviews/Telemetry - # https://wiki.mozilla.org/Telemetry - # https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry - # https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715 - # https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry - # https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html - # https://wiki.mozilla.org/Telemetry/Experiments - # https://support.mozilla.org/en-US/questions/1197144 - # https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1 - "toolkit.telemetry.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.archive.enabled" = false; - "experiments.supported" = false; - "experiments.enabled" = false; - "experiments.manifest.uri" = ""; - # Disable health reports (basically more telemetry) - # https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf - # https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html - "datareporting.healthreport.uploadEnabled" = false; - "datareporting.healthreport.service.enabled" = false; - "datareporting.policy.dataSubmissionEnabled" = false; - }; - # Override? - #packages = with pkgs; [ - # firefox-bin - # (makeDesktopItem { - # name = "firefox-private"; - # desktopName = "Firefox (Private)"; - # genericName = "Open a private Firefox window"; - # icon = "firefox"; - # exec = "${firefox-bin}/bin/firefox --private-window"; - # categories = "Network"; - # }) - # ]; - home.file = let cfgPath = ".mozilla/firefox"; in { - "${cfgPath}/profiles.ini".text = '' - [Profile0] - Name=default - IsRelative=1 - Path=anish.default - Default=1 - [General] - StartWithLastProfile=1 - Version=2 - ''; + home-manager.users.anish = { + programs.browserpass.enable = true; + programs.browserpass.browsers = [ "firefox" ]; + #env.XDG_DEXSTOP_DIR = "$HOME/"; + programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css); + programs.firefox.profiles.anish.settings = { + "devtools.theme" = "dark"; + # Enable userContent.css and userChrome.css for our theme modules + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + # Stop creating ~/Downloads! + "browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this! + # Don't use the built-in password manager; a nixos user is more likely + # using an external one (you are using one, right?). + #"signon.rememberSignons" = false; + # Do not check if Firefox is the default browser + "browser.shell.checkDefaultBrowser" = false; + # Disable the "new tab page" feature and show a blank tab instead + # https://wiki.mozilla.org/Privacy/Reviews/New_Tab + # https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off + "browser.newtabpage.enabled" = false; + "browser.newtab.url" = "about:blank"; + # Disable Activity Stream + # https://wiki.mozilla.org/Firefox/Activity_Stream + "browser.newtabpage.activity-stream.enabled" = false; + # Disable new tab tile ads & preload + # http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox + # http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331 + # https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping + # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source + # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping + "browser.newtabpage.enhanced" = false; + "browser.newtab.preload" = false; + "browser.newtabpage.directory.ping" = ""; + "browser.newtabpage.directory.source" = "data:text/plain,{}"; + # Disable some not so useful functionality. + "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; + "extensions.htmlaboutaddons.recommendations.enabled" = false; + "extensions.htmlaboutaddons.discover.enabled" = false; + "extensions.pocket.enabled" = false; + "app.normandy.enabled" = false; + "app.normandy.api_url" = ""; + "extensions.shield-recipe-client.enabled" = false; + "app.shield.optoutstudies.enabled" = false; + # Disable battery API + # https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager + # https://bugzilla.mozilla.org/show_bug.cgi?id=1313580 + "dom.battery.enabled" = false; + # Disable "beacon" asynchronous HTTP transfers (used for analytics) + # https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon + "beacon.enabled" = false; + # Disable pinging URIs specified in HTML ping= attributes + # http://kb.mozillazine.org/Browser.send_pings + "browser.send_pings" = false; + # Disable gamepad API to prevent USB device enumeration + # https://www.w3.org/TR/gamepad/ + # https://trac.torproject.org/projects/tor/ticket/13023 + "dom.gamepad.enabled" = false; + # Don't try to guess domain names when entering an invalid domain name in URL bar + # http://www-archive.mozilla.org/docs/end-user/domain-guessing.html + "browser.fixup.alternate.enabled" = false; + # Disable telemetry + # https://wiki.mozilla.org/Platform/Features/Telemetry + # https://wiki.mozilla.org/Privacy/Reviews/Telemetry + # https://wiki.mozilla.org/Telemetry + # https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry + # https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715 + # https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry + # https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html + # https://wiki.mozilla.org/Telemetry/Experiments + # https://support.mozilla.org/en-US/questions/1197144 + # https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1 + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.archive.enabled" = false; + "experiments.supported" = false; + "experiments.enabled" = false; + "experiments.manifest.uri" = ""; + # Disable health reports (basically more telemetry) + # https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf + # https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html + "datareporting.healthreport.uploadEnabled" = false; + "datareporting.healthreport.service.enabled" = false; + "datareporting.policy.dataSubmissionEnabled" = false; + }; + + # Override? + home.packages = with pkgs; [ + firefox-bin + (makeDesktopItem { + name = "firefox-private"; + desktopName = "Firefox (Private)"; + genericName = "Open a private Firefox window"; + icon = "firefox"; + exec = "${firefox-bin}/bin/firefox --private-window"; + categories = "Network"; + }) + ]; + + home.file = let cfgPath = ".mozilla/firefox"; in { + "${cfgPath}/profiles.ini".text = '' + [Profile0] + Name=default + IsRelative=1 + Path=anish.default + Default=1 + [General] + StartWithLastProfile=1 + Version=2 + ''; + }; }; }