nix: modernize devshell
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I3ff191ec1477db9a61dfc9aeb63258406a6a6964
This commit is contained in:
parent
cd1161ee5d
commit
97a1df9b84
1 changed files with 48 additions and 55 deletions
103
nix/shell.nix
103
nix/shell.nix
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
rust-bin,
|
||||
# rust-overlay params
|
||||
|
|
@ -6,53 +7,57 @@
|
|||
extraTargets ? [],
|
||||
}: let
|
||||
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
|
||||
pkgs.mkShell {
|
||||
name = "pinakes-dev";
|
||||
packages = [
|
||||
pkgs.taplo # TOML formatter
|
||||
pkgs.lldb # debugger
|
||||
pkgs.llvm
|
||||
pkgs.libiconv
|
||||
packages =
|
||||
[
|
||||
pkgs.taplo # TOML formatter
|
||||
pkgs.lldb # debugger
|
||||
pkgs.llvm
|
||||
|
||||
# Additional Cargo Tooling
|
||||
pkgs.cargo-nextest
|
||||
pkgs.cargo-deny
|
||||
# Modern, LLVM based linking pipelime
|
||||
llvmPackages.lld
|
||||
llvmPackages.clang
|
||||
|
||||
# Build tools
|
||||
# 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
|
||||
# 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;
|
||||
})
|
||||
# Additional Cargo Tooling
|
||||
pkgs.cargo-nextest
|
||||
pkgs.cargo-deny
|
||||
|
||||
# Link with Clang & lld
|
||||
pkgs.clang
|
||||
pkgs.lld
|
||||
# Build tools
|
||||
# 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
|
||||
# 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
|
||||
pkgs.dioxus-cli
|
||||
|
||||
# Dioxus desktop dependencies (GTK/WebKit)
|
||||
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
|
||||
];
|
||||
# Handy CLI for packaging Dioxus apps and such
|
||||
pkgs.dioxus-cli
|
||||
]
|
||||
++ runtimeDeps;
|
||||
|
||||
env = {
|
||||
# Allow Cargo to use lld and clang properly
|
||||
|
|
@ -61,22 +66,10 @@ in
|
|||
|
||||
# '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";
|
||||
LLVM_COV = "${llvmPackages.llvm}/bin/llvm-cov";
|
||||
LLVM_PROFDATA = "${llvmPackages.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
|
||||
]}";
|
||||
LD_LIBRARY_PATH = "${lib.makeLibraryPath runtimeDeps}";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue