This repository has no description
1.8 kB
63 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.massulus.public
33 ];
34 packages = [
35 llm.orca
36 pkgs.omp
37 ];
38 };
39
40 systemd.services.orca-server = {
41 description = "Orca headless runtime";
42 wantedBy = [ "multi-user.target" ];
43 after = [ "network-online.target" ];
44 wants = [ "network-online.target" ];
45 # Terminals and agents started by Orca inherit this, so give them the
46 # same tools as an interactive login of the orca user.
47 path = [
48 "/run/wrappers"
49 "/etc/profiles/per-user/orca"
50 "/run/current-system/sw"
51 ];
52 serviceConfig = {
53 ExecStart = "${llm.orca}/bin/orca serve --port ${toString port} --pairing-address ${config.networking.hostName}.r";
54 Restart = "on-failure";
55 RestartSec = 10;
56 User = "orca";
57 Group = "users";
58 WorkingDirectory = "/home/orca";
59 };
60 };
61
62 networking.firewall.interfaces.retiolum.allowedTCPPorts = [ port ];
63}