###################################################### # BUILD IMAGE ###################################################### FROM docker.io/swift:latest as build RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ && apt-get -q update \ && apt-get -q dist-upgrade -y \ && apt-get -q install -y \ cmake \ rustup \ && rm -rf /var/lib/apt/lists/* # Build and install starship, bob, and neovim. RUN rustup default stable \ && cargo install starship --locked \ && cargo install --git https://github.com/MordechaiHadad/bob.git \ && /root/.cargo/bin/bob install nightly \ && /root/.cargo/bin/bob use nightly ###################################################### # RUN IMAGE ###################################################### FROM docker.io/swift:latest RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ && apt-get -q update \ && apt-get -q dist-upgrade -y \ && apt-get -q install -y \ curl \ direnv \ eza \ fzf \ ripgrep \ zsh \ && rm -rf /var/lib/apt/lists/* # Remove the ubuntu user, if it exists, so we can create the "swift" user. RUN touch /var/mail/ubuntu && chown ubuntu /var/mail/ubuntu && userdel -r ubuntu || true # Create the "swift" user RUN groupadd --gid 1000 swift \ && useradd -s /bin/zsh --uid 1000 --gid 1000 -m swift # Copy dependencies from build image. COPY --from=build /root/.cargo/bin/starship /usr/local/bin/starship COPY --from=build /root/.cargo/bin/bob /home/swift/.local/bin/bob COPY --from=build /root/.local/share/bob /home/swift/.local/share/bob RUN chown -R swift:swift /home/swift/.local USER swift # Install dotfiles RUN cd /home/swift \ && git clone https://github.com/m-housh/dotfiles.git \ && cd dotfiles \ && git switch arch \ && DEV_ENV=/home/swift/dotfiles ./devcontainer-env