diff --git a/flake.nix b/flake.nix index 64501f5..ad29dff 100644 --- a/flake.nix +++ b/flake.nix @@ -26,27 +26,21 @@ flake-utils.lib.eachDefaultSystem ( system: let - rustVersion = "1.83.0"; + target = "x86_64-unknown-linux-musl"; - 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" - ]; - }; - }) - ]; + pkgs = import nixpkgs { + inherit system; + overlays = [ (import rust-overlay) ]; + crossSystem.config = target; + }; + staticPkgs = pkgs.pkgsStatic; - pkgs = import nixpkgs { inherit overlays system; }; - craneLib = (crane.mkLib pkgs).overrideToolchain pkgs.rust-toolchain; + craneLib = (crane.mkLib staticPkgs).overrideToolchain ( + p: + p.rust-bin.stable.latest.default.override { + targets = [ target ]; + } + ); src = pkgs.lib.fileset.toSource { root = ./.; @@ -58,31 +52,23 @@ ]; }; - cleanSrc = craneLib.cleanCargoSource ../.; - - - commonArgs = { - inherit src cleanSrc; + inherit src; - #stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv; strictDeps = true; - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - nativeBuildInputs = with pkgs; [ - pkg-config - ]; + nativeBuildInputs = with staticPkgs.pkgsBuildHost; [ pkg-config ]; + buildInputs = with staticPkgs.pkgsHostHost; [ openssl ]; - BuildInputs = with pkgs; [ - openssl - ]; - - CARGO_BUILD_TARGET = "x86_64-unknown-linux-gnu"; + CARGO_BUILD_TARGET = target; CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static"; - OPENSSL_STATIC = "true"; - OPENSSL_DIR = "${pkgs.openssl.dev}"; - OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib"; - OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include/"; + "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/"; }; buildCrate = @@ -134,7 +120,12 @@ }; checks = { - inherit patagia-agent patagia-controller xtask; + inherit + hostd + patagia-agent + patagia-controller + xtask + ; audit = craneLib.cargoAudit (commonArgs // { inherit advisory-db; }); @@ -171,25 +162,22 @@ devShells.default = pkgs.mkShell { nativeBuildInputs = commonArgs.nativeBuildInputs; - 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 - ]; + 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 + ]; RUST_BACKTRACE = 1; RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; # Required for rust-analyzer };