From a5e6da58c139f88b4cf51690a7f54e1b9850aa38 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Sat, 21 Jun 2025 10:55:49 -0700 Subject: [PATCH] feat: add textfox --- flake.lock | 74 ++++++++++++++++++- flake.nix | 14 ++++ .../desktop-environment/hyprland/binds.nix | 6 +- hm/modules/linux/programs/default.nix | 47 +++++++----- hm/modules/linux/theming/stylix.nix | 7 ++ reference/modules/default.nix | 2 + reference/users/youwen/hm.nix | 52 +++++++++++++ 7 files changed, 178 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index c87f404..28d75c6 100644 --- a/flake.lock +++ b/flake.lock @@ -801,6 +801,30 @@ } }, "nur": { + "inputs": { + "flake-parts": [ + "flake-parts" + ], + "nixpkgs": [ + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1750524442, + "narHash": "sha256-QTDJj9V6b5HIgFhCjx47hxJaa+I9Lv68Ad4+/SZY6L0=", + "owner": "nix-community", + "repo": "NUR", + "rev": "ef3d60dd864730eb6f57aaaa904cde37f9524681", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nur_2": { "inputs": { "flake-parts": [ "stylix", @@ -810,7 +834,7 @@ "stylix", "nixpkgs" ], - "treefmt-nix": "treefmt-nix" + "treefmt-nix": "treefmt-nix_2" }, "locked": { "lastModified": 1748730660, @@ -872,8 +896,10 @@ "nix-index-database": "nix-index-database", "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs_2", + "nur": "nur", "spicetify": "spicetify", "stylix": "stylix", + "textfox": "textfox", "ucode": "ucode", "valkyrie": "valkyrie", "viminal": "viminal", @@ -980,7 +1006,7 @@ "nixpkgs": [ "nixpkgs" ], - "nur": "nur", + "nur": "nur_2", "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", @@ -1062,6 +1088,29 @@ "type": "github" } }, + "textfox": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nur": [ + "nur" + ] + }, + "locked": { + "lastModified": 1750526509, + "narHash": "sha256-MBQ/LDzndzvej6G/Zu13rFbzg3lgh+cl0nBIPRLd03c=", + "owner": "youwen5", + "repo": "textfox", + "rev": "a2b2f5998cf58bebb2b721bb978bf93c404c280a", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "textfox", + "type": "github" + } + }, "tinted-foot": { "flake": false, "locked": { @@ -1144,6 +1193,27 @@ } }, "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { "inputs": { "nixpkgs": [ "stylix", diff --git a/flake.nix b/flake.nix index 0643e58..e2a7a0c 100755 --- a/flake.nix +++ b/flake.nix @@ -87,6 +87,18 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + nur = { + url = "github:nix-community/NUR"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-parts.follows = "flake-parts"; + }; + + textfox = { + url = "github:youwen5/textfox"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.nur.follows = "nur"; + }; + nixos-wsl = { url = "github:nix-community/NixOS-WSL"; inputs.nixpkgs.follows = "nixpkgs"; @@ -184,6 +196,7 @@ inputs.stylix.nixosModules.stylix inputs.agenix.nixosModules.age inputs.musnix.nixosModules.musnix + inputs.nur.modules.nixos.default ./modules/default.nix ./overlays ( @@ -214,6 +227,7 @@ inputs.nix-index-database.hmModules.nix-index inputs.spicetify.homeManagerModules.default inputs.agenix.homeManagerModules.age + inputs.textfox.homeManagerModules.textfox ./hm/modules/default.nix ]; }; diff --git a/hm/modules/linux/desktop-environment/hyprland/binds.nix b/hm/modules/linux/desktop-environment/hyprland/binds.nix index 86e5719..af1e6e5 100644 --- a/hm/modules/linux/desktop-environment/hyprland/binds.nix +++ b/hm/modules/linux/desktop-environment/hyprland/binds.nix @@ -64,10 +64,10 @@ in "$mod, Tab, workspace, previous" ''$mod+Shift, P, exec, ${lib.getExe pkgs.grim} - | ${lib.getExe pkgs.swappy} -f -'' # Screenshot full screen ''$mod, P, exec, ${lib.getExe pkgs.grim} -g "$(${lib.getExe pkgs.slurp})" - | ${lib.getExe pkgs.swappy} -f -'' # Screenshot + + # browser + "$mod, B, exec, ${lib.getExe config.liminalOS.programs.defaultBrowser}" ] - ++ (lib.optionals config.liminalOS.programs.zen.enable [ - "$mod, B, exec, zen" - ]) ++ (lib.optionals config.liminalOS.desktop.swaync.enable [ "$mod, N, exec, sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw" ]) diff --git a/hm/modules/linux/programs/default.nix b/hm/modules/linux/programs/default.nix index 10e7d1d..ad84021 100644 --- a/hm/modules/linux/programs/default.nix +++ b/hm/modules/linux/programs/default.nix @@ -21,6 +21,20 @@ in Whether to set up many default desktop programs. ''; }; + defaultBrowser = lib.mkOption { + type = lib.types.package; + default = pkgs.zen-browser; + description = '' + Default browser for the system. + ''; + }; + browserDesktopFile = lib.mkOption { + type = lib.types.str; + default = "zen.desktop"; + description = '' + Name of desktop file of browser. + ''; + }; terminal.enable = lib.mkOption { type = lib.types.bool; default = cfg.enable; @@ -28,13 +42,6 @@ in Whether to set up kitty terminal. ''; }; - zen.enable = lib.mkOption { - type = lib.types.bool; - default = cfg.enable; - description = '' - Whether to install Zen Browser and set it as the default browser. - ''; - }; }; config = lib.mkIf cfg.enable { @@ -73,21 +80,23 @@ in }; }; - xdg.mimeApps = lib.mkIf cfg.zen.enable { + xdg.mimeApps = { enable = true; - defaultApplications = { - "text/html" = [ "zen.desktop" ]; - "x-scheme-handler/http" = [ "zen.desktop" ]; - "x-scheme-handler/https" = [ "zen.desktop" ]; - "x-scheme-handler/about" = [ "zen.desktop" ]; - "x-scheme-handler/unknown" = [ "zen.desktop" ]; - }; + defaultApplications = + let + desktopFile = cfg.browserDesktopFile; + in + { + "text/html" = [ desktopFile ]; + "x-scheme-handler/http" = [ desktopFile ]; + "x-scheme-handler/https" = [ desktopFile ]; + "x-scheme-handler/about" = [ desktopFile ]; + "x-scheme-handler/unknown" = [ desktopFile ]; + }; }; - home.packages = lib.mkIf cfg.zen.enable [ - pkgs.zen-browser - ]; + home.packages = [ cfg.defaultBrowser ]; - home.sessionVariables.DEFAULT_BROWSER = lib.mkIf cfg.zen.enable "${lib.getExe pkgs.zen-browser}"; + home.sessionVariables.DEFAULT_BROWSER = lib.getExe cfg.defaultBrowser; }; } diff --git a/hm/modules/linux/theming/stylix.nix b/hm/modules/linux/theming/stylix.nix index 0b8353b..6bcfa84 100644 --- a/hm/modules/linux/theming/stylix.nix +++ b/hm/modules/linux/theming/stylix.nix @@ -13,6 +13,13 @@ starship.enable = false; rofi.enable = false; mako.enable = false; + firefox = { + enable = true; + profileNames = [ + "youwen" + ]; + colorTheme.enable = true; + }; }; }; } diff --git a/reference/modules/default.nix b/reference/modules/default.nix index 5210fde..305437e 100644 --- a/reference/modules/default.nix +++ b/reference/modules/default.nix @@ -111,6 +111,8 @@ nix.settings.trusted-users = [ "youwen" ]; + programs.firefox.nativeMessagingHosts.tridactyl = true; + fonts.packages = [ inputs.valkyrie.packages.${pkgs.system}.default ]; diff --git a/reference/users/youwen/hm.nix b/reference/users/youwen/hm.nix index 2967d57..8b8bb62 100644 --- a/reference/users/youwen/hm.nix +++ b/reference/users/youwen/hm.nix @@ -23,6 +23,8 @@ liminalOS = { utils.easyeffects.enable = true; + programs.defaultBrowser = pkgs.firefox; + programs.browserDesktopFile = "firefox.desktop"; }; programs.git = { @@ -34,6 +36,56 @@ }; }; + programs.firefox = { + # package = pkgs.; + profiles.youwen = { + extensions.force = true; + extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ + tridactyl + ublock-origin + bitwarden + refined-github + ]; + }; + }; + + home.packages = with pkgs; [ + tridactyl-native + ]; + + textfox = { + enable = true; + profile = "youwen"; + useLegacyExtensions = false; + config = { + background = { + color = "#${config.lib.stylix.colors.base00}"; + }; + border = { + color = "#${config.lib.stylix.colors.base0B}"; + width = "3px"; + transition = "1.0s ease"; + radius = "0px"; + }; + displayHorizontalTabs = false; + displayWindowControls = false; + displayNavButtons = true; + displayUrlbarIcons = true; + displaySidebarTools = false; + displayTitles = true; + newtabLogo = " __ __ ____ \A / /____ _ __/ /_/ __/___ _ __\A / __/ _ \\| |/_/ __/ /_/ __ \\| |/_/\A / /_/ __/> < \A \\__/\\___/_/|_|\\__/_/ \\____/_/|_| "; + font = { + family = "CaskaydiaCove Nerd Font"; + size = "15px"; + accent = "#${config.lib.stylix.colors.base0B}"; + }; + tabs.vertical = { + margin = "1.0rem"; + }; + tabs.horizontal.enable = false; + }; + }; + programs.iamb = { enable = true; package = inputs.iamb.packages.${pkgs.stdenv.targetPlatform.system}.default;