NaviPod/shell.nix

64 lines
2.5 KiB
Nix
Raw Normal View History

let
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-25.05";
pkgs = import nixpkgs { config = {}; overlays = []; };
in
pkgs.mkShell {
buildInputs = with pkgs; [
rustc
cargo
gcc # cc-command for building native dependencies
pkg-config # useful for C-dependencies
openssl # if crates are dependent on openssl
openssl.dev # openssl development headers
];
shellHook = ''
echo ""
echo " NaviPod Development Environment "
echo " Sync Navidrome to iPod | Scrobble to ListenBrainz "
echo ""
echo ""
# Verify Rust is available
if command -v rustc &> /dev/null; then
echo " Rust $(rustc --version) is available"
fi
if command -v cargo &> /dev/null; then
echo " Cargo $(cargo --version) is available"
fi
echo ""
echo "📦 Build Commands:"
echo " cargo build - Build in debug mode"
echo " cargo build --release - Build optimized release"
echo " cargo check - Check for compilation errors"
echo " cargo run -- [COMMAND] - Build and run a command"
echo ""
echo "🎵 NaviPod Commands:"
echo " cargo run -- sync [OPTIONS]"
echo " --album <NAME> Sync specific album"
echo " --artist <NAME> Sync specific artist"
echo " --playlist <NAME> Sync specific playlist"
echo ""
echo " cargo run -- list-albums List all albums from Navidrome"
echo " cargo run -- list-playlists List all playlists from Navidrome"
echo " cargo run -- check Check iPod connection"
echo ""
echo " cargo run -- scrobble [OPTIONS]"
echo " --clear Clear scrobbler log after sync"
echo " --no-backup Skip backup when clearing"
echo ""
echo "📝 Configuration:"
echo " Edit config.toml to set your Navidrome URL, credentials,"
echo " iPod mount point, and ListenBrainz token."
echo ""
echo "💡 Quick Start:"
echo " 1. cp config.example.toml config.toml"
echo " 2. Edit config.toml with your settings"
echo " 3. cargo run -- sync"
echo ""
'';
}