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
+ '';
+ };
};
}