Jelajahi Sumber

Intial import

josh brickner 3 tahun lalu
induk
melakukan
60a4613585
10 mengubah file dengan 175 tambahan dan 5 penghapusan
  1. 6 0
      Dockerfile
  2. 24 0
      docker-compose.yml
  3. 6 5
      env.example
  4. 63 0
      src/Dockerfile
  5. 9 0
      src/build-home.sh
  6. 17 0
      src/build-init-user.sh
  7. 36 0
      src/build-install.sh
  8. 12 0
      src/build-root.sh
  9. 1 0
      src/vimrc
  10. 1 0
      src/zshrc

+ 6 - 0
Dockerfile

@@ -0,0 +1,6 @@
+# syntax = edrevo/dockerfile-plus
+
+INCLUDE+ ./src/Dockerfile
+
+FROM devenv AS custom
+

+ 24 - 0
docker-compose.yml

@@ -0,0 +1,24 @@
+version: '3.8'
+services:
+  devenv:
+    build:
+      context: .
+      args:
+        - "DEVENV_USER=${DEVENV_USER}"
+        - "DEVENV_PASS=${DEVENV_PASS}"
+        - "DEVENV_EMAIL=${DEVENV_EMAIL}"
+        - "DEVENV_LOCALE=${DEVENV_LOCALE}"
+    container_name: devenv
+    environment:
+      - "DEVENV_USER=${DEVENV_USER}"
+      - "DEVENV_PASS=${DEVENV_PASS}"
+      - "DEVENV_EMAIL=${DEVENV_EMAIL}"
+      - "DEVENV_LOCALE=${DEVENV_LOCALE}"
+    volumes:
+      - ${DEVENV_MOUNT_PATH}:/home/${DEVENV_USER}/host
+      - config:/home/${DEVENV_USER}/.config:z
+    extra_hosts:
+      - "host.docker.internal:host-gateway"
+volumes:
+  config:
+

+ 6 - 5
env.example

@@ -1,6 +1,7 @@
-TZ=
-DEVENV_LOCALE=
-DEVENV_USER=
-DEVENV_PASS=
-DEVENV_EMAIL=
+TZ="Etc/Universal"
+DEVENV_LOCALE="en_US.UTF-8"
+DEVENV_USER="bram"
+DEVENV_PASS="secret"
+DEVENV_EMAIL="email@example.com"
 DEVENV_MOUNT_PATH=$HOME
+DEVENV_GIT_DEF_BRANCH="main"

+ 63 - 0
src/Dockerfile

