chore: run nix fmt

This commit is contained in:
link2xt
2024-12-14 19:15:44 +00:00
parent e3654ab230
commit 7a53e45297

446
flake.nix
View File

@@ -8,18 +8,30 @@
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 = { self, nixpkgs, flake-utils, nix-filter, naersk, fenix, android }: outputs =
flake-utils.lib.eachDefaultSystem (system: {
self,
nixpkgs,
flake-utils,
nix-filter,
naersk,
fenix,
android,
}:
flake-utils.lib.eachDefaultSystem (
system:
let 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 {
inherit (sdkPkgs) ndk-27-0-11902837 cmdline-tools-latest; inherit (sdkPkgs) ndk-27-0-11902837 cmdline-tools-latest;
}); }
);
androidNdkRoot = "${androidSdk}/share/android-sdk/ndk/27.0.11902837"; androidNdkRoot = "${androidSdk}/share/android-sdk/ndk/27.0.11902837";
rustSrc = nix-filter.lib { rustSrc = nix-filter.lib {
@@ -93,10 +105,17 @@
"lettre-0.9.2" = "sha256-+hU1cFacyyeC9UGVBpS14BWlJjHy90i/3ynMkKAzclk="; "lettre-0.9.2" = "sha256-+hU1cFacyyeC9UGVBpS14BWlJjHy90i/3ynMkKAzclk=";
}; };
}; };
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 = [
@@ -109,7 +128,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: mkWin64RustPackage =
packageName:
let let
rustTarget = "x86_64-pc-windows-gnu"; rustTarget = "x86_64-pc-windows-gnu";
toolchainWin = fenixPkgs.combine [ toolchainWin = fenixPkgs.combine [
@@ -124,7 +144,13 @@
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 ./.;
@@ -150,7 +176,8 @@
}; };
pkgsWin32 = pkgs.pkgsCross.mingw32; pkgsWin32 = pkgs.pkgsCross.mingw32;
mkWin32RustPackage = packageName: mkWin32RustPackage =
packageName:
let let
rustTarget = "i686-pc-windows-gnu"; rustTarget = "i686-pc-windows-gnu";
in in
@@ -172,22 +199,28 @@
# #
# 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
})).overrideAttrs (oldAttr: { (oldAttr: {
configureFlags = oldAttr.configureFlags ++ [ configureFlags = oldAttr.configureFlags ++ [
"--disable-sjlj-exceptions --with-dwarf2" "--disable-sjlj-exceptions --with-dwarf2"
]; ];
}) })
); );
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 ./.;
@@ -212,7 +245,8 @@
LD = "${winCC}/bin/${winCC.targetPrefix}cc"; LD = "${winCC}/bin/${winCC.targetPrefix}cc";
}; };
mkCrossRustPackage = arch: packageName: mkCrossRustPackage =
arch: packageName:
let let
rustTarget = arch2targets."${arch}".rustTarget; rustTarget = arch2targets."${arch}".rustTarget;
crossTarget = arch2targets."${arch}".crossTarget; crossTarget = arch2targets."${arch}".crossTarget;
@@ -234,7 +268,13 @@
in 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;
@@ -274,7 +314,8 @@
}; };
}; };
mkAndroidRustPackage = arch: packageName: mkAndroidRustPackage =
arch: packageName:
let let
rustTarget = androidAttrs.${arch}.rustTarget; rustTarget = androidAttrs.${arch}.rustTarget;
toolchain = fenixPkgs.combine [ toolchain = fenixPkgs.combine [
@@ -292,7 +333,13 @@
in 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;
@@ -318,221 +365,214 @@
"deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl"; "deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl";
}; };
mkRustPackages = arch: mkRustPackages =
arch:
let 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" = "deltachat-rpc-server-${arch}-wheel" = pkgs.stdenv.mkDerivation {
pkgs.stdenv.mkDerivation { pname = "deltachat-rpc-server-${arch}-wheel";
pname = "deltachat-rpc-server-${arch}-wheel"; version = manifest.version;
version = manifest.version; src = nix-filter.lib {
src = nix-filter.lib { root = ./.;
root = ./.; include = [
include = [ "scripts/wheel-rpc-server.py"
"scripts/wheel-rpc-server.py" "deltachat-rpc-server/README.md"
"deltachat-rpc-server/README.md" "LICENSE"
"LICENSE" "Cargo.toml"
"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.nixfmt-rfc-style; formatter = pkgs.nixfmt-rfc-style;
packages = packages =
mkRustPackages "aarch64-linux" // mkRustPackages "aarch64-linux"
mkRustPackages "i686-linux" // // mkRustPackages "i686-linux"
mkRustPackages "x86_64-linux" // // mkRustPackages "x86_64-linux"
mkRustPackages "armv7l-linux" // // mkRustPackages "armv7l-linux"
mkRustPackages "armv6l-linux" // // mkRustPackages "armv6l-linux"
mkRustPackages "x86_64-darwin" // // mkRustPackages "x86_64-darwin"
mkRustPackages "aarch64-darwin" // // mkRustPackages "aarch64-darwin"
mkAndroidPackages "armeabi-v7a" // // mkAndroidPackages "armeabi-v7a"
mkAndroidPackages "arm64-v8a" // // mkAndroidPackages "arm64-v8a"
mkAndroidPackages "x86" // // mkAndroidPackages "x86"
mkAndroidPackages "x86_64" // rec { // mkAndroidPackages "x86_64"
// rec {
# Run with `nix run .#deltachat-repl foo.db`. # Run with `nix run .#deltachat-repl foo.db`.
deltachat-repl = mkRustPackage "deltachat-repl"; deltachat-repl = mkRustPackage "deltachat-repl";
deltachat-rpc-server = mkRustPackage "deltachat-rpc-server"; deltachat-rpc-server = mkRustPackage "deltachat-rpc-server";
deltachat-repl-win64 = mkWin64RustPackage "deltachat-repl"; deltachat-repl-win64 = mkWin64RustPackage "deltachat-repl";
deltachat-rpc-server-win64 = mkWin64RustPackage "deltachat-rpc-server"; deltachat-rpc-server-win64 = mkWin64RustPackage "deltachat-rpc-server";
deltachat-rpc-server-win64-wheel = deltachat-rpc-server-win64-wheel = pkgs.stdenv.mkDerivation {
pkgs.stdenv.mkDerivation { pname = "deltachat-rpc-server-win64-wheel";
pname = "deltachat-rpc-server-win64-wheel"; version = manifest.version;
version = manifest.version; src = nix-filter.lib {
src = nix-filter.lib { root = ./.;
root = ./.; include = [
include = [ "scripts/wheel-rpc-server.py"
"scripts/wheel-rpc-server.py" "deltachat-rpc-server/README.md"
"deltachat-rpc-server/README.md" "LICENSE"
"LICENSE" "Cargo.toml"
"Cargo.toml"
];
};
nativeBuildInputs = [
pkgs.python3
pkgs.python3Packages.wheel
]; ];
buildInputs = [
deltachat-rpc-server-win64
];
buildPhase = ''
mkdir tmp
cp ${deltachat-rpc-server-win64}/bin/deltachat-rpc-server.exe tmp/deltachat-rpc-server.exe
python3 scripts/wheel-rpc-server.py win64 tmp/deltachat-rpc-server.exe
'';
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
}; };
nativeBuildInputs = [
pkgs.python3
pkgs.python3Packages.wheel
];
buildInputs = [
deltachat-rpc-server-win64
];
buildPhase = ''
mkdir tmp
cp ${deltachat-rpc-server-win64}/bin/deltachat-rpc-server.exe tmp/deltachat-rpc-server.exe
python3 scripts/wheel-rpc-server.py win64 tmp/deltachat-rpc-server.exe
'';
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
};
deltachat-repl-win32 = mkWin32RustPackage "deltachat-repl"; deltachat-repl-win32 = mkWin32RustPackage "deltachat-repl";
deltachat-rpc-server-win32 = mkWin32RustPackage "deltachat-rpc-server"; deltachat-rpc-server-win32 = mkWin32RustPackage "deltachat-rpc-server";
deltachat-rpc-server-win32-wheel = deltachat-rpc-server-win32-wheel = pkgs.stdenv.mkDerivation {
pkgs.stdenv.mkDerivation { pname = "deltachat-rpc-server-win32-wheel";
pname = "deltachat-rpc-server-win32-wheel"; version = manifest.version;
version = manifest.version; src = nix-filter.lib {
src = nix-filter.lib { root = ./.;
root = ./.; include = [
include = [ "scripts/wheel-rpc-server.py"
"scripts/wheel-rpc-server.py" "deltachat-rpc-server/README.md"
"deltachat-rpc-server/README.md" "LICENSE"
"LICENSE" "Cargo.toml"
"Cargo.toml"
];
};
nativeBuildInputs = [
pkgs.python3
pkgs.python3Packages.wheel
]; ];
buildInputs = [
deltachat-rpc-server-win32
];
buildPhase = ''
mkdir tmp
cp ${deltachat-rpc-server-win32}/bin/deltachat-rpc-server.exe tmp/deltachat-rpc-server.exe
python3 scripts/wheel-rpc-server.py win32 tmp/deltachat-rpc-server.exe
'';
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
}; };
nativeBuildInputs = [
pkgs.python3
pkgs.python3Packages.wheel
];
buildInputs = [
deltachat-rpc-server-win32
];
buildPhase = ''
mkdir tmp
cp ${deltachat-rpc-server-win32}/bin/deltachat-rpc-server.exe tmp/deltachat-rpc-server.exe
python3 scripts/wheel-rpc-server.py win32 tmp/deltachat-rpc-server.exe
'';
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out'';
};
# Run `nix build .#docs` to get C docs generated in `./result/`. # Run `nix build .#docs` to get C docs generated in `./result/`.
docs = docs = pkgs.stdenv.mkDerivation {
pkgs.stdenv.mkDerivation { 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''; };
};
libdeltachat = libdeltachat = pkgs.stdenv.mkDerivation {
pkgs.stdenv.mkDerivation { pname = "libdeltachat";
pname = "libdeltachat"; version = manifest.version;
version = manifest.version; src = rustSrc;
src = rustSrc; cargoDeps = pkgs.rustPlatform.importCargoLock cargoLock;
cargoDeps = pkgs.rustPlatform.importCargoLock cargoLock;
nativeBuildInputs = [ nativeBuildInputs = [
pkgs.perl # Needed to build vendored OpenSSL. pkgs.perl # Needed to build vendored OpenSSL.
pkgs.cmake pkgs.cmake
pkgs.rustPlatform.cargoSetupHook pkgs.rustPlatform.cargoSetupHook
pkgs.cargo pkgs.cargo
]; ];
buildInputs = pkgs.lib.optionals isDarwin [ buildInputs = pkgs.lib.optionals isDarwin [
pkgs.darwin.apple_sdk.frameworks.CoreFoundation pkgs.darwin.apple_sdk.frameworks.CoreFoundation
pkgs.darwin.apple_sdk.frameworks.Security pkgs.darwin.apple_sdk.frameworks.Security
pkgs.darwin.apple_sdk.frameworks.SystemConfiguration pkgs.darwin.apple_sdk.frameworks.SystemConfiguration
pkgs.libiconv pkgs.libiconv
]; ];
postInstall = '' postInstall = ''
substituteInPlace $out/include/deltachat.h \ substituteInPlace $out/include/deltachat.h \
--replace __FILE__ '"${placeholder "out"}/include/deltachat.h"' --replace __FILE__ '"${placeholder "out"}/include/deltachat.h"'
''; '';
}; };
# Source package for deltachat-rpc-server. # Source package for deltachat-rpc-server.
# Fake package that downloads Linux version, # Fake package that downloads Linux version,
# needed to install deltachat-rpc-server on Android with `pip`. # needed to install deltachat-rpc-server on Android with `pip`.
deltachat-rpc-server-source = deltachat-rpc-server-source = pkgs.stdenv.mkDerivation {
pkgs.stdenv.mkDerivation { pname = "deltachat-rpc-server-source";
pname = "deltachat-rpc-server-source"; version = manifest.version;
version = manifest.version; src = pkgs.lib.cleanSource ./.;
src = pkgs.lib.cleanSource ./.; nativeBuildInputs = [
nativeBuildInputs = [ pkgs.python3
pkgs.python3 pkgs.python3Packages.wheel
pkgs.python3Packages.wheel ];
]; buildPhase = ''python3 scripts/wheel-rpc-server.py source deltachat_rpc_server-${manifest.version}.tar.gz'';
buildPhase = ''python3 scripts/wheel-rpc-server.py source deltachat_rpc_server-${manifest.version}.tar.gz''; installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-${manifest.version}.tar.gz $out'';
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-${manifest.version}.tar.gz $out''; };
};
deltachat-rpc-client = deltachat-rpc-client = pkgs.python3Packages.buildPythonPackage {
pkgs.python3Packages.buildPythonPackage { pname = "deltachat-rpc-client";
pname = "deltachat-rpc-client"; version = manifest.version;
version = manifest.version; src = pkgs.lib.cleanSource ./deltachat-rpc-client;
src = pkgs.lib.cleanSource ./deltachat-rpc-client; format = "pyproject";
format = "pyproject"; propagatedBuildInputs = [
propagatedBuildInputs = [ pkgs.python3Packages.setuptools
pkgs.python3Packages.setuptools pkgs.python3Packages.imap-tools
pkgs.python3Packages.imap-tools ];
]; };
};
deltachat-python = deltachat-python = pkgs.python3Packages.buildPythonPackage {
pkgs.python3Packages.buildPythonPackage { pname = "deltachat-python";
pname = "deltachat-python"; version = manifest.version;
version = manifest.version; src = pkgs.lib.cleanSource ./python;
src = pkgs.lib.cleanSource ./python; format = "pyproject";
format = "pyproject"; buildInputs = [
buildInputs = [ libdeltachat
libdeltachat ];
]; nativeBuildInputs = [
nativeBuildInputs = [ pkgs.pkg-config
pkgs.pkg-config ];
]; propagatedBuildInputs = [
propagatedBuildInputs = [ pkgs.python3Packages.setuptools
pkgs.python3Packages.setuptools pkgs.python3Packages.pkgconfig
pkgs.python3Packages.pkgconfig pkgs.python3Packages.cffi
pkgs.python3Packages.cffi pkgs.python3Packages.imap-tools
pkgs.python3Packages.imap-tools pkgs.python3Packages.pluggy
pkgs.python3Packages.pluggy pkgs.python3Packages.requests
pkgs.python3Packages.requests ];
]; };
}; python-docs = pkgs.stdenv.mkDerivation {
python-docs = pname = "docs";
pkgs.stdenv.mkDerivation { version = manifest.version;
pname = "docs"; src = pkgs.lib.cleanSource ./.;
version = manifest.version; buildInputs = [
src = pkgs.lib.cleanSource ./.; deltachat-python
buildInputs = [ deltachat-rpc-client
deltachat-python pkgs.python3Packages.breathe
deltachat-rpc-client pkgs.python3Packages.sphinx_rtd_theme
pkgs.python3Packages.breathe ];
pkgs.python3Packages.sphinx_rtd_theme nativeBuildInputs = [ pkgs.sphinx ];
]; buildPhase = ''sphinx-build -b html -a python/doc/ dist/html'';
nativeBuildInputs = [ pkgs.sphinx ]; installPhase = ''mkdir -p $out; cp -av dist/html $out'';
buildPhase = ''sphinx-build -b html -a python/doc/ dist/html''; };
installPhase = ''mkdir -p $out; cp -av dist/html $out'';
};
}; };
devShells.default = devShells.default =