Skip to content

Commit 06a11b8

Browse files
committed
add nix package for cross-compiling to windows
1 parent c602fe6 commit 06a11b8

File tree

3 files changed

+71
-7
lines changed

3 files changed

+71
-7
lines changed

flake.lock

Lines changed: 41 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
flake-parts.url = "github:hercules-ci/flake-parts";
77
naersk.url = "github:nix-community/naersk";
88
naersk.inputs.nixpkgs.follows = "nixpkgs";
9+
fenix.url = "github:nix-community/fenix";
10+
fenix.inputs.nixpkgs.follows = "nixpkgs";
911
};
1012

1113
outputs = inputs:

nix/packages.nix

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{ inputs, ... }: {
2-
perSystem = { system, config, lib, pkgs, ... }: {
3-
packages = {
4-
shadow-harvester = let
5-
naersk-lib = inputs.naersk.lib.${system};
6-
in naersk-lib.buildPackage rec {
2+
perSystem = { inputs', system, config, lib, pkgs, ... }: {
3+
packages = let
4+
naerskBuildPackageArgs = rec {
75
pname = "shadow-harvester";
86

7+
strictDeps = true;
8+
99
src = with lib.fileset; toSource {
1010
root = ./..;
1111
fileset = unions [
@@ -40,6 +40,29 @@
4040
];
4141
};
4242
};
43+
in {
44+
shadow-harvester = inputs.naersk.lib.${system}.buildPackage naerskBuildPackageArgs;
45+
46+
shadow-harvester-x86_64-pc-windows-gnu = (let
47+
toolchain = with inputs'.fenix.packages;
48+
combine [
49+
minimal.rustc
50+
minimal.cargo
51+
targets.x86_64-pc-windows-gnu.latest.rust-std
52+
];
53+
in inputs.naersk.lib.${system}.override {
54+
cargo = toolchain;
55+
rustc = toolchain;
56+
}).buildPackage (naerskBuildPackageArgs // {
57+
depsBuildBuild = with pkgs.pkgsCross.mingwW64; naerskBuildPackageArgs.depsBuildBuild or [] ++ [
58+
stdenv.cc
59+
windows.pthreads
60+
];
61+
62+
doCheck = false;
63+
64+
CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu";
65+
});
4366

4467
sledtool = pkgs.rustPlatform.buildRustPackage rec {
4568
pname = "sledtool";

0 commit comments

Comments
 (0)