diff --git a/flake.nix b/flake.nix index eef4312..5e4017d 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,4 @@ { - description = "Rust Project Template"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; rust-overlay = { @@ -9,27 +8,18 @@ }; outputs = { - self, nixpkgs, rust-overlay, + ... }: let systems = ["x86_64-linux" "aarch64-linux"]; forEachSystem = nixpkgs.lib.genAttrs systems; pkgsForEach = nixpkgs.legacyPackages; 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 - pkgs = nixpkgs.legacyPackages.${system}.extend rust-overlay.overlays.default; + pkgs = pkgsForEach.${system}.extend rust-overlay.overlays.default; in { default = pkgs.callPackage ./nix/shell.nix {}; }); - - hydraJobs = self.packages; }; } diff --git a/nix/shell.nix b/nix/shell.nix index ff6a45b..8b8d0a0 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -4,78 +4,79 @@ # rust-overlay params extraComponents ? [], extraTargets ? [], -}: -pkgs.mkShell { - name = "mercant-devshell"; - packages = [ - pkgs.taplo # TOML formatter - pkgs.lldb # debugger - pkgs.rust-analyzer-unwrapped # LSP - pkgs.llvm - pkgs.libiconv +}: let + inherit (pkgs.rustc) llvmPackages; +in + pkgs.mkShell { + name = "pinakes-dev"; + packages = [ + pkgs.taplo # TOML formatter + pkgs.lldb # debugger + pkgs.llvm + pkgs.libiconv - # Additional Cargo Tooling - pkgs.cargo-nextest - pkgs.cargo-deny + # Additional Cargo Tooling + pkgs.cargo-nextest + pkgs.cargo-deny - # 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-analyzer" "clippy"] ++ extraComponents; - targets = - [ - "wasm32-unknown-unknown" # web - ] - ++ extraTargets; - }) + # 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-analyzer" "clippy" "rust-analyzer"] ++ extraComponents; + targets = + [ + "wasm32-unknown-unknown" # web + ] + ++ extraTargets; + }) - # Link with Clang & lld - pkgs.clang - pkgs.lld + # Link with Clang & lld + pkgs.clang + pkgs.lld - # Handy CLI for packaging Dioxus apps and such - pkgs.dioxus-cli + # 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 - ]; - - 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 + # Dioxus desktop dependencies (GTK/WebKit) + pkgs.pkg-config + pkgs.glib pkgs.gtk3 pkgs.webkitgtk_4_1 - pkgs.glib + pkgs.libsoup_3 pkgs.cairo pkgs.pango pkgs.gdk-pixbuf pkgs.atk - pkgs.libsoup_3 + pkgs.xdotool # provides libxdo pkgs.openssl 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 + ]}"; + }; + }