Swaynag is a replacement of i3-nag for sway. Swaynag is embedded in Sway's build process albeit it is not an integral part of Sway, therefore it has been added under `wayland.windowManager.sway` instead of `programs`. It can be moved at a later time if necessary. Two unit tests were added validate the module behavior for an empty configuration and the example configuration.main
parent
1abd311eef
commit
15ae861e1b
@ -0,0 +1,70 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.wayland.windowManager.sway.swaynag; |
||||
|
||||
iniFormat = pkgs.formats.ini { }; |
||||
|
||||
confFormat = with types; |
||||
let |
||||
confAtom = nullOr (oneOf [ bool int float str ]) // { |
||||
description = "Swaynag config atom (null, bool, int, float, str)"; |
||||
}; |
||||
in attrsOf confAtom; |
||||
in { |
||||
meta.maintainers = with maintainers; [ polykernel ]; |
||||
|
||||
options = { |
||||
wayland.windowManager.sway.swaynag = { |
||||
enable = mkEnableOption |
||||
"configuration of swaynag, a lightweight error bar for sway"; |
||||
|
||||
settings = mkOption { |
||||
type = types.attrsOf confFormat; |
||||
default = { }; |
||||
description = '' |
||||
Configuration written to |
||||
<filename>$XDG_CONFIG_HOME/swaynag/config</filename>. |
||||
</para><para> |
||||
See |
||||
<citerefentry> |
||||
<refentrytitle>swaynag</refentrytitle> |
||||
<manvolnum>5</manvolnum> |
||||
</citerefentry> |
||||
for a list of avaliable options and an example configuration. |
||||
Note, configurations declared under <literal><config></literal> |
||||
will override the default type values of swaynag. |
||||
''; |
||||
example = literalExpression '' |
||||
{ |
||||
"<config>" = { |
||||
edge = "bottom"; |
||||
font = "Dina 12"; |
||||
}; |
||||
|
||||
green = { |
||||
edge = "top"; |
||||
background = "00AA00"; |
||||
text = "FFFFFF"; |
||||
button-background = "00CC00"; |
||||
message-padding = 10; |
||||
}; |
||||
} |
||||
''; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
assertions = [ |
||||
(hm.assertions.assertPlatform "wayland.windowManager.sway.swaynag" pkgs |
||||
platforms.linux) |
||||
]; |
||||
|
||||
xdg.configFile."swaynag/config" = mkIf (cfg.settings != { }) { |
||||
source = iniFormat.generate "swaynag.conf" cfg.settings; |
||||
}; |
||||
}; |
||||
} |
@ -0,0 +1,15 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
{ |
||||
config = { |
||||
wayland.windowManager.sway.swaynag = { |
||||
enable = true; |
||||
|
||||
settings = { }; |
||||
}; |
||||
|
||||
nmt.script = '' |
||||
assertPathNotExists home-files/.config/swaynag |
||||
''; |
||||
}; |
||||
} |
@ -0,0 +1,10 @@ |
||||
[<config>] |
||||
edge=bottom |
||||
font=Dina 12 |
||||
|
||||
[green] |
||||
background=00AA00 |
||||
button-background=00CC00 |
||||
edge=top |
||||
message-padding=10 |
||||
text=FFFFFF |
@ -0,0 +1,30 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
{ |
||||
config = { |
||||
wayland.windowManager.sway.swaynag = { |
||||
enable = true; |
||||
|
||||
settings = { |
||||
"<config>" = { |
||||
edge = "bottom"; |
||||
font = "Dina 12"; |
||||
}; |
||||
|
||||
green = { |
||||
edge = "top"; |
||||
background = "00AA00"; |
||||
text = "FFFFFF"; |
||||
button-background = "00CC00"; |
||||
message-padding = 10; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
nmt.script = '' |
||||
assertFileContent \ |
||||
home-files/.config/swaynag/config \ |
||||
${./swaynag-example-settings-expected.conf} |
||||
''; |
||||
}; |
||||
} |
Loading…
Reference in new issue