Seems clean
This commit is contained in:
parent
3bf60ffda8
commit
fc34525755
5 changed files with 155 additions and 2 deletions
42
README.md
42
README.md
|
@ -1,3 +1,41 @@
|
||||||
# devenv
|
A simple method of utilizing Docker for your dev environment. Specifically
|
||||||
|
designed for use on X11 systems.
|
||||||
|
|
||||||
Docker based dev environments.
|
# Why X11?
|
||||||
|
|
||||||
|
X11 runs a server which allows you to pass through windows. Kind of like x
|
||||||
|
forwarding with SSH I supposed, except you pass through all the sockets and
|
||||||
|
shit.
|
||||||
|
|
||||||
|
This means that you can define dev environments for specific purposes and then
|
||||||
|
run them when they are needed.
|
||||||
|
|
||||||
|
If that involves opening an IDE or testing a Flutter app then it seems to all
|
||||||
|
happen as if it's on your machine.
|
||||||
|
|
||||||
|
No Qemu, just running binaries in Docker.
|
||||||
|
|
||||||
|
# Fast & Loose
|
||||||
|
|
||||||
|
I'm not using Docker the way that I preech in this.
|
||||||
|
|
||||||
|
I use Dockerfiles to define each dev env so that I don't have to actively
|
||||||
|
maintain it on my machine. I keep this repo on my home machine but also my work
|
||||||
|
machine, so that when I keep configurations in sync easily.
|
||||||
|
|
||||||
|
I may keep multiple binaries running in each container.
|
||||||
|
|
||||||
|
None of this is really how you're meant to use Docker however it's a nice,
|
||||||
|
simple method of achieving what Snap and Flatpak sort-of tried to achieve in
|
||||||
|
some ways.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
Clone repo.
|
||||||
|
|
||||||
|
Populate configuration files in base for git, nvim and tmux.
|
||||||
|
|
||||||
|
Build and run base.
|
||||||
|
|
||||||
|
You can map your configuraitons or whatever. I like to build them into the
|
||||||
|
images, because my vim confs get pretty weighty.
|
||||||
|
|
62
base/Dockerfile
Normal file
62
base/Dockerfile
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
FROM archlinux:latest
|
||||||
|
|
||||||
|
# Update
|
||||||
|
RUN pacman -Syu --noconfirm
|
||||||
|
|
||||||
|
## Configure non-root user
|
||||||
|
RUN pacman -S --noconfirm sudo
|
||||||
|
RUN useradd -m -s /bin/bash -G wheel x
|
||||||
|
RUN PASS=$(openssl rand -base64 14) && echo "x:$PASS" | chpasswd && echo "Pass $PASS"
|
||||||
|
RUN echo 'x ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
||||||
|
USER x
|
||||||
|
WORKDIR /home/x
|
||||||
|
|
||||||
|
## Install Yay incase we need it
|
||||||
|
RUN sudo pacman -S --noconfirm git base-devel
|
||||||
|
RUN git clone https://aur.archlinux.org/yay.git \
|
||||||
|
&& cd yay \
|
||||||
|
&& makepkg -si --noconfirm \
|
||||||
|
&& cd .. && rm -rf yay \
|
||||||
|
&& yay -Syu
|
||||||
|
|
||||||
|
## Install Neovim
|
||||||
|
RUN sudo pacman -S --needed --noconfirm \
|
||||||
|
neovim git curl unzip tar wget \
|
||||||
|
nodejs npm \
|
||||||
|
python python-pip \
|
||||||
|
lua \
|
||||||
|
go \
|
||||||
|
ripgrep \
|
||||||
|
fd \
|
||||||
|
gcc make base-devel \
|
||||||
|
xclip xsel wl-clipboard \
|
||||||
|
lazygit
|
||||||
|
RUN yay -S --noconfirm terraform-ls
|
||||||
|
RUN mkdir -p /home/x/.config/
|
||||||
|
COPY ./nvim /home/x/.config/nvim
|
||||||
|
# Should run Lazy update and keep the base image reasonably up to date
|
||||||
|
# Just to avoid lengthy startups but we'll see how this approach goes.
|
||||||
|
RUN nvim --headless "+Lazy! update" +qa
|
||||||
|
|
||||||
|
# Install Tmux
|
||||||
|
RUN sudo pacman -S --noconfirm tmux
|
||||||
|
COPY tmux/tmux.conf /home/x/.tmux.conf
|
||||||
|
|
||||||
|
## Git
|
||||||
|
# Should already be installed for Yay but repeating stuff to keep everything in blocks
|
||||||
|
RUN sudo pacman -S --noconfirm git
|
||||||
|
RUN mkdir -p /home/x/.config/git
|
||||||
|
COPY git/gitconfig /home/x/.gitconfig
|
||||||
|
COPY git/confs/ /home/x/.config/git/
|
||||||
|
|
||||||
|
## Tofu
|
||||||
|
# Might run into version issues because AUR isn't a versioned repo.
|
||||||
|
RUN yay -S --noconfirm opentofu
|
||||||
|
|
||||||
|
## AWS CLI
|
||||||
|
RUN yay -S --noconfirm aws-cli-v2
|
||||||
|
|
||||||
|
## Quick drop password at end of build output
|
||||||
|
RUN echo "Your password: $PASS"
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
11
base/git/gitconfig
Normal file
11
base/git/gitconfig
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[includeIf "gitdir:/home/x/Projects/xestro/"]
|
||||||
|
path = ~/.config/git/xestro.conf
|
||||||
|
|
||||||
|
[includeIf "gitdir:/home/x/Projects/repobase/"]
|
||||||
|
path = ~/.config/git/repobase.conf
|
||||||
|
|
||||||
|
[includeIf "gitdir:/home/x/Projects/gitlab/"]
|
||||||
|
path = ~/.config/git/gitlab.conf
|
||||||
|
|
||||||
|
[includeIf "gitdir:/home/x/Projects/github/"]
|
||||||
|
path = ~/.config/git/github.conf
|
15
flutter/Dockerfile
Normal file
15
flutter/Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
FROM d:base
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN pacman -Syu --noconfirm base-devel cmake ninja clang pkgconf gtk3 libxcb
|
||||||
|
|
||||||
|
RUN git clone https://github.com/flutter/flutter.git /opt/flutter \
|
||||||
|
&& chown -R x:x /opt/flutter
|
||||||
|
|
||||||
|
USER x
|
||||||
|
|
||||||
|
ENV PATH="/opt/flutter/bin:${PATH}"
|
||||||
|
RUN flutter doctor
|
||||||
|
|
||||||
|
WORKDIR /home/x/Projects
|
27
run.sh
Normal file
27
run.sh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
docker_run() {
|
||||||
|
xhost +local:docker
|
||||||
|
docker run -it --rm \
|
||||||
|
-u "${UID}:${GID}" \
|
||||||
|
-v $HOME/Projects:/home/x/Projects \
|
||||||
|
-v ${HOME}/.Xauthority:/home/x/.Xauthority \
|
||||||
|
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||||
|
-e DISPLAY=${DISPLAY} \
|
||||||
|
--device /dev/dri \
|
||||||
|
--group-add video \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
--entrypoint /usr/bin/tmux \
|
||||||
|
d:${1}
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_build() {
|
||||||
|
docker build ./${1} -t d:${1}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
*)
|
||||||
|
docker_build $1 && docker_run $1
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Add table
Add a link
Reference in a new issue