A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd

zig: setup nix flake dev shell

+204 -5
+2 -4
build.zig
··· 159 159 defineCMacros(libfirmware); 160 160 addIncludePaths(libfirmware); 161 161 162 - libfirmware.linkSystemLibrary("usb"); 163 - 164 162 const libspeex_voice = b.addStaticLibrary(.{ 165 163 .name = "speex-voice", 166 164 .target = target, ··· 2942 2940 build_convbdf(b, target, optimize); 2943 2941 build_codepages(b, target, optimize); 2944 2942 build_voicefont(b, target, optimize); 2945 - build_usb_benchmark(b, target, optimize); 2946 - build_convttf(b, target, optimize); 2943 + // build_usb_benchmark(b, target, optimize); 2944 + // build_convttf(b, target, optimize); 2947 2945 build_mk500boot(b, target, optimize); 2948 2946 } 2949 2947
+1 -1
build.zig.zon
··· 10 10 11 11 // This is a [Semantic Version](https://semver.org/). 12 12 // In a future version of Zig it will be used for package deduplication. 13 - .version = "0.0.0", 13 + .version = "0.1.0", 14 14 15 15 // This field is optional. 16 16 // This is currently advisory only; Zig does not yet do anything
+95
flake.lock
··· 1 + { 2 + "nodes": { 3 + "flake-utils": { 4 + "inputs": { 5 + "systems": "systems" 6 + }, 7 + "locked": { 8 + "lastModified": 1710146030, 9 + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", 10 + "owner": "numtide", 11 + "repo": "flake-utils", 12 + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", 13 + "type": "github" 14 + }, 15 + "original": { 16 + "owner": "numtide", 17 + "repo": "flake-utils", 18 + "type": "github" 19 + } 20 + }, 21 + "nixpkgs": { 22 + "locked": { 23 + "lastModified": 1725634671, 24 + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", 25 + "owner": "NixOS", 26 + "repo": "nixpkgs", 27 + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", 28 + "type": "github" 29 + }, 30 + "original": { 31 + "owner": "NixOS", 32 + "ref": "nixos-unstable", 33 + "repo": "nixpkgs", 34 + "type": "github" 35 + } 36 + }, 37 + "nixpkgs_2": { 38 + "locked": { 39 + "lastModified": 1718622336, 40 + "narHash": "sha256-lywfxWRBn+lwdKaBy5x5uTkbCcEPUonCn6bK8OQPsw4=", 41 + "owner": "nixos", 42 + "repo": "nixpkgs", 43 + "rev": "d0fc4188d246ab953653f00e9ce0cf51d10d5eda", 44 + "type": "github" 45 + }, 46 + "original": { 47 + "owner": "nixos", 48 + "repo": "nixpkgs", 49 + "type": "github" 50 + } 51 + }, 52 + "root": { 53 + "inputs": { 54 + "nixpkgs": "nixpkgs", 55 + "zig2nix": "zig2nix" 56 + } 57 + }, 58 + "systems": { 59 + "locked": { 60 + "lastModified": 1681028828, 61 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 62 + "owner": "nix-systems", 63 + "repo": "default", 64 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 65 + "type": "github" 66 + }, 67 + "original": { 68 + "owner": "nix-systems", 69 + "repo": "default", 70 + "type": "github" 71 + } 72 + }, 73 + "zig2nix": { 74 + "inputs": { 75 + "flake-utils": "flake-utils", 76 + "nixpkgs": "nixpkgs_2" 77 + }, 78 + "locked": { 79 + "lastModified": 1724289899, 80 + "narHash": "sha256-DC24naOhfxa4eVQObq7puTpYmklzgtUJLD2+Im17Sbg=", 81 + "owner": "Cloudef", 82 + "repo": "zig2nix", 83 + "rev": "7377653b6da83f907f5c3ed9299f12569c24bb13", 84 + "type": "github" 85 + }, 86 + "original": { 87 + "owner": "Cloudef", 88 + "repo": "zig2nix", 89 + "type": "github" 90 + } 91 + } 92 + }, 93 + "root": "root", 94 + "version": 7 95 + }
+106
flake.nix
··· 1 + { 2 + description = "Rockbox Zig project flake"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 + zig2nix.url = "github:Cloudef/zig2nix"; 7 + }; 8 + 9 + outputs = { zig2nix, nixpkgs, ... }: let 10 + flake-utils = zig2nix.inputs.flake-utils; 11 + in (flake-utils.lib.eachDefaultSystem (system: let 12 + pkgs = import nixpkgs { 13 + inherit system; 14 + }; 15 + 16 + inherit (pkgs) lib; 17 + # Zig flake helper 18 + # Check the flake.nix in zig2nix project for more options: 19 + # <https://github.com/Cloudef/zig2nix/blob/master/flake.nix> 20 + env = zig2nix.outputs.zig-env.${system} { zig = pkgs.zig; }; 21 + system-triple = env.lib.zigTripleFromString system; 22 + in with builtins; with env.lib; with env.pkgs.lib; rec { 23 + # nix build .#target.{zig-target} 24 + # e.g. nix build .#target.x86_64-linux-gnu 25 + packages.target = genAttrs allTargetTriples (target: env.packageForTarget target ({ 26 + src = cleanSource ./.; 27 + 28 + nativeBuildInputs = with env.pkgs; []; 29 + buildInputs = with env.pkgsForTarget target; [ 30 + pkgs.zig 31 + pkgs.SDL_compat 32 + pkgs.freetype 33 + pkgs.gnumake 34 + pkgs.pkg-config 35 + pkgs.gcc 36 + pkgs.zlib 37 + ]; 38 + 39 + # Smaller binaries and avoids shipping glibc. 40 + zigPreferMusl = false; 41 + 42 + # This disables LD_LIBRARY_PATH mangling, binary patching etc... 43 + # The package won't be usable inside nix. 44 + zigDisableWrap = false; 45 + } // optionalAttrs (!pathExists ./build.zig.zon) { 46 + pname = "rockbox-zig"; 47 + version = "0.1.0"; 48 + })); 49 + 50 + # nix build . 51 + packages.default = packages.target.${system-triple}.override { 52 + # Prefer nix friendly settings. 53 + zigPreferMusl = false; 54 + zigDisableWrap = false; 55 + }; 56 + 57 + # For bundling with nix bundle for running outside of nix 58 + # example: https://github.com/ralismark/nix-appimage 59 + apps.bundle.target = genAttrs allTargetTriples (target: let 60 + pkg = packages.target.${target}; 61 + in { 62 + type = "app"; 63 + program = "${pkg}/bin/default"; 64 + }); 65 + 66 + # default bundle 67 + apps.bundle.default = apps.bundle.target.${system-triple}; 68 + 69 + # nix run . 70 + apps.default = env.app [] "zig build run -- \"$@\""; 71 + 72 + # nix run .#build 73 + apps.build = env.app [] "zig build \"$@\""; 74 + 75 + # nix run .#test 76 + apps.test = env.app [] "zig build test -- \"$@\""; 77 + 78 + # nix run .#docs 79 + apps.docs = env.app [] "zig build docs -- \"$@\""; 80 + 81 + # nix run .#deps 82 + apps.deps = env.showExternalDeps; 83 + 84 + # nix run .#zon2json 85 + apps.zon2json = env.app [env.zon2json] "zon2json \"$@\""; 86 + 87 + # nix run .#zon2json-lock 88 + apps.zon2json-lock = env.app [env.zon2json-lock] "zon2json-lock \"$@\""; 89 + 90 + # nix run .#zon2nix 91 + apps.zon2nix = env.app [env.zon2nix] "zon2nix \"$@\""; 92 + 93 + # nix develop 94 + devShells.default = env.mkShell { 95 + nativeBuildInputs = with env.pkgs; [ 96 + pkgs.zig 97 + pkgs.SDL_compat 98 + pkgs.freetype 99 + pkgs.gnumake 100 + pkgs.pkg-config 101 + pkgs.gcc 102 + pkgs.zlib 103 + ]; 104 + }; 105 + })); 106 + }