feat(nix): Zen programs. module

This commit is contained in:
Ahmad Ansori Palembani 2024-11-13 08:42:48 +07:00
parent 4141a527e0
commit a17032a2b2
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
4 changed files with 97 additions and 12 deletions

View 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; });
};
}

View 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
];
};
}

View file

@ -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
]; ];
}; };
} }

View file

@ -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 = {