NaviPod/shell.nix
SindreKjelsrud 758076fe32
feat: Working sync between Navidrome & iPod
First full session of vibecoding with agents, super cool!

Signed-off-by: SindreKjelsrud <sindre@kjelsrud.dev>
2025-12-21 21:18:17 +01:00

56 lines
1.4 KiB
Nix

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
# GUI dependencies - X11
libGL
xorg.libX11
xorg.libXcursor
xorg.libXi
xorg.libXrandr
libxkbcommon
# GUI dependencies - Wayland (for Wayland support)
wayland
];
# Set up library paths for runtime
shellHook = let
libPath = pkgs.lib.makeLibraryPath (with pkgs; [
libGL
xorg.libX11
xorg.libXcursor
xorg.libXi
xorg.libXrandr
libxkbcommon
wayland
]);
in ''
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${libPath}"
echo "NaviPod Development Environment"
# 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 "Welcome to NaviPod development shell!"
echo "Run 'cargo build' to build the project."
echo "Run 'cargo check' to check for compilation errors."
echo "Run './target/debug/navipod-gui' to launch the GUI (from within this shell)."
'';
}