nandi/frqpublic Fork 0
2abafda104076a65d7f9007b2a585de05d5913e7
Commits
Clone
git clone https://git.rickub.com/nandi/frq.git
git clone ssh://git@rickub.com/nandi/frq.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

CLAUDE.md · 67 lines · 3.1 KBmarkdown Blame HistoryRaw
Read the clock in the reader's zone when /etc/localtime is a file bffe879 nandi 17d ago1# Working in this repo
2
3## Nix
4
Follow the xorg renames, and stop wrapping nix in distrobox a400a00 nandi 16d ago5You are already running inside the Arch distrobox, where `nix` lives, so run
6nix commands directly — do not wrap them in `distrobox enter`:
Read the clock in the reader's zone when /etc/localtime is a file bffe879 nandi 17d ago7
8```bash
Follow the xorg renames, and stop wrapping nix in distrobox a400a00 nandi 16d ago9nix build .#frq
Read the clock in the reader's zone when /etc/localtime is a file bffe879 nandi 17d ago10```
11
Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago12A remote builder (`eu.nixbuild.net`) is already configured here. Large builds
13want `--store ssh-ng://eu.nixbuild.net --eval-store auto` rather than a
14`builders` entry, so the whole graph stays there and only .drv files go up —
15libjoltcosmic's dependency tree is the one that makes this worth remembering.
Read the clock in the reader's zone when /etc/localtime is a file bffe879 nandi 17d ago16
Follow the xorg renames, and stop wrapping nix in distrobox a400a00 nandi 16d ago17One thing this container is *not* representative of: `/etc/localtime` is a
18regular file here rather than a symlink, so anything that reads the zone out
Read the clock in the reader's zone when /etc/localtime is a file bffe879 nandi 17d ago19of its path sees nothing. That is a real deployment shape, not an artefact —
20frq.clock handles it.
Split the tree three ways, and let the phone be Flutter's 7070931 nandi 7d ago21
22## The three source trees
23
24```
25common/ .cljc jolt AND ClojureDart
26src/ .clj jolt only
27flutter/ .cljd ClojureDart only
28```
29
30The extension is the boundary, not a convention: ClojureDart reads `.cljd` and
31`.cljc` and never `.clj`, jolt reads all three. So the rule for anything under
32`common/` is that it may not require `jolt.*`, `glimmer*` or a `dart:` library
33— if it needs the host, it asks `frq.io`, and the backend that installed itself
34answers. `frq.io.jolt` is required for its side effect by `frq.app`;
35`frq.io.dart` is installed by `flutter/src/frq/main.cljd`, which has to await
36the storage directory first.
37
38Adding a host call means adding it to the seam in `common/frq/io.cljc` and to
39both implementations. Name it for the result rather than the mechanism — the
40seam has `write-private-file!` and not a chmod, because Dart has no chmod.
41
Paint the desktop with Flutter too, beside libcosmic fc5f63c nandi 6d ago42`flutter/` builds two things, from one `clojure -M:cljd compile`:
43
44`just apk`, out of the flake's own `.#flutter` shell (clojure, jdk17, flutter)
45and its `.#android-sdk` package. Impure on purpose: Gradle fetches its own
46dependencies and writes into `ANDROID_HOME`, so the recipe copies the store SDK
47to `flutter/.home` and lets it finish there. It is the only APK there is — the
48jolt APK, `nix/android.nix`, `android/` and the `.#apk` outputs are gone,
49because every backend that APK could paint with is retired.
50
51`just flutter-desktop`, out of `.#flutter-desktop` (the same clojure and
52flutter, with cmake, ninja, pkg-config and gtk3 where the JDK and the SDK are).
53Impure for the network half of the same reasons and no writable-SDK dance, since
Name the libcosmic recipe for its backend: `just cosmic run` 5ba9382 nandi 6d ago54nothing writes into the store. nixGL off NixOS, like `just cosmic run`.
Paint the desktop with Flutter too, beside libcosmic fc5f63c nandi 6d ago55
Name the libcosmic recipe for its backend: `just cosmic run` 5ba9382 nandi 6d ago56So there are two desktop GUIs and they are both first-class: `just cosmic
57run` is libcosmic under jolt, `just flutter-desktop` is Flutter's Linux target
58over
Paint the desktop with Flutter too, beside libcosmic fc5f63c nandi 6d ago59`frq.hiccup`. Same screens out of `common/frq/screens/`, two renderers. jvui and
60Vidya were experiments and are gone; libcosmic is a desktop window and does not
61cross to a phone, which is what the Flutter half is for.
62
63The consequence for `common/` is that "the phone" is no longer a synonym for
64"the ClojureDart side" — two targets compile it. An implementation that branches
65on the platform has to ask (`Platform.isAndroid`) rather than assume; see
66`frq.io.dart/write-private-file!`, where assuming cost a token its file mode.
67See flutter/README.md.