let nixpkgs = import {}; patchedPkgsSrc = nixpkgs.stdenv.mkDerivation { name = "patchedPkgsSrc"; src = nixpkgs.pkgs.fetchFromGitHub { owner = "nixos"; repo = "nixpkgs-channels"; rev = "81fceb255448415e70b9e7775d590b6def45f861"; sha256 = "0sfx21b9rb6qxjm7li3krk6ik0xxph1il7r5l69n8b9agp72yjfx"; }; patches = [ ./build/texlive-url-mirror.patch ]; buildPhase = ""; installPhase = '' cp -a . $out ''; fixupPhase = "true"; postFixup = "true"; }; pkgs = import patchedPkgsSrc {}; mytexlive = (pkgs.texlive.combine { inherit (pkgs.texlive) scheme-full; }); in pkgs.stdenv.mkDerivation { name = "msc-thesis"; shellHook = '' alias vim-thesis="vim -p --servername VIM -- \ $PWD/src/docs/thesis.tex \ $PWD/src/docs/glossary.tex \ $PWD/src/docs/parts/context/context.tex \ $PWD/src/docs/parts/research/research.tex \ " ''; buildInputs = [ 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 = '' let g:ctrlp_custom_ignore = { \ 'dir': '\v[\/]\.(git|hg|svn|)$$', \ 'file': '\v\.(exe|so|dll|so|swp|zip|aux|log|fdb_latexmk|fdb|dvi|lof|lot|pdf|fls|toc|gz|latexmain)$$', \ } " allways show status line set ls=2 set tabstop=4 set shiftwidth=4 set softtabstop=4 set expandtab "set textwidth=80 " 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 " } set backspace=indent,eol,start colorscheme PaperColor " Latex Related {{{ au BufRead,BufNewFile *.tex,*.md,*.markdown setlocal spell spelllang=en_us 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*\{[^}]*', \ ] function! ViewerCallback() dict call self.forward_search(self.out) endfunction let g:vimtex_view_zathura_hook_callback = 'ViewerCallback' " }}} autocmd BufWritePost * execute ':silent ! cp /home/steveej/src/mendeley/Static-Code-Analysis-Kernel-Memory-Saftey.bib /home/steveej/src/steveej/msc-thesis/src/docs/thesis.bib >/dev/null 2>&1' ''; vam.knownPlugins = pkgs.vimPlugins; vam.pluginDictionaries = [ "youcompleteme" "vim-airline" "ctrlp" "vim-css-color" "rainbow_parentheses" "vim-colorschemes" "vim-signify" "vimtex" ]; }; }) mytexlive pkgs.zathura ]; }