This repository has no description
0

Configure Feed

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

superconfig / 2configs / vibe-kanban.nix
2.6 kB 100 lines
1{ 2 self, 3 config, 4 pkgs, 5 ... 6}: 7let 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; 17in 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}