diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..59ba8777 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +result +result/* diff --git a/config/.gitignore b/config/.gitignore new file mode 100644 index 00000000..59ba8777 --- /dev/null +++ b/config/.gitignore @@ -0,0 +1,2 @@ +result +result/* diff --git a/flake.nix b/flake.nix index b94b2b6c..4154b202 100644 --- a/flake.nix +++ b/flake.nix @@ -37,7 +37,7 @@ overlays = extraOverlays ++ (lib.attrValues self.overlays); }; pkgs = mkPkgs nixpkgs [ self.overlay ]; - pkgs' = mkPkgs nixpkgs-unstable []; + pkgs' = mkPkgs nixpkgs-unstable [ ]; lib = nixpkgs.lib.extend (self: super: { my = import ./lib { inherit pkgs inputs; lib = self; }; }); diff --git a/hosts/curve/configuration.nix b/hosts/curve/configuration.nix index 65da821e..0e2431b1 100755 --- a/hosts/curve/configuration.nix +++ b/hosts/curve/configuration.nix @@ -38,7 +38,7 @@ # }; networking.hostName = "curve"; # Define your hostname. - #networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. time.timeZone = "Australia/Brisbane"; @@ -62,7 +62,7 @@ users.users.anish = { isNormalUser = true; - extraGroups = [ "wheel" ]; + extraGroups = [ "wheel" "video" ]; }; # Enable the OpenSSH daemon. diff --git a/hosts/curve/default.nix b/hosts/curve/default.nix index c36cef6d..44846df4 100644 --- a/hosts/curve/default.nix +++ b/hosts/curve/default.nix @@ -2,6 +2,7 @@ { imports = [ ../home.nix + ../common.nix ./hardware-configuration.nix ./configuration.nix ]; @@ -14,16 +15,16 @@ discord.enable = true; rofi.enable = true; # godot.enable = true; - signal.enable = true; + # signal.enable = true; }; browsers = { - default = "brave"; - brave.enable = true; + default = "firefox"; + brave.enable = false; firefox.enable = true; qutebrowser.enable = true; }; gaming = { - steam.enable = true; + # steam.enable = true; # emulators.enable = true; # emulators.psx.enable = true; }; @@ -33,38 +34,38 @@ graphics.enable = true; mpv.enable = true; recording.enable = true; - spotify.enable = true; + spotify.enable = false; }; term = { default = "xst"; st.enable = true; }; vm = { - qemu.enable = true; + qemu.enable = false; }; }; dev = { - node.enable = true; - rust.enable = true; + node.enable = false; + rust.enable = false; python.enable = true; }; editors = { - default = "emacs"; - emacs.enable = true; - #vim.enable = true; + default = "vim"; + #emacs.enable = true; + vim.enable = true; }; shell = { adl.enable = true; - vaultwarden.enable = true; + vaultwarden.enable = false; direnv.enable = true; git.enable = true; gnupg.enable = true; - tmux.enable = true; - zsh.enable = true; + tmux.enable = false; + zsh.enable = false; }; services = { ssh.enable = true; - docker.enable = true; + docker.enable = false; # Needed occasionally to help the parental units with PC problems # teamviewer.enable = true; }; @@ -76,13 +77,14 @@ programs.ssh.startAgent = true; # services.openssh.startWhenNeeded = true; - networking.networkmanager.enable = true; + # networking.networkmanager.enable = true; # The global useDHCP flag is deprecated, therefore explicitly set to false # here. Per-interface useDHCP will be mandatory in the future, so this # generated config replicates the default behaviour. networking.useDHCP = false; programs.neovim.enable = true; + programs.light.enable = true; ## Personal backups # Syncthing is a bit heavy handed for my needs, so rsync to my NAS instead. diff --git a/modules/editors/vim.nix b/modules/editors/vim.nix index 93b1d398..6bf2c9e6 100644 --- a/modules/editors/vim.nix +++ b/modules/editors/vim.nix @@ -33,247 +33,248 @@ in { # '' # ]; - extraConfig = '' - set tabstop=2 - set showmatch - set shiftwidth=2 - set noexpandtab - set autoindent - - set foldmethod=indent " fold based on indent - set number - set nocompatible - set relativenumber - set showtabline=2 - set autowriteall - syntax on - set list lcs=tab:\|\ - filetype plugin on - - set termguicolors - let ayucolor="dark" - " colorscheme ayu - - " window - nmap wh :topleft vnew - nmap wl :botright vnew - nmap wk :topleft new - nmap wj :botright new - - let mapleader = "\" - - " lightline colorscheme - let g:lightline = { - \ 'colorscheme': 'seoul256', - \ } - - " moving splits with vim movements. - :tnoremap h - :tnoremap j - :tnoremap k - :tnoremap l - :inoremap h - :inoremap j - :inoremap k - :inoremap l - :nnoremap h - :nnoremap j - :nnoremap k - :nnoremap l - :nnoremap "=strftime("%Y-%m-%d %H:%M:") - :inoremap =strftime("%Y-%m-%d %H:%M:") - - " exit normal mode in terminal - :tnoremap - - let g:syntastic_always_populate_loc_list = 1 - let g:syntastic_auto_loc_list = 1 - let g:syntastic_check_on_open = 1 - let g:syntastic_check_on_wq = 0 - - let g:rainbow_active = 0 - autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll - - " keyboard commands - map t :NERDTreeToggle - map s :w - map q :wq - map r :RainbowParenthesesToggleAll - map zs :ZettelSearch - map zo :ZettelOpen - map zn :ZettelNew - - - " NERDTree - " open on directory - autocmd StdinReadPre * let s:std_in=1 - - " coc - " - " if hidden is not set, TextEdit might fail. - set hidden - - " Some servers have issues with backup files, see #649 - set nobackup - set nowritebackup - - " Better display for messages - set cmdheight=2 - - " You will have bad experience for diagnostic messages when it's default 4000. - set updatetime=300 - - " don't give |ins-completion-menu| messages. - set shortmess+=c - - " always show signcolumns - set signcolumn=yes - - " Use tab for trigger completion with characters ahead and navigate. - " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. - inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() - inoremap pumvisible() ? "\" : "\" - - function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' - endfunction - - " Use to trigger completion. - inoremap coc#refresh() - - " Use to confirm completion, `u` means break undo chain at current position. - " Coc only does snippet and additional edit on confirm. - inoremap pumvisible() ? "\" : "\u\" - " Or use `complete_info` if your vim support it, like: - " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" - - " Use `[g` and `]g` to navigate diagnostics - nmap [g (coc-diagnostic-prev) - nmap ]g (coc-diagnostic-next) - - " Remap keys for gotos - nmap gd (coc-definition) - nmap gy (coc-type-definition) - nmap gi (coc-implementation) - nmap gr (coc-references) - - " Use K to show documentation in preview window - nnoremap K :call show_documentation() - - function! s:show_documentation() - if (index(['vim','help'], &filetype) >= 0) - execute 'h '.expand('') - else - call CocAction('doHover') - endif - endfunction - - " Highlight symbol under cursor on CursorHold - autocmd CursorHold * silent call CocActionAsync('highlight') - - " Remap for rename current word - nmap rn (coc-rename) - - " Remap for format selected region - xmap f (coc-format-selected) - nmap f (coc-format-selected) - - augroup mygroup - autocmd! - " Setup formatexpr specified filetype(s). - autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') - " Update signature help on jump placeholder - autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') - augroup end - - " Remap for do codeAction of selected region, ex: `aap` for current paragraph - xmap a (coc-codeaction-selected) - nmap a (coc-codeaction-selected) - - " Remap for do codeAction of current line - nmap ac (coc-codeaction) - " Fix autofix problem of current line - nmap qf (coc-fix-current) - - " Create mappings for function text object, requires document symbols feature of languageserver. - xmap if (coc-funcobj-i) - xmap af (coc-funcobj-a) - omap if (coc-funcobj-i) - omap af (coc-funcobj-a) - - " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python - nmap (coc-range-select) - xmap (coc-range-select) - - " Use `:Format` to format current buffer - command! -nargs=0 Format :call CocAction('format') - - " Use `:Fold` to fold current buffer - command! -nargs=? Fold :call CocAction('fold', ) - - " use `:OR` for organize import of current buffer - command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') - - " Add status line support, for integration with other plugin, checkout `:h coc-status` - " set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} - - " Using CocList - " Show all diagnostics - nnoremap a :CocList diagnostics - " Manage extensions - nnoremap e :CocList extensions - " Show commands - nnoremap c :CocList commands - " Find symbol of current document - nnoremap o :CocList outline - " Search workspace symbols - nnoremap s :CocList -I symbols - " Do default action for next item. - nnoremap j :CocNext - " Do default action for previous item. - nnoremap k :CocPrev - " Resume latest coc list - nnoremap p :CocListResume - - au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl - ''; + #home-manager.programs.nvim = { + # extraConfig = '' + # set tabstop=2 + # set showmatch + # set shiftwidth=2 + # set noexpandtab + # set autoindent + # + # set foldmethod=indent " fold based on indent + # set number + # set nocompatible + # set relativenumber + # set showtabline=2 + # set autowriteall + # syntax on + # set list lcs=tab:\|\ + # filetype plugin on + # + # set termguicolors + # let ayucolor="dark" + # colorscheme ayu + # + # " window + # nmap wh :topleft vnew + # nmap wl :botright vnew + # nmap wk :topleft new + # nmap wj :botright new + # + # let mapleader = "\" + # + # " lightline colorscheme + # let g:lightline = { + # \ 'colorscheme': 'seoul256', + # \ } + # + # " moving splits with vim movements. + # :tnoremap h + # :tnoremap j + # :tnoremap k + # :tnoremap l + # :inoremap h + # :inoremap j + # :inoremap k + # :inoremap l + # :nnoremap h + # :nnoremap j + # :nnoremap k + # :nnoremap l + # :nnoremap "=strftime("%Y-%m-%d %H:%M:") + # :inoremap =strftime("%Y-%m-%d %H:%M:") + # + # " exit normal mode in terminal + # :tnoremap + # + # let g:syntastic_always_populate_loc_list = 1 + # let g:syntastic_auto_loc_list = 1 + # let g:syntastic_check_on_open = 1 + # let g:syntastic_check_on_wq = 0 + # + # let g:rainbow_active = 0 + # autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll + # + # " keyboard commands + # map t :NERDTreeToggle + # map s :w + # map q :wq + # map r :RainbowParenthesesToggleAll + # map zs :ZettelSearch + # map zo :ZettelOpen + # map zn :ZettelNew + # + # + # " NERDTree + # " open on directory + # autocmd StdinReadPre * let s:std_in=1 + # + # " coc + # " + # " if hidden is not set, TextEdit might fail. + # set hidden + # + # " Some servers have issues with backup files, see #649 + # set nobackup + # set nowritebackup + # + # " Better display for messages + # set cmdheight=2 + # + # " You will have bad experience for diagnostic messages when it's default 4000. + # set updatetime=300 + # + # " don't give |ins-completion-menu| messages. + # set shortmess+=c + # + # " always show signcolumns + # set signcolumn=yes + # + # " Use tab for trigger completion with characters ahead and navigate. + # " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. + # inoremap + # \ pumvisible() ? "\" : + # \ check_back_space() ? "\" : + # \ coc#refresh() + # inoremap pumvisible() ? "\" : "\" + # + # function! s:check_back_space() abort + # let col = col('.') - 1 + # return !col || getline('.')[col - 1] =~# '\s' + # endfunction + # + # " Use to trigger completion. + # inoremap coc#refresh() + # + # " Use to confirm completion, `u` means break undo chain at current position. + # " Coc only does snippet and additional edit on confirm. + # inoremap pumvisible() ? "\" : "\u\" + # " Or use `complete_info` if your vim support it, like: + # " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" + # + # " Use `[g` and `]g` to navigate diagnostics + # nmap [g (coc-diagnostic-prev) + # nmap ]g (coc-diagnostic-next) + # + # " Remap keys for gotos + # nmap gd (coc-definition) + # nmap gy (coc-type-definition) + # nmap gi (coc-implementation) + # nmap gr (coc-references) + # + # " Use K to show documentation in preview window + # nnoremap K :call show_documentation() + # + # function! s:show_documentation() + # if (index(['vim','help'], &filetype) >= 0) + # execute 'h '.expand('') + # else + # call CocAction('doHover') + # endif + # endfunction + # + # " Highlight symbol under cursor on CursorHold + # autocmd CursorHold * silent call CocActionAsync('highlight') + # + # " Remap for rename current word + # nmap rn (coc-rename) + # + # " Remap for format selected region + # xmap f (coc-format-selected) + # nmap f (coc-format-selected) + # + # augroup mygroup + # autocmd! + # " Setup formatexpr specified filetype(s). + # autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') + # " Update signature help on jump placeholder + # autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') + # augroup end + # + # " Remap for do codeAction of selected region, ex: `aap` for current paragraph + # xmap a (coc-codeaction-selected) + # nmap a (coc-codeaction-selected) + # + # " Remap for do codeAction of current line + # nmap ac (coc-codeaction) + # " Fix autofix problem of current line + # nmap qf (coc-fix-current) + # + # " Create mappings for function text object, requires document symbols feature of languageserver. + # xmap if (coc-funcobj-i) + # xmap af (coc-funcobj-a) + # omap if (coc-funcobj-i) + # omap af (coc-funcobj-a) + # + # " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python + # nmap (coc-range-select) + # xmap (coc-range-select) + # + # " Use `:Format` to format current buffer + # command! -nargs=0 Format :call CocAction('format') + # + # " Use `:Fold` to fold current buffer + # command! -nargs=? Fold :call CocAction('fold', ) + # + # " use `:OR` for organize import of current buffer + # command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') + # + # " Add status line support, for integration with other plugin, checkout `:h coc-status` + # " set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} + # + # " Using CocList + # " Show all diagnostics + # nnoremap a :CocList diagnostics + # " Manage extensions + # nnoremap e :CocList extensions + # " Show commands + # nnoremap c :CocList commands + # " Find symbol of current document + # nnoremap o :CocList outline + # " Search workspace symbols + # nnoremap s :CocList -I symbols + # " Do default action for next item. + # nnoremap j :CocNext + # " Do default action for previous item. + # nnoremap k :CocPrev + # " Resume latest coc list + # nnoremap p :CocListResume + # + # au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl + # ''; - extraPackages = with pkgs.vimPlugins; [ - vim-nix - fzf-vim - vim-elixir - emmet-vim - nerdtree - goyo-vim - vim-sneak - lightline-vim - csv-vim - vimwiki - coc-nvim - coc-json - coc-python - coc-pairs - coc-emmet - emmet-vim - LanguageClient-neovim - ayu-vim - rainbow_parentheses-vim - vim-surround - vim-fugitive - #iron-nvim - #nvim-colorizer - vim-devicons - # testing - #vim-processing - #vim-tidal - taskwiki - #vim-zettel - ]; - }; + # extraPackages = with pkgs.vimPlugins; [ + # vim-nix + # fzf-vim + # vim-elixir + # emmet-vim + # nerdtree + # goyo-vim + # vim-sneak + # lightline-vim + # csv-vim + # vimwiki + # coc-nvim + # coc-json + # coc-python + # coc-pairs + # coc-emmet + # emmet-vim + # LanguageClient-neovim + # ayu-vim + # rainbow_parentheses-vim + # vim-surround + # vim-fugitive + # #iron-nvim + # #nvim-colorizer + # vim-devicons + # # testing + # #vim-processing + # #vim-tidal + # taskwiki + # #vim-zettel + # ]; + #}; environment.shellAliases = { vim = "nvim"; diff --git a/modules/nvim.nix b/modules/nvim.nix new file mode 100644 index 00000000..3f886519 --- /dev/null +++ b/modules/nvim.nix @@ -0,0 +1,261 @@ +{ pkgs, ... }: + + + #nvim + { + environment.variables.EDITOR = "nvim"; + environment.shellAliases = { + k = "vim -c :VimwikiIndex"; + kz = "vim -c :VimwikiIndex -c :ZettelNew"; + }; + environment.systemPackages = with pkgs; [ + nodejs + ( neovim.override { + vimAlias = true; + configure = { + packages.myPlugins = with pkgs.vimPlugins; { + start = [ + vim-nix + fzf-vim + vim-elixir + emmet-vim + nerdtree + goyo-vim + vim-sneak + lightline-vim + csv-vim + vimwiki + coc-nvim + coc-json + coc-python + coc-pairs + coc-emmet + emmet-vim + LanguageClient-neovim + ayu-vim + rainbow_parentheses-vim + vim-surround + vim-fugitive + #iron-nvim + #nvim-colorizer + vim-devicons + # testing + #vim-processing + #vim-tidal + taskwiki + #vim-zettel + #vimwiki-sync + ]; + }; + customRC = '' + set tabstop=2 + set showmatch + set shiftwidth=2 + set noexpandtab + set autoindent + + set foldmethod=indent " fold based on indent + set number + set nocompatible + set relativenumber + set showtabline=2 + set autowriteall + syntax on + set list lcs=tab:\|\ + filetype plugin on + + set termguicolors + let ayucolor="dark" + colorscheme ayu + + " window + nmap wh :topleft vnew + nmap wl :botright vnew + nmap wk :topleft new + nmap wj :botright new + + let mapleader = "\" + + " lightline colorscheme + let g:lightline = { + \ 'colorscheme': 'seoul256', + \ } + + " moving splits with vim movements. + :tnoremap h + :tnoremap j + :tnoremap k + :tnoremap l + :inoremap h + :inoremap j + :inoremap k + :inoremap l + :nnoremap h + :nnoremap j + :nnoremap k + :nnoremap l + :nnoremap "=strftime("%Y-%m-%d %H:%M:") + :inoremap =strftime("%Y-%m-%d %H:%M:") + + " exit normal mode in terminal + :tnoremap + + let g:syntastic_always_populate_loc_list = 1 + let g:syntastic_auto_loc_list = 1 + let g:syntastic_check_on_open = 1 + let g:syntastic_check_on_wq = 0 + + let g:rainbow_active = 0 + autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll + + " keyboard commands + map t :NERDTreeToggle + map s :w + map q :wq + map r :RainbowParenthesesToggleAll + map zs :ZettelSearch + map zo :ZettelOpen + map zn :ZettelNew + + + " NERDTree + " open on directory + autocmd StdinReadPre * let s:std_in=1 + + " coc + " + " if hidden is not set, TextEdit might fail. + set hidden + + " Some servers have issues with backup files, see #649 + set nobackup + set nowritebackup + + " Better display for messages + set cmdheight=2 + + " You will have bad experience for diagnostic messages when it's default 4000. + set updatetime=300 + + " don't give |ins-completion-menu| messages. + set shortmess+=c + + " always show signcolumns + set signcolumn=yes + + " Use tab for trigger completion with characters ahead and navigate. + " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. + inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() + inoremap pumvisible() ? "\" : "\" + + function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' + endfunction + + " Use to trigger completion. + inoremap coc#refresh() + + " Use to confirm completion, `u` means break undo chain at current position. + " Coc only does snippet and additional edit on confirm. + inoremap pumvisible() ? "\" : "\u\" + " Or use `complete_info` if your vim support it, like: + " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" + + " Use `[g` and `]g` to navigate diagnostics + nmap [g (coc-diagnostic-prev) + nmap ]g (coc-diagnostic-next) + + " Remap keys for gotos + nmap gd (coc-definition) + nmap gy (coc-type-definition) + nmap gi (coc-implementation) + nmap gr (coc-references) + + " Use K to show documentation in preview window + nnoremap K :call show_documentation() + + function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + else + call CocAction('doHover') + endif + endfunction + + " Highlight symbol under cursor on CursorHold + autocmd CursorHold * silent call CocActionAsync('highlight') + + " Remap for rename current word + nmap rn (coc-rename) + + " Remap for format selected region + xmap f (coc-format-selected) + nmap f (coc-format-selected) + + augroup mygroup + autocmd! + " Setup formatexpr specified filetype(s). + autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') + " Update signature help on jump placeholder + autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') + augroup end + + " Remap for do codeAction of selected region, ex: `aap` for current paragraph + xmap a (coc-codeaction-selected) + nmap a (coc-codeaction-selected) + + " Remap for do codeAction of current line + nmap ac (coc-codeaction) + " Fix autofix problem of current line + nmap qf (coc-fix-current) + + " Create mappings for function text object, requires document symbols feature of languageserver. + xmap if (coc-funcobj-i) + xmap af (coc-funcobj-a) + omap if (coc-funcobj-i) + omap af (coc-funcobj-a) + + " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python + nmap (coc-range-select) + xmap (coc-range-select) + + " Use `:Format` to format current buffer + command! -nargs=0 Format :call CocAction('format') + + " Use `:Fold` to fold current buffer + command! -nargs=? Fold :call CocAction('fold', ) + + " use `:OR` for organize import of current buffer + command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') + + " Add status line support, for integration with other plugin, checkout `:h coc-status` + " set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} + + " Using CocList + " Show all diagnostics + nnoremap a :CocList diagnostics + " Manage extensions + nnoremap e :CocList extensions + " Show commands + nnoremap c :CocList commands + " Find symbol of current document + nnoremap o :CocList outline + " Search workspace symbols + nnoremap s :CocList -I symbols + " Do default action for next item. + nnoremap j :CocNext + " Do default action for previous item. + nnoremap k :CocPrev + " Resume latest coc list + nnoremap p :CocListResume + + au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl + ''; + }; + } + )]; +}