Compare commits
1 Commits
main
...
da099ffddc
Author | SHA1 | Date | |
---|---|---|---|
|
da099ffddc |
@@ -1,28 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[Makefile]
|
|
||||||
indent_style = tab
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
[*.lua]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
quote_style = single
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
max_line_length = 80
|
|
||||||
|
|
||||||
[*.sh]
|
|
||||||
indent_style = tab
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
[*.yml]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
config/tmux/plugins
|
|
||||||
config/git
|
|
@@ -1,6 +0,0 @@
|
|||||||
column_width = 160
|
|
||||||
line_endings = "Unix"
|
|
||||||
indent_type = "Spaces"
|
|
||||||
indent_width = 2
|
|
||||||
quote_style = "AutoPreferSingle"
|
|
||||||
call_parentheses = "None"
|
|
132
Dockerfile
132
Dockerfile
@@ -1,22 +1,15 @@
|
|||||||
FROM ubuntu:24.04
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
# user setup
|
# system deps
|
||||||
ARG USER_UID=1000
|
ARG USER_UID=1000
|
||||||
ARG USER_GID=1000
|
ARG USER_GID=1000
|
||||||
ARG DOCKER_GID=999
|
ARG DOCKER_GID=999
|
||||||
ARG WHEEL_GID=980
|
ARG WHEEL_GID=980
|
||||||
RUN echo 'remove existing ubuntu user' \
|
|
||||||
&& groupdel --force ubuntu \
|
|
||||||
&& userdel --force ubuntu \
|
|
||||||
&& echo 'setup extra groups' \
|
|
||||||
&& groupadd --gid ${WHEEL_GID} wheel \
|
|
||||||
&& groupadd --gid ${DOCKER_GID} docker
|
|
||||||
|
|
||||||
# system deps
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y software-properties-common \
|
&& apt-get install -y software-properties-common \
|
||||||
&& add-apt-repository ppa:fish-shell/release-3 \
|
&& add-apt-repository ppa:fish-shell/release-3 \
|
||||||
|
&& add-apt-repository ppa:neovim-ppa/unstable \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
autoconf \
|
autoconf \
|
||||||
@@ -25,8 +18,8 @@ RUN apt-get update \
|
|||||||
ca-certificates \
|
ca-certificates \
|
||||||
curl \
|
curl \
|
||||||
doas \
|
doas \
|
||||||
|
exa \
|
||||||
fish \
|
fish \
|
||||||
fop \
|
|
||||||
g++ \
|
g++ \
|
||||||
gcc \
|
gcc \
|
||||||
gfortran \
|
gfortran \
|
||||||
@@ -42,38 +35,30 @@ RUN apt-get update \
|
|||||||
libc6-dev \
|
libc6-dev \
|
||||||
libcurl3-dev \
|
libcurl3-dev \
|
||||||
libffi-dev \
|
libffi-dev \
|
||||||
libgl1-mesa-dev \
|
|
||||||
libglu1-mesa-dev \
|
|
||||||
liblzma-dev \
|
liblzma-dev \
|
||||||
liblzma5 \
|
liblzma5 \
|
||||||
libncurses-dev \
|
libncurses-dev \
|
||||||
libncurses5-dev \
|
libncurses5-dev \
|
||||||
libncursesw5-dev \
|
libncursesw5-dev \
|
||||||
libodbc2 \
|
libodbc1 \
|
||||||
libpcre2-dev \
|
libpcre2-dev \
|
||||||
libpng-dev \
|
|
||||||
libreadline-dev \
|
libreadline-dev \
|
||||||
libsctp-dev \
|
libsctp-dev \
|
||||||
libsctp1 \
|
libsctp1 \
|
||||||
libsqlite3-dev \
|
libsqlite3-dev \
|
||||||
libssh-dev \
|
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
libtool \
|
libtool \
|
||||||
libwxgtk-webview3.2-dev \
|
libwxgtk3.0-gtk3-0v5 \
|
||||||
libwxgtk3.2-dev \
|
libwxgtk3.0-gtk3-dev \
|
||||||
libxml2-utils \
|
|
||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
libyaml-dev \
|
libyaml-dev \
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
m4 \
|
|
||||||
make \
|
make \
|
||||||
ncal \
|
neovim \
|
||||||
net-tools \
|
net-tools \
|
||||||
openjdk-17-jdk \
|
|
||||||
openssh-client \
|
openssh-client \
|
||||||
openssl \
|
openssl \
|
||||||
parallel \
|
|
||||||
pkg-config \
|
pkg-config \
|
||||||
python3-openssl \
|
python3-openssl \
|
||||||
sudo \
|
sudo \
|
||||||
@@ -85,18 +70,18 @@ RUN apt-get update \
|
|||||||
uuid-dev \
|
uuid-dev \
|
||||||
wget \
|
wget \
|
||||||
xorg-dev \
|
xorg-dev \
|
||||||
xsel \
|
|
||||||
xsltproc \
|
|
||||||
xz-utils \
|
xz-utils \
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& locale-gen en_US.UTF-8 \
|
&& locale-gen en_US.UTF-8 \
|
||||||
&& echo 'setup unprivileged user' \
|
&& echo 'setup unprivileged user' \
|
||||||
|
&& groupadd --gid ${WHEEL_GID} wheel \
|
||||||
|
&& groupadd --gid ${DOCKER_GID} docker \
|
||||||
&& groupadd --gid ${USER_GID} coder \
|
&& groupadd --gid ${USER_GID} coder \
|
||||||
&& useradd \
|
&& useradd \
|
||||||
--uid ${USER_UID} \
|
--uid ${USER_UID} \
|
||||||
--gid coder \
|
--gid coder \
|
||||||
--groups docker,wheel,sudo \
|
--groups docker,wheel \
|
||||||
--shell $(which fish) \
|
--shell $(which fish) \
|
||||||
--home-dir /home/coder \
|
--home-dir /home/coder \
|
||||||
--create-home \
|
--create-home \
|
||||||
@@ -105,37 +90,31 @@ RUN apt-get update \
|
|||||||
&& echo 'permit persist :wheel as root' > /etc/doas.conf
|
&& echo 'permit persist :wheel as root' > /etc/doas.conf
|
||||||
|
|
||||||
# command line utilities
|
# command line utilities
|
||||||
ENV DO_VERSION 28.3.2
|
ENV BAT_VERSION 0.23.0
|
||||||
|
ENV BAT_FILE bat_${BAT_VERSION}_amd64.deb
|
||||||
|
ENV BAT_URL https://github.com/sharkdp/bat/releases/download/v${BAT_VERSION}/${BAT_FILE}
|
||||||
|
ENV RG_VERSION 13.0.0
|
||||||
|
ENV RG_FILE ripgrep_${RG_VERSION}_amd64.deb
|
||||||
|
ENV RG_URL https://github.com/BurntSushi/ripgrep/releases/download/${RG_VERSION}/${RG_FILE}
|
||||||
|
ENV DO_VERSION 24.0.6
|
||||||
ENV DO_URL https://download.docker.com/linux/static/stable/x86_64/docker-${DO_VERSION}.tgz
|
ENV DO_URL https://download.docker.com/linux/static/stable/x86_64/docker-${DO_VERSION}.tgz
|
||||||
ENV DC_VERSION v2.38.2
|
ENV DC_VERSION v2.21.0
|
||||||
ENV DC_URL https://github.com/docker/compose/releases/download/${DC_VERSION}/docker-compose-linux-x86_64
|
ENV DC_URL https://github.com/docker/compose/releases/download/${DC_VERSION}/docker-compose-linux-x86_64
|
||||||
ENV BX_VERSION v0.25.0
|
|
||||||
ENV BX_URL https://github.com/docker/buildx/releases/download/${BX_VERSION}/buildx-${BX_VERSION}.linux-amd64
|
|
||||||
ENV EXERCISM_VERSION 3.5.4
|
|
||||||
ENV EXERCISM_FILE exercism-${EXERCISM_VERSION}-linux-x86_64.tar.gz
|
|
||||||
ENV EXERCISM_URL https://github.com/exercism/cli/releases/download/v${EXERCISM_VERSION}/${EXERCISM_FILE}
|
|
||||||
ENV NVIM_VERSION v0.11.3
|
|
||||||
ENV NVIM_FILE nvim-linux-x86_64.tar.gz
|
|
||||||
ENV NVIM_URL https://github.com/neovim/neovim/releases/download/${NVIM_VERSION}/${NVIM_FILE}
|
|
||||||
RUN curl -sS https://starship.rs/install.sh | sh -s -- --yes \
|
RUN curl -sS https://starship.rs/install.sh | sh -s -- --yes \
|
||||||
|
&& curl -LO ${BAT_URL} \
|
||||||
|
&& dpkg -i ${BAT_FILE} \
|
||||||
|
&& rm ${BAT_FILE} \
|
||||||
|
&& curl -LO ${RG_URL} \
|
||||||
|
&& dpkg -i ${RG_FILE} \
|
||||||
|
&& rm ${RG_FILE} \
|
||||||
&& mkdir /tmp/download \
|
&& mkdir /tmp/download \
|
||||||
&& echo 'install docker' \
|
|
||||||
&& curl -L ${DO_URL} | tar -zx -C /tmp/download \
|
&& curl -L ${DO_URL} | tar -zx -C /tmp/download \
|
||||||
&& chgrp --recursive docker /tmp/download \
|
&& chgrp --recursive docker /tmp/download \
|
||||||
&& mv /tmp/download/docker/* /usr/local/bin \
|
&& mv /tmp/download/docker/* /usr/local/bin \
|
||||||
&& echo 'install exercism' \
|
|
||||||
&& curl -L -XGET ${EXERCISM_URL} | tar -xz -C /tmp/download \
|
|
||||||
&& mv /tmp/download/exercism /usr/local/bin \
|
|
||||||
&& echo 'install neovim' \
|
|
||||||
&& curl -L -XGET ${NVIM_URL} | tar -xz -C /tmp/download \
|
|
||||||
&& mv /tmp/download/nvim-linux-x86_64 /usr/local/src/nvim \
|
|
||||||
&& ln -s /usr/local/src/nvim/bin/nvim /usr/local/bin/nvim \
|
|
||||||
&& rm -rf /tmp/download \
|
&& rm -rf /tmp/download \
|
||||||
&& mkdir -p /usr/local/lib/docker/cli-plugins \
|
&& mkdir -p /usr/local/lib/docker/cli-plugins \
|
||||||
&& curl -L ${DC_URL} -o /usr/local/lib/docker/cli-plugins/docker-compose \
|
&& curl -L ${DC_URL} -o /usr/local/lib/docker/cli-plugins/docker-compose \
|
||||||
&& chmod 750 /usr/local/lib/docker/cli-plugins/docker-compose \
|
&& chmod 750 /usr/local/lib/docker/cli-plugins/docker-compose \
|
||||||
&& curl -L ${BX_URL} -o /usr/local/lib/docker/cli-plugins/docker-buildx \
|
|
||||||
&& chmod 750 /usr/local/lib/docker/cli-plugins/docker-buildx \
|
|
||||||
&& chgrp --recursive docker /usr/local/lib/docker
|
&& chgrp --recursive docker /usr/local/lib/docker
|
||||||
|
|
||||||
USER coder
|
USER coder
|
||||||
@@ -152,61 +131,46 @@ ENV XDG_DATA_HOME ${HOME}/.local/share
|
|||||||
ENV XDG_CACHE_HOME ${HOME}/.cache
|
ENV XDG_CACHE_HOME ${HOME}/.cache
|
||||||
ENV STARSHIP_CONFIG ${XDG_CONFIG_HOME}/starship/config.toml
|
ENV STARSHIP_CONFIG ${XDG_CONFIG_HOME}/starship/config.toml
|
||||||
ENV PATH ${LOCAL_BIN_HOME}:$PATH
|
ENV PATH ${LOCAL_BIN_HOME}:$PATH
|
||||||
|
# NOTE (jpd): to install elixirls we have to set the shell to something known
|
||||||
|
ENV SHELL /usr/bin/bash
|
||||||
|
|
||||||
# command line utilities
|
# command line utilities
|
||||||
ENV MISE_ENV_FILE .env
|
RUN curl https://rtx.pub/install.sh | sh \
|
||||||
RUN curl https://mise.jdx.dev/install.sh | sh \
|
|
||||||
&& curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash \
|
&& curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash \
|
||||||
&& curl -sS https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh | bash \
|
&& git clone https://github.com/tmux-plugins/tpm.git ${XDG_CONFIG_HOME}/tmux/plugins/tpm
|
||||||
&& git clone https://github.com/tmux-plugins/tpm.git ${XDG_CONFIG_HOME}/tmux/plugins/tpm \
|
|
||||||
&& curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jrmoulton/tmux-sessionizer/releases/download/v0.4.2/tmux-sessionizer-installer.sh | sh
|
|
||||||
|
|
||||||
# configure fish and bash
|
|
||||||
RUN fish -c true \
|
|
||||||
&& echo 'starship init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo '{$LOCAL_BIN_HOME}/mise activate fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'zoxide init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'atuin init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias cat="bat"' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias l="eza --time-style=long-iso --color=auto --classify=always"' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias ll="l -ahl"' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias la="l -a"' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias k="kubectl"' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias dc="docker compose"' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
|
||||||
&& echo 'alias nh="nvim --listen 0.0.0.0:6666 --headless &> /dev/null"' >> ${XDG_CONFIG_HOME}/fish/config.fish
|
|
||||||
|
|
||||||
# git configuration
|
# git configuration
|
||||||
ENV NEOVIM_KICKSTART_VERSION 3338d3920620861f8313a2745fd5d2be39f39534
|
|
||||||
COPY ./patch/kickstart.nvim/updates.patch /tmp
|
COPY ./patch/kickstart.nvim/updates.patch /tmp
|
||||||
COPY ./config/nvim/lua/custom/plugins/init.lua /tmp
|
COPY ./config/nvim/lua/custom/plugins/init.lua /tmp
|
||||||
RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \
|
RUN git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME}"/nvim \
|
||||||
&& cd ${XDG_CONFIG_HOME}/nvim \
|
&& cd ${XDG_CONFIG_HOME}/nvim \
|
||||||
&& git reset --hard ${NEOVIM_KICKSTART_VERSION} \
|
&& git reset --hard 9b256d93688b3d295dab89f06faeff741af58a68 \
|
||||||
&& git apply /tmp/updates.patch \
|
&& git apply /tmp/updates.patch \
|
||||||
&& cp /tmp/init.lua ${XDG_CONFIG_HOME}/nvim/lua/custom/plugins \
|
&& cp /tmp/init.lua ${XDG_CONFIG_HOME}/nvim/lua/custom/plugins \
|
||||||
&& nvim --headless "+Lazy! sync" +qa
|
&& nvim --headless "+Lazy! sync" +qa
|
||||||
|
|
||||||
# install mise plugins
|
# configure fish and bash
|
||||||
RUN ${LOCAL_BIN_HOME}/mise plugins install --force --yes \
|
RUN fish -c true \
|
||||||
lua \
|
&& echo 'starship init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
||||||
luajit \
|
&& echo '{$XDG_DATA_HOME}/rtx/bin/rtx activate fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
||||||
poetry \
|
&& echo 'zoxide init fish | source' >> ${XDG_CONFIG_HOME}/fish/config.fish \
|
||||||
r \
|
&& echo 'eval "$(starship init bash)"' >> ${HOME}/.bashrc \
|
||||||
yarn
|
&& echo 'eval "$(${XDG_DATA_HOME}/rtx/bin/rtx activate bash)"' >> ${HOME}/.bashrc \
|
||||||
|
&& echo 'eval "$(zoxide init bash)"' >> ${HOME}/.bashrc
|
||||||
|
|
||||||
# configure git
|
# configure git
|
||||||
ARG GIT_USER_EMAIL
|
ARG GIT_USER_EMAIL
|
||||||
ARG GIT_USER_NAME
|
ARG GIT_USER_NAME
|
||||||
RUN git config --global user.email "${GIT_USER_EMAIL}" \
|
RUN git config --global user.email "${GIT_USER_EMAIL}" \
|
||||||
&& git config --global user.name "${GIT_USER_NAME}" \
|
&& git config --global user.name "${GIT_USER_NAME}" \
|
||||||
&& git config --global gpg.ssh.allowedSignersFile "${XDG_CONFIG_HOME}/git/allowed_signers" \
|
&& git config --global core.editor nvim
|
||||||
&& git config --global core.editor nvim \
|
|
||||||
&& git config --global diff.tool nvimdiff \
|
|
||||||
&& git config --global difftool.nvimdiff.layout "LOCAL,REMOTE" \
|
|
||||||
&& git config --global merge.tool nvimdiff \
|
|
||||||
&& git config --global mergetool.nvimdiff.layout "LOCAL,BASE,REMOTE / MERGED" \
|
|
||||||
&& git config --global includeIf."hasconfig:remote.*.url:gitea:*/**".path ${XDG_CONFIG_HOME}/git/personal_gitea \
|
|
||||||
&& git config --global includeIf."hasconfig:remote.*.url:github:joaodubas/**".path ${XDG_CONFIG_HOME}/git/personal_github \
|
|
||||||
&& git config --global includeIf."gitdir:/opt/work/".path ${XDG_CONFIG_HOME}/git/work
|
|
||||||
|
|
||||||
COPY ./scripts/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
|
# install rtx plugins
|
||||||
|
RUN ${XDG_DATA_HOME}/rtx/bin/rtx plugins install \
|
||||||
|
awscli \
|
||||||
|
elixir \
|
||||||
|
erlang \
|
||||||
|
helm \
|
||||||
|
kubectl \
|
||||||
|
poetry \
|
||||||
|
terraform
|
||||||
|
33
Makefile
33
Makefile
@@ -1,33 +0,0 @@
|
|||||||
root_dir := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
|
||||||
neovim_patch_file := $(root_dir)/patch/kickstart.nvim/updates.patch
|
|
||||||
neovim_config_dir := $(XDG_CONFIG_HOME)/nvim
|
|
||||||
|
|
||||||
.DEFAULT_GOAL = help
|
|
||||||
|
|
||||||
.PHONY: apply_patch_init_lua
|
|
||||||
apply_patch_init_lua: ## apply the patch file in kickstart's init.lua file
|
|
||||||
@cd $(neovim_config_dir) && git apply $(neovim_patch_file)
|
|
||||||
|
|
||||||
.PHONY: patch_init_lua
|
|
||||||
patch_init_lua: ## create a patch file with the changes made in kickstart's init.lua file
|
|
||||||
@cd $(neovim_config_dir) && git diff --patch init.lua > $(neovim_patch_file)
|
|
||||||
|
|
||||||
.PHONY: patch_init_lua_dry_run
|
|
||||||
patch_init_lua_dry_run: ## show the changes made in kickstart's init.lua file
|
|
||||||
@cd $(neovim_config_dir) && git diff --patch init.lua
|
|
||||||
|
|
||||||
.PHONY: diff_mcphub_config
|
|
||||||
diff_mcphub_config: ## compare host's mcphub config with repository's config
|
|
||||||
@nvim -d ~/.config/mcphub/servers.json ./config/mcphub/servers.json
|
|
||||||
|
|
||||||
.PHONY: diff_mise_config
|
|
||||||
diff_mise_config: ## compare host's mise config with repository's config
|
|
||||||
@nvim -d ~/.config/mise/config.toml ./config/mise/config.toml
|
|
||||||
|
|
||||||
.PHONY: diff_custom_neovim_config
|
|
||||||
diff_custom_neovim_config: ## compare host's custom neovim config with repository's config
|
|
||||||
@nvim -d ~/.config/nvim/lua/custom/plugins/init.lua ./config/nvim/lua/custom/plugins/init.lua
|
|
||||||
|
|
||||||
.PHONY: help
|
|
||||||
help: ## show help message
|
|
||||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
|
57
README.md
57
README.md
@@ -1,57 +0,0 @@
|
|||||||
# ide
|
|
||||||
|
|
||||||
This is my **personal development environment** (PDE) based on [`fish`][fish], [`neovim`][neovim], [`mise`][mise] and [`docker`][docker].
|
|
||||||
|
|
||||||
## programs
|
|
||||||
|
|
||||||
### [`docker`][docker]
|
|
||||||
|
|
||||||
All my workflow revolves around running containers for my services. So, for now, I'm still using [`docker`][docker] and their extensions, mainly, [`compose`][docker-compose] to define those services.
|
|
||||||
|
|
||||||
#### kubernetes
|
|
||||||
|
|
||||||
I still need to learn a lot about it, but to make navigation between contexts and namespaces easier, I'm using [`kubie`][kubie].
|
|
||||||
|
|
||||||
In the near future I want to experiment with [`k3d`][k3d] and [`tilt`][tilt] to make simulations about my system environment easier to reproduce locally, and the transition to production smoother.
|
|
||||||
|
|
||||||
### terminal
|
|
||||||
|
|
||||||
For the terminal, that's the place were I spent most of time, the following is used:
|
|
||||||
|
|
||||||
* [`fish`][fish]: there is nothing fancy about it
|
|
||||||
* [`starship`][starship]: this is what makes my shell beautiful
|
|
||||||
* [`zoxide`][zoxide]: change between directories has never been easier
|
|
||||||
* [`eza`][eza]: just to make `ls` informative and interesting
|
|
||||||
* [`bat`][bat]: a better `cat`
|
|
||||||
* [`ripgrep`][ripgrep]: a better `grep`
|
|
||||||
* [`tmux`][tmux]: handling multiple panes, windows, and sessions is a must in my workflow
|
|
||||||
* among the aspects to improve, one that is on my sight is the integration with [`neovim`][neovim]
|
|
||||||
* [`tmuxp`][tmuxp]: to manage my different sessions
|
|
||||||
* I still want to give a try to [`tmux-resurrect`][tmux-resurrect] and [`tmux-continuum`][tmux-continuum]
|
|
||||||
|
|
||||||
### programming languages
|
|
||||||
|
|
||||||
In my day-to-day I use:
|
|
||||||
|
|
||||||
* `elixir`
|
|
||||||
* `python`
|
|
||||||
* with `poetry` handling dependencies, whenever is possible
|
|
||||||
* `javascript` + `node`
|
|
||||||
|
|
||||||
[fish]: https://fishshell.com/
|
|
||||||
[neovim]: https://neovim.io/
|
|
||||||
[mise]: https://mise.jdx.dev/
|
|
||||||
[docker]: https://www.docker.com/
|
|
||||||
[docker-compose]: https://docs.docker.com/compose/
|
|
||||||
[kubie]: https://github.com/sbstp/kubie
|
|
||||||
[k3d]: https://k3d.io/
|
|
||||||
[tilt]: https://tilt.dev/
|
|
||||||
[starship]: https://starship.rs/
|
|
||||||
[zoxide]: https://github.com/ajeetdsouza/zoxide
|
|
||||||
[eza]: https://eza.rocks/
|
|
||||||
[bat]: https://github.com/sharkdp/bat
|
|
||||||
[ripgrep]: https://github.com/BurntSushi/ripgrep
|
|
||||||
[tmux]: https://github.com/tmux/tmux/wiki
|
|
||||||
[tmuxp]: https://tmuxp.git-pull.com/
|
|
||||||
[tmux-resurrect]: https://github.com/tmux-plugins/tmux-resurrect
|
|
||||||
[tmux-continuum]: https://github.com/tmux-plugins/tmux-continuum
|
|
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
reasoning-effort: medium
|
|
||||||
thinking-tokens: 8k
|
|
||||||
model: gemini/gemini-2.5-pro-preview-05-06
|
|
||||||
weak-model: gemini/gemini-2.0-flash-001
|
|
||||||
editor-model: gemini/gemini-2.5-pro-preview-05-06
|
|
||||||
editor: nvim
|
|
||||||
git: true
|
|
||||||
gitignore: true
|
|
||||||
auto-commits: false
|
|
||||||
read:
|
|
||||||
- CONVENTIONS.md
|
|
||||||
- CLAUDE.md
|
|
@@ -1,5 +0,0 @@
|
|||||||
auto_sync = true
|
|
||||||
update_check = false
|
|
||||||
sync_address = "https://atuin.dubas.dev"
|
|
||||||
sync_frequency = "15m"
|
|
||||||
inline_height = 10
|
|
@@ -1,18 +0,0 @@
|
|||||||
# sample git conditional configuration
|
|
||||||
|
|
||||||
```
|
|
||||||
[commit]
|
|
||||||
gpgsign = true
|
|
||||||
[gpg]
|
|
||||||
format = ssh
|
|
||||||
[user]
|
|
||||||
email = {{email}}
|
|
||||||
name = {{name}}
|
|
||||||
signingKey = {{path-to-pub-ssh-key}}
|
|
||||||
```
|
|
||||||
|
|
||||||
# sample allowed signers files
|
|
||||||
|
|
||||||
```
|
|
||||||
<email> namespaces="git" $(cat ~/.ssh/<key>.pub)
|
|
||||||
```
|
|
@@ -1,43 +0,0 @@
|
|||||||
ANTHROPIC_HOST: https://api.anthropic.com
|
|
||||||
GOOSE_PROVIDER: google
|
|
||||||
GOOSE_MODEL: gemini-2.5-pro-preview-05-06
|
|
||||||
extensions:
|
|
||||||
computercontroller:
|
|
||||||
bundled: true
|
|
||||||
display_name: Computer Controller
|
|
||||||
enabled: true
|
|
||||||
name: computercontroller
|
|
||||||
timeout: 600
|
|
||||||
type: builtin
|
|
||||||
context7:
|
|
||||||
args:
|
|
||||||
- dlx
|
|
||||||
- '@upstash/context7-mcp@latest'
|
|
||||||
bundled: null
|
|
||||||
cmd: pnpm
|
|
||||||
description: null
|
|
||||||
enabled: true
|
|
||||||
env_keys: []
|
|
||||||
envs: {}
|
|
||||||
name: context7
|
|
||||||
timeout: 600
|
|
||||||
type: stdio
|
|
||||||
developer:
|
|
||||||
bundled: true
|
|
||||||
display_name: Developer Tools
|
|
||||||
enabled: true
|
|
||||||
name: developer
|
|
||||||
timeout: 600
|
|
||||||
type: builtin
|
|
||||||
git:
|
|
||||||
args:
|
|
||||||
- mcp-server-git
|
|
||||||
bundled: null
|
|
||||||
cmd: uvx
|
|
||||||
description: null
|
|
||||||
enabled: true
|
|
||||||
env_keys: []
|
|
||||||
envs: {}
|
|
||||||
name: git
|
|
||||||
timeout: 600
|
|
||||||
type: stdio
|
|
@@ -1,84 +0,0 @@
|
|||||||
{
|
|
||||||
"mcpServers": {
|
|
||||||
"context7": {
|
|
||||||
"command": "pnpm",
|
|
||||||
"args": [
|
|
||||||
"dlx",
|
|
||||||
"@upstash/context7-mcp@latest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fetch": {
|
|
||||||
"command": "uvx",
|
|
||||||
"args": [
|
|
||||||
"mcp-server-fetch"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"filesystem": {
|
|
||||||
"command": "pnpm",
|
|
||||||
"args": [
|
|
||||||
"dlx",
|
|
||||||
"@modelcontextprotocol/server-filesystem@latest",
|
|
||||||
"/opt/personal",
|
|
||||||
"/opt/work"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"git": {
|
|
||||||
"command": "uvx",
|
|
||||||
"args": [
|
|
||||||
"mcp-server-git"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"github": {
|
|
||||||
"command": "docker",
|
|
||||||
"args": [
|
|
||||||
"run",
|
|
||||||
"-i",
|
|
||||||
"--rm",
|
|
||||||
"-e",
|
|
||||||
"GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
||||||
"ghcr.io/github/github-mcp-server"
|
|
||||||
],
|
|
||||||
"env": {
|
|
||||||
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GH_TOKEN}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"memory": {
|
|
||||||
"command": "pnpm",
|
|
||||||
"args": [
|
|
||||||
"dlx",
|
|
||||||
"@modelcontextprotocol/server-memory@latest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"memory-bank": {
|
|
||||||
"command": "pnpm",
|
|
||||||
"args": [
|
|
||||||
"dlx",
|
|
||||||
"@allpepper/memory-bank-mcp@latest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"sequential-thinking": {
|
|
||||||
"command": "pnpm",
|
|
||||||
"args": [
|
|
||||||
"dlx",
|
|
||||||
"@modelcontextprotocol/server-sequential-thinking@latest"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"serena": {
|
|
||||||
"command": "uvx",
|
|
||||||
"arg": [
|
|
||||||
"--from",
|
|
||||||
"git+https://github.com/oraios/serena",
|
|
||||||
"serena-mcp-server",
|
|
||||||
"--transport",
|
|
||||||
"stdio",
|
|
||||||
"--enable-web-dashboard",
|
|
||||||
"False",
|
|
||||||
"--enable-gui-log-window",
|
|
||||||
"False",
|
|
||||||
"--tool-timeout",
|
|
||||||
"30"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"nativeMCPServers": []
|
|
||||||
}
|
|
@@ -1,55 +0,0 @@
|
|||||||
[tools]
|
|
||||||
"aqua:BurntSushi/ripgrep" = "14.1.1"
|
|
||||||
"aqua:FiloSottile/age" = "1.2.1"
|
|
||||||
"aqua:ajeetdsouza/zoxide" = "0.9.8"
|
|
||||||
"aqua:alexellis/k3sup" = "0.13.10"
|
|
||||||
"aqua:astral-sh/uv" = "0.8.4"
|
|
||||||
"aqua:aws/aws-cli" = "2.28.1"
|
|
||||||
"aqua:bitwarden/clients" = "cli-v2025.5.0"
|
|
||||||
"aqua:dagger/dagger" = "0.18.14"
|
|
||||||
"aqua:derailed/k9s" = "0.50.9"
|
|
||||||
"aqua:eksctl-io/eksctl" = "0.212.0"
|
|
||||||
"aqua:evilmartians/lefthook" = "1.12.2"
|
|
||||||
"aqua:eza-community/eza" = "0.23.0"
|
|
||||||
"aqua:github-cli" = "2.76.2"
|
|
||||||
"aqua:go-task/task" = "3.44.1"
|
|
||||||
"aqua:hashicorp/terraform" = "1.12.2"
|
|
||||||
"aqua:helm/helm" = "3.18.4"
|
|
||||||
"aqua:jj-vcs/jj" = "0.31.0"
|
|
||||||
"aqua:junegunn/fzf" = "0.65.1"
|
|
||||||
"aqua:k3d-io/k3d" = "5.8.3"
|
|
||||||
"aqua:kubernetes-sigs/kind" = "0.29.0"
|
|
||||||
"aqua:kubernetes/kubectl" = "1.33.2"
|
|
||||||
"aqua:pnpm/pnpm" = "10.13.1"
|
|
||||||
"aqua:sbstp/kubie" = "0.26.0"
|
|
||||||
"aqua:sharkdp/bat" = "0.25.0"
|
|
||||||
"aqua:starship/starship" = "1.23.0"
|
|
||||||
"aqua:tilt-dev/ctlptl" = "0.8.42"
|
|
||||||
"aqua:tilt-dev/tilt" = "0.35.0"
|
|
||||||
"npm:@anthropic-ai/claude-code" = "1.0.67"
|
|
||||||
"npm:@google/gemini-cli" = "0.1.16"
|
|
||||||
"pipx:aider-chat" = { version = "0.85.2", uvx_args = "--python 3.12.10 --with google-generativeai" }
|
|
||||||
"pipx:httpie" = { version = "3.2.4", uvx_args = "--python 3.13.3" }
|
|
||||||
"ubi:Samyak2/toipe" = "0.5.0"
|
|
||||||
"ubi:comtrya/comtrya" = "0.9.2"
|
|
||||||
"ubi:hlsxx/tukai" = "0.2.2"
|
|
||||||
"ubi:jdx/usage" = "2.2.2"
|
|
||||||
"ubi:max-niederman/ttyper" = "1.6.0"
|
|
||||||
"ubi:sst/opencode" = "0.3.126"
|
|
||||||
"ubi:wagoodman/dive" = "0.13.1"
|
|
||||||
elixir = "1.18.4"
|
|
||||||
erlang = "28.0.2"
|
|
||||||
go = "1.24.5"
|
|
||||||
lua = "5.1.5"
|
|
||||||
luajit = "2.0.5"
|
|
||||||
node = "24.4.1"
|
|
||||||
python = "3.13.5"
|
|
||||||
r = "4.5.1"
|
|
||||||
rust = "1.88.0"
|
|
||||||
|
|
||||||
[settings]
|
|
||||||
experimental = true
|
|
||||||
python_compile = true
|
|
||||||
idiomatic_version_file_enable_tools = ["go", "ruby", "python"]
|
|
||||||
|
|
||||||
[env]
|
|
@@ -5,506 +5,91 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
'joaodubas/gitlinker.nvim',
|
'joaodubas/gitlinker.nvim',
|
||||||
config = function()
|
config = function ()
|
||||||
local actions = require 'gitlinker.actions'
|
local actions = require('gitlinker.actions')
|
||||||
local hosts = require 'gitlinker.hosts'
|
local hosts = require('gitlinker.hosts')
|
||||||
require('gitlinker').setup {
|
require('gitlinker').setup({
|
||||||
opts = {
|
opts = {
|
||||||
remote = 'origin',
|
remote = "origin",
|
||||||
add_current_line_on_normal_mode = true,
|
add_current_line_on_normal_mode = true,
|
||||||
action_callback = actions.copy_to_clipboard,
|
action_callback = actions.copy_to_clipboard,
|
||||||
print_url = true,
|
print_url = true,
|
||||||
},
|
},
|
||||||
callbacks = {
|
callbacks = {
|
||||||
['github.com'] = hosts.get_github_type_url,
|
["github.com"] = hosts.get_github_type_url,
|
||||||
['bitbucket.org'] = hosts.get_bitbucket_type_url,
|
["bitbucket.org"] = hosts.get_bitbucket_type_url,
|
||||||
['gitea.dubas.dev'] = hosts.get_gitea_type_url,
|
["gitea.dubas.dev"] = hosts.get_gitea_type_url,
|
||||||
},
|
},
|
||||||
mappings = '<leader>gy',
|
mappings = "<leader>gy"
|
||||||
}
|
})
|
||||||
end,
|
end
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'NeogitOrg/neogit',
|
'rest-nvim/rest.nvim',
|
||||||
dependencies = {
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
'nvim-lua/plenary.nvim',
|
ft = {
|
||||||
'sindrets/diffview.nvim',
|
'http',
|
||||||
'nvim-telescope/telescope.nvim',
|
'rest'
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
git_services = {
|
result_split_horizontal = false,
|
||||||
['gitea.dubas.dev'] = 'https://gitea.dubas.dev/${owner}/${repository}/compare/${branch_name}',
|
result_split_in_place = false,
|
||||||
|
skip_ssl_verification = false,
|
||||||
|
encode_url = true,
|
||||||
|
highlight = {
|
||||||
|
enabled = true,
|
||||||
|
timeout = 15
|
||||||
},
|
},
|
||||||
},
|
result = {
|
||||||
keys = {
|
show_url = true,
|
||||||
{ '<leader>gs', '<cmd>Neogit<cr>', desc = 'Git status' },
|
show_curl_command = true,
|
||||||
},
|
show_http_info = true,
|
||||||
},
|
show_headers = true,
|
||||||
'nvim-treesitter/nvim-treesitter-context',
|
formatters = {
|
||||||
{
|
json = 'jq',
|
||||||
'kevinhwang91/nvim-ufo',
|
html = false
|
||||||
dependencies = { 'kevinhwang91/promise-async' },
|
},
|
||||||
event = 'BufRead',
|
jump_to_request = true,
|
||||||
keys = function()
|
env_file = '.env',
|
||||||
local ufo = require 'ufo'
|
custom_dynamic_variables = { },
|
||||||
return {
|
yank_dry_run = true
|
||||||
{ 'zR', ufo.openAllFolds, { desc = 'Open all folds' } },
|
|
||||||
{ 'zM', ufo.closeAllFolds, { desc = 'Close all folds' } },
|
|
||||||
{ 'zr', ufo.openFoldsExceptKinds, { desc = 'Open fold' } },
|
|
||||||
{ 'zm', ufo.closeFoldsWith, { desc = 'Close fold' } },
|
|
||||||
}
|
}
|
||||||
end,
|
},
|
||||||
opts = function()
|
keys = function ()
|
||||||
local handler = function(virtText, lnum, endLnum, width, truncate)
|
local status_ok, which_key = pcall(require, 'which-key')
|
||||||
local newVirtText = {}
|
if status_ok then
|
||||||
local suffix = (' %d '):format(endLnum - lnum)
|
which_key.register({
|
||||||
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
['<leader>t'] = { name = 'Res[t]', _ = 'which_key_ignore' }
|
||||||
local targetWidth = width - sufWidth
|
})
|
||||||
local curWidth = 0
|
|
||||||
for _, chunk in ipairs(virtText) do
|
|
||||||
local chunkText = chunk[1]
|
|
||||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
|
||||||
if targetWidth > curWidth + chunkWidth then
|
|
||||||
table.insert(newVirtText, chunk)
|
|
||||||
else
|
|
||||||
chunkText = truncate(chunkText, targetWidth - curWidth)
|
|
||||||
local hlGroup = chunk[2]
|
|
||||||
table.insert(newVirtText, { chunkText, hlGroup })
|
|
||||||
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
|
||||||
-- str width returned from truncate() may less than 2nd argument, need padding
|
|
||||||
if curWidth + chunkWidth < targetWidth then
|
|
||||||
suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth)
|
|
||||||
end
|
|
||||||
break
|
|
||||||
end
|
|
||||||
curWidth = curWidth + chunkWidth
|
|
||||||
end
|
|
||||||
table.insert(newVirtText, { suffix, 'MoreMsg' })
|
|
||||||
return newVirtText
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fold_virt_text_handler = handler,
|
{ '<leader>tr', '<Plug>RestNvim', desc = 'Run the request under cursor' },
|
||||||
provider_selector = function(_, _, _)
|
{ '<leader>tp', '<Plug>RestNvimPreview', desc = 'Preview the curl command for the request under cursor' },
|
||||||
return { 'treesitter', 'indent' }
|
{ '<leader>tl', '<Plug>RestNvimLast', desc = 'Re-run the last request' }
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
end,
|
end
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'stevearc/oil.nvim',
|
'Vigemus/iron.nvim',
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
config = function ()
|
||||||
keys = {
|
local iron = require('iron.core')
|
||||||
{ '-', '<cmd>Oil<cr>', desc = 'Open parent directory' },
|
iron.setup({
|
||||||
},
|
config = {
|
||||||
opts = {},
|
scratch_repl = true,
|
||||||
},
|
repl_definition = {
|
||||||
{
|
sh = {
|
||||||
'vhyrro/luarocks.nvim',
|
command = { 'fish' }
|
||||||
priority = 1000,
|
|
||||||
config = true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'jpalardy/vim-slime',
|
|
||||||
init = function()
|
|
||||||
vim.g.slime_target = 'tmux'
|
|
||||||
vim.g.slime_no_mappings = true
|
|
||||||
end,
|
|
||||||
keys = {
|
|
||||||
{ '<leader>xr', '<Plug>SlimeMotionSend', mode = 'n', desc = 'Slime send motion' },
|
|
||||||
{ '<leader>xz', ":<C-u>'<,'>SlimeSend<CR>", mode = 'v', desc = 'Slime send currently highlighted text' },
|
|
||||||
{ '<leader>xz', '<Plug>SlimeLineSend', mode = 'n', desc = 'Slime send line' },
|
|
||||||
{ '<leader>xc', '<Plug>SlimeConfig', mode = 'n', desc = 'Slime configuration' },
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
vim.g.slime_input_pid = false
|
|
||||||
vim.g.slime_suggest_default = true
|
|
||||||
vim.g.slime_menu_config = false
|
|
||||||
vim.g.slime_neovim_ignore_unlisted = false
|
|
||||||
vim.g.slime_bracketed_paste = true
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'ravitemer/mcphub.nvim',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-lua/plenary.nvim',
|
|
||||||
},
|
|
||||||
cmd = 'MCPHub',
|
|
||||||
build = 'bundled_build.lua',
|
|
||||||
opts = {
|
|
||||||
port = 37373,
|
|
||||||
config = vim.fn.expand '~/.config/mcphub/servers.json',
|
|
||||||
native_servers = {},
|
|
||||||
auto_approve = true,
|
|
||||||
auto_toggle_mcp_servers = true,
|
|
||||||
extensions = {},
|
|
||||||
ui = {
|
|
||||||
window = {
|
|
||||||
width = 0.8,
|
|
||||||
height = 0.8,
|
|
||||||
relative = 'editor',
|
|
||||||
zindex = 50,
|
|
||||||
border = 'rounded',
|
|
||||||
},
|
|
||||||
wo = {},
|
|
||||||
},
|
|
||||||
use_bundled_binary = true,
|
|
||||||
log = {
|
|
||||||
level = vim.log.levels.WARN,
|
|
||||||
prefix = '[MCPHub]',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'olimorris/codecompanion.nvim',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-lua/plenary.nvim',
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
{
|
|
||||||
'MeanderingProgrammer/render-markdown.nvim',
|
|
||||||
opts = {
|
|
||||||
file_types = { 'markdown', 'codecompanion' },
|
|
||||||
},
|
|
||||||
ft = { 'markdown', 'codecompanion' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = function()
|
|
||||||
return {
|
|
||||||
display = {
|
|
||||||
action_palette = {
|
|
||||||
width = 95,
|
|
||||||
height = 15,
|
|
||||||
prompt = 'Prompt',
|
|
||||||
provide = 'telescope',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
adapters = {
|
|
||||||
gemini_pro = function()
|
|
||||||
return require('codecompanion.adapters').extend('gemini', {
|
|
||||||
name = 'gemini_pro',
|
|
||||||
schema = {
|
|
||||||
model = {
|
|
||||||
default = 'gemini-2.5-pro',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
gemini_flash = function()
|
|
||||||
return require('codecompanion.adapters').extend('gemini', {
|
|
||||||
name = 'gemini_flash',
|
|
||||||
schema = {
|
|
||||||
model = {
|
|
||||||
default = 'gemini-2.5-flash',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
extensions = {
|
|
||||||
vectorcode = {
|
|
||||||
opts = {
|
|
||||||
add_tool = true,
|
|
||||||
add_slash_command = true,
|
|
||||||
tool_opts = {},
|
|
||||||
},
|
},
|
||||||
},
|
elixir = require('iron.fts.elixir').iex,
|
||||||
mcphub = {
|
javascript = require('iron.fts.javascript').node,
|
||||||
callback = 'mcphub.extensions.codecompanion',
|
python = require('iron.fts.python').ipython,
|
||||||
opts = {
|
typescript = require('iron.fts.typescript').ts
|
||||||
make_slash_commands = true,
|
}
|
||||||
make_vars = true,
|
|
||||||
show_result_in_chat = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
strategies = {
|
highlight = { italic = true },
|
||||||
chat = { adapter = 'gemini_pro' },
|
ignore_blank_lines = true
|
||||||
inline = { adapter = 'gemini_flash' },
|
})
|
||||||
},
|
end
|
||||||
}
|
|
||||||
end,
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
'<leader>aa',
|
|
||||||
'<cmd>CodeCompanionActions<cr>',
|
|
||||||
mode = { 'n', 'v' },
|
|
||||||
desc = 'CodeCompaion actions',
|
|
||||||
noremap = true,
|
|
||||||
silent = true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>at',
|
|
||||||
'<cmd>CodeCompanionChat Toggle<cr>',
|
|
||||||
mode = { 'n', 'v' },
|
|
||||||
desc = 'CodeCompanion toggle chat',
|
|
||||||
noremap = true,
|
|
||||||
silent = true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'ga',
|
|
||||||
'<cmd>CodeCompanionChat add<cr>',
|
|
||||||
mode = 'v',
|
|
||||||
desc = 'CodeCompanion add to chat',
|
|
||||||
noremap = true,
|
|
||||||
silent = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'supermaven-inc/supermaven-nvim',
|
|
||||||
opts = {
|
|
||||||
keymaps = {
|
|
||||||
accept_suggestion = '<Tab>',
|
|
||||||
clear_suggestion = '<C-]>',
|
|
||||||
accept_word = '<C-j>',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'azorng/goose.nvim',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-lua/plenary.nvim',
|
|
||||||
{
|
|
||||||
'MeanderingProgrammer/render-markdown.nvim',
|
|
||||||
opts = {
|
|
||||||
file_types = { 'markdown', 'goose' },
|
|
||||||
anti_conceal = { enabled = false },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
prefered_picker = 'telescope',
|
|
||||||
default_global_keymaps = false,
|
|
||||||
ui = {
|
|
||||||
window_widht = 0.3,
|
|
||||||
input_height = 0.2,
|
|
||||||
fullscreen = false,
|
|
||||||
layout = 'right',
|
|
||||||
floating_height = 0.9,
|
|
||||||
display_model = true,
|
|
||||||
display_goose_mode = true,
|
|
||||||
},
|
|
||||||
providers = {
|
|
||||||
anthropic = {
|
|
||||||
'claude-sonnet-4-20250514',
|
|
||||||
},
|
|
||||||
gemini = {
|
|
||||||
'gemini-2.5-pro',
|
|
||||||
'gemini-2.5-flash',
|
|
||||||
},
|
|
||||||
groq = {
|
|
||||||
'deepseek-r1-distill-llama-70b',
|
|
||||||
'qwen-qwq-32b',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
keys = {
|
|
||||||
{ '<leader>gg', '<cmd>Goose<cr>', mode = 'n', desc = 'Toggle goose' },
|
|
||||||
{ '<leader>gi', '<cmd>GooseOpenInput<cr>', mode = 'n', desc = 'Open goose input' },
|
|
||||||
{ '<leader>gI', '<cmd>GooseOpenInputNewSession<cr>', mode = 'n', desc = 'Open goose input in new session' },
|
|
||||||
{ '<leader>go', '<cmd>GooseOpenOutput<cr>', mode = 'n', desc = 'Open goose output' },
|
|
||||||
{ '<leader>gt', '<cmd>GooseToggleFocus<cr>', mode = 'n', desc = 'Toggle focus between goose and last window' },
|
|
||||||
{ '<leader>gq', '<cmd>GooseClose<cr>', mode = 'n', desc = 'Close goose' },
|
|
||||||
{ '<leader>gf', '<cmd>GooseToggleFullscreen<cr>', mode = 'n', desc = 'Toggle goose fullscreen' },
|
|
||||||
{ '<leader>gsn', '<cmd>GooseSelectSession<cr>', mode = 'n', desc = 'Select and load a goose session' },
|
|
||||||
-- { '<leader>gmc', '<cmd>GooseModeChat<cr>', mode = 'n', desc = 'Set goose mode to `chat`' },
|
|
||||||
-- { '<leader>gma', '<cmd>GooseModeAuto<cr>', mode = 'n', desc = 'Set goose mode to `auto`' },
|
|
||||||
{ '<leader>gp', '<cmd>GooseConfigureProvider<cr>', mode = 'n', desc = 'Quick provider and model switch from predefined list' },
|
|
||||||
{ '<leader>gd', '<cmd>GooseDiff<cr>', mode = 'n', desc = 'Opens a diff tab of a modified file since the last goose prompt' },
|
|
||||||
{ '<leader>g]', '<cmd>GooseDiffNext<cr>', mode = 'n', desc = 'Navigate to next file diff' },
|
|
||||||
{ '<leader>g[', '<cmd>GooseDiffPrev<cr>', mode = 'n', desc = 'Navigate to previous file diff' },
|
|
||||||
{ '<leader>gc', '<cmd>GooseDiffClose<cr>', mode = 'n', desc = 'Close diff view tab and return to normal editing' },
|
|
||||||
{ '<leader>gra', '<cmd>GooseDiffRevertAll<cr>', mode = 'n', desc = 'Revert all file changes since the last goose prompt' },
|
|
||||||
{ '<leader>grt', '<cmd>GooseDiffRevertThis<cr>', mode = 'n', desc = 'Revert current file changes since the last goose prompt' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'yetone/avante.nvim',
|
|
||||||
build = 'make',
|
|
||||||
event = 'VeryLazy',
|
|
||||||
version = false,
|
|
||||||
dependencies = {
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
'stevearc/dressing.nvim',
|
|
||||||
'nvim-lua/plenary.nvim',
|
|
||||||
'MunifTanjim/nui.nvim',
|
|
||||||
'nvim-telescope/telescope.nvim',
|
|
||||||
'nvim-tree/nvim-web-devicons',
|
|
||||||
{
|
|
||||||
-- support for image pasting
|
|
||||||
'HakonHarnes/img-clip.nvim',
|
|
||||||
event = 'VeryLazy',
|
|
||||||
opts = {
|
|
||||||
-- recommended settings
|
|
||||||
default = {
|
|
||||||
embed_image_as_base64 = false,
|
|
||||||
prompt_for_file_name = false,
|
|
||||||
drag_and_drop = {
|
|
||||||
insert_mode = true,
|
|
||||||
},
|
|
||||||
-- required for Windows users
|
|
||||||
use_absolute_path = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'MeanderingProgrammer/render-markdown.nvim',
|
|
||||||
opts = {
|
|
||||||
file_types = { 'markdown', 'Avante' },
|
|
||||||
},
|
|
||||||
ft = { 'markdown', 'Avante' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
mappings = {
|
|
||||||
ask = '<leader>ua',
|
|
||||||
edit = '<leader>ue',
|
|
||||||
refresh = '<leader>ur',
|
|
||||||
diff = {
|
|
||||||
ours = 'co',
|
|
||||||
theirs = 'ct',
|
|
||||||
all_theirs = 'ca',
|
|
||||||
both = 'cb',
|
|
||||||
cursor = 'cc',
|
|
||||||
next = ']x',
|
|
||||||
prev = '[x',
|
|
||||||
},
|
|
||||||
suggestion = {
|
|
||||||
accept = '<M-l>',
|
|
||||||
next = '<M-]>',
|
|
||||||
prev = '<M-[>',
|
|
||||||
dismiss = '<C-]>',
|
|
||||||
},
|
|
||||||
jump = {
|
|
||||||
next = ']]',
|
|
||||||
prev = '[[',
|
|
||||||
},
|
|
||||||
submit = {
|
|
||||||
normal = '<CR>',
|
|
||||||
insert = '<C-s>',
|
|
||||||
},
|
|
||||||
sidebar = {
|
|
||||||
apply_all = 'A',
|
|
||||||
apply_cursor = 'a',
|
|
||||||
switch_windows = '<Tab>',
|
|
||||||
reverse_switch_windows = '<S-Tab>',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- The custom_tools type supports both a list and a function that returns a list. Using a function here prevents requiring mcphub before it's loaded
|
|
||||||
custom_tools = function()
|
|
||||||
return {
|
|
||||||
require('mcphub.extensions.avante').mcp_tool(),
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
hints = { enabled = true },
|
|
||||||
provider = 'gemini-pro',
|
|
||||||
-- The system_prompt type supports both a string and a function that returns a string. Using a function here allows dynamically updating the prompt with `mcphub`
|
|
||||||
system_prompt = function()
|
|
||||||
local hub = require('mcphub').get_hub_instance()
|
|
||||||
return hub and hub:get_active_servers_prompt() or ''
|
|
||||||
end,
|
|
||||||
providers = {
|
|
||||||
['deepseek-r1-local'] = {
|
|
||||||
__inherited_from = 'ollama',
|
|
||||||
api_key_name = '',
|
|
||||||
endpoint = 'http://172.30.64.1:10000',
|
|
||||||
model = 'deepseek-r1:14b',
|
|
||||||
},
|
|
||||||
['gemma3-local'] = {
|
|
||||||
__inherited_from = 'ollama',
|
|
||||||
api_key_name = '',
|
|
||||||
endpoint = 'http://172.30.64.1:10000',
|
|
||||||
model = 'gemma3:12b',
|
|
||||||
},
|
|
||||||
['qwen3-local'] = {
|
|
||||||
__inherited_from = 'ollama',
|
|
||||||
api_key_name = '',
|
|
||||||
endpoint = 'http://172.30.64.1:10000',
|
|
||||||
model = 'qwen3:14b',
|
|
||||||
},
|
|
||||||
['gemini-pro'] = {
|
|
||||||
__inherited_from = 'gemini',
|
|
||||||
model = 'gemini-2.5-pro',
|
|
||||||
timeout = 600000,
|
|
||||||
extra_request_body = { max_tokens = 40960 },
|
|
||||||
},
|
|
||||||
['gemini-flash'] = {
|
|
||||||
__inherited_from = 'gemini',
|
|
||||||
model = 'gemini-2.5-flash',
|
|
||||||
timeout = 600000,
|
|
||||||
extra_request_body = { max_tokens = 20480 },
|
|
||||||
},
|
|
||||||
['claude-sonnet-4'] = {
|
|
||||||
__inherited_from = 'claude',
|
|
||||||
model = 'claude-sonnet-4-20250514',
|
|
||||||
timeout = 600000,
|
|
||||||
extra_request_body = { max_tokens = 20480 },
|
|
||||||
},
|
|
||||||
groq = {
|
|
||||||
__inherited_from = 'openai',
|
|
||||||
api_key_name = 'GROQ_API_KEY',
|
|
||||||
endpoint = 'https://api.groq.com/openai/v1/',
|
|
||||||
model = 'deepseek-r1-distill-llama-70b',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'sphamba/smear-cursor.nvim',
|
|
||||||
opts = {
|
|
||||||
cursor_color = '#ff8800',
|
|
||||||
gamma = 1,
|
|
||||||
hide_target_hack = true,
|
|
||||||
stiffness = 0.3,
|
|
||||||
trailing_exponent = 10,
|
|
||||||
trailing_stiffness = 0.1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'greggh/claude-code.nvim',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-lua/plenary.nvim',
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
window = {
|
|
||||||
split_ratio = 0.5,
|
|
||||||
position = 'botright',
|
|
||||||
enter_insert = true,
|
|
||||||
hide_numbers = true,
|
|
||||||
hide_signcolumn = true,
|
|
||||||
},
|
|
||||||
refresh = {
|
|
||||||
enable = true,
|
|
||||||
updatetime = 100,
|
|
||||||
timer_interval = 1000,
|
|
||||||
show_notifications = true,
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
use_git_root = true,
|
|
||||||
},
|
|
||||||
shell = {
|
|
||||||
separator = '&&',
|
|
||||||
pushd_cmd = 'pushd',
|
|
||||||
popd_cmd = 'popd',
|
|
||||||
},
|
|
||||||
command = 'claude',
|
|
||||||
command_variants = {
|
|
||||||
continue = '--continue', -- Resume the most recent conversation
|
|
||||||
resume = '--resume', -- Display an interactive conversation picker
|
|
||||||
verbose = '--verbose', -- Enable verbose logging with full turn-by-turn output
|
|
||||||
},
|
|
||||||
keymaps = {
|
|
||||||
toggle = {
|
|
||||||
normal = '<C-_>',
|
|
||||||
terminal = '<C-_>',
|
|
||||||
variants = {
|
|
||||||
continue = '<leader>cC',
|
|
||||||
verbose = '<leader>cV',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
window_navigation = true,
|
|
||||||
scrolling = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
'nvim-treesitter/nvim-treesitter-context'
|
||||||
}
|
}
|
||||||
|
14
config/rtx/config.toml
Normal file
14
config/rtx/config.toml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[tools]
|
||||||
|
awscli = "2.13.30"
|
||||||
|
elixir = "1.15.7-otp-26"
|
||||||
|
erlang = "26.1.2"
|
||||||
|
go = "1.21.3"
|
||||||
|
helm = "3.13.1"
|
||||||
|
kubectl = "1.27.7"
|
||||||
|
node = "21.1.0"
|
||||||
|
poetry = "1.6.1"
|
||||||
|
python = "3.12.0"
|
||||||
|
terraform = "1.6.2"
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
experimental = true
|
@@ -1,46 +0,0 @@
|
|||||||
"$schema" = 'https://starship.rs/config-schema.json'
|
|
||||||
|
|
||||||
format = """
|
|
||||||
$username\
|
|
||||||
$hostname\
|
|
||||||
$directory\
|
|
||||||
$git_branch\
|
|
||||||
$git_state\
|
|
||||||
$git_status\
|
|
||||||
$line_break\
|
|
||||||
$kubernetes\
|
|
||||||
$line_break\
|
|
||||||
$character
|
|
||||||
"""
|
|
||||||
|
|
||||||
[directory]
|
|
||||||
truncation_length = 2
|
|
||||||
truncate_to_repo = false
|
|
||||||
|
|
||||||
[git_branch]
|
|
||||||
format = "[$branch]($style)"
|
|
||||||
style = "bright-black"
|
|
||||||
|
|
||||||
[git_state]
|
|
||||||
format = '\([$state( $progress_current/$progress_total)]($style)\) '
|
|
||||||
style = "bright-black"
|
|
||||||
|
|
||||||
[git_status]
|
|
||||||
format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)"
|
|
||||||
style = "cyan"
|
|
||||||
conflicted = ""
|
|
||||||
untracked = ""
|
|
||||||
modified = ""
|
|
||||||
staged = ""
|
|
||||||
renamed = ""
|
|
||||||
deleted = ""
|
|
||||||
stashed = "≡"
|
|
||||||
|
|
||||||
[kubernetes]
|
|
||||||
format = 'on [⛵ $context \($namespace\)](dimmed green) '
|
|
||||||
disabled = false
|
|
||||||
|
|
||||||
[character]
|
|
||||||
success_symbol = "[❯](purple)"
|
|
||||||
error_symbol = "[❯](red)"
|
|
||||||
vicmd_symbol = "[❮](green)"
|
|
@@ -40,6 +40,11 @@ set -s escape-time 0
|
|||||||
# Status bar styling and content
|
# Status bar styling and content
|
||||||
set -g status-bg black
|
set -g status-bg black
|
||||||
set -g status-fg white
|
set -g status-fg white
|
||||||
|
# set -g status-left "#$"
|
||||||
|
|
||||||
|
# Highlight the active window in the status bar
|
||||||
|
set-window-option -g window-status-current-bg yellow
|
||||||
|
set-window-option -g window-status-current-fg black
|
||||||
|
|
||||||
# Don't prompt to kill panes/windows
|
# Don't prompt to kill panes/windows
|
||||||
bind-key x kill-pane
|
bind-key x kill-pane
|
||||||
@@ -47,28 +52,48 @@ bind-key & kill-window
|
|||||||
|
|
||||||
# Reload tmux conf
|
# Reload tmux conf
|
||||||
unbind r
|
unbind r
|
||||||
bind r source-file ~/.config/tmux/tmux.conf\; display "Reloaded conf."
|
bind r source-file ~/.tmux.conf\; display "Reloaded conf."
|
||||||
|
|
||||||
# Full color for vim
|
# Full color for vim
|
||||||
# based on https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6
|
set -g default-terminal "screen-256color"
|
||||||
set -g default-terminal "tmux-256color"
|
|
||||||
set -sg terminal-overrides ",*:RGB"
|
|
||||||
|
|
||||||
# tms shortcuts
|
#### COLOUR (Solarized 256)
|
||||||
bind C-o display-popup -E "tms"
|
|
||||||
bind C-j display-popup -E "tms switch"
|
# default statusbar colors
|
||||||
bind C-w display-popup -E "tms windows"
|
set-option -g status-bg colour235 #base02
|
||||||
|
set-option -g status-fg colour136 #yellow
|
||||||
|
set-option -g status-attr default
|
||||||
|
|
||||||
|
# default window title colors
|
||||||
|
set-window-option -g window-status-fg colour244 #base0
|
||||||
|
set-window-option -g window-status-bg default
|
||||||
|
#set-window-option -g window-status-attr dim
|
||||||
|
|
||||||
|
# active window title colors
|
||||||
|
set-window-option -g window-status-current-fg colour166 #orange
|
||||||
|
set-window-option -g window-status-current-bg default
|
||||||
|
#set-window-option -g window-status-current-attr bright
|
||||||
|
|
||||||
|
# pane border
|
||||||
|
set-option -g pane-border-fg colour235 #base02
|
||||||
|
set-option -g pane-active-border-fg colour240 #base01
|
||||||
|
|
||||||
|
# message text
|
||||||
|
set-option -g message-bg colour235 #base02
|
||||||
|
set-option -g message-fg colour166 #orange
|
||||||
|
|
||||||
|
# pane number display
|
||||||
|
set-option -g display-panes-active-colour colour33 #blue
|
||||||
|
set-option -g display-panes-colour colour166 #orange
|
||||||
|
|
||||||
|
# clock
|
||||||
|
set-window-option -g clock-mode-colour colour64 #green
|
||||||
|
|
||||||
# buffer size
|
# buffer size
|
||||||
set -g history-limit 50000
|
set -g history-limit 50000
|
||||||
|
|
||||||
# list plugins
|
# list plugins
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
set -g @plugin 'fabioluciano/tmux-tokyo-night'
|
set -g @plugin 'Morantron/tmux-fingers'
|
||||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||||
|
|
||||||
# tokyo night configuration
|
|
||||||
set -g @theme_plugins 'datetime'
|
|
||||||
|
|
||||||
# load/install plugins
|
|
||||||
run '~/.config/tmux/plugins/tpm/tpm'
|
run '~/.config/tmux/plugins/tpm/tpm'
|
||||||
|
23
config/tmuxp/dev.yml
Normal file
23
config/tmuxp/dev.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
session_name: dev
|
||||||
|
start_directory: /opt/work
|
||||||
|
windows:
|
||||||
|
- window_name: main
|
||||||
|
layout: even-vertical
|
||||||
|
focus: true
|
||||||
|
panes:
|
||||||
|
- focus: true
|
||||||
|
- pane
|
||||||
|
- window_name: support
|
||||||
|
layout: even-vertical
|
||||||
|
start_directory: support
|
||||||
|
panes:
|
||||||
|
- shell_command:
|
||||||
|
- docker compose exec pgcli bash
|
||||||
|
- pane
|
||||||
|
- window_name: local
|
||||||
|
layout: even-vertical
|
||||||
|
start_directory: local
|
||||||
|
panes:
|
||||||
|
- pane
|
||||||
|
- pane
|
@@ -1,15 +0,0 @@
|
|||||||
session_name: personal
|
|
||||||
start_directory: /opt/personal
|
|
||||||
windows:
|
|
||||||
- window_name: labs
|
|
||||||
focus: true
|
|
||||||
layout: even-vertical
|
|
||||||
start_directory: labs/
|
|
||||||
panes:
|
|
||||||
- focus: true
|
|
||||||
- pane
|
|
||||||
- window_name: ide
|
|
||||||
layout: even-vertical
|
|
||||||
panes:
|
|
||||||
- focus: true
|
|
||||||
- pane
|
|
@@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
session_name: rpi
|
|
||||||
start_directory: /opt/personal
|
|
||||||
windows:
|
|
||||||
- window_name: rpi
|
|
||||||
focus: true
|
|
||||||
layout: tiled
|
|
||||||
start_directory: labs
|
|
||||||
panes:
|
|
||||||
- focus: true
|
|
||||||
shell_command: ssh rpi00
|
|
||||||
- shell_command: ssh rpi01
|
|
||||||
- shell_command: ssh rpi02
|
|
||||||
- shell_command: ssh rpi03
|
|
@@ -1,10 +1,15 @@
|
|||||||
---
|
session_name: personal
|
||||||
session_name: work
|
start_directory: /opt/personal
|
||||||
start_directory: /opt/work
|
|
||||||
windows:
|
windows:
|
||||||
- window_name: main
|
- window_name: labs
|
||||||
layout: even-vertical
|
|
||||||
focus: true
|
focus: true
|
||||||
|
layout: even-vertical
|
||||||
|
start_directory: labs/
|
||||||
panes:
|
panes:
|
||||||
- focus: true
|
- focus: true
|
||||||
- pane
|
- pane
|
||||||
|
- window_name: ide
|
||||||
|
layout: even-vertical
|
||||||
|
panes:
|
||||||
|
- focus: true
|
||||||
|
- pane
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"host": "chroma",
|
|
||||||
"port": "8000"
|
|
||||||
}
|
|
@@ -1,56 +1,23 @@
|
|||||||
---
|
---
|
||||||
services:
|
services:
|
||||||
nvim:
|
nvim:
|
||||||
build:
|
build: .
|
||||||
context: .
|
|
||||||
args:
|
|
||||||
GIT_USER_EMAIL: ${NVIM_GIT_USER_EMAIL:-nobody@example.com}
|
|
||||||
GIT_USER_NAME: ${NVIM_GIT_USER_NAME:-noboby}
|
|
||||||
image: 'joaodubas/nvim:${NVIM_TAG:-latest}'
|
image: 'joaodubas/nvim:${NVIM_TAG:-latest}'
|
||||||
init: true
|
init: true
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
hostname: local
|
hostname: local
|
||||||
pull_policy: never
|
|
||||||
entrypoint: sleep
|
entrypoint: sleep
|
||||||
command: infinity
|
command: infinity
|
||||||
environment:
|
|
||||||
GH_TOKEN: &github_token ${NVIM_GH_TOKEN:-no-token}
|
|
||||||
GITHUB_TOKEN: *github_token
|
|
||||||
COMPOSE_BAKE: 'true'
|
|
||||||
volumes:
|
volumes:
|
||||||
- './config/atuin:/home/coder/.config/atuin'
|
- './config/rtx:/home/coder/.config/rtx'
|
||||||
- './config/git:/home/coder/.config/git'
|
|
||||||
- './config/goose:/home/coder/.config/goose'
|
|
||||||
- './config/mcphub:/home/coder/.config/mcphub'
|
|
||||||
- './config/mise:/home/coder/.config/mise'
|
|
||||||
- './config/nvim/lua/custom:/home/coder/.config/nvim/lua/custom'
|
|
||||||
- './config/starship:/home/coder/.config/starship'
|
|
||||||
- './config/tmux:/home/coder/.config/tmux'
|
- './config/tmux:/home/coder/.config/tmux'
|
||||||
- './config/tmuxp:/home/coder/.config/tmuxp'
|
- './config/tmuxp:/home/coder/.config/tmuxp'
|
||||||
- './config/vectorcode:/home/coder/.config/vectorcode'
|
- './config/nvim/lua/custom:/home/coder/.config/nvim/lua/custom'
|
||||||
- 'home_cache:/home/coder/.cache'
|
- 'home_cache:/home/coder/.cache'
|
||||||
- 'home_local_share:/home/coder/.local/share'
|
- 'home_local_share:/home/coder/.local/share'
|
||||||
- 'home_local_state:/home/coder/.local/state'
|
|
||||||
- 'home_plugins_tmux:/home/coder/.config/tmux/plugins'
|
- 'home_plugins_tmux:/home/coder/.config/tmux/plugins'
|
||||||
- 'home_supermaven:/home/coder/.supermaven'
|
|
||||||
|
|
||||||
chroma:
|
|
||||||
image: 'ghcr.io/chroma-core/chroma:1.0.15'
|
|
||||||
init: true
|
|
||||||
restart: unless-stopped
|
|
||||||
hostname: chroma
|
|
||||||
environment:
|
|
||||||
IS_PERSISTENT: 'true'
|
|
||||||
PERSISTENT_DIRECTORY: /data
|
|
||||||
volumes:
|
|
||||||
- 'chroma_data:/data'
|
|
||||||
ports:
|
|
||||||
- '${IDE_CHROMA_PORT:-18000:8000}'
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
home_cache: {}
|
home_cache: {}
|
||||||
home_local_share: {}
|
home_local_share: {}
|
||||||
home_local_state: {}
|
|
||||||
home_plugins_tmux: {}
|
home_plugins_tmux: {}
|
||||||
home_supermaven: {}
|
|
||||||
chroma_data: {}
|
|
||||||
|
@@ -1,340 +1,109 @@
|
|||||||
diff --git a/init.lua b/init.lua
|
diff --git a/init.lua b/init.lua
|
||||||
index b98ffc6..22b2196 100644
|
index a7667dd..6bf8654 100644
|
||||||
--- a/init.lua
|
--- a/init.lua
|
||||||
+++ b/init.lua
|
+++ b/init.lua
|
||||||
@@ -91,7 +91,7 @@ vim.g.mapleader = ' '
|
@@ -227,7 +227,7 @@ require('lazy').setup({
|
||||||
vim.g.maplocalleader = ' '
|
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
||||||
|
--
|
||||||
-- Set to true if you have a Nerd Font installed and selected in the terminal
|
-- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins
|
||||||
-vim.g.have_nerd_font = false
|
- -- { import = 'custom.plugins' },
|
||||||
+vim.g.have_nerd_font = true
|
+ { import = 'custom.plugins' },
|
||||||
|
}, {})
|
||||||
|
|
||||||
-- [[ Setting options ]]
|
-- [[ Setting options ]]
|
||||||
-- See `:help vim.o`
|
@@ -237,11 +237,12 @@ require('lazy').setup({
|
||||||
@@ -102,10 +102,10 @@ vim.g.have_nerd_font = false
|
-- Set highlight on search
|
||||||
vim.o.number = true
|
vim.o.hlsearch = false
|
||||||
-- You can also add relative line numbers, to help with jumping.
|
|
||||||
-- Experiment for yourself to see if you like it!
|
|
||||||
--- vim.o.relativenumber = true
|
|
||||||
+vim.o.relativenumber = true
|
|
||||||
|
|
||||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
--- Make line numbers default
|
||||||
|
+-- Make relative line numbers default
|
||||||
|
vim.wo.number = true
|
||||||
|
+vim.wo.relativenumber = true
|
||||||
|
|
||||||
|
--- Enable mouse mode
|
||||||
-vim.o.mouse = 'a'
|
-vim.o.mouse = 'a'
|
||||||
|
+-- Disable mouse mode
|
||||||
+vim.o.mouse = ''
|
+vim.o.mouse = ''
|
||||||
|
|
||||||
-- Don't show the mode, since it's already in the status line
|
-- Sync clipboard between OS and Neovim.
|
||||||
vim.o.showmode = false
|
-- Remove this option if you want your OS clipboard to remain independent.
|
||||||
@@ -166,6 +166,14 @@ vim.o.scrolloff = 10
|
@@ -271,6 +272,14 @@ vim.o.completeopt = 'menuone,noselect'
|
||||||
-- See `:help 'confirm'`
|
-- NOTE: You should make sure your terminal supports this
|
||||||
vim.o.confirm = true
|
vim.o.termguicolors = true
|
||||||
|
|
||||||
+-- Set foldmethod
|
+-- Set foldmethod
|
||||||
+-- See `:help foldmethod`
|
+-- See `:help foldmethod`
|
||||||
+vim.opt.foldcolumn = '1'
|
+vim.opt.foldmethod = 'expr'
|
||||||
+vim.opt.foldlevel = 99
|
+vim.opt.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
|
||||||
+vim.opt.foldlevelstart = 99
|
+vim.opt.foldnestmax = 5
|
||||||
+vim.opt.foldenable = true
|
+vim.opt.foldlevel = 1
|
||||||
+vim.opt.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
|
+vim.opt.foldenable = false
|
||||||
+
|
+
|
||||||
-- [[ Basic Keymaps ]]
|
-- [[ Basic Keymaps ]]
|
||||||
-- See `:help vim.keymap.set()`
|
|
||||||
|
|
||||||
@@ -640,9 +648,9 @@ require('lazy').setup({
|
-- Keymaps for better default experience
|
||||||
[vim.diagnostic.severity.HINT] = ' ',
|
@@ -333,11 +342,29 @@ vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc =
|
||||||
},
|
vim.defer_fn(function()
|
||||||
} or {},
|
require('nvim-treesitter.configs').setup {
|
||||||
- virtual_text = {
|
-- Add languages to be installed here that you want installed for treesitter
|
||||||
- source = 'if_many',
|
- ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' },
|
||||||
- spacing = 2,
|
-
|
||||||
+ virtual_text = false,
|
+ ensure_installed = {
|
||||||
+ -- Display multiline diagnostics on virtual lines
|
+ 'css',
|
||||||
+ virtual_lines = {
|
+ 'dockerfile',
|
||||||
format = function(diagnostic)
|
+ 'eex',
|
||||||
local diagnostic_message = {
|
+ 'elixir',
|
||||||
[vim.diagnostic.severity.ERROR] = diagnostic.message,
|
+ 'erlang',
|
||||||
@@ -652,6 +660,7 @@ require('lazy').setup({
|
+ 'go',
|
||||||
}
|
+ 'heex',
|
||||||
return diagnostic_message[diagnostic.severity]
|
+ 'html',
|
||||||
end,
|
+ 'http',
|
||||||
+ current_line = true,
|
+ 'javascript',
|
||||||
},
|
+ 'json',
|
||||||
}
|
+ 'lua',
|
||||||
|
+ 'markdown',
|
||||||
@@ -659,7 +668,7 @@ require('lazy').setup({
|
+ 'python',
|
||||||
-- By default, Neovim doesn't support everything that is in the LSP specification.
|
+ 'sql',
|
||||||
-- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
|
+ 'tsx',
|
||||||
-- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
|
+ 'typescript',
|
||||||
- local capabilities = require('blink.cmp').get_lsp_capabilities()
|
+ 'vim',
|
||||||
+ -- local capabilities = require('blink.cmp').get_lsp_capabilities()
|
+ 'vimdoc'
|
||||||
|
|
||||||
-- Enable the following language servers
|
|
||||||
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
|
|
||||||
@@ -684,6 +693,39 @@ require('lazy').setup({
|
|
||||||
-- ts_ls = {},
|
|
||||||
--
|
|
||||||
|
|
||||||
+ cuelsp = {},
|
|
||||||
+ elixirls = {
|
|
||||||
+ elixirLS = {
|
|
||||||
+ dialyzerEnabled = true,
|
|
||||||
+ dialyzerFormat = 'dialyxir_long',
|
|
||||||
+ fetchDeps = false,
|
|
||||||
+ mixEnv = 'test',
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ gopls = {
|
|
||||||
+ filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },
|
|
||||||
+ settings = {
|
|
||||||
+ gopls = {
|
|
||||||
+ completeUnimported = true,
|
|
||||||
+ usePlaceholders = true,
|
|
||||||
+ analyses = {
|
|
||||||
+ unusedparams = true,
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ harper_ls = {},
|
|
||||||
+ helm_ls = {},
|
|
||||||
+ html = { filetypes = { 'html', 'twig', 'hbs' } },
|
|
||||||
+ jsonls = {
|
|
||||||
+ settings = {
|
|
||||||
+ json = {
|
|
||||||
+ -- schemas = {
|
|
||||||
+ -- ["https://raw.githubusercontent.com/woodpecker-ci/woodpecker/main/pipeline/frontend/yaml/linter/schema/schema.json"] = "renovate.json",
|
|
||||||
+ -- },
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
lua_ls = {
|
|
||||||
-- cmd = { ... },
|
|
||||||
-- filetypes = { ... },
|
|
||||||
@@ -698,6 +740,38 @@ require('lazy').setup({
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
+ pyright = {},
|
|
||||||
+ templ = {},
|
|
||||||
+ terraformls = {},
|
|
||||||
+ ts_ls = {},
|
|
||||||
+ yamlls = {
|
|
||||||
+ settings = {
|
|
||||||
+ yaml = {
|
|
||||||
+ schemas = {
|
|
||||||
+ ["https://json.schemastore.org/chart.json"] = "Chart.{yml,yaml}",
|
|
||||||
+ ["https://json.schemastore.org/drone.json"] = ".drone.{yml,yaml}",
|
|
||||||
+ ["https://json.schemastore.org/github-action.json"] = ".github/action.{yml,yaml}",
|
|
||||||
+ ["https://json.schemastore.org/github-workflow.json"] = ".github/workflows/*",
|
|
||||||
+ ["https://json.schemastore.org/kustomization.json"] = "kustomization.{yml,yaml}",
|
|
||||||
+ ["https://json.schemastore.org/prettierrc.json"] = ".prettierrc.{yml,yaml}",
|
|
||||||
+ ["https://json.schemastore.org/circleciconfig.json"] = ".circleci/config.{yml,yaml}",
|
|
||||||
+ ["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}",
|
|
||||||
+ ["https://spec.openapis.org/oas/3.1/schema/2022-10-07"] = "*api*.{yml,yaml}",
|
|
||||||
+ ["https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json#/$defs/playbook"] = "*play*.{yml,yaml}",
|
|
||||||
+ ["https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json#/$defs/tasks"] = "roles/tasks/*.{yml,yaml}",
|
|
||||||
+ ["https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json"] = "*flow*.{yml,yaml}",
|
|
||||||
+ ["https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json"] = "*docker-compose*.{yml,yaml}",
|
|
||||||
+ -- kubernetes = "*.{yml,yaml}",
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ },
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ---@type MasonLspconfigSettings
|
|
||||||
+ ---@diagnostic disable-next-line: missing-fields
|
|
||||||
+ require('mason-lspconfig').setup {
|
|
||||||
+ automatic_enable = vim.tbl_keys(servers or {}),
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Ensure the servers and tools above are installed
|
|
||||||
@@ -719,20 +793,36 @@ require('lazy').setup({
|
|
||||||
})
|
|
||||||
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
|
||||||
|
|
||||||
- require('mason-lspconfig').setup {
|
|
||||||
- ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
|
|
||||||
- automatic_installation = false,
|
|
||||||
- handlers = {
|
|
||||||
- function(server_name)
|
|
||||||
- local server = servers[server_name] or {}
|
|
||||||
- -- This handles overriding only values explicitly passed
|
|
||||||
- -- by the server configuration above. Useful when disabling
|
|
||||||
- -- certain features of an LSP (for example, turning off formatting for ts_ls)
|
|
||||||
- server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
|
||||||
- require('lspconfig')[server_name].setup(server)
|
|
||||||
- end,
|
|
||||||
- },
|
|
||||||
- }
|
|
||||||
+ local extend_server_config = function (server_name)
|
|
||||||
+ local config = {}
|
|
||||||
+
|
|
||||||
+ if server_name == 'pyright' then
|
|
||||||
+ -- overwrite python path for pyright according to the virtualenv manager, be it poetry or system.
|
|
||||||
+ local python_paths = {
|
|
||||||
+ { name = 'system', cmd = { 'which', 'python' }},
|
|
||||||
+ { name = 'poetry', cmd = { 'poetry', 'env', 'info', '--executable' }},
|
|
||||||
+ }
|
|
||||||
+ for _, py_server in ipairs(python_paths) do
|
|
||||||
+ local cmd = vim.system(py_server.cmd, { text = true }):wait()
|
|
||||||
+ if (cmd.code > 0) then goto continue end
|
|
||||||
+ local python_path = string.gsub(cmd.stdout, '\n', '')
|
|
||||||
+ config = { settings = { python = { pythonPath = python_path } } }
|
|
||||||
+ ::continue::
|
|
||||||
+ end
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ return config
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ -- Installed LSPs are configured and enabled automatically with mason-lspconfig
|
|
||||||
+ -- The loop below is for overriding the default configuration of LSPs with the ones in the servers table
|
|
||||||
+ for server_name, config in pairs(servers) do
|
|
||||||
+ config = vim.tbl_extend('keep', config, extend_server_config(server_name))
|
|
||||||
+ vim.lsp.config(server_name, config)
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ -- NOTE: Some servers may require an old setup until they are updated. For the full list refer here: https://github.com/neovim/nvim-lspconfig/issues/3705
|
|
||||||
+ -- These servers will have to be manually set up with require("lspconfig").server_name.setup{}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
@@ -809,6 +899,9 @@ require('lazy').setup({
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
'folke/lazydev.nvim',
|
|
||||||
+ 'saghen/blink.compat',
|
|
||||||
+ 'supermaven-inc/supermaven-nvim',
|
|
||||||
+ 'Kaiser-Yang/blink-cmp-avante',
|
|
||||||
},
|
|
||||||
--- @module 'blink.cmp'
|
|
||||||
--- @type blink.cmp.Config
|
|
||||||
@@ -854,9 +947,19 @@ require('lazy').setup({
|
|
||||||
},
|
|
||||||
|
|
||||||
sources = {
|
|
||||||
- default = { 'lsp', 'path', 'snippets', 'lazydev' },
|
|
||||||
+ default = { 'avante', 'lsp', 'path', 'snippets', 'lazydev', 'supermaven' },
|
|
||||||
providers = {
|
|
||||||
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
|
|
||||||
+ avante = {
|
|
||||||
+ name = 'avante',
|
|
||||||
+ module = 'blink-cmp-avante',
|
|
||||||
+ },
|
|
||||||
+ supermaven = {
|
|
||||||
+ name = 'supermanve',
|
|
||||||
+ module = 'blink.compat.source',
|
|
||||||
+ score_offset = 100,
|
|
||||||
+ async = true,
|
|
||||||
+ },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
@@ -882,19 +985,39 @@ require('lazy').setup({
|
|
||||||
--
|
|
||||||
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
|
||||||
'folke/tokyonight.nvim',
|
|
||||||
+ dependencies = {
|
|
||||||
+ 'drewxs/ash.nvim',
|
|
||||||
+ 'wnkz/monoglow.nvim',
|
|
||||||
+ 'rjshkhr/shadow.nvim',
|
|
||||||
+ 'sainnhe/gruvbox-material',
|
|
||||||
+ 'slugbyte/lackluster.nvim',
|
|
||||||
+ },
|
+ },
|
||||||
priority = 1000, -- Make sure to load this before all the other start plugins.
|
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
|
||||||
config = function()
|
auto_install = false,
|
||||||
---@diagnostic disable-next-line: missing-fields
|
-
|
||||||
- require('tokyonight').setup {
|
highlight = { enable = true },
|
||||||
- styles = {
|
indent = { enable = true },
|
||||||
- comments = { italic = false }, -- Disable italics in comments
|
incremental_selection = {
|
||||||
- },
|
@@ -472,19 +499,24 @@ require('mason-lspconfig').setup()
|
||||||
- }
|
-- If you want to override the default filetypes that your language server will attach to you can
|
||||||
+ -- require('tokyonight').setup {
|
-- define the property 'filetypes' to the map in question.
|
||||||
+ -- styles = {
|
local servers = {
|
||||||
+ -- comments = { italic = false }, -- Disable italics in comments
|
- -- clangd = {},
|
||||||
+ -- },
|
- -- gopls = {},
|
||||||
+ -- }
|
- -- pyright = {},
|
||||||
|
- -- rust_analyzer = {},
|
||||||
-- Load the colorscheme here.
|
- -- tsserver = {},
|
||||||
-- Like many other themes, this one has different styles, and you could load
|
- -- html = { filetypes = { 'html', 'twig', 'hbs'} },
|
||||||
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
|
-
|
||||||
- vim.cmd.colorscheme 'tokyonight-night'
|
+ elixirls = {
|
||||||
+ -- For monoglow the following variants area available:
|
+ elixirLS = {
|
||||||
+ -- 'monoglow-z', 'monoglow-lack', or 'monoglow-void'.
|
+ dialyzerEnabled = true,
|
||||||
+ -- gruvbox-material configuration based on https://github.com/gonstoll/dotfiles/blob/2d7ec07bd475c73e7ba1a48b27a2a85315bfd2d1/.config/nvim/lua/plugins/colorscheme/gruvbox.lua#L5-L13
|
+ dialyzerFormat = "dialyxir_long",
|
||||||
+ vim.g.gruvbox_material_better_performance = 1
|
+ fetchDeps = false,
|
||||||
+ vim.g.gruvbox_material_foreground = 'material'
|
+ mixEnv = "test"
|
||||||
+ vim.g.gruvbox_material_background = 'medium'
|
+ }
|
||||||
+ vim.g.gruvbox_material_ui_contrast = 'low'
|
+ },
|
||||||
+ vim.g.gruvbox_material_float_style = 'dim'
|
+ gopls = {},
|
||||||
+ vim.g.gruvbox_material_enable_italic = 0
|
+ html = { filetypes = { 'html', 'twig', 'hbs'} },
|
||||||
+ vim.g.gruvbox_material_disable_italic_comment = 1
|
lua_ls = {
|
||||||
+ vim.g.gruvbox_material_cursor = 'red'
|
Lua = {
|
||||||
+ vim.g.gruvbox_material_disable_terminal_colors = 1
|
workspace = { checkThirdParty = false },
|
||||||
+ vim.cmd.colorscheme 'gruvbox-material'
|
telemetry = { enable = false },
|
||||||
+ -- vim.cmd.colorscheme 'lackluster'
|
},
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
|
+ pyright = {},
|
||||||
|
+ tsserver = {},
|
||||||
|
}
|
||||||
|
|
||||||
@@ -944,7 +1067,39 @@ require('lazy').setup({
|
-- Setup neovim lua configuration
|
||||||
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
|
|
||||||
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
|
|
||||||
opts = {
|
|
||||||
- ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
|
|
||||||
+ ensure_installed = {
|
|
||||||
+ 'bash',
|
|
||||||
+ 'c',
|
|
||||||
+ 'css',
|
|
||||||
+ 'diff',
|
|
||||||
+ 'dockerfile',
|
|
||||||
+ 'eex',
|
|
||||||
+ 'elixir',
|
|
||||||
+ 'erlang',
|
|
||||||
+ 'gitcommit',
|
|
||||||
+ 'go',
|
|
||||||
+ 'heex',
|
|
||||||
+ 'html',
|
|
||||||
+ 'http',
|
|
||||||
+ 'javascript',
|
|
||||||
+ 'json',
|
|
||||||
+ 'jsonc',
|
|
||||||
+ 'lua',
|
|
||||||
+ 'luadoc',
|
|
||||||
+ 'markdown',
|
|
||||||
+ 'markdown_inline',
|
|
||||||
+ 'python',
|
|
||||||
+ 'query',
|
|
||||||
+ 'sql',
|
|
||||||
+ 'templ',
|
|
||||||
+ 'terraform',
|
|
||||||
+ 'toml',
|
|
||||||
+ 'tsx',
|
|
||||||
+ 'typescript',
|
|
||||||
+ 'vim',
|
|
||||||
+ 'vimdoc',
|
|
||||||
+ 'yaml',
|
|
||||||
+ },
|
|
||||||
-- Autoinstall languages that are not installed
|
|
||||||
auto_install = true,
|
|
||||||
highlight = {
|
|
||||||
@@ -974,17 +1129,17 @@ require('lazy').setup({
|
|
||||||
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
|
|
||||||
--
|
|
||||||
-- require 'kickstart.plugins.debug',
|
|
||||||
- -- require 'kickstart.plugins.indent_line',
|
|
||||||
+ require 'kickstart.plugins.indent_line',
|
|
||||||
-- require 'kickstart.plugins.lint',
|
|
||||||
-- require 'kickstart.plugins.autopairs',
|
|
||||||
-- require 'kickstart.plugins.neo-tree',
|
|
||||||
- -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
|
|
||||||
+ require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
|
|
||||||
|
|
||||||
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
|
||||||
-- This is the easiest way to modularize your config.
|
|
||||||
--
|
|
||||||
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
|
||||||
- -- { import = 'custom.plugins' },
|
|
||||||
+ { import = 'custom.plugins' },
|
|
||||||
--
|
|
||||||
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
|
||||||
-- Or use telescope!
|
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
"extends": [
|
"extends": [
|
||||||
"config:recommended",
|
"config:base"
|
||||||
"schedule:earlyMondays"
|
]
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
@@ -1,99 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# This file echoes a bunch of 24-bit color codes
|
|
||||||
# to the terminal to demonstrate its functionality.
|
|
||||||
# The foreground escape sequence is ^[38;2;<r>;<g>;<b>m
|
|
||||||
# The background escape sequence is ^[48;2;<r>;<g>;<b>m
|
|
||||||
# <r> <g> <b> range from 0 to 255 inclusive.
|
|
||||||
# The escape sequence ^[0m returns output to default
|
|
||||||
|
|
||||||
setBackgroundColor()
|
|
||||||
{
|
|
||||||
echo -en "\x1b[48;2;$1;$2;$3""m"
|
|
||||||
}
|
|
||||||
|
|
||||||
resetOutput()
|
|
||||||
{
|
|
||||||
echo -en "\x1b[0m\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Gives a color $1/255 % along HSV
|
|
||||||
# Who knows what happens when $1 is outside 0-255
|
|
||||||
# Echoes "$red $green $blue" where
|
|
||||||
# $red $green and $blue are integers
|
|
||||||
# ranging between 0 and 255 inclusive
|
|
||||||
rainbowColor()
|
|
||||||
{
|
|
||||||
let h=$1/43
|
|
||||||
let f=$1-43*$h
|
|
||||||
let t=$f*255/43
|
|
||||||
let q=255-t
|
|
||||||
|
|
||||||
if [ $h -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "255 $t 0"
|
|
||||||
elif [ $h -eq 1 ]
|
|
||||||
then
|
|
||||||
echo "$q 255 0"
|
|
||||||
elif [ $h -eq 2 ]
|
|
||||||
then
|
|
||||||
echo "0 255 $t"
|
|
||||||
elif [ $h -eq 3 ]
|
|
||||||
then
|
|
||||||
echo "0 $q 255"
|
|
||||||
elif [ $h -eq 4 ]
|
|
||||||
then
|
|
||||||
echo "$t 0 255"
|
|
||||||
elif [ $h -eq 5 ]
|
|
||||||
then
|
|
||||||
echo "255 0 $q"
|
|
||||||
else
|
|
||||||
# execution should never reach here
|
|
||||||
echo "0 0 0"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
for i in `seq 0 127`; do
|
|
||||||
setBackgroundColor $i 0 0
|
|
||||||
echo -en " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
for i in `seq 255 128`; do
|
|
||||||
setBackgroundColor $i 0 0
|
|
||||||
echo -en " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
|
|
||||||
for i in `seq 0 127`; do
|
|
||||||
setBackgroundColor 0 $i 0
|
|
||||||
echo -n " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
for i in `seq 255 128`; do
|
|
||||||
setBackgroundColor 0 $i 0
|
|
||||||
echo -n " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
|
|
||||||
for i in `seq 0 127`; do
|
|
||||||
setBackgroundColor 0 0 $i
|
|
||||||
echo -n " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
for i in `seq 255 128`; do
|
|
||||||
setBackgroundColor 0 0 $i
|
|
||||||
echo -n " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
|
|
||||||
for i in `seq 0 127`; do
|
|
||||||
setBackgroundColor `rainbowColor $i`
|
|
||||||
echo -n " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
for i in `seq 255 128`; do
|
|
||||||
setBackgroundColor `rainbowColor $i`
|
|
||||||
echo -n " "
|
|
||||||
done
|
|
||||||
resetOutput
|
|
||||||
|
|
@@ -1,32 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# NOTE: (jpd) create auto-completion
|
|
||||||
commands=(
|
|
||||||
"ctlptl"
|
|
||||||
"eksctl"
|
|
||||||
"exercism"
|
|
||||||
"helm"
|
|
||||||
"k3d"
|
|
||||||
"k9s"
|
|
||||||
"kind"
|
|
||||||
"kubectl"
|
|
||||||
"lefthook"
|
|
||||||
"mise"
|
|
||||||
"supabase"
|
|
||||||
)
|
|
||||||
echo "create completion for ${commands[@]}"
|
|
||||||
for cmd in ${commands[@]}; do
|
|
||||||
completion_dir=${XDG_CONFIG_HOME}/fish/completions/${cmd}.fish
|
|
||||||
if [ ! -f ${completion_dir} ]; then
|
|
||||||
echo "setup ${cmd} completion"
|
|
||||||
$(echo ${cmd} completion fish) > ${completion_dir}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ! -f ${XDG_CONFIG_HOME}/fish/completions/comtrya.fish ]; then
|
|
||||||
echo "setup comtrya completion"
|
|
||||||
$(echo comtrya gen-completions fish) > ${XDG_CONFIG_HOME}/fish/completions/comtrya.fish
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec "$@"
|
|
Reference in New Issue
Block a user