@@ -10,10 +10,12 @@ ARG MANALA_USER_ID="1000"
10
10
ARG MANALA_GROUP_ID="1000"
11
11
12
12
ARG GOSU_VERSION="1.17"
13
- ARG GOMPLATE_VERSION="4.1 .0"
14
- ARG DIRENV_VERSION="2.34 .0"
13
+ ARG GOMPLATE_VERSION="4.2 .0"
14
+ ARG DIRENV_VERSION="2.35 .0"
15
15
ARG JQ_VERSION="1.7.1"
16
- ARG YQ_VERSION="4.44.3"
16
+ ARG YQ_VERSION="4.44.6"
17
+ ARG STARSHIP_VERSION="1.21.1"
18
+ ARG FZF_VERSION="0.56.3"
17
19
18
20
# The 'container' environment variable tells systemd that it's running inside a
19
21
# Docker container environment.
@@ -23,13 +25,15 @@ ENV container="docker"
23
25
# Default locale
24
26
ENV LANG="C.UTF-8"
25
27
28
+ # Starship
29
+ ENV STARSHIP_CONFIG=/etc/starship/starship.toml
30
+
26
31
SHELL ["/bin/bash" , "-o" , "pipefail" , "-c" ]
27
32
28
33
RUN \
29
34
apt-get --quiet update \
30
35
&& apt-get --quiet --yes --purge --autoremove upgrade \
31
36
&& apt-get --quiet --yes --no-install-recommends --verbose-versions install \
32
- bash-completion \
33
37
bzip2 \
34
38
ca-certificates \
35
39
curl \
43
47
socat \
44
48
sudo \
45
49
vim \
50
+ zsh \
46
51
# User
47
52
&& addgroup --gid ${MANALA_GROUP_ID} lazy \
48
- && adduser --home /home/lazy --shell /bin/bash --uid ${MANALA_USER_ID} --gecos lazy --ingroup lazy --disabled-password lazy \
53
+ && adduser --home /home/lazy --shell /bin/zsh --uid ${MANALA_USER_ID} --gecos lazy --ingroup lazy --disabled-password lazy \
49
54
&& install --verbose --mode 0755 --group lazy --owner lazy --directory /run/user/${MANALA_USER_ID} \
50
55
&& echo "lazy ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/lazy \
51
56
# Gosu
@@ -68,10 +73,20 @@ RUN \
68
73
&& curl -sSLf "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_$(case $(dpkg --print-architecture) in " amd64") echo " amd64" ;; " arm64") echo " arm64" ;; esac)" \
69
74
--output /usr/local/bin/yq \
70
75
&& chmod +x /usr/local/bin/yq \
71
- # Bash completion
72
- && install --verbose --mode 0755 --directory /etc/bash_completion.d \
73
- # Oh My Bash
74
- && git clone https://github.com/ohmybash/oh-my-bash.git /usr/local/share/oh-my-bash \
76
+ # Oh My Zsh
77
+ && git clone https://github.com/ohmyzsh/ohmyzsh.git /usr/local/share/oh-my-zsh \
78
+ # See: https://github.com/ohmyzsh/ohmyzsh/issues/11995
79
+ && git clone https://github.com/zsh-users/zsh-autosuggestions.git /usr/local/share/oh-my-zsh/custom/plugins/zsh-autosuggestions \
80
+ && git clone https://github.com/zsh-users/zsh-syntax-highlighting.git /usr/local/share/oh-my-zsh/custom/plugins/zsh-syntax-highlighting \
81
+ && echo "ZDOTDIR=/etc/zsh" > /etc/zsh/zshenv \
82
+ # Starship
83
+ && curl -sSLf "https://github.com/starship/starship/releases/download/v${STARSHIP_VERSION}/starship-$(case $(dpkg --print-architecture) in " amd64") echo " x86_64" ;; " arm64") echo " aarch64" ;; esac)-unknown-linux-musl.tar.gz" \
84
+ | bsdtar -xvf - -C /usr/local/bin \
85
+ && echo "Defaults env_keep += STARSHIP_CONFIG" > /etc/sudoers.d/starship \
86
+ # Fzf
87
+ && curl -sSLf "https://github.com/junegunn/fzf/releases/download/v${FZF_VERSION}/fzf-${FZF_VERSION}-linux_$(case $(dpkg --print-architecture) in " amd64") echo " amd64" ;; " arm64") echo " arm64" ;; esac).tar.gz" \
88
+ | bsdtar -xvf - -C /usr/local/bin \
89
+ && chmod +x /usr/local/bin/fzf \
75
90
# Clean
76
91
&& rm -rf /var/lib/apt/lists/*
77
92
@@ -143,17 +158,28 @@ Signed-By: /etc/apt/keyrings/sury_php.gpg\n\
143
158
# Symfony
144
159
&& curl -sSLf "https://github.com/symfony-cli/symfony-cli/releases/latest/download/symfony-cli_linux_$(case $(dpkg --print-architecture) in " amd64") echo " amd64" ;; " arm64") echo " arm64" ;; esac).tar.gz" \
145
160
| bsdtar -xvf - -C /usr/local/bin symfony \
161
+ # Oh My Zsh plugin
162
+ # See: https://github.com/ohmyzsh/ohmyzsh/pull/12768
163
+ && mkdir /usr/local/share/oh-my-zsh/custom/plugins/symfony-cli \
164
+ && printf "\
165
+ if [[ ! -f \"\$ ZSH_CACHE_DIR/completions/_symfony-cli\" ]]; then\n \
166
+ typeset -g -A _comps\n \
167
+ autoload -Uz _symfony-cli\n \
168
+ _comps[symfony]=_symfony-cli\n \
169
+ fi\n \
170
+ symfony self:completion zsh >| \"\$ ZSH_CACHE_DIR/completions/_symfony-cli\" &|\n \
171
+ " > /usr/local/share/oh-my-zsh/custom/plugins/symfony-cli/symfony-cli.plugin.zsh \
146
172
# Clean
147
173
&& rm -rf /var/lib/apt/lists/*
148
174
149
175
# Nodejs
150
176
RUN \
151
- curl -sSLf https://deb.nodesource.com/gpgkey/nodesource.gpg.key \
177
+ curl -sSLf https://deb.nodesource.com/gpgkey/nodesource-repo .gpg.key \
152
178
--output /etc/apt/keyrings/nodesource.asc \
153
179
&& printf "\
154
180
Types: deb\n \
155
- URIs: https://deb.nodesource.com/node_16 .x\n \
156
- Suites: $(. /etc/os-release; echo " ${VERSION_CODENAME} ") \n \
181
+ URIs: https://deb.nodesource.com/node_22 .x\n \
182
+ Suites: nodistro \n \
157
183
Components: main\n \
158
184
Signed-By: /etc/apt/keyrings/nodesource.asc\n \
159
185
" > /etc/apt/sources.list.d/nodesource.sources \
0 commit comments