Newer
Older
#!/bin/bash
# Copyright (c) 2020 b-data GmbH.
# Distributed under the terms of the MIT License.
set -e
# Set defaults for environment variables in case they are undefined
LANG=${LANG:=en_US.UTF-8}
TZ=${TZ:=Etc/UTC}
if [ "$(id -u)" == 0 ] ; then
# Update timezone if needed
if [ "$TZ" != "Etc/UTC" ]; then
echo "Setting TZ to $TZ"
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone
fi
# Add/Update locale if needed
if [ ! -z "$LANGS" ]; then
for i in $LANGS; do
sed -i "s/# $i/$i/g" /etc/locale.gen
done
fi
if [ "$LANG" != "en_US.UTF-8" ]; then
sed -i "s/# $LANG/$LANG/g" /etc/locale.gen
fi
if [[ "$LANG" != "en_US.UTF-8" || ! -z "$LANGS" ]]; then
locale-gen
fi
if [ "$LANG" != "en_US.UTF-8" ]; then
echo "Setting LANG to $LANG"
update-locale --reset LANG=$LANG
fi
# Update code-server settings
su $NB_USER -c "mkdir -p /home/$NB_USER/.local/share/code-server/User"
if [[ ! -f "/home/$NB_USER/.local/share/code-server/User/settings.json" ]]; then
su $NB_USER -c "cp ${CP_OPTS:--a} /var/backups/skel/.local/share/code-server/User/settings.json \
/home/$NB_USER/.local/share/code-server/User/settings.json"
chown :$NB_GID "/home/$NB_USER/.local/share/code-server/User/settings.json"
su $NB_USER -c "mv /home/$NB_USER/.local/share/code-server/User/settings.json \
/home/$NB_USER/.local/share/code-server/User/settings.json.bak"
/home/$NB_USER/.local/share/code-server/User/settings.json.bak"
su $NB_USER -c "jq -s '.[0] * .[1]' \
/var/backups/skel/.local/share/code-server/User/settings.json \
/home/$NB_USER/.local/share/code-server/User/settings.json.bak > \
/home/$NB_USER/.local/share/code-server/User/settings.json"
else
# Warn if the user wants to change the timezone but hasn't started the
# container as root.
if [ "$TZ" != "Etc/UTC" ]; then
echo "WARNING: Setting TZ to $TZ but /etc/localtime and /etc/timezone remain unchanged!"
fi
# Warn if the user wants to change the locale but hasn't started the
# container as root.
if [[ ! -z "$LANGS" ]]; then
echo "WARNING: Container must be started as root to add locale(s)!"
fi
if [[ "$LANG" != "en_US.UTF-8" ]]; then
echo "WARNING: Container must be started as root to update locale!"
echo "Resetting LANG to en_US.UTF-8"
LANG=en_US.UTF-8
fi
# Update code-server settings
mkdir -p /home/$NB_USER/.local/share/code-server/User
if [[ ! -f "/home/$NB_USER/.local/share/code-server/User/settings.json" ]]; then
cp -a /var/backups/skel/.local/share/code-server/User/settings.json \
/home/$NB_USER/.local/share/code-server/User/settings.json
mv /home/$NB_USER/.local/share/code-server/User/settings.json \
/home/$NB_USER/.local/share/code-server/User/settings.json.bak
/home/$NB_USER/.local/share/code-server/User/settings.json.bak
jq -s '.[0] * .[1]' \
/var/backups/skel/.local/share/code-server/User/settings.json \
/home/$NB_USER/.local/share/code-server/User/settings.json.bak > \
/home/$NB_USER/.local/share/code-server/User/settings.json