mirror of
https://github.com/chatmail/core.git
synced 2026-05-06 06:46:35 +03:00
fmt
This commit is contained in:
277
flake.nix
277
flake.nix
@@ -8,21 +8,23 @@
|
|||||||
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};
|
||||||
naersk' = pkgs.callPackage naersk {};
|
naersk' = pkgs.callPackage naersk { };
|
||||||
manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
|
manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
|
||||||
androidSdk = android.sdk.${system} (sdkPkgs:
|
androidSdk = android.sdk.${system} (sdkPkgs:
|
||||||
builtins.attrValues {
|
builtins.attrValues {
|
||||||
@@ -104,7 +106,7 @@
|
|||||||
mkRustPackage = packageName:
|
mkRustPackage = packageName:
|
||||||
naersk'.buildPackage {
|
naersk'.buildPackage {
|
||||||
pname = packageName;
|
pname = packageName;
|
||||||
cargoBuildOptions = x: x ++ ["--package" packageName];
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
src = pkgs.lib.cleanSource ./.;
|
src = pkgs.lib.cleanSource ./.;
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
@@ -117,21 +119,22 @@
|
|||||||
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:
|
||||||
rustTarget = "x86_64-pc-windows-gnu";
|
let
|
||||||
toolchainWin = fenixPkgs.combine [
|
rustTarget = "x86_64-pc-windows-gnu";
|
||||||
fenixPkgs.stable.rustc
|
toolchainWin = fenixPkgs.combine [
|
||||||
fenixPkgs.stable.cargo
|
fenixPkgs.stable.rustc
|
||||||
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
fenixPkgs.stable.cargo
|
||||||
];
|
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
||||||
naerskWin = pkgs.callPackage naersk {
|
];
|
||||||
cargo = toolchainWin;
|
naerskWin = pkgs.callPackage naersk {
|
||||||
rustc = toolchainWin;
|
cargo = toolchainWin;
|
||||||
};
|
rustc = toolchainWin;
|
||||||
in
|
};
|
||||||
|
in
|
||||||
naerskWin.buildPackage rec {
|
naerskWin.buildPackage rec {
|
||||||
pname = packageName;
|
pname = packageName;
|
||||||
cargoBuildOptions = x: x ++ ["--package" packageName];
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
src = pkgs.lib.cleanSource ./.;
|
src = pkgs.lib.cleanSource ./.;
|
||||||
@@ -157,45 +160,46 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pkgsWin32 = pkgs.pkgsCross.mingw32;
|
pkgsWin32 = pkgs.pkgsCross.mingw32;
|
||||||
mkWin32RustPackage = packageName: let
|
mkWin32RustPackage = packageName:
|
||||||
rustTarget = "i686-pc-windows-gnu";
|
let
|
||||||
in let
|
rustTarget = "i686-pc-windows-gnu";
|
||||||
toolchainWin = fenixPkgs.combine [
|
in
|
||||||
fenixPkgs.stable.rustc
|
let
|
||||||
fenixPkgs.stable.cargo
|
toolchainWin = fenixPkgs.combine [
|
||||||
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
fenixPkgs.stable.rustc
|
||||||
];
|
fenixPkgs.stable.cargo
|
||||||
naerskWin = pkgs.callPackage naersk {
|
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
||||||
cargo = toolchainWin;
|
];
|
||||||
rustc = toolchainWin;
|
naerskWin = pkgs.callPackage naersk {
|
||||||
};
|
cargo = toolchainWin;
|
||||||
|
rustc = toolchainWin;
|
||||||
|
};
|
||||||
|
|
||||||
# Get rid of MCF Gthread library.
|
# Get rid of MCF Gthread library.
|
||||||
# See <https://github.com/NixOS/nixpkgs/issues/156343>
|
# See <https://github.com/NixOS/nixpkgs/issues/156343>
|
||||||
# and <https://discourse.nixos.org/t/statically-linked-mingw-binaries/38395>
|
# and <https://discourse.nixos.org/t/statically-linked-mingw-binaries/38395>
|
||||||
# for details.
|
# for details.
|
||||||
#
|
#
|
||||||
# Use DWARF-2 instead of SJLJ for exception handling.
|
# Use DWARF-2 instead of SJLJ for exception handling.
|
||||||
winCC = pkgsWin32.buildPackages.wrapCC (
|
winCC = pkgsWin32.buildPackages.wrapCC (
|
||||||
(pkgsWin32.buildPackages.gcc-unwrapped.override
|
(pkgsWin32.buildPackages.gcc-unwrapped.override
|
||||||
{
|
{
|
||||||
threadsCross = {
|
threadsCross = {
|
||||||
model = "win32";
|
model = "win32";
|
||||||
package = null;
|
package = null;
|
||||||
};
|
};
|
||||||
|
}).overrideAttrs (oldAttr: {
|
||||||
|
configureFlags =
|
||||||
|
oldAttr.configureFlags
|
||||||
|
++ [
|
||||||
|
"--disable-sjlj-exceptions --with-dwarf2"
|
||||||
|
];
|
||||||
})
|
})
|
||||||
.overrideAttrs (oldAttr: {
|
);
|
||||||
configureFlags =
|
in
|
||||||
oldAttr.configureFlags
|
|
||||||
++ [
|
|
||||||
"--disable-sjlj-exceptions --with-dwarf2"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
);
|
|
||||||
in
|
|
||||||
naerskWin.buildPackage rec {
|
naerskWin.buildPackage rec {
|
||||||
pname = packageName;
|
pname = packageName;
|
||||||
cargoBuildOptions = x: x ++ ["--package" packageName];
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
src = pkgs.lib.cleanSource ./.;
|
src = pkgs.lib.cleanSource ./.;
|
||||||
@@ -220,27 +224,29 @@
|
|||||||
LD = "${winCC}/bin/${winCC.targetPrefix}cc";
|
LD = "${winCC}/bin/${winCC.targetPrefix}cc";
|
||||||
};
|
};
|
||||||
|
|
||||||
mkCrossRustPackage = arch: packageName: let
|
mkCrossRustPackage = arch: packageName:
|
||||||
rustTarget = arch2targets."${arch}".rustTarget;
|
let
|
||||||
crossTarget = arch2targets."${arch}".crossTarget;
|
rustTarget = arch2targets."${arch}".rustTarget;
|
||||||
pkgsCross = import nixpkgs {
|
crossTarget = arch2targets."${arch}".crossTarget;
|
||||||
system = system;
|
pkgsCross = import nixpkgs {
|
||||||
crossSystem.config = crossTarget;
|
system = system;
|
||||||
};
|
crossSystem.config = crossTarget;
|
||||||
in let
|
};
|
||||||
toolchain = fenixPkgs.combine [
|
in
|
||||||
fenixPkgs.stable.rustc
|
let
|
||||||
fenixPkgs.stable.cargo
|
toolchain = fenixPkgs.combine [
|
||||||
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
fenixPkgs.stable.rustc
|
||||||
];
|
fenixPkgs.stable.cargo
|
||||||
naersk-lib = pkgs.callPackage naersk {
|
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
||||||
cargo = toolchain;
|
];
|
||||||
rustc = toolchain;
|
naersk-lib = pkgs.callPackage naersk {
|
||||||
};
|
cargo = toolchain;
|
||||||
in
|
rustc = toolchain;
|
||||||
|
};
|
||||||
|
in
|
||||||
naersk-lib.buildPackage rec {
|
naersk-lib.buildPackage rec {
|
||||||
pname = packageName;
|
pname = packageName;
|
||||||
cargoBuildOptions = x: x ++ ["--package" packageName];
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
src = rustSrc;
|
src = rustSrc;
|
||||||
@@ -280,24 +286,25 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mkAndroidRustPackage = arch: packageName: let
|
mkAndroidRustPackage = arch: packageName:
|
||||||
rustTarget = androidAttrs.${arch}.rustTarget;
|
let
|
||||||
toolchain = fenixPkgs.combine [
|
rustTarget = androidAttrs.${arch}.rustTarget;
|
||||||
fenixPkgs.stable.rustc
|
toolchain = fenixPkgs.combine [
|
||||||
fenixPkgs.stable.cargo
|
fenixPkgs.stable.rustc
|
||||||
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
fenixPkgs.stable.cargo
|
||||||
];
|
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
||||||
naersk-lib = pkgs.callPackage naersk {
|
];
|
||||||
cargo = toolchain;
|
naersk-lib = pkgs.callPackage naersk {
|
||||||
rustc = toolchain;
|
cargo = toolchain;
|
||||||
};
|
rustc = toolchain;
|
||||||
targetToolchain = "${androidNdkRoot}/toolchains/llvm/prebuilt/linux-x86_64";
|
};
|
||||||
targetCcName = androidAttrs.${arch}.cc;
|
targetToolchain = "${androidNdkRoot}/toolchains/llvm/prebuilt/linux-x86_64";
|
||||||
targetCc = "${targetToolchain}/bin/${targetCcName}";
|
targetCcName = androidAttrs.${arch}.cc;
|
||||||
in
|
targetCc = "${targetToolchain}/bin/${targetCcName}";
|
||||||
|
in
|
||||||
naersk-lib.buildPackage rec {
|
naersk-lib.buildPackage rec {
|
||||||
pname = packageName;
|
pname = packageName;
|
||||||
cargoBuildOptions = x: x ++ ["--package" packageName];
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
src = rustSrc;
|
src = rustSrc;
|
||||||
@@ -323,39 +330,42 @@
|
|||||||
"deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl";
|
"deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl";
|
||||||
};
|
};
|
||||||
|
|
||||||
mkRustPackages = arch: let
|
mkRustPackages = arch:
|
||||||
rpc-server = mkCrossRustPackage arch "deltachat-rpc-server";
|
let
|
||||||
in {
|
rpc-server = mkCrossRustPackage arch "deltachat-rpc-server";
|
||||||
"deltachat-repl-${arch}" = mkCrossRustPackage arch "deltachat-repl";
|
in
|
||||||
"deltachat-rpc-server-${arch}" = rpc-server;
|
{
|
||||||
"deltachat-rpc-server-${arch}-wheel" = pkgs.stdenv.mkDerivation {
|
"deltachat-repl-${arch}" = mkCrossRustPackage arch "deltachat-repl";
|
||||||
pname = "deltachat-rpc-server-${arch}-wheel";
|
"deltachat-rpc-server-${arch}" = rpc-server;
|
||||||
version = manifest.version;
|
"deltachat-rpc-server-${arch}-wheel" = pkgs.stdenv.mkDerivation {
|
||||||
src = nix-filter.lib {
|
pname = "deltachat-rpc-server-${arch}-wheel";
|
||||||
root = ./.;
|
version = manifest.version;
|
||||||
include = [
|
src = nix-filter.lib {
|
||||||
"scripts/wheel-rpc-server.py"
|
root = ./.;
|
||||||
"deltachat-rpc-server/README.md"
|
include = [
|
||||||
"LICENSE"
|
"scripts/wheel-rpc-server.py"
|
||||||
"Cargo.toml"
|
"deltachat-rpc-server/README.md"
|
||||||
|
"LICENSE"
|
||||||
|
"Cargo.toml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.python3
|
||||||
|
pkgs.python3Packages.wheel
|
||||||
];
|
];
|
||||||
|
buildInputs = [
|
||||||
|
rpc-server
|
||||||
|
];
|
||||||
|
buildPhase = ''
|
||||||
|
mkdir tmp
|
||||||
|
cp ${rpc-server}/bin/deltachat-rpc-server tmp/deltachat-rpc-server
|
||||||
|
python3 scripts/wheel-rpc-server.py ${arch} tmp/deltachat-rpc-server
|
||||||
|
'';
|
||||||
|
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
|
||||||
};
|
};
|
||||||
nativeBuildInputs = [
|
|
||||||
pkgs.python3
|
|
||||||
pkgs.python3Packages.wheel
|
|
||||||
];
|
|
||||||
buildInputs = [
|
|
||||||
rpc-server
|
|
||||||
];
|
|
||||||
buildPhase = ''
|
|
||||||
mkdir tmp
|
|
||||||
cp ${rpc-server}/bin/deltachat-rpc-server tmp/deltachat-rpc-server
|
|
||||||
python3 scripts/wheel-rpc-server.py ${arch} tmp/deltachat-rpc-server
|
|
||||||
'';
|
|
||||||
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
|
|
||||||
};
|
};
|
||||||
};
|
in
|
||||||
in {
|
{
|
||||||
formatter = pkgs.nixpkgs-fmt;
|
formatter = pkgs.nixpkgs-fmt;
|
||||||
|
|
||||||
packages =
|
packages =
|
||||||
@@ -435,7 +445,7 @@
|
|||||||
pname = "docs";
|
pname = "docs";
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
src = pkgs.lib.cleanSource ./.;
|
src = pkgs.lib.cleanSource ./.;
|
||||||
nativeBuildInputs = [pkgs.doxygen];
|
nativeBuildInputs = [ pkgs.doxygen ];
|
||||||
buildPhase = ''scripts/run-doxygen.sh'';
|
buildPhase = ''scripts/run-doxygen.sh'';
|
||||||
installPhase = ''mkdir -p $out; cp -av deltachat-ffi/html deltachat-ffi/xml $out'';
|
installPhase = ''mkdir -p $out; cp -av deltachat-ffi/html deltachat-ffi/xml $out'';
|
||||||
};
|
};
|
||||||
@@ -521,18 +531,19 @@
|
|||||||
pkgs.python3Packages.breathe
|
pkgs.python3Packages.breathe
|
||||||
pkgs.python3Packages.sphinx_rtd_theme
|
pkgs.python3Packages.sphinx_rtd_theme
|
||||||
];
|
];
|
||||||
nativeBuildInputs = [pkgs.sphinx];
|
nativeBuildInputs = [ pkgs.sphinx ];
|
||||||
buildPhase = ''sphinx-build -b html -a python/doc/ dist/html'';
|
buildPhase = ''sphinx-build -b html -a python/doc/ dist/html'';
|
||||||
installPhase = ''mkdir -p $out; cp -av dist/html $out'';
|
installPhase = ''mkdir -p $out; cp -av dist/html $out'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells.default = let
|
devShells.default =
|
||||||
pkgs = import nixpkgs {
|
let
|
||||||
system = system;
|
pkgs = import nixpkgs {
|
||||||
overlays = [fenix.overlays.default];
|
system = system;
|
||||||
};
|
overlays = [ fenix.overlays.default ];
|
||||||
in
|
};
|
||||||
|
in
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
buildInputs = with pkgs; [
|
buildInputs = with pkgs; [
|
||||||
(fenix.packages.${system}.complete.withComponents [
|
(fenix.packages.${system}.complete.withComponents [
|
||||||
|
|||||||
Reference in New Issue
Block a user