flake.nix (1536B)
1 { 2 description = "mkv"; 3 inputs = { 4 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 5 flake-utils.url = "github:numtide/flake-utils"; 6 }; 7 outputs = 8 { self, nixpkgs, flake-utils }: 9 flake-utils.lib.eachDefaultSystem (system: 10 let 11 pkgs = import nixpkgs { inherit system; }; 12 darwinBuildInputs = pkgs.lib.optionals pkgs.stdenv.hostPlatform.isDarwin [ 13 pkgs.libiconv 14 ]; 15 mkMkv = pkgs': pkgs'.rustPlatform.buildRustPackage { 16 pname = "mkv"; 17 version = "0.1.0"; 18 cargoLock.lockFile = ./Cargo.lock; 19 src = pkgs.lib.cleanSource ./.; 20 buildInputs = pkgs'.lib.optionals pkgs'.stdenv.hostPlatform.isDarwin [ 21 pkgs'.libiconv 22 ]; 23 doCheck = false; 24 }; 25 mkv = mkMkv pkgs; 26 in 27 { 28 devShells.default = pkgs.mkShell { 29 packages = [ 30 pkgs.rustc 31 pkgs.cargo 32 pkgs.rustfmt 33 pkgs.rust-analyzer 34 ]; 35 }; 36 packages = { 37 default = mkv; 38 x86_64-linux = mkv; 39 } // pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { 40 x86_64-linux-musl = mkMkv pkgs.pkgsCross.musl64; 41 aarch64-linux = mkMkv pkgs.pkgsCross.aarch64-multiplatform; 42 }; 43 checks.default = mkv.overrideAttrs { 44 doCheck = true; 45 checkPhase = '' 46 runHook preCheck 47 cargo test --lib 48 runHook postCheck 49 ''; 50 }; 51 } 52 ); 53 }