{
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;
});
};
}