blob: 4b95c2e2cc0de8a98e8e739735e109bbafa8dca3 (
plain) (
tree)
|
|
{
description = "A CLI to display information about x509 certificates.";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
naersk = {
url = "github:nix-community/naersk";
inputs.nixpkgs.follows = "nixpkgs";
};
nix = {
url = "github:nixos/nix/2.13.2";
};
flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };
};
outputs =
{ self
, nixpkgs
, fenix
, naersk
, nix
, ...
} @ inputs:
let
supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: (forSystem system f));
forSystem = system: f: f rec {
inherit system;
pkgs = import nixpkgs { inherit system; overlays = [ self.overlays.default ]; };
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
]);
in
{
overlays.default = final: prev:
let
toolchain = fenixToolchain final.stdenv.system;
naerskLib = final.callPackage naersk {
cargo = toolchain;
rustc = toolchain;
};
sharedAttrs = {
pname = "x509-info";
version = "0.1.0";
src = builtins.path {
name = "x509-info";
path = self;
};
nativeBuildInputs = with final; [ ];
buildInputs = with final; [ ] ++ lib.optionals (final.stdenv.isDarwin) (with final.darwin.apple_sdk.frameworks; [
SystemConfiguration
]);
copyBins = true;
copyDocsToSeparateOutput = true;
doCheck = true;
doDoc = true;
doDocFail = true;
cargoTestOptions = f: f ++ [ "--all" ];
override = { preBuild ? "", ... }: {
preBuild = preBuild + ''
# logRun "cargo clippy --all-targets --all-features -- -D warnings"
'';
};
};
in
rec {
x509-info = naerskLib.buildPackage sharedAttrs;
} // nixpkgs.lib.optionalAttrs (prev.stdenv.system == "x86_64-linux") rec {
default = x509-info-static;
x509-info-static = naerskLib.buildPackage
(sharedAttrs // {
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
});
};
devShells = forAllSystems ({ system, pkgs, ... }:
let
toolchain = fenixToolchain system;
check = import ./nix/check.nix { inherit pkgs toolchain; };
in
{
default = pkgs.mkShell {
name = "x509-info-shell";
RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library";
nativeBuildInputs = with pkgs; [ ];
buildInputs = with pkgs; [
toolchain
rust-analyzer
cargo-outdated
cacert
cargo-audit
nixpkgs-fmt
check.check-rustfmt
check.check-spelling
check.check-nixpkgs-fmt
check.check-semver
]
++ lib.optionals (pkgs.stdenv.isDarwin) (with pkgs; [
libiconv
darwin.apple_sdk.frameworks.Security
])
++ lib.optionals (pkgs.stdenv.isLinux) (with pkgs; [
checkpolicy
]);
};
});
checks = forAllSystems ({ system, pkgs, ... }:
let
toolchain = fenixToolchain system;
check = import ./nix/check.nix { inherit pkgs toolchain; };
in
{
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
'';
});
packages = forAllSystems ({ system, pkgs, ... }:
{
inherit (pkgs) x509-info;
} // nixpkgs.lib.optionalAttrs (system == "x86_64-linux") {
inherit (pkgs) x509-info-static;
default = pkgs.x509-info-static;
} // nixpkgs.lib.optionalAttrs (pkgs.stdenv.isDarwin) {
default = pkgs.x509-info;
});
};
}
|