2022-09-02 23:03:57 +00:00
|
|
|
{
|
2022-11-02 13:12:13 +00:00
|
|
|
description = "harmonic";
|
2022-09-02 23:03:57 +00:00
|
|
|
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05";
|
|
|
|
|
|
|
|
fenix = {
|
|
|
|
url = "github:nix-community/fenix";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
|
|
|
naersk = {
|
|
|
|
url = "github:nix-community/naersk";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
outputs =
|
|
|
|
{ self
|
|
|
|
, nixpkgs
|
|
|
|
, fenix
|
|
|
|
, naersk
|
|
|
|
, ...
|
|
|
|
} @ inputs:
|
|
|
|
let
|
|
|
|
nameValuePair = name: value: { inherit name value; };
|
|
|
|
genAttrs = names: f: builtins.listToAttrs (map (n: nameValuePair n (f n)) names);
|
|
|
|
allSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
|
|
|
|
|
|
|
forAllSystems = f: genAttrs allSystems (system: f rec {
|
|
|
|
inherit system;
|
|
|
|
pkgs = import nixpkgs { inherit system; };
|
|
|
|
lib = pkgs.lib;
|
|
|
|
});
|
|
|
|
|
|
|
|
fenixToolchain = system: with fenix.packages.${system};
|
|
|
|
combine ([
|
|
|
|
stable.clippy
|
|
|
|
stable.rustc
|
|
|
|
stable.cargo
|
|
|
|
stable.rustfmt
|
|
|
|
stable.rust-src
|
|
|
|
] ++ nixpkgs.lib.optionals (system == "x86_64-linux") [
|
|
|
|
targets.x86_64-unknown-linux-musl.stable.rust-std
|
|
|
|
] ++ nixpkgs.lib.optionals (system == "aarch64-linux") [
|
|
|
|
targets.aarch64-unknown-linux-musl.stable.rust-std
|
|
|
|
]);
|
|
|
|
in
|
|
|
|
{
|
2022-09-28 20:49:07 +00:00
|
|
|
devShells = forAllSystems ({ system, pkgs, ... }:
|
2022-09-02 23:03:57 +00:00
|
|
|
let
|
|
|
|
toolchain = fenixToolchain system;
|
|
|
|
eclint = import ./nix/eclint.nix { inherit pkgs; };
|
2022-12-05 18:27:12 +00:00
|
|
|
check = import ./nix/check.nix { inherit pkgs eclint toolchain; };
|
2022-09-02 23:03:57 +00:00
|
|
|
in
|
2022-09-28 20:49:07 +00:00
|
|
|
{
|
|
|
|
default = pkgs.mkShell {
|
|
|
|
name = "nix-install-shell";
|
|
|
|
|
|
|
|
RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library";
|
|
|
|
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
|
|
pkg-config
|
|
|
|
];
|
|
|
|
buildInputs = with pkgs; [
|
|
|
|
toolchain
|
|
|
|
openssl
|
|
|
|
rust-analyzer
|
2022-11-01 16:32:14 +00:00
|
|
|
cargo-outdated
|
2022-09-28 20:49:07 +00:00
|
|
|
|
|
|
|
# CI dependencies
|
|
|
|
jq
|
|
|
|
codespell
|
|
|
|
findutils # for xargs
|
|
|
|
git
|
|
|
|
nixpkgs-fmt
|
|
|
|
eclint
|
2022-12-05 18:27:12 +00:00
|
|
|
check.check-rustfmt
|
|
|
|
check.check-spelling
|
|
|
|
check.check-nixpkgs-fmt
|
|
|
|
check.check-editorconfig
|
2022-09-28 20:49:07 +00:00
|
|
|
]
|
|
|
|
++ lib.optionals (pkgs.stdenv.isDarwin) (with pkgs; [ libiconv darwin.apple_sdk.frameworks.Security ]);
|
|
|
|
};
|
2022-09-02 23:03:57 +00:00
|
|
|
});
|
|
|
|
|
2022-10-13 16:11:23 +00:00
|
|
|
checks = forAllSystems ({ system, pkgs, ... }:
|
|
|
|
let
|
|
|
|
pkgs = import nixpkgs {
|
|
|
|
inherit system;
|
|
|
|
};
|
2022-12-05 18:27:12 +00:00
|
|
|
toolchain = fenixToolchain system;
|
|
|
|
eclint = import ./nix/eclint.nix { inherit pkgs; };
|
|
|
|
check = import ./nix/check.nix { inherit pkgs eclint toolchain; };
|
2022-10-13 16:11:23 +00:00
|
|
|
in
|
|
|
|
{
|
2022-12-05 18:27:12 +00:00
|
|
|
check-rustfmt = pkgs.runCommand "check-rustfmt" { buildInputs = [ check.check-rustfmt ]; } ''
|
|
|
|
cd ${./.}
|
|
|
|
check-rustfmt
|
|
|
|
touch $out
|
|
|
|
'';
|
|
|
|
check-spelling = pkgs.runCommand "check-spelling" { buildInputs = [ check.check-spelling ]; } ''
|
|
|
|
cd ${./.}
|
|
|
|
check-spelling
|
|
|
|
touch $out
|
|
|
|
'';
|
|
|
|
check-nixpkgs-fmt = pkgs.runCommand "check-nixpkgs-fmt" { buildInputs = [ check.check-nixpkgs-fmt ]; } ''
|
|
|
|
cd ${./.}
|
|
|
|
check-nixpkgs-fmt
|
|
|
|
touch $out
|
|
|
|
'';
|
|
|
|
check-editorconfig = pkgs.runCommand "check-editorconfig" { buildInputs = [ pkgs.git check.check-editorconfig ]; } ''
|
|
|
|
cd ${./.}
|
|
|
|
check-editorconfig
|
|
|
|
touch $out
|
2022-10-13 16:11:23 +00:00
|
|
|
'';
|
|
|
|
});
|
|
|
|
|
2022-09-02 23:03:57 +00:00
|
|
|
packages = forAllSystems
|
|
|
|
({ system, pkgs, lib, ... }:
|
|
|
|
let
|
|
|
|
naerskLib = pkgs.callPackage naersk {
|
|
|
|
cargo = fenixToolchain system;
|
|
|
|
rustc = fenixToolchain system;
|
|
|
|
};
|
|
|
|
|
|
|
|
sharedAttrs = {
|
|
|
|
pname = "harmonic";
|
|
|
|
version = "0.0.0-unreleased";
|
|
|
|
src = self;
|
|
|
|
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
|
|
pkg-config
|
|
|
|
];
|
|
|
|
buildInputs = with pkgs; [
|
|
|
|
openssl
|
|
|
|
] ++ lib.optionals (pkgs.stdenv.isDarwin) (with pkgs.darwin.apple_sdk.frameworks; [
|
|
|
|
SystemConfiguration
|
|
|
|
]);
|
|
|
|
|
|
|
|
doCheck = true;
|
2022-11-28 22:57:35 +00:00
|
|
|
doDoc = true;
|
|
|
|
doDocFail = true;
|
2022-11-25 16:02:00 +00:00
|
|
|
RUSTFLAGS = "--cfg tracing_unstable --cfg tokio_unstable";
|
2022-12-05 18:27:12 +00:00
|
|
|
cargoTestOptions = f: f ++ [ "--all" ];
|
2022-09-02 23:03:57 +00:00
|
|
|
|
|
|
|
override = { preBuild ? "", ... }: {
|
|
|
|
preBuild = preBuild + ''
|
2022-09-26 15:43:10 +00:00
|
|
|
# logRun "cargo clippy --all-targets --all-features -- -D warnings"
|
2022-09-02 23:03:57 +00:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in
|
2022-09-28 20:49:07 +00:00
|
|
|
rec {
|
2022-09-02 23:03:57 +00:00
|
|
|
harmonic = naerskLib.buildPackage
|
|
|
|
(sharedAttrs // { });
|
2022-10-12 13:33:19 +00:00
|
|
|
default = self.packages.${system}.harmonic;
|
2022-10-06 19:21:49 +00:00
|
|
|
} // lib.optionalAttrs (system == "x86_64-linux") rec {
|
|
|
|
default = harmonicStatic;
|
2022-09-02 23:03:57 +00:00
|
|
|
harmonicStatic = naerskLib.buildPackage
|
|
|
|
(sharedAttrs // {
|
|
|
|
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
|
|
|
|
OPENSSL_LIB_DIR = "${pkgs.pkgsStatic.openssl.out}/lib";
|
|
|
|
OPENSSL_INCLUDE_DIR = "${pkgs.pkgsStatic.openssl.dev}";
|
|
|
|
});
|
2022-10-06 19:21:49 +00:00
|
|
|
} // lib.optionalAttrs (system == "aarch64-linux") rec {
|
|
|
|
default = harmonicStatic;
|
2022-09-02 23:03:57 +00:00
|
|
|
harmonicStatic = naerskLib.buildPackage
|
|
|
|
(sharedAttrs // {
|
|
|
|
CARGO_BUILD_TARGET = "aarch64-unknown-linux-musl";
|
|
|
|
OPENSSL_LIB_DIR = "${pkgs.pkgsStatic.openssl.out}/lib";
|
|
|
|
OPENSSL_INCLUDE_DIR = "${pkgs.pkgsStatic.openssl.dev}";
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|