summaryrefslogtreecommitdiff
path: root/home-config/nix-home-manager
diff options
context:
space:
mode:
Diffstat (limited to 'home-config/nix-home-manager')
-rw-r--r--home-config/nix-home-manager/firefox-nightly/default.nix201
-rw-r--r--home-config/nix-home-manager/firefox-nightly/default.nixold206
-rw-r--r--home-config/nix-home-manager/firefox-nightly/policies.nix130
-rw-r--r--home-config/nix-home-manager/flake.lock160
-rw-r--r--home-config/nix-home-manager/flake.nix15
-rw-r--r--home-config/nix-home-manager/home.nix323
6 files changed, 701 insertions, 334 deletions
diff --git a/home-config/nix-home-manager/firefox-nightly/default.nix b/home-config/nix-home-manager/firefox-nightly/default.nix
new file mode 100644
index 0000000..d341348
--- /dev/null
+++ b/home-config/nix-home-manager/firefox-nightly/default.nix
@@ -0,0 +1,201 @@
1{ config, pkgs, mozff, ...}:
2
3let
4
5wrapped-ff-nightly = pkgs.wrapFirefox mozff.packages.${pkgs.system}.firefox-nightly-bin {
6 extraPolicies = import ./policies.nix;
7};
8
9in
10
11{
12 programs.firefox = {
13 enable = true;
14 package = mozff.packages.${pkgs.system}.firefox-nightly-bin;
15 policies = import ./policies.nix;
16
17 profiles.${config.home.username} = {
18 name = "${config.home.username}";
19 isDefault = true;
20 containersForce = true;
21 containers = {
22 rit = {
23 name = "RIT";
24 color = "orange";
25 icon = "dollar";
26 id = 1;
27 };
28 ritwork = {
29 name = "RIT Work";
30 color = "green";
31 icon = "briefcase";
32 id = 2;
33 };
34 other = {
35 name = "Other";
36 color = "blue";
37 icon = "fingerprint";
38 id = 3;
39 };
40 };
41 search = {
42 force = true;
43 default = "DuckDuckGo";
44 order = ["DuckDuckGo" "Google"];
45 engines = {
46 "Nix Packages" = {
47 urls = [
48 {
49 template = "https://search.nixos.org/packages";
50 params = [
51 {
52 name = "type";
53 value = "packages";
54 }
55 {
56 name = "channel";
57 value = "unstable";
58 }
59 {
60 name = "query";
61 value = "{searchTerms}";
62 }
63 ];
64 }
65 ];
66 icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
67 definedAliases = ["@np"];
68 };
69 };
70 };
71 userChrome = "
72#main-window .toolbar-items {
73overflow: hidden;
74transition: height 0.3s 0.3s !important;
75}
76/* Default state: Set initial height to enable animation */
77#main-window .toolbar-items { height: 3em !important; }
78#main-window .titlebar-button { height: 3em !important; }
79#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; }
80#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; }
81/* Hidden state: Hide native tabs strip */
82#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; }
83#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; }
84/* Hidden state: Fix z-index of active pinned tabs */
85#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; }
86
87/* Sidebery expand on mouse-over and hide otherwise */
88
89/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
90See the above repository for updates as well as full license text. */
91
92/* Show sidebar only when the cursor is over it */
93/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
94
95#sidebar-box{
96--uc-sidebar-width: 60px;
97--uc-sidebar-hover-width: 230px;
98--uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */
99--uc-autohide-transition-duration: 115ms;
100--uc-autohide-transition-type: linear;
101--browser-area-z-index-sidebar: 3;
102position: relative;
103 min-width: var(--uc-sidebar-width) !important;
104width: var(--uc-sidebar-width) !important;
105 max-width: var(--uc-sidebar-width) !important;
106 z-index: var(--browser-area-z-index-sidebar,3);
107}
108#sidebar-box[positionend]{ direction: rtl }
109#sidebar-box[positionend] > *{ direction: ltr }
110
111#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
112#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
113
114#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; }
115
116#sidebar-splitter{ display: none }
117
118#sidebar-header{
119overflow: hidden;
120color: var(--chrome-color, inherit) !important;
121 padding-inline: 0 !important;
122}
123
124#sidebar-header::before,
125#sidebar-header::after{
126content: \"\";
127display: flex;
128 padding-left: 8px;
129}
130
131#sidebar-header,
132#sidebar{
133transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
134 min-width: var(--uc-sidebar-width) !important;
135 will-change: min-width;
136}
137#sidebar-box:hover > #sidebar-header,
138#sidebar-box:hover > #sidebar{
139min-width: var(--uc-sidebar-hover-width) !important;
140transition-delay: 0ms !important;
141}
142
143.sidebar-panel{
144background-color: transparent !important;
145color: var(--newtab-text-primary-color) !important;
146}
147
148.sidebar-panel #search-box{
149-moz-appearance: none !important;
150background-color: rgba(249,249,250,0.1) !important;
151color: inherit !important;
152}
153
154/* Add sidebar divider and give it background */
155
156#sidebar,
157#sidebar-header{
158background-color: inherit !important;
159border-inline: 1px solid rgb(80,80,80);
160border-inline-width: 0px 1px;
161}
162
163#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
164#sidebar-box[positionend] > *{
165border-inline-width: 1px 0px;
166}
167
168/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
169
170#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
171inset-inline: auto 0px !important;
172}
173#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
174margin-inline: 0px !important;
175border-left-style: solid !important;
176}
177
178/* Remove the tabs label and move the Sidebary icon to the center of the box */
179#sidebar-box:hover [id=\"sidebar-icon\"] {
180transform: translateX(0px) !important;
181 transition-delay: 0ms !important;
182}
183
184#sidebar-box [id=\"sidebar-icon\"] {
185transform: translateX(9px);
186transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
187}
188
189#sidebar-box [id=\"sidebar-title\"] {
190visibility: hidden !important;
191transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
192}
193
194#sidebar-box:hover [id=\"sidebar-title\"] {
195visibility: visible !important;
196 transition-delay: 0ms !important;
197}
198";
199};
200};
201}
diff --git a/home-config/nix-home-manager/firefox-nightly/default.nixold b/home-config/nix-home-manager/firefox-nightly/default.nixold
new file mode 100644
index 0000000..543d57c
--- /dev/null
+++ b/home-config/nix-home-manager/firefox-nightly/default.nixold
@@ -0,0 +1,206 @@
1{ config, pkgs, ...}:
2
3let
4
5wrapped-ff-nightly = pkgs.latest.firefox-nightly-bin.firefox-bin-unwrapped.overrideAttrs (oldAttrs: rec {
6 policies = import ./policies.nix;
7 policiesJson = pkgs.writeText "firefox-policies.json" (builtins.toJSON { inherit policies; });
8 postFixup = ''
9 # See: https://github.com/mozilla/policy-templates/blob/master/README.md
10 mkdir -p "$out/lib/firefox/distribution"
11 ln -s ${policiesJson} "$out/lib/firefox-nightly-bin-${oldAttrs.version}/distribution/policies.json"
12 '';
13});
14
15in
16
17{
18 programs.firefox = {
19 enable = true;
20 package = wrapped-ff-nightly;
21
22 profiles.${config.home.username} = {
23 name = "${config.home.username}";
24 isDefault = true;
25 containersForce = true;
26 containers = {
27 rit = {
28 name = "RIT";
29 color = "orange";
30 icon = "dollar";
31 id = 1;
32 };
33 ritwork = {
34 name = "RIT Work";
35 color = "green";
36 icon = "briefcase";
37 id = 2;
38 };
39 other = {
40 name = "Other";
41 color = "blue";
42 icon = "fingerprint";
43 id = 3;
44 };
45 };
46 search = {
47 force = true;
48 default = "DuckDuckGo";
49 order = ["DuckDuckGo" "Google"];
50 engines = {
51 "Nix Packages" = {
52 urls = [
53 {
54 template = "https://search.nixos.org/packages";
55 params = [
56 {
57 name = "type";
58 value = "packages";
59 }
60 {
61 name = "channel";
62 value = "unstable";
63 }
64 {
65 name = "query";
66 value = "{searchTerms}";
67 }
68 ];
69 }
70 ];
71 icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
72 definedAliases = ["@np"];
73 };
74 };
75 };
76 userChrome = "
77#main-window .toolbar-items {
78overflow: hidden;
79transition: height 0.3s 0.3s !important;
80}
81/* Default state: Set initial height to enable animation */
82#main-window .toolbar-items { height: 3em !important; }
83#main-window .titlebar-button { height: 3em !important; }
84#main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; }
85#main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; }
86/* Hidden state: Hide native tabs strip */
87#main-window[titlepreface*=\"\"] .toolbar-items { height: 0 !important; }
88#main-window[titlepreface*=\"\"] .titlebar-button { height: 0 !important; }
89/* Hidden state: Fix z-index of active pinned tabs */
90#main-window[titlepreface*=\"\"] #tabbrowser-tabs { z-index: 0 !important; }
91
92/* Sidebery expand on mouse-over and hide otherwise */
93
94/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
95See the above repository for updates as well as full license text. */
96
97/* Show sidebar only when the cursor is over it */
98/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
99
100#sidebar-box{
101--uc-sidebar-width: 60px;
102--uc-sidebar-hover-width: 230px;
103--uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */
104--uc-autohide-transition-duration: 115ms;
105--uc-autohide-transition-type: linear;
106--browser-area-z-index-sidebar: 3;
107position: relative;
108 min-width: var(--uc-sidebar-width) !important;
109width: var(--uc-sidebar-width) !important;
110 max-width: var(--uc-sidebar-width) !important;
111 z-index: var(--browser-area-z-index-sidebar,3);
112}
113#sidebar-box[positionend]{ direction: rtl }
114#sidebar-box[positionend] > *{ direction: ltr }
115
116#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
117#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
118
119#main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; }
120
121#sidebar-splitter{ display: none }
122
123#sidebar-header{
124overflow: hidden;
125color: var(--chrome-color, inherit) !important;
126 padding-inline: 0 !important;
127}
128
129#sidebar-header::before,
130#sidebar-header::after{
131content: \"\";
132display: flex;
133 padding-left: 8px;
134}
135
136#sidebar-header,
137#sidebar{
138transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
139 min-width: var(--uc-sidebar-width) !important;
140 will-change: min-width;
141}
142#sidebar-box:hover > #sidebar-header,
143#sidebar-box:hover > #sidebar{
144min-width: var(--uc-sidebar-hover-width) !important;
145transition-delay: 0ms !important;
146}
147
148.sidebar-panel{
149background-color: transparent !important;
150color: var(--newtab-text-primary-color) !important;
151}
152
153.sidebar-panel #search-box{
154-moz-appearance: none !important;
155background-color: rgba(249,249,250,0.1) !important;
156color: inherit !important;
157}
158
159/* Add sidebar divider and give it background */
160
161#sidebar,
162#sidebar-header{
163background-color: inherit !important;
164border-inline: 1px solid rgb(80,80,80);
165border-inline-width: 0px 1px;
166}
167
168#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
169#sidebar-box[positionend] > *{
170border-inline-width: 1px 0px;
171}
172
173/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
174
175#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
176inset-inline: auto 0px !important;
177}
178#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
179margin-inline: 0px !important;
180border-left-style: solid !important;
181}
182
183/* Remove the tabs label and move the Sidebary icon to the center of the box */
184#sidebar-box:hover [id=\"sidebar-icon\"] {
185transform: translateX(0px) !important;
186 transition-delay: 0ms !important;
187}
188
189#sidebar-box [id=\"sidebar-icon\"] {
190transform: translateX(9px);
191transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
192}
193
194#sidebar-box [id=\"sidebar-title\"] {
195visibility: hidden !important;
196transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
197}
198
199#sidebar-box:hover [id=\"sidebar-title\"] {
200visibility: visible !important;
201 transition-delay: 0ms !important;
202}
203";
204};
205};
206}
diff --git a/home-config/nix-home-manager/firefox-nightly/policies.nix b/home-config/nix-home-manager/firefox-nightly/policies.nix
new file mode 100644
index 0000000..136b8b9
--- /dev/null
+++ b/home-config/nix-home-manager/firefox-nightly/policies.nix
@@ -0,0 +1,130 @@
1let
2 lock-false = {
3 Value = false;
4 Status = "locked";
5 };
6 lock-true = {
7 Value = true;
8 Status = "locked";
9 };
10in
11{
12
13EnableTrackingProtection = {
14 Value = true;
15 Locked = true;
16 Cryptomining = true;
17 Fingerprinting = true;
18 EmailTracking = true;
19};
20UserMessaging = {
21 WhatsNew = false;
22 ExtensionRecommendations = false;
23 FeatureRecommendations = false;
24 UrlbarInterventions = false;
25 SkipOnboarding = true;
26 MoreFromMozilla = false;
27 Labs = false;
28 Locked = true;
29};
30DisableAppUpdate = true;
31DisableAccounts = true;
32DisableFirefoxAccounts = true;
33DisableFirefoxStudies = true;
34DisablePocket = true;
35DisableTelemetry = true;
36AutofillAddressEnabled = false;
37AutofillCreditCardEnabled = false;
38DisableMasterPasswordCreation = true;
39PasswordManagerEnabled = false;
40PrimaryPassword = false;
41OfferToSaveLogins = false;
42NoDefaultBookmarks = true;
43OverrideFirstRunPage = "";
44OverridePostUpdatePage = "";
45FirefoxHome = {
46 Search = true;
47 TopSites = true;
48 SponsoredTopSites = false;
49 Highlights = false;
50 Pocket = false;
51 SponsoredPocket = false;
52 Snippets = false;
53 Locked = true;
54};
55SearchSuggestEnabled = true;
56FirefoxSuggest = {
57 WebSuggestions = true;
58 SponsoredSuggestions = false;
59 ImproveSuggest = false;
60 Locked = true;
61};
62PictureInPicture = lock-true;
63HardwareAcceleration = true;
64Certificates = {
65 ImportEnterpriseRoots = true;
66};
67ExtensionSettings = {
68#"*".installation_mode = "blocked";
69# uBlock Origin
70 "uBlock0@raymondhill.net" = {
71 install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
72 installation_mode = "force_installed";
73 };
74# Bitwarden
75 "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
76 install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
77 installation_mode = "normal_installed";
78 };
79# SponsorBlock
80 "sponsorBlocker@ajay.app" = {
81 install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
82 installation_mode = "force_installed";
83 };
84# DeArrow
85 "deArrow@ajay.app" = {
86 install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi";
87 installation_mode = "force_installed";
88 };
89# Return Youtube Dislike
90 "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = {
91 install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi";
92 installation_mode = "force_installed";
93 };
94# Youtube Nonstop
95 "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = {
96 install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi";
97 installation_mode = "force_installed";
98 };
99# Sidebery
100 "{3c078156-979c-498b-8990-85f7987dd929}" = {
101 install_url = "https://addons.mozilla.org/firefox/downloads/latest/sidebery/latest.xpi";
102 installation_mode = "normal_installed";
103 };
104# TamperMonkey
105 "firefox@tampermonkey.net" = {
106 install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi";
107 installation_mode = "force_installed";
108 };
109# Floccus
110 "floccus@handmadeideas.org" = {
111 install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi";
112 installation_mode = "force_installed";
113 };
114};
115Preferences = {
116 "browser.startup.homepage" = "https://d.in.rschanz.org";
117 "extensions.activeThemeID" = {
118 Value = "firefox-compact-dark@mozilla.org";
119 Status = "locked";
120 };
121 "toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true;
122 "xpinstall.whitelist.required" = lock-true;
123 "dom.webgpu.enabled" = lock-true;
124 "media.eme.enabled" = lock-true;
125 "general.autoScroll" = lock-true;
126 "general.smoothScroll" = lock-true;
127 "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false;
128 "browser.aboutConfig.showWarning" = lock-false;
129};
130}
diff --git a/home-config/nix-home-manager/flake.lock b/home-config/nix-home-manager/flake.lock
index 9d258f0..9316edc 100644
--- a/home-config/nix-home-manager/flake.lock
+++ b/home-config/nix-home-manager/flake.lock
@@ -33,6 +33,22 @@
33 "type": "github" 33 "type": "github"
34 } 34 }
35 }, 35 },
36 "cachix": {
37 "locked": {
38 "lastModified": 1635350005,
39 "narHash": "sha256-tAMJnUwfaDEB2aa31jGcu7R7bzGELM9noc91L2PbVjg=",
40 "owner": "nixos",
41 "repo": "nixpkgs",
42 "rev": "1c1f5649bb9c1b0d98637c8c365228f57126f361",
43 "type": "github"
44 },
45 "original": {
46 "owner": "nixos",
47 "ref": "nixos-20.09",
48 "repo": "nixpkgs",
49 "type": "github"
50 }
51 },
36 "flake-compat": { 52 "flake-compat": {
37 "flake": false, 53 "flake": false,
38 "locked": { 54 "locked": {
@@ -49,7 +65,40 @@
49 "type": "github" 65 "type": "github"
50 } 66 }
51 }, 67 },
68 "flake-compat_2": {
69 "locked": {
70 "lastModified": 1717312683,
71 "narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
72 "owner": "nix-community",
73 "repo": "flake-compat",
74 "rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
75 "type": "github"
76 },
77 "original": {
78 "owner": "nix-community",
79 "repo": "flake-compat",
80 "type": "github"
81 }
82 },
52 "flake-utils": { 83 "flake-utils": {
84 "inputs": {
85 "systems": "systems_4"
86 },
87 "locked": {
88 "lastModified": 1731533236,
89 "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
90 "owner": "numtide",
91 "repo": "flake-utils",
92 "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
93 "type": "github"
94 },
95 "original": {
96 "owner": "numtide",
97 "repo": "flake-utils",
98 "type": "github"
99 }
100 },
101 "flake-utils_2": {
53 "locked": { 102 "locked": {
54 "lastModified": 1659877975, 103 "lastModified": 1659877975,
55 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", 104 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
@@ -93,17 +142,17 @@
93 ] 142 ]
94 }, 143 },
95 "locked": { 144 "locked": {
96 "lastModified": 1736785676, 145 "lastModified": 1740579671,
97 "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", 146 "narHash": "sha256-Dwt/3KknOQ4bgFG5YjqDT7oWRy27rPpDjAi2P0ok1zw=",
98 "owner": "nix-community", 147 "owner": "nix-community",
99 "repo": "home-manager", 148 "repo": "home-manager",
100 "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", 149 "rev": "53c587d263f94aaf6a281745923c76bbec62bcf3",
101 "type": "github" 150 "type": "github"
102 }, 151 },
103 "original": { 152 "original": {
104 "owner": "nix-community", 153 "owner": "nix-community",
105 "repo": "home-manager", 154 "repo": "home-manager",
106 "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", 155 "rev": "53c587d263f94aaf6a281745923c76bbec62bcf3",
107 "type": "github" 156 "type": "github"
108 } 157 }
109 }, 158 },
@@ -538,9 +587,69 @@
538 "type": "github" 587 "type": "github"
539 } 588 }
540 }, 589 },
541 "nixgl": { 590 "lib-aggregate": {
542 "inputs": { 591 "inputs": {
543 "flake-utils": "flake-utils", 592 "flake-utils": "flake-utils",
593 "nixpkgs-lib": "nixpkgs-lib"
594 },
595 "locked": {
596 "lastModified": 1740312740,
597 "narHash": "sha256-z3M+zR18jGF1IIJ7Fp9LVOkEIUBhtY+65TSNq/DbgzQ=",
598 "owner": "nix-community",
599 "repo": "lib-aggregate",
600 "rev": "1229db6582e2ee6337d6fbc4c3c59f2ef0b6d481",
601 "type": "github"
602 },
603 "original": {
604 "owner": "nix-community",
605 "repo": "lib-aggregate",
606 "type": "github"
607 }
608 },
609 "mozff": {
610 "inputs": {
611 "cachix": "cachix",
612 "flake-compat": "flake-compat_2",
613 "lib-aggregate": "lib-aggregate",
614 "mozilla": "mozilla",
615 "nixpkgs": [
616 "nixpkgs"
617 ]
618 },
619 "locked": {
620 "lastModified": 1740573223,
621 "narHash": "sha256-OVysWIAwSvjCabd5F3QAyNXjU7bcNQ/zNve6YS5mZh4=",
622 "owner": "nix-community",
623 "repo": "flake-firefox-nightly",
624 "rev": "3391372604cd3def19e6df88a51f1882aabcd59f",
625 "type": "github"
626 },
627 "original": {
628 "owner": "nix-community",
629 "repo": "flake-firefox-nightly",
630 "rev": "3391372604cd3def19e6df88a51f1882aabcd59f",
631 "type": "github"
632 }
633 },
634 "mozilla": {
635 "flake": false,
636 "locked": {
637 "lastModified": 1736765918,
638 "narHash": "sha256-oh7GSCjBGHpxaU8/gejT55mlvI3qoKObXgqyn1XR7SA=",
639 "owner": "mozilla",
640 "repo": "nixpkgs-mozilla",
641 "rev": "534ee26d3dbcbb9da3766c556638b9bcc3627871",
642 "type": "github"
643 },
644 "original": {
645 "owner": "mozilla",
646 "repo": "nixpkgs-mozilla",
647 "type": "github"
648 }
649 },
650 "nixgl": {
651 "inputs": {
652 "flake-utils": "flake-utils_2",
544 "nixpkgs": [ 653 "nixpkgs": [
545 "nixpkgs" 654 "nixpkgs"
546 ] 655 ]
@@ -562,17 +671,32 @@
562 }, 671 },
563 "nixpkgs": { 672 "nixpkgs": {
564 "locked": { 673 "locked": {
565 "lastModified": 1736012469, 674 "lastModified": 1739736696,
566 "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", 675 "narHash": "sha256-zON2GNBkzsIyALlOCFiEBcIjI4w38GYOb+P+R4S8Jsw=",
567 "owner": "nixos", 676 "owner": "nixos",
568 "repo": "nixpkgs", 677 "repo": "nixpkgs",
569 "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", 678 "rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f",
570 "type": "github" 679 "type": "github"
571 }, 680 },
572 "original": { 681 "original": {
573 "owner": "nixos", 682 "owner": "nixos",
574 "repo": "nixpkgs", 683 "repo": "nixpkgs",
575 "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", 684 "rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f",
685 "type": "github"
686 }
687 },
688 "nixpkgs-lib": {
689 "locked": {
690 "lastModified": 1740272720,
691 "narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=",
692 "owner": "nix-community",
693 "repo": "nixpkgs.lib",
694 "rev": "3d8ac19b63cf9d8305eed7301e4e83ff4ce9f495",
695 "type": "github"
696 },
697 "original": {
698 "owner": "nix-community",
699 "repo": "nixpkgs.lib",
576 "type": "github" 700 "type": "github"
577 } 701 }
578 }, 702 },
@@ -605,6 +729,7 @@
605 "hyprland": "hyprland", 729 "hyprland": "hyprland",
606 "hyprlock": "hyprlock", 730 "hyprlock": "hyprlock",
607 "hyprpicker-git": "hyprpicker-git", 731 "hyprpicker-git": "hyprpicker-git",
732 "mozff": "mozff",
608 "nixgl": "nixgl", 733 "nixgl": "nixgl",
609 "nixpkgs": "nixpkgs", 734 "nixpkgs": "nixpkgs",
610 "wpaperd": "wpaperd" 735 "wpaperd": "wpaperd"
@@ -678,6 +803,21 @@
678 }, 803 },
679 "systems_4": { 804 "systems_4": {
680 "locked": { 805 "locked": {
806 "lastModified": 1681028828,
807 "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
808 "owner": "nix-systems",
809 "repo": "default",
810 "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
811 "type": "github"
812 },
813 "original": {
814 "owner": "nix-systems",
815 "repo": "default",
816 "type": "github"
817 }
818 },
819 "systems_5": {
820 "locked": {
681 "lastModified": 1689347949, 821 "lastModified": 1689347949,
682 "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", 822 "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
683 "owner": "nix-systems", 823 "owner": "nix-systems",
@@ -697,7 +837,7 @@
697 "nixpkgs" 837 "nixpkgs"
698 ], 838 ],
699 "rust-overlay": "rust-overlay", 839 "rust-overlay": "rust-overlay",
700 "systems": "systems_4" 840 "systems": "systems_5"
701 }, 841 },
702 "locked": { 842 "locked": {
703 "lastModified": 1734445299, 843 "lastModified": 1734445299,
diff --git a/home-config/nix-home-manager/flake.nix b/home-config/nix-home-manager/flake.nix
index 23bdb13..b680ab9 100644
--- a/home-config/nix-home-manager/flake.nix
+++ b/home-config/nix-home-manager/flake.nix
@@ -3,9 +3,9 @@
3 3
4 inputs = { 4 inputs = {
5 # Specify the source of Home Manager and Nixpkgs. 5 # Specify the source of Home Manager and Nixpkgs.
6 nixpkgs.url = "github:nixos/nixpkgs/8f3e1f807051e32d8c95cd12b9b421623850a34d"; 6 nixpkgs.url = "github:nixos/nixpkgs/d74a2335ac9c133d6bbec9fc98d91a77f1604c1f";
7 home-manager = { 7 home-manager = {
8 url = "github:nix-community/home-manager/fc52a210b60f2f52c74eac41a8647c1573d2071d"; 8 url = "github:nix-community/home-manager/53c587d263f94aaf6a281745923c76bbec62bcf3";
9 inputs.nixpkgs.follows = "nixpkgs"; 9 inputs.nixpkgs.follows = "nixpkgs";
10 }; 10 };
11 hyprlock = { 11 hyprlock = {
@@ -29,16 +29,18 @@
29 url = "github:danyspin97/wpaperd/b0b7e66fd32dca36c431a174784a2e87af7edb77"; 29 url = "github:danyspin97/wpaperd/b0b7e66fd32dca36c431a174784a2e87af7edb77";
30 inputs.nixpkgs.follows = "nixpkgs"; 30 inputs.nixpkgs.follows = "nixpkgs";
31 }; 31 };
32 #mozff.url = "github:mozilla/nixpkgs-mozilla"; 32 mozff = {
33 url = "github:nix-community/flake-firefox-nightly/3391372604cd3def19e6df88a51f1882aabcd59f";
34 inputs.nixpkgs.follows = "nixpkgs";
35 };
33 }; 36 };
34 37
35 outputs = { nixpkgs, home-manager, hyprland, nixgl, wpaperd, hyprpicker-git, hyprlock, ... }@inputs: 38 outputs = { nixpkgs, home-manager, hyprland, nixgl, wpaperd, hyprpicker-git, hyprlock, mozff, ... }@inputs:
36 let 39 let
37 system = "x86_64-linux"; 40 system = "x86_64-linux";
38 pkgs = nixpkgs.legacyPackages.${system}; 41 pkgs = nixpkgs.legacyPackages.${system};
39 overlays = [ 42 overlays = [
40 nixgl.overlay 43 #nixgl.overlay
41 #mozff.overlays.firefox
42 ]; 44 ];
43 in { 45 in {
44 homeConfigurations."ryan" = home-manager.lib.homeManagerConfiguration { 46 homeConfigurations."ryan" = home-manager.lib.homeManagerConfiguration {
@@ -56,6 +58,7 @@
56 inherit wpaperd; 58 inherit wpaperd;
57 inherit hyprlock; 59 inherit hyprlock;
58 inherit hyprpicker-git; 60 inherit hyprpicker-git;
61 inherit mozff;
59 }; 62 };
60 } 63 }
61 ]; 64 ];
diff --git a/home-config/nix-home-manager/home.nix b/home-config/nix-home-manager/home.nix
index d7089dc..4c72beb 100644
--- a/home-config/nix-home-manager/home.nix
+++ b/home-config/nix-home-manager/home.nix
@@ -1,15 +1,9 @@
1{ config, pkgs, hyprland, nixgl, wpaperd, hyprpicker-git, hyprlock, ... }: 1{ config, pkgs, hyprland, nixgl, wpaperd, hyprpicker-git, hyprlock, mozff, ... }:
2 let 2
3 lock-false = {
4 Value = false;
5 Status = "locked";
6 };
7 lock-true = {
8 Value = true;
9 Status = "locked";
10 };
11 in
12{ 3{
4 imports = [
5 ./firefox-nightly/default.nix
6 ];
13 # Home Manager needs a bit of information about you and the paths it should 7 # Home Manager needs a bit of information about you and the paths it should
14 # manage. 8 # manage.
15 home.username = "ryan"; 9 home.username = "ryan";
@@ -40,313 +34,6 @@
40 34
41 # wayland.windowManager.hyprland.enable = true; 35 # wayland.windowManager.hyprland.enable = true;
42 36
43 # Install firefox and add some customizations
44 programs.firefox = {
45 enable = true;
46 policies = {
47 EnableTrackingProtection = {
48 Value = true;
49 Locked = true;
50 Cryptomining = true;
51 Fingerprinting = true;
52 EmailTracking = true;
53 };
54 UserMessaging = {
55 WhatsNew = false;
56 ExtensionRecommendations = false;
57 FeatureRecommendations = false;
58 UrlbarInterventions = false;
59 SkipOnboarding = true;
60 MoreFromMozilla = false;
61 Labs = false;
62 Locked = true;
63 };
64 DisableAppUpdate = true;
65 DisableAccounts = true;
66 DisableFirefoxAccounts = true;
67 DisableFirefoxStudies = true;
68 DisablePocket = true;
69 DisableTelemetry = true;
70 AutofillAddressEnabled = false;
71 AutofillCreditCardEnabled = false;
72 DisableMasterPasswordCreation = true;
73 PasswordManagerEnabled = false;
74 PrimaryPassword = false;
75 OfferToSaveLogins = false;
76 NoDefaultBookmarks = true;
77 OverrideFirstRunPage = "";
78 OverridePostUpdatePage = "";
79 FirefoxHome = {
80 Search = true;
81 TopSites = true;
82 SponsoredTopSites = false;
83 Highlights = false;
84 Pocket = false;
85 SponsoredPocket = false;
86 Snippets = false;
87 Locked = true;
88 };
89 SearchSuggestEnabled = true;
90 FirefoxSuggest = {
91 WebSuggestions = true;
92 SponsoredSuggestions = false;
93 ImproveSuggest = false;
94 Locked = true;
95 };
96 PictureInPicture = lock-true;
97 HardwareAcceleration = true;
98 Certificates = {
99 ImportEnterpriseRoots = true;
100 };
101 ExtensionSettings = {
102 #"*".installation_mode = "blocked";
103 # uBlock Origin
104 "uBlock0@raymondhill.net" = {
105 install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
106 installation_mode = "force_installed";
107 };
108 # Bitwarden
109 "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
110 install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
111 installation_mode = "normal_installed";
112 };
113 # SponsorBlock
114 "sponsorBlocker@ajay.app" = {
115 install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
116 installation_mode = "force_installed";
117 };
118 # DeArrow
119 "deArrow@ajay.app" = {
120 install_url = "https://addons.mozilla.org/firefox/downloads/latest/dearrow/latest.xpi";
121 installation_mode = "force_installed";
122 };
123 # Return Youtube Dislike
124 "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = {
125 install_url = "https://addons.mozilla.org/firefox/downloads/latest/return-youtube-dislikes/latest.xpi";
126 installation_mode = "force_installed";
127 };
128 # Youtube Nonstop
129 "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" = {
130 install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-nonstop/latest.xpi";
131 installation_mode = "force_installed";
132 };
133 # Sidebery
134 "{3c078156-979c-498b-8990-85f7987dd929}" = {
135 install_url = "https://addons.mozilla.org/firefox/downloads/latest/sidebery/latest.xpi";
136 installation_mode = "normal_installed";
137 };
138 # TamperMonkey
139 "firefox@tampermonkey.net" = {
140 install_url = "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi";
141 installation_mode = "force_installed";
142 };
143 # Floccus
144 "floccus@handmadeideas.org" = {
145 install_url = "https://addons.mozilla.org/firefox/downloads/latest/floccus/latest.xpi";
146 installation_mode = "force_installed";
147 };
148 };
149 Preferences = {
150 "browser.startup.homepage" = "https://d.in.rschanz.org";
151 "extensions.activeThemeID" = {
152 Value = "firefox-compact-dark@mozilla.org";
153 Status = "locked";
154 };
155 "toolkit.legacyUserProfileCustomizations.stylesheets" = lock-true;
156 "xpinstall.whitelist.required" = lock-true;
157 "dom.webgpu.enabled" = lock-true;
158 "media.eme.enabled" = lock-true;
159 "general.autoScroll" = lock-true;
160 "general.smoothScroll" = lock-true;
161 "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false;
162 "browser.aboutConfig.showWarning" = lock-false;
163 };
164 };
165 profiles.${config.home.username} = {
166 name = "${config.home.username}";
167 isDefault = true;
168 containersForce = true;
169 containers = {
170 rit = {
171 name = "RIT";
172 color = "orange";
173 icon = "dollar";
174 id = 1;
175 };
176 ritwork = {
177 name = "RIT Work";
178 color = "green";
179 icon = "briefcase";
180 id = 2;
181 };
182 other = {
183 name = "Other";
184 color = "blue";
185 icon = "fingerprint";
186 id = 3;
187 };
188 };
189 search = {
190 force = true;
191 default = "DuckDuckGo";
192 order = ["DuckDuckGo" "Google"];
193 engines = {
194 "Nix Packages" = {
195 urls = [
196 {
197 template = "https://search.nixos.org/packages";
198 params = [
199 {
200 name = "type";
201 value = "packages";
202 }
203 {
204 name = "channel";
205 value = "unstable";
206 }
207 {
208 name = "query";
209 value = "{searchTerms}";
210 }
211 ];
212 }
213 ];
214 icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
215 definedAliases = ["@np"];
216 };
217 };
218 };
219 userChrome = "
220 #main-window .toolbar-items {
221 overflow: hidden;
222 transition: height 0.3s 0.3s !important;
223 }
224 /* Default state: Set initial height to enable animation */
225 #main-window .toolbar-items { height: 3em !important; }
226 #main-window .titlebar-button { height: 3em !important; }
227 #main-window[uidensity=\"touch\"] .toolbar-items { height: 3.35em !important; }
228 #main-window[uidensity=\"compact\"] .toolbar-items { height: 2.7em !important; }
229 /* Hidden state: Hide native tabs strip */
230 #main-window[titlepreface*=\"​\"] .toolbar-items { height: 0 !important; }
231 #main-window[titlepreface*=\"​\"] .titlebar-button { height: 0 !important; }
232 /* Hidden state: Fix z-index of active pinned tabs */
233 #main-window[titlepreface*=\"​\"] #tabbrowser-tabs { z-index: 0 !important; }
234
235 /* Sidebery expand on mouse-over and hide otherwise */
236
237 /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
238 See the above repository for updates as well as full license text. */
239
240 /* Show sidebar only when the cursor is over it */
241 /* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
242
243 #sidebar-box{
244 --uc-sidebar-width: 60px;
245 --uc-sidebar-hover-width: 230px;
246 --uc-autohide-sidebar-delay: 200ms; /* Wait 0.2s before hiding sidebar */
247 --uc-autohide-transition-duration: 115ms;
248 --uc-autohide-transition-type: linear;
249 --browser-area-z-index-sidebar: 3;
250 position: relative;
251 min-width: var(--uc-sidebar-width) !important;
252 width: var(--uc-sidebar-width) !important;
253 max-width: var(--uc-sidebar-width) !important;
254 z-index: var(--browser-area-z-index-sidebar,3);
255 }
256 #sidebar-box[positionend]{ direction: rtl }
257 #sidebar-box[positionend] > *{ direction: ltr }
258
259 #sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
260 #sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
261
262 #main-window[sizemode=\"fullscreen\"] #sidebar-box{ --uc-sidebar-width: 1px; }
263
264 #sidebar-splitter{ display: none }
265
266 #sidebar-header{
267 overflow: hidden;
268 color: var(--chrome-color, inherit) !important;
269 padding-inline: 0 !important;
270 }
271
272 #sidebar-header::before,
273 #sidebar-header::after{
274 content: \"\";
275 display: flex;
276 padding-left: 8px;
277 }
278
279 #sidebar-header,
280 #sidebar{
281 transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
282 min-width: var(--uc-sidebar-width) !important;
283 will-change: min-width;
284 }
285 #sidebar-box:hover > #sidebar-header,
286 #sidebar-box:hover > #sidebar{
287 min-width: var(--uc-sidebar-hover-width) !important;
288 transition-delay: 0ms !important;
289 }
290
291 .sidebar-panel{
292 background-color: transparent !important;
293 color: var(--newtab-text-primary-color) !important;
294 }
295
296 .sidebar-panel #search-box{
297 -moz-appearance: none !important;
298 background-color: rgba(249,249,250,0.1) !important;
299 color: inherit !important;
300 }
301
302 /* Add sidebar divider and give it background */
303
304 #sidebar,
305 #sidebar-header{
306 background-color: inherit !important;
307 border-inline: 1px solid rgb(80,80,80);
308 border-inline-width: 0px 1px;
309 }
310
311 #sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
312 #sidebar-box[positionend] > *{
313 border-inline-width: 1px 0px;
314 }
315
316 /* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
317
318 #sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
319 inset-inline: auto 0px !important;
320 }
321 #sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
322 margin-inline: 0px !important;
323 border-left-style: solid !important;
324 }
325
326 /* Remove the tabs label and move the Sidebary icon to the center of the box */
327 #sidebar-box:hover [id=\"sidebar-icon\"] {
328 transform: translateX(0px) !important;
329 transition-delay: 0ms !important;
330 }
331
332 #sidebar-box [id=\"sidebar-icon\"] {
333 transform: translateX(9px);
334 transition: transform var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
335 }
336
337 #sidebar-box [id=\"sidebar-title\"] {
338 visibility: hidden !important;
339 transition: visibility var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
340 }
341
342 #sidebar-box:hover [id=\"sidebar-title\"] {
343 visibility: visible !important;
344 transition-delay: 0ms !important;
345 }
346 ";
347 };
348};
349
350 programs.starship = { 37 programs.starship = {
351 enable = true; 38 enable = true;
352 settings = { 39 settings = {