From 1729859808b5b0ffcc13f01b6b80ac6d800e0e06 Mon Sep 17 00:00:00 2001 From: Some Watson Date: Sun, 26 Oct 2025 10:52:50 +0000 Subject: [PATCH 1/5] Create mod to include bat in code-server This mod adds bat to code-server, to be installed/updated during container start. Bat is a cat clone with syntax highlighting and Git integration. It also includes bat-extras, ripgrep, and aliases for bat in bash and zsh. --- .github/workflows/BuildImage.yml | 9 +-- Dockerfile | 4 +- Dockerfile.complex | 33 ----------- README.md | 26 +++------ .../dependencies.d/init-mods | 0 .../init-mod-code-server-bat-add-package/run | 27 +++++++++ .../type | 0 .../init-mod-code-server-bat-add-package/up | 1 + .../dependencies.d/init-mods-package-install | 0 .../init-mod-code-server-bat-install/run | 57 +++++++++++++++++++ .../type | 0 .../init-mod-code-server-bat-install/up | 1 + .../run | 30 ---------- .../init-mod-imagename-modname-add-package/up | 1 - .../init-mod-imagename-modname-install/run | 8 --- .../init-mod-imagename-modname-install/up | 1 - ...stall => init-mod-code-server-bat-install} | 0 ...e => init-mod-code-server-bat-add-package} | 0 .../s6-rc.d/svc-mod-imagename-modname/run | 7 --- .../s6-rc.d/svc-mod-imagename-modname/type | 1 - .../init-mod-code-server-bat-add-package} | 0 ...ckage => init-mod-code-server-bat-install} | 0 .../init-mod-imagename-modname-install | 0 .../user/contents.d/svc-mod-imagename-modname | 0 24 files changed, 102 insertions(+), 104 deletions(-) delete mode 100644 Dockerfile.complex rename root/etc/s6-overlay/s6-rc.d/{init-mod-imagename-modname-add-package => init-mod-code-server-bat-add-package}/dependencies.d/init-mods (100%) create mode 100755 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run rename root/etc/s6-overlay/s6-rc.d/{init-mod-imagename-modname-add-package => init-mod-code-server-bat-add-package}/type (100%) create mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up rename root/etc/s6-overlay/s6-rc.d/{init-mod-imagename-modname-install => init-mod-code-server-bat-install}/dependencies.d/init-mods-package-install (100%) create mode 100755 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run rename root/etc/s6-overlay/s6-rc.d/{init-mod-imagename-modname-install => init-mod-code-server-bat-install}/type (100%) create mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up delete mode 100755 root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up delete mode 100755 root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up rename root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/{init-mod-imagename-modname-install => init-mod-code-server-bat-install} (100%) rename root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/{init-mod-imagename-modname-add-package => init-mod-code-server-bat-add-package} (100%) delete mode 100755 root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run delete mode 100644 root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type rename root/etc/s6-overlay/s6-rc.d/{svc-mod-imagename-modname/dependencies.d/init-services => user/contents.d/init-mod-code-server-bat-add-package} (100%) rename root/etc/s6-overlay/s6-rc.d/user/contents.d/{init-mod-imagename-modname-add-package => init-mod-code-server-bat-install} (100%) delete mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-install delete mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-mod-imagename-modname diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index 4715e563..7319e2d9 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -10,10 +10,11 @@ on: required: false env: - GITHUB_REPO: "linuxserver/docker-mods" #don't modify - ENDPOINT: "linuxserver/mods" #don't modify - BASEIMAGE: "replace_baseimage" #replace - MODNAME: "replace_modname" #replace + GITHUB_REPO: "somewatson/docker-mods" #don't modify -- modified + ENDPOINT: "somewatson/mods" #don't modify -- modified + BRANCH: "code-server-bat" #added + BASEIMAGE: "code-server" #replaced + MODNAME: "bat" #replaced MOD_VERSION: ${{ inputs.mod_version }} #don't modify MULTI_ARCH: "true" #set to false if not needed diff --git a/Dockerfile b/Dockerfile index aa661704..a356d0c7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM scratch -LABEL maintainer="username" +LABEL maintainer="somewatson" # copy local files -COPY root/ / +COPY root/ / \ No newline at end of file diff --git a/Dockerfile.complex b/Dockerfile.complex deleted file mode 100644 index 3ed07b0d..00000000 --- a/Dockerfile.complex +++ /dev/null @@ -1,33 +0,0 @@ -# syntax=docker/dockerfile:1 - -## Buildstage ## -FROM ghcr.io/linuxserver/baseimage-alpine:3.20 AS buildstage - -RUN \ - echo "**** install packages ****" && \ - apk add --no-cache \ - curl && \ - echo "**** grab rclone ****" && \ - mkdir -p /root-layer && \ - if [ $(uname -m) = "x86_64" ]; then \ - echo "Downloading x86_64 tarball" && \ - curl -o \ - /root-layer/rclone.deb -L \ - "https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-amd64.deb"; \ - elif [ $(uname -m) = "aarch64" ]; then \ - echo "Downloading aarch64 tarball" && \ - curl -o \ - /root-layer/rclone.deb -L \ - "https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-arm64.deb"; \ - fi && \ - -# copy local files -COPY root/ /root-layer/ - -## Single layer deployed image ## -FROM scratch - -LABEL maintainer="username" - -# Add files from buildstage -COPY --from=buildstage /root-layer/ / diff --git a/README.md b/README.md index 17006683..1358f4a5 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,17 @@ -# Rsync - Docker mod for openssh-server +# Bat - Docker mod for code-server -This mod adds rsync to openssh-server, to be installed/updated during container start. +This mod adds [bat](https://github.com/sharkdp/bat) to code-server, to be installed/updated during container start. -In openssh-server docker arguments, set an environment variable `DOCKER_MODS=linuxserver/mods:openssh-server-rsync` +Bat is a cat(1) clone with syntax highlighting and Git integration. -If adding multiple mods, enter them in an array separated by `|`, such as `DOCKER_MODS=linuxserver/mods:openssh-server-rsync|linuxserver/mods:openssh-server-mod2` +In code-server docker arguments, set an environment variable `DOCKER_MODS=somewatson/mods:code-server-bat` -# Mod creation instructions +If adding multiple mods, enter them in an array separated by `|`, such as `DOCKER_MODS=somewatson/mods:code-server-bat|linuxserver/mods:openssh-server-mod2` -* Fork the repo, create a new branch based on the branch `template`. -* Edit the `Dockerfile` for the mod. `Dockerfile.complex` is only an example and included for reference; it should be deleted when done. -* Inspect the `root` folder contents. Edit, add and remove as necessary. -* After all init scripts and services are created, run `find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print -exec chmod +x {} +` to fix permissions. -* Edit this readme with pertinent info, delete these instructions. -* Finally edit the `.github/workflows/BuildImage.yml`. Customize the vars for `BASEIMAGE` and `MODNAME`. Set the versioning logic and `MULTI_ARCH` if needed. -* Ask the team to create a new branch named `-`. Baseimage should be the name of the image the mod will be applied to. The new branch will be based on the `template` branch. -* Submit PR against the branch created by the team. +### Bat-extras and Ripgrep +This mod also includes [bat-extras](https://github.com/eth-p/bat-extras) which has a dependency of [ripgrep](https://github.com/BurntSushi/ripgrep). Ripgrep has also been included because it is a requirment of bat-extras. -## Tips and tricks +### Aliases -* Some images have helpers built in, these images are currently: - * [Openvscode-server](https://github.com/linuxserver/docker-openvscode-server/pull/10/files) - * [Code-server](https://github.com/linuxserver/docker-code-server/pull/95) +This mod includes aliases for `bat` in `bash` and `zsh`. Under Ubuntu `bat` gets installed as `batcat` to avoid a name collision. So, for convenience, an alias to set `bat="batcat"` is included for both `bash` and `zsh`. \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/dependencies.d/init-mods b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/dependencies.d/init-mods similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/dependencies.d/init-mods rename to root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/dependencies.d/init-mods diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run new file mode 100755 index 00000000..19e5b19f --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run @@ -0,0 +1,27 @@ +#!/usr/bin/with-contenv bash + +# This is the init file used for adding os or pip packages to install lists. +# It takes advantage of the built-in init-mods-package-install init script that comes with the baseimages. +# If using this, we need to make sure we set this init as a dependency of init-mods-package-install so this one runs first +#!/usr/bin/with-contenv bash + +if ! dpkg -s ripgrep >/dev/null 2>&1; then + echo "**** Adding ripgrep to package install list ****" + echo "ripgrep" >> /mod-repo-packages-to-install.list +else + echo "**** ripgrep already installed, skipping ****" +fi + +if ! dpkg -s bat >/dev/null 2>&1; then + echo "**** Adding bat to package install list ****" + echo "bat" >> /mod-repo-packages-to-install.list +else + echo "**** bat already installed, skipping ****" +fi + +if ! dpkg -s git >/dev/null 2>&1; then + echo "**** Adding git to package install list ****" + echo "git" >> /mod-repo-packages-to-install.list +else + echo "**** git already installed, skipping ****" +fi \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/type b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/type similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/type rename to root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/type diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up new file mode 100644 index 00000000..ed17eed8 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/dependencies.d/init-mods-package-install b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/dependencies.d/init-mods-package-install similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/dependencies.d/init-mods-package-install rename to root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/dependencies.d/init-mods-package-install diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run new file mode 100755 index 00000000..c9d2274d --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run @@ -0,0 +1,57 @@ +#!/usr/bin/with-contenv bash + +# This is an install script that is designed to run after init-mods-package-install +# so it can take advantage of packages installed +# init-mods-end depends on this script so that later init and services wait until this script exits + +if ! command -v zsh >/dev/null 2>&1; then + echo "**** zsh not installed, skipping alias setup ****" +else + if [ -f ~/.zshrc ]; then + if ! grep -q 'alias bat="batcat"' ~/.zshrc; then + echo 'Adding alias to zsh for bat' + echo 'alias bat="batcat"' >> ~/.zshrc + else + echo 'Alias already exists in zsh, skipping' + fi + else + echo '~/.zshrc not found, creating one with the alias' + echo 'alias bat="batcat"' > ~/.zshrc + fi +fi + +if ! command -v bash >/dev/null 2>&1; then + echo "**** bash not installed, skipping alias setup ****" +else + if [ -f ~/.bash_profile ]; then + if ! grep -q 'alias bat="batcat"' ~/.bash_profile; then + echo 'Adding alias to ~/.bash_profile for bat' + echo 'alias bat="batcat"' >> ~/.bash_profile + else + echo 'Alias already exists in ~/.bash_profile, skipping' + fi + elif [ -f ~/.bashrc ]; then + if ! grep -q 'alias bat="batcat"' ~/.bashrc; then + echo 'Adding alias to ~/.bashrc for bat' + echo 'alias bat="batcat"' >> ~/.bashrc + else + echo 'Alias already exists in ~/.bashrc, skipping' + fi + else + echo '~/.bash_profile or ~/.bashrc not found, creating one with the alias' + echo 'alias bat="batcat"' > ~/.bash_profile + fi +fi + +if [ -d ~/.bat-extras ]; then + echo 'Bat-extras already installed, skipping' +else + echo 'Installing bat-extras' + git clone https://github.com/eth-p/bat-extras.git ~/.bat-extras + cd ~/.bat-extras/src + chmod +x ~/.bat-extras/src/*.sh + ln -s ~/.bat-extras/src/*.sh /usr/local/bin +fi + +lsiown -R abc:abc \ + /config/.bat-extras diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/type b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/type similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/type rename to root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/type diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up new file mode 100644 index 00000000..7b702346 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run deleted file mode 100755 index 063b5701..00000000 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/with-contenv bash - -# This is the init file used for adding os or pip packages to install lists. -# It takes advantage of the built-in init-mods-package-install init script that comes with the baseimages. -# If using this, we need to make sure we set this init as a dependency of init-mods-package-install so this one runs first - -if ! command -v apprise; then - echo "**** Adding apprise and its deps to package install lists ****" - echo "apprise" >> /mod-pip-packages-to-install.list - ## Ubuntu - if [ -f /usr/bin/apt ]; then - echo "\ - python3 \ - python3-pip \ - runc" >> /mod-repo-packages-to-install.list - fi - # Alpine - if [ -f /sbin/apk ]; then - echo "\ - cargo \ - libffi-dev \ - openssl-dev \ - python3 \ - python3-dev \ - python3 \ - py3-pip" >> /mod-repo-packages-to-install.list - fi -else - echo "**** apprise already installed, skipping ****" -fi diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up deleted file mode 100644 index 6414139f..00000000 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run deleted file mode 100755 index 59a4b77f..00000000 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/with-contenv bash - -# This is an install script that is designed to run after init-mods-package-install -# so it can take advantage of packages installed -# init-mods-end depends on this script so that later init and services wait until this script exits - -echo "**** Setting up apprise ****" -apprise blah blah diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up deleted file mode 100644 index 03d298d2..00000000 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-imagename-modname-install b/root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-code-server-bat-install similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-imagename-modname-install rename to root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-code-server-bat-install diff --git a/root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/init-mod-imagename-modname-add-package b/root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/init-mod-code-server-bat-add-package similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/init-mod-imagename-modname-add-package rename to root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/init-mod-code-server-bat-add-package diff --git a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run deleted file mode 100755 index 02ffe39a..00000000 --- a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/with-contenv bash - -# This is an example service that would run for the mod -# It depends on init-services, the baseimage hook for start of all longrun services - -exec \ - s6-setuidgid abc run my app diff --git a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type deleted file mode 100644 index 1780f9f4..00000000 --- a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type +++ /dev/null @@ -1 +0,0 @@ -longrun \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/dependencies.d/init-services b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-bat-add-package similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/dependencies.d/init-services rename to root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-bat-add-package diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-add-package b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-bat-install similarity index 100% rename from root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-add-package rename to root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-bat-install diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-install b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-install deleted file mode 100644 index e69de29b..00000000 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-mod-imagename-modname b/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-mod-imagename-modname deleted file mode 100644 index e69de29b..00000000 From 5662ddda7c664db6ae2f5f514cfa0caab0f233d6 Mon Sep 17 00:00:00 2001 From: Some Watson Date: Mon, 27 Oct 2025 11:14:32 +0000 Subject: [PATCH 2/5] Address comments - Make sure that linuxserver is the endpoint - Restore BuildImage.yml env vars that are labeled "don't modify" to the original values --- .github/workflows/BuildImage.yml | 4 ++-- Dockerfile | 2 +- README.md | 4 ++-- .../s6-rc.d/init-mod-code-server-bat-add-package/run | 2 +- .../s6-rc.d/init-mod-code-server-bat-add-package/up | 2 +- .../s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index 7319e2d9..058bd34d 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -10,8 +10,8 @@ on: required: false env: - GITHUB_REPO: "somewatson/docker-mods" #don't modify -- modified - ENDPOINT: "somewatson/mods" #don't modify -- modified + GITHUB_REPO: "linuxserver/docker-mods" #don't modify + ENDPOINT: "linuxserver/mods" #don't modify BRANCH: "code-server-bat" #added BASEIMAGE: "code-server" #replaced MODNAME: "bat" #replaced diff --git a/Dockerfile b/Dockerfile index a356d0c7..87a23f51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,4 +5,4 @@ FROM scratch LABEL maintainer="somewatson" # copy local files -COPY root/ / \ No newline at end of file +COPY root/ / diff --git a/README.md b/README.md index 1358f4a5..a9c83730 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ This mod adds [bat](https://github.com/sharkdp/bat) to code-server, to be instal Bat is a cat(1) clone with syntax highlighting and Git integration. -In code-server docker arguments, set an environment variable `DOCKER_MODS=somewatson/mods:code-server-bat` +In code-server docker arguments, set an environment variable `DOCKER_MODS=linuxserver/mods:code-server-bat` -If adding multiple mods, enter them in an array separated by `|`, such as `DOCKER_MODS=somewatson/mods:code-server-bat|linuxserver/mods:openssh-server-mod2` +If adding multiple mods, enter them in an array separated by `|`, such as `DOCKER_MODS=linuxserver/mods:code-server-bat|linuxserver/mods:openssh-server-mod2` ### Bat-extras and Ripgrep diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run index 19e5b19f..ece9ec6e 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run @@ -24,4 +24,4 @@ if ! dpkg -s git >/dev/null 2>&1; then echo "git" >> /mod-repo-packages-to-install.list else echo "**** git already installed, skipping ****" -fi \ No newline at end of file +fi diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up index ed17eed8..16174e73 100644 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/up @@ -1 +1 @@ -/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run \ No newline at end of file +/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up index 7b702346..5d7e63f7 100644 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/up @@ -1 +1 @@ -/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run \ No newline at end of file +/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run From 37838d616b5142efdbc29442fc5beeb3e62bfcab Mon Sep 17 00:00:00 2001 From: Some Watson Date: Mon, 27 Oct 2025 11:29:21 +0000 Subject: [PATCH 3/5] Symlink bat-extras every time the install step is run Separate the git clone step from the installation step It doesn't need to be cloned every time, but it should be installed every time --- .../s6-rc.d/init-mod-code-server-bat-install/run | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run index c9d2274d..16551292 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run @@ -44,14 +44,17 @@ else fi if [ -d ~/.bat-extras ]; then - echo 'Bat-extras already installed, skipping' + echo 'Bat-extras already cloned, skipping' else - echo 'Installing bat-extras' + echo 'Cloning bat-extras repo' git clone https://github.com/eth-p/bat-extras.git ~/.bat-extras - cd ~/.bat-extras/src - chmod +x ~/.bat-extras/src/*.sh - ln -s ~/.bat-extras/src/*.sh /usr/local/bin fi +echo 'Installing bat-extras' +cd ~/.bat-extras/src +chmod +x ~/.bat-extras/src/*.sh +ln -s ~/.bat-extras/src/*.sh /usr/local/bin + +echo 'Setting permissions for bat-extras' lsiown -R abc:abc \ /config/.bat-extras From 8b5f4786c76e12ed795904a4c515f62de1160b70 Mon Sep 17 00:00:00 2001 From: Some Watson Date: Mon, 27 Oct 2025 11:35:05 +0000 Subject: [PATCH 4/5] Remove BRANCH from BuildImage.yml Set MULTI_ARCH to false, since it's not needed --- .github/workflows/BuildImage.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index 058bd34d..662a3286 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -12,11 +12,10 @@ on: env: GITHUB_REPO: "linuxserver/docker-mods" #don't modify ENDPOINT: "linuxserver/mods" #don't modify - BRANCH: "code-server-bat" #added BASEIMAGE: "code-server" #replaced MODNAME: "bat" #replaced MOD_VERSION: ${{ inputs.mod_version }} #don't modify - MULTI_ARCH: "true" #set to false if not needed + MULTI_ARCH: "false" #set to false if not needed jobs: set-vars: From 190ffd387bd8889dc9467817c1b4009acc99e3bd Mon Sep 17 00:00:00 2001 From: Some Watson Date: Wed, 29 Oct 2025 12:02:23 +0000 Subject: [PATCH 5/5] Update install - Use absolute paths - Update bat-extras if it has already been cloned - Fix symlink to not error if it already exists Chose to force the symlink because there might be new symlinks after a pull So I want an update to behave the same every time, which is to install all the scripts --- .../init-mod-code-server-bat-install/run | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run index 16551292..3faa0346 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run @@ -7,54 +7,54 @@ if ! command -v zsh >/dev/null 2>&1; then echo "**** zsh not installed, skipping alias setup ****" else - if [ -f ~/.zshrc ]; then - if ! grep -q 'alias bat="batcat"' ~/.zshrc; then + if [ -f /config/.zshrc ]; then + if ! grep -q 'alias bat="batcat"' /config/.zshrc; then echo 'Adding alias to zsh for bat' - echo 'alias bat="batcat"' >> ~/.zshrc + echo 'alias bat="batcat"' >> /config/.zshrc else echo 'Alias already exists in zsh, skipping' fi else - echo '~/.zshrc not found, creating one with the alias' - echo 'alias bat="batcat"' > ~/.zshrc + echo '/config/.zshrc not found, creating one with the alias' + echo 'alias bat="batcat"' > /config/.zshrc fi fi if ! command -v bash >/dev/null 2>&1; then echo "**** bash not installed, skipping alias setup ****" else - if [ -f ~/.bash_profile ]; then - if ! grep -q 'alias bat="batcat"' ~/.bash_profile; then - echo 'Adding alias to ~/.bash_profile for bat' - echo 'alias bat="batcat"' >> ~/.bash_profile + if [ -f /config/.bash_profile ]; then + if ! grep -q 'alias bat="batcat"' /config/.bash_profile; then + echo 'Adding alias to /config/.bash_profile for bat' + echo 'alias bat="batcat"' >> /config/.bash_profile else - echo 'Alias already exists in ~/.bash_profile, skipping' + echo 'Alias already exists in /config/.bash_profile, skipping' fi - elif [ -f ~/.bashrc ]; then - if ! grep -q 'alias bat="batcat"' ~/.bashrc; then - echo 'Adding alias to ~/.bashrc for bat' - echo 'alias bat="batcat"' >> ~/.bashrc + elif [ -f /config/.bashrc ]; then + if ! grep -q 'alias bat="batcat"' /config/.bashrc; then + echo 'Adding alias to /config/.bashrc for bat' + echo 'alias bat="batcat"' >> /config/.bashrc else - echo 'Alias already exists in ~/.bashrc, skipping' + echo 'Alias already exists in /config/.bashrc, skipping' fi else - echo '~/.bash_profile or ~/.bashrc not found, creating one with the alias' - echo 'alias bat="batcat"' > ~/.bash_profile + echo '/config/.bash_profile or /config/.bashrc not found, creating one with the alias' + echo 'alias bat="batcat"' > /config/.bash_profile fi fi -if [ -d ~/.bat-extras ]; then - echo 'Bat-extras already cloned, skipping' +if [ -d /config/.bat-extras ]; then + echo 'Bat-extras already cloned, updating' + git -C /config/.bat-extras pull else echo 'Cloning bat-extras repo' - git clone https://github.com/eth-p/bat-extras.git ~/.bat-extras + git clone https://github.com/eth-p/bat-extras.git /config/.bat-extras fi echo 'Installing bat-extras' -cd ~/.bat-extras/src -chmod +x ~/.bat-extras/src/*.sh -ln -s ~/.bat-extras/src/*.sh /usr/local/bin +ln -sf /config/.bat-extras/src/*.sh /usr/local/bin echo 'Setting permissions for bat-extras' +chmod +x /config/.bat-extras/src/*.sh lsiown -R abc:abc \ /config/.bat-extras