Skip to content

Instantly share code, notes, and snippets.

@alexhrescale
Created September 23, 2019 16:29
Show Gist options
  • Save alexhrescale/3f91fd4e58518d921934d3568ef24adb to your computer and use it in GitHub Desktop.
Save alexhrescale/3f91fd4e58518d921934d3568ef24adb to your computer and use it in GitHub Desktop.
nix package manager from alpine with sudo and admin user
# set up base alpine image
ADMINUSER=$1
if [ ! -e nixos-docker ]; then
git clone https://github.com/NixOS/docker nixos-docker
fi
pushd nixos-docker > /dev/null
git checkout Dockerfile
cp Dockerfile Dockerfile.orig
cat Dockerfile.orig |
sed "s/addgroup/sudo addgroup/" |
sed "s/adduser/sudo adduser/" |
sed "s/mkdir/sudo mkdir/" |
sed "s/ln /sudo ln /" |
sed "s/rm /sudo rm /" |
sed "s|rm -r /nix|rm -r /tmp/nix|" |
sed "s|/profiles/default|/profiles/per-user/$ADMINUSER/profile|" |
sed "s|/profiles/per-user/root|/profiles/per-user/$ADMINUSER|" |
sed "s/0755/0777/" |
sed "s/USER=root/USER=$ADMINUSER/" |
sed "/# Download/i RUN apk add sudo" |
sed "/# Download/i RUN adduser -D $ADMINUSER && echo '$ADMINUSER ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers" |
sed "/# Download/i USER $ADMINUSER" |
sed "/# Download/i WORKDIR /tmp" |
sed "/^ENV/i WORKDIR /home/$ADMINUSER" |
tee Dockerfile
sudo su -c "$(which docker) build -t alpine-with-admin-user ."
popd > /dev/null
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment