diff options
| author | Arpit Chakladar <arpitchakladar@gmail.com> | 2026-09-26 23:07:08 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpitchakladar@gmail.com> | 2026-09-26 23:07:08 +0530 |
| commit | 5c8698ea33bae80f6d247ad295a5ce1c30dfde10 (patch) | |
| tree | 731b3ca2c1c115f1d7d9b093b306117ebecaab78 | |
| parent | 8c11cd451c5bb42b306c7d65392798350a26fce7 (diff) | |
| download | home-manager-config-5c8698ea33bae80f6d247ad295a5ce1c30dfde10.tar.gz home-manager-config-5c8698ea33bae80f6d247ad295a5ce1c30dfde10.zip | |
feat(desktop/icons): using icons submodule, to provide icons for all modules
| -rw-r--r-- | modules/communication/neomutt/default.nix | 3 | ||||
| -rw-r--r-- | modules/communication/senpai/default.nix | 3 | ||||
| -rw-r--r-- | modules/desktop/default.nix | 1 | ||||
| -rw-r--r-- | modules/desktop/icons/default.nix | 190 | ||||
| -rw-r--r-- | modules/desktop/niri/default.nix | 2 | ||||
| -rw-r--r-- | modules/development/lazygit/default.nix | 5 | ||||
| -rw-r--r-- | modules/development/opencode/default.nix | 3 | ||||
| -rw-r--r-- | modules/gaming/heroic/default.nix | 3 | ||||
| -rw-r--r-- | modules/networking/bluetui/default.nix | 3 | ||||
| -rw-r--r-- | modules/networking/impala/default.nix | 3 | ||||
| -rw-r--r-- | modules/networking/usque/default.nix | 5 | ||||
| -rw-r--r-- | modules/office/calcurse/default.nix | 7 | ||||
| -rw-r--r-- | modules/security/gopass/default.nix | 3 | ||||
| -rw-r--r-- | modules/security/gpg-tui/default.nix | 3 | ||||
| -rw-r--r-- | modules/system/btop/default.nix | 3 | ||||
| -rw-r--r-- | modules/system/systemctl-tui/default.nix | 3 | ||||
| -rw-r--r-- | modules/web/aria2/default.nix | 5 | ||||
| -rw-r--r-- | modules/web/chawan/default.nix | 3 |
18 files changed, 228 insertions, 20 deletions
diff --git a/modules/communication/neomutt/default.nix b/modules/communication/neomutt/default.nix index c379a02..6c11b03 100644 --- a/modules/communication/neomutt/default.nix +++ b/modules/communication/neomutt/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.communication.neomutt; + icons = config.desktop.icons.apps; mbsyncNamesFromName = (import ./lib.nix { inherit lib; }).mbsyncNamesFromName; @@ -143,7 +144,7 @@ in xdg.desktopEntries."neomutt" = { name = "NeoMutt"; exec = "${lib.getExe config.terminal.kitty.package} --class neomutt -e ${lib.getExe config.programs.neomutt.package}"; - icon = "neomutt"; + icon = icons.neomutt; categories = [ "Network" "Email" diff --git a/modules/communication/senpai/default.nix b/modules/communication/senpai/default.nix index 49f82d9..4f295f7 100644 --- a/modules/communication/senpai/default.nix +++ b/modules/communication/senpai/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.communication.senpai; + icons = config.desktop.icons.apps; in { imports = [ ./assertions.nix ]; @@ -74,7 +75,7 @@ in xdg.desktopEntries."senpai" = { name = "Senpai"; exec = "${lib.getExe config.terminal.kitty.package} --class senpai -e ${lib.getExe cfg.package}"; - icon = "senpai"; + icon = icons.senpai; categories = [ "Network" "Chat" diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index d851699..382eca3 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -9,6 +9,7 @@ let in { imports = [ + ./icons ./rofi ./wl-clipboard ./xdg diff --git a/modules/desktop/icons/default.nix b/modules/desktop/icons/default.nix new file mode 100644 index 0000000..2963d37 --- /dev/null +++ b/modules/desktop/icons/default.nix @@ -0,0 +1,190 @@ +# Icon definitions for Tela-nord-dark theme +{ + config, + lib, + ... +}: +let + cfg = config.desktop; +in +{ + options.desktop.icons = { + apps = { + calcurse = lib.mkOption { + type = lib.types.str; + default = "calendar"; + description = "Icon for calcurse calendar app"; + }; + git = lib.mkOption { + type = lib.types.str; + default = "git"; + description = "Icon for git/lazygit"; + }; + gopass = lib.mkOption { + type = lib.types.str; + default = "password-manager"; + description = "Icon for gopass password manager"; + }; + gpg = lib.mkOption { + type = lib.types.str; + default = "dialog-password"; + description = "Icon for GPG/gpg-tui"; + }; + browser = lib.mkOption { + type = lib.types.str; + default = "internet-web-browser"; + description = "Icon for web browser/chawan"; + }; + opencode = lib.mkOption { + type = lib.types.str; + default = "visualstudiocode"; + description = "Icon for opencode"; + }; + systemctl = lib.mkOption { + type = lib.types.str; + default = "preferences-system"; + description = "Icon for systemctl-tui"; + }; + neomutt = lib.mkOption { + type = lib.types.str; + default = "neomutt"; + description = "Icon for neomutt email client"; + }; + btop = lib.mkOption { + type = lib.types.str; + default = "btop"; + description = "Icon for btop system monitor"; + }; + senpai = lib.mkOption { + type = lib.types.str; + default = "senpai"; + description = "Icon for senpai IRC client"; + }; + niriPowerOffMonitors = lib.mkOption { + type = lib.types.str; + default = "system-shutdown-symbolic"; + description = "Icon for niri poweroff monitors action"; + }; + bluetui = lib.mkOption { + type = lib.types.str; + default = "bluetooth-active-symbolic"; + description = "Icon for bluetui bluetooth manager"; + }; + heroic = lib.mkOption { + type = lib.types.str; + default = "com.heroicgameslauncher.hgl"; + description = "Icon for heroic games launcher"; + }; + impala = lib.mkOption { + type = lib.types.str; + default = "network-wireless-signal-excellent-symbolic"; + description = "Icon for impala wifi manager"; + }; + usqueVpn = lib.mkOption { + type = lib.types.str; + default = "network-vpn-symbolic"; + description = "Icon for usque VPN connected"; + }; + usqueVpnDisconnected = lib.mkOption { + type = lib.types.str; + default = "network-vpn-disconnected-symbolic"; + description = "Icon for usque VPN disconnected"; + }; + aria2 = lib.mkOption { + type = lib.types.str; + default = "folder-download"; + description = "Icon for aria2 download manager"; + }; + yazi = lib.mkOption { + type = lib.types.str; + default = "yazi"; + description = "Icon for yazi file manager"; + }; + }; + + bar = { + offline = lib.mkOption { + type = lib.types.str; + default = "network-offline"; + description = "Bar icon for offline network"; + }; + wifi = lib.mkOption { + type = lib.types.str; + default = "network-wireless"; + description = "Bar icon for wifi network"; + }; + ethernet = lib.mkOption { + type = lib.types.str; + default = "network-wired"; + description = "Bar icon for ethernet network"; + }; + vpn = lib.mkOption { + type = lib.types.str; + default = "network-vpn"; + description = "Bar icon for VPN network"; + }; + cpu = lib.mkOption { + type = lib.types.str; + default = "cpu"; + description = "Bar icon for CPU"; + }; + ram = lib.mkOption { + type = lib.types.str; + default = "drive-harddisk"; + description = "Bar icon for RAM"; + }; + battery = lib.mkOption { + type = lib.types.str; + default = "battery"; + description = "Bar icon for battery"; + }; + audio = lib.mkOption { + type = lib.types.str; + default = "audio-volume-high"; + description = "Bar icon for audio"; + }; + calendar = lib.mkOption { + type = lib.types.str; + default = "calendar"; + description = "Bar icon for calendar"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + desktop.icons = { + apps = { + calcurse = "calendar"; + git = "git"; + gopass = "password-manager"; + gpg = "dialog-password"; + browser = "internet-web-browser"; + opencode = "visualstudiocode"; + systemctl = "preferences-system"; + neomutt = "neomutt"; + btop = "btop"; + senpai = "senpai"; + niriPowerOffMonitors = "system-shutdown-symbolic"; + bluetui = "bluetooth-active-symbolic"; + heroic = "com.heroicgameslauncher.hgl"; + impala = "network-wireless-signal-excellent-symbolic"; + usqueVpn = "network-vpn-symbolic"; + usqueVpnDisconnected = "network-vpn-disconnected-symbolic"; + aria2 = "folder-download"; + yazi = "yazi"; + }; + + bar = { + offline = "network-offline"; + wifi = "network-wireless"; + ethernet = "network-wired"; + vpn = "network-vpn"; + cpu = "cpu"; + ram = "drive-harddisk"; + battery = "battery"; + audio = "audio-volume-high"; + calendar = "calendar"; + }; + }; + }; +} diff --git a/modules/desktop/niri/default.nix b/modules/desktop/niri/default.nix index 918a3dc..e98c5da 100644 --- a/modules/desktop/niri/default.nix +++ b/modules/desktop/niri/default.nix @@ -153,7 +153,7 @@ in { name = "Poweroff Monitors"; command = "${lib.getExe cfg.niri.package} msg action power-off-monitors"; - icon = "network-vpn-symbolic"; + icon = config.desktop.icons.apps.niriPowerOffMonitors; } ]; }; diff --git a/modules/development/lazygit/default.nix b/modules/development/lazygit/default.nix index a7bfdc6..c08468c 100644 --- a/modules/development/lazygit/default.nix +++ b/modules/development/lazygit/default.nix @@ -8,6 +8,7 @@ let cfg = config.development.lazygit; base16Colors = import ../../colors/base16 { inherit config lib pkgs; }; + icons = config.desktop.icons.apps; in { imports = [ @@ -77,8 +78,8 @@ in command = "delta --paging=never {{diffArgs}}"; } ]; + update.method = "never"; }; - update.method = "never"; }; }; }) @@ -86,7 +87,7 @@ in xdg.desktopEntries."lazygit" = { name = "lazygit"; exec = "${lib.getExe config.terminal.kitty.package} --class lazygit -e ${lib.getExe cfg.package}"; - icon = "git"; + icon = icons.git; categories = [ "Development" ]; comment = "A simple terminal UI for git commands"; terminal = false; diff --git a/modules/development/opencode/default.nix b/modules/development/opencode/default.nix index 41e3edf..a0115ef 100644 --- a/modules/development/opencode/default.nix +++ b/modules/development/opencode/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.development.opencode; + icons = config.desktop.icons.apps; in { options.development.opencode = { @@ -30,7 +31,7 @@ in xdg.desktopEntries."opencode" = { name = "opencode"; exec = "${lib.getExe config.terminal.kitty.package} --class opencode -e ${lib.getExe cfg.package}"; - icon = "visualstudiocode"; + icon = icons.opencode; categories = [ "Development" ]; comment = "AI-powered coding assistant"; terminal = false; diff --git a/modules/gaming/heroic/default.nix b/modules/gaming/heroic/default.nix index cf4c03d..b86c01a 100644 --- a/modules/gaming/heroic/default.nix +++ b/modules/gaming/heroic/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.gaming.heroic; + icons = config.desktop.icons.apps; in { options.gaming.heroic = { @@ -40,7 +41,7 @@ in xdg.desktopEntries."heroic" = { name = "Heroic Games Launcher"; exec = "${lib.getExe' cfg.package "heroic"} %u"; - icon = "com.heroicgameslauncher.hgl"; + icon = icons.heroic; comment = "An Open Source Launcher for GOG, Epic Games and Amazon Games"; categories = [ "Game" ]; mimeType = [ "x-scheme-handler/heroic" ]; diff --git a/modules/networking/bluetui/default.nix b/modules/networking/bluetui/default.nix index 1e33ac2..782b653 100644 --- a/modules/networking/bluetui/default.nix +++ b/modules/networking/bluetui/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.networking.bluetui; + icons = config.desktop.icons.apps; in { imports = [ @@ -27,7 +28,7 @@ in xdg.desktopEntries."bluetui" = { name = "bluetui"; exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe cfg.package}"; - icon = "bluetooth-active-symbolic"; + icon = icons.bluetui; categories = [ "Network" ]; comment = "Bluetooth TUI client"; terminal = false; diff --git a/modules/networking/impala/default.nix b/modules/networking/impala/default.nix index 3c52065..28ab8be 100644 --- a/modules/networking/impala/default.nix +++ b/modules/networking/impala/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.networking.impala; + icons = config.desktop.icons.apps; in { imports = [ @@ -27,7 +28,7 @@ in xdg.desktopEntries."impala" = { name = "impala"; exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe cfg.package}"; - icon = "network-wireless-signal-excellent-symbolic"; + icon = icons.impala; categories = [ "Network" ]; comment = "TUI for managing wifi on Linux"; terminal = false; diff --git a/modules/networking/usque/default.nix b/modules/networking/usque/default.nix index 36ec12e..9a639dd 100644 --- a/modules/networking/usque/default.nix +++ b/modules/networking/usque/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.networking.usque; + icons = config.desktop.icons.apps; usqueWarpScript = pkgs.writeShellApplication { name = "usque-warp"; @@ -76,12 +77,12 @@ in { name = "WARP Connect"; command = "${lib.getExe cfg.warp.package} connect"; - icon = "network-vpn-symbolic"; + icon = icons.usqueVpn; } { name = "WARP Disconnect"; command = "${lib.getExe cfg.warp.package} disconnect"; - icon = "network-vpn-disconnected-symbolic"; + icon = icons.usqueVpnDisconnected; } ]; }) diff --git a/modules/office/calcurse/default.nix b/modules/office/calcurse/default.nix index 6340cb8..0555ec6 100644 --- a/modules/office/calcurse/default.nix +++ b/modules/office/calcurse/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.office.calcurse; + icons = config.desktop.icons.apps; calcurseSync = pkgs.writeShellScriptBin "calcurse-sync" (builtins.readFile ./calcurse-sync.sh); @@ -92,7 +93,9 @@ in (lib.mkIf cfg.enable { home.packages = [ cfg.package ]; xdg.configFile."calcurse/conf" = { - text = builtins.replaceStrings [ "@@CALCURSE_ICON@@" ] [ "calendar" ] (builtins.readFile ./conf); + text = builtins.replaceStrings [ "@@CALCURSE_ICON@@" ] [ icons.calcurse ] ( + builtins.readFile ./conf + ); force = true; }; xdg.configFile."calcurse/keys" = { @@ -104,7 +107,7 @@ in xdg.desktopEntries."calcurse" = { name = "calcurse"; exec = "${lib.getExe config.terminal.kitty.package} --class calcurse -e ${lib.getExe cfg.package}"; - icon = "calendar"; + icon = icons.calcurse; categories = [ "Office" "Calendar" diff --git a/modules/security/gopass/default.nix b/modules/security/gopass/default.nix index 1bd63f8..2ee269c 100644 --- a/modules/security/gopass/default.nix +++ b/modules/security/gopass/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.security.gopass; + icons = config.desktop.icons.apps; in { imports = [ ./assertions.nix ]; @@ -111,7 +112,7 @@ in xdg.desktopEntries."gopass" = { name = "gopass"; exec = "${lib.getExe config.terminal.kitty.package} --class gopass -e ${lib.getExe cfg.package}"; - icon = "password-manager"; + icon = icons.gopass; comment = "Standard Unix password manager (Go implementation)"; categories = [ "Utility" ]; terminal = false; diff --git a/modules/security/gpg-tui/default.nix b/modules/security/gpg-tui/default.nix index 412331e..a4b64fd 100644 --- a/modules/security/gpg-tui/default.nix +++ b/modules/security/gpg-tui/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.security.gpg-tui; + icons = config.desktop.icons.apps; in { options.security.gpg-tui = { @@ -27,7 +28,7 @@ in xdg.desktopEntries."gpg-tui" = { name = "gpg-tui"; exec = "${lib.getExe config.terminal.kitty.package} --class gpg-tui -e ${lib.getExe cfg.package}"; - icon = "gpg"; + icon = icons.gpg; categories = [ "Security" ]; comment = "Terminal UI for GnuPG"; terminal = false; diff --git a/modules/system/btop/default.nix b/modules/system/btop/default.nix index 453bafb..a521c33 100644 --- a/modules/system/btop/default.nix +++ b/modules/system/btop/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.system.btop; + icons = config.desktop.icons.apps; in { imports = [ ./assertions.nix ]; @@ -53,7 +54,7 @@ in xdg.desktopEntries."btop" = { name = "btop++"; exec = "${lib.getExe config.terminal.kitty.package} --class btop -e ${lib.getExe cfg.package}"; - icon = "btop"; + icon = icons.btop; categories = [ "System" "Monitor" diff --git a/modules/system/systemctl-tui/default.nix b/modules/system/systemctl-tui/default.nix index 2091c57..8653a46 100644 --- a/modules/system/systemctl-tui/default.nix +++ b/modules/system/systemctl-tui/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.system.systemctl-tui; + icons = config.desktop.icons.apps; in { options.system.systemctl-tui = { @@ -27,7 +28,7 @@ in xdg.desktopEntries."systemctl-tui" = { name = "systemctl-tui"; exec = "${lib.getExe config.terminal.kitty.package} --class systemctl-tui -e ${lib.getExe cfg.package}"; - icon = "preferences-system"; + icon = icons.systemctl; categories = [ "System" ]; comment = "TUI for systemctl"; terminal = false; diff --git a/modules/web/aria2/default.nix b/modules/web/aria2/default.nix index b9b00f5..43853dc 100644 --- a/modules/web/aria2/default.nix +++ b/modules/web/aria2/default.nix @@ -6,6 +6,7 @@ }: let cfg = config.web.aria2; + icons = config.desktop.icons.apps; in { options.web.aria2 = { @@ -33,12 +34,12 @@ in { name = "aria2 Start"; command = "systemctl --user start aria2"; - icon = "folder-download"; + icon = icons.aria2; } { name = "aria2 Stop"; command = "systemctl --user stop aria2"; - icon = "folder-download"; + icon = icons.aria2; } ]; }) diff --git a/modules/web/chawan/default.nix b/modules/web/chawan/default.nix index 1e56f89..61a8aab 100644 --- a/modules/web/chawan/default.nix +++ b/modules/web/chawan/default.nix @@ -7,6 +7,7 @@ }: let cfg = config.web.chawan; + icons = config.desktop.icons.apps; in { imports = [ @@ -57,7 +58,7 @@ in xdg.desktopEntries."chawan" = { name = "Chawan"; exec = "${lib.getExe config.terminal.kitty.package} --class chawan -e ${lib.getExe cfg.package} ${cfg.home-url}"; - icon = "internet-web-browser"; + icon = icons.browser; categories = [ "Network" ]; comment = "Text-based web browser"; terminal = false; |
