This repository has no description
0

Configure Feed

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

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