From 0a0e396ddf97f28487b08c8253a937dfaf578589 Mon Sep 17 00:00:00 2001 From: Natsu Kagami Date: Wed, 15 Jan 2025 21:42:55 +0100 Subject: [PATCH] Factor out default terminal and web browser --- home/kagami-pc-home.nix | 8 +--- home/modules/linux/graphical/default.nix | 46 ++++++++++++++++------ home/modules/programs/my-kitty/default.nix | 9 +++++ home/modules/programs/my-sway/default.nix | 5 ++- home/nki-framework.nix | 4 +- home/nki-x1c1.nix | 5 +-- 6 files changed, 50 insertions(+), 27 deletions(-) diff --git a/home/kagami-pc-home.nix b/home/kagami-pc-home.nix index 539cfe9..ce12a7d 100644 --- a/home/kagami-pc-home.nix +++ b/home/kagami-pc-home.nix @@ -37,12 +37,8 @@ # Enable X11 configuration linux.graphical.type = "wayland"; linux.graphical.wallpaper = ./images/pixiv_18776904.png; - linux.graphical.startup = with pkgs; [ - zen-browser-bin - thunderbird - vesktop - ]; - linux.graphical.defaults.webBrowser = "zen.desktop"; + linux.graphical.defaults.webBrowser.package = pkgs.zen-browser-bin; + linux.graphical.defaults.webBrowser.desktopFile = "zen.desktop"; programs.my-sway.enable = true; programs.my-sway.fontSize = 15.0; programs.my-sway.enableLaptop = true; diff --git a/home/modules/linux/graphical/default.nix b/home/modules/linux/graphical/default.nix index 499088a..238f7fe 100644 --- a/home/modules/linux/graphical/default.nix +++ b/home/modules/linux/graphical/default.nix @@ -17,6 +17,24 @@ let echo $wifi_output end ''; + + mkPackageWithDesktopOption = opts: mkOption ({ + type = types.submodule { + options = { + package = mkOption { + type = types.package; + description = "The package for " + description; + }; + desktopFile = mkOption { + type = types.nullOr types.str; + default = null; + description = "The desktop file name for " + description + ", defaults to [packagename].desktop"; + }; + }; + }; + } // opts); + + desktopFileOf = cfg: if cfg.desktopFile == null then "${cfg.package}/share/applications/${cfg.package.pname}.desktop" else cfg.desktopFile; in { imports = [ ./x11.nix ./wayland.nix ./alacritty.nix ]; @@ -35,21 +53,23 @@ in type = types.listOf types.package; description = "List of packages to include in ~/.config/autostart"; default = with pkgs; [ - librewolf + cfg.defaults.webBrowser.package thunderbird vesktop ]; }; - defaults.webBrowser = mkOption { - type = types.str; - default = "librewolf.desktop"; - description = "Desktop file of the default web browser"; + defaults = { + webBrowser = mkPackageWithDesktopOption { description = "default web browser"; }; + terminal = mkPackageWithDesktopOption { description = "default terminal"; default.package = pkgs.kitty; }; }; }; config = mkIf (cfg.type != null) { # Packages home.packages = (with pkgs; [ + cfg.defaults.webBrowser.package + cfg.defaults.terminal.package + ## GUI stuff evince # PDF reader gparted @@ -150,14 +170,14 @@ in "application/x-extension-rss" = [ "thunderbird.desktop" ]; # Default web browser stuff - "text/html" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/about" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/unknown" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/http" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/https" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/ftp" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/ftps" = [ cfg.defaults.webBrowser ]; - "x-scheme-handler/file" = [ cfg.defaults.webBrowser ]; + "text/html" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/about" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/unknown" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/http" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/https" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/ftp" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/ftps" = [ (desktopFileOf cfg.defaults.webBrowser) ]; + "x-scheme-handler/file" = [ (desktopFileOf cfg.defaults.webBrowser) ]; # Torrent "application/x-bittorrent" = [ "deluge.desktop" ]; diff --git a/home/modules/programs/my-kitty/default.nix b/home/modules/programs/my-kitty/default.nix index a1c03c0..fe82ff0 100644 --- a/home/modules/programs/my-kitty/default.nix +++ b/home/modules/programs/my-kitty/default.nix @@ -19,6 +19,11 @@ with lib; options.nki.programs.kitty = { enable = mkEnableOption "Enable kitty"; + setDefault = mkOption { + type = types.bool; + description = "Set kitty as default terminal"; + default = true; + }; package = mkOption { type = types.package; @@ -51,6 +56,10 @@ with lib; }; }; + config.linux.graphical = mkIf (cfg.enable && cfg.setDefault) { + defaults.terminal.package = cfg.package; + }; + config.programs.kitty = mkIf cfg.enable { enable = true; diff --git a/home/modules/programs/my-sway/default.nix b/home/modules/programs/my-sway/default.nix index 138dcab..36a224f 100644 --- a/home/modules/programs/my-sway/default.nix +++ b/home/modules/programs/my-sway/default.nix @@ -68,12 +68,12 @@ in terminal = mkOption { type = types.str; description = "The command to the terminal emulator to be used"; - default = "${config.programs.kitty.package}/bin/kitty"; + default = lib.getExe config.linux.graphical.defaults.terminal.package; }; browser = mkOption { type = types.str; description = "The command for the browser"; - default = "${pkgs.firefox-wayland}/bin/firefox"; + default = lib.getExe config.linux.graphical.defaults.webBrowser.package; }; enableLaptop = lib.mkOption { @@ -276,6 +276,7 @@ in "${builtins.elemAt workspaces 0}" = [ { app_id = "^firefox$"; } { app_id = "^librewolf$"; } + { app_id = "^zen$"; } ]; "${builtins.elemAt workspaces 1}" = [ { class = "^((d|D)iscord|((A|a)rm(c|C)ord))$"; } diff --git a/home/nki-framework.nix b/home/nki-framework.nix index b44533a..516c33f 100644 --- a/home/nki-framework.nix +++ b/home/nki-framework.nix @@ -29,12 +29,10 @@ # Graphical set up linux.graphical.type = "wayland"; linux.graphical.wallpaper = ./images/wallpaper_0.png; - linux.graphical.defaults.webBrowser = "librewolf.desktop"; + linux.graphical.defaults.webBrowser.package = pkgs.librewolf; # Enable sway programs.my-sway.enable = true; programs.my-sway.fontSize = 14.0; - programs.my-sway.terminal = "${config.programs.kitty.package}/bin/kitty"; - programs.my-sway.browser = "librewolf"; wayland.windowManager.sway.config = { # Keyboard support input."*".xkb_layout = "jp"; diff --git a/home/nki-x1c1.nix b/home/nki-x1c1.nix index dbad824..ce34779 100644 --- a/home/nki-x1c1.nix +++ b/home/nki-x1c1.nix @@ -30,12 +30,11 @@ linux.graphical.type = "wayland"; linux.graphical.wallpaper = ./images/wallpaper_0.png; linux.graphical.startup = with pkgs; [ zen-browser-bin thunderbird vesktop slack ]; - linux.graphical.defaults.webBrowser = "zen.desktop"; + linux.graphical.defaults.webBrowser.package = pkgs.zen-browser-bin; + linux.graphical.defaults.webBrowser.desktopFile = "zen.desktop"; # Enable sway programs.my-sway.enable = true; programs.my-sway.fontSize = 14.0; - programs.my-sway.terminal = "${config.programs.kitty.package}/bin/kitty"; - programs.my-sway.browser = "librewolf"; wayland.windowManager.sway.config = { # Keyboard support input."*".xkb_layout = "jp";