summaryrefslogtreecommitdiff
path: root/host/software
diff options
context:
space:
mode:
Diffstat (limited to 'host/software')
-rw-r--r--host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem23
-rw-r--r--host/software/asset/dir_colors218
-rw-r--r--host/software/code.kummerlaender.eu.nix42
-rw-r--r--host/software/desktop.nix42
-rw-r--r--host/software/fish.nix76
-rw-r--r--host/software/kit.vpn.nix27
-rw-r--r--host/software/pkgs/vim/asset/rc.vim128
-rw-r--r--host/software/pkgs/vim/asset/vim-color-akr/autoload/airline/themes/akr.vim86
-rw-r--r--host/software/pkgs/vim/asset/vim-color-akr/colors/akr.vim93
-rw-r--r--host/software/pkgs/vim/custom.nix42
-rw-r--r--host/software/pkgs/vim/default.nix11
-rw-r--r--host/software/pkgs/vim/plugins.nix84
-rw-r--r--host/software/vim.nix9
13 files changed, 881 insertions, 0 deletions
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=<Tab> wildmenu wildmode=full
+
+let mapleader=","
+
+map <leader>s :let @/=""<CR>
+map <leader>c zz
+map <leader>d <c-]>
+
+nmap <backspace> :e#<CR>
+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 <C-Tab> :bnext<CR>
+nnoremap <C-S-Tab> :bprev<CR>
+
+" select previous line on file reload, useful when cycling file extensions
+autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g`\" zz" | endif
+nnoremap <Tab> :CounterpointNext<CR>
+nnoremap <S-Tab> :CounterpointPrevious<CR>
+
+nnoremap <C-left> gT
+nnoremap <C-right> gt
+nnoremap <space> @q
+nnoremap J }
+nnoremap K {
+
+nmap <Left> <<
+nmap <Right> >>
+vmap <Left> <gv
+vmap <Right> >gv
+
+nmap <Up> [e
+nmap <Down> ]e
+vmap <Up> [egv
+vmap <Down> ]egv
+
+nnoremap <A-left> <C-W>h
+nnoremap <A-right> <C-W>l
+nnoremap <A-up> <C-W>k
+nnoremap <A-down> <C-W>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 <F5> :MundoToggle<CR>
+nnoremap <F6> :GitGutterToggle<CR>
+nnoremap <F7> :SignatureToggleSigns<CR>
+nnoremap <F8> :Goyo<CR>
+
+nnoremap <c-b> :CtrlPBuffer<CR>
+nnoremap <c-m> :CtrlPMixed<CR>
+nnoremap <c-t> :CtrlPTag<CR>
+nnoremap <a-t> :CtrlPBufTag<CR>
+
+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 = '<Leader>'
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
+ ];
+}