diff --git a/pkgs/applications/editors/spacevim/default.nix b/pkgs/applications/editors/spacevim/default.nix new file mode 100644 index 00000000000..b2eb6eecc19 --- /dev/null +++ b/pkgs/applications/editors/spacevim/default.nix @@ -0,0 +1,55 @@ +{ ripgrep, gitAndTools, fzf, makeWrapper, vim_configurable, vimPlugins, fetchFromGitHub, writeTextDir +, stdenv, runCommandNoCC, remarshal, formats, spacevim_config ? import ./init.nix }: +with stdenv; +let + format = formats.toml {}; + vim-customized = vim_configurable.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 = format.generate "init.toml" spacevim_config; +in mkDerivation rec { + pname = "spacevim"; + version = "1.5.0"; + src = fetchFromGitHub { + owner = "SpaceVim"; + repo = "SpaceVim"; + rev = "v${version}"; + sha256 = "1xw4l262x7wzs1m65bddwqf3qx4254ykddsw3c3p844pb3mzqhh7"; + }; + + nativeBuildInputs = [ makeWrapper vim-customized]; + buildInputs = [ vim-customized ]; + + buildPhase = '' + # generate the helptags + vim -u NONE -c "helptags $(pwd)/doc" -c q + ''; + + patches = [ ./helptags.patch ]; + + installPhase = '' + 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 gitAndTools.git ripgrep]} + ''; + + meta = with stdenv.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; + }; +} diff --git a/pkgs/applications/editors/spacevim/helptags.patch b/pkgs/applications/editors/spacevim/helptags.patch new file mode 100644 index 00000000000..e8b31c57419 --- /dev/null +++ b/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 +@@ -1255,13 +1255,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/pkgs/applications/editors/spacevim/init.nix b/pkgs/applications/editors/spacevim/init.nix new file mode 100644 index 00000000000..7174e45c0b7 --- /dev/null +++ b/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; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a29c615d0d2..0d23902f3af 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2576,6 +2576,8 @@ in socklog = callPackage ../tools/system/socklog { }; + spacevim = callPackage ../applications/editors/spacevim { }; + ssmsh = callPackage ../tools/admin/ssmsh { }; stagit = callPackage ../development/tools/stagit { };