diff --git a/flake.nix b/flake.nix index be15beee..dbbbffc6 100644 --- a/flake.nix +++ b/flake.nix @@ -14,8 +14,7 @@ specialArgs = attrs; modules = [ ./configuration.nix - ./modules/editor.nix - ./modules/desktop.nix + ./home.nix hyprland.nixosModules.default { programs.hyprland.enable = true; diff --git a/modules/desktop.nix b/home.nix similarity index 63% rename from modules/desktop.nix rename to home.nix index 30d64539..dabf46a6 100644 --- a/modules/desktop.nix +++ b/home.nix @@ -351,5 +351,203 @@ with-fingerprint = true; }; }; + programs.neovim = { + enable = true; + extraConfig = '' + filetype plugin indent on + set undofile + set spell + set number + set clipboard=unnamedplus + set fileencoding=utf-8 " Ensure that we always save files as utf-8 + set fileencodings=utf-8,sjis " Automatically open shiftjis files with their proper encoding + set spelllang=en_us,cjk " Don't show errors for CJK characters + set noshowmode " Disable the --MODE-- text (enable if not using the status line) + set mouse=a + set ignorecase " By default use case-insensitive search (combine with smartcase) + set smartcase " Make search case-sensitive when using capital letters + set scrolloff=1 " The minimal number of rows to show when scrolling up/down + set sidescrolloff=5 " The minimal number of columns to show when scrolling left/right + set tabstop=4 " Show a tab character as 4 spaces + set softtabstop=0 " Edit soft tabs as if they're regular spaces + set shiftwidth=4 " Make autoindent appear as 4 spaces + + + map + imap + map <2-MiddleMouse> + imap <2-MiddleMouse> + map <3-MiddleMouse> + imap <3-MiddleMouse> + map <4-MiddleMouse> + imap <4-MiddleMouse> + + highlight Search ctermbg=240 ctermfg=255 + highlight IncSearch ctermbg=255 ctermfg=240 + + let mapleader = ' ' + nnoremap e :set nu! + nnoremap t :OverCommandLine%s/ + nnoremap a :Vexplore + nnoremap s :Sexplore + nnoremap d :Explore + nnoremap f :Files + nnoremap g :set hlsearch! + nnoremap j :Buffers + nnoremap k :NERDTreeToggleVCS + nnoremap l :Rg + nnoremap ; w + vnoremap y:silent !notify-send -t 4000 "成果" "$(tango '0')": + + autocmd BufNewFile,BufRead *.ecr setlocal syntax=html + autocmd BufWritePre,FileWritePre * silent! call mkdir(expand(':p:h'), 'p') + + ''; + plugins = with pkgs.vimPlugins; [ + { + plugin = nvim-tree-lua; + type = "lua"; + config = '' + require("nvim-tree").setup() + ''; + } + { + plugin = indent-blankline-nvim; + type = "lua"; + config = '' + require("indent_blankline").setup() + ''; + } + { + plugin = barbar-nvim; + type = "lua"; + config = '' + vim.g.barbar_auto_setup = false + require'barbar'.setup { + auto_hide = true, + sidebar_filetypes = { + NvimTree = true, + }, + } + ''; + } + { + plugin = gitsigns-nvim; + type = "lua"; + config = '' + require('gitsigns').setup() + ''; + } + { + plugin = nvim-web-devicons; + type = "lua"; + } + { + plugin = nvim-scrollbar; + type = "lua"; + config = ''require("scrollbar").setup()''; + } + { + plugin = nvim-base16; + type = "lua"; + config = "vim.cmd('colorscheme base16-monokai')"; + } + { + plugin = lualine-nvim; + type = "lua"; + config = "require('lualine').setup()"; + } + { + plugin = nvim-cursorline; + type = "lua"; + config = '' + require('nvim-cursorline').setup { + cursorline = { + enable = false, + }, + cursorword = { + enable = true, + min_length = 3, + hl = { underline = true }, + } + } + ''; + } + { + plugin = comment-nvim; + type = "lua"; + config = ''require('Comment').setup()''; + } + { + plugin = plenary-nvim; + type = "lua"; + } + { + plugin = telescope-nvim; + type = "lua"; + } + { + plugin = clipboard-image-nvim; + type = "lua"; + } + { + plugin = vimtex; + config = '' + " Disable all keybinds so we can define our own + let g:vimtex_mappings_enabled = 0 + let g:vimtex_imaps_enabled = 0 + let g:vimtex_view_method = 'zathura' + let g:vimtex_compiler_latexmk = {'build_dir': '.tex'} + + " Set the normal keybinds + nnoremap f (vimtex-view) + nnoremap g (vimtex-compile) + nnoremap d (vimtex-env-delete) + nnoremap c (vimtex-env-change) + ''; + } + vim-caddyfile + vim-graphql + vim-pug + vim-prisma + vim-javascript + vim-jsx-pretty + vim-vue + vim-over + vim-endwise + rust-vim + ]; + }; + editorconfig = { + enable = true; + settings = { + "*" = { + charset = "utf-8"; + end_of_line = "lf"; + insert_final_newline = true; + indent_size = 2; + indent_style = "space"; + trim_trailing_whitespace = true; + }; + "*.md" = { indent_style = "tab"; }; + "Makefile" = { + indent_style = "tab"; + indent_size = 4; + }; + "*.html" = { + indent_style = "tab"; + indent_size = 4; + }; + "*.go" = { + indent_style = "tab"; + indent_size = 4; + }; + }; + }; + xdg.configFile."tig/config".text = '' + color cursor black green bold + color title-focus black blue bold + color title-blur black blue bold + ''; }; } diff --git a/modules/editor.nix b/modules/editor.nix deleted file mode 100644 index 67bc79e3..00000000 --- a/modules/editor.nix +++ /dev/null @@ -1,203 +0,0 @@ -{ config, lib, nixpkgs, home-manager, ... }: { - imports = [ home-manager.nixosModule ]; - home-manager.users.user = { pkgs, ... }: { - programs.neovim = { - enable = true; - extraConfig = '' - filetype plugin indent on - set undofile - set spell - set number - set clipboard=unnamedplus - set fileencoding=utf-8 " Ensure that we always save files as utf-8 - set fileencodings=utf-8,sjis " Automatically open shiftjis files with their proper encoding - set spelllang=en_us,cjk " Don't show errors for CJK characters - set noshowmode " Disable the --MODE-- text (enable if not using the status line) - set mouse=a - set ignorecase " By default use case-insensitive search (combine with smartcase) - set smartcase " Make search case-sensitive when using capital letters - set scrolloff=1 " The minimal number of rows to show when scrolling up/down - set sidescrolloff=5 " The minimal number of columns to show when scrolling left/right - set tabstop=4 " Show a tab character as 4 spaces - set softtabstop=0 " Edit soft tabs as if they're regular spaces - set shiftwidth=4 " Make autoindent appear as 4 spaces - - - map - imap - map <2-MiddleMouse> - imap <2-MiddleMouse> - map <3-MiddleMouse> - imap <3-MiddleMouse> - map <4-MiddleMouse> - imap <4-MiddleMouse> - - highlight Search ctermbg=240 ctermfg=255 - highlight IncSearch ctermbg=255 ctermfg=240 - - let mapleader = ' ' - nnoremap e :set nu! - nnoremap t :OverCommandLine%s/ - nnoremap a :Vexplore - nnoremap s :Sexplore - nnoremap d :Explore - nnoremap f :Files - nnoremap g :set hlsearch! - nnoremap j :Buffers - nnoremap k :NERDTreeToggleVCS - nnoremap l :Rg - nnoremap ; w - vnoremap y:silent !notify-send -t 4000 "成果" "$(tango '0')": - - autocmd BufNewFile,BufRead *.ecr setlocal syntax=html - autocmd BufWritePre,FileWritePre * silent! call mkdir(expand(':p:h'), 'p') - - ''; - plugins = with pkgs.vimPlugins; [ - { - plugin = nvim-tree-lua; - type = "lua"; - config = '' - require("nvim-tree").setup() - ''; - } - { - plugin = indent-blankline-nvim; - type = "lua"; - config = '' - require("indent_blankline").setup() - ''; - } - { - plugin = barbar-nvim; - type = "lua"; - config = '' - vim.g.barbar_auto_setup = false - require'barbar'.setup { - auto_hide = true, - sidebar_filetypes = { - NvimTree = true, - }, - } - ''; - } - { - plugin = gitsigns-nvim; - type = "lua"; - config = '' - require('gitsigns').setup() - ''; - } - { - plugin = nvim-web-devicons; - type = "lua"; - } - { - plugin = nvim-scrollbar; - type = "lua"; - config = ''require("scrollbar").setup()''; - } - { - plugin = nvim-base16; - type = "lua"; - config = "vim.cmd('colorscheme base16-monokai')"; - } - { - plugin = lualine-nvim; - type = "lua"; - config = "require('lualine').setup()"; - } - { - plugin = nvim-cursorline; - type = "lua"; - config = '' - require('nvim-cursorline').setup { - cursorline = { - enable = false, - }, - cursorword = { - enable = true, - min_length = 3, - hl = { underline = true }, - } - } - ''; - } - { - plugin = comment-nvim; - type = "lua"; - config = ''require('Comment').setup()''; - } - { - plugin = plenary-nvim; - type = "lua"; - } - { - plugin = telescope-nvim; - type = "lua"; - } - { - plugin = clipboard-image-nvim; - type = "lua"; - } - { - plugin = vimtex; - config = '' - " Disable all keybinds so we can define our own - let g:vimtex_mappings_enabled = 0 - let g:vimtex_imaps_enabled = 0 - let g:vimtex_view_method = 'zathura' - let g:vimtex_compiler_latexmk = {'build_dir': '.tex'} - - " Set the normal keybinds - nnoremap f (vimtex-view) - nnoremap g (vimtex-compile) - nnoremap d (vimtex-env-delete) - nnoremap c (vimtex-env-change) - ''; - } - vim-caddyfile - vim-graphql - vim-pug - vim-prisma - vim-javascript - vim-jsx-pretty - vim-vue - vim-over - vim-endwise - rust-vim - ]; - }; - editorconfig = { - enable = true; - settings = { - "*" = { - charset = "utf-8"; - end_of_line = "lf"; - insert_final_newline = true; - indent_size = 2; - indent_style = "space"; - trim_trailing_whitespace = true; - }; - "*.md" = { indent_style = "tab"; }; - "Makefile" = { - indent_style = "tab"; - indent_size = 4; - }; - "*.html" = { - indent_style = "tab"; - indent_size = 4; - }; - "*.go" = { - indent_style = "tab"; - indent_size = 4; - }; - }; - }; - xdg.configFile."tig/config".text = '' - color cursor black green bold - color title-focus black blue bold - color title-blur black blue bold - ''; - }; -}