{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/release-22.05"; flake-utils.url = "github:numtide/flake-utils/master"; nixpkgs-mozilla = { url = "github:mozilla/nixpkgs-mozilla/master"; }; naersk = { url = "github:nmattia/naersk/master"; inputs.nixpkgs.follows = "nixpkgs"; }; }; description = "thulani discord bot"; outputs = { self, nixpkgs, flake-utils, ... } @ inputs: (flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ (import inputs.nixpkgs-mozilla) ]; }; mkRust = extensions: (pkgs.rustChannelOf { channel = "nightly"; date = "2021-10-26"; sha256 = "1hLbypXA+nuH7o3AHCokzSBZAvQxvef4x9+XxO3aBao="; }).rust.override { inherit extensions; }; buildToolchain = mkRust []; devToolchain = mkRust [ "rust-analyzer" "rust-src" "clippy" ]; naersk = pkgs.callPackage inputs.naersk { cargo = buildToolchain; rustc = buildToolchain; }; deps = with pkgs; [ openssl pkgconfig libopus postgresql ]; inherit (pkgs) lib; pkg = naersk.buildPackage { pname = "thulani"; version = self.rev or "dirty"; src = lib.cleanSource ./.; nativeBuildInputs = deps; remapPathPrefix = true; }; in { devShells.default = pkgs.mkShell { buildInputs = (with pkgs; [ devToolchain ]) ++ deps; RUST_SRC_PATH = "${devToolchain}/lib/rustlib/src/rust"; }; packages.default = pkg; apps.default = { type = "app"; program = "${pkg}/bin/thulani"; }; }) ); }