From ef0c33ace51b0eaa2ffd2eedca9377eccee9bf2b Mon Sep 17 00:00:00 2001 From: structix Date: Sun, 8 Feb 2026 22:36:33 +0100 Subject: [PATCH] Add flake --- flake.lock | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 59 ++++++++++++++------------------- 2 files changed, 120 insertions(+), 35 deletions(-) create mode 100644 flake.lock diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8644c7d --- /dev/null +++ b/flake.lock @@ -0,0 +1,96 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1770520253, + "narHash": "sha256-6rWuHgSENXKnC6HGGAdRolQrnp/8IzscDn7FQEo1uEQ=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ebb8a141f60bb0ec33836333e0ca7928a072217f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index 9070399..79c3b6e 100644 --- a/flake.nix +++ b/flake.nix @@ -1,10 +1,9 @@ { - description = "A Nix flake for the rate_music Rust project"; + description = "rate_music - built with standard buildRustPackage"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay.url = "github:oxalica/rust-overlay"; - crane.url = "github:ipetkov/crane"; flake-utils.url = "github:numtide/flake-utils"; }; @@ -13,7 +12,6 @@ self, nixpkgs, rust-overlay, - crane, flake-utils, ... }: @@ -23,60 +21,51 @@ overlays = [ (import rust-overlay) ]; pkgs = import nixpkgs { inherit system overlays; }; - # 1. Define the Rust toolchain + # Use the latest stable rust toolchain from the overlay rustToolchain = pkgs.rust-bin.stable.latest.default; - # 2. Configure crane to use our specific toolchain - craneLib = (crane.legal.lib.${system}).overrideToolchain rustToolchain; + # Create a rustPlatform using our specific toolchain + rustPlatform = pkgs.makeRustPlatform { + cargo = rustToolchain; + rustc = rustToolchain; + }; - # 3. Define common build inputs (system libraries) - # mpris and sqlx often need pkg-config and specific C libraries + # System dependencies for your specific crates nativeBuildInputs = with pkgs; [ pkg-config rustToolchain ]; - buildInputs = with pkgs; [ sqlite openssl - dbus # Required by many mpris implementations + dbus ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security darwin.apple_sdk.frameworks.SystemConfiguration ]; - # 4. Build the project - # This splits the build into "deps" and "project" for better caching - commonArgs = { - src = craneLib.cleanCargoSource (craneLib.path ./.); - strictDeps = true; - inherit buildInputs nativeBuildInputs; - }; - - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - rate_music = craneLib.buildPackage ( - commonArgs - // { - inherit cargoArtifacts; - } - ); - in { - packages.default = rate_music; + packages.default = rustPlatform.buildRustPackage { + pname = "rate_music"; + version = "0.1.0"; + + src = ./.; + + cargoLock = { + lockFile = ./Cargo.lock; + }; + + inherit buildInputs nativeBuildInputs; + + buildType = "release"; + }; devShells.default = pkgs.mkShell { - inputsFrom = [ rate_music ]; - # Extra tools for development - nativeBuildInputs = with pkgs; [ - rust-analyzer - sqlx-cli - ]; - - # SQLX environment variable if you're using offline mode or a specific DB path + inherit buildInputs nativeBuildInputs; shellHook = '' export DATABASE_URL="sqlite:./rate_music.db" '';