aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2023-05-09 17:22:17 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2023-05-09 17:22:17 +0200
commitafb5ef17646e191eefc59428d7e86a2d675d16d1 (patch)
tree54f715e8fad3d6744c0d69e6221b452e41e0277f
parent8711c0c1900dc9a67a57b32d3a6eb713e0700910 (diff)
downloadaerogramme-afb5ef17646e191eefc59428d7e86a2d675d16d1.tar.gz
aerogramme-afb5ef17646e191eefc59428d7e86a2d675d16d1.zip
add support for armv6l
-rw-r--r--flake.nix38
1 files changed, 31 insertions, 7 deletions
diff --git a/flake.nix b/flake.nix
index fc1780d..d7c2ac5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,16 +2,19 @@
description = "Aerogramme";
inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/master";
+ flake-utils.url = "github:numtide/flake-utils";
+
+ # this patched version of cargo2nix makes easier to use clippy for building
cargo2nix = {
type = "github";
owner = "Alexis211";
repo = "cargo2nix";
ref = "custom_unstable";
};
- nixpkgs.url = "github:NixOS/nixpkgs/master";
- #cargo2nix.url = "github:cargo2nix/cargo2nix/release-0.11.0";
+
+ # use rust project builds
fenix.url = "github:nix-community/fenix/monthly";
- flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, cargo2nix, flake-utils, fenix }:
@@ -20,13 +23,32 @@
"aarch64-unknown-linux-musl"
"armv6l-unknown-linux-musleabihf"
] (targetHost: let
+
+ # with fenix, we get builds from the rust project.
+ # they are done with an old version of musl (prior to 1.2.x that is used in NixOS),
+ # however musl has a breaking change from 1.1.x to 1.2.x on 32 bit systems.
+ # so we pin the lib to 1.1.x to avoid recompiling rust ourselves.
+ muslOverlay = self: super: {
+ musl = super.musl.overrideAttrs(old: if targetHost == "armv6l-unknown-linux-musleabihf" then rec {
+ pname = "musl";
+ version = "1.1.24";
+ src = builtins.fetchurl {
+ url = "https://musl.libc.org/releases/${pname}-${version}.tar.gz";
+ sha256 = "sha256:18r2a00k82hz0mqdvgm7crzc7305l36109c0j9yjmkxj2alcjw0k";
+ };
+ } else {});
+ };
+
pkgs = import nixpkgs {
system = "x86_64-linux"; # hardcoded as we will cross compile
crossSystem = {
config = targetHost; # here we cross compile
isStatic = true;
};
- overlays = [cargo2nix.overlays.default];
+ overlays = [
+ cargo2nix.overlays.default
+ muslOverlay
+ ];
};
shell = pkgs.mkShell {
@@ -34,15 +56,17 @@
cargo2nix.packages.x86_64-linux.default
];
};
+
+ rustTarget = if targetHost == "armv6l-unknown-linux-musleabihf" then "arm-unknown-linux-musleabihf" else targetHost;
rustPkgs = pkgs.rustBuilder.makePackageSet({
+ packageFun = import ./Cargo.nix;
+ target = rustTarget;
rustToolchain = with fenix.packages.x86_64-linux; combine [
minimal.cargo
minimal.rustc
- targets.${targetHost}.latest.rust-std
+ targets.${rustTarget}.latest.rust-std
];
-
- packageFun = import ./Cargo.nix;
});
in {