summaryrefslogtreecommitdiff
path: root/host
diff options
context:
space:
mode:
Diffstat (limited to 'host')
-rw-r--r--host/asterix.nix2
-rw-r--r--host/automatix.nix40
-rw-r--r--host/obelix.nix2
-rw-r--r--host/role/conf/vpn/kit.ovpn.nix19
-rw-r--r--host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem (renamed from host/role/conf/vpn/T-TeleSec_GlobalRoot_Class_2.pem)0
-rw-r--r--host/software/asset/dir_colors218
-rw-r--r--host/software/code.kummerlaender.eu.nix42
-rw-r--r--host/software/desktop.nix (renamed from host/role/desktop.nix)11
-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
17 files changed, 826 insertions, 64 deletions
diff --git a/host/asterix.nix b/host/asterix.nix
index d925259..0d078e9 100644
--- a/host/asterix.nix
+++ b/host/asterix.nix
@@ -1,7 +1,7 @@
{
imports = [
./hardware/asterix.nix
- ./role/desktop.nix
+ ./software/desktop.nix
];
boot = {
diff --git a/host/automatix.nix b/host/automatix.nix
index 9724b95..cbd0aeb 100644
--- a/host/automatix.nix
+++ b/host/automatix.nix
@@ -1,7 +1,10 @@
{ pkgs, ... }:
{
- imports = [ ./hardware/automatix.nix ];
+ imports = [
+ ./hardware/automatix.nix
+ ./software/code.kummerlaender.eu.nix
+ ];
boot.loader.grub = {
enable = true;
@@ -18,31 +21,6 @@
};
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
- [api]
- ENABLE_SWAGGER_ENDPOINT = false
- [picture]
- DISABLE_GRAVATAR = true
- [other]
- SHOW_FOOTER_VERSION = false
- SHOW_FOOTER_TEMPLATE_LOAD_TIME = false
- '';
- };
-
nginx = {
enable = true;
@@ -50,16 +28,6 @@
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
-
- virtualHosts."code.kummerlaender.eu" = {
- addSSL = true;
- enableACME = true;
- locations = {
- "/" = {
- proxyPass = "http://localhost:3000/";
- };
- };
- };
};
};
}
diff --git a/host/obelix.nix b/host/obelix.nix
index f876a61..8eea35e 100644
--- a/host/obelix.nix
+++ b/host/obelix.nix
@@ -3,7 +3,7 @@
{
imports = [
./hardware/obelix.nix
- ./role/desktop.nix
+ ./software/desktop.nix
];
boot = {
diff --git a/host/role/conf/vpn/kit.ovpn.nix b/host/role/conf/vpn/kit.ovpn.nix
deleted file mode 100644
index 82a21ee..0000000
--- a/host/role/conf/vpn/kit.ovpn.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-# adapted from https://www.scc.kit.edu/scc/net/openvpn/os/debian/kit.ovpn
-
-''
-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 ${./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
-''
diff --git a/host/role/conf/vpn/T-TeleSec_GlobalRoot_Class_2.pem b/host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem
index 374b050..374b050 100644
--- a/host/role/conf/vpn/T-TeleSec_GlobalRoot_Class_2.pem
+++ b/host/software/asset/T-TeleSec_GlobalRoot_Class_2.pem
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/role/desktop.nix b/host/software/desktop.nix
index cf20500..501a561 100644
--- a/host/role/desktop.nix
+++ b/host/software/desktop.nix
@@ -1,6 +1,10 @@
{ pkgs, ... }:
{
+ imports = [
+ ./kit.vpn.nix
+ ];
+
fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
sound.enable = true;
@@ -17,13 +21,6 @@
extraConfig = ''Storage=volatile'';
};
- openvpn.servers = {
- KIT = {
- config = import ./conf/vpn/kit.ovpn.nix;
- autoStart = false;
- };
- };
-
xserver = {
enable = true;
layout = "de";
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 {