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

nix: update nix flake

+134 -136
+8 -42
flake.lock
··· 5 5 "systems": "systems" 6 6 }, 7 7 "locked": { 8 - "lastModified": 1710146030, 9 - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", 8 + "lastModified": 1731533236, 9 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 10 10 "owner": "numtide", 11 11 "repo": "flake-utils", 12 - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", 12 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 13 13 "type": "github" 14 14 }, 15 15 "original": { ··· 20 20 }, 21 21 "nixpkgs": { 22 22 "locked": { 23 - "lastModified": 1725634671, 24 - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", 23 + "lastModified": 1752687322, 24 + "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", 25 25 "owner": "NixOS", 26 26 "repo": "nixpkgs", 27 - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", 27 + "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", 28 28 "type": "github" 29 29 }, 30 30 "original": { ··· 34 34 "type": "github" 35 35 } 36 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 37 "root": { 53 38 "inputs": { 54 - "nixpkgs": "nixpkgs", 55 - "zig2nix": "zig2nix" 39 + "flake-utils": "flake-utils", 40 + "nixpkgs": "nixpkgs" 56 41 } 57 42 }, 58 43 "systems": { ··· 67 52 "original": { 68 53 "owner": "nix-systems", 69 54 "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 55 "type": "github" 90 56 } 91 57 }
+126 -94
flake.nix
··· 2 2 description = "Rockbox Zig project flake"; 3 3 4 4 inputs = { 5 - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 - zig2nix.url = "github:Cloudef/zig2nix"; 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 + flake-utils.url = "github:numtide/flake-utils"; 7 7 }; 8 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; 9 + outputs = { self, nixpkgs, flake-utils }: 10 + flake-utils.lib.eachDefaultSystem (system: 11 + let 12 + pkgs = nixpkgs.legacyPackages.${system}; 13 + in 14 + { 15 + packages.default = pkgs.stdenv.mkDerivation rec { 16 + pname = "rockbox-zig"; 17 + version = "0.1.0"; 18 + 19 + src = ./.; 20 + 21 + nativeBuildInputs = with pkgs; [ 22 + zig 23 + pkg-config 24 + gnumake 25 + ]; 26 + 27 + buildInputs = with pkgs; [ 28 + SDL2 29 + freetype 30 + zlib 31 + libunwind 32 + ]; 33 + 34 + # For Rust dependencies if needed 35 + # nativeBuildInputs = nativeBuildInputs ++ (with pkgs; [ 36 + # cargo 37 + # rustc 38 + # ]); 39 + 40 + buildPhase = '' 41 + runHook preBuild 42 + 43 + # Set up cache directory 44 + export ZIG_GLOBAL_CACHE_DIR=$TMPDIR/zig-cache 45 + export ZIG_LOCAL_CACHE_DIR=$TMPDIR/zig-local-cache 46 + 47 + # Build the project 48 + zig build --prefix $out --cache-dir $ZIG_LOCAL_CACHE_DIR 49 + 50 + runHook postBuild 51 + ''; 52 + 53 + installPhase = '' 54 + runHook preInstall 55 + # zig build already installs to $out 56 + runHook postInstall 57 + ''; 58 + 59 + meta = with pkgs.lib; { 60 + description = "Rockbox Zig project"; 61 + license = licenses.mit; # adjust as needed 62 + platforms = platforms.linux; 63 + }; 14 64 }; 15 65 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 ./.; 66 + devShells.default = pkgs.mkShell { 67 + buildInputs = with pkgs; [ 68 + # Zig toolchain 69 + zig 27 70 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 - pkgs.cargo 38 - pkgs.rustc 39 - pkgs.protobuf 40 - pkgs.buf 41 - pkgs.libunwind 42 - ]; 71 + # Build tools 72 + gnumake 73 + pkg-config 74 + gcc 43 75 44 - # Smaller binaries and avoids shipping glibc. 45 - zigPreferMusl = false; 76 + # Libraries 77 + SDL2 78 + freetype 79 + zlib 80 + libunwind 46 81 47 - # This disables LD_LIBRARY_PATH mangling, binary patching etc... 48 - # The package won't be usable inside nix. 49 - zigDisableWrap = false; 50 - } // optionalAttrs (!pathExists ./build.zig.zon) { 51 - pname = "rockbox-zig"; 52 - version = "0.1.0"; 53 - })); 82 + # Protocol buffers 83 + protobuf 84 + buf 54 85 55 - # nix build . 56 - packages.default = packages.target.${system-triple}.override { 57 - # Prefer nix friendly settings. 58 - zigPreferMusl = false; 59 - zigDisableWrap = false; 60 - }; 86 + # JavaScript runtimes 87 + deno 88 + bun 61 89 62 - # For bundling with nix bundle for running outside of nix 63 - # example: https://github.com/ralismark/nix-appimage 64 - apps.bundle.target = genAttrs allTargetTriples (target: let 65 - pkg = packages.target.${target}; 66 - in { 67 - type = "app"; 68 - program = "${pkg}/bin/default"; 69 - }); 90 + # Rust toolchain (if needed) 91 + cargo 92 + rustc 70 93 71 - # default bundle 72 - apps.bundle.default = apps.bundle.target.${system-triple}; 94 + # Development tools 95 + evans 96 + grpcurl 97 + ]; 73 98 74 - # nix run . 75 - apps.default = env.app [] "zig build run -- \"$@\""; 99 + # Set up environment variables 100 + shellHook = '' 101 + echo "🚀 Rockbox Zig development environment" 102 + echo "Zig version: $(zig version)" 76 103 77 - # nix run .#build 78 - apps.build = env.app [] "zig build \"$@\""; 104 + # Set up Zig cache directories 105 + export ZIG_GLOBAL_CACHE_DIR="$PWD/.zig-cache" 106 + export ZIG_LOCAL_CACHE_DIR="$PWD/.zig-cache" 79 107 80 - # nix run .#test 81 - apps.test = env.app [] "zig build test -- \"$@\""; 108 + # Ensure cache directories exist 109 + mkdir -p "$ZIG_GLOBAL_CACHE_DIR" 110 + mkdir -p "$ZIG_LOCAL_CACHE_DIR" 82 111 83 - # nix run .#docs 84 - apps.docs = env.app [] "zig build docs -- \"$@\""; 112 + echo "Build with: zig build" 113 + echo "Run with: zig build run" 114 + echo "Test with: zig build test" 115 + ''; 85 116 86 - # nix run .#deps 87 - apps.deps = env.showExternalDeps; 117 + # Environment variables for libraries 118 + PKG_CONFIG_PATH = "${pkgs.SDL2.dev}/lib/pkgconfig:${pkgs.freetype.dev}/lib/pkgconfig:${pkgs.zlib.dev}/lib/pkgconfig"; 119 + LD_LIBRARY_PATH = "${pkgs.SDL2}/lib:${pkgs.freetype}/lib:${pkgs.zlib}/lib:${pkgs.libunwind}/lib"; 120 + }; 88 121 89 - # nix run .#zon2json 90 - apps.zon2json = env.app [env.zon2json] "zon2json \"$@\""; 122 + # Convenience apps 123 + apps = { 124 + default = flake-utils.lib.mkApp { 125 + drv = self.packages.${system}.default; 126 + }; 91 127 92 - # nix run .#zon2json-lock 93 - apps.zon2json-lock = env.app [env.zon2json-lock] "zon2json-lock \"$@\""; 128 + build = { 129 + type = "app"; 130 + program = "${pkgs.writeShellScript "zig-build" '' 131 + ${pkgs.zig}/bin/zig build "$@" 132 + ''}"; 133 + }; 94 134 95 - # nix run .#zon2nix 96 - apps.zon2nix = env.app [env.zon2nix] "zon2nix \"$@\""; 135 + run = { 136 + type = "app"; 137 + program = "${pkgs.writeShellScript "zig-run" '' 138 + ${pkgs.zig}/bin/zig build run -- "$@" 139 + ''}"; 140 + }; 97 141 98 - # nix develop 99 - devShells.default = env.mkShell { 100 - nativeBuildInputs = with env.pkgs; [ 101 - pkgs.zig 102 - pkgs.SDL_compat 103 - pkgs.freetype 104 - pkgs.gnumake 105 - pkgs.pkg-config 106 - pkgs.gcc 107 - pkgs.zlib 108 - pkgs.cargo 109 - pkgs.rustc 110 - pkgs.protobuf 111 - pkgs.buf 112 - pkgs.libunwind 113 - pkgs.evans 114 - pkgs.grpcurl 115 - ]; 116 - }; 117 - })); 142 + test = { 143 + type = "app"; 144 + program = "${pkgs.writeShellScript "zig-test" '' 145 + ${pkgs.zig}/bin/zig build test -- "$@" 146 + ''}"; 147 + }; 148 + }; 149 + }); 118 150 }