|
1 | 1 | #!/bin/bash |
2 | 2 | # Demyx |
3 | 3 | # https://demyx.sh |
4 | | -set -euo pipefail |
5 | | - |
6 | | -# Support for old password variable |
7 | | -[[ -n "${PASSWORD:-}" ]] && DEMYX_CODE_PASSWORD="$PASSWORD" |
8 | | - |
9 | | -# Copy ctop settings if it doesn't exist |
10 | | -if [[ ! -f /home/demyx/.ctop ]]; then |
11 | | - cp "$DEMYX_CONFIG"/ctop /home/demyx/.ctop |
12 | | -fi |
13 | | - |
14 | | -# Create new code-server config directory |
15 | | -if [[ ! -d /home/demyx/.config ]]; then |
16 | | - mkdir -p /home/demyx/.config |
17 | | - cp -r "$DEMYX_CONFIG"/code-server /home/demyx/.config |
18 | | -fi |
| 4 | +set -eEuo pipefail |
| 5 | +# |
| 6 | +# Main. |
| 7 | +# |
| 8 | +demyx_entrypoint() { |
| 9 | + # Copy ctop settings if it doesn't exist |
| 10 | + if [[ ! -f /home/demyx/.ctop ]]; then |
| 11 | + cp "$DEMYX_CONFIG"/ctop /home/demyx/.ctop |
| 12 | + fi |
19 | 13 |
|
20 | | -# Migrate old configs to new directory |
21 | | -if [[ -d /home/demyx/.code/data ]]; then |
22 | | - mkdir -p "$DEMYX_CODE_CONFIG"/data |
23 | | - cp -r /home/demyx/.code/data/. "$DEMYX_CODE_CONFIG" |
24 | | - rm -rf /home/demyx/.code/data |
25 | | -fi |
| 14 | + # Create new code-server config directory |
| 15 | + if [[ ! -d /home/demyx/.config ]]; then |
| 16 | + mkdir -p /home/demyx/.config |
| 17 | + cp -r "$DEMYX_CONFIG"/code-server /home/demyx/.config |
| 18 | + fi |
26 | 19 |
|
27 | | -if [[ -d /home/demyx/.code/extensions ]]; then |
28 | | - mkdir -p "$DEMYX_CODE_CONFIG"/extensions |
29 | | - cp -r /home/demyx/.code/extensions/. "$DEMYX_CODE_CONFIG" |
30 | | - rm -rf /home/demyx/.code/extensions |
31 | | -fi |
| 20 | + # Migrate old configs to new directory |
| 21 | + if [[ -d /home/demyx/.code/data ]]; then |
| 22 | + mkdir -p "$DEMYX_CODE_CONFIG"/data |
| 23 | + cp -r /home/demyx/.code/data/. "$DEMYX_CODE_CONFIG" |
| 24 | + rm -rf /home/demyx/.code/data |
| 25 | + fi |
32 | 26 |
|
33 | | -# Update oh-my-zsh |
34 | | -if [[ -f /home/demyx/.zshrc ]]; then |
35 | | - DEMYX_ZSHRC_CHECK="$(cat < /home/demyx/.zshrc)" |
36 | | - if [[ "$DEMYX_ZSHRC_CHECK" != *"source \"\$DEMYX_CONFIG\""* ]]; then |
37 | | - sed -i "s|source \$ZSH/oh-my-zsh.sh|source \"\$DEMYX_CONFIG\"/.demyxrc\nsource \$ZSH/oh-my-zsh.sh|g" /home/demyx/.zshrc |
| 27 | + if [[ -d /home/demyx/.code/extensions ]]; then |
| 28 | + mkdir -p "$DEMYX_CODE_CONFIG"/extensions |
| 29 | + cp -r /home/demyx/.code/extensions/. "$DEMYX_CODE_CONFIG" |
| 30 | + rm -rf /home/demyx/.code/extensions |
38 | 31 | fi |
39 | 32 |
|
| 33 | + # Update oh-my-zsh |
| 34 | + if [[ -f /home/demyx/.zshrc ]]; then |
| 35 | + DEMYX_ZSHRC_CHECK="$(cat < /home/demyx/.zshrc)" |
| 36 | + if [[ "$DEMYX_ZSHRC_CHECK" != *"source \"\$DEMYX_CONFIG\""* ]]; then |
| 37 | + sed -i "s|source \$ZSH/oh-my-zsh.sh|source \"\$DEMYX_CONFIG\"/.demyxrc\nsource \$ZSH/oh-my-zsh.sh|g" /home/demyx/.zshrc |
| 38 | + fi |
| 39 | + |
40 | 40 | # Remove export GPG_TTY |
41 | 41 | if [[ "$DEMYX_ZSHRC_CHECK" == *"export GPG_TTY"* ]]; then |
42 | 42 | sed -i "/export GPG_TTY/d" /home/demyx/.zshrc |
43 | 43 | fi |
44 | | -fi |
45 | | - |
46 | | -# Remove autoupdate |
47 | | -if [[ -d /home/demyx/.oh-my-zsh/plugins/autoupdate ]]; then |
48 | | - rm -rf /home/demyx/.oh-my-zsh/plugins/autoupdate |
49 | | -fi |
50 | | -# Double check zsh-autosuggestions |
51 | | -if [[ ! -d /home/demyx/.oh-my-zsh/custom/plugins/zsh-autosuggestions ]]; then |
52 | | - git clone https://github.com/zsh-users/zsh-autosuggestions.git /home/demyx/.oh-my-zsh/custom/plugins/zsh-autosuggestions |
53 | | -fi |
| 44 | + fi |
54 | 45 |
|
55 | | -# Remove autoupdate |
56 | | -if [[ -d /home/demyx/.oh-my-zsh/plugins/autoupdate ]]; then |
57 | | - rm -rf /home/demyx/.oh-my-zsh/plugins/autoupdate |
58 | | -fi |
59 | | -# Double check autoupdate |
60 | | -if [[ ! -d /home/demyx/.oh-my-zsh/custom/plugins/autoupdate ]]; then |
61 | | - git clone https://github.com/TamCore/autoupdate-oh-my-zsh-plugins.git /home/demyx/.oh-my-zsh/custom/plugins/autoupdate |
62 | | -fi |
| 46 | + # Remove autoupdate |
| 47 | + if [[ -d /home/demyx/.oh-my-zsh/plugins/autoupdate ]]; then |
| 48 | + rm -rf /home/demyx/.oh-my-zsh/plugins/autoupdate |
| 49 | + fi |
| 50 | + # Double check zsh-autosuggestions |
| 51 | + if [[ ! -d /home/demyx/.oh-my-zsh/custom/plugins/zsh-autosuggestions ]]; then |
| 52 | + git clone https://github.com/zsh-users/zsh-autosuggestions.git /home/demyx/.oh-my-zsh/custom/plugins/zsh-autosuggestions |
| 53 | + fi |
63 | 54 |
|
64 | | -# Double check powerlevel10k theme |
65 | | -if [[ ! -d /home/demyx/.oh-my-zsh/custom/themes/powerlevel10k ]]; then |
66 | | - git clone --depth=1 https://github.com/romkatv/powerlevel10k.git /home/demyx/.oh-my-zsh/custom/themes/powerlevel10k |
67 | | -fi |
| 55 | + # Remove autoupdate |
| 56 | + if [[ -d /home/demyx/.oh-my-zsh/plugins/autoupdate ]]; then |
| 57 | + rm -rf /home/demyx/.oh-my-zsh/plugins/autoupdate |
| 58 | + fi |
| 59 | + # Double check autoupdate |
| 60 | + if [[ ! -d /home/demyx/.oh-my-zsh/custom/plugins/autoupdate ]]; then |
| 61 | + git clone https://github.com/TamCore/autoupdate-oh-my-zsh-plugins.git /home/demyx/.oh-my-zsh/custom/plugins/autoupdate |
| 62 | + fi |
68 | 63 |
|
69 | | -# Check for font-family |
70 | | -DEMYX_SETTINGS_CHECK="$(cat < "$DEMYX_CODE_CONFIG"/data/User/settings.json)" |
71 | | -if [[ "$DEMYX_SETTINGS_CHECK" != *"MesloLGS NF"* ]]; then |
72 | | - sed -i "s|\"editor.quickSuggestions\": true,|\ |
73 | | - \"editor.fontFamily\": \"'MesloLGS NF', Menlo, Monaco, 'Courier New', monospace\",\n\ |
74 | | - \"editor.quickSuggestions\": true,|g" "$DEMYX_CODE_CONFIG"/data/User/settings.json |
75 | | -fi |
| 64 | + # Symlink /demyx directory |
| 65 | + if [[ ! -L /home/demyx/demyx ]]; then |
| 66 | + ln -sf "$DEMYX" /home/demyx/demyx |
| 67 | + fi |
76 | 68 |
|
77 | | -# Symlink /demyx directory |
78 | | -if [[ ! -L /home/demyx/demyx ]]; then |
79 | | - ln -sf "$DEMYX" /home/demyx/demyx |
80 | | -fi |
| 69 | + # Check demyx motd is in ~/.zshrc |
| 70 | + DEMYX_ENTRYPOINT_MOTD="$(grep "demyx motd" ~/.zshrc || true)" |
| 71 | + if [[ -z "$DEMYX_ENTRYPOINT_MOTD" ]]; then |
| 72 | + echo "demyx motd" >> ~/.zshrc |
| 73 | + fi |
81 | 74 |
|
82 | | -# Check demyx motd is in ~/.zshrc |
83 | | -DEMYX_ENTRYPOINT_MOTD="$(grep "demyx motd" ~/.zshrc || true)" |
84 | | -if [[ -z "$DEMYX_ENTRYPOINT_MOTD" ]]; then |
85 | | - echo "demyx motd" >> ~/.zshrc |
86 | | -fi |
| 75 | + # TEMPORARY |
| 76 | + DEMYX_ENTRYPOINT_THEME="$(find "${DEMYX_CODE_CONFIG}"/extensions -name "equinusocio*")" |
| 77 | + if [[ -n "${DEMYX_ENTRYPOINT_THEME}" ]]; then |
| 78 | + rm -rf "${DEMYX_CODE_CONFIG}"/extensions/equinusocio* |
| 79 | + fi |
87 | 80 |
|
88 | | -# Generate code-server yaml |
89 | | -echo "auth: $DEMYX_CODE_AUTH |
90 | | -bind-addr: $DEMYX_CODE_BIND_ADDR |
91 | | -cert: false |
92 | | -disable-telemetry: true |
93 | | -extensions-dir: ${DEMYX_CODE_CONFIG}/extensions |
94 | | -password: $DEMYX_CODE_PASSWORD |
95 | | -user-data-dir: ${DEMYX_CODE_CONFIG}/data" > "$DEMYX_CODE_CONFIG"/config.yaml |
| 81 | + # Generate code-server yaml |
| 82 | + echo "auth: \"$DEMYX_CODE_AUTH\" |
| 83 | + bind-addr: \"$DEMYX_CODE_BIND_ADDR\" |
| 84 | + cert: false |
| 85 | + disable-telemetry: true |
| 86 | + extensions-dir: \"${DEMYX_CODE_CONFIG}/extensions\" |
| 87 | + password: \"$DEMYX_CODE_PASSWORD\" |
| 88 | + user-data-dir: \"${DEMYX_CODE_CONFIG}/data\"" | sed 's| ||g' > "$DEMYX_CODE_CONFIG"/config.yaml |
96 | 89 |
|
97 | | -# Start code-server |
| 90 | + # SSH |
| 91 | + sudo -E demyx-ssh |
| 92 | +} |
| 93 | +# |
| 94 | +# Init. |
| 95 | +# |
| 96 | +demyx_entrypoint |
| 97 | +# |
| 98 | +# |
| 99 | +# |
98 | 100 | code-server /home/demyx |
0 commit comments