From 34b73e34e2d6a280264421663c7bce326c68f897 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sun, 23 Sep 2018 12:27:40 +0200 Subject: Restructure host config, derivations --- .../asset/T-TeleSec_GlobalRoot_Class_2.pem | 23 +++ host/software/asset/dir_colors | 218 +++++++++++++++++++++ host/software/code.kummerlaender.eu.nix | 42 ++++ host/software/desktop.nix | 42 ++++ host/software/fish.nix | 76 +++++++ host/software/kit.vpn.nix | 27 +++ host/software/pkgs/vim/asset/rc.vim | 128 ++++++++++++ .../vim-color-akr/autoload/airline/themes/akr.vim | 86 ++++++++ .../pkgs/vim/asset/vim-color-akr/colors/akr.vim | 93 +++++++++ host/software/pkgs/vim/custom.nix | 42 ++++ host/software/pkgs/vim/default.nix | 11 ++ host/software/pkgs/vim/plugins.nix | 84 ++++++++ host/software/vim.nix | 9 + 13 files changed, 881 insertions(+) create mode 100644 host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem create mode 100644 host/software/asset/dir_colors create mode 100644 host/software/code.kummerlaender.eu.nix create mode 100644 host/software/desktop.nix create mode 100644 host/software/fish.nix create mode 100644 host/software/kit.vpn.nix create mode 100644 host/software/pkgs/vim/asset/rc.vim create mode 100644 host/software/pkgs/vim/asset/vim-color-akr/autoload/airline/themes/akr.vim create mode 100644 host/software/pkgs/vim/asset/vim-color-akr/colors/akr.vim create mode 100644 host/software/pkgs/vim/custom.nix create mode 100644 host/software/pkgs/vim/default.nix create mode 100644 host/software/pkgs/vim/plugins.nix create mode 100644 host/software/vim.nix (limited to 'host/software') diff --git a/host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem b/host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem new file mode 100644 index 0000000..374b050 --- /dev/null +++ b/host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- diff --git a/host/software/asset/dir_colors b/host/software/asset/dir_colors new file mode 100644 index 0000000..bbe79d9 --- /dev/null +++ b/host/software/asset/dir_colors @@ -0,0 +1,218 @@ +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted provided the copyright notice and this notice are preserved. +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Below, there should be one TERM entry for each termtype that is colorizable +TERM Eterm +TERM ansi +TERM color-xterm +TERM con132x25 +TERM con132x30 +TERM con132x43 +TERM con132x60 +TERM con80x25 +TERM con80x28 +TERM con80x30 +TERM con80x43 +TERM con80x50 +TERM con80x60 +TERM cons25 +TERM console +TERM cygwin +TERM dtterm +TERM eterm-color +TERM gnome +TERM gnome-256color +TERM hurd +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mach-color +TERM mach-gnu-color +TERM mlterm +TERM putty +TERM putty-256color +TERM rxvt +TERM rxvt-256color +TERM rxvt-cygwin +TERM rxvt-cygwin-native +TERM rxvt-unicode +TERM rxvt-unicode-256color +TERM rxvt-unicode256 +TERM screen +TERM screen-256color +TERM screen-256color-bce +TERM screen-bce +TERM screen-w +TERM screen.Eterm +TERM screen.rxvt +TERM screen.linux +TERM st +TERM st-256color +TERM terminator +TERM vt100 +TERM xterm +TERM xterm-16color +TERM xterm-256color +TERM xterm-88color +TERM xterm-color +TERM xterm-debian +TERM xterm-termite +TERM xterm-kitty +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +#NORMAL 00 # no color code at all +#FILE 00 # regular file: use no color at all +RESET 0 # reset to "normal" color +DIR 00;32 # directory +LINK 01;36 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +MULTIHARDLINK 00 # regular file with more than one link +FIFO 40;33 # pipe +SOCK 01;35 # socket +DOOR 01;35 # door +BLK 40;33;01 # block device driver +CHR 40;33;01 # character device driver +ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ... +MISSING 00 # ... and the files they point to +SETUID 37;41 # file that is setuid (u+s) +SETGID 30;43 # file that is setgid (g+s) +CAPABILITY 30;41 # file with capability +STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky +STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +EXEC 01;32 +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +# Or if you want to colorize scripts even if they do not have the +# executable bit actually set. +#.sh 01;32 +#.csh 01;32 + # archives or compressed (bright red) +.tar 01;31 +.tgz 01;31 +.arc 01;31 +.arj 01;31 +.taz 01;31 +.lha 01;31 +.lz4 01;31 +.lzh 01;31 +.lzma 01;31 +.tlz 01;31 +.txz 01;31 +.tzo 01;31 +.t7z 01;31 +.zip 01;31 +.z 01;31 +.Z 01;31 +.dz 01;31 +.gz 01;31 +.lrz 01;31 +.lz 01;31 +.lzo 01;31 +.xz 01;31 +.bz2 01;31 +.bz 01;31 +.tbz 01;31 +.tbz2 01;31 +.tz 01;31 +.deb 01;31 +.rpm 01;31 +.jar 01;31 +.war 01;31 +.ear 01;31 +.sar 01;31 +.rar 01;31 +.alz 01;31 +.ace 01;31 +.zoo 01;31 +.cpio 01;31 +.7z 01;31 +.rz 01;31 +.cab 01;31 +# image formats +.jpg 01;35 +.jpeg 01;35 +.gif 01;35 +.bmp 01;35 +.pbm 01;35 +.pgm 01;35 +.ppm 01;35 +.tga 01;35 +.xbm 01;35 +.xpm 01;35 +.tif 01;35 +.tiff 01;35 +.png 01;35 +.svg 01;35 +.svgz 01;35 +.mng 01;35 +.pcx 01;35 +.mov 01;35 +.mpg 01;35 +.mpeg 01;35 +.m2v 01;35 +.mkv 01;35 +.webm 01;35 +.ogm 01;35 +.mp4 01;35 +.m4v 01;35 +.mp4v 01;35 +.vob 01;35 +.qt 01;35 +.nuv 01;35 +.wmv 01;35 +.asf 01;35 +.rm 01;35 +.rmvb 01;35 +.flc 01;35 +.avi 01;35 +.fli 01;35 +.flv 01;35 +.gl 01;35 +.dl 01;35 +.xcf 01;35 +.xwd 01;35 +.yuv 01;35 +.cgm 01;35 +.emf 01;35 +# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions +.ogv 01;35 +.ogx 01;35 +# audio formats +.aac 00;36 +.au 00;36 +.flac 00;36 +.m4a 00;36 +.mid 00;36 +.midi 00;36 +.mka 00;36 +.mp3 00;36 +.mpc 00;36 +.ogg 00;36 +.ra 00;36 +.wav 00;36 +# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions +.oga 00;36 +.opus 00;36 +.spx 00;36 +.xspf 00;36 diff --git a/host/software/code.kummerlaender.eu.nix b/host/software/code.kummerlaender.eu.nix new file mode 100644 index 0000000..b2507e4 --- /dev/null +++ b/host/software/code.kummerlaender.eu.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: + +{ + services = { + gitea = { + enable = true; + database.type = "sqlite3"; + + appName = "~/projects"; + domain = "code.kummerlaender.eu"; + rootUrl = "https://code.kummerlaender.eu/"; + httpPort = 3000; + + extraConfig = '' + [server] + LANDING_PAGE = "explore" + [service] + DISABLE_REGISTRATION = true + SHOW_REGISTRATION_BUTTON = false + [other] + SHOW_FOOTER_VERSION = false + SHOW_FOOTER_TEMPLATE_LOAD_TIME = false + [api] + ENABLE_SWAGGER_ENDPOINT = false + [picture] + DISABLE_GRAVATAR = true + [indexer] + REPO_INDEXER_ENABLED = true + ''; + }; + + nginx.virtualHosts."code.kummerlaender.eu" = { + addSSL = true; + enableACME = true; + locations = { + "/" = { + proxyPass = "http://localhost:3000/"; + }; + }; + }; + }; +} diff --git a/host/software/desktop.nix b/host/software/desktop.nix new file mode 100644 index 0000000..501a561 --- /dev/null +++ b/host/software/desktop.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: + +{ + imports = [ + ./kit.vpn.nix + ]; + + fileSystems."/".options = [ "noatime" "nodiratime" "discard" ]; + + sound.enable = true; + hardware = { + opengl.driSupport32Bit = true; + pulseaudio = { + enable = true; + support32Bit = true; + }; + }; + + services = { + journald = { + extraConfig = ''Storage=volatile''; + }; + + xserver = { + enable = true; + layout = "de"; + xkbOptions = "caps:escape"; + + displayManager.slim = { + enable = true; + autoLogin = true; + defaultUser = "common"; + }; + + desktopManager.default = "none"; + }; + }; + + environment.systemPackages = with pkgs; [ + hdparm ntfs3g + ]; +} diff --git a/host/software/fish.nix b/host/software/fish.nix new file mode 100644 index 0000000..d1e46c9 --- /dev/null +++ b/host/software/fish.nix @@ -0,0 +1,76 @@ +{ pkgs, ... }: + +{ + programs.fish = { + enable = true; + + shellInit = '' + set fish_greeting "" + ''; + + interactiveShellInit = '' + eval (dircolors -c ${./asset/dir_colors}) + + set fish_color_normal white + set fish_color_command magenta --bold + set fish_color_param green + set fish_color_error brred + set fish_color_operator cyan + set fish_color_comment white + set fish_color_cwd green + set fish_color_quote brown + set fish_color_autosuggestion 555 + set fish_color_redirection white + ''; + + promptInit = '' + function fish_prompt + set last_status $status + + if not set -q __fish_prompt_normal + set -g __fish_prompt_normal (set_color normal) + end + + switch $USER + case root + if not set -q __fish_prompt_cwd + if set -q fish_color_cwd_root + set -g __fish_prompt_cwd (set_color $fish_color_cwd_root) + else + set -g __fish_prompt_cwd (set_color $fish_color_cwd) + end + end + + case '*' + if not set -q __fish_prompt_cwd + set -g __fish_prompt_cwd (set_color $fish_color_cwd) + end + end + + echo -n -s 'λ ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" + + if test $IN_NIX_SHELL + if test $NIX_SHELL_NAME + echo -n -s ' (' $NIX_SHELL_NAME ')' + else + echo -n -s ' (nix-shell)' + end + end + + if test $last_status -gt 0 + set_color $fish_color_cwd_root + echo -n -s ' ● ' + set_color normal + else + echo -n -s ' ● ' + end + end + + function fish_right_prompt + set_color $fish_color_autosuggestion + date '+%H:%M:%S' + set_color normal + end + ''; + }; +} diff --git a/host/software/kit.vpn.nix b/host/software/kit.vpn.nix new file mode 100644 index 0000000..726356d --- /dev/null +++ b/host/software/kit.vpn.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: + +{ + services.openvpn.servers = { + KIT = { + # adapted from https://www.scc.kit.edu/scc/net/openvpn/os/debian/kit.ovpn + config = '' + client + remote 141.52.8.20 + port 1194 + dev tun + proto udp + auth-user-pass + nobind + comp-lzo no + tls-version-min 1.2 + ca ${./asset/T-TeleSec_GlobalRoot_Class_2.pem} + verify-x509-name "C=DE, ST=Baden-Wuerttemberg, L=Karlsruhe, O=Karlsruhe Institute of Technology, OU=Steinbuch Centre for Computing, CN=ovpn.scc.kit.edu" subject + cipher AES-256-CBC + auth SHA384 + verb 3 + script-security 2 + ''; + autoStart = false; + }; + }; +} diff --git a/host/software/pkgs/vim/asset/rc.vim b/host/software/pkgs/vim/asset/rc.vim new file mode 100644 index 0000000..81f48e0 --- /dev/null +++ b/host/software/pkgs/vim/asset/rc.vim @@ -0,0 +1,128 @@ +syntax enable +filetype plugin indent on + +colorscheme akr + +set encoding=utf-8 +set showcmd +set nocompatible +set nocursorline +set number +set lazyredraw +set ttyfast +set mouse=a +set t_Co=256 +set shell=/bin/sh +set sessionoptions-=options + +set directory=~/.vim/swap//,. + +set undofile +set undodir=~/.vim/undo + +set wrap +set tabstop=4 shiftwidth=4 +set backspace=indent,eol,start +set linebreak + +set hlsearch +set incsearch +set ignorecase +set smartcase + +set wildchar= wildmenu wildmode=full + +let mapleader="," + +map s :let @/="" +map c zz +map d + +nmap :e# +nmap f za +nmap F zA + +" disable to override default on neovim +set noautoread + +autocmd InsertEnter * :setlocal nohlsearch +autocmd InsertLeave * :setlocal hlsearch + +autocmd FileType scheme setlocal shiftwidth=2 tabstop=2 expandtab +autocmd FileType lisp setlocal shiftwidth=2 tabstop=2 expandtab +autocmd FileType racket setlocal shiftwidth=2 tabstop=2 expandtab +autocmd FileType haskell setlocal shiftwidth=2 tabstop=4 softtabstop=2 shiftround expandtab +autocmd FileType pandoc setlocal nonumber autoread +autocmd FileType pandoc let g:airline#extensions#whitespace#checks=['indent', 'trailing', 'long'] +autocmd FileType tex set conceallevel=2 + +nnoremap :bnext +nnoremap :bprev + +" select previous line on file reload, useful when cycling file extensions +autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g`\" zz" | endif +nnoremap :CounterpointNext +nnoremap :CounterpointPrevious + +nnoremap gT +nnoremap gt +nnoremap @q +nnoremap J } +nnoremap K { + +nmap << +nmap >> +vmap >gv + +nmap [e +nmap ]e +vmap [egv +vmap ]egv + +nnoremap h +nnoremap l +nnoremap k +nnoremap j + +set laststatus=2 +let g:airline_theme = 'akr' +let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#tabline#show_buffers = 1 +let g:airline#extensions#tabline#show_tab_type = 1 +let g:airline#extensions#tabline#fnamemod = ':t' +let g:airline#extensions#tabline#formatter = 'unique_tail_improved' +let g:airline#extensions#tabline#buffer_idx_mode = 0 +let g:airline#extensions#tabline#show_close_button = 0 +let g:airline#extensions#tabline#show_splits = 0 +let g:airline#extensions#tabline#show_tab_nr = 0 +let g:airline#extensions#whitespace#mixed_indent_algo = 2 + +let g:gitgutter_enabled = 0 +let g:gitgutter_highlight_lines = 1 + +let g:goyo_width = 90 +let g:goyo_margin_top = 1 +let g:goyo_margin_bottom = 0 + +nnoremap :MundoToggle +nnoremap :GitGutterToggle +nnoremap :SignatureToggleSigns +nnoremap :Goyo + +nnoremap :CtrlPBuffer +nnoremap :CtrlPMixed +nnoremap :CtrlPTag +nnoremap :CtrlPBufTag + +let g:ctrlp_custom_ignore = { +\ 'dir': '\.git$', +\ 'file': '\.o$\|\.d$' +\ } + +let g:undotree_SetFocusWhenToggle = 1 + +let g:localvimrc_sandbox = 0 +let g:localvimrc_persistent = 2 + +let g:wordmotion_prefix = '' diff --git a/host/software/pkgs/vim/asset/vim-color-akr/autoload/airline/themes/akr.vim b/host/software/pkgs/vim/asset/vim-color-akr/autoload/airline/themes/akr.vim new file mode 100644 index 0000000..1b847c4 --- /dev/null +++ b/host/software/pkgs/vim/asset/vim-color-akr/autoload/airline/themes/akr.vim @@ -0,0 +1,86 @@ +" Normal mode +" [ guifg , guibg , ctermfg , ctermbg ] +let s:N1 = [ '#161616' , '#909636' , 0 , 10 ] " mode +let s:N2 = [ '#161616' , '#909636' , 0 , 10 ] " info +let s:N3 = [ '#909636' , '#161616' , 10 , 0 ] " statusline +let s:N4 = [ '#352F6A' , 4 ] " mode modified + +" Insert mode +let s:I1 = [ '#E4E093' , '#352F6A' , 3 , 4 ] +let s:I2 = [ '#E4E093' , '#352F6A' , 3 , 4 ] +let s:I3 = [ '#909636' , '#161616' , 10 , 0 ] +let s:I4 = [ '#352F6A' , 4 ] + +" Visual mode +let s:V1 = [ '#E4E093' , '#8C3346' , 3 , 1 ] +let s:V2 = [ '#E4E093' , '#8C3346' , 3 , 1 ] +let s:V3 = [ '#909636' , '#161616' , 10 , 0 ] +let s:V4 = [ '#352F6A' , 4 ] + +" Replace mode +let s:R1 = [ '#E4E093' , '#352F6A' , 3 , 4 ] +let s:R2 = [ '#E4E093' , '#352F6A' , 3 , 4 ] +let s:R3 = [ '#909636' , '#161616' , 10 , 0 ] +let s:R4 = [ '#352F6A' , 4 ] + +" Paste mode +let s:PA = [ '#352F6A' , 4 ] + +" Info modified +let s:IM = [ '#909636' , 10 ] + +" Inactive mode +let s:IA = [ '#767676' , s:N3[1] , 243 , s:N3[3] , '' ] + +let g:airline#themes#akr#palette = {} + +let g:airline#themes#akr#palette.accents = { + \ 'red': [ '#8C3346' , '' , 1 , '' , '' ], + \ } + +let g:airline#themes#akr#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3) +let g:airline#themes#akr#palette.normal_modified = { + \ 'airline_a': [ s:N1[0] , s:N4[0] , s:N1[2] , s:N4[1] , '' ] , + \ 'airline_b': [ s:N4[0] , s:IM[0] , s:N4[1] , s:IM[1] , '' ] , + \ 'airline_c': [ s:N4[0] , s:N3[1] , s:N4[1] , s:N3[3] , '' ] } + + +let g:airline#themes#akr#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3) +let g:airline#themes#akr#palette.insert_modified = { + \ 'airline_a': [ s:I1[0] , s:I4[0] , s:I1[2] , s:I4[1] , '' ] , + \ 'airline_b': [ s:I4[0] , s:IM[0] , s:I4[1] , s:IM[1] , '' ] , + \ 'airline_c': [ s:I4[0] , s:N3[1] , s:I4[1] , s:N3[3] , '' ] } + + +let g:airline#themes#akr#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3) +let g:airline#themes#akr#palette.visual_modified = { + \ 'airline_a': [ s:V1[0] , s:V4[0] , s:V1[2] , s:V4[1] , '' ] , + \ 'airline_b': [ s:V4[0] , s:IM[0] , s:V4[1] , s:IM[1] , '' ] , + \ 'airline_c': [ s:V4[0] , s:N3[1] , s:V4[1] , s:N3[3] , '' ] } + + +let g:airline#themes#akr#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3) +let g:airline#themes#akr#palette.replace_modified = { + \ 'airline_a': [ s:R1[0] , s:R4[0] , s:R1[2] , s:R4[1] , '' ] , + \ 'airline_b': [ s:R4[0] , s:IM[0] , s:R4[1] , s:IM[1] , '' ] , + \ 'airline_c': [ s:R4[0] , s:N3[1] , s:R4[1] , s:N3[3] , '' ] } + + +let g:airline#themes#akr#palette.insert_paste = { + \ 'airline_a': [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] , + \ 'airline_b': [ s:PA[0] , s:IM[0] , s:PA[1] , s:IM[1] , '' ] , + \ 'airline_c': [ s:PA[0] , s:N3[1] , s:PA[1] , s:N3[3] , '' ] } + + +let g:airline#themes#akr#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA) +let g:airline#themes#akr#palette.inactive_modified = { + \ 'airline_c': [ s:N4[0] , '' , s:N4[1] , '' , '' ] } + + +if !get(g:, 'loaded_ctrlp', 0) + finish +endif +let g:airline#themes#akr#palette.ctrlp = airline#extensions#ctrlp#generate_color_map( + \ [ '#909636' , '#161616' , 10 , 0 , '' ] , + \ [ '#909636' , '#161616' , 10 , 0 , '' ] , + \ [ '#161616' , '#909636' , 0 , 10 , 'bold' ] ) diff --git a/host/software/pkgs/vim/asset/vim-color-akr/colors/akr.vim b/host/software/pkgs/vim/asset/vim-color-akr/colors/akr.vim new file mode 100644 index 0000000..4ffd2ca --- /dev/null +++ b/host/software/pkgs/vim/asset/vim-color-akr/colors/akr.vim @@ -0,0 +1,93 @@ +hi clear +syntax reset +let background = "dark" +let g:colors_name = "akr" + +hi Normal cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=0 guibg=#161616 +hi NonText cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=0 guibg=#161616 +hi LineNr cterm=NONE gui=NONE ctermfg=241 guifg=#606060 ctermbg=NONE guibg=NONE + +hi Cursor cterm=reverse gui=reverse ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi CursorLine cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=235 guibg=#262626 +hi CursorLineNr cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=235 guibg=#262626 +hi CursorColumn cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#F2F2F2 +hi ColorColumn cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=2 guibg=#AADB0F +hi SignColumn cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=2 guibg=#AADB0F + +hi TabLine cterm=NONE gui=NONE ctermfg=10 guifg=#909636 ctermbg=0 guibg=#161616 +hi TabLineFill cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=7 guibg=#F2F2F2 +hi TabLineSel cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=10 guibg=#909636 +hi StatusLine cterm=NONE gui=NONE ctermfg=10 guifg=#909636 ctermbg=235 guibg=#262626 +hi StatusLineNC cterm=NONE gui=NONE ctermfg=10 guifg=#909636 ctermbg=0 guibg=#161616 +hi VertSplit cterm=NONE gui=NONE ctermfg=235 guifg=#262626 ctermbg=235 guibg=#262626 +hi Visual cterm=NONE gui=NONE ctermfg=3 guifg=#E4E093 ctermbg=1 guibg=#8C3346 +hi VisualNOS cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE + +hi Pmenu cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=232 guibg=#080808 +hi PmenuSbar cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=235 guibg=#262626 +hi PmenuSel cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=241 guibg=#606060 +hi PmenuThumb cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=247 guibg=#9e9e9e + +hi DiffAdd cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=10 guibg=#909636 +hi DiffChange cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=3 guibg=#E4E093 +hi DiffDelete cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=1 guibg=#8C3346 +hi DiffText cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=4 guibg=#352F6A + +hi Search cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=10 guibg=#909636 +hi IncSearch cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=2 guibg=#AADB0F + +hi Comment cterm=NONE gui=italic ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Type cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi Boolean cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi String cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi Number cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi Title cterm=bold gui=bold ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi Constant cterm=bold gui=italic ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Identifier cterm=bold gui=bold ctermfg=7 guifg=#F2F2F2 ctermbg=0 guibg=#161616 +hi Statement cterm=bold gui=bold ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi StorageClass cterm=bold gui=bold ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi Conditional cterm=bold gui=bold ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE + +hi MatchParen cterm=bold gui=bold ctermfg=0 guifg=#161616 ctermbg=2 guibg=#AADB0F +hi Special cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Tabs cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=235 guibg=#262626 +hi ColorColumn cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=7 guibg=#F2F2F2 +hi Conceal cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Directory cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Error cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=1 guibg=#8C3346 +hi ErrorMsg cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=1 guibg=#8C3346 +hi FoldColumn cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Folded cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Ignore cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi ModeMsg cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi MoreMsg cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi Question cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi SignColumn cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi Underlined cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi WarningMsg cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=9 guibg=#FF0000 +hi WildMenu cterm=NONE gui=NONE ctermfg=0 guifg=#161616 ctermbg=10 guibg=#909636 +hi PreProc cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE + +hi xmlTagName cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi xmlEndTag cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi xmlNamespace cterm=bold gui=bold ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE +hi xmlAttrib cterm=NONE gui=NONE ctermfg=7 guifg=#F2F2F2 ctermbg=NONE guibg=NONE + +hi texSection cterm=bold gui=bold ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi texMathZoneX cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texMathText cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texMathSymbol cterm=bold gui=bold ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texMathOper cterm=bold gui=bold ctermfg=2 guifg=#AADB0F ctermbg=8 guibg=#000000 +hi texMathMatcher cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texTypeStyle cterm=bold gui=bold ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texStatement cterm=bold gui=bold ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi texGreek cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texBeginEnd cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE +hi texSubscript cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texSuperscript cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 +hi texBeginEndName cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=NONE guibg=NONE +hi Conceal cterm=NONE gui=NONE ctermfg=NONE guifg=NONE ctermbg=8 guibg=#000000 + +hi prologClauseHead cterm=NONE gui=NONE ctermfg=2 guifg=#AADB0F ctermbg=NONE guibg=NONE + +match Tabs /[\t]\+/ diff --git a/host/software/pkgs/vim/custom.nix b/host/software/pkgs/vim/custom.nix new file mode 100644 index 0000000..4719b72 --- /dev/null +++ b/host/software/pkgs/vim/custom.nix @@ -0,0 +1,42 @@ +{ pkgs }: + +let + vimrc = builtins.readFile ./asset/rc.vim; + plugins = pkgs.callPackage ./plugins.nix {}; +in +{ + vam = { + knownPlugins = pkgs.vimPlugins // plugins; + pluginDictionaries = [ + { names = [ + # UI enhancements + "vim-airline" + "goyo" + "vim-toggle-ui-elements" + # load project specific config + "vim-localvimrc" + # colors, syntax highlighting + "vim-color-akr" + "vim-polyglot" + "vim-addon-nix" + # file, buffer management + "ctrlp" + "vim-counterpoint" + "vim-signature" + # undo history tree + "vim-mundo" + # editing enhancements + "vim-wordmotion" + "vim-autoformat" + "surround" + "vim-unimpaired" + "vim-far" + # git integration + "fugitive" + "vim-gitgutter" + "vim-gina" + ];} + ]; + }; + customRC = vimrc; +} diff --git a/host/software/pkgs/vim/default.nix b/host/software/pkgs/vim/default.nix new file mode 100644 index 0000000..0b0001d --- /dev/null +++ b/host/software/pkgs/vim/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +let + custom_vim = pkgs.vim_configurable.customize { + name = "vim"; + vimrcConfig = (import ./custom.nix { pkgs = pkgs; }); + }; +in pkgs.lib.overrideDerivation custom_vim ( o: { + gui = false; + multibyteSupport = true; +} ) diff --git a/host/software/pkgs/vim/plugins.nix b/host/software/pkgs/vim/plugins.nix new file mode 100644 index 0000000..87abea4 --- /dev/null +++ b/host/software/pkgs/vim/plugins.nix @@ -0,0 +1,84 @@ +{ pkgs, fetchgit }: + +let + buildVimPlugin = pkgs.vimUtils.buildVimPluginFrom2Nix; +in { + + "vim-unimpaired" = buildVimPlugin { + name = "vim-unimpaired"; + src = fetchgit { + url = "https://github.com/tpope/vim-unimpaired"; + rev = "bacf1543cc957d47aa70c1dc0bcf99392925b008"; + sha256 = "0jx9xybjswnaa6v7hhfqm2nyd5v54xjd02ikw56wm7h6sfgchllx"; + }; + }; + + "vim-counterpoint" = buildVimPlugin { + name = "vim-counterpoint"; + src = fetchgit { + url = "https://github.com/jpetrie/vim-counterpoint"; + rev = "93d8fd9d18a378ab3db39411300716129358211c"; + sha256 = "02spr4mhj2035q45j8bf502jgpq76a518nv913zx46byfbl69lps"; + }; + }; + + "vim-mundo" = buildVimPlugin { + name = "vim-mundo"; + src = fetchgit { + url = "https://github.com/simnalamburt/vim-mundo"; + rev = "v3.0.1"; + sha256 = "052ywnd5r6ksiz1lsyqya9b94fdb0gr7krkdpc1gw1fx11qk5x2v"; + }; + }; + + "vim-toggle-ui-elements" = buildVimPlugin { + name = "vim-toggle-ui-elements"; + src = fetchgit { + url = "https://github.com/muellan/vim-toggle-ui-elements"; + rev = "325f60fe8030cc2a2312d67191f214c5c39ef283"; + sha256 = "0fl9kvp799l3nzy8lnjcb0y1hr3g1ba8n9v2mx83yaqdma0rvhi1"; + }; + }; + + "vim-git-commit-viewer" = buildVimPlugin { + name = "vim-git-commit-viewer"; + src = fetchgit { + url = "https://github.com/junegunn/gv.vim"; + rev = "7ee1ca8201a0e9f95ba5dd3ec344e3ce71d61d8e"; + sha256 = "0r0j8l0sm3xgb3hgmf0zm48mgj97nlkspg3jgv817nhwsl8pyc44"; + }; + }; + + "vim-far" = buildVimPlugin { + name = "vim-far"; + src = fetchgit { + url = "https://github.com/brooth/far.vim.git"; + rev = "5f8016e1df98b1f806e6347728dc012ae59579ab"; + sha256 = "15pcsd039srfvrj2a6f3ns8zh13vrbdx93pcyxzxd8i0vidshkmb"; + }; + }; + + "vim-wordmotion" = buildVimPlugin { + name = "vim-wordmotion"; + src = fetchgit { + url = "https://github.com/chaoren/vim-wordmotion.git"; + rev = "d8cd124a6e36f38f52a43cb9f144eddbc03d300f"; + sha256 = "04ag0ilv8v5h823p685aic9rm8b1l44cs4j5xx4zv1ljg95fx68n"; + }; + }; + + "vim-gina" = buildVimPlugin { + name = "vim-gina"; + src = fetchgit { + url = "https://github.com/lambdalisue/gina.vim.git"; + rev = "v0.3.2"; + sha256 = "06m9cb04qsk49jri3cyw1gr3q71r048pzym10zlqgzsl1jsnvalv"; + }; + }; + + "vim-color-akr" = buildVimPlugin { + name = "vim-color-akr"; + src = ./asset/vim-color-akr; + }; + +} diff --git a/host/software/vim.nix b/host/software/vim.nix new file mode 100644 index 0000000..8bd9b7f --- /dev/null +++ b/host/software/vim.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = let + custom_vim = import ./pkgs/vim/default.nix pkgs; + in [ + custom_vim + ]; +} -- cgit v1.2.3