diff --git a/README.md b/README.md index e69de29..54e8e3b 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,7 @@ +# Install mickes datta +``` +# apt install git ansible +$ git clone https://code.smolnet.org/micke/datta.git +$ cd datta +$ ansible-playbook --ask-become-pass setup.yaml +``` diff --git a/data/savannah-landscape-with-acacia-trees.jpeg b/data/savannah-landscape-with-acacia-trees.jpeg new file mode 100644 index 0000000..a480cc4 Binary files /dev/null and b/data/savannah-landscape-with-acacia-trees.jpeg differ diff --git a/playbooks/apt.yaml b/playbooks/apt.yaml new file mode 100644 index 0000000..7289a54 --- /dev/null +++ b/playbooks/apt.yaml @@ -0,0 +1,48 @@ +--- +- name: Install packages + hosts: localhost + connection: local + become: false + tasks: + - name: Install apt packages + become: true + ansible.builtin.apt: + autoclean: true + autoremove: true + install_recommends: true + pkg: + - ansible + - curl + - fcitx5 + - foot + - git + - grimshot + - lxpolkit + - network-manager-gnome + - nextcloud-desktop + - npm + - pass + - pipx + - python3-yamlfix + - sway + - sway-backgrounds + - sway-notification-center + - swayidle + - swaylock + - waybar + - wget + - wl-clipboard + - wofi + - yq + - zsh + state: latest + update_cache: true + - name: Remove apt packages + become: true + ansible.builtin.apt: + autoclean: true + autoremove: true + install_recommends: true + pkg: [nano] + state: absent + update_cache: true diff --git a/playbooks/nvim.yaml b/playbooks/nvim.yaml new file mode 100644 index 0000000..7284344 --- /dev/null +++ b/playbooks/nvim.yaml @@ -0,0 +1,93 @@ +--- +- name: Set nvim/lvim + hosts: localhost + vars: + uid: "{{ lookup('env','USER') }}" + LV_BRANCH: release-1.3/neovim-0.9 + tabby_password: "{{ lookup('ansible.builtin.pipe','pass show tabby-lab.sunet.se/tabby') }}" + connection: local + become: false + tasks: + - name: Have nvim allready installed + stat: + path: /usr/local/bin/nvim + register: have_nvim + - name: Get neovim + ansible.builtin.command: + chdir: /tmp + cmd: wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz + creates: /tmp/nvim-linux64.tar.gz + when: not have_nvim.stat.exists + - name: Unpack neovim + ansible.builtin.command: + chdir: /tmp + cmd: tar xf nvim-linux64.tar.gz + creates: /tmp/nvim-linux64 + when: not have_nvim.stat.exists + - name: Install neovim + become: true + ansible.builtin.command: + chdir: /tmp/nvim-linux64 + cmd: cp -a bin/ lib/ share/ /usr/local/ + creates: [/usr/local/bin/nvim] + when: not have_nvim.stat.exists + - name: Install neovim man pages + become: true + ansible.builtin.command: + chdir: /tmp/nvim-linux64 + cmd: cp -a man/ /usr/local/share/ + creates: [/usr/local/share/man/man1/nvim.1] + when: not have_nvim.stat.exists + - name: Remove neovim tar ball + ansible.builtin.command: + chdir: /tmp + cmd: rm nvim-linux64.tar.gz + removes: /tmp/nvim-linux64.tar.gz + when: not have_nvim.stat.exists + - name: Remove neovim install files + ansible.builtin.command: + chdir: /tmp + cmd: rm -rf nvim-linux64/ + removes: /tmp/nvim-linux64 + when: not have_nvim.stat.exists + - name: Get lunarvim + ansible.builtin.command: + chdir: /tmp + cmd: wget https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh + creates: /tmp/install.sh + when: not have_nvim.stat.exists + - name: Install lunarvim + ansible.builtin.command: + cmd: bash /tmp/install.sh + creates: /home/{{ uid }}/.local/bin/lvim + when: not have_nvim.stat.exists + - name: Remove lunarvim install script + ansible.builtin.command: + cmd: rm /tmp/install.sh + removes: /tmp/install.sh + when: not have_nvim.stat.exists + - name: Make my lvim real vim + become: true + ansible.builtin.file: + src: /home/{{ uid }}/.local/bin/lvim + dest: /usr/local/bin/vim + state: link + when: not have_nvim.stat.exists + - name: Install lunarvim config + ansible.builtin.template: + src: ../templates/config.lua.j2 + dest: /home/{{ uid }}/.config/lvim/config.lua + owner: '{{ uid }}' + group: '{{ uid }}' + mode: '0644' + - name: Create sources dir + ansible.builtin.file: + dest: /home/{{ uid }}/sources + state: directory + when: not have_nvim.stat.exists + - name: Get tabby plugin + ansible.builtin.command: + chdir: /home/{{ uid }}/sources/ + cmd: git clone https://github.com/TabbyML/tabby.git + creates: /home/{{ uid }}/sources/tabby + when: not have_nvim.stat.exists diff --git a/playbooks/ssh.yaml b/playbooks/ssh.yaml new file mode 100644 index 0000000..2e6023c --- /dev/null +++ b/playbooks/ssh.yaml @@ -0,0 +1,19 @@ +--- +- name: Set up ssh + vars: + uid: "{{ lookup('env','USER') }}" + hosts: localhost + connection: local + become: false + tasks: + - name: Create ssh dir + ansible.builtin.file: + dest: /home/{{ uid }}/.ssh + state: directory + - name: Install authorized keys + ansible.builtin.template: + src: ../templates/authorized_keys.j2 + dest: /home/{{ uid }}/.ssh/authorized_keys + owner: '{{ uid }}' + group: '{{ uid }}' + mode: '0600' diff --git a/playbooks/sway.yaml b/playbooks/sway.yaml new file mode 100644 index 0000000..e73978a --- /dev/null +++ b/playbooks/sway.yaml @@ -0,0 +1,52 @@ +--- +- name: Set up sway + vars: + uid: "{{ lookup('env','USER') }}" + wallpaper_path: /home/{{ uid }}/.config/wallpaper/savannah-landscape-with-acacia-trees.jpeg + hosts: localhost + connection: local + become: false + tasks: + - name: Install autotiling + ansible.builtin.command: + cmd: pipx install autotiling + creates: /home/{{ uid }}/.local/bin/autotiling + - name: Create sway dir + ansible.builtin.file: + dest: /home/{{ uid }}/.config/sway + state: directory + - name: Install sway config + ansible.builtin.template: + src: ../templates/sway_config.j2 + dest: /home/{{ uid }}/.config/sway/config + owner: '{{ uid }}' + group: '{{ uid }}' + mode: '0640' + notify: Reload sway + - name: Create waybar dir + ansible.builtin.file: + dest: /home/{{ uid }}/.config/waybar + state: directory + - name: Install waybar config + ansible.builtin.template: + src: ../templates/waybar_config.j2 + dest: /home/{{ uid }}/.config/waybar/config + owner: '{{ uid }}' + group: '{{ uid }}' + mode: '0640' + notify: Reload sway + - name: Create wallpaper dir + ansible.builtin.file: + dest: /home/{{ uid }}/.config/wallpaper + state: directory + # Image by upklyak on Freepik + # https://www.freepik.com/free-vector/savannah-landscape-with-acacia-trees-night-vector-cartoon-illustration-african-savanna-with-full-moon-stars-dark-sky-concept-safari-vacation-trip-travel_25694514.htm + - name: Setup wall paper + ansible.builtin.copy: + dest: '{{ wallpaper_path }}' + src: ../data/savannah-landscape-with-acacia-trees.jpeg + notify: Reload sway + handlers: + - name: Reload sway + ansible.builtin.command: + cmd: swaymsg reload diff --git a/playbooks/zsh.yaml b/playbooks/zsh.yaml new file mode 100644 index 0000000..ae145c8 --- /dev/null +++ b/playbooks/zsh.yaml @@ -0,0 +1,40 @@ +--- +- name: Install zsh + hosts: localhost + connection: local + become: false + vars: + uid: "{{ lookup('env','USER') }}" + tasks: + - name: Have zsh installed allready + stat: + path: /home/{{ uid }}/.oh-my-zsh + register: ohmyzsh + - name: Set zsh as default shell + become: true + ansible.builtin.command: + cmd: chsh -s /usr/bin/zsh {{ uid }} + when: not ohmyzsh.stat.exists + - name: Get Oh my zsh + ansible.builtin.command: + chdir: /tmp + cmd: wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh + creates: /tmp/install.sh + when: not ohmyzsh.stat.exists + - name: Install Oh my zsh + ansible.builtin.command: + cmd: bash /tmp/install.sh + creates: /home/{{ uid }}/.oh-my-zsh + when: not ohmyzsh.stat.exists + - name: Remove Oh my zsh install script + ansible.builtin.command: + cmd: rm /tmp/install.sh + removes: /tmp/install.sh + when: not ohmyzsh.stat.exists + - name: Install zshrc + ansible.builtin.template: + src: ../templates/zshrc.j2 + dest: /home/{{ uid }}/.zshrc + owner: '{{ uid }}' + group: '{{ uid }}' + mode: '0644' diff --git a/setup.yaml b/setup.yaml index 0d32380..c614eaa 100644 --- a/setup.yaml +++ b/setup.yaml @@ -1,169 +1,10 @@ --- +- import_playbook: playbooks/apt.yaml +- import_playbook: playbooks/nvim.yaml +- import_playbook: playbooks/zsh.yaml +- import_playbook: playbooks/ssh.yaml +- import_playbook: playbooks/sway.yaml - name: Set up my computer hosts: localhost - vars: - uid: micke - LV_BRANCH: release-1.3/neovim-0.9 connection: local become: false - tasks: - - name: Install apt packages - become: true - ansible.builtin.apt: - autoclean: true - autoremove: true - install_recommends: true - pkg: - - curl - - fcitx5 - - foot - - git - - grimshot - - lxpolkit - - network-manager-gnome - - nextcloud-desktop - - npm - - pipx - - python3-yamlfix - - sway - - sway-backgrounds - - sway-notification-center - - swayidle - - swaylock - - swaylock - - waybar - - wget - - wl-clipboard - - wofi - - yq - - zsh - state: latest - update_cache: true - - name: Remove apt packages - become: true - ansible.builtin.apt: - autoclean: true - autoremove: true - install_recommends: true - pkg: - - nano - state: absent - update_cache: true - - name: Set zsh as default shell - become: true - ansible.builtin.command: - cmd: chsh -s /usr/bin/zsh {{ uid }} - - name: Get Oh my zsh - ansible.builtin.command: - chdir: /tmp - cmd: wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh - creates: /tmp/install.sh - - name: Install Oh my zsh - ansible.builtin.command: - cmd: bash /tmp/install.sh - creates: /home/{{ uid }}/.oh-my-zsh - - name: Remove Oh my zsh install script - ansible.builtin.command: - cmd: rm /tmp/install.sh - removes: /tmp/install.sh - - name: Get neovim - ansible.builtin.command: - chdir: /tmp - cmd: wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz - creates: /tmp/nvim-linux64.tar.gz - - name: Unpack neovim - ansible.builtin.command: - chdir: /tmp - cmd: tar xf nvim-linux64.tar.gz - creates: /tmp/nvim-linux64 - - name: Install neovim - become: true - ansible.builtin.command: - chdir: /tmp/nvim-linux64 - cmd: cp -a bin/ lib/ share/ /usr/local/ - creates: [/usr/local/bin/nvim] - - name: Install neovim man pages - become: true - ansible.builtin.command: - chdir: /tmp/nvim-linux64 - cmd: cp -a man/ /usr/local/share/ - creates: [/usr/local/share/man/man1/nvim.1] - - name: Remove neovim tar ball - ansible.builtin.command: - chdir: /tmp - cmd: rm nvim-linux64.tar.gz - removes: /tmp/nvim-linux64.tar.gz - - name: Remove neovim install files - ansible.builtin.command: - chdir: /tmp - cmd: rm -rf nvim-linux64/ - removes: /tmp/nvim-linux64 - - name: Get lunarvim - ansible.builtin.command: - chdir: /tmp - cmd: wget https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh - creates: /tmp/install.sh - - name: Install lunarvim - ansible.builtin.command: - cmd: bash /tmp/install.sh - creates: /home/{{ uid }}/.local/bin/lvim - - name: Remove lunarvim install script - ansible.builtin.command: - cmd: rm /tmp/install.sh - removes: /tmp/install.sh - - name: Make my lvim real vim - become: yes - ansible.builtin.file: - src: "/home/{{ uid }}/.local/bin/lvim" - dest: /usr/local/bin/vim - state: link - - name: Install zshrc - ansible.builtin.template: - src: zshrc.j2 - dest: "/home/{{ uid }}/.zshrc" - owner: "{{ uid }}" - group: "{{ uid }}" - mode: '0644' - - name: Install lunarvim config - ansible.builtin.template: - src: config.lua.j2 - dest: "/home/{{ uid }}/.config/lvim/config.lua" - owner: "{{ uid }}" - group: "{{ uid }}" - mode: '0644' - - name: Create sources dir - ansible.builtin.file: - dest: "/home/{{ uid }}/sources" - state: directory - - name: Get tabby plugin - ansible.builtin.command: - chdir: "/home/{{ uid }}/sources/" - cmd: git clone https://github.com/TabbyML/tabby.git - creates: "/home/{{ uid }}/sources/tabby" - - name: Create ssh dir - ansible.builtin.file: - dest: "/home/{{ uid }}/.ssh" - state: directory - - name: Install authorized keys - ansible.builtin.template: - src: authorized_keys.j2 - dest: "/home/{{ uid }}/.ssh/authorized_keys" - owner: "{{ uid }}" - group: "{{ uid }}" - mode: '0600' - - name: Install autotiling - ansible.builtin.command: - cmd: pipx install autotiling - creates: "/home/{{ uid }}/.local/bin/autotiling" - - name: Create sway dir - ansible.builtin.file: - dest: "/home/{{ uid }}/.config/sway" - state: directory - - name: Install sway config - ansible.builtin.template: - src: sway_config.j2 - dest: "/home/{{ uid }}/.config/sway/config" - owner: "{{ uid }}" - group: "{{ uid }}" - mode: '0640' - diff --git a/templates/config.lua.j2 b/templates/config.lua.j2 index 2367ace..f3345c4 100644 --- a/templates/config.lua.j2 +++ b/templates/config.lua.j2 @@ -79,21 +79,6 @@ null_ls.setup({ }, }) --- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. IMPORTANT: Requires `:LvimCacheReset` to take effect --- ---`:LvimInfo` lists which server(s) are skipped for the current filetype --- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server) --- return server ~= "emmet_ls" --- end, lvim.lsp.automatic_configuration.skipped_servers) - --- -- you can set a custom on_attach function that will be used for all the language servers --- -- See --- lvim.lsp.on_attach_callback = function(client, bufnr) --- local function buf_set_option(...) --- vim.api.nvim_buf_set_option(bufnr, ...) --- end --- --Enable completion triggered by --- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") --- end -- -- linters, formatters and code actions local formatters = require "lvim.lsp.null-ls.formatters" @@ -140,41 +125,6 @@ lvim.plugins = { { "rodjek/vim-puppet", 'tpope/vim-surround', - -- { - -- 'huggingface/llm.nvim', - -- opts = { - -- api_token = "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", - -- model = "bigcode/starcoder", -- can be a model ID or an http(s) endpoint - -- tokens_to_clear = { "<|endoftext|>" }, -- tokens to remove from the model's output - -- -- parameters that are added to the request body - -- query_params = { - -- max_new_tokens = 60, - -- temperature = 0.2, - -- top_p = 0.95, - -- stop_tokens = nil, - -- }, - -- -- set this if the model supports fill in the middle - -- fim = { - -- enabled = true, - -- prefix = "", - -- middle = "", - -- suffix = "", - -- }, - -- debounce_ms = 150, - -- accept_keymap = "", - -- dismiss_keymap = "", - -- tls_skip_verify_insecure = false, - -- -- llm-ls configuration, cf llm-ls section - -- lsp = { - -- bin_path = nil, - -- version = "0.3.0", - -- }, - -- tokenizer = nil, -- cf Tokenizer paragraph - -- context_window = 8192, -- max number of tokens for the context window - -- enable_suggestions_on_startup = true, - -- enable_suggestions_on_files = "*", - -- } - -- }, { 'tabbyml/tabby', name = 'tabby', dir = '~/sources/tabby/clients/vim', enabled = true }, }, } @@ -197,7 +147,7 @@ vim.api.nvim_create_autocmd("BufReadPost", { -- }) -vim.g.tabby_server_url = 'https://tabby:BogMeempAldEttEndyoravatDadnitmusfuothOl@tabby-lab.sunet.se' +vim.g.tabby_server_url = 'https://tabby:{{ tabby_password }}@tabby-lab.sunet.se' -- vim.g.tabby_server_url = 'https://tabby-test.sunet.se' vim.g.tabby_accept_binding = '' vim.g.tabby_dismiss_binding = '' diff --git a/templates/sway_config.j2 b/templates/sway_config.j2 index 52d3492..8253bdf 100644 --- a/templates/sway_config.j2 +++ b/templates/sway_config.j2 @@ -30,7 +30,7 @@ include /etc/sway/config-vars.d/* ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) -output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill +output * bg {{ wallpaper_path }} fill # # Example configuration: # @@ -244,7 +244,6 @@ exec_always { } exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway - bindsym $mod+Shift+s mode $screenshot_mode mode $screenshot_mode { # Screenshots: diff --git a/templates/waybar_config.j2 b/templates/waybar_config.j2 new file mode 100644 index 0000000..15b1c68 --- /dev/null +++ b/templates/waybar_config.j2 @@ -0,0 +1,16 @@ +{ + "layer": "top", + "modules-left": ["sway/workspaces", "sway/mode"], + "modules-center": ["sway/window"], + "modules-right": ["battery", "clock", "tray"], + "sway/window": { + "max-length": 50 + }, + "battery": { + "format": "{capacity}% {icon}", + "format-icons": ["", "", "", "", ""] + }, + "clock": { + "format-alt": "{:%a, %d. %b %H:%M}" + } +}