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