DEV Community

mutterings in the dark
mutterings in the dark

Posted on

Setting up helix with rust on Alpine

Rust health check

To pass the helix rust health check hx --health rust, there are 4 items which need to be addressed:

  1. (LSP) Language Server Protocol
  2. (DAP) Debug Adapter Protocol
  3. formatter
  4. queries

Example of how to set these up are in the Dockerfile below.

Currently (2024 Sep) there's an issue with the default apk helix package, so build from source

languages.toml

[[language]] name = "rust" formatter = { command = "rustfmt" } 
Enter fullscreen mode Exit fullscreen mode

Note: if making changes to language.debugger, need to include everything

Dockerfile

# temp dir for building ARG HELIX_BUILD_DIR=/helix  # root dir for binary e.g. `/usr/bin/hx` ARG HELIX_BIN_DIR=/usr ARG HELIX_DEFAULT_RUNTIME=/usr/lib/helix/runtime #==rust== FROM docker.io/alpine AS rust RUN apk update && \  apk add --no-cache curl RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y # update PATH for cargo ENV PATH="/root/.cargo/bin:$PATH" #==helix== FROM rust AS helix-build ARG HELIX_BUILD_DIR ARG HELIX_BIN_DIR ARG HELIX_DEFAULT_RUNTIME ENV HELIX_DEFAULT_RUNTIME=$HELIX_DEFAULT_RUNTIME # https://www.reddit.com/r/HelixEditor/comments/11sfobd/not_getting_syntax_highlighting_even_though/ ENV RUSTFLAGS="-C target-feature=-crt-static" RUN apk update && \  apk add git g++ RUN git clone https://github.com/helix-editor/helix $HELIX_BUILD_DIR WORKDIR $HELIX_BUILD_DIR RUN cargo install --path helix-term --locked --root $HELIX_BIN_DIR FROM rust AS helix ARG HELIX_BUILD_DIR ARG HELIX_BIN_DIR ARG HELIX_DEFAULT_RUNTIME ENV HELIX_DEFAULT_RUNTIME=$HELIX_DEFAULT_RUNTIME ARG HOME=/root ARG HELIX_CONFIG=$HOME/.config/helix/ # 1. (LSP) Language Server Protocol RUN rustup component add rust-analyzer # 2. (DAP) Debug Adapter Protocol # workaround for lldb-dap https://github.com/helix-editor/helix/issues/9964 RUN apk add lldb && \  ln -s /usr/bin/lldb-vscode /usr/bin/lldb-dap # 3. formatter RUN mkdir -p $HELIX_CONFIG COPY languages.toml $HELIX_CONFIG # 4. queries RUN mkdir -p $HELIX_DEFAULT_RUNTIME COPY --from=helix-build $HELIX_BUILD_DIR/runtime $HELIX_DEFAULT_RUNTIME # binary COPY --from=helix-build $HELIX_BIN_DIR/bin/hx $HELIX_BIN_DIR/bin/ CMD ["hx"] 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)