This repository has no description
1.9 kB
66 lines
1# Headless Orca runtime (https://onorca.dev), reachable over retiolum.
2# Agents, terminals and worktrees run as the orca user; log in as orca to
3# set up agents and to clone repos.
4# Pairing URL for a client (Settings → Remote Orca Servers → Add Server):
5# journalctl -u orca-server | grep 'Pairing URL'
6{
7 self,
8 config,
9 pkgs,
10 ...
11}:
12let
13 llm = self.inputs.llm-agents.packages.${pkgs.system};
14 port = 6768;
15in
16{
17 users.users.orca = {
18 isNormalUser = true;
19 home = "/home/orca";
20 createHome = true;
21 group = "users";
22 useDefaultShell = true;
23 openssh.authorizedKeys.keys = [
24 self.keys.ssh.barnacle.public
25 self.keys.ssh.yubi_pgp.public
26 self.keys.ssh.termux_massulus.public
27 self.keys.ssh.yubi1.public
28 self.keys.ssh.yubi2.public
29 self.keys.ssh.solo2.public
30 self.keys.ssh.xerxes.public
31 self.keys.ssh.ignavia.public
32 self.keys.ssh.phonetpm_massulus.public
33 self.keys.ssh.massulus.public
34 ];
35 packages = [
36 llm.orca
37 pkgs.omp
38 # GitHub issues/PRs in the work item lists.
39 pkgs.gh
40 ];
41 };
42
43 systemd.services.orca-server = {
44 description = "Orca headless runtime";
45 wantedBy = [ "multi-user.target" ];
46 after = [ "network-online.target" ];
47 wants = [ "network-online.target" ];
48 # Terminals and agents started by Orca inherit this, so give them the
49 # same tools as an interactive login of the orca user.
50 path = [
51 "/run/wrappers"
52 "/etc/profiles/per-user/orca"
53 "/run/current-system/sw"
54 ];
55 serviceConfig = {
56 ExecStart = "${llm.orca}/bin/orca serve --port ${toString port} --pairing-address ${config.networking.hostName}.r";
57 Restart = "on-failure";
58 RestartSec = 10;
59 User = "orca";
60 Group = "users";
61 WorkingDirectory = "/home/orca";
62 };
63 };
64
65 networking.firewall.interfaces.retiolum.allowedTCPPorts = [ port ];
66}