{ inputs = { flake-utils.url = "github:numtide/flake-utils"; rust = { type = "github"; owner = "oxalica"; repo = "rust-overlay"; ref = "master"; inputs.flake-utils.follows = "flake-utils"; inputs.nixpkgs.follows = "nixpkgs"; }; naersk = { type = "github"; owner = "nmattia"; repo = "naersk"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, rust, flake-utils, naersk }: let supportedSystems = ["aarch64-linux" "x86_64-linux"]; forAllSystems = f: flake-utils.lib.eachSystem supportedSystems f; in forAllSystems (system: let pkgs = import nixpkgs { localSystem.system = system; overlays = [ rust.overlay ]; }; rust-bin = pkgs.rust-bin.stable.latest; packages = { kittybox-micropub = { stdenv, lib, redis, naersk-lib }: naersk-lib.buildPackage { pname = "kittybox-micropub"; version = "0.1.0"; src = ./.; checkInputs = [ redis ]; doCheck = stdenv.hostPlatform == stdenv.targetPlatform; meta = with lib.meta; { maintainers = with maintainers; [ vika_nezrimaya ]; platforms = supportedSystems; mainProgram = "kittybox_micropub"; }; }; }; in { packages = let naersk-lib = naersk.lib.${system}.override { rustc = pkgs.rust-bin.nightly.latest.minimal; cargo = pkgs.rust-bin.nightly.latest.minimal; }; in { kittybox-micropub = pkgs.callPackage packages.kittybox-micropub { inherit naersk-lib; }; }; defaultPackage = self.packages.${system}.kittybox-micropub; devShell = pkgs.mkShell { name = "rust-dev-shell"; nativeBuildInputs = with pkgs; [ pkg-config lld rust-bin.default rust-bin.rls redis ]; }; }); }