nix: cleanup; get rust-analyzer from overlay

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2bfd563820ce6258798d8f06247e4ffe6a6a6964
This commit is contained in:
raf 2026-02-09 14:34:17 +03:00
commit d6665c73ff
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
2 changed files with 65 additions and 74 deletions

View file

@ -1,5 +1,4 @@
{ {
description = "Rust Project Template";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
rust-overlay = { rust-overlay = {
@ -9,27 +8,18 @@
}; };
outputs = { outputs = {
self,
nixpkgs, nixpkgs,
rust-overlay, rust-overlay,
...
}: let }: let
systems = ["x86_64-linux" "aarch64-linux"]; systems = ["x86_64-linux" "aarch64-linux"];
forEachSystem = nixpkgs.lib.genAttrs systems; forEachSystem = nixpkgs.lib.genAttrs systems;
pkgsForEach = nixpkgs.legacyPackages; pkgsForEach = nixpkgs.legacyPackages;
in { in {
packages = forEachSystem (system: let
pkgs = pkgsForEach.${system};
in {
mercant = pkgs.callPackage ./nix/packages/mercant.nix {};
webview-sdk = pkgs.callPackage ./nix/packages/webview.nix {};
});
devShells = forEachSystem (system: let devShells = forEachSystem (system: let
pkgs = nixpkgs.legacyPackages.${system}.extend rust-overlay.overlays.default; pkgs = pkgsForEach.${system}.extend rust-overlay.overlays.default;
in { in {
default = pkgs.callPackage ./nix/shell.nix {}; default = pkgs.callPackage ./nix/shell.nix {};
}); });
hydraJobs = self.packages;
}; };
} }

View file

@ -4,78 +4,79 @@
# rust-overlay params # rust-overlay params
extraComponents ? [], extraComponents ? [],
extraTargets ? [], extraTargets ? [],
}: }: let
pkgs.mkShell { inherit (pkgs.rustc) llvmPackages;
name = "mercant-devshell"; in
packages = [ pkgs.mkShell {
pkgs.taplo # TOML formatter name = "pinakes-dev";
pkgs.lldb # debugger packages = [
pkgs.rust-analyzer-unwrapped # LSP pkgs.taplo # TOML formatter
pkgs.llvm pkgs.lldb # debugger
pkgs.libiconv pkgs.llvm
pkgs.libiconv
# Additional Cargo Tooling # Additional Cargo Tooling
pkgs.cargo-nextest pkgs.cargo-nextest
pkgs.cargo-deny pkgs.cargo-deny
# Build tools # Build tools
# We use the rust-overlay to get the stable Rust toolchain for various targets. # We use the rust-overlay to get the stable Rust toolchain for various targets.
# This is not exactly necessary, but it allows for compiling for various targets # This is not exactly necessary, but it allows for compiling for various targets
# with the least amount of friction. # with the least amount of friction.
(rust-bin.nightly.latest.default.override { (rust-bin.nightly.latest.default.override {
extensions = ["rustfmt" "rust-analyzer" "clippy"] ++ extraComponents; extensions = ["rustfmt" "rust-analyzer" "clippy" "rust-analyzer"] ++ extraComponents;
targets = targets =
[ [
"wasm32-unknown-unknown" # web "wasm32-unknown-unknown" # web
] ]
++ extraTargets; ++ extraTargets;
}) })
# Link with Clang & lld # Link with Clang & lld
pkgs.clang pkgs.clang
pkgs.lld pkgs.lld
# Handy CLI for packaging Dioxus apps and such # Handy CLI for packaging Dioxus apps and such
pkgs.dioxus-cli pkgs.dioxus-cli
# Dioxus desktop dependencies (GTK/WebKit) # Dioxus desktop dependencies (GTK/WebKit)
pkgs.pkg-config pkgs.pkg-config
pkgs.glib pkgs.glib
pkgs.gtk3
pkgs.webkitgtk_4_1
pkgs.libsoup_3
pkgs.cairo
pkgs.pango
pkgs.gdk-pixbuf
pkgs.atk
pkgs.xdotool # provides libxdo
pkgs.openssl
pkgs.kdePackages.wayland
];
env = {
# Allow Cargo to use lld and clang properly
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
RUSTFLAGS = "-C link-arg=-fuse-ld=lld";
# 'cargo llvm-cov' reads these environment variables to find these
# binaries, which are needed to run the tests.
LLVM_COV = "${pkgs.llvm}/bin/llvm-cov";
LLVM_PROFDATA = "${pkgs.llvm}/bin/llvm-profdata";
# Runtime library path for GTK/WebKit/xdotool
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
pkgs.xdotool
pkgs.gtk3 pkgs.gtk3
pkgs.webkitgtk_4_1 pkgs.webkitgtk_4_1
pkgs.glib pkgs.libsoup_3
pkgs.cairo pkgs.cairo
pkgs.pango pkgs.pango
pkgs.gdk-pixbuf pkgs.gdk-pixbuf
pkgs.atk pkgs.atk
pkgs.libsoup_3 pkgs.xdotool # provides libxdo
pkgs.openssl pkgs.openssl
pkgs.kdePackages.wayland pkgs.kdePackages.wayland
]}"; ];
};
} env = {
# Allow Cargo to use lld and clang properly
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
RUSTFLAGS = "-C link-arg=-fuse-ld=lld";
# 'cargo llvm-cov' reads these environment variables to find these
# binaries, which are needed to run the tests.
LLVM_COV = "${pkgs.llvm}/bin/llvm-cov";
LLVM_PROFDATA = "${pkgs.llvm}/bin/llvm-profdata";
# Runtime library path for GTK/WebKit/xdotool
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
pkgs.xdotool
pkgs.gtk3
pkgs.webkitgtk_4_1
pkgs.glib
pkgs.cairo
pkgs.pango
pkgs.gdk-pixbuf
pkgs.atk
pkgs.libsoup_3
pkgs.openssl
pkgs.kdePackages.wayland
]}";
};
}