My system configuration via Nix flakes
{ pkgs, ... }:
{
  # Start ra-multiplex
  systemd.user.services.ra-multiplex = {
    Unit = {
      Description = "Run the ra-multiplex server.";
    };
    Install = {
      WantedBy = [ "default.target" ];
    };
    Service = {
      ExecStart = "${pkgs.writeShellScript "start-ra-multiplex-server" ''
        #!/run/current-system/sw/bin/bash

        /etc/profiles/per-user/finchie/bin/ra-multiplex server
      ''}";
    };
  };

  home.packages = with pkgs; [
    (rust-bin.selectLatestNightlyWith (
      toolchain:
      toolchain.default.override {
        extensions = [
          "llvm-tools"
          "miri"
          "rust-src"
          "rustc-codegen-cranelift"
        ];
        targets = [
          "wasm32-unknown-unknown"
          "wasm32-wasip1"
          "wasm32-wasip1-threads"
          "wasm32-wasip2"
          "x86_64-apple-darwin"
          "x86_64-pc-windows-gnu"
          "x86_64-unknown-linux-musl"
          "x86_64-unknown-none"
        ];
      }
    ))

    # Analysis tools
    cargo-binutils
    cargo-expand
    cargo-rr
    cargo-show-asm

    # Dependency management
    cargo-audit
    cargo-autoinherit
    cargo-bloat
    cargo-depgraph
    cargo-diet
    cargo-edit
    cargo-shear
    cargo-modules
    cargo-unused-features
    cargo-update

    # Compilation tools
    bacon
    cargo-component
    cargo-dist
    cargo-nextest
    sccache

    # Compiler analysis
    cargo-bisect-rustc
    measureme

    # Storage management
    cargo-cache
    # TODO: switch back when local changes are upstreamed
    #cargo-sweep

    # WASM
    trunk
    wasm-bindgen-cli
    wasm-pack
  ];
}