Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/BuildImage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ on:
env:
GITHUB_REPO: "linuxserver/docker-mods" #don't modify
ENDPOINT: "linuxserver/mods" #don't modify
BASEIMAGE: "replace_baseimage" #replace
MODNAME: "replace_modname" #replace
BRANCH: "code-server-bat" #added
Comment thread
aptalca marked this conversation as resolved.
Outdated
BASEIMAGE: "code-server" #replaced
MODNAME: "bat" #replaced
MOD_VERSION: ${{ inputs.mod_version }} #don't modify
MULTI_ARCH: "true" #set to false if not needed

Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

FROM scratch

LABEL maintainer="username"
LABEL maintainer="somewatson"

# copy local files
COPY root/ /
33 changes: 0 additions & 33 deletions Dockerfile.complex

This file was deleted.

26 changes: 9 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -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=linuxserver/mods:code-server-bat`

# Mod creation instructions
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`

* 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 `<baseimagename>-<modname>`. 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`.
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-add-package/run
57 changes: 57 additions & 0 deletions root/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run
Original file line number Diff line number Diff line change
@@ -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
Comment thread
aptalca marked this conversation as resolved.
Outdated
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
Comment thread
aptalca marked this conversation as resolved.
Outdated
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
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-mod-code-server-bat-install/run

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

7 changes: 0 additions & 7 deletions root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run

This file was deleted.

1 change: 0 additions & 1 deletion root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type

This file was deleted.

Empty file.