diff --git a/.gitea/workflows/fedora.yaml b/.gitea/workflows/fedora.yaml index 90b73cb..07d891a 100644 --- a/.gitea/workflows/fedora.yaml +++ b/.gitea/workflows/fedora.yaml @@ -4,18 +4,10 @@ on: branches: ["main"] paths: - "containers/fedora/**" - - "containers/go/**" - - "containers/infra/**" + - "containers/dotnet/**" + - "containers/rust/**" + - "containers/php/**" - ".gitea/workflows/fedora.yaml" - pull_request: - branches: ["main"] - paths: - - "containers/fedora/**" - - "containers/go/**" - - "containers/infra/**" - - ".gitea/workflows/fedora.yaml" - schedule: - - cron: "0 16 * * FRI" jobs: fedora-build: @@ -31,30 +23,43 @@ jobs: registry: git.plabble.org username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - - name: Build and push fedora container + + - name: Build and push Fedora container uses: docker/build-push-action@v5 with: context: ./containers/fedora file: ./containers/fedora/Containerfile push: true - tags: git.plabble.org/job79/fedora:${{ github.ref_name }} + tags: git.plabble.org/maurice/fedora:${{ github.ref_name }} build-args: TAG=${{ github.ref_name }} outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true - - name: Build and push go container + + - name: Build and push Rust container uses: docker/build-push-action@v5 with: - context: ./containers/go - file: ./containers/go/Containerfile + context: ./containers/rust + file: ./containers/rust/Containerfile push: true - tags: git.plabble.org/job79/go:${{ github.ref_name }} + tags: git.plabble.org/maurice/rust:${{ github.ref_name }} build-args: TAG=${{ github.ref_name }} outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true - - name: Build and push infra container + + - name: Build and push PHP container uses: docker/build-push-action@v5 with: - context: ./containers/infra - file: ./containers/infra/Containerfile + context: ./containers/php + file: ./containers/php/Containerfile push: true - tags: git.plabble.org/job79/infra:${{ github.ref_name }} + tags: git.plabble.org/maurice/php:${{ github.ref_name }} + build-args: TAG=${{ github.ref_name }} + outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true + + - name: Build and push C# container + uses: docker/build-push-action@v5 + with: + context: ./containers/dotnet + file: ./containers/dotnet/Containerfile + push: true + tags: git.plabble.org/maurice/dotnet:${{ github.ref_name }} build-args: TAG=${{ github.ref_name }} outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true diff --git a/.gitea/workflows/kali.yaml b/.gitea/workflows/kali.yaml deleted file mode 100644 index 5d8e2cc..0000000 --- a/.gitea/workflows/kali.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: Build container -on: - push: - branches: ["main"] - paths: - - "containers/kali/**" - - ".gitea/workflows/kali.yaml" - pull_request: - branches: ["main"] - paths: - - "containers/kali/**" - - ".gitea/workflows/kali.yaml" - schedule: - - cron: "0 16 * * FRI" - -jobs: - kali-build: - runs-on: job-latest - steps: - - name: Clone repo - uses: actions/checkout@v4 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Login to Registry - uses: docker/login-action@v3 - with: - registry: git.plabble.org - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_TOKEN }} - - name: Build and push kali container - uses: docker/build-push-action@v5 - with: - context: ./containers/kali - file: ./containers/kali/Containerfile - push: true - tags: git.plabble.org/job79/kali:${{ github.ref_name }} - outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true diff --git a/containers/dotnet/Containerfile b/containers/dotnet/Containerfile new file mode 100644 index 0000000..c24c304 --- /dev/null +++ b/containers/dotnet/Containerfile @@ -0,0 +1,9 @@ +FROM git.plabble.org/maurice/devc-base:main + +USER root +RUN dnf -y install dotnet-sdk-9.0 + +COPY scripts/install-roslyn.sh /tmp/install-roslyn.sh +RUN chmod +x /tmp/install-roslyn.sh && /tmp/install-roslyn.sh + +USER user \ No newline at end of file diff --git a/containers/dotnet/install-roslyn.sh b/containers/dotnet/install-roslyn.sh new file mode 100644 index 0000000..565abb0 --- /dev/null +++ b/containers/dotnet/install-roslyn.sh @@ -0,0 +1,9 @@ +#!/bin/bash +version="v1.39.15-beta.60" +arch="linux-musl-x64" +link="https://github.com/OmniSharp/omnisharp-roslyn/releases/download/$version/omnisharp-$arch-net6.0.tar.gz" + +wget -O /tmp/omnisharp.tar.gz $link +mkdir /home/user/.omnisharp +tar -zxf /tmp/omnisharp.tar.gz -C /home/user/.omnisharp/ +chown -R user:user /home/user/.omnisharp \ No newline at end of file diff --git a/containers/fedora/Containerfile b/containers/fedora/Containerfile index df54734..d1ac034 100644 --- a/containers/fedora/Containerfile +++ b/containers/fedora/Containerfile @@ -5,7 +5,7 @@ RUN dnf update -y && \ dnf copr enable -y atim/lazygit && \ dnf -y install procps ping bash-completion glibc-langpack-en \ host-spawn dbus-launch \ - zoxide git npm neovim awk jq unzip fd-find lazygit + git pnpm helix # === setup user === RUN useradd -ms /bin/bash user && \ @@ -16,9 +16,15 @@ USER user WORKDIR /home/user RUN mkdir .config .local .cache -RUN git clone https://git.plabble.org/Job79/neovim-config.git .config/nvim COPY --chown=user:user config/bashrc .bashrc COPY --chown=user:user config/git .config/git/config COPY config/bin /usr/local/bin +# === Add host entry for podman === +RUN ln -s /usr/local/bin/host /usr/local/bin/podman + +# === Setup PNPM & install language servers === +RUN /bin/bash -c "pnpm setup && . /home/user/.bashrc && pnpm i -g deno bash-language-server vscode-langservers-extracted dockerfile-language-server-nodejs \ + typescript typescript-language-server" + VOLUME /home/user diff --git a/containers/fedora/config/bashrc b/containers/fedora/config/bashrc index c5cc3fa..ae6b1c7 100644 --- a/containers/fedora/config/bashrc +++ b/containers/fedora/config/bashrc @@ -1,7 +1,7 @@ . /etc/bashrc # === environment === -export EDITOR=nvim \ +export EDITOR=hx \ WAYLAND_DISPLAY=wayland-0 \ XDG_RUNTIME_DIR=/run/user/1000 \ SSH_AUTH_SOCK=/run/user/1000/ssh-auth-sock \ @@ -9,8 +9,13 @@ export EDITOR=nvim \ TZ="Europe/Amsterdam" # === aliases and functions === -alias vi=nvim -post() { curl -sF "content=<-" "https://paste.plabble.org/$2?lang=$1" && echo; } +pbcopy() { curl -sF "content=<-" "https://paste.plabble.org/$2?lang=$1" && echo; } +alias random="cat /dev/urandom | tr -dc '[:alpha:]' | fold -w ${1:-20} | head -n 1" -eval "$(zoxide init --cmd cd bash)" -eval "$(fzf --bash)" +# Git aliases +alias gc="git commit -m" +alias ga="git add -A" +alias gf="git fetch" +alias gp="git pull" +alias gpp="git push" +alias gs="git status" \ No newline at end of file diff --git a/containers/fedora/config/bin/podman b/containers/fedora/config/bin/podman deleted file mode 120000 index fe198d7..0000000 --- a/containers/fedora/config/bin/podman +++ /dev/null @@ -1 +0,0 @@ -host \ No newline at end of file diff --git a/containers/fedora/config/bin/xdg-open b/containers/fedora/config/bin/xdg-open deleted file mode 120000 index fe198d7..0000000 --- a/containers/fedora/config/bin/xdg-open +++ /dev/null @@ -1 +0,0 @@ -host \ No newline at end of file diff --git a/containers/fedora/config/git b/containers/fedora/config/git index d898cb2..6ca2f0b 100644 --- a/containers/fedora/config/git +++ b/containers/fedora/config/git @@ -1,7 +1,7 @@ [user] - email = job@plabble.org - name = Job79 - signingKey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPsqM6ABAaCTQZ+llFXD3CXrYYuIHDEnvz8IBbXddYEc job@plabble.org + email = maurict@pm.me + name = Maurice + signingKey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGL/am4HDyfV0OWwaI3CeKGypBdzNXOYSbcnm6tK/VB+ maurict@pm.me [gpg] format = ssh [commit] @@ -9,4 +9,4 @@ [push] autoSetupRemote = true [init] - defaultBranch = main + defaultBranch = main \ No newline at end of file diff --git a/containers/go/Containerfile b/containers/go/Containerfile deleted file mode 100644 index cc4ada4..0000000 --- a/containers/go/Containerfile +++ /dev/null @@ -1,5 +0,0 @@ -ARG TAG -FROM git.plabble.org/job79/fedora:${TAG} -USER root -RUN dnf -y install go -USER user diff --git a/containers/go/config.sh b/containers/go/config.sh deleted file mode 100644 index 276f925..0000000 --- a/containers/go/config.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -arg "-v $HOME/Documents/containers/go:/home/user/projects" diff --git a/containers/infra/Containerfile b/containers/infra/Containerfile deleted file mode 100644 index 70f1418..0000000 --- a/containers/infra/Containerfile +++ /dev/null @@ -1,6 +0,0 @@ -ARG TAG -FROM git.plabble.org/job79/fedora:${TAG} -USER root -RUN dnf -y install kubectl openssl -RUN curl -sL https://talos.dev/install | sh -USER user diff --git a/containers/infra/config.sh b/containers/infra/config.sh deleted file mode 100644 index efcc191..0000000 --- a/containers/infra/config.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -arg "-v $HOME/Documents/containers/infra:/home/user/projects" diff --git a/containers/kali/Containerfile b/containers/kali/Containerfile deleted file mode 100644 index 42b4984..0000000 --- a/containers/kali/Containerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM docker.io/kalilinux/kali-rolling - -# === install system packages === -RUN apt update && \ - apt -y install iputils-ping sudo \ - zoxide git npm neovim gawk jq unzip fd-find lazygit - -# === setup user === -RUN useradd -ms /bin/bash user && \ - usermod -aG sudo user && sed -i 's/^%sudo\s\+ALL=(ALL:ALL)\s\+ALL$/%sudo\tALL=(ALL:ALL)\tNOPASSWD: ALL/' /etc/sudoers && \ - mkdir -p /run/user/1000 && chown user:user /run/user/1000 - -USER user -WORKDIR /home/user -RUN mkdir -p .config .local .cache -RUN git clone https://git.plabble.org/Job79/neovim-config.git .config/nvim -VOLUME /home/user diff --git a/containers/php/Containerfile b/containers/php/Containerfile new file mode 100644 index 0000000..8d2db8e --- /dev/null +++ b/containers/php/Containerfile @@ -0,0 +1,3 @@ +FROM git.plabble.org/maurice/devc-base:main + +RUN /bin/bash -c "$(curl -fsSL https://php.new/install/linux/8.4)" \ No newline at end of file diff --git a/containers/rust/Containerfile b/containers/rust/Containerfile new file mode 100644 index 0000000..ce3336d --- /dev/null +++ b/containers/rust/Containerfile @@ -0,0 +1,4 @@ +FROM git.plabble.org/maurice/devc-base:main + +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +RUN . '/home/user/.cargo/env' && rustup component add rust-analyzer \ No newline at end of file diff --git a/devc.sh b/devc.sh index 0a86901..12b5995 100755 --- a/devc.sh +++ b/devc.sh @@ -1,6 +1,6 @@ #!/bin/bash # =============================================== # -# devc.sh v2.0; job79 # +# devc.sh v2.0; job79, maurice # # Dev container enter script. Handles setting up # # different dev containers, resuming sessions and # # automatic container updates. # @@ -36,6 +36,9 @@ default_args() { # restarts. Use copy to keep the files from the image. arg "-v $name:/home/user:copy" + # Mount dev folder + arg "-v $HOME/dev:/home/user/dev" + # If there is custom configuration for the container, load # it here. config_file="$(dirname "$(realpath "$0")")/containers/$name/config.sh"