nix: modernize devshell

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I3ff191ec1477db9a61dfc9aeb63258406a6a6964
This commit is contained in:
raf 2026-03-04 15:12:53 +03:00
commit 97a1df9b84
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

@ -1,4 +1,5 @@
{ {
lib,
pkgs, pkgs,
rust-bin, rust-bin,
# rust-overlay params # rust-overlay params
@ -6,53 +7,57 @@
extraTargets ? [], extraTargets ? [],
}: let }: let
inherit (pkgs.rustc) llvmPackages; inherit (pkgs.rustc) llvmPackages;
# Dioxus desktop dependencies (GTK/WebKit)
runtimeDeps = [
pkgs.pkg-config
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
pkgs.libiconv
];
in in
pkgs.mkShell { pkgs.mkShell {
name = "pinakes-dev"; name = "pinakes-dev";
packages = [ packages =
pkgs.taplo # TOML formatter [
pkgs.lldb # debugger pkgs.taplo # TOML formatter
pkgs.llvm pkgs.lldb # debugger
pkgs.libiconv pkgs.llvm
# Additional Cargo Tooling # Modern, LLVM based linking pipelime
pkgs.cargo-nextest llvmPackages.lld
pkgs.cargo-deny llvmPackages.clang
# Build tools # Additional Cargo Tooling
# We use the rust-overlay to get the stable Rust toolchain for various targets. pkgs.cargo-nextest
# This is not exactly necessary, but it allows for compiling for various targets pkgs.cargo-deny
# with the least amount of friction.
(rust-bin.nightly.latest.default.override {
extensions = ["rustfmt" "rust-src" "rust-analyzer" "clippy" "rust-analyzer"] ++ extraComponents;
targets =
[
"wasm32-unknown-unknown" # web
]
++ extraTargets;
})
# Link with Clang & lld # Build tools
pkgs.clang # We use the rust-overlay to get the stable Rust toolchain for various targets.
pkgs.lld # This is not exactly necessary, but it allows for compiling for various targets
# with the least amount of friction.
(rust-bin.nightly.latest.default.override {
extensions = ["rustfmt" "rust-src" "rust-analyzer" "clippy" "rust-analyzer"] ++ extraComponents;
targets =
[
"wasm32-unknown-unknown" # web
]
++ extraTargets;
})
# 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) ++ runtimeDeps;
pkgs.pkg-config
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 = { env = {
# Allow Cargo to use lld and clang properly # Allow Cargo to use lld and clang properly
@ -61,22 +66,10 @@ in
# 'cargo llvm-cov' reads these environment variables to find these # 'cargo llvm-cov' reads these environment variables to find these
# binaries, which are needed to run the tests. # binaries, which are needed to run the tests.
LLVM_COV = "${pkgs.llvm}/bin/llvm-cov"; LLVM_COV = "${llvmPackages.llvm}/bin/llvm-cov";
LLVM_PROFDATA = "${pkgs.llvm}/bin/llvm-profdata"; LLVM_PROFDATA = "${llvmPackages.llvm}/bin/llvm-profdata";
# Runtime library path for GTK/WebKit/xdotool # Runtime library path for GTK/WebKit/xdotool
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [ LD_LIBRARY_PATH = "${lib.makeLibraryPath runtimeDeps}";
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
]}";
}; };
} }