From 350fcfbc7b0273e415221cbe70d5e1671ff08822 Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Sun, 5 Oct 2025 10:53:55 -0600 Subject: [PATCH 1/5] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'authentik-nix': 'github:nix-community/authentik-nix/04db807ac00ba6d62808ffab18b3b6d500b6f7cb?narHash=sha256-2Zbde5orbGsYdzroe51P1AW8pFMCNyqHgLjmHYJvOmE%3D' (2025-09-12) → 'github:nix-community/authentik-nix/69fac057b2e553ee17c9a09b822d735823d65a6c?narHash=sha256-yiv/g/tiJI3PI95F7vhTnaf1TDsIkFLrmmFTjWfb6pQ%3D' (2025-10-01) • Updated input 'authentik-nix/authentik-src': 'github:goauthentik/authentik/dd7c6b29d950664deadbcf5390272619a8bf9a5e?narHash=sha256-5l1g55b0xozGg0NaZFimiO5JbHGcudaNSEn1/XsweaU%3D' (2025-08-22) → 'github:goauthentik/authentik/8d3a289d12c7de2f244c76493af7880f70d08af2?narHash=sha256-pIzDaoDWc58cY/XhsyweCwc4dfRvkaT/zqsV1gDSnCI%3D' (2025-09-30) • Updated input 'authentik-nix/flake-parts': 'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18?narHash=sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8%3D' (2025-08-06) → 'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751?narHash=sha256-%2BuWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw%3D' (2025-09-01) • Updated input 'authentik-nix/flake-parts/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/0f36c44e01a6129be94e3ade315a5883f0228a6e?narHash=sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA%3D' (2025-07-27) → 'github:nix-community/nixpkgs.lib/a73b9c743612e4244d865a2fdee11865283c04e6?narHash=sha256-x2rJ%2BOvzq0sCMpgfgGaaqgBSwY%2BLST%2BWbZ6TytnT9Rk%3D' (2025-08-10) • Updated input 'authentik-nix/pyproject-build-systems': 'github:pyproject-nix/build-system-pkgs/6edb3ae27395cd88be3d64b732d1539957dad59c?narHash=sha256-4jc3JDQt75fYXFrglgqyzF6C6zLU0QGLymzian4aP%2BU%3D' (2025-08-25) → 'github:pyproject-nix/build-system-pkgs/5b8e37fe0077db5c1df3a5ee90a651345f085d38?narHash=sha256-6nzSZl28IwH2Vx8YSmd3t6TREHpDbKlDPK%2Bdq1LKIZQ%3D' (2025-09-08) • Updated input 'authentik-nix/pyproject-nix': 'github:pyproject-nix/pyproject.nix/030dffc235dcf240d918c651c78dc5f158067b51?narHash=sha256-5aJM14MpoLk2cdZAetu60OkLQrtFLWTICAyn1EP7ZpM%3D' (2025-08-28) → 'github:pyproject-nix/pyproject.nix/8d77f342d66ad1601cdb9d97e9388b69f64d4c8e?narHash=sha256-6pNlGhwOIMfhe/RLjHdpXveKS4FyLHvlGe%2BKtjDild4%3D' (2025-09-07) • Updated input 'authentik-nix/uv2nix': 'github:pyproject-nix/uv2nix/0529e6d8227517205afcd1b37eee3088db745730?narHash=sha256-ALXRHIMXQ4qVNfCbcWykC23MjMwUoHn9BreoBfqmq0Y%3D' (2025-08-29) → 'github:pyproject-nix/uv2nix/780494c40895bb7419a73d942bee326291e80b3b?narHash=sha256-7Hwz0vfHuFqCo5v7Q07GQgLBWuPvZCuf/5/pk4NoADg%3D' (2025-09-15) • Updated input 'home-manager': 'github:nix-community/home-manager/f21d9167782c086a33ad53e2311854a8f13c281e?narHash=sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo%3D' (2025-09-14) → 'github:nix-community/home-manager/3b955f5f0a942f9f60cdc9cacb7844335d0f21c3?narHash=sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA%3D' (2025-09-21) • Updated input 'nixpkgs': 'github:nixos/nixpkgs/9a094440e02a699be5c57453a092a8baf569bdad?narHash=sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs%3D' (2025-09-14) → 'github:nixos/nixpkgs/3bcc93c5f7a4b30335d31f21e2f1281cba68c318?narHash=sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI%3D' (2025-10-04) • Updated input 'nur': 'github:nix-community/NUR/087c74cd9cc63e44dd20f1dcc5cdb4e5fddc9e14?narHash=sha256-EHZWQe3a04DvOlUR2j7LwGCaGqYTStYExpstYezfq3c%3D' (2025-09-14) → 'github:nix-community/NUR/ba4952df76bc6179d0bb3b9e7b4ff8517cfec870?narHash=sha256-bPh7JZnT7WydN4E1kVLq1l87NlzuD2pz1GYwvYSWo1U%3D' (2025-10-05) • Updated input 'nur/nixpkgs': 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13) → 'github:nixos/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D' (2025-10-02) • Updated input 'trivionomicon': 'path:./trivionomicon' → 'path:./trivionomicon' • Updated input 'unstable': 'github:nixos/nixpkgs/c23193b943c6c689d70ee98ce3128239ed9e32d1?narHash=sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820%3D' (2025-09-13) → 'github:nixos/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee?narHash=sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs%3D' (2025-10-02) • Updated input 'vpsadminos': 'github:vpsfreecz/vpsadminos/20f55b1d9bee4fdab62494d4471854d6586d3637?narHash=sha256-%2BYzznL/mHiSjDFC8vJsSgQ%2BpvjhqWMsLRjegEKSNv/4%3D' (2025-08-23) → 'github:vpsfreecz/vpsadminos/087b340cc897083a31defafd6a6f1c66e5bf48eb?narHash=sha256-H0FC6QbxgEE79pXwlPVvWUNenQOTMldzlWSij5pPyMk%3D' (2025-10-03) --- flake.lock | 80 +++++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/flake.lock b/flake.lock index 3963492..64c06da 100644 --- a/flake.lock +++ b/flake.lock @@ -16,11 +16,11 @@ "uv2nix": "uv2nix" }, "locked": { - "lastModified": 1757676906, - "narHash": "sha256-2Zbde5orbGsYdzroe51P1AW8pFMCNyqHgLjmHYJvOmE=", + "lastModified": 1759322529, + "narHash": "sha256-yiv/g/tiJI3PI95F7vhTnaf1TDsIkFLrmmFTjWfb6pQ=", "owner": "nix-community", "repo": "authentik-nix", - "rev": "04db807ac00ba6d62808ffab18b3b6d500b6f7cb", + "rev": "69fac057b2e553ee17c9a09b822d735823d65a6c", "type": "github" }, "original": { @@ -32,16 +32,16 @@ "authentik-src": { "flake": false, "locked": { - "lastModified": 1755873658, - "narHash": "sha256-5l1g55b0xozGg0NaZFimiO5JbHGcudaNSEn1/XsweaU=", + "lastModified": 1759190535, + "narHash": "sha256-pIzDaoDWc58cY/XhsyweCwc4dfRvkaT/zqsV1gDSnCI=", "owner": "goauthentik", "repo": "authentik", - "rev": "dd7c6b29d950664deadbcf5390272619a8bf9a5e", + "rev": "8d3a289d12c7de2f244c76493af7880f70d08af2", "type": "github" }, "original": { "owner": "goauthentik", - "ref": "version/2025.8.1", + "ref": "version/2025.8.4", "repo": "authentik", "type": "github" } @@ -67,11 +67,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -216,11 +216,11 @@ ] }, "locked": { - "lastModified": 1757808926, - "narHash": "sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo=", + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", "owner": "nix-community", "repo": "home-manager", - "rev": "f21d9167782c086a33ad53e2311854a8f13c281e", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", "type": "github" }, "original": { @@ -345,11 +345,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1753579242, - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", "type": "github" }, "original": { @@ -360,11 +360,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757810152, - "narHash": "sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs=", + "lastModified": 1759580034, + "narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9a094440e02a699be5c57453a092a8baf569bdad", + "rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318", "type": "github" }, "original": { @@ -376,11 +376,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1757745802, - "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", + "lastModified": 1759381078, + "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", + "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", "type": "github" }, "original": { @@ -396,11 +396,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1757879066, - "narHash": "sha256-EHZWQe3a04DvOlUR2j7LwGCaGqYTStYExpstYezfq3c=", + "lastModified": 1759682435, + "narHash": "sha256-bPh7JZnT7WydN4E1kVLq1l87NlzuD2pz1GYwvYSWo1U=", "owner": "nix-community", "repo": "NUR", - "rev": "087c74cd9cc63e44dd20f1dcc5cdb4e5fddc9e14", + "rev": "ba4952df76bc6179d0bb3b9e7b4ff8517cfec870", "type": "github" }, "original": { @@ -425,11 +425,11 @@ ] }, "locked": { - "lastModified": 1756087852, - "narHash": "sha256-4jc3JDQt75fYXFrglgqyzF6C6zLU0QGLymzian4aP+U=", + "lastModified": 1757296493, + "narHash": "sha256-6nzSZl28IwH2Vx8YSmd3t6TREHpDbKlDPK+dq1LKIZQ=", "owner": "pyproject-nix", "repo": "build-system-pkgs", - "rev": "6edb3ae27395cd88be3d64b732d1539957dad59c", + "rev": "5b8e37fe0077db5c1df3a5ee90a651345f085d38", "type": "github" }, "original": { @@ -446,11 +446,11 @@ ] }, "locked": { - "lastModified": 1756395552, - "narHash": "sha256-5aJM14MpoLk2cdZAetu60OkLQrtFLWTICAyn1EP7ZpM=", + "lastModified": 1757246327, + "narHash": "sha256-6pNlGhwOIMfhe/RLjHdpXveKS4FyLHvlGe+KtjDild4=", "owner": "pyproject-nix", "repo": "pyproject.nix", - "rev": "030dffc235dcf240d918c651c78dc5f158067b51", + "rev": "8d77f342d66ad1601cdb9d97e9388b69f64d4c8e", "type": "github" }, "original": { @@ -570,11 +570,11 @@ }, "unstable": { "locked": { - "lastModified": 1757745802, - "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", + "lastModified": 1759381078, + "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", + "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", "type": "github" }, "original": { @@ -596,11 +596,11 @@ ] }, "locked": { - "lastModified": 1756466761, - "narHash": "sha256-ALXRHIMXQ4qVNfCbcWykC23MjMwUoHn9BreoBfqmq0Y=", + "lastModified": 1757925761, + "narHash": "sha256-7Hwz0vfHuFqCo5v7Q07GQgLBWuPvZCuf/5/pk4NoADg=", "owner": "pyproject-nix", "repo": "uv2nix", - "rev": "0529e6d8227517205afcd1b37eee3088db745730", + "rev": "780494c40895bb7419a73d942bee326291e80b3b", "type": "github" }, "original": { @@ -611,11 +611,11 @@ }, "vpsadminos": { "locked": { - "lastModified": 1755964485, - "narHash": "sha256-+YzznL/mHiSjDFC8vJsSgQ+pvjhqWMsLRjegEKSNv/4=", + "lastModified": 1759490618, + "narHash": "sha256-H0FC6QbxgEE79pXwlPVvWUNenQOTMldzlWSij5pPyMk=", "owner": "vpsfreecz", "repo": "vpsadminos", - "rev": "20f55b1d9bee4fdab62494d4471854d6586d3637", + "rev": "087b340cc897083a31defafd6a6f1c66e5bf48eb", "type": "github" }, "original": { From 30fe2a2f06346ed85ea7acf3e99f403c7f1ef046 Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Sun, 5 Oct 2025 15:33:12 -0600 Subject: [PATCH 2/5] waybar: add idle inhibitor --- home/modules/gui/waybar.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home/modules/gui/waybar.nix b/home/modules/gui/waybar.nix index 81d046a..ddf0799 100644 --- a/home/modules/gui/waybar.nix +++ b/home/modules/gui/waybar.nix @@ -28,6 +28,7 @@ in { modules-right = [ + "idle_inhibitor" "keyboard-state" "privacy" "cpu" @@ -56,6 +57,13 @@ in { unlocked = ""; }; }; + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = " "; + deactivated = " "; + }; + }; tray = { icon-size = 13; spacing = 8; From c3c05af849c7343ecca941bdbfdc140fa6bae75c Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Tue, 7 Oct 2025 13:45:47 -0600 Subject: [PATCH 3/5] home baseline: add 7zip --- home/modules/baseline.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/modules/baseline.nix b/home/modules/baseline.nix index 6883185..f432d0a 100644 --- a/home/modules/baseline.nix +++ b/home/modules/baseline.nix @@ -46,6 +46,7 @@ in { man-pages man-pages-posix nmap + p7zip pv ripgrep tree From 606a6cae3747616c48eadc96799135f5f3434b34 Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Tue, 7 Oct 2025 15:12:57 -0600 Subject: [PATCH 4/5] waybar: move waybar to trivionomicon --- home/modules/defaultDesktopPack.nix | 7 + home/modules/gui/default.nix | 1 - home/modules/gui/waybar.nix | 208 ---------------------------- 3 files changed, 7 insertions(+), 209 deletions(-) delete mode 100644 home/modules/gui/waybar.nix diff --git a/home/modules/defaultDesktopPack.nix b/home/modules/defaultDesktopPack.nix index a6021e5..5985943 100644 --- a/home/modules/defaultDesktopPack.nix +++ b/home/modules/defaultDesktopPack.nix @@ -44,6 +44,13 @@ in { zola ]; + trivium = { + waybar = { + enable = true; + fontFamily = "JetBrainsMono Nerd Font"; + }; + }; + local = { baseline.enable = true; diff --git a/home/modules/gui/default.nix b/home/modules/gui/default.nix index 1a72ed9..fd5ec1f 100644 --- a/home/modules/gui/default.nix +++ b/home/modules/gui/default.nix @@ -51,7 +51,6 @@ in { ./fonts.nix ./theme.nix ./sway.nix - ./waybar.nix ./mako.nix ]; diff --git a/home/modules/gui/waybar.nix b/home/modules/gui/waybar.nix deleted file mode 100644 index ddf0799..0000000 --- a/home/modules/gui/waybar.nix +++ /dev/null @@ -1,208 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.local.gui; - laptop = config.local.defaultDesktopPack.laptop; -in { - config = mkIf cfg.enable { - programs.waybar = { - enable = true; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 20; - spacing = 0; - - modules-left = [ - "sway/workspaces" - "sway/mode" - ]; - modules-center = [ - "clock" - ]; - - modules-right = - [ - "idle_inhibitor" - "keyboard-state" - "privacy" - "cpu" - "memory" - "disk" - "temperature" - "tray" - ] - ++ lists.optionals laptop [ - "battery" - ]; - battery = mkIf laptop { - format = "{capacity}% {icon}"; - format-plugged = "{capacity}% 󱐥{icon}"; - format-icons = ["󰂃" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; - states = { - warning = 20; - critical = 10; - }; - }; - keyboard-state = { - capslock = true; - format.capslock = "{icon}"; - format-icons = { - locked = "󰘲 "; - unlocked = ""; - }; - }; - idle_inhibitor = { - format = "{icon}"; - format-icons = { - activated = " "; - deactivated = " "; - }; - }; - tray = { - icon-size = 13; - spacing = 8; - }; - clock = { - interval = 60; - format = "{:%A %B %d %Y %H:%M}"; - tooltip = false; - }; - cpu = { - format = " {usage}%"; - tooltip = false; - }; - memory = { - format = " {percentage}% "; - tooltip = true; - tooltip-format = "{used}/{total}"; - }; - disk = { - format = " {specific_used:0.0f}/{specific_total:0.0f}"; - unit = "GiB"; - tooltip = false; - }; - privacy = { - icon-size = 12; - }; - }; - }; - style = '' - * { - font-family: "JetBrainsMono Nerd Font", monospace; - font-size: 12px; - font-weight: 500; - border: none; - box-shadow: none; - } - - /* Entire bar: fully transparent, no border */ - window#waybar { - background: transparent; - color: #eaeaea; - margin: 0; - padding: 0; - } - - /* Optional: small edge breathing room (comment out if you want edge-to-edge) */ - /* window#waybar { margin: 3px 6px 0 6px; } */ - - /* Module containers */ - .modules-left, .modules-center, .modules-right { - padding: 0; - margin: 0 6px; - } - - /* Subtle separators between modules (no boxes) */ - .modules-left > widget:not(:first-child), - .modules-center > widget:not(:first-child), - .modules-right > widget:not(:first-child) { - margin-left: 12px; - padding-left: 12px; - border-left: 1px solid rgba(255, 255, 255, 0.08); - } - - /* Tightest possible workspaces */ - #workspaces { padding: 0; margin: 0; } - #workspaces button { - margin: 0; - padding: 0 3px; - min-width: 0; - border-radius: 0; - background: transparent; - color: #cfcfcf; - } - #workspaces button:hover { - background: rgba(255, 255, 255, 0.06); - } - #workspaces button.active, - #workspaces button.focused { - background: rgba(255, 255, 255, 0.10); - color: #ffffff; - box-shadow: inset 0 -2px #ffffff; - } - #workspaces button.urgent { - background: rgba(255, 80, 80, 0.25); - box-shadow: inset 0 -2px #ff5050; - } - - /* Focused window title: single line, no glow */ - #window { - padding: 0 6px; - margin: 0; - color: #dedede; - } - - /* Sway mode indicator: visible only when active, no bloat */ - #mode { - padding: 0 6px; - margin: 0; - background: rgba(255, 255, 255, 0.10); - color: #ffffff; - box-shadow: inset 0 -2px #ffffff; - } - - /* Status modules — keep them flat and compact */ - #clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray { - padding: 0 6px; - margin: 0; - background: transparent; - color: #eaeaea; - } - - /* States (battery, network, audio) */ - #battery.charging { color: #27f902; } - #battery.warning:not(.charging) { color: #fc8b02; } - #battery.critical:not(.charging) { color: #fc0000; } - - #network.disconnected { color: #ffb4b4; } - #pulseaudio.muted { color: #9aa0a6; } - - /* Tray: compress icons */ - #tray > .passive { opacity: 0.6; } - #tray > .needs-attention { opacity: 1; } - - /* Tooltips: clean and readable */ - tooltip { - background: rgba(30, 30, 30, 0.95); - border: 1px solid rgba(255, 255, 255, 0.08); - color: #eaeaea; - padding: 6px 8px; - } - - /* Remove any leftover borders around everything */ - #custom-*, #idle_inhibitor, #privacy, #bluetooth { - border: none; - background: transparent; - margin: 0; - padding: 0 6px; - } - ''; - }; - }; -} From c077841ce5905c83440df59814645b482ca67c83 Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Tue, 7 Oct 2025 15:13:17 -0600 Subject: [PATCH 5/5] waybar: add waybar module --- trivionomicon/modules/waybar/default.nix | 13 ++ trivionomicon/modules/waybar/hm.nix | 207 +++++++++++++++++++++++ trivionomicon/modules/waybar/options.nix | 23 +++ 3 files changed, 243 insertions(+) create mode 100644 trivionomicon/modules/waybar/default.nix create mode 100644 trivionomicon/modules/waybar/hm.nix create mode 100644 trivionomicon/modules/waybar/options.nix diff --git a/trivionomicon/modules/waybar/default.nix b/trivionomicon/modules/waybar/default.nix new file mode 100644 index 0000000..97cacf3 --- /dev/null +++ b/trivionomicon/modules/waybar/default.nix @@ -0,0 +1,13 @@ +{ + config, + lib, + pkgs, + doctrine, + ... +}: +doctrine.lib.mkModule { + inherit config; + name = "waybar"; + hm = ./hm.nix; + options = ./options.nix; +} diff --git a/trivionomicon/modules/waybar/hm.nix b/trivionomicon/modules/waybar/hm.nix new file mode 100644 index 0000000..1bfa3e2 --- /dev/null +++ b/trivionomicon/modules/waybar/hm.nix @@ -0,0 +1,207 @@ +{ + lib, + pkgs, + cfg, + doctrine, + ... +}: +with lib; { + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 20; + spacing = 0; + + modules-left = [ + "sway/workspaces" + "sway/mode" + ]; + modules-center = [ + "clock" + ]; + + modules-right = + [ + "keyboard-state" + "privacy" + "idle_inhibitor" + "cpu" + "memory" + "disk" + "temperature" + "tray" + ] + ++ lists.optionals cfg.battery [ + "battery" + ]; + battery = mkIf cfg.battery { + format = "{capacity}% {icon}"; + format-plugged = "{capacity}% 󱐥{icon}"; + format-icons = ["󰂃" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; + states = { + warning = 20; + critical = 10; + }; + }; + keyboard-state = { + capslock = true; + format.capslock = "{icon}"; + format-icons = { + locked = "󰘲 "; + unlocked = ""; + }; + }; + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = " "; + deactivated = " "; + }; + }; + tray = { + icon-size = 13; + spacing = 8; + }; + clock = { + interval = 60; + format = "{:%A %B %d %Y %H:%M}"; + tooltip = false; + }; + cpu = { + format = " {usage}%"; + tooltip = false; + }; + memory = { + format = " {percentage}% "; + tooltip = true; + tooltip-format = "{used}/{total}"; + }; + disk = { + format = " {specific_used:0.0f}/{specific_total:0.0f}"; + unit = "GiB"; + tooltip = false; + }; + temperature = { + format = " {temperatureC}°C"; + }; + privacy = { + icon-size = 12; + }; + }; + }; + style = '' + * { + font-family: "${cfg.fontFamily}", monospace; + font-size: ${cfg.fontSize}; + font-weight: 500; + border: none; + box-shadow: none; + } + + /* Entire bar: fully transparent, no border */ + window#waybar { + background: transparent; + color: #eaeaea; + margin: 0; + padding: 0; + } + + /* Optional: small edge breathing room (comment out if you want edge-to-edge) */ + /* window#waybar { margin: 3px 6px 0 6px; } */ + + /* Module containers */ + .modules-left, .modules-center, .modules-right { + padding: 0; + margin: 0 6px; + } + + /* Subtle separators between modules (no boxes) */ + .modules-left > widget:not(:first-child), + .modules-center > widget:not(:first-child), + .modules-right > widget:not(:first-child) { + margin-left: 12px; + padding-left: 12px; + border-left: 1px solid rgba(255, 255, 255, 0.08); + } + + /* Tightest possible workspaces */ + #workspaces { padding: 0; margin: 0; } + #workspaces button { + margin: 0; + padding: 0 3px; + min-width: 0; + border-radius: 0; + background: transparent; + color: #cfcfcf; + } + #workspaces button:hover { + background: rgba(255, 255, 255, 0.06); + } + #workspaces button.active, + #workspaces button.focused { + background: rgba(255, 255, 255, 0.10); + color: #ffffff; + box-shadow: inset 0 -2px #ffffff; + } + #workspaces button.urgent { + background: rgba(255, 80, 80, 0.25); + box-shadow: inset 0 -2px #ff5050; + } + + /* Focused window title: single line, no glow */ + #window { + padding: 0 6px; + margin: 0; + color: #dedede; + } + + /* Sway mode indicator: visible only when active, no bloat */ + #mode { + padding: 0 6px; + margin: 0; + background: rgba(255, 255, 255, 0.10); + color: #ffffff; + box-shadow: inset 0 -2px #ffffff; + } + + /* Status modules — keep them flat and compact */ + #clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray { + padding: 0 6px; + margin: 0; + background: transparent; + color: #eaeaea; + } + + /* States (battery, network, audio) */ + #battery.charging { color: #27f902; } + #battery.warning:not(.charging) { color: #fc8b02; } + #battery.critical:not(.charging) { color: #fc0000; } + + #network.disconnected { color: #ffb4b4; } + #pulseaudio.muted { color: #9aa0a6; } + + /* Tray: compress icons */ + #tray > .passive { opacity: 0.6; } + #tray > .needs-attention { opacity: 1; } + + /* Tooltips: clean and readable */ + tooltip { + background: rgba(30, 30, 30, 0.95); + border: 1px solid rgba(255, 255, 255, 0.08); + color: #eaeaea; + padding: 6px 8px; + } + + /* Remove any leftover borders around everything */ + #custom-*, #idle_inhibitor, #privacy, #bluetooth { + border: none; + background: transparent; + margin: 0; + padding: 0 6px; + } + ''; + }; +} diff --git a/trivionomicon/modules/waybar/options.nix b/trivionomicon/modules/waybar/options.nix new file mode 100644 index 0000000..b2daa33 --- /dev/null +++ b/trivionomicon/modules/waybar/options.nix @@ -0,0 +1,23 @@ +{lib, ...}: +with lib.types; { + hm = { + battery = lib.mkOption { + type = bool; + default = false; + description = '' + `true` to display battery info + ''; + }; + fontFamily = lib.mkOption { + type = str; + example = "JetBrainsMono Nerd Font"; + description = '' + needs to be a nerdfont + ''; + }; + fontSize = lib.mkOption { + type = str; + default = "12px"; + }; + }; +}