Răsfoiți Sursa

Refactor to separate personal from open

josh 3 ani în urmă
părinte
comite
47f49d9690
15 a modificat fișierele cu 71 adăugiri și 44 ștergeri
  1. 4 0
      .gitignore
  2. 0 6
      Dockerfile
  3. 9 0
      Makefile
  4. 20 19
      base/Dockerfile
  5. 2 2
      base/build-home.sh
  6. 2 0
      base/build-init-user.sh
  7. 5 2
      base/build-install.sh
  8. 2 2
      base/build-root.sh
  9. 2 0
      base/init.vim
  10. 14 0
      base/zshrc
  11. 10 11
      docker-compose.yml
  12. 0 0
      dotfiles/.keep
  13. 1 0
      env.example
  14. 0 1
      src/vimrc
  15. 0 1
      src/zshrc

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+.env
+dotfiles/*
+!dotfiles/.keep
+

+ 0 - 6
Dockerfile

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

+ 9 - 0
Makefile

@@ -0,0 +1,9 @@
+build:
+	touch dotfiles/zshrc
+	touch dotfiles/init.vim
+	touch dotfiles/setup.sh
+	chmod +x dotfiles/setup.sh
+	docker compose build devenv
+run:
+	docker compose run --rm devenv
+

+ 20 - 19
src/Dockerfile → base/Dockerfile

@@ -1,31 +1,33 @@
 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
+ARG DEVENV_PKGS
 
+ENV TZ=$DEVENV_TZ
 ENV DEVENV_USER=$DEVENV_USER
 ENV DEVENV_PASS=$DEVENV_PASS
 ENV DEVENV_EMAIL=$DEVENV_EMAIL
 ENV DEVENV_LOCALE=$DEVENV_LOCALE
+ENV DEVENV_PKGS=$DEVENV_PKGS
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+COPY base/build-install.sh /build-install.sh
+RUN chmod +x /build-install.sh && /build-install.sh
+
+
+FROM devinstall AS devbase
 
-COPY src/build-root.sh /build-root.sh
+COPY base/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
+COPY base/build-init-user.sh /build-init-user.sh
 
 USER ${DEVENV_USER}
 
@@ -43,18 +45,17 @@ 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 base/zshrc /home/${DEVENV_USER}/.zshrc
+COPY base/init.vim /home/${DEVENV_USER}/.config/nvim/init.vim
+COPY dotfiles/setup.sh /home/${DEVENV_USER}/setup.sh
+COPY dotfiles/init.vim /home/${DEVENV_USER}/dotfiles/init.vim
+COPY dotfiles/zshrc /home/${DEVENV_USER}/dotfiles/zshrc
 
-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
+COPY base/build-home.sh /home/${DEVENV_USER}/build-home.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
+  && /home/${DEVENV_USER}/build-home.sh 
 
 VOLUME /home/${DEVENV_USER}/.config
 VOLUME /home/${DEVENV_USER}/host

+ 2 - 2
src/build-home.sh → base/build-home.sh

@@ -3,7 +3,7 @@
 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 
+git config --global core.editor "NVIM_LISTEN_ADDRESS=/home/$DEVENV_USER/nvimsocket nvr --nostart --remote-wait-silent"
 
-nvr --nostart --remote-wait-silent"
+~/setup.sh
 

+ 2 - 0
src/build-init-user.sh → base/build-init-user.sh

@@ -12,6 +12,8 @@ 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)
+cpanm --local-lib=~/perl5 MsgPack::Raw
+cpanm --local-lib=~/perl5 Neovim::Ext
 
 mkdir -p ~/.config/nvim
 

+ 5 - 2
src/build-install.sh → base/build-install.sh

@@ -17,14 +17,16 @@ 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
+INSTALL_CMD="apt install --no-install-recommends -y zsh python2 python3 python3-pip ruby ruby-all-dev nodejs npm sudo curl perl git build-essential"
+$INSTALL_CMD
 
 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
@@ -32,5 +34,6 @@ 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
 

+ 2 - 2
src/build-root.sh → base/build-root.sh

@@ -2,8 +2,8 @@
 
 useradd -m $DEVENV_USER
 
-chsh root -s /usr/bin/zsh
-chsh $DEVENV_USER -s /usr/bin/zsh
+chsh root -s $(which zsh)
+chsh $DEVENV_USER -s $(which zsh)
 
 echo 'root:password' | chpasswd
 echo '$DEVENV_USER:$DEVENV_PASS' | chpasswd

+ 2 - 0
base/init.vim

@@ -0,0 +1,2 @@
+source ~/dotfiles/init.vim
+

+ 14 - 0
base/zshrc

@@ -0,0 +1,14 @@
+# Environment Variables
+
+export LANG=$DEVENV_LOCALE;
+export SSH_KEY_PATH=/home/$DEVENV_USER/.ssh/id_rsa;
+export NVIM_LISTEN_ADDRESS="/home/$DEVENV_USER/nvimsocket"
+export EDITOR="nvr --nostart --remote-wait-silent "
+export VISUAL="$EDITOR"
+export PAGER="nvr --nostart --remote-silent - "
+export IDE="nvr --nostart --remote-tab-silent "
+
+eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
+
+source /home/$DEVENV_USER/dotfiles/zshrc
+

+ 10 - 11
docker-compose.yml

@@ -1,24 +1,23 @@
-version: '3.8'
+version: '4.8'
 services:
   devenv:
+    image: devenv
+    container_name: devenv
     build:
       context: .
+      dockerfile: base/Dockerfile
       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}"
+        - "DEVENV_MOUNT_PATH=${DEVENV_MOUNT_PATH}"
+        - "DEVENV_PKGS=${DEVENV_PKGS}"
+        - "PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/home/${DEVENV_USER}/perl5/bin"
     volumes:
       - ${DEVENV_MOUNT_PATH}:/home/${DEVENV_USER}/host
-      - config:/home/${DEVENV_USER}/.config:z
     extra_hosts:
       - "host.docker.internal:host-gateway"
-volumes:
-  config:
-
+    environment:
+      - DEVENV_USER=${DEVENV_USER}
+      - PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/home/$DEVENV_USER/perl5/bin"

+ 0 - 0
dotfiles/.keep


+ 1 - 0
env.example

@@ -5,3 +5,4 @@ DEVENV_PASS="secret"
 DEVENV_EMAIL="email@example.com"
 DEVENV_MOUNT_PATH=$HOME
 DEVENV_GIT_DEF_BRANCH="main"
+DEVENV_PKGS="zsh ripgrep curl glances htop jq"

+ 0 - 1
src/vimrc

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

+ 0 - 1
src/zshrc

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