60 lines
1.8 KiB
Nix
60 lines
1.8 KiB
Nix
let
|
|
pkgs = import <nixpkgs> { };
|
|
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; };
|
|
nodePackages = import ../packages/node/default.nix { inherit pkgs; };
|
|
in
|
|
pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
chromedriver
|
|
libmysqlclient
|
|
nodejs-12_x
|
|
ruby
|
|
yarn
|
|
zlib
|
|
(
|
|
pkgs.writeScriptBin "start-db" ''
|
|
#!${pkgs.zsh}/bin/zsh
|
|
|
|
trap "docker stop dodona-db" 0
|
|
trap "docker stop dodona-cache" 0
|
|
|
|
docker run --name dodona-db -p 3306:3306 --rm -v dodona-db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=dodona mariadb:latest &
|
|
docker run --name dodona-cache -p 11211:11211 --rm memcached:latest &
|
|
|
|
child=$!
|
|
wait $child
|
|
''
|
|
)
|
|
(
|
|
neovim.override {
|
|
configure = {
|
|
customRC = baseVimConfig.customRC + ''
|
|
" Required for operations modifying multiple buffers like rename
|
|
set hidden
|
|
|
|
let g:LanguageClient_serverCommands = {
|
|
\ 'ruby': ['${solargraph}/bin/solargraph', 'stdio'],
|
|
\ 'javascript': ['${nodePackages.javascript-typescript-langserver}/bin/javascript-typescript-stdio'],
|
|
\ 'typescript': ['${nodePackages.typescript-language-server}/bin/typescript-language-server', '--stdio'],
|
|
\ }
|
|
'';
|
|
vam.knownPlugins = baseVimConfig.vam.knownPlugins;
|
|
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [
|
|
{
|
|
names = [
|
|
"LanguageClient-neovim"
|
|
"vim-ruby"
|
|
"yats-vim"
|
|
];
|
|
}
|
|
];
|
|
};
|
|
}
|
|
)
|
|
];
|
|
shellHook = ''
|
|
export DATABASE_URL="mysql2://root:dodona@127.0.0.1:3306/dodona"
|
|
export GEM_HOME="$PWD/vendor/rubygems/$(ruby -e 'puts RUBY_VERSION')"
|
|
export PATH="$GEM_HOME/bin:$PATH"
|
|
'';
|
|
}
|