@@ -0,0 +1,63 @@
+FROM ubuntu:21.10 AS devinstall
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV TZ=$DEVENV_TZ
+
+COPY src/build-install.sh /build-install.sh
+RUN chmod +x /build-install.sh && /build-install.sh
+
+
+FROM devinstall AS devbase
+
+ARG DEVENV_USER
+ARG DEVENV_PASS
+ARG DEVENV_EMAIL
+ARG DEVENV_LOCALE
+
+ENV DEVENV_USER=$DEVENV_USER
+ENV DEVENV_PASS=$DEVENV_PASS
+ENV DEVENV_EMAIL=$DEVENV_EMAIL
+ENV DEVENV_LOCALE=$DEVENV_LOCALE
+
+COPY src/build-root.sh /build-root.sh
+RUN chmod +x /build-root.sh && /build-root.sh
+
+
+FROM devbase AS devinit
+
+COPY src/build-init-user.sh /build-init-user.sh
+
+USER ${DEVENV_USER}
+
+WORKDIR /home/${DEVENV_USER}
+ENV LANG=en_US.UTF-8
+
+RUN cp /build-init-user.sh ./build-init-user.sh && chmod +x ./build-init-user.sh && ./build-init-user.sh
+
+
+FROM devinit AS devenv
+
+USER ${DEVENV_USER}
+WORKDIR /home/${DEVENV_USER}
+
+ENV GOPATH=/home/${DEVENV_USER}/go
+ENV NVIM_LISTEN_ADDRESS=/home/${DEVENV_USER}/nvimsocket
+
+COPY src/build-home.sh /home/${DEVENV_USER}/build-home.sh
+COPY src/zshrc /home/${DEVENV_USER}/.zshrc
+COPY src/vimrc /home/${DEVENV_USER}/.config/nvim/init.vim
+
+COPY usr/zshrc /home/${DEVENV_USER}/.zshrc-user
+COPY usr/vimrc /home/${DEVENV_USER}/.config/nvim/init-user.vim
+COPY usr/build.sh /home/${DEVENV_USER}/build-user.sh
+
+RUN sudo chown -R ${DEVENV_USER}:${DEVENV_USER} /home/${DEVENV_USER} \
+  && chmod +x /home/${DEVENV_USER}/*.sh \
+  && /home/${DEVENV_USER}/build-home.sh \
+  && /home/${DEVENV_USER}/build-user.sh
+
+VOLUME /home/${DEVENV_USER}/.config
+VOLUME /home/${DEVENV_USER}/host
+
+ENTRYPOINT ["nvim", "+cd ~/host"]
+

+ 9 - 0
src/build-home.sh

@@ -0,0 +1,9 @@
+#!/bin/sh
+
+git config --global init.defaultBranch $DEVENV_GIT_DEF_BRANCH
+git config --global user.name $DEVENV_USER
+git config --global user.email $DEVENV_EMAIL
+git config --global core.editor "NVIM_LISTEN_ADDRESS=/home/$DEVENV_USER/nvimsocket 
+
+nvr --nostart --remote-wait-silent"
+

+ 17 - 0
src/build-init-user.sh

@@ -0,0 +1,17 @@
+#!/bin/sh
+
+export PATH="$PATH:/home/$DEVENV_USER/.local/bin"
+
+sudo n stable
+
+python2 -m pip install --upgrade pip
+pip2 install pynvim
+
+python3 -m pip install --upgrade pip
+pip3 install -U pynvim neovim-remote
+pip3 install 'python-language-server[all]'
+
+cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
+
+mkdir -p ~/.config/nvim
+

+ 36 - 0
src/build-install.sh

@@ -0,0 +1,36 @@
+#!/bin/sh
+
+apt update -y
+apt upgrade
+apt install -y locales tzdata
+
+locale-gen en_US.UTF-8
+
+:> /etc/environment
+echo "LC_ALL=$DEVENV_LOCALE" >> /etc/environment
+echo "LANGUAGE=$DEVENV_LOCALE" >> /etc/environment
+echo "LANG=$DEVENV_LOCALE" >> /etc/environment
+echo "LC_TYPE=$DEVENV_LOCALE" >> /etc/environment
+
+dpkg-reconfigure locales
+
+ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+dpkg-reconfigure tzdata
+
+apt install -y zsh ripgrep curl python2 python3 python3-pip ruby ruby-dev nodejs npm sudo
+
+gem install neovim
+npm install -g n
+npm install -g neovim
+
+curl -sfL https://cpanmin.us | perl - App::cpanminus
+cpanm -n Neovim::Ext
+
+curl -s https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
+python2 get-pip.py
+
+curl -s -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/download/v0.7.0/nvim-linux64.tar.gz
+tar -xvzf nvim-linux64.tar.gz
+cp -ran /nvim-linux64/* /usr
+chmod +x /usr/bin/nvim
+

+ 12 - 0
src/build-root.sh

@@ -0,0 +1,12 @@
+#!/bin/sh
+
+useradd -m $DEVENV_USER
+
+chsh root -s /usr/bin/zsh
+chsh $DEVENV_USER -s /usr/bin/zsh
+
+echo 'root:password' | chpasswd
+echo '$DEVENV_USER:$DEVENV_PASS' | chpasswd
+
+echo "$DEVENV_USER ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/$DEVENV_USER
+

+ 1 - 0
src/vimrc

@@ -0,0 +1 @@
+source /home/$DEVENV_USER/.config/nvim/init-user.vim

+ 1 - 0
src/zshrc

@@ -0,0 +1 @@
+source ~/.zshrc-user