nixpkgs/home/programs/neovim.nix

279 lines
6.9 KiB
Nix
Raw Normal View History

{ pkgs }:
let
configuration = pkgs.vimUtils.buildVimPlugin {
name = "configuration";
src = pkgs.fetchgit {
url = "https://gitea.daniel-siepmann.de/danielsiepmann/vim-configuration.git";
rev = "53736aec92e92dc600694e90de9a8b7dabc90dd0";
sha256 = "9hRXvgtKknFd4Rng+BsedJvwU7sFBDLZmSEGteMroGc=";
};
};
colorscheme-smyckblue = pkgs.vimUtils.buildVimPlugin {
name = "colorscheme-smyckblue";
src = pkgs.fetchgit {
url = "https://gitea.daniel-siepmann.de/danielsiepmann/vim-colorscheme-smyckblue.git";
rev = "v1.0.0";
sha256 = "UPh15fMTq/HHnunq+xy8YGOlqfgUaqHuTEE5kQ3j3bM=";
};
};
snippets = pkgs.vimUtils.buildVimPlugin {
name = "snippets";
src = pkgs.fetchgit {
url = "https://gitea.daniel-siepmann.de/danielsiepmann/vim-snippets.git";
rev = "v1.0.0";
sha256 = "23XR2YysdgUW+xKS79tAYP+Hjka0YolLaHlYiD0Hyx8=";
};
};
neotags = pkgs.vimUtils.buildVimPlugin {
name = "neotags";
src = pkgs.fetchgit {
url = "https://gitea.daniel-siepmann.de/danielsiepmann/neotags.git";
rev = "v0.3.0";
sha256 = "uJ7cl+1Ngff0FKzjmh1i7O/PkNjPvPT+ZEHgceeZcz0=";
};
};
# TODO: Update, compare with other forks, move to Gitea
syntax-typoscript = pkgs.vimUtils.buildVimPlugin {
name = "syntax-typoscript";
src = pkgs.fetchFromGitHub {
owner = "DanielSiepmann";
repo = "vim.typoscript";
rev = "286bc376b55b0d0d0adc6e7ccfa6a75719437120";
sha256 = "BPvKwcTo/OL9VkNJ9dv8hs4nlVkxMI6pdkZXXAKBMWs=";
};
};
syntax-nix = pkgs.vimUtils.buildVimPlugin {
name = "syntax-nix";
src = pkgs.fetchFromGitHub {
owner = "LnL7";
repo = "vim-nix";
rev = "63b47b39c8d481ebca3092822ca8972e08df769b";
sha256 = "wQzNXfE7JFalgiCQ2ksPAUyFKacmJV7mNKmKDe9jySI=";
};
};
syntax-php = pkgs.vimUtils.buildVimPlugin {
name = "syntax-php";
src = pkgs.fetchFromGitHub {
owner = "StanAngeloff";
repo = "php.vim";
rev = "2ec2ab9fcc65bfc47c7ba6b3846903528188ceea";
sha256 = "lgsaCU6Rzzynkd9SID0chjKaxgEWznrmEl133Syc6cY=";
};
};
syntax-fluid = pkgs.vimUtils.buildVimPlugin {
name = "syntax-fluid";
src = pkgs.fetchFromGitHub {
owner = "mipmip";
repo = "vim-fluid";
rev = "cedc4ad871941e8f7134d1d71f9434f1bc3d93d5";
sha256 = "LiS2Dqw1K1Fu5VfHQnxIBDxDzEarmSAUUavQcwHRDsQ=";
};
};
ag = pkgs.vimUtils.buildVimPlugin {
name = "ag";
src = pkgs.fetchFromGitHub {
owner = "rking";
repo = "ag.vim";
rev = "c478f7973074f15bbf82c298a1678b4e23f1767a";
sha256 = "jlR8NFG7IRCYiQ7ocQQCI2npAPujgQFZ6RpFX8zwTAA=";
};
};
vdebug = pkgs.vimUtils.buildVimPlugin {
name = "vdebug";
src = pkgs.fetchFromGitHub {
owner = "joonty";
repo = "vdebug";
rev = "v2.0.0";
sha256 = "kobMC6TRFZcEbgFdOaBgXUzoeWQUrVzUKylN1N9nEnc=";
};
};
sqlformat = pkgs.vimUtils.buildVimPlugin {
name = "sqlformat";
src = pkgs.fetchFromGitHub {
owner = "mpyatishev";
repo = "vim-sqlformat";
rev = "2a2a57d75865526f85d94bf769f4fd54d61c426b";
sha256 = "LPnHcuh+jxEL8CZ1wizHqi3uzYYtIxzMqnE7y7mTrbE=";
};
};
diff-fold = pkgs.vimUtils.buildVimPlugin {
name = "diff-fold";
src = pkgs.fetchFromGitHub {
owner = "sgeb";
repo = "vim-diff-fold";
rev = "48b4505c1b6f14ceb4e4be732aad337147ef36cd";
sha256 = "M3CAUueEhLD0J6sLUpRkFv+vK4aGYO+Xnokxmn+VxqU=";
};
};
phpactor = pkgs.vimUtils.buildVimPlugin {
name = "phpactor";
src = pkgs.fetchzip {
url = "https://daniel-siepmann.de/fileadmin/phpactor-0.18.0.tar.gz";
sha256 = "1XHqKxBXcFPt2P/N2drr8EkBsg0Hu94Vjq0my+aj614=";
};
};
neoterm = pkgs.vimUtils.buildVimPlugin {
name = "neoterm";
src = pkgs.fetchFromGitHub {
owner = "kassio";
repo = "neoterm";
rev = "e78179a9ceb98de8d0c37bdda435a5deab4d5e71";
sha256 = "0w962xfcgigdw41wblrv1l55xki0kl5vwkdbm6jlr44hzii0nhgz";
};
patches = [
./neovim/patches/disable_neoterm_repl.patch
];
};
tagbar = pkgs.vimUtils.buildVimPlugin {
name = "tagbar";
src = pkgs.fetchFromGitHub {
owner = "majutsushi";
repo = "tagbar";
rev = "v2.7";
sha256 = "Eg6xRwisopmBexqkWjRbSi9aQC4uCXbFO6SCK1LY+Ow=";
};
};
in {
enable = true;
extraConfig = pkgs.lib.concatMapStringsSep "\n" (file: pkgs.lib.fileContents file) [
./neovim/init.vim
./neovim/config/functions.vim
./neovim/config/indentation.vim
./neovim/config/mappings.vim
./neovim/config/searching.vim
./neovim/config/statusline.vim
./neovim/config/undo.vim
./neovim/config/wildignore.vim
./neovim/config/autocommands/basics.vim
./neovim/config/autocommands/gitdiff.vim
./neovim/config/autocommands/typo3.vim
./neovim/config/autocommands/vdebug.vim
./neovim/config/folderspecific/reuter.vim
];
extraPython3Packages = (ps: with ps; [
sqlparse
]);
plugins = with pkgs.vimPlugins; [
# My own plugins
colorscheme-smyckblue
neotags
configuration
snippets
syntax-typoscript
# More UI related
{
plugin = nerdtree;
config = pkgs.lib.fileContents ./neovim/plugins/nerdtree.vim;
}
{
plugin = undotree;
config = pkgs.lib.fileContents ./neovim/plugins/undotree.vim;
}
{
# Use pinned to 2.7 as I don't need any of the new features.
# Instead they make it hard to only show what I'm interested in within PHP files.
# As they changed the building with nested structures.
plugin = tagbar;
config = pkgs.lib.fileContents ./neovim/plugins/tagbar.vim;
}
{
plugin = ctrlp-vim;
config = pkgs.lib.fileContents ./neovim/plugins/ctrlp.vim;
}
# Syntax
syntax-nix
syntax-fluid
{
plugin = syntax-php;
config = pkgs.lib.fileContents ./neovim/plugins/php.vim;
}
# Adding features
ag
sqlformat
diff-fold
{
plugin = vim-snipmate;
config = ''
let g:snipMate = { 'snippet_version' : 0 }
'';
}
vim-fugitive
vim-commentary
vim-indent-object
vim-textobj-comment
{
plugin = vdebug;
config = pkgs.lib.fileContents ./neovim/plugins/vdebug.vim;
}
{
# Seems to be broken: https://github.com/kassio/neoterm/issues/338
# Therefore I install my own version where this bug is disabled
plugin = neoterm;
config = pkgs.lib.fileContents ./neovim/plugins/neoterm.vim;
}
{
plugin = phpactor;
config = ''
let g:phpactorOmniError = v:true
let g:phpactorPhpBin = "${pkgs.php80}/bin/php"
'';
}
# More related to testing, linting, …
{
plugin = ale;
config = pkgs.lib.fileContents ./neovim/plugins/ale.vim;
}
{
plugin = vim-test;
config = pkgs.lib.fileContents ./neovim/plugins/test.vim;
}
# Dependencies for other plugins
vim-addon-mw-utils
vim-textobj-user
];
}