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 Sync specific album" echo " --artist Sync specific artist" echo " --playlist 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 "" ''; }