Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

Merge pull request #253071 from linsui/yazi

nixos/yazi: init

authored by Weijia Wang and committed by GitHub 4fbea0f8 eb1c3455

+49
+49
nixos/modules/programs/yazi.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + let 4 + cfg = config.programs.yazi; 5 + 6 + settingsFormat = pkgs.formats.toml { }; 7 + 8 + names = [ "yazi" "theme" "keymap" ]; 9 + in 10 + { 11 + options.programs.yazi = { 12 + enable = lib.mkEnableOption (lib.mdDoc "yazi terminal file manager"); 13 + 14 + package = lib.mkPackageOptionMD pkgs "yazi" { }; 15 + 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 = lib.mdDoc '' 23 + Configuration included in `${name}.toml`. 24 + 25 + See https://github.com/sxyazi/yazi/blob/v${cfg.package.version}/config/docs/${name}.md for documentation. 26 + ''; 27 + })) 28 + names); 29 + }; 30 + default = { }; 31 + description = lib.mdDoc '' 32 + Configuration included in `$YAZI_CONFIG_HOME`. 33 + ''; 34 + }; 35 + }; 36 + 37 + config = lib.mkIf cfg.enable { 38 + environment = { 39 + systemPackages = [ cfg.package ]; 40 + variables.YAZI_CONFIG_HOME = "/etc/yazi/"; 41 + etc = lib.attrsets.mergeAttrsList (map 42 + (name: lib.optionalAttrs (cfg.settings.${name} != { }) { 43 + "yazi/${name}.toml".source = settingsFormat.generate "${name}.toml" cfg.settings.${name}; 44 + }) 45 + names); 46 + }; 47 + }; 48 + meta.maintainers = with lib.maintainers; [ linsui ]; 49 + }