summaryrefslogtreecommitdiff
path: root/modules/home-manager/personal
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home-manager/personal')
-rw-r--r--modules/home-manager/personal/programs/firefox/default.nix169
1 files changed, 101 insertions, 68 deletions
diff --git a/modules/home-manager/personal/programs/firefox/default.nix b/modules/home-manager/personal/programs/firefox/default.nix
index 240b70c..bcc19fd 100644
--- a/modules/home-manager/personal/programs/firefox/default.nix
+++ b/modules/home-manager/personal/programs/firefox/default.nix
@@ -1,81 +1,102 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+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; };
+ engines = import ./engines.nix {inherit lib pkgs;};
userchrome = let
userchromeTST = ./userchrome/treestyletabs.css;
userchromeTSTColors = config.lib.stylix.colors {
template = builtins.readFile ./userchrome/treestyletabs-colors.css;
extension = ".css";
};
- in ''
- @import "${userchromeTST}";
- '' + lib.optionalString (config.lib ? stylix) ''
- @import "${userchromeTSTColors}";
- '';
- 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
+ ''
+ @import "${userchromeTST}";
+ ''
+ + lib.optionalString (config.lib ? stylix) ''
+ @import "${userchromeTSTColors}";
+ '';
+ 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; };
+ options = let
+ mkTypedOption = type: lib.mkOption {inherit type;};
in {
name = mkTypedOption str;
- genericName = mkTypedOption str // { default = ""; };
+ genericName = mkTypedOption str // {default = "";};
url = mkTypedOption str;
- comment = mkTypedOption str // { default = ""; };
- extraUserJS = mkTypedOption lines // { default = ""; };
- categories = mkTypedOption (listOf str) // { default = [ ]; };
+ comment = mkTypedOption str // {default = "";};
+ extraUserJS = mkTypedOption lines // {default = "";};
+ categories = mkTypedOption (listOf str) // {default = [];};
icon = mkTypedOption path;
};
});
- default = [ ];
+ default = [];
};
};
config = lib.mkMerge [
{
- programs.firefox.profiles = builtins.foldl' (prev:
- { name, id, profileName, extraUserJS, ... }:
- prev // {
- "${profileName}" = {
- id = id + 2;
- extensions = 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";
+ programs.firefox.profiles =
+ builtins.foldl' (prev: {
+ id,
+ profileName,
+ extraUserJS,
+ ...
+ }:
+ prev
+ // {
+ "${profileName}" = {
+ id = id + 2;
+ extensions = 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";
+ };
+ extraConfig = userjs.streaming + extraUserJS;
};
- extraConfig = userjs.streaming + extraUserJS;
- };
- }) {
+ }) {
default = {
id = 0; # isDefault = true
@@ -95,14 +116,16 @@ in {
search = {
force = lib.mkDefault true;
engines = with engines;
- disableDefault // {
+ disableDefault
+ // {
inherit Searx;
- } // lib.optionalAttrs config.personal.identities.personal
+ }
+ // 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" ];
+ order = ["Searx" "Wikipedia"];
};
extraConfig = userjs.default;
userChrome = userchrome;
@@ -124,37 +147,47 @@ in {
];
search = {
force = true;
- engines = with engines; disableDefault // { inherit Searx; };
+ engines = with engines; disableDefault // {inherit Searx;};
default = "Searx";
};
extraConfig = userjs.videoconferencing;
userChrome = userchrome;
};
- } webappsWithIds;
+ }
+ 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}";
- };
- }) {
+ firefoxInProfile = profile: ''
+ ${config.programs.firefox.package}/bin/firefox --profile "${firefoxProfilesDir}/${profile}"'';
+ in
+ builtins.foldl' (prev: {
+ 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" ];
+ categories = ["Network" "VideoConference"];
};
- } webappsWithIds;
+ }
+ webappsWithIds;
home.shellAliases.fftmp = "firefox --profile $(mktemp -d)";
home.sessionVariables.BROWSER = "firefox";