Kieran's opinionated (and probably slightly dumb) nix config

feat: add tangled knot and spindle

dunkirk.sh f5c5e91e e077c523

verified
+265
+208
flake.lock
··· 1 1 { 2 2 "nodes": { 3 + "actor-typeahead-src": { 4 + "flake": false, 5 + "locked": { 6 + "lastModified": 1762835797, 7 + "narHash": "sha256-heizoWUKDdar6ymfZTnj3ytcEv/L4d4fzSmtr0HlXsQ=", 8 + "ref": "refs/heads/main", 9 + "rev": "677fe7f743050a4e7f09d4a6f87bbf1325a06f6b", 10 + "revCount": 6, 11 + "type": "git", 12 + "url": "https://tangled.org/@jakelazaroff.com/actor-typeahead" 13 + }, 14 + "original": { 15 + "type": "git", 16 + "url": "https://tangled.org/@jakelazaroff.com/actor-typeahead" 17 + } 18 + }, 3 19 "agenix": { 4 20 "inputs": { 5 21 "darwin": "darwin", ··· 218 234 "type": "github" 219 235 } 220 236 }, 237 + "flake-compat_3": { 238 + "flake": false, 239 + "locked": { 240 + "lastModified": 1751685974, 241 + "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", 242 + "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", 243 + "type": "tarball", 244 + "url": "https://git.lix.systems/api/v1/repos/lix-project/flake-compat/archive/549f2762aebeff29a2e5ece7a7dc0f955281a1d1.tar.gz?rev=549f2762aebeff29a2e5ece7a7dc0f955281a1d1" 245 + }, 246 + "original": { 247 + "type": "tarball", 248 + "url": "https://git.lix.systems/lix-project/flake-compat/archive/main.tar.gz" 249 + } 250 + }, 221 251 "flake-parts": { 222 252 "inputs": { 223 253 "nixpkgs-lib": "nixpkgs-lib" ··· 369 399 "type": "github" 370 400 } 371 401 }, 402 + "flake-utils_6": { 403 + "inputs": { 404 + "systems": "systems_9" 405 + }, 406 + "locked": { 407 + "lastModified": 1694529238, 408 + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 409 + "owner": "numtide", 410 + "repo": "flake-utils", 411 + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 412 + "type": "github" 413 + }, 414 + "original": { 415 + "owner": "numtide", 416 + "repo": "flake-utils", 417 + "type": "github" 418 + } 419 + }, 372 420 "flare": { 373 421 "inputs": { 374 422 "flake-utils": "flake-utils_3", ··· 456 504 "type": "github" 457 505 } 458 506 }, 507 + "gomod2nix": { 508 + "inputs": { 509 + "flake-utils": "flake-utils_6", 510 + "nixpkgs": [ 511 + "tangled", 512 + "nixpkgs" 513 + ] 514 + }, 515 + "locked": { 516 + "lastModified": 1754078208, 517 + "narHash": "sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8=", 518 + "owner": "nix-community", 519 + "repo": "gomod2nix", 520 + "rev": "7f963246a71626c7fc70b431a315c4388a0c95cf", 521 + "type": "github" 522 + }, 523 + "original": { 524 + "owner": "nix-community", 525 + "repo": "gomod2nix", 526 + "type": "github" 527 + } 528 + }, 459 529 "hardware": { 460 530 "locked": { 461 531 "lastModified": 1764080039, ··· 514 584 "type": "github" 515 585 } 516 586 }, 587 + "htmx-src": { 588 + "flake": false, 589 + "locked": { 590 + "narHash": "sha256-nm6avZuEBg67SSyyZUhjpXVNstHHgUxrtBHqJgowU08=", 591 + "type": "file", 592 + "url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js" 593 + }, 594 + "original": { 595 + "type": "file", 596 + "url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js" 597 + } 598 + }, 599 + "htmx-ws-src": { 600 + "flake": false, 601 + "locked": { 602 + "narHash": "sha256-2fg6KyEJoO24q0fQqbz9RMaYNPQrMwpZh29tkSqdqGY=", 603 + "type": "file", 604 + "url": "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.2" 605 + }, 606 + "original": { 607 + "type": "file", 608 + "url": "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.2" 609 + } 610 + }, 517 611 "hyprland-contrib": { 518 612 "inputs": { 519 613 "nixpkgs": [ ··· 534 628 "type": "github" 535 629 } 536 630 }, 631 + "ibm-plex-mono-src": { 632 + "flake": false, 633 + "locked": { 634 + "lastModified": 1731402384, 635 + "narHash": "sha256-OwUmrPfEehLDz0fl2ChYLK8FQM2p0G1+EMrGsYEq+6g=", 636 + "type": "tarball", 637 + "url": "https://github.com/IBM/plex/releases/download/@ibm/plex-mono@1.1.0/ibm-plex-mono.zip" 638 + }, 639 + "original": { 640 + "type": "tarball", 641 + "url": "https://github.com/IBM/plex/releases/download/@ibm/plex-mono@1.1.0/ibm-plex-mono.zip" 642 + } 643 + }, 537 644 "import-tree": { 538 645 "locked": { 539 646 "lastModified": 1763762820, ··· 549 656 "type": "github" 550 657 } 551 658 }, 659 + "indigo": { 660 + "flake": false, 661 + "locked": { 662 + "lastModified": 1753693716, 663 + "narHash": "sha256-DMIKnCJRODQXEHUxA+7mLzRALmnZhkkbHlFT2rCQYrE=", 664 + "owner": "oppiliappan", 665 + "repo": "indigo", 666 + "rev": "5f170569da9360f57add450a278d73538092d8ca", 667 + "type": "github" 668 + }, 669 + "original": { 670 + "owner": "oppiliappan", 671 + "repo": "indigo", 672 + "type": "github" 673 + } 674 + }, 675 + "inter-fonts-src": { 676 + "flake": false, 677 + "locked": { 678 + "lastModified": 1731687360, 679 + "narHash": "sha256-5vdKKvHAeZi6igrfpbOdhZlDX2/5+UvzlnCQV6DdqoQ=", 680 + "type": "tarball", 681 + "url": "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" 682 + }, 683 + "original": { 684 + "type": "tarball", 685 + "url": "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" 686 + } 687 + }, 552 688 "ixx": { 553 689 "inputs": { 554 690 "flake-utils": [ ··· 577 713 "ref": "v0.0.6", 578 714 "repo": "ixx", 579 715 "type": "github" 716 + } 717 + }, 718 + "lucide-src": { 719 + "flake": false, 720 + "locked": { 721 + "lastModified": 1754044466, 722 + "narHash": "sha256-+exBR2OToB1iv7ZQI2S4B0lXA/QRvC9n6U99UxGpJGs=", 723 + "type": "tarball", 724 + "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" 725 + }, 726 + "original": { 727 + "type": "tarball", 728 + "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" 580 729 } 581 730 }, 582 731 "nix-darwin": { ··· 928 1077 "nur": "nur", 929 1078 "soapdump": "soapdump", 930 1079 "spicetify-nix": "spicetify-nix", 1080 + "tangled": "tangled", 931 1081 "terminal-wakatime": "terminal-wakatime", 932 1082 "wakatime-ls": "wakatime-ls" 933 1083 } ··· 992 1142 "owner": "Gerg-L", 993 1143 "repo": "spicetify-nix", 994 1144 "type": "github" 1145 + } 1146 + }, 1147 + "sqlite-lib-src": { 1148 + "flake": false, 1149 + "locked": { 1150 + "lastModified": 1706631843, 1151 + "narHash": "sha256-bJoMjirsBjm2Qk9KPiy3yV3+8b/POlYe76/FQbciHro=", 1152 + "type": "tarball", 1153 + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" 1154 + }, 1155 + "original": { 1156 + "type": "tarball", 1157 + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" 995 1158 } 996 1159 }, 997 1160 "systems": { ··· 1112 1275 "owner": "nix-systems", 1113 1276 "repo": "default", 1114 1277 "type": "github" 1278 + } 1279 + }, 1280 + "systems_9": { 1281 + "locked": { 1282 + "lastModified": 1681028828, 1283 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 1284 + "owner": "nix-systems", 1285 + "repo": "default", 1286 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 1287 + "type": "github" 1288 + }, 1289 + "original": { 1290 + "owner": "nix-systems", 1291 + "repo": "default", 1292 + "type": "github" 1293 + } 1294 + }, 1295 + "tangled": { 1296 + "inputs": { 1297 + "actor-typeahead-src": "actor-typeahead-src", 1298 + "flake-compat": "flake-compat_3", 1299 + "gomod2nix": "gomod2nix", 1300 + "htmx-src": "htmx-src", 1301 + "htmx-ws-src": "htmx-ws-src", 1302 + "ibm-plex-mono-src": "ibm-plex-mono-src", 1303 + "indigo": "indigo", 1304 + "inter-fonts-src": "inter-fonts-src", 1305 + "lucide-src": "lucide-src", 1306 + "nixpkgs": [ 1307 + "nixpkgs" 1308 + ], 1309 + "sqlite-lib-src": "sqlite-lib-src" 1310 + }, 1311 + "locked": { 1312 + "lastModified": 1764005195, 1313 + "narHash": "sha256-PzuWiW/nMxwQTX0i1bHwGazQF4ptLNI9OGwpmhDb9i0=", 1314 + "ref": "refs/heads/master", 1315 + "rev": "7358ec6edfa4d17b8b8f543d99e83a4705901148", 1316 + "revCount": 1687, 1317 + "type": "git", 1318 + "url": "https://tangled.org/tangled.org/core" 1319 + }, 1320 + "original": { 1321 + "type": "git", 1322 + "url": "https://tangled.org/tangled.org/core" 1115 1323 } 1116 1324 }, 1117 1325 "terminal-wakatime": {
+6
flake.nix
··· 99 99 url = "github:serokell/deploy-rs"; 100 100 inputs.nixpkgs.follows = "nixpkgs"; 101 101 }; 102 + 103 + tangled = { 104 + url = "git+https://tangled.org/tangled.org/core"; 105 + inputs.nixpkgs.follows = "nixpkgs"; 106 + }; 102 107 }; 103 108 104 109 outputs = ··· 111 116 nur, 112 117 nix-darwin, 113 118 deploy-rs, 119 + tangled, 114 120 ... 115 121 }@inputs: 116 122 let
+51
machines/terebithia/default.nix
··· 11 11 ./home-manager.nix 12 12 13 13 (inputs.import-tree ../../modules/nixos) 14 + inputs.tangled.nixosModules.knot 15 + inputs.tangled.nixosModules.spindle 14 16 ]; 15 17 16 18 nixpkgs = { ··· 190 192 globalConfig = '' 191 193 acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN} 192 194 ''; 195 + virtualHosts."knot.dunkirk.sh" = { 196 + extraConfig = '' 197 + tls { 198 + dns cloudflare {env.CLOUDFLARE_API_TOKEN} 199 + } 200 + header { 201 + Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" 202 + } 203 + reverse_proxy localhost:5555 { 204 + header_up X-Forwarded-Proto {scheme} 205 + header_up X-Forwarded-For {remote} 206 + } 207 + ''; 208 + }; 209 + virtualHosts."spindle.dunkirk.sh" = { 210 + extraConfig = '' 211 + tls { 212 + dns cloudflare {env.CLOUDFLARE_API_TOKEN} 213 + } 214 + header { 215 + Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" 216 + } 217 + reverse_proxy localhost:6555 { 218 + header_up X-Forwarded-Proto {scheme} 219 + header_up X-Forwarded-For {remote} 220 + } 221 + ''; 222 + }; 193 223 extraConfig = '' 194 224 # Default response for unhandled domains 195 225 :80 { ··· 215 245 enable = true; 216 246 domain = "hn.dunkirk.sh"; 217 247 secretsFile = config.age.secrets.hn-alerts.path; 248 + }; 249 + 250 + services.tangled.knot = { 251 + enable = true; 252 + package = inputs.tangled.packages.aarch64-linux.knot; 253 + appviewEndpoint = "https://tangled.org"; 254 + server = { 255 + owner = "did:plc:krxbvxvis5skq7jj6eot23ul"; 256 + hostname = "knot.dunkirk.sh"; 257 + listenAddr = "127.0.0.1:5555"; 258 + }; 259 + }; 260 + 261 + services.tangled.spindle = { 262 + enable = true; 263 + package = inputs.tangled.packages.aarch64-linux.spindle; 264 + server = { 265 + owner = "did:plc:krxbvxvis5skq7jj6eot23ul"; 266 + hostname = "spindle.dunkirk.sh"; 267 + listenAddr = "127.0.0.1:6555"; 268 + }; 218 269 }; 219 270 220 271 boot.loader.systemd-boot.enable = true;