mastodon: 4.3.1 -> 4.3.2 (#361487)
[NixPkgs.git] / pkgs / by-name / ya / yazi / package.nix
blob4378f814eea5d1a0e1b8e6665e3a462a47e91795
2   lib,
3   formats,
4   runCommand,
5   makeWrapper,
7   extraPackages ? [ ],
8   optionalDeps ? [
9     jq
10     poppler_utils
11     _7zz
12     ffmpegthumbnailer
13     fd
14     ripgrep
15     fzf
16     zoxide
17     imagemagick
18     chafa
19   ],
21   # deps
22   file,
23   yazi-unwrapped,
25   # optional deps
26   jq,
27   poppler_utils,
28   _7zz,
29   ffmpegthumbnailer,
30   fd,
31   ripgrep,
32   fzf,
33   zoxide,
34   imagemagick,
35   chafa,
37   settings ? { },
38   plugins ? { },
39   flavors ? { },
40   initLua ? null,
43 let
44   runtimePaths = [ file ] ++ optionalDeps ++ extraPackages;
46   settingsFormat = formats.toml { };
48   files = [
49     "yazi"
50     "theme"
51     "keymap"
52   ];
54   configHome =
55     if (settings == { } && initLua == null && plugins == { } && flavors == { }) then
56       null
57     else
58       runCommand "YAZI_CONFIG_HOME" { } ''
59         mkdir -p $out
60         ${lib.concatMapStringsSep "\n" (
61           name:
62           lib.optionalString (settings ? ${name} && settings.${name} != { }) ''
63             ln -s ${settingsFormat.generate "${name}.toml" settings.${name}} $out/${name}.toml
64           ''
65         ) files}
67         mkdir $out/plugins
68         ${lib.optionalString (plugins != { }) ''
69           ${lib.concatStringsSep "\n" (
70             lib.mapAttrsToList (name: value: "ln -s ${value} $out/plugins/${name}") plugins
71           )}
72         ''}
74         mkdir $out/flavors
75         ${lib.optionalString (flavors != { }) ''
76           ${lib.concatStringsSep "\n" (
77             lib.mapAttrsToList (name: value: "ln -s ${value} $out/flavors/${name}") flavors
78           )}
79         ''}
82         ${lib.optionalString (initLua != null) "ln -s ${initLua} $out/init.lua"}
83       '';
85 runCommand yazi-unwrapped.name
86   {
87     inherit (yazi-unwrapped) pname version meta;
89     nativeBuildInputs = [ makeWrapper ];
90   }
91   ''
92     mkdir -p $out/bin
93     ln -s ${yazi-unwrapped}/share $out/share
94     ln -s ${yazi-unwrapped}/bin/ya $out/bin/ya
95     makeWrapper ${yazi-unwrapped}/bin/yazi $out/bin/yazi \
96       --prefix PATH : ${lib.makeBinPath runtimePaths} \
97       ${lib.optionalString (configHome != null) "--set YAZI_CONFIG_HOME ${configHome}"}
98   ''