summaryrefslogtreecommitdiffstats
path: root/makefu/2configs
diff options
context:
space:
mode:
Diffstat (limited to 'makefu/2configs')
-rw-r--r--makefu/2configs/bgt/download.binaergewitter.de.nix5
-rw-r--r--makefu/2configs/bureautomation/automation/bureau-shutdown.nix26
-rw-r--r--makefu/2configs/bureautomation/camera/comic.nix6
-rw-r--r--makefu/2configs/bureautomation/comic-updater.nix28
-rw-r--r--makefu/2configs/bureautomation/default.nix36
-rw-r--r--makefu/2configs/bureautomation/lib/scripts.nix18
-rw-r--r--makefu/2configs/bureautomation/multi/10h_timers.nix (renamed from makefu/2configs/bureautomation/combination/10h_timers.nix)9
-rw-r--r--makefu/2configs/bureautomation/multi/README.md (renamed from makefu/2configs/bureautomation/combination/README.md)0
-rw-r--r--makefu/2configs/bureautomation/multi/aramark.nix24
-rw-r--r--makefu/2configs/bureautomation/multi/matrix.nix (renamed from makefu/2configs/bureautomation/combination/matrix.nix)0
-rw-r--r--makefu/2configs/bureautomation/multi/mittagessen.nix (renamed from makefu/2configs/bureautomation/combination/mittagessen.nix)0
-rw-r--r--makefu/2configs/bureautomation/visitor-photostore.nix57
-rw-r--r--makefu/2configs/default.nix3
-rw-r--r--makefu/2configs/editor/neovim/default.nix67
-rw-r--r--makefu/2configs/editor/neovim/vimrc469
-rw-r--r--makefu/2configs/editor/vim.nix2
-rw-r--r--makefu/2configs/editor/vimrc14
-rw-r--r--makefu/2configs/elchos/log.nix1
-rw-r--r--makefu/2configs/git/cgit-retiolum.nix14
-rw-r--r--makefu/2configs/gui/base.nix4
-rw-r--r--makefu/2configs/hw/tp-x230.nix6
-rw-r--r--makefu/2configs/hw/tp-x2x0.nix2
-rw-r--r--makefu/2configs/logging/filter/dnsmasq.conf19
-rw-r--r--makefu/2configs/logging/patterns/dnsmasq15
-rw-r--r--makefu/2configs/logging/server.nix123
-rw-r--r--makefu/2configs/nginx/euer.wiki.nix9
-rw-r--r--makefu/2configs/nginx/misa-felix-hochzeit.ml.nix3
-rw-r--r--makefu/2configs/share/gum.nix1
-rw-r--r--makefu/2configs/share/temp-share-samba.nix12
-rw-r--r--makefu/2configs/shiori.nix29
-rw-r--r--makefu/2configs/sickbeard/default.nix23
-rw-r--r--makefu/2configs/sickbeard/sickgear.nix35
-rw-r--r--makefu/2configs/stats/arafetch.nix24
-rw-r--r--makefu/2configs/stats/telegraf/default.nix10
-rw-r--r--makefu/2configs/tools/dev.nix32
-rw-r--r--makefu/2configs/torrent.nix16
-rw-r--r--makefu/2configs/virtualisation/docker.nix2
-rw-r--r--makefu/2configs/wireguard/server.nix5
38 files changed, 1082 insertions, 67 deletions
diff --git a/makefu/2configs/bgt/download.binaergewitter.de.nix b/makefu/2configs/bgt/download.binaergewitter.de.nix
index f223081e9..77c9ddc81 100644
--- a/makefu/2configs/bgt/download.binaergewitter.de.nix
+++ b/makefu/2configs/bgt/download.binaergewitter.de.nix
@@ -37,6 +37,11 @@ in {
'';
};
services.nginx = {
+ appendHttpConfig = ''
+ types {
+ audio/ogg oga ogg opus;
+ }
+ '';
enable = lib.mkDefault true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
diff --git a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
index 007f6064a..b9aa710c3 100644
--- a/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
+++ b/makefu/2configs/bureautomation/automation/bureau-shutdown.nix
@@ -34,18 +34,18 @@
}
{ alias = "Turn off Fernseher after last in group left";
trigger = [
- { # trigger when movement was detected at the time
- platform = "state";
- entity_id = "group.team";
- from = "home";
- to = "not_home";
- }
- { # trigger at 18:00 no matter what
- # to avoid 'everybody left before 18:00:00'
- platform = "time";
- at = "18:00:00";
- }
- ];
+ { # trigger when movement was detected at the time
+ platform = "state";
+ entity_id = "group.team";
+ from = "home";
+ to = "not_home";
+ }
+ { # trigger at 18:00 no matter what
+ # to avoid 'everybody left before 18:00:00'
+ platform = "time";
+ at = "18:00:00";
+ }
+ ];
action = [
{
service = "homeassistant.turn_off";
@@ -58,7 +58,7 @@
}
{
service = "notify.telegrambot";
- data = {
+ data_template = {
title = "Bureau Shutdown";
message = "All devices are turned off due to {{ trigger.platform }}";
};
diff --git a/makefu/2configs/bureautomation/camera/comic.nix b/makefu/2configs/bureautomation/camera/comic.nix
new file mode 100644
index 000000000..a847b0add
--- /dev/null
+++ b/makefu/2configs/bureautomation/camera/comic.nix
@@ -0,0 +1,6 @@
+[
+ { name = "Poorly Drawn Lines";
+ platform = "generic";
+ still_image_url = http://127.0.0.1:8123/local/lines.png ;
+ }
+]
diff --git a/makefu/2configs/bureautomation/comic-updater.nix b/makefu/2configs/bureautomation/comic-updater.nix
new file mode 100644
index 000000000..5f26bc2c7
--- /dev/null
+++ b/makefu/2configs/bureautomation/comic-updater.nix
@@ -0,0 +1,28 @@
+{ config, lib, pkgs, buildPythonPackage, ... }:
+
+let
+ mq = "192.168.8.11";
+ pkg = pkgs.ampel;
+in {
+ systemd.services.comic-updater = {
+ startAt = "daily";
+ description = "Send led change to message queue";
+ after = [ "network-online.target" ] ++ (lib.optional config.services.mosquitto.enable "mosquitto.service");
+ path = with pkgs; [ wget xmlstarlet ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ User = "hass";
+ WorkingDirectory = config.services.home-assistant.configDir;
+ ExecStart = pkgs.writeDash "update-poorly-drawn-lines" ''
+ set -euf
+ mkdir -p www/
+ cd www/
+ pic=$(wget -O- http://www.poorlydrawnlines.com/feed/ \
+ | xml sel -t -v '/rss/channel/item/content:encoded' \
+ | head -n 2 | sed -n 's/.*src="\([^"]\+\)".*/\1/p' )
+ wget "$pic" -nc && cp -v "$(basename "$pic")" lines.png
+ '';
+ PrivateTmp = true;
+ };
+ };
+}
diff --git a/makefu/2configs/bureautomation/default.nix b/makefu/2configs/bureautomation/default.nix
index 8ec9dacc2..d745d894a 100644
--- a/makefu/2configs/bureautomation/default.nix
+++ b/makefu/2configs/bureautomation/default.nix
@@ -1,12 +1,14 @@
{ config, pkgs, lib, ... }:
let
kodi-host = "192.168.8.11";
- ten_hours = import ./combination/10h_timers.nix { inherit lib; }; # provides: timer automation script
- mittagessen = import ./combination/mittagessen.nix { inherit lib; }; # provides: automation script
- matrix = import ./combination/matrix.nix { inherit lib; }; # provides: matrix automation
+ ten_hours = import ./multi/10h_timers.nix { inherit lib; }; # provides: timer automation script
+ mittagessen = import ./multi/mittagessen.nix { inherit lib; }; # provides: automation script
+ matrix = import ./multi/matrix.nix { inherit lib; }; # provides: matrix automation
+ aramark = import ./multi/aramark.nix { inherit lib; }; # provides: pommes sensor
in {
imports = [
./ota.nix
+ ./comic-updater.nix
];
networking.firewall.allowedTCPPorts = [ 8123 ];
state = [ "/var/lib/hass/known_devices.yaml" ];
@@ -113,7 +115,8 @@ in {
];
binary_sensor =
(import ./binary_sensor/buttons.nix) ++
- (import ./binary_sensor/motion.nix);
+ (import ./binary_sensor/motion.nix) ++
+ aramark.binary_sensor;
sensor =
[{ platform = "version"; }] ++
@@ -122,10 +125,12 @@ in {
(import ./sensor/airquality.nix) ++
((import ./sensor/outside.nix) {inherit lib;}) ++
(import ./sensor/influxdb.nix) ++
- (import ./sensor/tasmota_firmware.nix);
+ (import ./sensor/tasmota_firmware.nix) ++
+ aramark.sensor;
camera =
- (import ./camera/verkehrskamera.nix);
+ (import ./camera/verkehrskamera.nix)
+ ++ (import ./camera/comic.nix);
# not yet released
#person =
@@ -174,6 +179,7 @@ in {
"group.team"
"group.nachtlicht"
"group.switches"
+ "group.aramark"
];
};
automation = [];
@@ -195,7 +201,6 @@ in {
"device_tracker.carsten_phone"
"device_tracker.thierry_phone"
"device_tracker.frank_phone"
- "device_tracker.anthony_phone"
# "person.thorsten"
# "person.felix"
# "person.ecki"
@@ -205,6 +210,7 @@ in {
"camera.Baumarkt"
"camera.Autobahn_Heilbronn"
"camera.Autobahn_Singen"
+ "camera.poorly_drawn_lines"
];
nachtlicht = [
"switch.nachtlicht_a"
@@ -212,6 +218,21 @@ in {
"switch.nachtlicht_c"
"switch.nachtlicht_d"
];
+ Aramark = [
+ "binary_sensor.pommes"
+ "sensor.menu_1"
+ "sensor.menu_1_text"
+ "sensor.menu_1_preis"
+ "sensor.menu_2"
+ "sensor.menu_2_text"
+ "sensor.menu_2_preis"
+ "sensor.aktion"
+ "sensor.aktion_text"
+ "sensor.aktion_preis"
+ "sensor.mercato"
+ "sensor.mercato_text"
+ "sensor.mercato_preis"
+ ];
sensors = [
"media_player.kodi"
"script.blitz_10s"
@@ -221,6 +242,7 @@ in {
"sensor.easy2_dht22_humidity"
"sensor.easy2_dht22_temperature"
"sensor.air_quality"
+ # "binary_sensor.aramark_pommes"
# "binary_sensor.redbutton"
];
outside = [
diff --git a/makefu/2configs/bureautomation/lib/scripts.nix b/makefu/2configs/bureautomation/lib/scripts.nix
new file mode 100644
index 000000000..d8665f94f
--- /dev/null
+++ b/makefu/2configs/bureautomation/lib/scripts.nix
@@ -0,0 +1,18 @@
+{ lib, ... }:
+{
+ multi_flash = { entity, delays ? [ 500 ], alias ? "${entity}_multi_flash_${toString (lib.length delays)}" }:
+ {
+ inherit alias;
+ sequence = lib.flatten (builtins.map (delay: [
+ { service = "homeassistant.turn_on";
+ data.entity_id = entity;
+ }
+ { delay.milliseconds = delay; }
+ { service = "homeassistant.turn_off";
+ data.entity_id = entity;
+ }
+ { delay.milliseconds = delay; }
+ ]
+ ) delays);
+ };
+}
diff --git a/makefu/2configs/bureautomation/combination/10h_timers.nix b/makefu/2configs/bureautomation/multi/10h_timers.nix
index dec5347a6..53bfd3725 100644
--- a/makefu/2configs/bureautomation/combination/10h_timers.nix
+++ b/makefu/2configs/bureautomation/multi/10h_timers.nix
@@ -1,7 +1,6 @@
{lib, ... }:
let
- persons = [ "frank" "daniel" "thorsten" "carsten" "thierry" "ecki" "felix"
- "anthony" # antony
+ persons = [ "frank" "daniel" "thorsten" "carsten" "ecki" "felix"
"thierry" # tjeri
];
random_zu_lange = name: ''{{ [
@@ -45,7 +44,7 @@ let
"Im Kalender von ${name} sind heute acht Meetings eingeplant, von denen zwei bereits verpasst wurden",
"Das Postfach von ${name} beinhaltet einhundertachtundzwanzig ungelesene E-Mails.",
"Nachricht von Serge: ${name}, bitte melden Sie sich Umgehend bei mir im Büro!",
- "Luftqualität hat sich durch das Eintreffen von ${name} um zweihunder Punkte verschlechtert, bitte alle Fenster öffnen.",
+ "Luftqualität hat sich durch das Eintreffen von ${name} um zweihundert Punkte verschlechtert, bitte alle Fenster öffnen.",
"Die Tür geht auf, wer mag das sein? Schon schreitet hier der ${name} ein. Das Volk, es jubelt, Dirnen schmachten. Fürs Festmahl beginnt man schon zu schlachten. Er wird nur nach dem besten streben! Der ${name}, er soll lange leben!",
"${name} arbeitet gern für seinen Konzern",
"${name} ist nur froh im Großraumbüro",
@@ -147,8 +146,8 @@ let
entity_id = [ "timer.${name}_10h" ] ;
}
{ service = "homeassistant.turn_on";
- entity_id = [
- # "script.buzz_${name}"
+ entity_id = [
+ "switch.fernseher"
"script.blitz_10s"
"script.announce_${name}"
];
diff --git a/makefu/2configs/bureautomation/combination/README.md b/makefu/2configs/bureautomation/multi/README.md
index baad87fda..baad87fda 100644
--- a/makefu/2configs/bureautomation/combination/README.md
+++ b/makefu/2configs/bureautomation/multi/README.md
diff --git a/makefu/2configs/bureautomation/multi/aramark.nix b/makefu/2configs/bureautomation/multi/aramark.nix
new file mode 100644
index 000000000..ebe2cde81
--- /dev/null
+++ b/makefu/2configs/bureautomation/multi/aramark.nix
@@ -0,0 +1,24 @@
+{ lib, ... }:
+let
+ aramark = topic: name:
+ { platform = "mqtt";
+ inherit name;
+ state_topic = "/aramark/thales-deutschland/${topic}";
+ };
+ aramark_menue = menue:
+ [
+ (aramark "${menue}/title" menue)
+ (aramark "${menue}/description" "${menue} Text")
+ ((aramark "${menue}/price" "${menue} Preis") // { unit_of_measurement = "€"; })
+ ];
+in
+{
+ sensor = (aramark_menue "Menü 1")
+ ++ (aramark_menue "Menü 2")
+ ++ (aramark_menue "Mercato")
+ ++ (aramark_menue "Aktion");
+ binary_sensor =
+ [
+ ((aramark "pommes" "Pommes" ) // { payload_on = "True"; payload_off = "False"; })
+ ];
+}
diff --git a/makefu/2configs/bureautomation/combination/matrix.nix b/makefu/2configs/bureautomation/multi/matrix.nix
index 85ba31986..85ba31986 100644
--- a/makefu/2configs/bureautomation/combination/matrix.nix
+++ b/makefu/2configs/bureautomation/multi/matrix.nix
diff --git a/makefu/2configs/bureautomation/combination/mittagessen.nix b/makefu/2configs/bureautomation/multi/mittagessen.nix
index 3ec70998d..3ec70998d 100644
--- a/makefu/2configs/bureautomation/combination/mittagessen.nix
+++ b/makefu/2configs/bureautomation/multi/mittagessen.nix
diff --git a/makefu/2configs/bureautomation/visitor-photostore.nix b/makefu/2configs/bureautomation/visitor-photostore.nix
new file mode 100644
index 000000000..762226549
--- /dev/null
+++ b/makefu/2configs/bureautomation/visitor-photostore.nix
@@ -0,0 +1,57 @@
+{ config, lib, pkgs, ... }:
+# more than just nginx config but not enough to become a module
+let
+ wsgi-sock = "${workdir}/uwsgi-photostore.sock";
+ workdir = config.services.uwsgi.runDir;
+ wifi-itf = "wlp2s0";
+ wifi-ip = "172.16.9.96";
+in {
+
+ services.uwsgi = {
+ enable = true;
+ user = "nginx";
+ runDir = "/var/lib/photostore";
+ plugins = [ "python3" ];
+ instance = {
+ type = "emperor";
+ vassals = {
+ cameraupload-server = {
+ type = "normal";
+ pythonPackages = self: with self; [ pkgs.cameraupload-server ];
+ socket = wsgi-sock;
+ };
+ };
+ };
+ };
+
+ services.nginx = {
+ enable = lib.mkDefault true;
+ virtualHosts.${wifi-ip} = {
+ locations = {
+ "/".extraConfig = ''
+ expires -1;
+ uwsgi_pass unix://${wsgi-sock};
+ uwsgi_param UWSGI_CHDIR ${workdir};
+ uwsgi_param UWSGI_MODULE cuserver.main;
+ uwsgi_param UWSGI_CALLABLE app;
+ include ${pkgs.nginx}/conf/uwsgi_params;
+ '';
+ };
+ };
+ };
+
+ networking.firewall.allowedTCPPorts = [ 80 ];
+# networking.interfaces.${wifi-itf}.ipv4.addresses = [{
+# address = wifi-ip;
+# prefixLength = 24;
+# }];
+
+ networking.wireless = {
+ enable = true;
+ interfaces = [ wifi-itf ];
+ networks.Mobility = {
+ priority = -999;
+ psk = null;
+ };
+ };
+}
diff --git a/makefu/2configs/default.nix b/makefu/2configs/default.nix
index 177114a49..5faf3ce93 100644
--- a/makefu/2configs/default.nix
+++ b/makefu/2configs/default.nix
@@ -31,7 +31,8 @@ with import <stockholm/lib>;
boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
- nixpkgs.config.allowUnfreePredicate = (pkg: pkgs.lib.hasPrefix "unrar-" pkg.name);
+ nixpkgs.config.allowUnfreePredicate = pkg: packageName pkg == "unrar";
+
krebs = {
enable = true;
diff --git a/makefu/2configs/editor/neovim/default.nix b/makefu/2configs/editor/neovim/default.nix
new file mode 100644
index 000000000..c288212e9
--- /dev/null
+++ b/makefu/2configs/editor/neovim/default.nix
@@ -0,0 +1,67 @@
+{pkgs, config, ...}:
+{
+ fonts.fonts = [ pkgs.font-awesome_5 ];
+ # Neovim dependencies
+ home-manager.users.makefu = {
+ home.packages = with pkgs; [
+ ctags # dependencie
+ jq # For fixing json files
+ xxd # .bin files will be displayed with xxd
+ shellcheck # Shell linting
+ # ansible-lint # Ansible linting
+ unzip # To vim into unzipped files
+ # nodePackages.jsonlint # json linting
+ #ccls # C/C++ language server
+ #clang-tools # C++ fixer
+ cargo
+
+ # Go support
+ #go
+ #gotools
+ #gocode
+ ];
+
+ home.file.".config/pycodestyle".text= ''
+ [pycodestyle]
+ max-line-length = 125
+ '';
+ programs.neovim = {
+ enable = true;
+ withPython3 = true;
+ # withNodeJs = true;
+ extraPython3Packages = (ps: with ps; [ python-language-server pyls-mypy black libxml2]);
+ configure = {
+ customRC = builtins.readFile ./vimrc;
+ packages.myVimPackage = with pkgs.vimPlugins;
+ {
+ # loaded on launch
+ start = [
+ undotree
+ vim-addon-nix
+
+ nerdtree # file manager
+ commentary # comment stuff out based on language
+ fugitive # full git integration
+ vim-airline-themes # lean & mean status/tabline
+ vim-airline # status bar
+ gitgutter # git diff in the gutter (sign column)
+ vim-trailing-whitespace # trailing whitspaces in red
+ tagbar # F3 function overview
+ ReplaceWithRegister # For better copying/replacing
+ polyglot # Language pack
+ vim-indent-guides # for displaying indent levels
+ deoplete-nvim # general autocompletion
+ deoplete-go
+ ale
+ molokai # color scheme
+ ];
+ # manually loadable by calling `:packadd $plugin-name`
+ opt = [];
+ # To automatically load a plugin when opening a filetype, add vimrc lines like:
+ # autocmd FileType php :packadd phpCompletion
+ };
+ };
+ };
+ };
+}
+
diff --git a/makefu/2configs/editor/neovim/vimrc b/makefu/2configs/editor/neovim/vimrc
new file mode 100644
index 000000000..2a0a59f01
--- /dev/null
+++ b/makefu/2configs/editor/neovim/vimrc
@@ -0,0 +1,469 @@
+"*****************************************************************************
+"" Functions
+"*****************************************************************************
+
+function! GetBufferList()
+ redir =>buflist
+ silent! ls!
+ redir END
+ return buflist
+endfunction
+
+function! ToggleList(bufname, pfx)
+ let buflist = GetBufferList()
+ for bufnum in map(filter(split(buflist, '\n'), 'v:val =~ "'.a:bufname.'"'), 'str2nr(matchstr(v:val, "\\d\\+"))')
+ if bufwinnr(bufnum) != -1
+ exec(a:pfx.'close')
+ return
+ endif
+ endfor
+ if a:pfx == 'l' && len(getloclist(0)) == 0
+ echohl ErrorMsg
+ echo "Location List is Empty."
+ return
+ endif
+ let winnr = winnr()
+ exec(a:pfx.'open')
+ if winnr() != winnr
+ wincmd p
+ endif
+endfunction
+
+
+"*****************************************************************************
+"" Basic Setup
+"*****************************************************************************"
+" General
+let no_buffers_menu=1
+syntax on
+set ruler
+set number
+set mousemodel=popup
+set t_Co=256
+set guioptions=egmrti
+set gfn=Monospace\ 10
+
+" TODO: Testing if this works against automatically setting paste mode
+" Issue: https://github.com/neovim/neovim/issues/7994
+au InsertLeave * set nopaste
+
+
+set undofile
+"maximum number of changes that can be undone
+set undolevels=1000000
+"maximum number lines to save for undo on a buffer reload
+set undoreload=10000000
+
+set backupdir=~/.vim/backup
+set directory=~/.vim/tmp
+set undodir =~/.vim/undo
+
+" create Backup/tmp/undo dirs
+set backupdir=~/.vim/backup
+set directory=~/.vim/tmp
+
+function! InitBackupDir()
+ let l:parent = $HOME . '/.vim/'
+ let l:backup = l:parent . 'backup/'
+ let l:tmpdir = l:parent . 'tmp/'
+ let l:undodir= l:parent . 'undo/'
+
+
+ if !isdirectory(l:parent)
+ call mkdir(l:parent)
+ endif
+ if !isdirectory(l:backup)
+ call mkdir(l:backup)
+ endif
+ if !isdirectory(l:tmpdir)
+ call mkdir(l:tmpdir)
+ endif
+ if !isdirectory(l:undodir)
+ call mkdir(l:undodir)
+ endif
+endfunction
+call InitBackupDir()
+
+augroup Binary
+ " edit binaries in xxd-output, xxd is part of vim
+ au!
+ au BufReadPre *.bin let &bin=1
+ au BufReadPost *.bin if &bin | %!xxd
+ au BufReadPost *.bin set ft=xxd | endif
+ au BufWritePre *.bin if &bin | %!xxd -r
+ au BufWritePre *.bin endif
+ au BufWritePost *.bin if &bin | %!xxd
+ au BufWritePost *.bin set nomod | endif
+augroup END
+
+" Encoding
+set encoding=utf-8
+set fileencoding=utf-8
+set fileencodings=utf-8
+set bomb
+set binary
+
+" Fix backspace indent
+set backspace=indent,eol,start
+
+" Tabs. May be overriten by autocmd rules
+set tabstop=4
+set softtabstop=0
+set shiftwidth=4
+set expandtab
+
+" Map leader to ,
+let mapleader=','
+
+" Required for operations modifying multiple buffers like rename.
+set hidden
+
+" Searching
+set hlsearch
+set incsearch
+set ignorecase
+set smartcase
+
+" Directories for swp files
+set nobackup
+set noswapfile
+
+set fileformats=unix,dos,mac
+
+" File overview
+set wildmode=list:longest,list:full
+set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__
+
+" Shell to emulate
+if exists('$SHELL')
+ set shell=$SHELL
+else
+ set shell=/bin/bash
+endif
+
+" Set color scheme
+colorscheme molokai
+
+"Show always Status bar
+set laststatus=2
+
+" Use modeline overrides
+set modeline
+set modelines=10
+
+" Set terminal title
+set title
+set titleold="Terminal"
+set titlestring=%F
+
+" search will center on the line it's found in.
+nnoremap n nzzzv
+nnoremap N Nzzzv
+
+
+
+"*****************************************************************************
+"" Abbreviations
+"*****************************************************************************
+" no one is really happy until you have this shortcuts
+cnoreabbrev W! w!
+cnoreabbrev Q! q!
+cnoreabbrev Qall! qall!
+cnoreabbrev Wq wq
+cnoreabbrev Wa wa
+cnoreabbrev wQ wq
+cnoreabbrev WQ wq
+cnoreabbrev W w
+cnoreabbrev Q q
+cnoreabbrev Qall qall
+
+" NERDTree configuration
+let g:NERDTreeChDirMode=2
+let g:NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__']
+let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$']
+let g:NERDTreeShowBookmarks=1
+let g:nerdtree_tabs_focus_on_files=1
+let g:NERDTreeMapOpenInTabSilent = '<RightMouse>'
+let g:NERDTreeWinSize = 50
+set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite
+nnoremap <silent> <F1> :NERDTreeFind<CR>
+nnoremap <silent> <F2> :NERDTreeToggle<CR>
+
+
+" open terminal emulation
+nnoremap <silent> <leader>sh :terminal<CR>:startinsert<CR>
+
+"*****************************************************************************
+"" Autocmd Rules
+"*****************************************************************************
+"" The PC is fast enough, do syntax highlight syncing from start unless 200 lines
+augroup vimrc-sync-fromstart
+ autocmd!
+ autocmd BufEnter * :syntax sync maxlines=200
+augroup END
+
+" Nasm filetype
+augroup nasm
+ autocmd!
+ autocmd BufRead,BufNewFile *.nasm set ft=nasm
+augroup END
+
+" Binary filetype
+augroup Binary
+ au!
+ au BufReadPre *.bin,*.exe,*.elf let &bin=1
+ au BufReadPost *.bin,*.exe,*.elf if &bin | %!xxd
+ au BufReadPost *.bin,*.exe,*.elf set ft=xxd | endif
+ au BufWritePre *.bin,*.exe,*.elf if &bin | %!xxd -r
+ au BufWritePre *.bin,*.exe,*.elf endif
+ au BufWritePost *.bin,*.exe,*.elf if &bin | %!xxd
+ au BufWritePost *.bin,*.exe,*.elf set nomod | endif
+augroup END
+
+" Binary filetype
+augroup fasm
+ au!
+ au BufReadPost *.fasm set ft=fasm
+augroup END
+
+augroup deoplete-update
+ autocmd!
+ autocmd VimEnter * UpdateRemotePlugin
+augroup END
+
+
+