summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/home-manager/personal/profiles.nix43
-rw-r--r--modules/home-manager/personal/programs/firefox/default.nix267
-rw-r--r--modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css6
-rw-r--r--modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css17
4 files changed, 65 insertions, 268 deletions
diff --git a/modules/home-manager/personal/profiles.nix b/modules/home-manager/personal/profiles.nix
index 8baca50..3a6c639 100644
--- a/modules/home-manager/personal/profiles.nix
+++ b/modules/home-manager/personal/profiles.nix
@@ -37,48 +37,7 @@ in
transmission_4-gtk
vlc
];
- personal = {
- gui.enable = lib.mkForce true;
- firefox.webapps = [
- {
- name = "Netflix";
- genericName = "Streaming service";
- icon = "${pkgs.personal.static.icons.netflix}";
- comment = "Unlimited movies, TV shows, and more.";
- url = "https://www.netflix.com/fr-en/login";
- categories = [
- "AudioVideo"
- "Video"
- "Player"
- ];
- }
- {
- name = "MUBI";
- genericName = "Streaming service";
- icon = "${pkgs.personal.static.icons.mubi}";
- comment = "Watch hand-picked cinema.";
- url = "https://mubi.com";
- categories = [
- "AudioVideo"
- "Video"
- "Player"
- ];
- }
- {
- name = "Deezer";
- genericName = "Streaming service";
- icon = "${pkgs.personal.static.icons.deezer}";
- comment = "Listen to music online";
- url = "https://deezer.com/login";
- categories = [
- "AudioVideo"
- "Audio"
- "Player"
- "Music"
- ];
- }
- ];
- };
+ personal.gui.enable = lib.mkForce true;
})
(lib.mkIf cfg.social {
diff --git a/modules/home-manager/personal/programs/firefox/default.nix b/modules/home-manager/personal/programs/firefox/default.nix
index 885b22a..46aaca1 100644
--- a/modules/home-manager/personal/programs/firefox/default.nix
+++ b/modules/home-manager/personal/programs/firefox/default.nix
@@ -6,224 +6,85 @@
}:
with lib;
let
- cfg = config.personal.firefox;
userjs = pkgs.callPackage ./userjs.nix {
inherit (pkgs.personal.static.userjs) arkenfox;
inherit (pkgs.lib.personal) toUserJS;
};
engines = import ./engines.nix { inherit lib pkgs; };
- webappsWithIds =
- (builtins.foldl'
- (
- {
- counter,
- value,
- }:
- { name, ... }@next:
- {
- counter = counter + 1;
- value = value ++ [
- (
- next
- // {
- id = counter;
- profileName = lib.toLower name;
- }
- )
- ];
- }
- )
- {
- counter = 0;
- value = [ ];
- }
- cfg.webapps
- ).value;
in
{
- options.personal.firefox = {
- webapps = lib.mkOption {
- type =
- with lib.types;
- listOf (submodule {
- options =
- let
- mkTypedOption = type: lib.mkOption { inherit type; };
- in
- {
- name = mkTypedOption str;
- genericName = mkTypedOption str // {
- default = "";
- };
- url = mkTypedOption str;
- comment = mkTypedOption str // {
- default = "";
- };
- extraUserJS = mkTypedOption lines // {
- default = "";
- };
- categories = mkTypedOption (listOf str) // {
- default = [ ];
- };
- icon = mkTypedOption path;
- };
- });
- default = [ ];
- };
- };
-
config = lib.mkMerge [
{
- stylix.targets.firefox.profileNames = [
- "default"
- "videoconferencing"
- ];
- programs.firefox.profiles =
- builtins.foldl'
- (
- prev:
- {
- id,
- profileName,
- extraUserJS,
- ...
- }:
- prev
- // {
- "${profileName}" = {
- id = id + 2;
- extensions.packages = with pkgs.personal.firefoxAddons; [
- clearurls
- neat-url
- redirector
- smart-referer
- ublock-origin
- unpaywall
- url-in-title
- ];
- search = {
- force = true;
- engines = with engines; disableDefault // { inherit Searx; };
- default = "Searx";
- privateDefault = "Searx";
+ stylix.targets.firefox = {
+ colorTheme.enable = true;
+ profileNames = [
+ "default"
+ ];
+ };
+ programs.firefox = {
+ configPath = "${config.xdg.configHome}/mozilla/firefox";
+ profiles.default = {
+ id = 0; # isDefault = true
+ extensions = {
+ packages = with pkgs.personal.firefoxAddons; [
+ canvasblocker
+ clearurls
+ darkreader
+ neat-url
+ redirector
+ smart-referer
+ temporary-containers
+ ublock-origin
+ unpaywall
+ url-in-title
+ ];
+ settings."FirefoxColor@mozilla.com" = {
+ force = true;
+ settings.theme.colors =
+ let
+ mkBgColor = lib.mkForce (
+ with config.lib.stylix.colors;
+ {
+ r = base00-rgb-r;
+ g = base00-rgb-g;
+ b = base00-rgb-b;
+ }
+ );
+ in
+ {
+ frame = mkBgColor;
+ sidebar_border = mkBgColor;
+ popup_border = mkBgColor;
+ tab_baground_separator = mkBgColor;
+ tab_line = mkBgColor;
+ toolbar_field_border_focus = mkBgColor;
};
- extraConfig = userjs.streaming + extraUserJS;
- };
- }
- )
- {
- default = {
- id = 0; # isDefault = true
-
- extensions.packages = with pkgs.personal.firefoxAddons; [
- canvasblocker
- clearurls
- darkreader
- neat-url
- redirector
- smart-referer
- temporary-containers
- tree-style-tab
- ublock-origin
- unpaywall
- url-in-title
- ];
- search = {
- force = lib.mkDefault true;
- engines =
- with engines;
- disableDefault
- // {
- inherit Searx;
- }
- // lib.optionalAttrs config.personal.identities.personal personal
- // lib.optionalAttrs config.personal.identities.work work
- // lib.optionalAttrs config.personal.profiles.dev dev;
- default = "Searx";
- order = [
- "Searx"
- "Wikipedia"
- ];
- };
- extraConfig = userjs.default;
- userChrome = ./userchrome/treestyletabs-outer.css;
};
+ };
+ search = {
+ force = lib.mkDefault true;
+ engines =
+ with engines;
+ disableDefault
+ // {
+ inherit Searx;
+ }
+ // lib.optionalAttrs config.personal.identities.personal personal
+ // lib.optionalAttrs config.personal.identities.work work
+ // lib.optionalAttrs config.personal.profiles.dev dev;
+ default = "Searx";
+ order = [
+ "Searx"
+ "Wikipedia"
+ ];
+ };
+ extraConfig = userjs.default;
+ };
- videoconferencing = {
- id = 1;
- extensions.packages = with pkgs.personal.firefoxAddons; [
- clearurls
- darkreader
- neat-url
- redirector
- smart-referer
- multi-account-containers
- tree-style-tab
- ublock-origin
- unpaywall
- url-in-title
- ];
- search = {
- force = true;
- engines = with engines; disableDefault // { inherit Searx; };
- default = "Searx";
- };
- extraConfig = userjs.videoconferencing;
- userChrome = ./userchrome/treestyletabs-outer.css;
- };
- }
- webappsWithIds;
+ };
}
(lib.mkIf config.programs.firefox.enable {
- xdg.desktopEntries =
- let
- firefoxProfilesDir = "${config.home.homeDirectory}/.mozilla/firefox";
- firefoxInProfile =
- profile:
- ''${config.programs.firefox.package}/bin/firefox --profile "${firefoxProfilesDir}/${profile}"'';
- in
- builtins.foldl'
- (
- prev:
- {
- name,
- profileName,
- url,
- genericName,
- icon,
- comment,
- categories,
- ...
- }:
- prev
- // {
- "${profileName}" = {
- inherit
- name
- genericName
- icon
- comment
- categories
- ;
- exec = "${firefoxInProfile profileName} ${url}";
- };
- }
- )
- {
- videoconferences = {
- name = "Video Conferences";
- genericName = "Video conference";
- comment = "Use video conferencing software in a browser.";
- exec = "${firefoxInProfile "videoconferencing"}";
- categories = [
- "Network"
- "VideoConference"
- ];
- };
- }
- webappsWithIds;
-
home.shellAliases.fftmp = "firefox --profile $(mktemp -d)";
home.sessionVariables.BROWSER = "firefox";
})
diff --git a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css b/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css
deleted file mode 100644
index f6fca37..0000000
--- a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-inner.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Not working. Paste this inside TST's extra CSS rules. */
-@-moz-document regexp("moz-extension://.+/sidebar/sidebar.html.*") {
- :root.sidebar #background {
- background: #{{base00-hex}};
- }
-}
diff --git a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css b/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css
deleted file mode 100644
index bee1acf..0000000
--- a/modules/home-manager/personal/programs/firefox/userchrome/treestyletabs-outer.css
+++ /dev/null
@@ -1,17 +0,0 @@
-@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
- /* Hide main tabs toolbar */
- #TabsToolbar {
- visibility: collapse;
- }
-
- /* Sidebar min and max width removal */
- #sidebar {
- max-width: none !important;
- min-width: 0px !important;
- }
-
- /* Hide sidebar header, when using Tree Style Tab. */
- #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
- visibility: collapse;
- }
-}