diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..caf094c --- /dev/null +++ b/shell.nix @@ -0,0 +1,138 @@ +let + pkgs = import {}; +in pkgs.stdenv.mkDerivation { + name = "msc-thesis"; + buildInputs = [ + pkgs.pandoc + pkgs.xdotool + (pkgs.vim_configurable.customize { + name = "vim"; + vimrcConfig = { + # add custom .vimrc lines like this: + customRC = '' + set nocompatible + + " leader + let mapleader = ',' + + set hidden + syntax on + set hlsearch + set number + + " mappings to stop insert mode + imap jjj + imap kkk + imap lll + imap hhh + set scroll=11 + + noremap :tabn + noremap :tabp + let g:ctrlp_map = '' + set wildignore+=*/site/*,*.so,*.swp,*.zip + let g:ctrlp_custom_ignore = { + \ 'dir': '\v[\/]\.(git|hg|svn|)$$', + \ 'file': '\v\.(exe|so|dll)$$', + \ } + + " allways show status line + set ls=2 + set tabstop=4 + set shiftwidth=4 + set softtabstop=4 + set expandtab + "set textwidth=80 + + set wildignore+=*/site/*,*.so,*.swp,*.zip + let g:ctrlp_custom_ignore = { + \ 'dir': '\v[\/]\.(git|hg|svn|)$$', + \ 'file': '\v\.(exe|so|dll)$$', + \ } + " } + + " spelling {{{ + au BufRead,BufNewFile *.md,*.markdown setlocal spell spelllang=en_us,de_de + " }}} + + " sync default register to clipboard { + if has('unnamedplus') + set clipboard=unnamedplus + else + set clipboard=unnamed + endif + " } + + " colored brackets { + let g:rbpt_colorpairs = [ + \ ['brown', 'RoyalBlue3'], + \ ['Darkblue', 'SeaGreen3'], + \ ['darkgray', 'DarkOrchid3'], + \ ['darkgreen', 'firebrick3'], + \ ['darkcyan', 'RoyalBlue3'], + \ ['darkred', 'SeaGreen3'], + \ ['darkmagenta', 'DarkOrchid3'], + \ ['brown', 'firebrick3'], + \ ['gray', 'RoyalBlue3'], + \ ['black', 'SeaGreen3'], + \ ['darkmagenta', 'DarkOrchid3'], + \ ['Darkblue', 'firebrick3'], + \ ['darkgreen', 'RoyalBlue3'], + \ ['darkcyan', 'SeaGreen3'], + \ ['darkred', 'DarkOrchid3'], + \ ['red', 'firebrick3'], + \ ] + let g:rbpt_max = 16 + let g:rbpt_loadcmd_toggle = 0 + + au VimEnter * RainbowParenthesesToggle + au Syntax * RainbowParenthesesLoadRound + au Syntax * RainbowParenthesesLoadSquare + au Syntax * RainbowParenthesesLoadBraces + " } + + let g:vimtex_view_method = 'zathura' + + let g:vimtex_complete_enabled = 1 + let g:vimtex_complete_close_braces = 1 + let g:vimtex_complete_recursive_bib = 1 + let g:vimtex_indent_enabled = 1 + let g:vimtex_indent_bib_enabled = 1 + + + if !exists('g:ycm_semantic_triggers') + let g:ycm_semantic_triggers = {} + endif + let g:ycm_semantic_triggers.tex = [ + \ 're!\\[A-Za-z]*cite[A-Za-z]*(\[[^]]*\]){0,2}{[^}]*', + \ 're!\\[A-Za-z]*ref({[^}]*|range{([^,{}]*(}{)?))', + \ 're!\\hyperref\[[^]]*', + \ 're!\\includegraphics\*?(\[[^]]*\]){0,2}{[^}]*', + \ 're!\\(include(only)?|input){[^}]*', + \ 're!\\\a*(gls|Gls|GLS)(pl)?\a*(\s*\[[^]]*\]){0,2}\s*\{[^}]*', + \ 're!\\includepdf(\s*\[[^]]*\])?\s*\{[^}]*', + \ 're!\\includestandalone(\s*\[[^]]*\])?\s*\{[^}]*', + \ ] + + set t_ut= + colorscheme PaperColor + ''; + + vam.knownPlugins = pkgs.vimPlugins; + vam.pluginDictionaries = [ + "youcompleteme" + "vim-airline" + "vim-addon-nix" + "ctrlp" + "vim-css-color" + "rainbow_parentheses" + "vim-colorschemes" + "vim-signify" + "vimtex" + ]; + }; + }) + pkgs.texlive.combined.scheme-full + pkgs.zathura + ]; +}