feat(nix): Zen programs.
module
This commit is contained in:
parent
4141a527e0
commit
a17032a2b2
4 changed files with 97 additions and 12 deletions
51
nix/modules/home-manager/__programs/zen.nix
Normal file
51
nix/modules/home-manager/__programs/zen.nix
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{ config, lib, pkgs, home-manager, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
inherit (pkgs.stdenv.hostPlatform) isDarwin;
|
||||||
|
|
||||||
|
modulePath = [ "programs" "zen" ];
|
||||||
|
cfg = getAttrFromPath modulePath config;
|
||||||
|
|
||||||
|
mkFirefoxModule = import "${home-manager.outPath}/modules/programs/firefox/mkFirefoxModule.nix";
|
||||||
|
|
||||||
|
# Because Zen required ZenAvatarPath to be in profiles.ini
|
||||||
|
# REF: https://github.com/nix-community/home-manager/blob/60bb110917844d354f3c18e05450606a435d2d10/modules/programs/firefox/mkFirefoxModule.nix#L55-L69
|
||||||
|
profiles = flip mapAttrs' cfg.profiles (_: profile:
|
||||||
|
nameValuePair "Profile${toString profile.id}" {
|
||||||
|
Name = profile.name;
|
||||||
|
Path = if isDarwin then "Profiles/${profile.path}" else profile.path;
|
||||||
|
IsRelative = 1;
|
||||||
|
Default = if profile.isDefault then 1 else 0;
|
||||||
|
ZenAvatarPath = "chrome://browser/content/zen-avatars/avatar-1.svg";
|
||||||
|
}) // {
|
||||||
|
General = {
|
||||||
|
StartWithLastProfile = 1;
|
||||||
|
} // lib.optionalAttrs (cfg.profileVersion != null) {
|
||||||
|
Version = cfg.profileVersion;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
profilesIni = generators.toINI { } profiles;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
(mkFirefoxModule {
|
||||||
|
inherit modulePath;
|
||||||
|
name = "Zen Browser";
|
||||||
|
wrappedPackageName = "zen"; # Imaginary wrappedPackageName so `programs.zen.policies` is added properly
|
||||||
|
visible = true;
|
||||||
|
|
||||||
|
platforms.linux = rec {
|
||||||
|
vendorPath = ".zen";
|
||||||
|
configPath = "${vendorPath}";
|
||||||
|
};
|
||||||
|
platforms.darwin = rec {
|
||||||
|
vendorPath = "Library/Application Support/Zen";
|
||||||
|
configPath = "${vendorPath}";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
home.file."${cfg.configPath}/profiles.ini" = mkForce (mkIf (cfg.profiles != { }) { text = profilesIni; });
|
||||||
|
};
|
||||||
|
}
|
17
nix/modules/home-manager/zen.nix
Normal file
17
nix/modules/home-manager/zen.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ pkgs, config, vars, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.zen = {
|
||||||
|
enable = true;
|
||||||
|
# REF: https://github.com/nix-community/home-manager/blob/342a1d682386d3a1d74f9555cb327f2f311dda6e/modules/programs/firefox/mkFirefoxModule.nix#L264
|
||||||
|
package = null; # we only want the config
|
||||||
|
profiles.${config.home.username} = {
|
||||||
|
id = 0;
|
||||||
|
isDefault = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeMessagingHosts = [
|
||||||
|
pkgs.passff-host
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,6 +3,10 @@
|
||||||
let
|
let
|
||||||
mkSystem = import ../lib/mkSystem.nix;
|
mkSystem = import ../lib/mkSystem.nix;
|
||||||
mkBrew = import ../overlays/darwin/brew.nix;
|
mkBrew = import ../overlays/darwin/brew.nix;
|
||||||
|
|
||||||
|
defaultModules = [
|
||||||
|
../modules/home-manager/__programs/zen.nix
|
||||||
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Host list
|
# Host list
|
||||||
|
@ -38,10 +42,11 @@ in
|
||||||
home-manager.lib.homeManagerConfiguration {
|
home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = pkgs-unstable; # FIXME: switch to stable when 24.11 become stable
|
pkgs = pkgs-unstable; # FIXME: switch to stable when 24.11 become stable
|
||||||
extraSpecialArgs = { inherit inputs pkgs pkgs-unstable home-manager vars; };
|
extraSpecialArgs = { inherit inputs pkgs pkgs-unstable home-manager vars; };
|
||||||
modules = [
|
modules = defaultModules ++ [
|
||||||
./ziro
|
./ziro
|
||||||
./ziro/darwin.nix
|
./ziro/darwin.nix
|
||||||
../modules/home-manager/floorp.nix
|
../modules/home-manager/floorp.nix
|
||||||
|
../modules/home-manager/zen.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -59,10 +64,11 @@ in
|
||||||
home-manager.lib.homeManagerConfiguration {
|
home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = pkgs-unstable; # FIXME: switch to stable when 24.11 become stable
|
pkgs = pkgs-unstable; # FIXME: switch to stable when 24.11 become stable
|
||||||
extraSpecialArgs = { inherit inputs pkgs pkgs-unstable home-manager vars; };
|
extraSpecialArgs = { inherit inputs pkgs pkgs-unstable home-manager vars; };
|
||||||
modules = [
|
modules = defaultModules ++ [
|
||||||
./ziro
|
./ziro
|
||||||
./ziro/linux.nix
|
./ziro/linux.nix
|
||||||
../modules/home-manager/floorp.nix
|
../modules/home-manager/floorp.nix
|
||||||
|
../modules/home-manager/zen.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,21 +2,23 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
username = "ziro";
|
username = "ziro";
|
||||||
userChrome = builtins.replaceStrings ["/*ZI:*/18em/*:VERTICAL-TAB-HOVER-WIDTH-IN-EM*/"] ["${builtins.toString vars.floorp.verticalTabHoverWidthInEm}em"] (builtins.readFile ../../../include/floorp/ziro-userChrome.css);
|
userChrome-ff-floorp = builtins.replaceStrings ["/*ZI:*/18em/*:VERTICAL-TAB-HOVER-WIDTH-IN-EM*/"] ["${builtins.toString vars.floorp.verticalTabHoverWidthInEm}em"] (builtins.readFile ../../../include/floorp/ziro-userChrome.css);
|
||||||
settings = {
|
settings-ff-common = {
|
||||||
"browser.toolbars.bookmarks.visibility" = "newtab";
|
"browser.toolbars.bookmarks.visibility" = "newtab";
|
||||||
"floorp.browser.sidebar.is.displayed" = false;
|
|
||||||
"floorp.browser.tabbar.settings" = 2;
|
|
||||||
"floorp.browser.tabs.verticaltab" = true;
|
|
||||||
"floorp.verticaltab.hover.enabled" = true;
|
|
||||||
"floorp.tabbar.style" = 2;
|
|
||||||
"network.dns.disableIPv6" = true;
|
"network.dns.disableIPv6" = true;
|
||||||
"sidebar.position_start" = false;
|
"sidebar.position_start" = false;
|
||||||
"signon.management.page.breach-alerts.enabled" = false;
|
"signon.management.page.breach-alerts.enabled" = false;
|
||||||
"signon.rememberSignons" = false;
|
"signon.rememberSignons" = false;
|
||||||
"extensions.autoDisableScopes" = 0; # Auto enable extensions
|
"extensions.autoDisableScopes" = 0; # Auto enable extensions
|
||||||
};
|
};
|
||||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
settings-ff-floorp = settings-ff-common // {
|
||||||
|
"floorp.browser.sidebar.is.displayed" = false;
|
||||||
|
"floorp.browser.tabbar.settings" = 2;
|
||||||
|
"floorp.browser.tabs.verticaltab" = true;
|
||||||
|
"floorp.verticaltab.hover.enabled" = true;
|
||||||
|
"floorp.tabbar.style" = 2;
|
||||||
|
};
|
||||||
|
extensions-ff-common = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
# AdBlocker
|
# AdBlocker
|
||||||
ublock-origin
|
ublock-origin
|
||||||
|
|
||||||
|
@ -40,11 +42,20 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.floorp.profiles.${username} = {
|
programs.floorp.profiles.${username} = {
|
||||||
inherit userChrome settings extensions;
|
userChrome = userChrome-ff-floorp;
|
||||||
|
settings = settings-ff-floorp;
|
||||||
|
extensions = extensions-ff-common;
|
||||||
};
|
};
|
||||||
programs.floorp.profiles.null = {
|
programs.floorp.profiles.null = {
|
||||||
id = 1;
|
id = 1;
|
||||||
inherit userChrome settings extensions;
|
userChrome = userChrome-ff-floorp;
|
||||||
|
settings = settings-ff-floorp;
|
||||||
|
extensions = extensions-ff-common;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zen.profiles.${username} = {
|
||||||
|
settings = settings-ff-common;
|
||||||
|
extensions = extensions-ff-common;
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue