diff --git a/nix/shell.nix b/nix/shell.nix index 9b37289..56237df 100644 --- a/nix/shell.nix +++ b/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}"; }; }