fmt flake with alejandra

This commit is contained in:
Septias
2024-11-13 13:30:12 +01:00
parent fe53eb2b37
commit 37f15c5282

118
flake.nix
View File

@@ -8,13 +8,21 @@
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,
let nixpkgs,
flake-utils,
nix-filter,
naersk,
fenix,
android,
}:
flake-utils.lib.eachDefaultSystem (
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 {
@@ -96,7 +104,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 = [
@@ -109,8 +117,7 @@
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 [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
@@ -124,7 +131,7 @@
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,11 +157,9 @@
}; };
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 let
let
toolchainWin = fenixPkgs.combine [ toolchainWin = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
fenixPkgs.stable.cargo fenixPkgs.stable.cargo
@@ -173,13 +178,16 @@
# 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 ++ [ .overrideAttrs (oldAttr: {
configureFlags =
oldAttr.configureFlags
++ [
"--disable-sjlj-exceptions --with-dwarf2" "--disable-sjlj-exceptions --with-dwarf2"
]; ];
}) })
@@ -187,7 +195,7 @@
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,16 +220,14 @@
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;
pkgsCross = import nixpkgs { pkgsCross = import nixpkgs {
system = system; system = system;
crossSystem.config = crossTarget; crossSystem.config = crossTarget;
}; };
in in let
let
toolchain = fenixPkgs.combine [ toolchain = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
fenixPkgs.stable.cargo fenixPkgs.stable.cargo
@@ -234,7 +240,7 @@
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,8 +280,7 @@
}; };
}; };
mkAndroidRustPackage = arch: packageName: mkAndroidRustPackage = arch: packageName: let
let
rustTarget = androidAttrs.${arch}.rustTarget; rustTarget = androidAttrs.${arch}.rustTarget;
toolchain = fenixPkgs.combine [ toolchain = fenixPkgs.combine [
fenixPkgs.stable.rustc fenixPkgs.stable.rustc
@@ -292,7 +297,7 @@
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,15 +323,12 @@
"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 {
@@ -353,28 +355,27 @@
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 =
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"
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 {
@@ -403,8 +404,7 @@
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 {
@@ -431,18 +431,16 @@
installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out''; 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;
@@ -470,8 +468,7 @@
# 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 ./.;
@@ -483,8 +480,7 @@
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;
@@ -495,8 +491,7 @@
]; ];
}; };
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;
@@ -516,8 +511,7 @@
pkgs.python3Packages.requests pkgs.python3Packages.requests
]; ];
}; };
python-docs = python-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 ./.;
@@ -527,7 +521,7 @@
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'';
}; };
@@ -536,10 +530,10 @@
devShells.default = let devShells.default = let
pkgs = import nixpkgs { pkgs = import nixpkgs {
system = system; system = system;
overlays = [ fenix.overlays.default ]; overlays = [fenix.overlays.default];
}; };
in pkgs.mkShell { in
pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
(fenix.packages.${system}.complete.withComponents [ (fenix.packages.${system}.complete.withComponents [
"cargo" "cargo"