Add themeing to yyy_theme (depends on zzz_earlyload, must run before other stuff)
diff --git a/modules/neovim/yyy_theme/default.nix b/modules/neovim/yyy_theme/default.nix
new file mode 100644
index 0000000..4160599
--- /dev/null
+++ b/modules/neovim/yyy_theme/default.nix
@@ -0,0 +1,16 @@
+{ pkgs, ... }: {
+  programs.neovim = {
+    plugins = with pkgs.vimPlugins; [
+      onehalf
+      nvim-hlslens
+      pkgs.nvim-scrollbar
+      nvim-web-devicons
+    ];
+    extraConfig =
+      builtins.readFile ./theme.vim
+      + ''
+        source ${./scrollbar.lua}
+        source ${./icons.lua}
+      '';
+  };
+}
diff --git a/modules/neovim/yyy_theme/icons.lua b/modules/neovim/yyy_theme/icons.lua
new file mode 100644
index 0000000..025ccdb
--- /dev/null
+++ b/modules/neovim/yyy_theme/icons.lua
@@ -0,0 +1,3 @@
+require'nvim-web-devicons'.setup {
+  default = true;
+}
diff --git a/modules/neovim/yyy_theme/scrollbar.lua b/modules/neovim/yyy_theme/scrollbar.lua
new file mode 100644
index 0000000..90d9701
--- /dev/null
+++ b/modules/neovim/yyy_theme/scrollbar.lua
@@ -0,0 +1,31 @@
+local kopts = {noremap = true, silent = true}
+
+vim.api.nvim_set_keymap('n', 'n',
+    [[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
+    kopts)
+vim.api.nvim_set_keymap('n', 'N',
+    [[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
+    kopts)
+vim.api.nvim_set_keymap('n', '*', [[*<Cmd>lua require('hlslens').start()<CR>]], kopts)
+vim.api.nvim_set_keymap('n', '#', [[#<Cmd>lua require('hlslens').start()<CR>]], kopts)
+vim.api.nvim_set_keymap('n', 'g*', [[g*<Cmd>lua require('hlslens').start()<CR>]], kopts)
+vim.api.nvim_set_keymap('n', 'g#', [[g#<Cmd>lua require('hlslens').start()<CR>]], kopts)
+
+vim.api.nvim_set_keymap('n', '<Leader>l', ':noh<CR>', kopts)
+
+require("scrollbar").setup({
+  handle = {
+    color = vim.g["lightgrey"].gui,
+  },
+  marks = {
+    Search = { color = vim.g["yellow"].gui },
+    Error = { color = vim.g["red"].gui },
+    Warn = { color = vim.g["red"].gui },
+    Info = { color = vim.g["blue"].gui },
+    Hint = { color = vim.g["cyan"].gui },
+    Misc = { color = vim.g["purple"].gui },
+  },
+  handlers = {
+    search = true,
+  },
+})
diff --git a/modules/neovim/yyy_theme/theme.vim b/modules/neovim/yyy_theme/theme.vim
new file mode 100644
index 0000000..98e442d
--- /dev/null
+++ b/modules/neovim/yyy_theme/theme.vim
@@ -0,0 +1,35 @@
+if exists('+termguicolors')
+  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
+  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
+  set termguicolors
+endif
+colorscheme onehalfdark
+
+call g:Highlight("PmenuSbar", g:statusline, g:statusline)
+call g:Highlight("PmenuThumb", g:white, g:white)
+call g:Highlight("PmenuSel", g:transparent, g:lightgrey)
+call g:Highlight("Pmenu", g:transparent, g:statusline)
+
+call g:Highlight("HlSearchLens", g:darkyellow, g:transparent)
+call g:Highlight("HlSearchLensNear", g:white, g:darkyellow)
+
+set signcolumn=yes
+set guicursor=v-r-cr:hor50,i:ver50
+set guifont=Liga\ Roboto\ Mono:h12
+set splitright
+set splitbelow
+set scrolloff=3
+set number
+
+set textwidth=80
+set colorcolumn=+1
+call g:Highlight("ColorColumn", g:transparent, g:statusline)
+
+set number
+
+augroup numbertoggle
+  autocmd!
+  autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu && mode() != "i" | set rnu   | endif
+  autocmd BufLeave,FocusLost,InsertEnter,WinLeave   * if &nu                  | set nornu | endif
+augroup END
+