a simple web player for subsonic
tinysub.devins.page
subsonic
navidrome
javascript
1{
2 outputs = {
3 self,
4 nixpkgs,
5 }: let
6 supportedSystems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"];
7 forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
8 nixpkgsFor = forAllSystems (system:
9 import nixpkgs {
10 inherit system;
11 });
12 in {
13 packages = forAllSystems (system: let
14 pkgs = nixpkgsFor."${system}";
15 in {
16 default = pkgs.stdenv.mkDerivation {
17 pname = "tinysub";
18 version = "0.1.0";
19 src = ./.;
20 nativeBuildInputs = with pkgs; [
21 monolith
22 ];
23 buildPhase = ''
24 runHook preBuild
25 monolith src/index.html -o index.html
26 runHook postBuild
27 '';
28 installPhase = ''
29 runHook preInstall
30 mkdir -p $out
31 cp index.html $out/
32 runHook postInstall
33 '';
34 };
35 });
36
37 formatter = forAllSystems (system: nixpkgsFor."${system}".alejandra);
38
39 devShells = forAllSystems (system: let
40 pkgs = nixpkgsFor."${system}";
41 in {
42 default = pkgs.mkShell {
43 packages = with pkgs; [
44 nodejs
45 pnpm
46 prettier
47 ];
48 };
49 });
50
51 overlays.default = final: prev: {
52 tinysub = self.packages.${final.system}.default;
53 };
54 };
55}