From 19fbdc683462f6fd53e8cae41b2912088abd0c2d Mon Sep 17 00:00:00 2001 From: Alexander Navarro Date: Wed, 6 Nov 2024 19:19:38 -0300 Subject: [PATCH 1/7] feat: update devbox deploy config --- boxes/devbox/distrobox.ini | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/boxes/devbox/distrobox.ini b/boxes/devbox/distrobox.ini index 8e37068..cef552e 100644 --- a/boxes/devbox/distrobox.ini +++ b/boxes/devbox/distrobox.ini @@ -1,5 +1,5 @@ [devbox] -image=devbox:latest +image=git.alecodes.page/alecodes/devbox:latest replace=true pull=false @@ -8,6 +8,7 @@ unshare_all=true root=false start_now=true -additional_packages="git neovim" +additional_packages="" home="${HOME}/chroots/devbox" +volume="${HOME}/.ssh:${HOME}/chroots/devbox/.ssh" From 48d623b9892038eb06bcd9240a5c461c1187c85b Mon Sep 17 00:00:00 2001 From: Alexander Navarro Date: Thu, 7 Nov 2024 22:09:33 +0000 Subject: [PATCH 2/7] feat: update devbox config --- boxes/devbox/Dockerfile | 1 + boxes/devbox/distrobox.ini | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/boxes/devbox/Dockerfile b/boxes/devbox/Dockerfile index b964e6d..acd7d32 100644 --- a/boxes/devbox/Dockerfile +++ b/boxes/devbox/Dockerfile @@ -16,6 +16,7 @@ RUN apk update && apk upgrade && \ build-base \ python3 \ py3-pip \ + yazi \ openssh # Set environment variables diff --git a/boxes/devbox/distrobox.ini b/boxes/devbox/distrobox.ini index cef552e..62977d8 100644 --- a/boxes/devbox/distrobox.ini +++ b/boxes/devbox/distrobox.ini @@ -4,7 +4,6 @@ image=git.alecodes.page/alecodes/devbox:latest replace=true pull=false init=true -unshare_all=true root=false start_now=true From 690d9d3f6b3a8e428550576577fabf20b836222d Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 8 Nov 2024 10:04:14 -0300 Subject: [PATCH 3/7] feat: add apk and cargo packages to devbox --- boxes/devbox/Dockerfile | 63 ++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/boxes/devbox/Dockerfile b/boxes/devbox/Dockerfile index acd7d32..d151986 100644 --- a/boxes/devbox/Dockerfile +++ b/boxes/devbox/Dockerfile @@ -1,23 +1,39 @@ +FROM rust:latest AS rust-builder + +# setup cargo packages, prefer to use apk packages +# to reduce build time and space +RUN --mount=type=cache,target=/app/target/ \ + --mount=type=cache,target=/usr/local/cargo/git/db \ + --mount=type=cache,target=/usr/local/cargo/registry/ \ + cargo install --locked \ + cocogitto \ + yazi-fm yazi-cli \ + tealdeer + FROM quay.io/toolbx-images/alpine-toolbox:edge -# Update system and install packages -RUN apk update && apk upgrade && \ - apk add --no-cache \ - neovim \ - git \ - lazygit \ - zsh \ +# Setup alpine packages +RUN --mount=type=cache,target=/var/cache/apk/ \ + apk update && apk upgrade && apk add \ + build-base \ curl \ - wget \ - ripgrep \ fd \ fzf \ - alpine-sdk \ - build-base \ - python3 \ - py3-pip \ - yazi \ - openssh + git \ + lazygit \ + neovim \ + nushell \ + openssh \ + ripgrep \ + sd \ + starship \ + tmux \ + tree-sitter-cli \ + zoxide \ + zsh + +# Import cargo packages +COPY --from=rust-builder /usr/local/cargo/bin/* /usr/local/bin/ # Set environment variables ENV EDITOR=nvim \ @@ -27,16 +43,11 @@ ENV EDITOR=nvim \ LC_ALL=en_US.UTF-8 \ SHELL=/bin/zsh -# Install and initialize chezmoi -RUN sh -c "$(curl -fsLS get.chezmoi.io)" -- -b /usr/local/bin && \ - mkdir -p ~/.local/share/chezmoi - -RUN chsh -s /bin/zsh - -RUN mkdir -p /workspace - -WORKDIR /workspace +# Basic setup +RUN \ + # chsh -s /usr/bin/nu ## TODO: first create a configuration for nu + chsh -s /bin/zsh # Build commands: -# Docker: docker build -t dev-env . -# Podman: podman build -t dev-env . +# Docker: docker build -t devbox . +# Podman: podman build -t devbox . From e05f690b616246c20b42e1b2a2134bb790b0e1ec Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 8 Nov 2024 11:52:30 -0300 Subject: [PATCH 4/7] fix: change cargo packages installation try to download release biniaries instead of compiling them with the help of carg-binstall --- boxes/devbox/Dockerfile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/boxes/devbox/Dockerfile b/boxes/devbox/Dockerfile index d151986..ed43e31 100644 --- a/boxes/devbox/Dockerfile +++ b/boxes/devbox/Dockerfile @@ -1,11 +1,15 @@ -FROM rust:latest AS rust-builder +FROM rust:alpine AS rust-builder # setup cargo packages, prefer to use apk packages # to reduce build time and space -RUN --mount=type=cache,target=/app/target/ \ +RUN \ + --mount=type=cache,target=/var/cache/apk/ \ + --mount=type=cache,target=/app/target/ \ --mount=type=cache,target=/usr/local/cargo/git/db \ --mount=type=cache,target=/usr/local/cargo/registry/ \ - cargo install --locked \ + apk add bash curl build-base openssl-dev \ + && curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash \ + && cargo binstall --no-confirm \ cocogitto \ yazi-fm yazi-cli \ tealdeer From 6aaf6e7842f6a6bd4bc768d0b69ba89bc6bba86c Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 8 Nov 2024 15:00:03 -0300 Subject: [PATCH 5/7] feat: change devbox to void linux --- .forgejo/workflows/publish.yaml | 2 +- boxes/devbox/Dockerfile | 35 ++++++++++++++++----------------- boxes/devbox/distrobox.ini | 1 + 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.forgejo/workflows/publish.yaml b/.forgejo/workflows/publish.yaml index 5782bae..e1eb45a 100644 --- a/.forgejo/workflows/publish.yaml +++ b/.forgejo/workflows/publish.yaml @@ -65,7 +65,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64 push: true context: "{{defaultContext}}:${{ matrix.box.path }}" tags: | diff --git a/boxes/devbox/Dockerfile b/boxes/devbox/Dockerfile index ed43e31..d467dc0 100644 --- a/boxes/devbox/Dockerfile +++ b/boxes/devbox/Dockerfile @@ -1,25 +1,20 @@ -FROM rust:alpine AS rust-builder +FROM rust:latest AS rust-builder # setup cargo packages, prefer to use apk packages # to reduce build time and space -RUN \ - --mount=type=cache,target=/var/cache/apk/ \ - --mount=type=cache,target=/app/target/ \ +RUN --mount=type=cache,target=/app/target/ \ --mount=type=cache,target=/usr/local/cargo/git/db \ --mount=type=cache,target=/usr/local/cargo/registry/ \ - apk add bash curl build-base openssl-dev \ - && curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash \ - && cargo binstall --no-confirm \ + curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash \ + && cargo binstall --no-confirm \ + dotter + +FROM ghcr.io/void-linux/void-glibc-full:latest + +# Setup void packages +RUN --mount=type=cache,target=/var/cache/xbps/ \ + xbps-install -Syu \ cocogitto \ - yazi-fm yazi-cli \ - tealdeer - -FROM quay.io/toolbx-images/alpine-toolbox:edge - -# Setup alpine packages -RUN --mount=type=cache,target=/var/cache/apk/ \ - apk update && apk upgrade && apk add \ - build-base \ curl \ fd \ fzf \ @@ -27,12 +22,16 @@ RUN --mount=type=cache,target=/var/cache/apk/ \ lazygit \ neovim \ nushell \ - openssh \ ripgrep \ sd \ starship \ + tealdeer \ tmux \ - tree-sitter-cli \ + tree-sitter \ + void-repo-multilib \ + void-repo-multilib-nonfree \ + void-repo-nonfree \ + yazi \ zoxide \ zsh diff --git a/boxes/devbox/distrobox.ini b/boxes/devbox/distrobox.ini index 62977d8..2e2247a 100644 --- a/boxes/devbox/distrobox.ini +++ b/boxes/devbox/distrobox.ini @@ -8,6 +8,7 @@ root=false start_now=true additional_packages="" +additional_flags="--hostname devbox" home="${HOME}/chroots/devbox" volume="${HOME}/.ssh:${HOME}/chroots/devbox/.ssh" From 5eb1cb2618941d10c9ed779a0c72c2b4e987bd18 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 11 Nov 2024 15:20:09 -0300 Subject: [PATCH 6/7] feat: add dotfiles auto setup on box creation --- boxes/devbox/Dockerfile | 8 +++++++- boxes/devbox/distrobox.ini | 7 +++++-- boxes/devbox/scripts/fetch_dots | 28 ++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 boxes/devbox/scripts/fetch_dots diff --git a/boxes/devbox/Dockerfile b/boxes/devbox/Dockerfile index d467dc0..a332565 100644 --- a/boxes/devbox/Dockerfile +++ b/boxes/devbox/Dockerfile @@ -14,10 +14,13 @@ FROM ghcr.io/void-linux/void-glibc-full:latest # Setup void packages RUN --mount=type=cache,target=/var/cache/xbps/ \ xbps-install -Syu \ + bash \ + bat \ cocogitto \ curl \ fd \ fzf \ + gcc \ git \ lazygit \ neovim \ @@ -38,6 +41,8 @@ RUN --mount=type=cache,target=/var/cache/xbps/ \ # Import cargo packages COPY --from=rust-builder /usr/local/cargo/bin/* /usr/local/bin/ +COPY ./scripts/fetch_dots /usr/local/bin/fetch_dots + # Set environment variables ENV EDITOR=nvim \ VISUAL=nvim \ @@ -49,7 +54,8 @@ ENV EDITOR=nvim \ # Basic setup RUN \ # chsh -s /usr/bin/nu ## TODO: first create a configuration for nu - chsh -s /bin/zsh + chsh -s /usr/bin/zsh \ + && chmod +x /usr/local/bin/fetch_dots # Build commands: # Docker: docker build -t devbox . diff --git a/boxes/devbox/distrobox.ini b/boxes/devbox/distrobox.ini index 2e2247a..3c9069e 100644 --- a/boxes/devbox/distrobox.ini +++ b/boxes/devbox/distrobox.ini @@ -7,8 +7,11 @@ init=true root=false start_now=true +home="${HOME}/chroots/devbox" +volume="${HOME}/.ssh:${HOME}/chroots/devbox/.ssh" + additional_packages="" additional_flags="--hostname devbox" -home="${HOME}/chroots/devbox" -volume="${HOME}/.ssh:${HOME}/chroots/devbox/.ssh" +init_hooks=sudo -u aleidk sh -c "/usr/local/bin/fetch_dots" +init_hooks=rm /usr/local/bin/fetch_dots diff --git a/boxes/devbox/scripts/fetch_dots b/boxes/devbox/scripts/fetch_dots new file mode 100644 index 0000000..a4440df --- /dev/null +++ b/boxes/devbox/scripts/fetch_dots @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +set -e pipefail + +base_dir="$HOME/Repos/Private/" + +mkdir -p "$base_dir" + +cd "$base_dir" || exit + +if [ -d dots ]; then + echo "Dots already exists, updating..." + cd dots || exit + git pull + +else + git clone ssh://git@git.alecodes.page:24062/alecodes/dots.git + + cd dots || exit + + git checkout dotter-migration +fi + +echo "Fixing permissions..." +chown -R 1000:1000 "$base_dir" + +echo "Deploying dots..." +dotter deploy From e786036a4b4321872e61faa2ef539558d087e17d Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 12 Nov 2024 16:14:06 -0300 Subject: [PATCH 7/7] feat: update deploy configuration --- boxes/devbox/.justfile | 21 +++++++++++++++++++++ boxes/devbox/Dockerfile | 13 ++++++++----- boxes/devbox/distrobox.ini | 3 +-- boxes/devbox/scripts/fetch_dots | 2 +- boxes/devbox/scripts/setup_go | 10 ++++++++++ 5 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 boxes/devbox/.justfile create mode 100644 boxes/devbox/scripts/setup_go diff --git a/boxes/devbox/.justfile b/boxes/devbox/.justfile new file mode 100644 index 0000000..3d15b8b --- /dev/null +++ b/boxes/devbox/.justfile @@ -0,0 +1,21 @@ +clean := "false" +box_name := file_stem(invocation_directory()) + +unexport GOBIN +unexport GOPATH +unexport GOROOT + + +# Create a new box from current directory +[no-cd] +build box_name: + [[ "{{clean}}" == "true" ]] && sudo rm -rf ${HOME}/chroots/{{ box_name }} || true + + podman build -t {{box_name}}:latest . + + distrobox assemble create + +# Enter the box +enter box_name: + clear + @distrobox enter --clean-path --no-workdir {{box_name}} diff --git a/boxes/devbox/Dockerfile b/boxes/devbox/Dockerfile index a332565..aa7f5fb 100644 --- a/boxes/devbox/Dockerfile +++ b/boxes/devbox/Dockerfile @@ -14,17 +14,20 @@ FROM ghcr.io/void-linux/void-glibc-full:latest # Setup void packages RUN --mount=type=cache,target=/var/cache/xbps/ \ xbps-install -Syu \ + && xbps-install -Sy \ bash \ bat \ cocogitto \ curl \ + eza \ fd \ fzf \ gcc \ git \ + just \ lazygit \ neovim \ - nushell \ + nodejs \ ripgrep \ sd \ starship \ @@ -41,7 +44,7 @@ RUN --mount=type=cache,target=/var/cache/xbps/ \ # Import cargo packages COPY --from=rust-builder /usr/local/cargo/bin/* /usr/local/bin/ -COPY ./scripts/fetch_dots /usr/local/bin/fetch_dots +COPY ./scripts/* /usr/local/bin/ # Set environment variables ENV EDITOR=nvim \ @@ -49,13 +52,13 @@ ENV EDITOR=nvim \ TERM=xterm-256color \ LANG=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 \ - SHELL=/bin/zsh + SHELL=/usr/bin/zsh # Basic setup RUN \ - # chsh -s /usr/bin/nu ## TODO: first create a configuration for nu + # chsh -s /usr/bin/nu \ chsh -s /usr/bin/zsh \ - && chmod +x /usr/local/bin/fetch_dots + && chmod +x /usr/local/bin/* # Build commands: # Docker: docker build -t devbox . diff --git a/boxes/devbox/distrobox.ini b/boxes/devbox/distrobox.ini index 3c9069e..e459b93 100644 --- a/boxes/devbox/distrobox.ini +++ b/boxes/devbox/distrobox.ini @@ -13,5 +13,4 @@ volume="${HOME}/.ssh:${HOME}/chroots/devbox/.ssh" additional_packages="" additional_flags="--hostname devbox" -init_hooks=sudo -u aleidk sh -c "/usr/local/bin/fetch_dots" -init_hooks=rm /usr/local/bin/fetch_dots +init_hooks=if [ -e /usr/local/bin/fetch_dots ]; then sudo -u aleidk sh -c "/usr/local/bin/fetch_dots" && rm /usr/local/bin/fetch_dots; fi diff --git a/boxes/devbox/scripts/fetch_dots b/boxes/devbox/scripts/fetch_dots index a4440df..c802d5d 100644 --- a/boxes/devbox/scripts/fetch_dots +++ b/boxes/devbox/scripts/fetch_dots @@ -11,7 +11,7 @@ cd "$base_dir" || exit if [ -d dots ]; then echo "Dots already exists, updating..." cd dots || exit - git pull + git pull --rebase --autostash else git clone ssh://git@git.alecodes.page:24062/alecodes/dots.git diff --git a/boxes/devbox/scripts/setup_go b/boxes/devbox/scripts/setup_go new file mode 100644 index 0000000..c3ee02e --- /dev/null +++ b/boxes/devbox/scripts/setup_go @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -e pipefail + +sudo xbps-install -Sy go + +go install mvdan.cc/gofumpt@latest +go install -v github.com/incu6us/goimports-reviser/v3@latest +go install github.com/segmentio/golines@latest +go install golang.org/x/tools/gopls@latest