aboutsummaryrefslogtreecommitdiff
path: root/Common
diff options
context:
space:
mode:
Diffstat (limited to 'Common')
-rw-r--r--Common/devcontainer/Dockerfile-all.m45
-rw-r--r--Common/devcontainer/Dockerfile-base.m476
-rw-r--r--Common/devcontainer/Dockerfile-python.m411
-rw-r--r--Common/devcontainer/Dockerfile-svelte.m47
-rw-r--r--Common/devcontainer/Makefile18
-rw-r--r--Common/devcontainer/supervisord.conf15
6 files changed, 132 insertions, 0 deletions
diff --git a/Common/devcontainer/Dockerfile-all.m4 b/Common/devcontainer/Dockerfile-all.m4
new file mode 100644
index 0000000..edf5b02
--- /dev/null
+++ b/Common/devcontainer/Dockerfile-all.m4
@@ -0,0 +1,5 @@
+m4_ifdef(`DEF_BASEIMAGE', `', `m4_define(DEF_BASEIMAGE)m4_dnl
+FROM BASEIMAGE')
+
+m4_include(`Dockerfile-python.m4')
+m4_include(`Dockerfile-svelte.m4')
diff --git a/Common/devcontainer/Dockerfile-base.m4 b/Common/devcontainer/Dockerfile-base.m4
new file mode 100644
index 0000000..6cc85f1
--- /dev/null
+++ b/Common/devcontainer/Dockerfile-base.m4
@@ -0,0 +1,76 @@
+FROM docker.io/debian:trixie
+
+ARG DOT_HOME="/root"
+ARG DOTFILES_REPO="https://git.jakobstendahl.no/jakobst1n/dotfiles"
+ARG GIT_EMAIL="jakob@jakobstendahl.no"
+ARG GIT_USER="jakobst1n"
+
+# Install base requirements
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ ca-certificates \
+ fzf \
+ man-db \
+ less \
+ supervisor \
+ git \
+ make \
+ dialog \
+ m4 \
+ npm \
+ sudo
+
+# Create and switch to non-root-user
+#RUN useradd -d ${DOT_HOME} -m devuser
+#RUN usermod -a -G sudo devuser
+#RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
+
+WORKDIR ${DOT_HOME}
+#USER devuser
+
+# Install dotfiles
+RUN mkdir -p ${DOT_HOME}/
+RUN git clone ${DOTFILES_REPO} ${DOT_HOME}/dotfiles
+WORKDIR ${DOT_HOME}/dotfiles
+RUN cat > config <<EOF
+DT_DISTRO=debian
+DT_DOTFILES_DIR=${DOT_HOME}/dotfiles
+DT_DOTFILES_TYPE=remote
+DT_EDITOR=nvim
+DT_GIT_EMAIL=${GIT_EMAIL}
+DT_GIT_USER=${GIT_USER}
+DT_HOME_DIRECTORY=${DOT_HOME}
+DT_SHELL=/bin/bash
+DT_SYSID=1
+DT_HOMEBIN=yes
+DT_BASH=yes
+DT_INPUTRC=yes
+DT_MYCLI=yes
+DT_NEOVIM=yes
+DT_OS=linux
+DT_OTHER_SYMLINKS=yes
+DT_TMUX=yes
+DT_TOOLS=yes
+DT_VIM=yes
+EOF
+RUN m4 -P Makefile.m4 > Makefile
+RUN make Makefile
+RUN make && rm -rf /tmp/nvim && rm -rf /var/lib/api/lists/*
+RUN nvim --headless +qa
+
+# Create project directory
+#RUN mkdir -p ${DOT_HOME}/project
+#WORKDIR ${DOT_HOME}/project
+RUN mkdir -p /workspace
+WORKDIR /workspace
+
+# Install usefull tools
+RUN npm i -g opencode-ai
+
+# Copy supervisord conf
+COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
+#RUN mkdir -p ${DOT_HOME}/.local/share/supervisord && \
+# touch ${DOT_HOME}/.local/share/supervisord/supervisord.log
+#RUN touch ${DOT_HOME}/.local/share/supervisord/supervisord.pid && \
+# chown devuser:devuser /var/run/supervisord.pid
+
+CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
diff --git a/Common/devcontainer/Dockerfile-python.m4 b/Common/devcontainer/Dockerfile-python.m4
new file mode 100644
index 0000000..c52c4e1
--- /dev/null
+++ b/Common/devcontainer/Dockerfile-python.m4
@@ -0,0 +1,11 @@
+m4_ifdef(`DEF_BASEIMAGE', `', `m4_define(DEF_BASEIMAGE)m4_dnl
+FROM BASEIMAGE')
+
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ python3 \
+ python3-pip && \
+ rm -rf /var/lib/api/lists/*
+
+RUN nvim --headless "+MasonInstallSync pywright" "+q!"
+
diff --git a/Common/devcontainer/Dockerfile-svelte.m4 b/Common/devcontainer/Dockerfile-svelte.m4
new file mode 100644
index 0000000..5539cc4
--- /dev/null
+++ b/Common/devcontainer/Dockerfile-svelte.m4
@@ -0,0 +1,7 @@
+m4_ifdef(`DEF_BASEIMAGE', `', `m4_define(DEF_BASEIMAGE)m4_dnl
+FROM BASEIMAGE')
+
+RUN apt-get update && apt-get install -y --no-install-recommends && \
+ rm -rf /var/lib/api/lists/*
+
+RUN nvim --headless "+MasonInstallSync svelte-language-server" "+q!"
diff --git a/Common/devcontainer/Makefile b/Common/devcontainer/Makefile
new file mode 100644
index 0000000..b5e53f9
--- /dev/null
+++ b/Common/devcontainer/Makefile
@@ -0,0 +1,18 @@
+BASEIMAGE := devcontainer-base
+M4_SRCS := $(wildcard *.m4)
+TARGETS := $(patsubst %.m4,%,$(M4_SRCS))
+
+.PHONE: all clean
+
+all: $(TARGETS)
+
+Dockerfile-base: Dockerfile-base.m4
+ m4 -P -D BASEIMAGE="$(BASEIMAGE)" $< > $@
+ podman build -t "$(patsubst Dockerfile-%,devcontainer-%,$@)" -f $@
+
+%: %.m4
+ m4 -P -D BASEIMAGE="$(BASEIMAGE)" $< > $@
+ podman build -t "$(patsubst Dockerfile-%,devcontainer-%,$@)" -f $@
+
+clean:
+ rm -f $(TARGETS)
diff --git a/Common/devcontainer/supervisord.conf b/Common/devcontainer/supervisord.conf
new file mode 100644
index 0000000..0c7314b
--- /dev/null
+++ b/Common/devcontainer/supervisord.conf
@@ -0,0 +1,15 @@
+[supervisord]
+nodaemon=true
+#user=devuser
+logfile=/var/log/supervisord.log
+pidfile=/var/run/supervisord.pid
+
+[program:nvim-headless]
+command=nvim --headless --listen 0.0.0.0:7778
+autostart=true
+autorestart=true
+
+[program:opencode]
+command=opencode web --port 4096 --hostname 0.0.0.0
+autostart=true
+autorestart=true