diff --git a/plugins/default.nix b/plugins/default.nix index 454ffb5b..83ed2424 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -50,6 +50,7 @@ ./languages/clangd-extensions.nix ./languages/debugprint.nix + ./languages/godot.nix ./languages/haskell-scope-highlighting.nix ./languages/helm.nix ./languages/julia/julia-cell.nix diff --git a/plugins/languages/godot.nix b/plugins/languages/godot.nix new file mode 100644 index 00000000..416f2d1f --- /dev/null +++ b/plugins/languages/godot.nix @@ -0,0 +1,44 @@ +{ + config, + lib, + helpers, + pkgs, + ... +}: +with lib; + helpers.vim-plugin.mkVimPlugin config { + name = "godot"; + originalName = "vim-godot"; + defaultPackage = pkgs.vimPlugins.vim-godot; + globalPrefix = "godot_"; + + maintainers = [maintainers.GaetanLepage]; + + extraOptions = { + godotPackage = mkOption { + type = with types; nullOr package; + default = pkgs.godot_4; + description = '' + Which package to use for `godot`. + Set to `null` to prevent the installation. + ''; + }; + }; + + settingsOptions = { + executable = helpers.defaultNullOpts.mkStr "godot" '' + Path to the `godot` executable. + ''; + }; + + settingsExample = { + executable = "godot"; + }; + + extraConfig = cfg: { + extraPackages = + optional + (cfg.godotPackage != null) + cfg.godotPackage; + }; + } diff --git a/tests/test-sources/plugins/languages/godot.nix b/tests/test-sources/plugins/languages/godot.nix new file mode 100644 index 00000000..2d39568e --- /dev/null +++ b/tests/test-sources/plugins/languages/godot.nix @@ -0,0 +1,17 @@ +{pkgs, ...}: { + empty = { + # Godot is only available on Linux + plugins.godot.enable = pkgs.stdenv.isLinux; + }; + + defaults = { + plugins.godot = { + # Godot is only available on Linux + enable = pkgs.stdenv.isLinux; + + settings = { + executable = "godot"; + }; + }; + }; +}