grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / programs / yazi.nix
blobd9f38d8d81185aeab2e0ffbf46dcaf4ca8590ddf
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.programs.yazi;
6   settingsFormat = pkgs.formats.toml { };
8   files = [ "yazi" "theme" "keymap" ];
9 in
11   options.programs.yazi = {
12     enable = lib.mkEnableOption "yazi terminal file manager";
14     package = lib.mkPackageOption pkgs "yazi" { };
16     settings = lib.mkOption {
17       type = with lib.types; submodule {
18         options = (lib.listToAttrs (map
19           (name: lib.nameValuePair name (lib.mkOption {
20             inherit (settingsFormat) type;
21             default = { };
22             description = ''
23               Configuration included in `${name}.toml`.
25               See https://yazi-rs.github.io/docs/configuration/${name}/ for documentation.
26             '';
27           }))
28           files));
29       };
30       default = { };
31       description = ''
32         Configuration included in `$YAZI_CONFIG_HOME`.
33       '';
34     };
36     initLua = lib.mkOption {
37       type = with lib.types; nullOr path;
38       default = null;
39       description = ''
40         The init.lua for Yazi itself.
41       '';
42       example = lib.literalExpression "./init.lua";
43     };
45     plugins = lib.mkOption {
46       type = with lib.types; attrsOf (oneOf [ path package ]);
47       default = { };
48       description = ''
49         Lua plugins.
51         See https://yazi-rs.github.io/docs/plugins/overview/ for documentation.
52       '';
53       example = lib.literalExpression ''
54         {
55           foo = ./foo;
56           bar = pkgs.bar;
57         }
58       '';
59     };
61     flavors = lib.mkOption {
62       type = with lib.types; attrsOf (oneOf [ path package ]);
63       default = { };
64       description = ''
65         Pre-made themes.
67         See https://yazi-rs.github.io/docs/flavors/overview/ for documentation.
68       '';
69       example = lib.literalExpression ''
70         {
71           foo = ./foo;
72           bar = pkgs.bar;
73         }
74       '';
75     };
77   };
79   config = lib.mkIf cfg.enable {
80     environment.systemPackages = [
81       (cfg.package.override {
82         inherit (cfg) settings initLua plugins flavors;
83       })
84     ];
85   };
87   meta = {
88     maintainers = with lib.maintainers; [ linsui ];
89   };