{ inputs = { nixpkgs.url = "github:nixos/nixpkgs"; flake-parts.url = "github:hercules-ci/flake-parts"; git-hooks.url = "github:cachix/git-hooks.nix"; }; outputs = { self, nixpkgs, flake-parts, git-hooks, ... }@inputs: flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" ]; perSystem = { system, ... }: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; pre-commit-check = git-hooks.lib.${system}.run { src = ./.; hooks = { nixfmt.enable = true; rustfmt.enable = true; }; }; music-agregator = pkgs.rustPlatform.buildRustPackage { pname = "music-agregator"; version = "0.1.0"; src = ./.; cargoLock.lockFile = ./Cargo.lock; }; in { formatter = pkgs.nixfmt-tree; packages = { default = music-agregator; inherit music-agregator; }; checks = { inherit pre-commit-check; }; devShells.default = pkgs.mkShell { inherit (pre-commit-check) shellHook; buildInputs = with pkgs; [ pre-commit gitleaks plantuml rustc cargo rustfmt clippy ]; }; }; }; }