mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
`literalExpression` is intended just to signify code that needs to stay a string that gets represented exactly as-is for docs. It has been misused heavily and people get confused repeatedly on when or not to use it because of the rampant misuse.
80 lines
1.8 KiB
Nix
80 lines
1.8 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) mkIf mkOption types;
|
|
|
|
cfg = config.programs.wofi;
|
|
|
|
toConfig =
|
|
attrs:
|
|
''
|
|
# Generated by Home Manager.
|
|
''
|
|
+ lib.generators.toKeyValue { } (lib.filterAttrs (_name: value: value != null) attrs);
|
|
in
|
|
{
|
|
meta.maintainers = [ lib.maintainers.christoph-heiss ];
|
|
|
|
options.programs.wofi = {
|
|
enable = lib.mkEnableOption "wofi: a launcher/menu program for wlroots based wayland compositors such as sway";
|
|
|
|
package = lib.mkPackageOption pkgs "wofi" { nullable = true; };
|
|
|
|
settings = mkOption {
|
|
default = { };
|
|
type = types.attrs;
|
|
description = ''
|
|
Configuration options for wofi. See
|
|
{manpage}`wofi(5)`.
|
|
'';
|
|
example = {
|
|
location = "bottom-right";
|
|
allow_markup = true;
|
|
width = 250;
|
|
};
|
|
};
|
|
|
|
style = mkOption {
|
|
default = null;
|
|
type = with types; nullOr (either lines path);
|
|
example = ''
|
|
* {
|
|
font-family: monospace;
|
|
}
|
|
|
|
window {
|
|
background-color: #7c818c;
|
|
}
|
|
'';
|
|
description = ''
|
|
CSS style for wofi to use as a stylesheet. See
|
|
{manpage}`wofi(7)`
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
assertions = [
|
|
(lib.hm.assertions.assertPlatform "programs.wofi" pkgs lib.platforms.linux)
|
|
];
|
|
|
|
home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
|
|
|
|
xdg.configFile = lib.mkMerge [
|
|
(mkIf (cfg.settings != { }) {
|
|
"wofi/config".text = toConfig cfg.settings;
|
|
})
|
|
(
|
|
let
|
|
styleFile = if lib.isString cfg.style then pkgs.writeText "wofi-style" cfg.style else cfg.style;
|
|
in
|
|
mkIf (cfg.style != null) { "wofi/style.css".source = styleFile; }
|
|
)
|
|
];
|
|
};
|
|
}
|