|
21 | 21 | overlays = [rust-overlay.overlays.default]; |
22 | 22 | pkgs = import nixpkgs {inherit overlays system;}; |
23 | 23 |
|
| 24 | + # Cross-compilation setup for musl |
| 25 | + pkgsCross = import nixpkgs { |
| 26 | + inherit overlays; |
| 27 | + localSystem = system; |
| 28 | + crossSystem = { |
| 29 | + config = "x86_64-unknown-linux-musl"; |
| 30 | + isStatic = true; |
| 31 | + }; |
| 32 | + }; |
| 33 | + |
24 | 34 | rust = pkgs.rust-bin.stable.latest.default.override {extensions = ["rust-src"];}; |
25 | 35 | rustPlatform = pkgs.makeRustPlatform { |
26 | 36 | cargo = rust; |
27 | 37 | rustc = rust; |
28 | 38 | }; |
29 | 39 |
|
| 40 | + # Use cross-compiled rustPlatform for musl builds |
| 41 | + rustPlatformCross = pkgsCross.makeRustPlatform { |
| 42 | + cargo = rust; |
| 43 | + rustc = rust; |
| 44 | + }; |
| 45 | + |
30 | 46 | manifest = (pkgs.lib.importTOML ./Cargo.toml).package; |
31 | 47 | in { |
32 | 48 | # `nix develop`. |
|
75 | 91 | }; |
76 | 92 |
|
77 | 93 | # Static musl build for Linux distribution |
78 | | - anonymiser-musl = rustPlatform.buildRustPackage { |
| 94 | + anonymiser-musl = rustPlatformCross.buildRustPackage { |
79 | 95 | pname = "${manifest.name}-musl"; |
80 | 96 | version = manifest.version; |
81 | 97 | src = pkgs.nix-gitignore.gitignoreSource [] ./.; |
82 | 98 | cargoLock.lockFile = ./Cargo.lock; |
83 | 99 |
|
84 | | - # Target musl for static linking |
85 | | - CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl"; |
86 | | - CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static"; |
87 | | - |
88 | 100 | # Compile-time dependencies. |
89 | 101 | nativeBuildInputs = with pkgs; [ |
90 | 102 | pkg-config |
91 | 103 | cmake |
92 | 104 | perl # Required for vendored OpenSSL build |
93 | 105 | ]; |
94 | 106 |
|
95 | | - # With vendored OpenSSL, we don't need runtime dependencies |
| 107 | + # With vendored OpenSSL and static linking, we don't need runtime dependencies |
96 | 108 | buildInputs = []; |
97 | 109 |
|
98 | 110 | checkFlags = [ |
|
0 commit comments