diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/kubernetes.yml b/vagrant/devstack/roles/centos-stream8/controller/tasks/kubernetes.yml deleted file mode 100644 index bd139c696..000000000 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/kubernetes.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: put yum repo for k8s - become: yes - template: src=templates/kubernetes.repo.j2 - dest=/etc/yum.repos.d/kubernetes.repo - mode=755 - -- name: install k8s - become: yes - dnf: name=kubeadm update_cache=yes diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/main.yml b/vagrant/devstack/roles/centos-stream8/controller/tasks/main.yml deleted file mode 100644 index f7c366e53..000000000 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/main.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- include: basic_pkgs.yml -- include: set_path_env.yml -- include: git_config.yml - -- include: python3_specific_vers.yml - -- include: vim_extra_plugins.yml - when: use_vim_extra_plugins == true - -- include: kubernetes.yml - -- include: ovn.yml - -- include: devstack.yml - -- include: setup_tacker.yml - when: use_tacker == true - -- include: extra_tools.yml - when: use_extra_tools == true diff --git a/vagrant/devstack/roles/centos-stream8/controller/templates/kubernetes.repo.j2 b/vagrant/devstack/roles/centos-stream8/controller/templates/kubernetes.repo.j2 deleted file mode 100644 index 65eda50b5..000000000 --- a/vagrant/devstack/roles/centos-stream8/controller/templates/kubernetes.repo.j2 +++ /dev/null @@ -1,7 +0,0 @@ -[kubernetes] -name=Kubernetes -baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 -enabled=1 -gpgcheck=1 -repo_gpgcheck=1 -gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg diff --git a/vagrant/devstack/roles/centos-stream8/compute/tasks/main.yml b/vagrant/devstack/roles/centos-stream9/compute/tasks/main.yml similarity index 100% rename from vagrant/devstack/roles/centos-stream8/compute/tasks/main.yml rename to vagrant/devstack/roles/centos-stream9/compute/tasks/main.yml diff --git a/vagrant/devstack/roles/centos-stream8/compute/templates/local.conf.j2 b/vagrant/devstack/roles/centos-stream9/compute/templates/local.conf.j2 similarity index 100% rename from vagrant/devstack/roles/centos-stream8/compute/templates/local.conf.j2 rename to vagrant/devstack/roles/centos-stream9/compute/templates/local.conf.j2 diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/basic_pkgs.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/basic_pkgs.yml similarity index 84% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/basic_pkgs.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/basic_pkgs.yml index c6f63e72a..bc6f6faed 100644 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/basic_pkgs.yml +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/basic_pkgs.yml @@ -1,7 +1,7 @@ --- - name: install basic packages become: yes - yum: name={{ item }} update_cache=yes + dnf: name={{ item }} update_cache=yes with_items: - python3 - python3-devel diff --git a/vagrant/devstack/roles/centos-stream9/controller/tasks/deactivate_gpgcheck.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/deactivate_gpgcheck.yml new file mode 100644 index 000000000..bbf22f69f --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/deactivate_gpgcheck.yml @@ -0,0 +1,23 @@ +- name: deactivate gpgcheck + become: yes + lineinfile: + path: /etc/yum.conf + regexp: '^gpgcheck=' + line: 'gpgcheck=0' + +- name: activate PATH for sudo + become: yes + lineinfile: + path: /etc/sudoers + state: present + insertbefore: '^Defaults\s+secure_path =' + line: 'Defaults env_keep += PATH' + +- name: deactivate secure_path for sudo + become: yes + lineinfile: + path: /etc/sudoers + state: present + backrefs: yes + regexp: '(^Defaults\s+secure_path = .*$)' + line: '#\1' diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/devstack.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/devstack.yml similarity index 100% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/devstack.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/devstack.yml diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/extra_tools.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/extra_tools.yml similarity index 67% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/extra_tools.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/extra_tools.yml index 2bd6aecba..c4e3f13de 100644 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/extra_tools.yml +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/extra_tools.yml @@ -1,6 +1,7 @@ --- - name: install extra packages become: yes - yum: name={{ item }} + dnf: name={{ item }} with_items: - jq + - lnav diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/git_config.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/git_config.yml similarity index 100% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/git_config.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/git_config.yml diff --git a/vagrant/devstack/roles/centos-stream9/controller/tasks/kubernetes.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/kubernetes.yml new file mode 100644 index 000000000..66e8e1e01 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/kubernetes.yml @@ -0,0 +1,22 @@ +--- +- name: put yum repo for k8s + become: yes + template: src=templates/kubernetes.repo.j2 + dest=/etc/yum.repos.d/kubernetes.repo + mode=755 + +- name: set selinux as permissive mode + become: yes + shell: setenforce 0 + +- name: set selinux as permissive mode + become: yes + shell: sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config + +- name: install k8s + become: yes + shell: yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes + +- name: activate kubelet + become: yes + shell: systemctl enable --now kubelet diff --git a/vagrant/devstack/roles/centos-stream9/controller/tasks/main.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/main.yml new file mode 100644 index 000000000..6e28c63f6 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/main.yml @@ -0,0 +1,23 @@ +--- +- include: deactivate_gpgcheck.yml + #- include: basic_pkgs.yml + #- include: set_path_env.yml + #- include: git_config.yml + # + ##- include: python3_specific_vers.yml + # + #- include: vim_extra_plugins.yml + # when: use_vim_extra_plugins == true + # + #- include: neovim.yml + #- include: kubernetes.yml + # + ##- include: ovn.yml + # + #- include: devstack.yml + # + #- include: setup_tacker.yml + # when: use_tacker == true + # + #- include: extra_tools.yml + # when: use_extra_tools == true diff --git a/vagrant/devstack/roles/centos-stream9/controller/tasks/neovim.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/neovim.yml new file mode 100644 index 000000000..9b5771a7b --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/neovim.yml @@ -0,0 +1,51 @@ +--- +- name: install neovim + become: yes + unarchive: + src=https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz + dest=/usr/local + remote_src=yes + +- name: set PATH for '.local/bin' + lineinfile: + line="export PATH=/usr/local/nvim-linux64/bin:$PATH" + dest={{ ansible_env.HOME }}/.bashrc + +- name: install latest nodejs for nvim coc + become: yes + shell: curl -sL install-node.vercel.app | sudo bash -s -- --yes + +- name: install latest yarn for nvim coc + become: yes + npm: + name: yarn + global: yes + +- name: create nvim config dir + file: + path={{ ansible_env.HOME }}/.config/nvim/lua/{{ item }} + state=directory + with_items: + - core + - plugins + +- name: upload init.lua + template: + src=templates/nvim/{{ item }} + dest={{ ansible_env.HOME }}/.config/nvim/{{ item }} + mode=664 + with_items: + - init.lua + - lua/plugins-setup.lua + - lua/core/options.lua + - lua/core/colorscheme.lua + - lua/core/keymaps.lua + - lua/core/keymaps-coc.lua + - lua/plugins/telescope.lua + - lua/plugins/comment.lua + - lua/plugins/lualine.lua + - lua/plugins/nvim-tree.lua + - lua/plugins/nvim-cmp.lua + - lua/plugins/autopairs.lua + - lua/plugins/treesitter.lua + - lua/plugins/gitsigns.lua diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/ovn.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/ovn.yml similarity index 79% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/ovn.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/ovn.yml index 3dfc0e4c7..e9a082f11 100644 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/ovn.yml +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/ovn.yml @@ -1,13 +1,13 @@ --- - name: install ovn via centos-openstack become: yes - yum: name={{ item }} update_cache=yes + dnf: name={{ item }} update_cache=yes with_items: - - centos-release-openstack-victoria + - centos-release-openstack-zed - name: install ovn become: yes - yum: name={{ item }} update_cache=yes + dnf: name={{ item }} update_cache=yes with_items: - openvswitch - openvswitch-ovn-common diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/python3_specific_vers.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/python3_specific_vers.yml similarity index 87% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/python3_specific_vers.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/python3_specific_vers.yml index ad24170fb..5925a396b 100644 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/python3_specific_vers.yml +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/python3_specific_vers.yml @@ -1,7 +1,7 @@ --- - name: install python3 other than default version become: yes - yum: name={{ item }} + dnf: name={{ item }} with_items: - python38 - python38-devel diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/set_path_env.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/set_path_env.yml similarity index 100% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/set_path_env.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/set_path_env.yml diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/setup_tacker.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/setup_tacker.yml similarity index 100% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/setup_tacker.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/setup_tacker.yml diff --git a/vagrant/devstack/roles/centos-stream8/controller/tasks/vim_extra_plugins.yml b/vagrant/devstack/roles/centos-stream9/controller/tasks/vim_extra_plugins.yml similarity index 54% rename from vagrant/devstack/roles/centos-stream8/controller/tasks/vim_extra_plugins.yml rename to vagrant/devstack/roles/centos-stream9/controller/tasks/vim_extra_plugins.yml index 4a976052a..610556aae 100644 --- a/vagrant/devstack/roles/centos-stream8/controller/tasks/vim_extra_plugins.yml +++ b/vagrant/devstack/roles/centos-stream9/controller/tasks/vim_extra_plugins.yml @@ -1,22 +1,34 @@ --- +- name: install epel-release for snapd + become: yes + dnf: name=epel-release + +- name: install snapd + become: yes + dnf: name=snapd + +- name: enable snapd via systemctl + become: yes + shell: systemctl enable --now snapd.socket + - name: create dir for plug.vim file: path={{ ansible_env.HOME }}/.vim/autoload state=directory - name: download plug.vim - get_url: url=https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - dest={{ ansible_env.HOME }}/.vim/autoload/plug.vim + shell: wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim -P {{ ansible_env.HOME }}/.vim/autoload/ - name: vimrc template: src=templates/vimrc.j2 dest={{ ansible_env.HOME }}/.vimrc mode=664 -- name: install exuberant-ctags - become: yes - yum: name=ctags +# TODO(yasufum): +#- name: install universal-ctags +# become: yes +# snap: name=universal-ctags - name: install npm become: yes - yum: name=npm + dnf: name=npm - name: install bash-language-server become: yes @@ -27,7 +39,7 @@ # required for python-language-server - name: install gcc-c++ become: yes - yum: name=gcc-c++ + dnf: name=gcc-c++ - name: install python-language-server become: yes diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/kubernetes.repo.j2 b/vagrant/devstack/roles/centos-stream9/controller/templates/kubernetes.repo.j2 new file mode 100644 index 000000000..d6b560c7f --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/kubernetes.repo.j2 @@ -0,0 +1,7 @@ +[kubernetes] +name=Kubernetes +baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 +enabled=1 +gpgcheck=0 +repo_gpgcheck=0 +gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/init.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/init.lua new file mode 100644 index 000000000..d01d8e88c --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/init.lua @@ -0,0 +1,15 @@ +require("plugins-setup") + +require("core.options") +require("core.colorscheme") +require("core.keymaps") +require("core.keymaps-coc") + +require("plugins.telescope") +require("plugins.comment") +require("plugins.lualine") +require("plugins.nvim-tree") +require("plugins.nvim-cmp") +require("plugins.autopairs") +require("plugins.treesitter") +require("plugins.gitsigns") diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/colorscheme.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/colorscheme.lua new file mode 100644 index 000000000..1c95fc769 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/colorscheme.lua @@ -0,0 +1,5 @@ +local status, _ = pcall(vim.cmd, "colorscheme nightfly") +if not status then + print("Colorsheme not found!") + return +end diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/keymaps-coc.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/keymaps-coc.lua new file mode 100644 index 000000000..bf9cf3510 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/keymaps-coc.lua @@ -0,0 +1,174 @@ +local keyset = vim.keymap.set +-- Autocomplete +function _G.check_back_space() + local col = vim.fn.col('.') - 1 + return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil +end + +-- Use Tab for trigger completion with characters ahead and navigate +-- NOTE: There's always a completion item selected by default, you may want to enable +-- no select by setting `"suggest.noselect": true` in your configuration file +-- NOTE: Use command ':verbose imap ' to make sure Tab is not mapped by +-- other plugins before putting this into your config +local opts = {silent = true, noremap = true, expr = true, replace_keycodes = false} +keyset("i", "", 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "" : coc#refresh()', opts) +keyset("i", "", [[coc#pum#visible() ? coc#pum#prev(1) : "\"]], opts) + +-- Make to accept selected completion item or notify coc.nvim to format +-- u breaks current undo, please make your own choice +keyset("i", "", [[coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\"]], opts) + +-- Use to trigger snippets +keyset("i", "", "(coc-snippets-expand-jump)") +-- Use to trigger completion +keyset("i", "", "coc#refresh()", {silent = true, expr = true}) + +-- Use `[g` and `]g` to navigate diagnostics +-- Use `:CocDiagnostics` to get all diagnostics of current buffer in location list +keyset("n", "[g", "(coc-diagnostic-prev)", {silent = true}) +keyset("n", "]g", "(coc-diagnostic-next)", {silent = true}) + +-- GoTo code navigation +keyset("n", "gd", "(coc-definition)", {silent = true}) +keyset("n", "gy", "(coc-type-definition)", {silent = true}) +keyset("n", "gi", "(coc-implementation)", {silent = true}) +keyset("n", "gr", "(coc-references)", {silent = true}) + + +-- Use K to show documentation in preview window +function _G.show_docs() + local cw = vim.fn.expand('') + if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then + vim.api.nvim_command('h ' .. cw) + elseif vim.api.nvim_eval('coc#rpc#ready()') then + vim.fn.CocActionAsync('doHover') + else + vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw) + end +end +keyset("n", "K", 'lua _G.show_docs()', {silent = true}) + + +-- Highlight the symbol and its references on a CursorHold event(cursor is idle) +vim.api.nvim_create_augroup("CocGroup", {}) +vim.api.nvim_create_autocmd("CursorHold", { + group = "CocGroup", + command = "silent call CocActionAsync('highlight')", + desc = "Highlight symbol under cursor on CursorHold" +}) + + +-- Symbol renaming +keyset("n", "rn", "(coc-rename)", {silent = true}) + + +-- Formatting selected code +keyset("x", "f", "(coc-format-selected)", {silent = true}) +keyset("n", "f", "(coc-format-selected)", {silent = true}) + + +-- Setup formatexpr specified filetype(s) +vim.api.nvim_create_autocmd("FileType", { + group = "CocGroup", + pattern = "typescript,json", + command = "setl formatexpr=CocAction('formatSelected')", + desc = "Setup formatexpr specified filetype(s)." +}) + +-- Update signature help on jump placeholder +vim.api.nvim_create_autocmd("User", { + group = "CocGroup", + pattern = "CocJumpPlaceholder", + command = "call CocActionAsync('showSignatureHelp')", + desc = "Update signature help on jump placeholder" +}) + +-- Apply codeAction to the selected region +-- Example: `aap` for current paragraph +local opts = {silent = true, nowait = true} +keyset("x", "a", "(coc-codeaction-selected)", opts) +keyset("n", "a", "(coc-codeaction-selected)", opts) + +-- Remap keys for apply code actions at the cursor position. +keyset("n", "ac", "(coc-codeaction-cursor)", opts) +-- Remap keys for apply code actions affect whole buffer. +keyset("n", "as", "(coc-codeaction-source)", opts) +-- Remap keys for applying codeActions to the current buffer +keyset("n", "ac", "(coc-codeaction)", opts) +-- Apply the most preferred quickfix action on the current line. +keyset("n", "qf", "(coc-fix-current)", opts) + +-- Remap keys for apply refactor code actions. +keyset("n", "re", "(coc-codeaction-refactor)", { silent = true }) +keyset("x", "r", "(coc-codeaction-refactor-selected)", { silent = true }) +keyset("n", "r", "(coc-codeaction-refactor-selected)", { silent = true }) + +-- Run the Code Lens actions on the current line +keyset("n", "cl", "(coc-codelens-action)", opts) + + +-- Map function and class text objects +-- NOTE: Requires 'textDocument.documentSymbol' support from the language server +keyset("x", "if", "(coc-funcobj-i)", opts) +keyset("o", "if", "(coc-funcobj-i)", opts) +keyset("x", "af", "(coc-funcobj-a)", opts) +keyset("o", "af", "(coc-funcobj-a)", opts) +keyset("x", "ic", "(coc-classobj-i)", opts) +keyset("o", "ic", "(coc-classobj-i)", opts) +keyset("x", "ac", "(coc-classobj-a)", opts) +keyset("o", "ac", "(coc-classobj-a)", opts) + + +-- Remap and to scroll float windows/popups +---@diagnostic disable-next-line: redefined-local +local opts = {silent = true, nowait = true, expr = true} +keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) +keyset("n", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) +keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(1)" : ""', opts) +keyset("i", "", + 'coc#float#has_scroll() ? "=coc#float#scroll(0)" : ""', opts) +keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(1) : ""', opts) +keyset("v", "", 'coc#float#has_scroll() ? coc#float#scroll(0) : ""', opts) + + +-- Use CTRL-S for selections ranges +-- Requires 'textDocument/selectionRange' support of language server +keyset("n", "", "(coc-range-select)", {silent = true}) +keyset("x", "", "(coc-range-select)", {silent = true}) + + +-- Add `:Format` command to format current buffer +vim.api.nvim_create_user_command("Format", "call CocAction('format')", {}) + +-- " Add `:Fold` command to fold current buffer +vim.api.nvim_create_user_command("Fold", "call CocAction('fold', )", {nargs = '?'}) + +-- Add `:OR` command for organize imports of the current buffer +vim.api.nvim_create_user_command("OR", "call CocActionAsync('runCommand', 'editor.action.organizeImport')", {}) + +-- Add (Neo)Vim's native statusline support +-- NOTE: Please see `:h coc-status` for integrations with external plugins that +-- provide custom statusline: lightline.vim, vim-airline +vim.opt.statusline:prepend("%{coc#status()}%{get(b:,'coc_current_function','')}") + +-- Mappings for CoCList +-- code actions and coc stuff +---@diagnostic disable-next-line: redefined-local +local opts = {silent = true, nowait = true} +-- Show all diagnostics +keyset("n", "a", ":CocList diagnostics", opts) +-- Manage extensions +keyset("n", "e", ":CocList extensions", opts) +-- Show commands +keyset("n", "c", ":CocList commands", opts) +-- Find symbol of current document +keyset("n", "o", ":CocList outline", opts) +-- Search workspace symbols +keyset("n", "s", ":CocList -I symbols", opts) +-- Do default action for next item +keyset("n", "j", ":CocNext", opts) +-- Do default action for previous item +keyset("n", "k", ":CocPrev", opts) +-- Resume latest coc list +keyset("n", "p", ":CocListResume", opts) diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/keymaps.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/keymaps.lua new file mode 100644 index 000000000..597573685 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/keymaps.lua @@ -0,0 +1,30 @@ +vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct. + +vim.api.nvim_set_keymap('t', '', '', {silent = true}) + +vim.api.nvim_create_autocmd({'TermOpen'}, { + command = 'startinsert', +}) +vim.api.nvim_create_autocmd({'TermOpen'}, { + command = 'set norelativenumber', +}) +vim.api.nvim_create_autocmd({'TermOpen'}, { + command = 'set nonumber', +}) + +vim.api.nvim_create_user_command( +'T', 'sp | wincmd j | resize 20 | terminal ', { nargs = '*' }) +vim.api.nvim_set_keymap('n', 'T', ':T ', { noremap = true }) + +vim.api.nvim_create_user_command( +'TS', 'vs | wincmd j | resize 100 | terminal ', { nargs = '*' }) +vim.api.nvim_set_keymap('n', 'TS', ':TS ', { noremap = true }) + +-- nvim-tree +vim.api.nvim_set_keymap('n', '', ':NvimTreeToggle ', {silent = true}) + +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, {}) diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/options.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/options.lua new file mode 100644 index 000000000..3601faa57 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/core/options.lua @@ -0,0 +1,58 @@ +local opt = vim.opt + +-- line numbers +opt.relativenumber = true +opt.number = true + +-- tabs and indentation +opt.tabstop = 2 +opt.shiftwidth = 2 +opt.expandtab = true +opt.autoindent = true + +-- line wrapping +opt.wrap = true + +-- search settings +opt.ignorecase = true +opt.smartcase = true + +-- cursor line +opt.cursorline = true +-- appearance +opt.termguicolors = true +opt.background = "dark" +opt.signcolumn = "yes" + +-- backspace +opt.backspace = "indent,eol,start" + +-- clipboard +opt.clipboard:append("unnamedplus") + +-- split windows +opt.splitright = true +opt.splitbelow = true + +opt.iskeyword:append("-") + +-- nvim-tree +-- disable netrw at the very start of your init.lua (strongly advised) +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +-- set termguicolors to enable highlight groups +vim.opt.termguicolors = true + +-- Coc options +-- Some servers have issues with backup files, see #649 +vim.opt.backup = false +vim.opt.writebackup = false + +-- Having longer updatetime (default is 4000 ms = 4s) leads to noticeable +-- delays and poor user experience +vim.opt.updatetime = 300 + +-- Always show the signcolumn, otherwise it would shift the text each time +-- diagnostics appeared/became resolved +vim.opt.signcolumn = "yes" diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins-setup.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins-setup.lua new file mode 100644 index 000000000..0e67f9692 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins-setup.lua @@ -0,0 +1,80 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +local plugins = { + { "neoclide/coc.nvim", branch = "release", build = "yarn install --frozen-lockfile" }, + + { "bluz71/vim-nightfly-colors", name = "nightfly", lazy = true, priority = 1000 }, + + { + "nvim-tree/nvim-tree.lua", version = "*", + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + config = function() + require("nvim-tree").setup {} + end, + }, + + -- fuzzy finding + { + 'nvim-telescope/telescope.nvim', tag = '0.1.1', + dependencies = { 'nvim-lua/plenary.nvim' } + }, + { + "nvim-telescope/telescope-fzf-native.nvim", + build = "make", + }, + + -- completion + { + "hrsh7th/nvim-cmp", + dependencies = { + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + } + }, + + -- snippet + { + "L3MON4D3/LuaSnip", + "saadparwaiz1/cmp_luasnip", + "rafamadriz/friendly-snippets", + }, + + -- treesitter + { + "nvim-treesitter/nvim-treesitter", + run = function() + require("nvim-treesitter.install").update({ with_sync = true }) + end, + }, + + -- auto closing + { + "windwp/nvim-autopairs", + "windwp/nvim-ts-autotag", + }, + + "lewis6991/gitsigns.nvim", + + "nvim-lualine/lualine.nvim", + + "numToStr/Comment.nvim", + + "tpope/vim-surround", + + "vim-scripts/ReplaceWithRegister", +} + +require("lazy").setup(plugins) diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/autopairs.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/autopairs.lua new file mode 100644 index 000000000..0595e860f --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/autopairs.lua @@ -0,0 +1,30 @@ +-- import nvim-autopairs safely +local autopairs_setup, autopairs = pcall(require, "nvim-autopairs") +if not autopairs_setup then + return +end + +-- configure autopairs +autopairs.setup({ + check_ts = true, -- enable treesitter + ts_config = { + lua = { "string" }, -- don't add pairs in lua string treesitter nodes + javascript = { "template_string" }, -- don't add pairs in javscript template_string treesitter nodes + java = false, -- don't check treesitter on java + }, +}) + +-- import nvim-autopairs completion functionality safely +local cmp_autopairs_setup, cmp_autopairs = pcall(require, "nvim-autopairs.completion.cmp") +if not cmp_autopairs_setup then + return +end + +-- import nvim-cmp plugin safely (completions plugin) +local cmp_setup, cmp = pcall(require, "cmp") +if not cmp_setup then + return +end + +-- make autopairs and completion work together +cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/comment.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/comment.lua new file mode 100644 index 000000000..36dca1944 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/comment.lua @@ -0,0 +1,6 @@ +local status, comment = pcall(require, "Comment") +if not status then + return +end + +comment.setup() diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/gitsigns.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 000000000..a2869c6ba --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,8 @@ +-- import gitsigns plugin safely +local setup, gitsigns = pcall(require, "gitsigns") +if not setup then + return +end + +-- configure/enable gitsigns +gitsigns.setup() diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/lualine.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/lualine.lua new file mode 100644 index 000000000..bbdf6ce4e --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/lualine.lua @@ -0,0 +1,6 @@ +local status, lualine = pcall(require, "lualine") +if not status then + return +end + +lualine.setup() diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/nvim-cmp.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/nvim-cmp.lua new file mode 100644 index 000000000..692fa8d69 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/nvim-cmp.lua @@ -0,0 +1,36 @@ +local cmp_status, cmp = pcall(require, "cmp") +if not cmp_status then + return +end + +local luasnip_status, luasnip = pcall(require, "luasnip") +if not luasnip_status then + return +end + +-- load friendly-snippets +require("luasnip/loaders/from_vscode").lazy_load() + +vim.opt.completeopt = "menu,menuone,noselect" + +cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = false }), + }), + sources = cmp.config.sources({ + { name = "luasnip" }, + { name = "buffer" }, + { name = "path" }, + }), +}) diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/nvim-tree.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/nvim-tree.lua new file mode 100644 index 000000000..951ad619a --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/nvim-tree.lua @@ -0,0 +1,14 @@ +local status, tree = pcall(require, "nvim-tree") +if not status then + return +end + +tree.setup({ + sort_by = "case_sensitive", + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + }, +}) diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/telescope.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/telescope.lua new file mode 100644 index 000000000..bd3546cea --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/telescope.lua @@ -0,0 +1,33 @@ +local telescope_setup, telescope = pcall(require, "telescope") +if not telescope_setup then + return +end + +local actions_setup, actions = pcall(require, "telescope.actions") +if not actions_setup then + return +end + +telescope.setup({ + defaults = { + mappings = { + i = { + [""] = actions.move_selection_previous, + [""] = actions.move_selection_next, + [""] = actions.send_selected_to_qflist + actions.open_qflist, + } + } + }, + extensions = { + fzf = { + fuzzy = true, + override_generic_sorter = true, + override_file_sorter = true, + case_mode = "smart_case", + } + } +}) + +-- To get fzf loaded and working with telescope, you need to call +-- load_extension, somewhere after setup function: +require('telescope').load_extension('fzf') diff --git a/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/treesitter.lua b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/treesitter.lua new file mode 100644 index 000000000..9f92190d2 --- /dev/null +++ b/vagrant/devstack/roles/centos-stream9/controller/templates/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,29 @@ +-- import nvim-treesitter plugin safely +local status, treesitter = pcall(require, "nvim-treesitter.configs") +if not status then + return +end + +-- configure treesitter +treesitter.setup({ + -- enable syntax highlighting + highlight = { + enable = true, + }, + -- enable indentation + indent = { enable = true }, + -- enable autotagging (w/ nvim-ts-autotag plugin) + autotag = { enable = true }, + -- ensure these language parsers are installed + ensure_installed = { + "awk", "bash", "comment", "css", "diff", "dockerfile", + "git_rebase", "gitattributes", "gitcommit", "gitignore", + "go", "gomod", "gosum", "graphql", + "help", "html", "http", "ini", "javascript", "jq", "json", "lua", + "make", "markdown", "markdown_inline", "mermaid", "ninja", + "python", "regex", "rst", "ruby", "sql", "svelte", + "terraform", "toml", "typescript", "tsx", "vim", "vue", "yaml", + }, + -- auto install above language parsers + auto_install = true, +}) diff --git a/vagrant/devstack/roles/centos-stream8/controller/templates/vimrc.j2 b/vagrant/devstack/roles/centos-stream9/controller/templates/vimrc.j2 similarity index 100% rename from vagrant/devstack/roles/centos-stream8/controller/templates/vimrc.j2 rename to vagrant/devstack/roles/centos-stream9/controller/templates/vimrc.j2 diff --git a/vagrant/devstack/site.yaml b/vagrant/devstack/site.yaml index 875f521da..8fd26e658 100644 --- a/vagrant/devstack/site.yaml +++ b/vagrant/devstack/site.yaml @@ -23,8 +23,14 @@ roles: - ubuntu-focal/compute -- name: centos-stream8 controller node - hosts: centos-stream8.controller +- name: centos-stream9 controller node + hosts: centos-stream9.controller remote_user: stack roles: - - centos-stream8/controller + - centos-stream9/controller + +- name: centos-stream9 compute node + hosts: centos-stream9.compute + remote_user: stack + roles: + - centos-stream9/compute