aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@gmail.com>2026-09-26 23:07:08 +0530
committerArpit Chakladar <arpitchakladar@gmail.com>2026-09-26 23:07:08 +0530
commit5c8698ea33bae80f6d247ad295a5ce1c30dfde10 (patch)
tree731b3ca2c1c115f1d7d9b093b306117ebecaab78
parent8c11cd451c5bb42b306c7d65392798350a26fce7 (diff)
downloadhome-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.nix3
-rw-r--r--modules/communication/senpai/default.nix3
-rw-r--r--modules/desktop/default.nix1
-rw-r--r--modules/desktop/icons/default.nix190
-rw-r--r--modules/desktop/niri/default.nix2
-rw-r--r--modules/development/lazygit/default.nix5
-rw-r--r--modules/development/opencode/default.nix3
-rw-r--r--modules/gaming/heroic/default.nix3
-rw-r--r--modules/networking/bluetui/default.nix3
-rw-r--r--modules/networking/impala/default.nix3
-rw-r--r--modules/networking/usque/default.nix5
-rw-r--r--modules/office/calcurse/default.nix7
-rw-r--r--modules/security/gopass/default.nix3
-rw-r--r--modules/security/gpg-tui/default.nix3
-rw-r--r--modules/system/btop/default.nix3
-rw-r--r--modules/system/systemctl-tui/default.nix3
-rw-r--r--modules/web/aria2/default.nix5
-rw-r--r--modules/web/chawan/default.nix3
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;