{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
rust-overlay,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (
system: let
overlays = [(import rust-overlay)];
pkgs = import nixpkgs {
inherit system overlays;
};
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
extensions = ["rust-src" "rust-analyzer"];
};
in {
devShells.default = pkgs.mkShell {
buildInputs = with pkgs;
[
# Rust toolchain
rustToolchain
# System dependencies for reqwest/openssl
pkg-config
openssl
# Additional useful tools
cargo-watch
cargo-edit
just
# For TUI development
libiconv
]
++ lib.optionals stdenv.isDarwin [
# macOS specific dependencies
darwin.apple_sdk.frameworks.Security
darwin.apple_sdk.frameworks.CoreFoundation
darwin.apple_sdk.frameworks.SystemConfiguration
];
# Environment variables
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
# For OpenSSL on some systems
OPENSSL_DIR = "${pkgs.openssl.dev}";
OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib";
OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include";
shellHook = ''
'';
};
# Optional: Define the package itself
packages.scrobble-scrubber = pkgs.rustPlatform.buildRustPackage {
pname = "scrobble-scrubber";
version = "0.1.0";
src = ./scrobble-scrubber;
cargoLock = {
lockFile = ./scrobble-scrubber/Cargo.lock;
};
nativeBuildInputs = with pkgs; [
pkg-config
];
buildInputs = with pkgs;
[
openssl
]
++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
darwin.apple_sdk.frameworks.CoreFoundation
darwin.apple_sdk.frameworks.SystemConfiguration
];
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
};
packages.default = self.packages.${system}.scrobble-scrubber;
}
);
}