From fab8f811218541932edf76120ebb28041eea49e9 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 19 Mar 2025 08:57:21 +0100 Subject: [PATCH] plugins/typst-preview: init --- plugins/by-name/typst-preview/default.nix | 44 +++++++++++++++++ .../plugins/by-name/typst-preview/default.nix | 49 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 plugins/by-name/typst-preview/default.nix create mode 100644 tests/test-sources/plugins/by-name/typst-preview/default.nix diff --git a/plugins/by-name/typst-preview/default.nix b/plugins/by-name/typst-preview/default.nix new file mode 100644 index 00000000..105228b8 --- /dev/null +++ b/plugins/by-name/typst-preview/default.nix @@ -0,0 +1,44 @@ +{ + lib, + pkgs, + ... +}: +lib.nixvim.plugins.mkNeovimPlugin { + name = "typst-preview"; + packPathName = "typst-preview.nvim"; + package = "typst-preview-nvim"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + extraOptions = { + tinymistPackage = lib.mkPackageOption pkgs "tinymist" { + nullable = true; + }; + websocatPackage = lib.mkPackageOption pkgs "websocat" { + nullable = true; + }; + }; + extraConfig = cfg: { + extraPackages = [ + cfg.tinymistPackage + cfg.websocatPackage + ]; + + plugins.typst-preview.settings = { + # Disable automatic downloading of binary dependencies + dependencies_bin = { + tinymist = lib.mkIf (cfg.tinymistPackage != null) (lib.mkDefault (lib.getExe cfg.tinymistPackage)); + websocat = lib.mkIf (cfg.websocatPackage != null) (lib.mkDefault (lib.getExe cfg.websocatPackage)); + }; + }; + }; + + settingsExample = { + debug = true; + port = 8000; + dependencies_bin = { + tinymist = "tinymist"; + websocat = "websocat"; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/typst-preview/default.nix b/tests/test-sources/plugins/by-name/typst-preview/default.nix new file mode 100644 index 00000000..e5c28aa4 --- /dev/null +++ b/tests/test-sources/plugins/by-name/typst-preview/default.nix @@ -0,0 +1,49 @@ +{ + empty = { + plugins.typst-preview.enable = true; + }; + + defaults = { + plugins.typst-preview = { + enable = true; + + settings = { + debug = false; + open_cmd = null; + port = 0; + invert_colors = "never"; + follow_cursor = true; + extra_args = null; + get_root.__raw = '' + function(path_of_main_file) + local root = os.getenv 'TYPST_ROOT' + if root then + return root + end + return vim.fn.fnamemodify(path_of_main_file, ':p:h') + end + ''; + get_main_file.__raw = '' + function(path_of_buffer) + return path_of_buffer + end + ''; + }; + }; + }; + + example = { + plugins.typst-preview = { + enable = true; + + settings = { + debug = true; + port = 8000; + dependencies_bin = { + tinymist = "tinymist"; + websocat = "websocat"; + }; + }; + }; + }; +}