From a93abe6f0427338dc095b68c49cd3840b1bc8c3f Mon Sep 17 00:00:00 2001 From: Tristan Date: Fri, 5 Jan 2024 19:44:05 +0000 Subject: [PATCH] extract neovim --- global/home/default.nix | 2 + lib/modules/editor.nix | 79 +++---------------- lib/modules/neovim/config.lua | 19 ----- lib/modules/scripts.nix | 1 + lib/programs/home/neovim/config.lua | 28 +++++++ lib/programs/home/neovim/default.nix | 51 ++++++++++++ .../home}/neovim/lspconfig.lua | 10 --- lib/programs/{ => home}/swayidle.nix | 0 lib/programs/{ => home}/swaylock.nix | 0 lib/programs/{ => home}/waybar.nix | 0 lib/programs/hyprland.nix | 4 +- lib/programs/sway.nix | 2 +- lib/scripts.nix | 18 +++++ 13 files changed, 113 insertions(+), 101 deletions(-) delete mode 100644 lib/modules/neovim/config.lua create mode 100644 lib/programs/home/neovim/config.lua create mode 100644 lib/programs/home/neovim/default.nix rename lib/{modules => programs/home}/neovim/lspconfig.lua (82%) rename lib/programs/{ => home}/swayidle.nix (100%) rename lib/programs/{ => home}/swaylock.nix (100%) rename lib/programs/{ => home}/waybar.nix (100%) diff --git a/global/home/default.nix b/global/home/default.nix index b00fd63..0c2a912 100644 --- a/global/home/default.nix +++ b/global/home/default.nix @@ -29,6 +29,7 @@ let in { imports = [ ./graphical.nix + ../../lib/programs/home/neovim/. ]; programs.home-manager.enable = true; @@ -52,6 +53,7 @@ in { yt-dlp playerctl neofetch + tree ]; programs.fish = { diff --git a/lib/modules/editor.nix b/lib/modules/editor.nix index 5984dd7..3c199ba 100644 --- a/lib/modules/editor.nix +++ b/lib/modules/editor.nix @@ -7,8 +7,6 @@ with lib; let editor = config.programs.editor; pkg = editor.package; - terminal = config.programs.terminal.package; - termcmd = "${terminal}/bin/${terminal.pname}"; menu = config.programs.menu.package + config.programs.menu.dmenuCommand; in { options.programs = { @@ -27,67 +25,15 @@ in { programs.vscode = { enable = true; package = editor.package; - extensions = - if editor.neovim - then - with pkgs; [ - vscode-extensions.asvetliakov.vscode-neovim - ] - else []; - userSettings = - { - "keyboard.dispatch" = "keyCode"; - "terminal.integrated.sendKeybindingsToShell" = true; - "aws.telemetry" = false; - "gitlens.telemetry.enabled" = false; - "redhat.telemetry.enabled" = false; - "cSpell.language" = "en,en-GB"; - } - // ( - if editor.neovim - then { - "vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim"; - "extensions.experimental.affinity" = { - "asvetliakov.vscode-neovim" = 1; - }; - } - else {} - ); - }; - - programs.neovim = mkIf editor.neovim { - enable = true; - defaultEditor = true; - extraLuaConfig = '' - ${builtins.readFile ./neovim/config.lua} - ''; - extraPackages = with pkgs; [ - nodePackages_latest.typescript-language-server - vscode-langservers-extracted - gopls - nil - ]; - plugins = with pkgs.vimPlugins; [ - vim-surround - vim-commentary - { - plugin = telescope-nvim; - type = "lua"; - config = '' - local builtin = require('telescope.builtin') - vim.keymap.set('n', 'ff', builtin.find_files, {}) - vim.keymap.set('n', 'fg', builtin.live_grep, {}) - vim.keymap.set('n', 'fb', builtin.buffers, {}) - vim.keymap.set('n', 'fh', builtin.help_tags, {}) - ''; - } - { - plugin = nvim-lspconfig; - type = "lua"; - config = builtins.readFile ./neovim/lspconfig.lua; - } - firenvim - ]; + extensions = []; + userSettings = { + "keyboard.dispatch" = "keyCode"; + "terminal.integrated.sendKeybindingsToShell" = true; + "aws.telemetry" = false; + "gitlens.telemetry.enabled" = false; + "redhat.telemetry.enabled" = false; + "cSpell.language" = "en,en-GB"; + }; }; } ]; @@ -99,12 +45,7 @@ in { code_dir=~/Documents/code cd $code_dir repo=$({ ls && echo clone-repo; } | ${menu}) - case $repo in - clone-repo) - url=$(wl-paste) - ${termcmd} -e -- git clone "$url" ;; - *) [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ;; - esac + [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ''; install = false; hotkeys = [{key = "C";}]; diff --git a/lib/modules/neovim/config.lua b/lib/modules/neovim/config.lua deleted file mode 100644 index ee3d396..0000000 --- a/lib/modules/neovim/config.lua +++ /dev/null @@ -1,19 +0,0 @@ -vim.g.mapleader = ' ' -vim.g.maplocalleader = ' ' -vim.o.relativenumber = true -vim.o.signcolumn = 'yes' -vim.o.tabstop = 2 -vim.o.shiftwidth = 2 -vim.o.expandtab = true -vim.o.smartindent = true -vim.o.hlsearch = false -vim.o.scrolloff = 6 - -vim.keymap.set("v", "J", ":m '>+1gv=gv") -vim.keymap.set("v", "K", ":m '<-2gv=gv") - -vim.keymap.set("x", "p", "\"_dP") - -vim.keymap.set("n", "y", "\"+y") -vim.keymap.set("v", "y", "\"+y") - diff --git a/lib/modules/scripts.nix b/lib/modules/scripts.nix index b5477d8..dde89c4 100644 --- a/lib/modules/scripts.nix +++ b/lib/modules/scripts.nix @@ -15,6 +15,7 @@ with lib; let modifier = mkOption { description = "modifiers for the key"; default = "SUPER"; + example = "SUPER_SHIFT"; }; args = mkOption { description = "args for the script when use this key"; diff --git a/lib/programs/home/neovim/config.lua b/lib/programs/home/neovim/config.lua new file mode 100644 index 0000000..a995190 --- /dev/null +++ b/lib/programs/home/neovim/config.lua @@ -0,0 +1,28 @@ +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' +vim.o.relativenumber = true +vim.o.signcolumn = 'yes' +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 +vim.o.expandtab = true +vim.o.smartindent = true +vim.o.hlsearch = false +vim.o.scrolloff = 4 + +vim.keymap.set("v", "J", ":m '>+1gv=gv") +vim.keymap.set("v", "K", ":m '<-2gv=gv") + +vim.keymap.set("x", "p", "\"_dP") + +vim.keymap.set("n", "y", "\"+y") +vim.keymap.set("v", "y", "\"+y") + +-- Global mappings. +-- See `:help vim.diagnostic.*` for documentation on any of the below functions +vim.keymap.set('n', 'e', vim.diagnostic.open_float) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist) + +vim.keymap.set('v', '', '"+y') +vim.keymap.set('i', '', '"+p') diff --git a/lib/programs/home/neovim/default.nix b/lib/programs/home/neovim/default.nix new file mode 100644 index 0000000..064845e --- /dev/null +++ b/lib/programs/home/neovim/default.nix @@ -0,0 +1,51 @@ +{ + config, + pkgs, + lib, + ... +}: { + programs.neovim = { + enable = true; + defaultEditor = true; + extraLuaConfig = '' + ${builtins.readFile ./config.lua} + ''; + extraPackages = with pkgs; [ + nodePackages_latest.typescript-language-server + vscode-langservers-extracted + gopls + nil + ]; + plugins = with pkgs.vimPlugins; [ + vim-surround + vim-commentary + { + plugin = telescope-nvim; + type = "lua"; + config = '' + local builtin = require('telescope.builtin') + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fb', builtin.buffers, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) + ''; + } + { + plugin = nvim-lspconfig; + type = "lua"; + config = builtins.readFile ./lspconfig.lua; + } + firenvim + ]; + }; + + programs.vscode = { + extensions = [ pkgs.vscode-extensions.asvetliakov.vscode-neovim ]; + userSettings = { + "vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim"; + "extensions.experimental.affinity" = { + "asvetliakov.vscode-neovim" = 1; + }; + }; + }; +} diff --git a/lib/modules/neovim/lspconfig.lua b/lib/programs/home/neovim/lspconfig.lua similarity index 82% rename from lib/modules/neovim/lspconfig.lua rename to lib/programs/home/neovim/lspconfig.lua index 7b59ef8..0c48b40 100644 --- a/lib/modules/neovim/lspconfig.lua +++ b/lib/programs/home/neovim/lspconfig.lua @@ -16,16 +16,6 @@ lspconfig.eslint.setup { lspconfig.gopls.setup {} lspconfig.nil_ls.setup {} --- Global mappings. --- See `:help vim.diagnostic.*` for documentation on any of the below functions -vim.keymap.set('n', 'e', vim.diagnostic.open_float) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist) - -vim.keymap.set('v', '', '"+y') -vim.keymap.set('i', '', '"+p') - -- Use LspAttach autocommand to only map the following keys -- after the language server attaches to the current buffer vim.api.nvim_create_autocmd('LspAttach', { diff --git a/lib/programs/swayidle.nix b/lib/programs/home/swayidle.nix similarity index 100% rename from lib/programs/swayidle.nix rename to lib/programs/home/swayidle.nix diff --git a/lib/programs/swaylock.nix b/lib/programs/home/swaylock.nix similarity index 100% rename from lib/programs/swaylock.nix rename to lib/programs/home/swaylock.nix diff --git a/lib/programs/waybar.nix b/lib/programs/home/waybar.nix similarity index 100% rename from lib/programs/waybar.nix rename to lib/programs/home/waybar.nix diff --git a/lib/programs/hyprland.nix b/lib/programs/hyprland.nix index 0ec26ad..10a130c 100644 --- a/lib/programs/hyprland.nix +++ b/lib/programs/hyprland.nix @@ -15,8 +15,8 @@ }; home-manager.users.${user}.imports = [ - (import ./swaylock.nix) - (import ./swayidle.nix) + (import ./home/swaylock.nix) + (import ./home/swayidle.nix) { xdg.portal = { enable = true; diff --git a/lib/programs/sway.nix b/lib/programs/sway.nix index 57cfac7..cd1358c 100644 --- a/lib/programs/sway.nix +++ b/lib/programs/sway.nix @@ -16,7 +16,7 @@ }; home-manager.users.${user}.imports = [ - (import ./swaylock.nix) + (import ./home/swaylock.nix) { xdg.portal = { enable = true; diff --git a/lib/scripts.nix b/lib/scripts.nix index 381c9bb..3399c42 100644 --- a/lib/scripts.nix +++ b/lib/scripts.nix @@ -4,6 +4,8 @@ lib, ... }: let + terminal = config.programs.terminal.package; + termcmd = "${terminal}/bin/${terminal.pname}"; my-deps = { notify-send = "${pkgs.libnotify}/bin/notify-send"; playerctl = "${pkgs.playerctl}/bin/playerctl"; @@ -299,5 +301,21 @@ in { ]; install = false; } + { + name = "git clone"; + text = '' + url=$(wl-paste) + ${my-deps.notify-send} "Cloning $url" + ${termcmd} -e -- git clone "$url" + ${my-deps.notify-send} "Finished cloning $url" + ''; + install = true; + hotkeys = [ + { + key = "C"; + modifier = "SUPER_SHIFT"; + } + ]; + } ]; }