This repository has no description
0

Configure Feed

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

neoprism: add vibe-kanban service

- systemd service running as dedicated kanban user on SSD (zroot)
- nginx reverse proxy at kanban.lassul.us with basic auth via clan vars
- DNS record for kanban.lassul.us
- binary-patch claude-code version for claude 4.6 support
- backup of vibe-kanban state

+108 -1
+100
2configs/vibe-kanban.nix
··· 1 + { 2 + self, 3 + config, 4 + pkgs, 5 + ... 6 + }: 7 + let 8 + vibe-kanban-base = self.inputs.llm-agents.packages.${pkgs.system}.vibe-kanban; 9 + # HACK: binary-patch pinned claude-code version for claude 4.6 support 10 + # TODO: fork upstream and bump properly, then submit PR 11 + vibe-kanban = vibe-kanban-base.overrideAttrs (old: { 12 + postInstall = (old.postInstall or "") + '' 13 + ${pkgs.gnused}/bin/sed -i 's|@anthropic-ai/claude-code@2\.1\.45|@anthropic-ai/claude-code@2.1.71|g' $out/bin/vibe-kanban 14 + ''; 15 + }); 16 + port = 4242; 17 + in 18 + { 19 + users.users.kanban = { 20 + isNormalUser = true; 21 + home = "/var/lib/vibe-kanban"; 22 + createHome = true; 23 + group = "users"; 24 + useDefaultShell = true; 25 + openssh.authorizedKeys.keys = [ 26 + self.keys.ssh.barnacle.public 27 + self.keys.ssh.yubi_pgp.public 28 + self.keys.ssh.yubi1.public 29 + self.keys.ssh.yubi2.public 30 + self.keys.ssh.solo2.public 31 + self.keys.ssh.xerxes.public 32 + self.keys.ssh.massulus.public 33 + ]; 34 + }; 35 + 36 + clan.core.vars.generators.vibe-kanban = { 37 + files."htpasswd" = { 38 + owner = "root"; 39 + group = "nginx"; 40 + mode = "0640"; 41 + }; 42 + files."password" = { }; 43 + runtimeInputs = with pkgs; [ 44 + apacheHttpd 45 + coreutils 46 + ]; 47 + script = '' 48 + password=$(head -c 32 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9' | head -c 24) 49 + echo "$password" > "$out/password" 50 + htpasswd -nbB kanban "$password" > "$out/htpasswd" 51 + ''; 52 + }; 53 + 54 + systemd.services.vibe-kanban = { 55 + description = "Vibe Kanban Board"; 56 + wantedBy = [ "multi-user.target" ]; 57 + after = [ "network-online.target" ]; 58 + wants = [ "network-online.target" ]; 59 + 60 + path = [ 61 + pkgs.nodejs 62 + pkgs.git 63 + pkgs.bash 64 + pkgs.coreutils 65 + pkgs.nix 66 + ]; 67 + 68 + environment = { 69 + HOST = "127.0.0.1"; 70 + PORT = toString port; 71 + }; 72 + 73 + serviceConfig = { 74 + ExecStart = "${vibe-kanban}/bin/vibe-kanban"; 75 + Restart = "on-failure"; 76 + RestartSec = 10; 77 + User = "kanban"; 78 + Group = "users"; 79 + WorkingDirectory = "/var/lib/vibe-kanban"; 80 + }; 81 + }; 82 + 83 + services.nginx.virtualHosts."kanban.lassul.us" = { 84 + enableACME = true; 85 + forceSSL = true; 86 + locations."/" = { 87 + proxyPass = "http://127.0.0.1:${toString port}"; 88 + proxyWebsockets = true; 89 + extraConfig = '' 90 + auth_basic "Vibe Kanban"; 91 + auth_basic_user_file ${config.clan.core.vars.generators.vibe-kanban.files."htpasswd".path}; 92 + proxy_set_header Host $host; 93 + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 94 + proxy_set_header X-Forwarded-Proto $scheme; 95 + proxy_read_timeout 300s; 96 + proxy_send_timeout 300s; 97 + ''; 98 + }; 99 + }; 100 + }
+2 -1
2configs/dns/lassul.us.zone
··· 1 - @ 3600 IN SOA lassul.us. ns1.lassul.us. 2026030700 7200 3600 86400 3600 1 + @ 3600 IN SOA lassul.us. ns1.lassul.us. 2026030800 7200 3600 86400 3600 2 2 3 3 ;;@ 3600 IN NS ns1 4 4 @ 3600 IN NS ns1 ··· 53 53 hass IN CNAME neoprism 54 54 vault IN CNAME neoprism 55 55 cal IN CNAME neoprism 56 + kanban IN CNAME neoprism 56 57 57 58 ;; Mail 58 59 @ IN MX 3 mail
+3
machines/neoprism/backup.nix
··· 31 31 "/var/lib/matrix-synapse/media_store/local_content" 32 32 "/var/lib/radicale" 33 33 "/home/bot" 34 + "/var/lib/vibe-kanban" 34 35 "/var/vmail" 35 36 "/var/dkim" 36 37 "/var/sieve" ··· 40 41 "/home/bot/.cache" 41 42 "/home/bot/.nix-defexpr" 42 43 "/home/bot/.nix-profile" 44 + "/var/lib/vibe-kanban/.cache" 45 + "/var/lib/vibe-kanban/.npm" 43 46 ]; 44 47 repo = "u550643@u550643.your-storagebox.de:/./neoprism"; 45 48 encryption.mode = "none";
+3
machines/neoprism/config.nix
··· 68 68 # opencrow matrix bot 69 69 ../../2configs/opencrow.nix 70 70 71 + # vibe kanban 72 + ../../2configs/vibe-kanban.nix 73 + 71 74 # backups 72 75 ./backup.nix 73 76 ];