{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
crane.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, crane, flake-utils, fenix, ... }@inputs:
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = import nixpkgs {
inherit system;
};
fenixChannel = fenix.packages.${system}.stable;
fenixToolchain = (fenixChannel.withComponents [
"rustc"
"cargo"
"rustfmt"
"clippy"
"rust-analysis"
"rust-src"
"llvm-tools-preview"
]);
craneLib = (crane.mkLib nixpkgs.legacyPackages.${system}).overrideToolchain fenixToolchain;
shikane = pkgs.callPackage ./nix-modules/shikane.nix { inherit craneLib pkgs; };
in
rec
{
packages = {
default = shikane.default;
shikane = shikane.shikane;
shikane-docs = shikane.shikane-docs;
};
devShells.default = pkgs.mkShell {
nativeBuildInputs = (with packages.shikane; nativeBuildInputs ++ buildInputs) ++ [ fenixToolchain ];
RUST_SRC_PATH = "${fenixChannel.rust-src}/lib/rustlib/src/rust/library";
};
}) // {
overlays.default = (final: prev: {
inherit (self.packages.${prev.system})
shikane;
});
};
}