This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

superconfig / 2configs / opencrow.nix
3.3 kB 120 lines
1{ 2 self, 3 config, 4 pkgs, 5 ... 6}: 7let 8 opencrow = self.inputs.opencrow.packages.${pkgs.system}.opencrow; 9 pi = self.inputs.llm-agents.packages.${pkgs.system}.pi; 10in 11{ 12 users.users.bot = { 13 isNormalUser = true; 14 home = "/home/bot"; 15 createHome = true; 16 group = "users"; 17 useDefaultShell = true; 18 openssh.authorizedKeys.keys = [ 19 self.keys.ssh.barnacle.public 20 self.keys.ssh.yubi_pgp.public 21 self.keys.ssh.yubi1.public 22 self.keys.ssh.yubi2.public 23 self.keys.ssh.solo2.public 24 self.keys.ssh.xerxes.public 25 self.keys.ssh.ignavia.public 26 self.keys.ssh.massulus.public 27 ]; 28 packages = [ 29 opencrow 30 pi 31 pkgs.curl 32 pkgs.jq 33 pkgs.lynx 34 ]; 35 }; 36 37 clan.core.vars.generators.opencrow-matrix = { 38 prompts.matrix-access-token = { 39 description = "Matrix access token for @opencrow:lassul.us"; 40 type = "hidden"; 41 persist = true; 42 }; 43 }; 44 45 clan.core.vars.generators.opencrow-openrouter = { 46 prompts.openrouter-api-key = { 47 description = "OpenRouter API key for opencrow - get from https://openrouter.ai/keys"; 48 type = "hidden"; 49 persist = true; 50 }; 51 }; 52 53 clan.core.vars.generators.opencrow-env = { 54 dependencies = [ 55 "opencrow-matrix" 56 "opencrow-openrouter" 57 ]; 58 files."opencrow.env" = { }; 59 script = '' 60 cat > "$out/opencrow.env" << EOF 61 OPENCROW_MATRIX_ACCESS_TOKEN=$(cat $in/opencrow-matrix/matrix-access-token) 62 OPENROUTER_API_KEY=$(cat $in/opencrow-openrouter/openrouter-api-key) 63 EOF 64 ''; 65 }; 66 67 systemd.services.opencrow = { 68 description = "OpenCrow Matrix Bot"; 69 wantedBy = [ "multi-user.target" ]; 70 after = [ "network-online.target" ]; 71 wants = [ "network-online.target" ]; 72 73 path = [ 74 opencrow 75 pi 76 pkgs.bash 77 pkgs.coreutils 78 pkgs.curl 79 pkgs.jq 80 pkgs.lynx 81 ]; 82 83 environment = { 84 OPENCROW_MATRIX_HOMESERVER = "https://matrix.lassul.us"; 85 OPENCROW_ALLOWED_USERS = "@lassulus:lassul.us"; 86 OPENCROW_MATRIX_USER_ID = "@opencrow:lassul.us"; 87 OPENCROW_MATRIX_DEVICE_ID = "AYBPKDHIDV"; 88 OPENCROW_PI_SESSION_DIR = "/home/bot/opencrow/sessions"; 89 OPENCROW_PI_WORKING_DIR = "/home/bot/opencrow"; 90 OPENCROW_PI_SKILLS = "${opencrow}/share/opencrow/skills/web"; 91 OPENCROW_PI_SKILLS_DIR = "/home/bot/skills"; 92 OPENCROW_PI_PROVIDER = "openrouter"; 93 OPENCROW_PI_MODEL = "anthropic/claude-sonnet-4"; 94 # OPENCROW_HEARTBEAT_INTERVAL = "10m"; 95 OPENCROW_SHOW_TOOL_CALLS = "1"; 96 OPENCROW_SOUL_FILE = "/home/bot/opencrow/SOUL.md"; 97 PI_CODING_AGENT_DIR = "/home/bot/opencrow/pi-agent"; 98 }; 99 100 serviceConfig = { 101 EnvironmentFile = [ 102 config.clan.core.vars.generators.opencrow-env.files."opencrow.env".path 103 config.clan.core.vars.generators.mailserver-bot.files."mail.env".path 104 ]; 105 ExecStart = "${opencrow}/bin/opencrow"; 106 Restart = "on-failure"; 107 RestartSec = 10; 108 User = "bot"; 109 Group = "users"; 110 WorkingDirectory = "/home/bot/opencrow"; 111 }; 112 }; 113 114 # ensure working directory exists 115 systemd.tmpfiles.rules = [ 116 "d /home/bot/opencrow 0750 bot users -" 117 "d /home/bot/opencrow/sessions 0750 bot users -" 118 "d /home/bot/opencrow/pi-agent 0750 bot users -" 119 ]; 120}