summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mb/1systems/gr33n/configuration.nix130
-rw-r--r--mb/1systems/gr33n/hardware-configuration.nix37
-rw-r--r--mb/1systems/orange/configuration.nix9
-rw-r--r--mb/1systems/p1nk/configuration.nix8
-rw-r--r--mb/2configs/default.nix3
-rw-r--r--tv/2configs/hw/x220.nix5
-rw-r--r--tv/2configs/vim.nix390
-rw-r--r--tv/5pkgs/vim/default.nix7
-rw-r--r--tv/5pkgs/vim/elixir.nix9
-rw-r--r--tv/5pkgs/vim/file-line.nix10
-rw-r--r--tv/5pkgs/vim/fzf.nix11
-rw-r--r--tv/5pkgs/vim/hack.nix46
-rw-r--r--tv/5pkgs/vim/jq.nix10
-rw-r--r--tv/5pkgs/vim/nix.nix222
-rw-r--r--tv/5pkgs/vim/showsyntax.nix26
-rw-r--r--tv/5pkgs/vim/tv.nix53
-rw-r--r--tv/5pkgs/vim/vim.nix16
17 files changed, 603 insertions, 389 deletions
diff --git a/mb/1systems/gr33n/configuration.nix b/mb/1systems/gr33n/configuration.nix
new file mode 100644
index 0000000..4342ba0
--- /dev/null
+++ b/mb/1systems/gr33n/configuration.nix
@@ -0,0 +1,130 @@
+{ config, pkgs, callPackage, ... }: let
+ unstable = import <nixpkgs-unstable> { config = { allowUnfree = true; }; };
+in {
+ imports =
+ [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ <stockholm/mb>
+ ];
+
+ krebs.build.host = config.krebs.hosts.gr33n;
+
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+ boot.extraModulePackages = with config.boot.kernelPackages; [ wireguard ];
+
+ # Use the systemd-boot EFI boot loader.
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
+ fileSystems."/mnt/public" = {
+ device = "//192.168.0.4/public";
+ fsType = "cifs";
+ options = let
+ automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
+ in [ "${automount_opts},user,rw,username=mb0,iocharset=utf8,credentials=${config.users.users.mb.home}/.smbcredentials" ];
+ };
+
+ i18n = {
+ consoleFont = "Lat2-Terminus16";
+ consoleKeyMap = "de";
+ defaultLocale = "en_US.UTF-8";
+ };
+
+ time.timeZone = "Europe/Berlin";
+
+ nixpkgs.config.allowUnfree = true;
+
+ nixpkgs.config.packageOverrides = super: {
+ openvpn = super.openvpn.override {
+ pkcs11Support = true;
+ useSystemd = false;
+ };
+ };
+
+ environment.shellAliases = {
+ ll = "ls -alh";
+ ls = "ls --color=tty";
+ };
+
+ environment.systemPackages = with pkgs; [
+ curl
+ fish
+ git
+ htop
+ nmap
+ ranger
+ tcpdump
+ tmux
+ traceroute
+ tree
+ vim
+ wcalc
+ wget
+ xz
+ ];
+
+ programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
+
+ sound.enable = false;
+
+ services.openssh.enable = true;
+ services.openssh.passwordAuthentication = false;
+
+ networking.wireless.enable = false;
+ networking.networkmanager.enable = false;
+ krebs.iptables.enable = true;
+ networking.enableIPv6 = false;
+
+ programs.fish = {
+ enable = true;
+ shellInit = ''
+ function ssh_agent --description 'launch the ssh-agent and add the id_rsa identity'
+ if begin
+ set -q SSH_AGENT_PID
+ and kill -0 $SSH_AGENT_PID
+ and grep -q '^ssh-agent' /proc/$SSH_AGENT_PID/cmdline
+ end
+ echo "ssh-agent running on pid $SSH_AGENT_PID"
+ else
+ eval (command ssh-agent -c | sed 's/^setenv/set -Ux/')
+ end
+ set -l identity $HOME/.ssh/id_rsa
+ set -l fingerprint (ssh-keygen -lf $identity | awk '{print $2}')
+ ssh-add -l | grep -q $fingerprint
+ or ssh-add $identity
+ end
+ '';
+ promptInit = ''
+ function fish_prompt --description 'Write out the prompt'
+ set -l color_cwd
+ set -l suffix
+ set -l nix_shell_info (
+ if test "$IN_NIX_SHELL" != ""
+ echo -n " <nix-shell>"
+ end
+ )
+ switch "$USER"
+ case root toor
+ if set -q fish_color_cwd_root
+ set color_cwd $fish_color_cwd_root
+ else
+ set color_cwd $fish_color_cwd
+ end
+ set suffix '#'
+ case '*'
+ set color_cwd $fish_color_cwd
+ set suffix '>'
+ end
+
+ echo -n -s "$USER" @ (set_color green) (prompt_hostname) (set_color normal) "$nix_shell_info" ' ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix "
+ end
+ '';
+ };
+
+ nix.buildCores = 4;
+ system.autoUpgrade.enable = false;
+ system.autoUpgrade.channel = "https://nixos.org/channels/nixos-19.03";
+ system.stateVersion = "19.03";
+
+}
diff --git a/mb/1systems/gr33n/hardware-configuration.nix b/mb/1systems/gr33n/hardware-configuration.nix
new file mode 100644
index 0000000..1d13b8d
--- /dev/null
+++ b/mb/1systems/gr33n/hardware-configuration.nix
@@ -0,0 +1,37 @@
+# Do not modify this file! It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations. Please make changes
+# to /etc/nixos/configuration.nix instead.
+{ config, lib, pkgs, ... }:
+
+{
+ imports =
+ [ <nixpkgs/nixos/modules/installer/scan/not-detected.nix>
+ ];
+
+ boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ boot.initrd.mdadmConf = ''
+ ARRAY /dev/md0 level=raid6 num-devices=4 metadata=1.2 name=gr33n:0 UUID=5b715fd9:0be6bfa6:19f07db4:c16836d6
+ devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1
+ '';
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/a9f2c19b-f60f-450c-87f1-146a54c4198b";
+ fsType = "ext4";
+ };
+ fileSystems."/storage" =
+ { device = "/dev/disk/by-label/storage";
+ fsType = "ext4";
+ };
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/93EB-BCA3";
+ fsType = "vfat";
+ };
+
+ swapDevices = [ ];
+
+ nix.maxJobs = lib.mkDefault 4;
+ powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
+}
diff --git a/mb/1systems/orange/configuration.nix b/mb/1systems/orange/configuration.nix
index 4ac0996..3e90f89 100644
--- a/mb/1systems/orange/configuration.nix
+++ b/mb/1systems/orange/configuration.nix
@@ -27,15 +27,13 @@ in {
fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
fileSystems."/mnt/public" = {
- device = "//192.168.88.252/public";
+ device = "//192.168.0.4/public";
fsType = "cifs";
options = let
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in [ "${automount_opts},user,rw,username=mb0,iocharset=utf8,credentials=${config.users.users.mb.home}/.smbcredentials" ];
};
- #networking.hostName = "0r4n93";
- networking.wireless.enable = false;
# Select internationalisation properties.
i18n = {
@@ -132,7 +130,6 @@ in {
vulnix
wcalc
wget
- wireshark-gtk
xz
];
@@ -151,6 +148,8 @@ in {
sound.enable = true;
hardware.pulseaudio.enable = true;
+ hardware.pulseaudio.support32Bit = true;
+ nixpkgs.config.pulseaudio = true;
services.xserver = {
enable = true;
@@ -173,7 +172,9 @@ in {
#services.openssh.permitRootLogin = "yes";
services.openssh.passwordAuthentication = false;
+ networking.wireless.enable = false;
networking.networkmanager.enable = false;
+ krebs.iptables.enable = true;
#networking.nameservers = [ "8.8.8.8" "141.1.1.1" ];
networking.enableIPv6 = false;
diff --git a/mb/1systems/p1nk/configuration.nix b/mb/1systems/p1nk/configuration.nix
index 28a7c77..905630e 100644
--- a/mb/1systems/p1nk/configuration.nix
+++ b/mb/1systems/p1nk/configuration.nix
@@ -22,14 +22,13 @@ in {
];
fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
fileSystems."/mnt/public" = {
- device = "//192.168.88.252/public";
+ device = "//192.168.0.4/public";
fsType = "cifs";
options = let
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in [ "${automount_opts},user,rw,username=mb0,iocharset=utf8,credentials=${config.users.users.mb.home}/.smbcredentials" ];
};
- networking.wireless.enable = true;
i18n = {
consoleFont = "Lat2-Terminus16";
@@ -143,11 +142,12 @@ in {
sound.enable = true;
hardware.pulseaudio.enable = true;
+ hardware.pulseaudio.support32Bit = true;
services.xserver = {
enable = true;
layout = "de";
- xkbOptions = "neo";
+ xkbOptions = "nodeadkeys";
libinput.enable = true;
desktopManager = {
default = "xfce";
@@ -164,7 +164,9 @@ in {
services.openssh.enable = true;
services.openssh.passwordAuthentication = false;
+ krebs.iptables.enable = true;
networking.networkmanager.enable = false;
+ networking.wireless.enable = true;
networking.nameservers = [ "8.8.8.8" "141.1.1.1" ];
networking.enableIPv6 = false;
diff --git a/mb/2configs/default.nix b/mb/2configs/default.nix
index 75189e1..ab11495 100644
--- a/mb/2configs/default.nix
+++ b/mb/2configs/default.nix
@@ -49,7 +49,7 @@ with import <stockholm/lib>;
build.user = config.krebs.users.mb;
};
- users.mutableUsers = false;
+ users.mutableUsers = true;
services.timesyncd.enable = mkForce true;
@@ -67,6 +67,7 @@ with import <stockholm/lib>;
environment.systemPackages = with pkgs; [
#stockholm
git
+ git-preview
gnumake
jq
parallel
diff --git a/tv/2configs/hw/x220.nix b/tv/2configs/hw/x220.nix
index 35e7d89..699b4a8 100644
--- a/tv/2configs/hw/x220.nix
+++ b/tv/2configs/hw/x220.nix
@@ -57,6 +57,11 @@
HandleSuspendKey=ignore
'';
+ # because extraConfig is not extra enough:
+ services.logind.lidSwitch = "ignore";
+ services.logind.lidSwitchDocked = "ignore";
+ services.logind.lidSwitchExternalPower = "ignore";
+
services.xserver = {
videoDriver = "intel";
};
diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index a45e040..f8d599f 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -14,389 +14,17 @@ let {
};
extra-runtimepath = concatMapStringsSep "," (pkg: "${pkg.rtp}") [
- # cannot use pkgs.vimPlugins.fzf-vim as it's missing :Rg
- (pkgs.vimUtils.buildVimPlugin {
- name = "fzf-2018-11-14";
- src = pkgs.fetchgit {
- url = https://github.com/junegunn/fzf.vim;
- rev = "ad1833ecbc9153b6e34a4292dc089a58c4bcb8dc";
- sha256 = "1z2q71q6l9hq9fqfqpj1svhyk4yk1bzw1ljhksx4bnpz8gkfbx2m";
- };
- })
+ pkgs.tv.vimPlugins.elixir
+ pkgs.tv.vimPlugins.file-line
+ pkgs.tv.vimPlugins.fzf
+ pkgs.tv.vimPlugins.hack
+ pkgs.tv.vimPlugins.jq
+ pkgs.tv.vimPlugins.nix
+ pkgs.tv.vimPlugins.showsyntax
+ pkgs.tv.vimPlugins.tv
+ pkgs.tv.vimPlugins.vim
pkgs.vimPlugins.fzfWrapper
pkgs.vimPlugins.undotree
- (pkgs.vimUtils.buildVimPlugin {
- name = "vim-elixir-2018-08-17";
- src = pkgs.fetchgit {
- url = https://github.com/elixir-editors/vim-elixir;
- rev = "0a847f0faed5ba2d94bb3d51f355c50f37ba025b";
- sha256 = "1jl85wpgywhcvhgw02y8zpvqf0glr4i8522kxpvhsiacb1v1xh04";
- };
- })
- (pkgs.vimUtils.buildVimPlugin {
- name = "vim-syntax-jq";
- src = pkgs.fetchgit {
- url = https://github.com/vito-c/jq.vim;
- rev = "99d55a300047946a82ecdd7617323a751199ad2d";
- sha256 = "09c94nah47wx0cr556w61h6pfznxld18pfblc3nv51ivbw7cjqyx";
- };
- })
- (pkgs.vimUtils.buildVimPlugin {
- name = "file-line-1.0";
- src = pkgs.fetchgit {
- url = git://github.com/bogado/file-line;
- rev = "refs/tags/1.0";
- sha256 = "0z47zq9rqh06ny0q8lpcdsraf3lyzn9xvb59nywnarf3nxrk6hx0";
- };
- })
- ((rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let
- name = "hack";
- in {
- name = "vim-color-${name}-1.0.2";
- destination = "/colors/${name}.vim";
- text = /* vim */ ''
- set background=dark
- hi clear
- if exists("syntax_on")
- syntax clear
- endif
-
- let colors_name = ${toJSON name}
-
- hi Normal ctermbg=235
- hi Comment ctermfg=242
- hi Constant ctermfg=255
- hi Identifier ctermfg=253
- hi Function ctermfg=253
- hi Statement ctermfg=253
- hi PreProc ctermfg=251
- hi Type ctermfg=251
- hi Delimiter ctermfg=251
- hi Special ctermfg=255
-
- hi Garbage ctermbg=088
- hi TabStop ctermbg=016
- hi Todo ctermfg=174 ctermbg=NONE
-
- hi NixCode ctermfg=040
- hi NixData ctermfg=046
- hi NixQuote ctermfg=071
-
- hi diffNewFile ctermfg=207
- hi diffFile ctermfg=207
- hi diffLine ctermfg=207
- hi diffSubname ctermfg=207
- hi diffAdded ctermfg=010
- hi diffRemoved ctermfg=009
-
- hi Search cterm=NONE ctermbg=216
- '';
- })))
- ((rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let
- name = "vim";
- in {
- name = "vim-syntax-${name}-1.0.0";
- destination = "/syntax/${name}.vim";
- text = /* vim */ ''
- ${concatMapStringsSep "\n" (s: /* vim */ ''
- syn keyword vimColor${s} ${s}
- \ containedin=ALLBUT,vimComment,vimLineComment
- hi vimColor${s} ctermfg=${s}
- '') (map (i: lpad 3 "0" (toString i)) (range 0 255))}
- '';
- })))
- ((rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let
- name = "showsyntax";
- in {
- name = "vim-plugin-${name}-1.0.0";
- destination = "/plugin/${name}.vim";
- text = /* vim */ ''
- if exists('g:loaded_showsyntax')
- finish
- endif
- let g:loaded_showsyntax = 0
-
- fu! ShowSyntax()
- let id = synID(line("."), col("."), 1)
- let name = synIDattr(id, "name")
- let transName = synIDattr(synIDtrans(id),"name")
- if name != transName
- let name .= " (" . transName . ")"
- endif
- echo "Syntax: " . name
- endfu
-
- command! -n=0 -bar ShowSyntax :call ShowSyntax()
- '';
- })))
- ((rtp: rtp // { inherit rtp; }) (pkgs.write "vim-tv" {
- #
- # Haskell
- #
- "/ftplugin/haskell.vim".text = ''
- if exists("g:vim_tv_ftplugin_haskell_loaded")
- finish
- endif
- let g:vim_tv_ftplugin_haskell_loaded = 1
-
- setlocal iskeyword+='
- '';
- #
- # TODO
- #
- "/ftdetect/todo.vim".text = ''
- au BufRead,BufNewFile TODO set ft=todo
- '';
- "/ftplugin/todo.vim".text = ''
- setlocal foldmethod=syntax
- '';
- "/syntax/todo.vim".text = ''
- syn match todoComment /#.*/
-
- syn match todoDate /^[1-9]\S*/
- \ nextgroup=todoSummary
-
- syn region todoSummary
- \ contained
- \ contains=todoTag
- \ start="." end="$\n"
- \ nextgroup=todoBlock
-
- syn match todoTag /\[[A-Za-z]\+\]/hs=s+1,he=e-1
- \ contained
-
- syn region todoBlock
- \ contained
- \ contains=Comment
- \ fold
- \ start="^[^1-9]" end="^[1-9 ]"re=s-1,he=s-1,me=s-1
-
- syn sync minlines=1000
-
- hi link todoComment Comment
- hi todoDate ctermfg=255
- hi todoSummary ctermfg=229
- hi todoBlock ctermfg=248
- hi todoTag ctermfg=217
- '';
- }))
- ((rtp: rtp // { inherit rtp; }) (pkgs.write "vim-syntax-nix-nested" {
- "/syntax/haskell.vim".text = ''
- syn region String start=+\[[[:alnum:]]*|+ end=+|]+
-
- hi link ConId Identifier
- hi link VarId Identifier
- hi link hsDelimiter Delimiter
- '';
- "/syntax/nix.vim".text = ''
- "" Quit when a (custom) syntax file was already loaded
- "if exists("b:current_syntax")
- " finish
- "endif
-
- "setf nix
-
- " Ref <nix/src/libexpr/lexer.l>
- syn match NixID /[a-zA-Z\_][a-zA-Z0-9\_\'\-]*/
- syn match NixINT /\<[0-9]\+\>/
- syn match NixPATH /[a-zA-Z0-9\.\_\-\+]*\(\/[a-zA-Z0-9\.\_\-\+]\+\)\+/
- syn match NixHPATH /\~\(\/[a-zA-Z0-9\.\_\-\+]\+\)\+/
- syn match NixSPATH /<[a-zA-Z0-9\.\_\-\+]\+\(\/[a-zA-Z0-9\.\_\-\+]\+\)*>/
- syn match NixURI /[a-zA-Z][a-zA-Z0-9\+\-\.]*:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']\+/
- syn region NixSTRING
- \ matchgroup=NixSTRING
- \ start='"'
- \ skip='\\"'
- \ end='"'
- syn region NixIND_STRING
- \ matchgroup=NixIND_STRING
- \ start="'''"
- \ skip="'''\('\|[$]\|\\[nrt]\)"
- \ end="'''"
-
- syn match NixOther /[-!+&<>|():/;=.,?\[\]*@]/
-
- syn match NixCommentMatch /\(^\|\s\)#.*/
- syn region NixCommentRegion start="/\*" end="\*/"
-
- hi link NixCode Statement
- hi link NixData Constant
- hi link NixComment Comment
-
- hi link NixCommentMatch NixComment
- hi link NixCommentRegion NixComment
- hi link NixID NixCode
- hi link NixINT NixData
- hi link NixPATH NixData
- hi link NixHPATH NixData
- hi link NixSPATH NixData
- hi link NixURI NixData
- hi link NixSTRING NixData
- hi link NixIND_STRING NixData
-
- hi link NixEnter NixCode
- hi link NixOther NixCode
- hi link NixQuote NixData
-
- syn cluster nix_has_dollar_curly contains=@nix_ind_strings,@nix_strings
- syn cluster nix_ind_strings contains=NixIND_STRING
- syn cluster nix_strings contains=NixSTRING
-
- ${concatStringsSep "\n" (mapAttrsToList (name: {
- extraStart ? null,
- lang ? name
- }:
- let
- startAlts = filter isString [
- ''/\* ${name} \*/''
- extraStart
- ];
- sigil = ''\(${concatStringsSep ''\|'' startAlts}\)[ \t\r\n]*'';
- in /* vim */ ''
- syn include @nix_${lang}_syntax syntax/${lang}.vim
- if exists("b:current_syntax")
- unlet b:current_syntax
- endif
-
- syn match nix_${lang}_sigil
- \ X${replaceStrings ["X"] ["\\X"] sigil}\ze\('''\|"\)X
- \ nextgroup=nix_${lang}_region_IND_STRING,nix_${lang}_region_STRING
- \ transparent
-
- syn region nix_${lang}_region_STRING
- \ matchgroup=NixSTRING
- \ start='"'
- \ skip='\\"'
- \ end='"'
- \ contained
- \ contains=@nix_${lang}_syntax
- \ transparent
-
- syn region nix_${lang}_region_IND_STRING
- \ matchgroup=NixIND_STRING
- \ start="'''"
- \ skip="'''\('\|[$]\|\\[nrt]\)"
- \ end="'''"
- \ contained
- \ contains=@nix_${lang}_syntax
- \ transparent
-
- syn cluster nix_ind_strings
- \ add=nix_${lang}_region_IND_STRING
-
- syn cluster nix_strings
- \ add=nix_${lang}_region_STRING
-
- " This is required because containedin isn't transitive.
- syn cluster nix_has_dollar_curly
- \ add=@nix_${lang}_syntax
- '') (let
-
- capitalize = s: let
- xs = stringToCharacters s;
- in
- toUpper (head xs) + concatStrings (tail xs);
-
- alts = xs: ''\(${concatStringsSep ''\|'' xs}\)'';
- def = k: ''${k}[ \t\r\n]*='';
- writer = k: ''write${k}[^ \t\r\n]*[ \t\r\n]*\("[^"]*"\|[a-z]\+\)'';
-
- writerExt = k: writerName ''[^"]*\.${k}'';
- writerName = k: ''write[^ \t\r\n]*[ \t\r\n]*"${k}"'';
-
- in {
- c = {};
- cabal = {};
- diff = {};
- haskell = {};
- jq.extraStart = alts [
- (writer "Jq")
- (writerExt "jq")
- ];
- javascript.extraStart = ''/\* js \*/'';
- lua = {};
- python.extraStart = ''/\* py \*/'';
- sed.extraStart = writer "Sed";
- sh.extraStart = let
- phases = [
- "unpack"
- "patch"
- "configure"
- "build"
- "check"
- "install"
- "fixup"
- "installCheck"
- "dist"
- ];
- shells = [
- "ash"
- "bash"
- "dash"
- ];
- in alts [
- (def "shellHook")
- (def "${alts phases}Phase")
- (def "${alts ["pre" "post"]}${alts (map capitalize phases)}")
- (writer (alts (map capitalize shells)))
- ];
- yaml = {};
- vim.extraStart = alts [
- (def ''"[^"]*\.vim"\.text'')
- (writerExt "vim")
- (writerName ''\([^"]*\.\)\?vimrc'')
- ];
- xdefaults = {};
- xmodmap = {};
- }))}
-
- " Clear syntax that interferes with nixINSIDE_DOLLAR_CURLY.
- syn clear shVarAssign
-
- syn region nixINSIDE_DOLLAR_CURLY
- \ matchgroup=NixEnter
- \ start="[$]{"
- \ end="}"
- \ contains=TOP
- \ containedin=@nix_has_dollar_curly
- \ transparent
-
- syn region nix_inside_curly
- \ matchgroup=NixEnter
- \ start="{"
- \ end="}"
- \ contains=TOP
- \ containedin=nixINSIDE_DOLLAR_CURLY,nix_inside_curly
- \ transparent
-
- syn match NixQuote /'''\(''$\|\\.\)/he=s+2
- \ containedin=@nix_ind_strings
- \ contained
-
- syn match NixQuote /'''\('\|\\.\)/he=s+1
- \ containedin=@nix_ind_strings
- \ contained
-
- syn match NixQuote /\\./he=s+1
- \ containedin=@nix_strings
- \ contained
-
- syn sync fromstart
-
- let b:current_syntax = "nix"
-
- set isk=@,48-57,_,192-255,-,'
- '';
- "/syntax/sed.vim".text = ''
- syn region sedBranch
- \ matchgroup=sedFunction start="T"
- \ matchgroup=sedSemicolon end=";\|$"
- \ contains=sedWhitespace
- '';
- "/syntax/xmodmap.vim".text = ''
- syn match xmodmapComment /^\s*!.*/
- '';
- }))
];
dirs = {
diff --git a/tv/5pkgs/vim/default.nix b/tv/5pkgs/vim/default.nix
new file mode 100644
index 0000000..5582be3
--- /dev/null
+++ b/tv/5pkgs/vim/default.nix
@@ -0,0 +1,7 @@
+with import <stockholm/lib>;
+
+self: super: {
+ tv = super.tv // {
+ vimPlugins = mapNixDir (path: self.callPackage path {}) ./.;
+ };
+}
diff --git a/tv/5pkgs/vim/elixir.nix b/tv/5pkgs/vim/elixir.nix
new file mode 100644
index 0000000..2ffbbc8
--- /dev/null
+++ b/tv/5pkgs/vim/elixir.nix
@@ -0,0 +1,9 @@
+{ pkgs }:
+pkgs.vimUtils.buildVimPlugin {
+ name = "vim-elixir-2018-08-17";
+ src = pkgs.fetchgit {
+ url = https://github.com/elixir-editors/vim-elixir;
+ rev = "0a847f0faed5ba2d94bb3d51f355c50f37ba025b";
+ sha256 = "1jl85wpgywhcvhgw02y8zpvqf0glr4i8522kxpvhsiacb1v1xh04";
+ };
+}
diff --git a/tv/5pkgs/vim/file-line.nix b/tv/5pkgs/vim/file-line.nix
new file mode 100644
index 0000000..2259726
--- /dev/null
+++ b/tv/5pkgs/vim/file-line.nix
@@ -0,0 +1,10 @@
+{ pkgs }:
+
+pkgs.vimUtils.buildVimPlugin {
+ name = "file-line-1.0";
+ src = pkgs.fetchgit {
+ url = git://github.com/bogado/file-line;
+ rev = "refs/tags/1.0";
+ sha256 = "0z47zq9rqh06ny0q8lpcdsraf3lyzn9xvb59nywnarf3nxrk6hx0";
+ };
+}
diff --git a/tv/5pkgs/vim/fzf.nix b/tv/5pkgs/vim/fzf.nix
new file mode 100644
index 0000000..14b6900
--- /dev/null
+++ b/tv/5pkgs/vim/fzf.nix
@@ -0,0 +1,11 @@
+{ pkgs }:
+
+# cannot use pkgs.vimPlugins.fzf-vim as it's missing :Rg
+pkgs.vimUtils.buildVimPlugin {
+ name = "fzf-2018-11-14";
+ src = pkgs.fetchgit {
+ url = https://github.com/junegunn/fzf.vim;
+ rev = "ad1833ecbc9153b6e34a4292dc089a58c4bcb8dc";
+ sha256 = "1z2q71q6l9hq9fqfqpj1svhyk4yk1bzw1ljhksx4bnpz8gkfbx2m";
+ };
+}
diff --git a/tv/5pkgs/vim/hack.nix b/tv/5pkgs/vim/hack.nix
new file mode 100644
index 0000000..2145cc1
--- /dev/null
+++ b/tv/5pkgs/vim/hack.nix
@@ -0,0 +1,46 @@
+with import <stockholm/lib>;
+{ pkgs }:
+
+(rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let
+ name = "hack";
+in {
+ name = "vim-color-${name}-1.0.2";
+ destination = "/colors/${name}.vim";
+ text = /* vim */ ''
+ set background=dark
+ hi clear
+ if exists("syntax_on")
+ syntax clear
+ endif
+
+ let colors_name = ${toJSON name}
+
+ hi Normal ctermbg=235
+ hi Comment ctermfg=242
+ hi Constant ctermfg=255
+ hi Identifier ctermfg=253
+ hi Function ctermfg=253
+ hi Statement ctermfg=253
+ hi PreProc ctermfg=251
+ hi Type ctermfg=251
+ hi Delimiter ctermfg=251
+ hi Special ctermfg=255
+
+ hi Garbage ctermbg=088
+ hi TabStop ctermbg=016
+ hi Todo ctermfg=174 ctermbg=NONE
+
+ hi NixCode ctermfg=040
+ hi NixData ctermfg=046
+ hi NixQuote ctermfg=071
+
+ hi diffNewFile ctermfg=207
+ hi diffFile ctermfg=207
+ hi diffLine ctermfg=207
+ hi diffSubname ctermfg=207
+ hi diffAdded ctermfg=010
+ hi diffRemoved ctermfg=009
+
+ hi Search cterm=NONE ctermbg=216
+ '';
+}))
diff --git a/tv/5pkgs/vim/jq.nix b/tv/5pkgs/vim/jq.nix
new file mode 100644
index 0000000..523f49f
--- /dev/null
+++ b/tv/5pkgs/vim/jq.nix
@@ -0,0 +1,10 @@
+{ pkgs }:
+
+pkgs.vimUtils.buildVimPlugin {
+ name = "vim-syntax-jq";
+ src = pkgs.fetchgit {
+ url = https://github.com/vito-c/jq.vim;
+ rev = "99d55a300047946a82ecdd7617323a751199ad2d";
+ sha256 = "09c94nah47wx0cr556w61h6pfznxld18pfblc3nv51ivbw7cjqyx";
+ };
+}
diff --git a/tv/5pkgs/vim/nix.nix b/tv/5pkgs/vim/nix.nix
new file mode 100644
index 0000000..a58a45b
--- /dev/null
+++ b/tv/5pkgs/vim/nix.nix
@@ -0,0 +1,222 @@
+with import <stockholm/lib>;
+{ pkgs }:
+
+(rtp: rtp // { inherit rtp; }) (pkgs.write "vim-syntax-nix-nested" {
+ "/syntax/haskell.vim".text = ''
+ syn region String start=+\[[[:alnum:]]*|+ end=+|]+
+
+ hi link ConId Identifier
+ hi link VarId Identifier
+ hi link hsDelimiter Delimiter
+ '';
+ "/syntax/nix.vim".text = ''
+ "" Quit when a (custom) syntax file was already loaded
+ "if exists("b:current_syntax")
+ " finish
+ "endif
+
+ "setf nix
+
+ " Ref <nix/src/libexpr/lexer.l>
+ syn match NixID /[a-zA-Z\_][a-zA-Z0-9\_\'\-]*/
+ syn match NixINT /\<[0-9]\+\>/
+ syn match NixPATH /[a-zA-Z0-9\.\_\-\+]*\(\/[a-zA-Z0-9\.\_\-\+]\+\)\+/
+ syn match NixHPATH /\~\(\/[a-zA-Z0-9\.\_\-\+]\+\)\+/
+ syn match NixSPATH /<[a-zA-Z0-9\.\_\-\+]\+\(\/[a-zA-Z0-9\.\_\-\+]\+\)*>/
+ syn match NixURI /[a-zA-Z][a-zA-Z0-9\+\-\.]*:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']\+/
+ syn region NixSTRING
+ \ matchgroup=NixSTRING
+ \ start='"'
+ \ skip='\\"'
+ \ end='"'
+ syn region NixIND_STRING
+ \ matchgroup=NixIND_STRING
+ \ start="'''"
+ \ skip="'''\('\|[$]\|\\[nrt]\)"
+ \ end="'''"
+
+ syn match NixOther /[-!+&<>|():/;=.,?\[\]*@]/
+
+ syn match NixCommentMatch /\(^\|\s\)#.*/
+ syn region NixCommentRegion start="/\*" end="\*/"
+
+ hi link NixCode Statement
+ hi link NixData Constant
+ hi link NixComment Comment
+
+ hi link NixCommentMatch NixComment
+ hi link NixCommentRegion NixComment
+ hi link NixID NixCode
+ hi link NixINT NixData
+ hi link NixPATH NixData
+ hi link NixHPATH NixData
+ hi link NixSPATH NixData
+ hi link NixURI NixData
+ hi link NixSTRING NixData
+ hi link NixIND_STRING NixData
+
+ hi link NixEnter NixCode
+ hi link NixOther NixCode
+ hi link NixQuote NixData
+
+ syn cluster nix_has_dollar_curly contains=@nix_ind_strings,@nix_strings
+ syn cluster nix_ind_strings contains=NixIND_STRING
+ syn cluster nix_strings contains=NixSTRING
+
+ ${concatStringsSep "\n" (mapAttrsToList (name: {
+ extraStart ? null,
+ lang ? name
+ }:
+ let
+ startAlts = filter isString [
+ ''/\* ${name} \*/''
+ extraStart
+ ];
+ sigil = ''\(${concatStringsSep ''\|'' startAlts}\)[ \t\r\n]*'';
+ in /* vim */ ''
+ syn include @nix_${lang}_syntax syntax/${lang}.vim
+ if exists("b:current_syntax")
+ unlet b:current_syntax
+ endif
+
+ syn match nix_${lang}_sigil
+ \ X${replaceStrings ["X"] ["\\X"] sigil}\ze\('''\|"\)X
+ \ nextgroup=nix_${lang}_region_IND_STRING,nix_${lang}_region_STRING
+ \ transparent
+
+ syn region nix_${lang}_region_STRING
+ \ matchgroup=NixSTRING
+ \ start='"'
+ \ skip='\\"'
+ \ end='"'
+ \ contained
+ \ contains=@nix_${lang}_syntax
+ \ transparent
+
+ syn region nix_${lang}_region_IND_STRING
+ \ matchgroup=NixIND_STRING
+ \ start="'''"
+ \ skip="'''\('\|[$]\|\\[nrt]\)"
+ \ end="'''"
+ \ contained
+ \ contains=@nix_${lang}_syntax
+ \ transparent
+
+ syn cluster nix_ind_strings
+ \ add=nix_${lang}_region_IND_STRING
+
+ syn cluster nix_strings
+ \ add=nix_${lang}_region_STRING
+
+ " This is required because containedin isn't transitive.
+ syn cluster nix_has_dollar_curly
+ \ add=@nix_${lang}_syntax
+ '') (let
+
+ # TODO move this higher
+ capitalize = s: let
+ xs = stringToCharacters s;
+ in
+ toUpper (head xs) + concatStrings (tail xs);
+
+ alts = xs: ''\(${concatStringsSep ''\|'' xs}\)'';
+ def = k: ''${k}[ \t\r\n]*='';
+ writer = k: ''write${k}[^ \t\r\n]*[ \t\r\n]*\("[^"]*"\|[a-z]\+\)'';
+
+ writerExt = k: writerName ''[^"]*\.${k}'';
+ writerName = k: ''write[^ \t\r\n]*[ \t\r\n]*"${k}"'';
+
+ in {
+ c = {};
+ cabal = {};
+ diff = {};
+ haskell = {};
+ jq.extraStart = alts [
+ (writer "Jq")
+ (writerExt "jq")
+ ];
+ javascript.extraStart = ''/\* js \*/'';
+ lua = {};
+ #nginx = {};
+ python.extraStart = ''/\* py \*/'';
+ sed.extraStart = writer "Sed";
+ sh.extraStart = let
+ phases = [
+ "unpack"
+ "patch"
+ "configure"
+ "build"
+ "check"
+ "install"
+ "fixup"
+ "installCheck"
+ "dist"
+ ];
+ shells = [
+ "ash"
+ "bash"
+ "dash"
+ ];
+ in alts [
+ (def "shellHook")
+ (def "${alts phases}Phase")
+ (def "${alts ["pre" "post"]}${alts (map capitalize phases)}")
+ (writer (alts (map capitalize shells)))
+ ];
+ yaml = {};
+ vim.extraStart = al