Coffee journaling on ATProto (alpha)
alpha.arabica.social
coffee
1{ lib, buildGoModule, templ, tailwindcss }:
2
3buildGoModule {
4 pname = "arabica";
5 version = "0.1.0";
6 src = ./.;
7 vendorHash = "sha256-eNImqD4Zof/KjKT8Htd392WzJi0lJUeliIAXlrDeWKc=";
8
9 nativeBuildInputs = [ templ tailwindcss ];
10
11 preBuild = ''
12 tailwindcss -i static/css/app.css -o static/css/output.css --minify
13 templ generate
14 '';
15
16 buildPhase = ''
17 runHook preBuild
18 go build -o arabica cmd/server/main.go
19 runHook postBuild
20 '';
21
22 installPhase = let
23 wrapperScript = ''
24 #!/bin/sh
25 SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
26 SHARE_DIR="$SCRIPT_DIR/../share/arabica"
27
28 # Set default database path if not specified
29 # Uses XDG_DATA_HOME or falls back to ~/.local/share
30 if [ -z "$ARABICA_DB_PATH" ]; then
31 DATA_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/arabica"
32 mkdir -p "$DATA_DIR"
33 export ARABICA_DB_PATH="$DATA_DIR/arabica.db"
34 fi
35
36 cd "$SHARE_DIR"
37 exec "$SCRIPT_DIR/arabica-unwrapped" "$@"
38 '';
39 in ''
40 mkdir -p $out/bin
41 mkdir -p $out/share/arabica
42
43 # Copy static files
44 cp -r static $out/share/arabica/
45 cp arabica $out/bin/arabica-unwrapped
46 cat > $out/bin/arabica <<'WRAPPER'
47 ${wrapperScript}
48 WRAPPER
49 chmod +x $out/bin/arabica
50 '';
51
52 meta = with lib; {
53 description = "Arabica - Coffee brew tracker";
54 license = licenses.mit;
55 platforms = platforms.linux;
56 mainProgram = "arabica";
57 };
58}