115 lines
2.9 KiB
Nix
115 lines
2.9 KiB
Nix
{
|
|
description = "Cross-platform TUI music player development shell";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
};
|
|
|
|
outputs =
|
|
{ nixpkgs, ... }:
|
|
let
|
|
systems = [
|
|
"aarch64-darwin"
|
|
"x86_64-darwin"
|
|
"aarch64-linux"
|
|
"x86_64-linux"
|
|
];
|
|
|
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
|
|
|
perSystem =
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; };
|
|
lib = pkgs.lib;
|
|
|
|
linuxAudioRuntime = lib.optionals pkgs.stdenv.isLinux [
|
|
pkgs.alsa-lib
|
|
pkgs.pulseaudio
|
|
];
|
|
|
|
tui-build = pkgs.writeShellApplication {
|
|
name = "tui-build";
|
|
runtimeInputs = [
|
|
pkgs.cmake
|
|
pkgs.ninja
|
|
];
|
|
text = ''
|
|
cmake -S . -B build -G Ninja
|
|
cmake --build build
|
|
'';
|
|
};
|
|
|
|
tui-run = pkgs.writeShellApplication {
|
|
name = "tui-run";
|
|
runtimeInputs = [
|
|
tui-build
|
|
];
|
|
text = ''
|
|
tui-build
|
|
exec ./build/tui-music-player "$@"
|
|
'';
|
|
};
|
|
|
|
tui-clean = pkgs.writeShellApplication {
|
|
name = "tui-clean";
|
|
text = ''
|
|
rm -rf build tui-music-player tui-music-player.exe
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
packages.default = pkgs.stdenv.mkDerivation {
|
|
pname = "tui-music-player";
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
|
|
nativeBuildInputs = [
|
|
pkgs.cmake
|
|
pkgs.ninja
|
|
];
|
|
|
|
buildInputs = linuxAudioRuntime;
|
|
|
|
cmakeFlags = [
|
|
"-G"
|
|
"Ninja"
|
|
];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
install -Dm755 tui-music-player "$out/bin/tui-music-player"
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
packages =
|
|
[
|
|
pkgs.cmake
|
|
pkgs.ninja
|
|
pkgs.gnumake
|
|
pkgs.pkg-config
|
|
pkgs.clang-tools
|
|
tui-build
|
|
tui-run
|
|
tui-clean
|
|
]
|
|
++ linuxAudioRuntime;
|
|
|
|
shellHook = ''
|
|
mkdir -p music
|
|
echo "TUI Music Player devshell"
|
|
echo " tui-build - configure and build with CMake + Ninja"
|
|
echo " tui-run - build, then run ./build/tui-music-player"
|
|
echo " tui-clean - remove generated build outputs"
|
|
echo "Put audio files in ./music, then run: tui-run"
|
|
'';
|
|
};
|
|
};
|
|
in
|
|
{
|
|
packages = forAllSystems (system: (perSystem system).packages);
|
|
devShells = forAllSystems (system: (perSystem system).devShells);
|
|
};
|
|
}
|