diff --git a/modules/home/wm/default.nix b/modules/home/wm/default.nix index 6a615e5..449918a 100644 --- a/modules/home/wm/default.nix +++ b/modules/home/wm/default.nix @@ -36,6 +36,31 @@ in i3bar = { enable = mkRelatedOption "i3bar configuration" [ "i3" ]; + + vpn = { + enable = my.mkDisableOption "VPN configuration"; + + blockConfigs = mkOption { + type = with types; listOf (attrsOf str); + default = [ + { + active_format = " VPN "; + service = "wg-quick-wg"; + } + { + active_format = " VPN (LAN) "; + service = "wg-quick-lan"; + } + ]; + example = [ + { + active_format = " WORK "; + service = "some-service-name"; + } + ]; + description = "list of block configurations, merged with the defauls"; + }; + }; }; rofi = { diff --git a/modules/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix index 50913a4..5dbb505 100644 --- a/modules/home/wm/i3bar/default.nix +++ b/modules/home/wm/i3bar/default.nix @@ -59,6 +59,19 @@ in { block = "disk_space"; } + (lib.optionals cfg.vpn.enable + ( + let + defaults = { + block = "service_status"; + active_state = "Good"; + inactive_format = ""; + inactive_state = "Idle"; + }; + in + builtins.map (block: defaults // block) cfg.vpn.blockConfigs + ) + ) { block = "net"; format = " $icon{| $ssid|} $ip{| $signal_strength|} ";