{ config, lib, pkgs, ... }: let cfg = config.programs.zed-editor; settingsFormat = pkgs.formats.json { }; in { options.programs.zed-editor = { enable = lib.mkEnableOption "Zed, a text editor"; package = lib.mkPackageOption pkgs "zed-editor" { }; settings = lib.mkOption { type = settingsFormat.type; description = '' Configuration settings to be put in {file}`$XDG_CONFIG_HOME/zed/settings.json`}. ''; default = { }; example = { "autosave" = "off"; "confirm_quit" = true; }; }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ { home.packages = [ cfg.package ]; } (lib.mkIf (cfg.settings != { }) { xdg.configFile."zed/settings.json".source = settingsFormat.generate "zed-settings" cfg.settings; }) ]); }