| FROM archlinux:latest |
|
|
| RUN echo -e "[multilib]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf \ |
| && echo -e "[archlinuxcn]\nServer = https://mirrors.aliyun.com/archlinuxcn/\$arch" >> /etc/pacman.conf \ |
| && echo -e "[chaotic-aur]\nServer = https://geo-mirror.chaotic.cx/\$repo/\$arch" >> /etc/pacman.conf \ |
| && echo -e "[atri]\nServer = https://repo.apeiria.net/\$arch" >> /etc/pacman.conf |
|
|
| RUN pacman-key --init \ |
| && pacman-key --lsign-key "farseerfc@archlinux.org" \ |
| && pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com \ |
| && pacman-key --lsign-key 3056513887B78AEB \ |
| && pacman-key --recv-keys 293B93D8A471059F85D716A65BA92099D9BE2DAA \ |
| && pacman-key --lsign-key 293B93D8A471059F85D716A65BA92099D9BE2DAA \ |
| && pacman -Sy --noconfirm archlinuxcn-keyring |
|
|
| RUN pacman -Syu --noconfirm yay |
|
|
| RUN yay -S --noconfirm \ |
| aria2 \ |
| base-devel \ |
| clang \ |
| cmake \ |
| code-server \ |
| code-server-marketplace \ |
| curl \ |
| deno \ |
| direnv \ |
| fisher \ |
| fish \ |
| gcc \ |
| git \ |
| git-lfs \ |
| go \ |
| intel-oneapi-basekit \ |
| jq \ |
| nix \ |
| nodejs \ |
| openblas64 \ |
| openssh \ |
| p7zip \ |
| pkgconf \ |
| pkgfile \ |
| pypy \ |
| python \ |
| python-pip \ |
| ruff \ |
| rust \ |
| rye \ |
| screen \ |
| tinygo \ |
| unzip \ |
| uv \ |
| wget \ |
| xmake \ |
| zig \ |
| zip \ |
| && yay -Scc --noconfirm \ |
| && rm -rf /var/cache/pacman/* |
|
|
| RUN aria2c -c -x16 https://hf-mirror.com/hfd/hfd.sh \ |
| && chmod a+x hfd.sh \ |
| && mv hfd.sh /usr/bin/hfd |
| |
| RUN pkgfile --update |
| |
| RUN git lfs install |
| |
| RUN corepack prepare pnpm@latest \ |
| && corepack enable pnpm |
| |
| COPY fish-oneapi /usr/bin/fish-oneapi |
| |
| RUN chmod +x /usr/bin/fish-oneapi |
| |
| RUN useradd -m -s /usr/bin/fish-oneapi mzwing |
| |
| USER mzwing |
| |
| WORKDIR /home/mzwing |
| |
| RUN mkdir -p /home/mzwing/.ssh |
| |
| RUN plugins=( \ |
| "danhper/fish-ssh-agent" \ |
| "jethrokuan/z" \ |
| "franciscolourenco/done" \ |
| "jorgebucaran/autopair.fish" \ |
| ) \ |
| && for plugin in "${plugins[@]}"; do \ |
| fish -c "fisher install $plugin"; \ |
| done |
| |
| RUN rye toolchain register /usr/bin/python \ |
| && rye toolchain register /usr/bin/pypy |
| |
| RUN fish -c 'SHELL=/usr/bin/fish pnpm setup' |
| |
| RUN mkdir -p /home/mzwing/.config/code-server/ \ |
| && touch /home/mzwing/.config/code-server/config.yaml \ |
| && echo -e "bind-addr: 0.0.0.0:8080\nauth: password\ncert: false" > /home/mzwing/.config/code-server/config.yaml |
| |
| RUN extensions=( \ |
| "aaron-bond.better-comments" \ |
| "ahmadalli.vscode-nginx-conf" \ |
| "alefragnani.bookmarks" \ |
| "aminer.codegeex" \ |
| "antfu.browse-lite" \ |
| "antfu.vite" \ |
| "arrterian.nix-env-selector" \ |
| "bbenoist.nix" \ |
| "bierner.lit-html" \ |
| "christian-kohler.npm-intellisense" \ |
| "christian-kohler.path-intellisense" \ |
| "claui.packaging" \ |
| "codeium.codeium" \ |
| "codezombiech.gitignore" \ |
| "dart-code.dart-code" \ |
| "dart-code.flutter" \ |
| "davidanson.vscode-markdownlint" \ |
| "dbaeumer.vscode-eslint" \ |
| "denoland.vscode-deno" \ |
| "donjayamanne.githistory" \ |
| "eamodio.gitlens" \ |
| "editorconfig.editorconfig" \ |
| "esbenp.prettier-vscode" \ |
| "fill-labs.dependi" \ |
| "formulahendry.auto-close-tag" \ |
| "formulahendry.auto-rename-tag" \ |
| "gera2ld.markmap-vscode" \ |
| "get-snippets.get-snippets" \ |
| "github.codespaces" \ |
| "github.copilot" \ |
| "github.copilot-chat" \ |
| "github.remotehub" \ |
| "github.vscode-github-actions" \ |
| "golang.go" \ |
| "graphql.vscode-graphql-syntax" \ |
| "gruntfuggly.todo-tree" \ |
| "jeff-hykin.better-dockerfile-syntax" \ |
| "jnoortheen.nix-ide" \ |
| "justjavac.vscode-deno-extensionpack" \ |
| "laurencebahiirwa.deno-std-lib-snippets" \ |
| "lit.lit-snippets" \ |
| "matthewpi.caddyfile-support" \ |
| "mechatroner.rainbow-csv" \ |
| "mhutchie.git-graph" \ |
| "mirone.milkdown" \ |
| "misterj.vue-volar-extention-pack" \ |
| "mkhl.direnv" \ |
| "mrmlnc.vscode-json5" \ |
| "ms-dotnettools.csdevkit" \ |
| "ms-dotnettools.csharp" \ |
| "ms-dotnettools.vscode-dotnet-runtime" \ |
| "ms-dotnettools.vscodeintellicode-csharp" \ |
| "ms-python.black-formatter" \ |
| "ms-python.debugpy" \ |
| "ms-python.python" \ |
| "ms-python.vscode-pylance" \ |
| "ms-toolsai.jupyter" \ |
| "ms-toolsai.jupyter-keymap" \ |
| "ms-toolsai.jupyter-renderers" \ |
| "ms-toolsai.vscode-jupyter-cell-tags" \ |
| "ms-toolsai.vscode-jupyter-slideshow" \ |
| "ms-vscode.azure-repos" \ |
| "ms-vscode.cmake-tools" \ |
| "ms-vscode.cpptools" \ |
| "ms-vscode.cpptools-extension-pack" \ |
| "ms-vscode.cpptools-themes" \ |
| "ms-vscode.remote-repositories" \ |
| "msyrus.go-doc" \ |
| "njpwerner.autodocstring" \ |
| "oderwat.indent-rainbow" \ |
| "pinage404.nix-extension-pack" \ |
| "redhat.vscode-xml" \ |
| "redhat.vscode-yaml" \ |
| "rickyang.ocopilot" \ |
| "rust-lang.rust-analyzer" \ |
| "rxliuli.tsx" \ |
| "saoudrizwan.claude-dev" \ |
| "sibiraj-s.vscode-scss-formatter" \ |
| "swellaby.rust-pack" \ |
| "syler.sass-indented" \ |
| "tabnine.tabnine-vscode" \ |
| "tamasfe.even-better-toml" \ |
| "timonwong.shellcheck" \ |
| "twxs.cmake" \ |
| "visualstudioexptteam.intellicode-api-usage-examples" \ |
| "visualstudioexptteam.vscodeintellicode" \ |
| "visualstudioexptteam.vscodeintellicode-completions" \ |
| "vitaliymaz.vscode-svg-previewer" \ |
| "vitest.explorer" \ |
| "vue.volar" \ |
| "wayou.vscode-todo-highlight" \ |
| ) \ |
| && for extension in "${extensions[@]}"; do \ |
| code-server --config /home/mzwing/.config/code-server/config.yaml --install-extension "$extension"; \ |
| done |
| |
| RUN code-server --config /home/mzwing/.config/code-server/config.yaml --uninstall-extension "serayuzgur.crates" |
| |
| EXPOSE 8080 |
| |
| CMD ["code-server", "--config", "/home/mzwing/.config/code-server/config.yaml"] |