Coffee journaling on ATProto (alpha)
alpha.arabica.social
coffee
1{ lib, buildGoModule, tailwindcss }:
2
3buildGoModule rec {
4 pname = "arabica";
5 version = "0.1.0";
6 src = ./.;
7 vendorHash = "sha256-mrIFu5c2EuGvYHyjJVqC8WzlsmUJYCm/6yUpJ0IGPlA=";
8
9 nativeBuildInputs = [ tailwindcss ];
10
11 preBuild = ''
12 tailwindcss -i static/css/style.css -o static/css/output.css --minify
13 '';
14
15 buildPhase = ''
16 runHook preBuild
17 go build -o arabica cmd/server/main.go
18 runHook postBuild
19 '';
20
21 installPhase = let
22 wrapperScript = ''
23 #!/bin/sh
24 SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
25 SHARE_DIR="$SCRIPT_DIR/../share/arabica"
26
27 # Set default database path if not specified
28 # Uses XDG_DATA_HOME or falls back to ~/.local/share
29 if [ -z "$ARABICA_DB_PATH" ]; then
30 DATA_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/arabica"
31 mkdir -p "$DATA_DIR"
32 export ARABICA_DB_PATH="$DATA_DIR/arabica.db"
33 fi
34
35 cd "$SHARE_DIR"
36 exec "$SCRIPT_DIR/arabica-unwrapped" "$@"
37 '';
38 in ''
39 mkdir -p $out/bin
40 mkdir -p $out/share/arabica
41
42 # Copy static files and templates
43 cp -r static $out/share/arabica/
44 cp -r templates $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}