1
1
Fork 0

programs: add zen-browser

Signed-off-by: Myned <dev@bjork.tech>
This commit is contained in:
Myned 2025-02-16 20:01:08 -06:00
parent 786c090767
commit 4b8f74564d
Signed by: Myned
GPG key ID: C7224454F7881A34
6 changed files with 109 additions and 0 deletions

View file

@ -63,6 +63,11 @@
# TODO: Remove when on stable
ghostty = unstable.ghostty;
# TODO: Use official package when available
# https://github.com/NixOS/nixpkgs/issues/327982
zen-browser = inputs.zen-browser.packages.${pkgs.system}.zen-browser;
zen-browser-unwrapped = inputs.zen-browser.packages.${pkgs.system}.zen-browser-unwrapped;
### Python
# https://nixos.org/manual/nixpkgs/unstable/#how-to-override-a-python-package-for-all-python-versions-using-extensions
#?? PKG = pyprev.PKG.overridePythonAttrs {};
@ -171,6 +176,7 @@
};
users = {
# FIXME: Separate root from sharedModules
root = {
# Inherit from user
programs.home-manager.enable = config.home-manager.users.${config.custom.username}.programs.home-manager.enable;

View file

@ -68,6 +68,7 @@
nixgl-unstable = flake "github:nix-community/nixGL" // unstable "nixpkgs";
stylix-unstable = flake "github:danth/stylix" // unstable "nixpkgs";
walker = flake "github:abenz1267/walker?ref=v0.12.8" // unstable "nixpkgs";
zen-browser = flake "github:youwen5/zen-browser-flake" // unstable "nixpkgs";
### Branches
nixpkgs-master = flake "github:NixOS/nixpkgs/master";
@ -140,6 +141,30 @@
inputs.anyrun.homeManagerModules.default
inputs.nix-flatpak.homeManagerModules.nix-flatpak
inputs.walker.homeManagerModules.default
# TODO: Use official module when supported
# https://github.com/nix-community/home-manager/blob/master/modules/programs/floorp.nix
(let
modulePath = ["programs" "zen-browser"];
mkFirefoxModule = import "${inputs."home-manager-${branch}"}/modules/programs/firefox/mkFirefoxModule.nix";
in
mkFirefoxModule {
inherit modulePath;
name = "Zen";
wrappedPackageName = "zen-browser";
unwrappedPackageName = "zen-browser-unwrapped";
visible = true;
platforms.linux = {
configPath = ".zen";
vendorPath = ".mozilla";
};
platforms.darwin = {
configPath = "Library/Application Support/Zen";
vendorPath = "Library/Application Support/Mozilla";
};
})
];
# Branch-specific overlays

View file

@ -164,6 +164,10 @@
inputs.nixpkgs.follows = "nixpkgs-unstable";
url = "github:abenz1267/walker?ref=v0.12.8";
};
zen-browser = {
inputs.nixpkgs.follows = "nixpkgs-unstable";
url = "github:youwen5/zen-browser-flake";
};
};
outputs = inputs: inputs.flakegen ./flake.in.nix inputs;
}

View file

@ -210,6 +210,7 @@ in {
(class "^firefox.*$" rules)
(class "^google-chrome$" rules)
(class "^vivaldi.*$" rules)
(class "^zen$" rules)
];
clipboard = rules: [

View file

@ -42,6 +42,7 @@ with lib; {
nautilus.enable = true;
nvtop.enable = true;
wezterm.enable = true;
zen-browser.enable = true;
})
(mkIf config.custom.full {

View file

@ -0,0 +1,72 @@
{
config,
inputs,
lib,
pkgs,
...
}:
with lib; let
cfg = config.custom.programs.zen-browser;
in {
options.custom.programs.zen-browser = {
enable = mkOption {default = false;};
};
config = mkIf cfg.enable {
home-manager.sharedModules = [
{
# https://zen-browser.app/
# https://github.com/youwen5/zen-browser-flake
programs.zen-browser = mkMerge [
(import "${inputs.self}/modules/firefox.nix" {
inherit config inputs lib pkgs;
# TODO: Revisit Zen themes
theme = false;
})
{
enable = true;
profiles.default.settings = {
"zen.pinned-tab-manager.close-shortcut-behavior" = "reset-unload-switch";
"zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url" = true;
"zen.tab-unloader.timeout-minutes" = 60;
"zen.theme.accent-color" = "#d33682";
"zen.theme.color-prefs.colorful" = false;
"zen.theme.color-prefs.use-workspace-colors" = true;
"zen.theme.pill-button" = true;
"zen.urlbar.replace-newtab" = false;
"zen.view.compact.hide-toolbar" = true;
"zen.view.sidebar-expanded" = false;
"zen.view.use-single-toolbar" = false;
"zen.welcome-screen.seen" = true;
"zen.workspaces.container-specific-essentials-enabled" = true;
"zen.workspaces.force-container-workspace" = true;
"zen.workspaces.hide-deactivated-workspaces" = true;
"zen.workspaces.individual-pinned-tabs" = false;
"zen.workspaces.show-icon-strip" = false;
};
}
];
home = {
activation = {
# HACK: Zen only recognizes profiles that include the ZenAvatarPath key
update-zen-browser-profile = lib.home-manager.hm.dag.entryAfter ["writeBoundary"] ''
run sed -i \
's|\[Profile\([0-9]*\)\]|[Profile\1]\nZenAvatarPath=chrome://browser/content/zen-avatars/avatar-95.svg|' \
"$HOME/.zen/profiles.ini"
'';
};
file = {
".zen/profiles.ini" = {
force = true;
};
};
};
}
];
};
}