playback-rs 0.4.5

A very simple audio/song loading and playing library.
Documentation
{
	description = "A simple audio playback library for rust";

	inputs = {
		nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
		fenix = {
			url = "github:nix-community/fenix/monthly";
			inputs.nixpkgs.follows = "nixpkgs";
		};
	};

	outputs = { self, nixpkgs, fenix }: let
		supportedSystems = [ "x86_64-linux" "aarch64-linux"  "x86_64-darwin" "aarch64-darwin" ];
		forAllSystems = (fun:
			((nixpkgs.lib.genAttrs supportedSystems) (system: fun(let
					overlays = [ fenix.overlays.default ];
					pkgs = import nixpkgs {
						inherit system overlays;
					};
					toolchain = fenix.packages.x86_64-linux.default.toolchain;
					libs = with pkgs; [
						# Dependencies
						toolchain
						alsa-lib
						pkg-config
					];
            in {
               inherit system overlays pkgs toolchain libs;
				})
			))
		);
	in {
		devShells = forAllSystems ({ system, pkgs, libs, ... }: {
			playback-rs = pkgs.mkShell {
				name = "playback-rs";

				nativeBuildInputs = with pkgs; [
					pkgs.rust-analyzer-nightly
				];
				buildInputs = libs;

				shellHook = ''
					exec zsh;
				'';
			};
			default = self.devShells.${system}.playback-rs;
		});
		packages = forAllSystems ({ system, pkgs, toolchain, libs, ... }: {
			playback-rs = (pkgs.makeRustPlatform {
				cargo = toolchain;
				rustc = toolchain;
			}).buildRustPackage {
				pname = "playback-rs";
				version = "0.1.0";

				src = ./.;

				cargoLock.lockFile = ./Cargo.lock;

				buildInputs = libs;
			};
			default = self.packages.${system}.playback-rs;
		});
		apps = forAllSystems ({ system, pkgs, libs, ... }: {
			playback-rs = {
				type = "app";
				program = "${self.packages.${system}.playback-rs}/bin/{{TARGET}}";
			};
			default = self.apps.${system}.playback-rs;
		});
	};
}