summaryrefslogtreecommitdiff
path: root/home-manager/firefox.nix
blob: 811b811d340ddbf99b60eceb269342d3502d3c33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{ config, lib, pkgs, ... }: let
	cfg = config.programs.firefox;
	search = {
		engines = {
			"Timmy Search" = {
				urls = [{
					template = "https://search.tjkeller.xyz/search";
					params = [ { name = "q"; value = "{searchTerms}"; } ];
				}];
				iconURI = "https://search.tjkeller.xyz/static/themes/simple/img/favicon.svg";  # TODO doesn't seem to work
			};
			"Nix Packages" = {
				urls = [{
					template = "https://search.nixos.org/packages";
					params = [ { name = "query"; value = "{searchTerms}"; } ];
				}];
				icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
				definedAliases = [ "@np" ];
			};
			"NixOS Options" = {
				urls = [{
					template = "https://search.nixos.org/options";
					params = [ { name = "query"; value = "{searchTerms}"; } ];
				}];
				icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
				definedAliases = [ "@no" ];
			};
		};
		default = "Timmy Search";
		privateDefault = "Timmy Search";
		force = true;  # Overwrite old
	};
	userChrome = builtins.readFile ./resources/firefox/userChrome.css;
	arkenfox = {
		enable = true;
		enableAllSections = true;
		"0100"."0102"."browser.startup.page".value = 3;  # 0=blank, 1=home, 2=last visited page, 3=resume previous session
		"0100"."0103"."browser.startup.homepage".enable = false;
		"0100"."0104"."browser.newtabpage.enabled".enable = false;
		#"2800"."2811"."privacy.clearOnShutdown.history".enable = false;
	};
	settings = {
		"browser.compactmode.show" = true;
		"browser.uiCustomization.state" = builtins.readFile ./resources/firefox/uiCustomization.json;  # Toolbar etc.
		"browser.uidensity" = 1;  # Compact
		"toolkit.legacyUserProfileCustomizations.stylesheets" = true;  # userchrome

		"app.normandy.first_run" = false;
		"browser.aboutConfig.showWarning" = false;  # arkenfox does
		#"browser.download.dir" = userDetails.userDirs.downloads;
		"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
		"browser.newtabpage.activity-stream.feeds.topsites" = false;
		"browser.urlbar.suggest.topsites" = false;
		"devtools.toolbox.host" = "window";
		"dom.push.enabled" = false;  #
		"extensions.pocket.enabled" = false;
		"general.smoothScroll" = false;
	};
	workSettings = settings // {
		"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";  # Use builtin dark theme instead of system theme
	};
in {
	options.programs.firefox = {
		_configure = lib.mkEnableOption "configure firefox profiles";
	};

	config = lib.mkIf cfg._configure {
		programs.firefox = {
			enable = lib.mkDefault true;
			arkenfox.enable = lib.mkDefault true;
			profiles = {
				Personal = {
					id = 0;
					isDefault = true;
					inherit search;
					inherit userChrome;
					inherit arkenfox;
					inherit settings;
				};
				Work = {
					id = 1;
					inherit search;
					inherit userChrome;
					inherit arkenfox;
					settings = workSettings;
				};
			};
		};
	};
}