diff --git a/flake.nix b/flake.nix index ad29dff..64501f5 100644 --- a/flake.nix +++ b/flake.nix @@ -26,21 +26,27 @@ flake-utils.lib.eachDefaultSystem ( system: let - target = "x86_64-unknown-linux-musl"; + rustVersion = "1.83.0"; - pkgs = import nixpkgs { - inherit system; - overlays = [ (import rust-overlay) ]; - crossSystem.config = target; - }; - staticPkgs = pkgs.pkgsStatic; + overlays = [ + (import rust-overlay) + (final: prev: { + nix-filter = nix-filter.lib; + rust-toolchain = pkgs.rust-bin.stable.${rustVersion}.default; + rust-dev-toolchain = pkgs.rust-toolchain.override { + extensions = [ + "rust-analyzer" + "rust-src" + ]; + targets = [ + "x86_64-unknown-linux-gnu" + ]; + }; + }) + ]; - craneLib = (crane.mkLib staticPkgs).overrideToolchain ( - p: - p.rust-bin.stable.latest.default.override { - targets = [ target ]; - } - ); + pkgs = import nixpkgs { inherit overlays system; }; + craneLib = (crane.mkLib pkgs).overrideToolchain pkgs.rust-toolchain; src = pkgs.lib.fileset.toSource { root = ./.; @@ -52,23 +58,31 @@ ]; }; + cleanSrc = craneLib.cleanCargoSource ../.; + + + commonArgs = { - inherit src; + inherit src cleanSrc; + #stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv; strictDeps = true; + cargoArtifacts = craneLib.buildDepsOnly commonArgs; - nativeBuildInputs = with staticPkgs.pkgsBuildHost; [ pkg-config ]; - buildInputs = with staticPkgs.pkgsHostHost; [ openssl ]; + nativeBuildInputs = with pkgs; [ + pkg-config + ]; - CARGO_BUILD_TARGET = target; + BuildInputs = with pkgs; [ + openssl + ]; + + CARGO_BUILD_TARGET = "x86_64-unknown-linux-gnu"; CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static"; - "CARGO_TARGET_${pkgs.lib.toUpper (builtins.replaceStrings [ "-" ] [ "_" ] target)}_LINKER" = - "${staticPkgs.stdenv.cc.targetPrefix}cc"; - - OPENSSL_STATIC = true; - OPENSSL_DIR = "${staticPkgs.openssl.dev}"; - OPENSSL_LIB_DIR = "${staticPkgs.openssl.out}/lib"; - OPENSSL_INCLUDE_DIR = "${staticPkgs.openssl.dev}/include/"; + OPENSSL_STATIC = "true"; + OPENSSL_DIR = "${pkgs.openssl.dev}"; + OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib"; + OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include/"; }; buildCrate = @@ -120,12 +134,7 @@ }; checks = { - inherit - hostd - patagia-agent - patagia-controller - xtask - ; + inherit patagia-agent patagia-controller xtask; audit = craneLib.cargoAudit (commonArgs // { inherit advisory-db; }); @@ -162,22 +171,25 @@ devShells.default = pkgs.mkShell { nativeBuildInputs = commonArgs.nativeBuildInputs; - buildInputs = with pkgs; [ - bacon - cargo-edit - cargo-features-manager - cargo-hakari - cargo-machete - cargo-nextest - cargo-watch - hyperfine - just - nixfmt-rfc-style - rust-dev-toolchain - sqls - sqlx-cli - watchexec - ]; + buildInputs = + with pkgs; + [ + bacon + cargo-edit + cargo-features-manager + cargo-hakari + cargo-machete + cargo-nextest + cargo-watch + glibc.static + hyperfine + just + nixfmt-rfc-style + rust-dev-toolchain + sqls + sqlx-cli + watchexec + ]; RUST_BACKTRACE = 1; RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; # Required for rust-analyzer };