tangled
alpha
login
or
join now
tsiry-sandratraina.com
/
rockbox-zig
2
fork
atom
A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
2
fork
atom
overview
issues
pulls
pipelines
nix: update nix flake
tsiry-sandratraina.com
7 months ago
dd51e10e
0b6e9d83
+134
-136
2 changed files
expand all
collapse all
unified
split
flake.lock
flake.nix
+8
-42
flake.lock
···
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": {
···
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": {
···
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": {
···
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
}
···
5
"systems": "systems"
6
},
7
"locked": {
8
+
"lastModified": 1731533236,
9
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
10
"owner": "numtide",
11
"repo": "flake-utils",
12
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
13
"type": "github"
14
},
15
"original": {
···
20
},
21
"nixpkgs": {
22
"locked": {
23
+
"lastModified": 1752687322,
24
+
"narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
25
"owner": "NixOS",
26
"repo": "nixpkgs",
27
+
"rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
28
"type": "github"
29
},
30
"original": {
···
34
"type": "github"
35
}
36
},
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
37
"root": {
38
"inputs": {
39
+
"flake-utils": "flake-utils",
40
+
"nixpkgs": "nixpkgs"
41
}
42
},
43
"systems": {
···
52
"original": {
53
"owner": "nix-systems",
54
"repo": "default",
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
55
"type": "github"
56
}
57
}
+126
-94
flake.nix
···
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;
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
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
-
pkgs.cargo
38
-
pkgs.rustc
39
-
pkgs.protobuf
40
-
pkgs.buf
41
-
pkgs.libunwind
42
-
];
43
44
-
# Smaller binaries and avoids shipping glibc.
45
-
zigPreferMusl = false;
0
0
0
46
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
-
}));
54
55
-
# nix build .
56
-
packages.default = packages.target.${system-triple}.override {
57
-
# Prefer nix friendly settings.
58
-
zigPreferMusl = false;
59
-
zigDisableWrap = false;
60
-
};
61
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
-
});
70
71
-
# default bundle
72
-
apps.bundle.default = apps.bundle.target.${system-triple};
0
0
73
74
-
# nix run .
75
-
apps.default = env.app [] "zig build run -- \"$@\"";
0
0
76
77
-
# nix run .#build
78
-
apps.build = env.app [] "zig build \"$@\"";
0
79
80
-
# nix run .#test
81
-
apps.test = env.app [] "zig build test -- \"$@\"";
0
82
83
-
# nix run .#docs
84
-
apps.docs = env.app [] "zig build docs -- \"$@\"";
0
0
85
86
-
# nix run .#deps
87
-
apps.deps = env.showExternalDeps;
0
0
88
89
-
# nix run .#zon2json
90
-
apps.zon2json = env.app [env.zon2json] "zon2json \"$@\"";
0
0
0
91
92
-
# nix run .#zon2json-lock
93
-
apps.zon2json-lock = env.app [env.zon2json-lock] "zon2json-lock \"$@\"";
0
0
0
0
94
95
-
# nix run .#zon2nix
96
-
apps.zon2nix = env.app [env.zon2nix] "zon2nix \"$@\"";
0
0
0
0
97
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
-
}));
118
}
···
2
description = "Rockbox Zig project flake";
3
4
inputs = {
5
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6
+
flake-utils.url = "github:numtide/flake-utils";
7
};
8
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
+
};
64
};
65
66
+
devShells.default = pkgs.mkShell {
67
+
buildInputs = with pkgs; [
68
+
# Zig toolchain
69
+
zig
0
0
0
0
0
0
0
70
71
+
# Build tools
72
+
gnumake
73
+
pkg-config
74
+
gcc
0
0
0
0
0
0
0
0
0
0
0
75
76
+
# Libraries
77
+
SDL2
78
+
freetype
79
+
zlib
80
+
libunwind
81
82
+
# Protocol buffers
83
+
protobuf
84
+
buf
0
0
0
0
85
86
+
# JavaScript runtimes
87
+
deno
88
+
bun
0
0
0
89
90
+
# Rust toolchain (if needed)
91
+
cargo
92
+
rustc
0
0
0
0
0
93
94
+
# Development tools
95
+
evans
96
+
grpcurl
97
+
];
98
99
+
# Set up environment variables
100
+
shellHook = ''
101
+
echo "🚀 Rockbox Zig development environment"
102
+
echo "Zig version: $(zig version)"
103
104
+
# Set up Zig cache directories
105
+
export ZIG_GLOBAL_CACHE_DIR="$PWD/.zig-cache"
106
+
export ZIG_LOCAL_CACHE_DIR="$PWD/.zig-cache"
107
108
+
# Ensure cache directories exist
109
+
mkdir -p "$ZIG_GLOBAL_CACHE_DIR"
110
+
mkdir -p "$ZIG_LOCAL_CACHE_DIR"
111
112
+
echo "Build with: zig build"
113
+
echo "Run with: zig build run"
114
+
echo "Test with: zig build test"
115
+
'';
116
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
+
};
121
122
+
# Convenience apps
123
+
apps = {
124
+
default = flake-utils.lib.mkApp {
125
+
drv = self.packages.${system}.default;
126
+
};
127
128
+
build = {
129
+
type = "app";
130
+
program = "${pkgs.writeShellScript "zig-build" ''
131
+
${pkgs.zig}/bin/zig build "$@"
132
+
''}";
133
+
};
134
135
+
run = {
136
+
type = "app";
137
+
program = "${pkgs.writeShellScript "zig-run" ''
138
+
${pkgs.zig}/bin/zig build run -- "$@"
139
+
''}";
140
+
};
141
142
+
test = {
143
+
type = "app";
144
+
program = "${pkgs.writeShellScript "zig-test" ''
145
+
${pkgs.zig}/bin/zig build test -- "$@"
146
+
''}";
147
+
};
148
+
};
149
+
});
0
0
0
0
0
0
0
0
0
0
0
0
150
}