diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/spacevim')
3 files changed, 142 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/spacevim/default.nix b/nixpkgs/pkgs/applications/editors/spacevim/default.nix new file mode 100644 index 000000000000..3db7c73fd422 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/spacevim/default.nix @@ -0,0 +1,78 @@ +{ ripgrep +, git +, fzf +, makeWrapper +, vim-full +, vimPlugins +, fetchFromGitHub +, lib +, stdenv +, formats +, runCommand +, spacevim_config ? import ./init.nix +}: + +let + format = formats.toml { }; + vim-customized = vim-full.customize { + name = "vim"; + # Not clear at the moment how to import plugins such that + # SpaceVim finds them and does not auto download them to + # ~/.cache/vimfiles/repos + vimrcConfig.packages.myVimPackage = with vimPlugins; { start = [ ]; }; + }; + spacevimdir = runCommand "SpaceVim.d" { } '' + mkdir -p $out + cp ${format.generate "init.toml" spacevim_config} $out/init.toml + ''; +in +stdenv.mkDerivation rec { + pname = "spacevim"; + version = "1.8.0"; + src = fetchFromGitHub { + owner = "SpaceVim"; + repo = "SpaceVim"; + rev = "v${version}"; + sha256 = "sha256:11snnh5q47nqhzjb9qya6hpnmlzc060958whqvqrh4hc7gnlnqp8"; + }; + + nativeBuildInputs = [ makeWrapper vim-customized ]; + buildInputs = [ vim-customized ]; + + buildPhase = '' + runHook preBuild + # generate the helptags + vim -u NONE -c "helptags $(pwd)/doc" -c q + runHook postBuild + ''; + + patches = [ + # Don't generate helptags at runtime into read-only $SPACEVIMDIR + ./helptags.patch + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + + cp -r $(pwd) $out/SpaceVim + + # trailing slash very important for SPACEVIMDIR + makeWrapper "${vim-customized}/bin/vim" "$out/bin/spacevim" \ + --add-flags "-u $out/SpaceVim/vimrc" --set SPACEVIMDIR "${spacevimdir}/" \ + --prefix PATH : ${lib.makeBinPath [ fzf git ripgrep]} + runHook postInstall + ''; + + meta = with lib; { + description = "Modern Vim distribution"; + longDescription = '' + SpaceVim is a distribution of the Vim editor that’s inspired by spacemacs. + ''; + homepage = "https://spacevim.org/"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.fzakaria ]; + platforms = platforms.all; + mainProgram = "spacevim"; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/spacevim/helptags.patch b/nixpkgs/pkgs/applications/editors/spacevim/helptags.patch new file mode 100644 index 000000000000..bc0f9140c7be --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/spacevim/helptags.patch @@ -0,0 +1,18 @@ +diff --git a/autoload/SpaceVim.vim b/autoload/SpaceVim.vim +index 16688680..fcafd6f7 100644 +--- a/autoload/SpaceVim.vim ++++ b/autoload/SpaceVim.vim +@@ -1355,13 +1355,6 @@ function! SpaceVim#end() abort + let &helplang = 'jp' + endif + "" +- " generate tags for SpaceVim +- let help = fnamemodify(g:_spacevim_root_dir, ':p:h') . '/doc' +- try +- exe 'helptags ' . help +- catch +- call SpaceVim#logger#warn('Failed to generate helptags for SpaceVim') +- endtry + + "" + " set language diff --git a/nixpkgs/pkgs/applications/editors/spacevim/init.nix b/nixpkgs/pkgs/applications/editors/spacevim/init.nix new file mode 100644 index 000000000000..7174e45c0b77 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/spacevim/init.nix @@ -0,0 +1,46 @@ +# The Nix expression is a 1:1 mapping of the spacevim toml config which you can find on their website: spacevim.org/quick-start-guide/#configuration + +{ + custom_plugins = [{ + merged = false; + name = "lilydjwg/colorizer"; + }]; + layers = [ + { name = "default"; } + { + enable = true; + name = "colorscheme"; + } + { name = "fzf"; } + { + default_height = 30; + default_position = "top"; + name = "shell"; + } + { name = "edit"; } + { name = "VersionControl"; } + { name = "git"; } + { + auto-completion-return-key-behavior = "complete"; + auto-completion-tab-key-behavior = "cycle"; + autocomplete_method = "coc"; + name = "autocomplete"; + } + { name = "lang#ruby"; } + { name = "lang#nix"; } + { name = "lang#java"; } + { name = "lang#kotlin"; } + { name = "lang#sh"; } + { name = "lang#html"; } + ]; + options = { + buffer_index_type = 4; + colorscheme = "gruvbox"; + colorscheme_bg = "dark"; + enable_guicolors = true; + enable_statusline_mode = true; + enable_tabline_filetype_icon = true; + statusline_separator = "fire"; + timeoutlen = 500; + }; +} |