This commit is contained in:
Septias
2024-11-13 13:34:08 +01:00
parent 37f15c5282
commit 4b13f9352c

View File

@@ -8,17 +8,19 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
android.url = "github:tadfisher/android-nixpkgs"; android.url = "github:tadfisher/android-nixpkgs";
}; };
outputs = { outputs =
self, { self
nixpkgs, , nixpkgs
flake-utils, , flake-utils
nix-filter, , nix-filter
naersk, , naersk
fenix, , fenix
android, , android
,
}: }:
flake-utils.lib.eachDefaultSystem ( flake-utils.lib.eachDefaultSystem (
system: let system:
let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs.stdenv) isDarwin; inherit (pkgs.stdenv) isDarwin;
fenixPkgs = fenix.packages.${system}; fenixPkgs = fenix.packages.${system};
@@ -117,7 +119,8 @@
doCheck = false; # Disable test as it requires network access. doCheck = false; # Disable test as it requires network access.
}; };
pkgsWin64 = pkgs.pkgsCross.mingwW64; pkgsWin64 = pkgs.pkgsCross.mingwW64;
mkWin64RustPackage = packageName: let mkWin64RustPackage = packageName:
let
rustTarget = "x86_64-pc-windows-gnu"; rustTarget = "x86_64-pc-windows-gnu";
toolchainWin = fenixPkgs.combine [ toolchainWin = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
@@ -157,9 +160,11 @@
}; };
pkgsWin32 = pkgs.pkgsCross.mingw32; pkgsWin32 = pkgs.pkgsCross.mingw32;
mkWin32RustPackage = packageName: let mkWin32RustPackage = packageName:
let
rustTarget = "i686-pc-windows-gnu"; rustTarget = "i686-pc-windows-gnu";
in let in
let
toolchainWin = fenixPkgs.combine [ toolchainWin = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
fenixPkgs.stable.cargo fenixPkgs.stable.cargo
@@ -183,8 +188,7 @@
model = "win32"; model = "win32";
package = null; package = null;
}; };
}) }).overrideAttrs (oldAttr: {
.overrideAttrs (oldAttr: {
configureFlags = configureFlags =
oldAttr.configureFlags oldAttr.configureFlags
++ [ ++ [
@@ -220,14 +224,16 @@
LD = "${winCC}/bin/${winCC.targetPrefix}cc"; LD = "${winCC}/bin/${winCC.targetPrefix}cc";
}; };
mkCrossRustPackage = arch: packageName: let mkCrossRustPackage = arch: packageName:
let
rustTarget = arch2targets."${arch}".rustTarget; rustTarget = arch2targets."${arch}".rustTarget;
crossTarget = arch2targets."${arch}".crossTarget; crossTarget = arch2targets."${arch}".crossTarget;
pkgsCross = import nixpkgs { pkgsCross = import nixpkgs {
system = system; system = system;
crossSystem.config = crossTarget; crossSystem.config = crossTarget;
}; };
in let in
let
toolchain = fenixPkgs.combine [ toolchain = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
fenixPkgs.stable.cargo fenixPkgs.stable.cargo
@@ -280,7 +286,8 @@
}; };
}; };
mkAndroidRustPackage = arch: packageName: let mkAndroidRustPackage = arch: packageName:
let
rustTarget = androidAttrs.${arch}.rustTarget; rustTarget = androidAttrs.${arch}.rustTarget;
toolchain = fenixPkgs.combine [ toolchain = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
@@ -323,9 +330,11 @@
"deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl"; "deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl";
}; };
mkRustPackages = arch: let mkRustPackages = arch:
let
rpc-server = mkCrossRustPackage arch "deltachat-rpc-server"; rpc-server = mkCrossRustPackage arch "deltachat-rpc-server";
in { in
{
"deltachat-repl-${arch}" = mkCrossRustPackage arch "deltachat-repl"; "deltachat-repl-${arch}" = mkCrossRustPackage arch "deltachat-repl";
"deltachat-rpc-server-${arch}" = rpc-server; "deltachat-rpc-server-${arch}" = rpc-server;
"deltachat-rpc-server-${arch}-wheel" = pkgs.stdenv.mkDerivation { "deltachat-rpc-server-${arch}-wheel" = pkgs.stdenv.mkDerivation {
@@ -355,7 +364,8 @@
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out''; installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
}; };
}; };
in { in
{
formatter = pkgs.nixpkgs-fmt; formatter = pkgs.nixpkgs-fmt;
packages = packages =
@@ -527,7 +537,8 @@
}; };
}; };
devShells.default = let devShells.default =
let
pkgs = import nixpkgs { pkgs = import nixpkgs {
system = system; system = system;
overlays = [ fenix.overlays.default ]; overlays = [ fenix.overlays.default ];