{ 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"; }; }; outputs = { self, nixpkgs, rust, flake-utils }: 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, openssl, pkg-config, redis, rustPlatform }: rustPlatform.buildRustPackage { name = "kittybox-micropub"; version = "0.1.0"; src = ./.; #cargoSha256 = nixpkgs.lib.fakeSha256; cargoHash = "sha256-DnPwAuzXWLJdyDf0dvfXUic0oQPVCpsnCyFdLSlsSs0="; buildInputs = [ openssl ]; nativeBuildInputs = [ pkg-config ]; checkInputs = [ redis ]; doCheck = stdenv.hostPlatform == stdenv.targetPlatform; meta = with lib.meta; { maintainers = with maintainers; [ vika_nezrimaya ]; platforms = supportedSystems; mainProgram = "kittybox_micropub"; }; }; }; in { packages = let rustPlatform = pkgs.makeRustPlatform { rustc = rust-bin.minimal; cargo = rust-bin.minimal; }; in { kittybox-micropub = pkgs.callPackage packages.kittybox-micropub { inherit rustPlatform; }; }; defaultPackage = self.packages.${system}.kittybox-micropub; devShell = pkgs.mkShell { name = "rust-dev-shell"; buildInputs = with pkgs; [ openssl ]; nativeBuildInputs = with pkgs; [ pkg-config lld rust-bin.default rust-bin.rls ]; }; }); }