Configuration for my NixOS based systems and Home Manager
0
fork

Configure Feed

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

Add tangled knot

+283 -32
+210 -1
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", ··· 152 168 "type": "github" 153 169 } 154 170 }, 171 + "flake-compat_4": { 172 + "flake": false, 173 + "locked": { 174 + "lastModified": 1751685974, 175 + "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", 176 + "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", 177 + "type": "tarball", 178 + "url": "https://git.lix.systems/api/v1/repos/lix-project/flake-compat/archive/549f2762aebeff29a2e5ece7a7dc0f955281a1d1.tar.gz?rev=549f2762aebeff29a2e5ece7a7dc0f955281a1d1" 179 + }, 180 + "original": { 181 + "type": "tarball", 182 + "url": "https://git.lix.systems/lix-project/flake-compat/archive/main.tar.gz" 183 + } 184 + }, 155 185 "flake-parts": { 156 186 "inputs": { 157 187 "nixpkgs-lib": [ ··· 173 203 "url": "https://flakehub.com/f/hercules-ci/flake-parts/0.1" 174 204 } 175 205 }, 206 + "flake-utils": { 207 + "inputs": { 208 + "systems": "systems_2" 209 + }, 210 + "locked": { 211 + "lastModified": 1694529238, 212 + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 213 + "owner": "numtide", 214 + "repo": "flake-utils", 215 + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 216 + "type": "github" 217 + }, 218 + "original": { 219 + "owner": "numtide", 220 + "repo": "flake-utils", 221 + "type": "github" 222 + } 223 + }, 176 224 "git-hooks-nix": { 177 225 "inputs": { 178 226 "flake-compat": "flake-compat", ··· 220 268 "type": "github" 221 269 } 222 270 }, 271 + "gomod2nix": { 272 + "inputs": { 273 + "flake-utils": "flake-utils", 274 + "nixpkgs": [ 275 + "tangled", 276 + "nixpkgs" 277 + ] 278 + }, 279 + "locked": { 280 + "lastModified": 1754078208, 281 + "narHash": "sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8=", 282 + "owner": "nix-community", 283 + "repo": "gomod2nix", 284 + "rev": "7f963246a71626c7fc70b431a315c4388a0c95cf", 285 + "type": "github" 286 + }, 287 + "original": { 288 + "owner": "nix-community", 289 + "repo": "gomod2nix", 290 + "type": "github" 291 + } 292 + }, 223 293 "home-manager": { 224 294 "inputs": { 225 295 "nixpkgs": [ ··· 262 332 "type": "github" 263 333 } 264 334 }, 335 + "htmx-src": { 336 + "flake": false, 337 + "locked": { 338 + "narHash": "sha256-nm6avZuEBg67SSyyZUhjpXVNstHHgUxrtBHqJgowU08=", 339 + "type": "file", 340 + "url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js" 341 + }, 342 + "original": { 343 + "type": "file", 344 + "url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js" 345 + } 346 + }, 347 + "htmx-ws-src": { 348 + "flake": false, 349 + "locked": { 350 + "narHash": "sha256-2fg6KyEJoO24q0fQqbz9RMaYNPQrMwpZh29tkSqdqGY=", 351 + "type": "file", 352 + "url": "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.2" 353 + }, 354 + "original": { 355 + "type": "file", 356 + "url": "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.2" 357 + } 358 + }, 359 + "ibm-plex-mono-src": { 360 + "flake": false, 361 + "locked": { 362 + "lastModified": 1731402384, 363 + "narHash": "sha256-OwUmrPfEehLDz0fl2ChYLK8FQM2p0G1+EMrGsYEq+6g=", 364 + "type": "tarball", 365 + "url": "https://github.com/IBM/plex/releases/download/@ibm%2Fplex-mono@1.1.0/ibm-plex-mono.zip" 366 + }, 367 + "original": { 368 + "type": "tarball", 369 + "url": "https://github.com/IBM/plex/releases/download/@ibm%2Fplex-mono@1.1.0/ibm-plex-mono.zip" 370 + } 371 + }, 372 + "indigo": { 373 + "flake": false, 374 + "locked": { 375 + "lastModified": 1753693716, 376 + "narHash": "sha256-DMIKnCJRODQXEHUxA+7mLzRALmnZhkkbHlFT2rCQYrE=", 377 + "owner": "oppiliappan", 378 + "repo": "indigo", 379 + "rev": "5f170569da9360f57add450a278d73538092d8ca", 380 + "type": "github" 381 + }, 382 + "original": { 383 + "owner": "oppiliappan", 384 + "repo": "indigo", 385 + "type": "github" 386 + } 387 + }, 388 + "inter-fonts-src": { 389 + "flake": false, 390 + "locked": { 391 + "lastModified": 1731687360, 392 + "narHash": "sha256-5vdKKvHAeZi6igrfpbOdhZlDX2/5+UvzlnCQV6DdqoQ=", 393 + "type": "tarball", 394 + "url": "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" 395 + }, 396 + "original": { 397 + "type": "tarball", 398 + "url": "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" 399 + } 400 + }, 401 + "lucide-src": { 402 + "flake": false, 403 + "locked": { 404 + "lastModified": 1754044466, 405 + "narHash": "sha256-+exBR2OToB1iv7ZQI2S4B0lXA/QRvC9n6U99UxGpJGs=", 406 + "type": "tarball", 407 + "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" 408 + }, 409 + "original": { 410 + "type": "tarball", 411 + "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" 412 + } 413 + }, 265 414 "nix": { 266 415 "inputs": { 267 416 "flake-parts": "flake-parts", ··· 413 562 "nixos-wsl": "nixos-wsl", 414 563 "nixpkgs": "nixpkgs_2", 415 564 "nixpkgs-unstable": "nixpkgs-unstable", 416 - "pre-commit-hooks": "pre-commit-hooks" 565 + "pre-commit-hooks": "pre-commit-hooks", 566 + "tangled": "tangled" 567 + } 568 + }, 569 + "sqlite-lib-src": { 570 + "flake": false, 571 + "locked": { 572 + "lastModified": 1706631843, 573 + "narHash": "sha256-bJoMjirsBjm2Qk9KPiy3yV3+8b/POlYe76/FQbciHro=", 574 + "type": "tarball", 575 + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" 576 + }, 577 + "original": { 578 + "type": "tarball", 579 + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" 417 580 } 418 581 }, 419 582 "systems": { ··· 429 592 "owner": "nix-systems", 430 593 "repo": "default", 431 594 "type": "github" 595 + } 596 + }, 597 + "systems_2": { 598 + "locked": { 599 + "lastModified": 1681028828, 600 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 601 + "owner": "nix-systems", 602 + "repo": "default", 603 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 604 + "type": "github" 605 + }, 606 + "original": { 607 + "owner": "nix-systems", 608 + "repo": "default", 609 + "type": "github" 610 + } 611 + }, 612 + "tangled": { 613 + "inputs": { 614 + "actor-typeahead-src": "actor-typeahead-src", 615 + "flake-compat": "flake-compat_4", 616 + "gomod2nix": "gomod2nix", 617 + "htmx-src": "htmx-src", 618 + "htmx-ws-src": "htmx-ws-src", 619 + "ibm-plex-mono-src": "ibm-plex-mono-src", 620 + "indigo": "indigo", 621 + "inter-fonts-src": "inter-fonts-src", 622 + "lucide-src": "lucide-src", 623 + "nixpkgs": [ 624 + "nixpkgs" 625 + ], 626 + "sqlite-lib-src": "sqlite-lib-src" 627 + }, 628 + "locked": { 629 + "lastModified": 1763627666, 630 + "narHash": "sha256-t8UQ85/bPXrbFs3V/paFtQvv4lSrr2lszrdcgspuAaA=", 631 + "ref": "refs/tags/v1.11.0-alpha", 632 + "rev": "12ef7f8f63ee4a14a552ebed603802c79e4d72f8", 633 + "revCount": 1678, 634 + "type": "git", 635 + "url": "https://tangled.org/@tangled.org/core" 636 + }, 637 + "original": { 638 + "ref": "refs/tags/v1.11.0-alpha", 639 + "type": "git", 640 + "url": "https://tangled.org/@tangled.org/core" 432 641 } 433 642 } 434 643 },
+5
flake.nix
··· 25 25 url = "github:ryantm/agenix"; 26 26 inputs.nixpkgs.follows = "nixpkgs"; 27 27 }; 28 + tangled = { 29 + url = "git+https://tangled.org/@tangled.org/core?ref=refs/tags/v1.11.0-alpha"; 30 + inputs.nixpkgs.follows = "nixpkgs"; 31 + }; 28 32 }; 29 33 30 34 outputs = ··· 37 41 home-manager, 38 42 pre-commit-hooks, 39 43 agenix, 44 + tangled, 40 45 ... 41 46 }@inputs: 42 47 let
+1 -1
host-specific/misaki/configuration.nix
··· 1 - { ... }: 1 + { inputs, ... }: 2 2 { 3 3 imports = [ 4 4 ./boot.nix
+67 -30
host-specific/misaki/services.nix
··· 2 2 config, 3 3 pkgs, 4 4 unstable, 5 + inputs, 5 6 ... 6 7 }: 7 8 { 9 + 10 + imports = [ 11 + inputs.tangled.nixosModules.knot 12 + inputs.tangled.nixosModules.spindle 13 + ]; 8 14 9 15 services.zfs = { 10 16 autoScrub.enable = true; ··· 261 267 settings = builtins.fromJSON (builtins.readFile /home/noah/.step/config/ca.json); 262 268 }; 263 269 270 + services.tangled.knot = { 271 + enable = true; 272 + server = { 273 + hostname = "knot.packetlost.dev"; 274 + owner = "did:plc:hjp23blu4y7bgf7zrzhzdemi"; 275 + }; 276 + }; 277 + 264 278 age.secrets.acme = { 265 279 file = ../../secrets/porkbun-api-key.age; 266 280 owner = "root"; ··· 270 284 security.acme = { 271 285 acceptTerms = true; 272 286 defaults.email = "noah@packetlost.dev"; 273 - certs."plex.packetlost.dev" = { 274 - group = "httpd"; 275 - dnsProvider = "porkbun"; 276 - environmentFile = config.age.secrets.acme.path; 277 - }; 278 - certs."img.ngp.computer" = { 279 - group = "httpd"; 280 - dnsProvider = "porkbun"; 281 - environmentFile = config.age.secrets.acme.path; 282 - }; 283 - certs."files.ngp.computer" = { 284 - group = "httpd"; 285 - dnsProvider = "porkbun"; 286 - environmentFile = config.age.secrets.acme.path; 287 - }; 288 - certs."cache.ngp.computer" = { 289 - group = "httpd"; 290 - dnsProvider = "porkbun"; 291 - environmentFile = config.age.secrets.acme.path; 292 - }; 293 - certs."photos.ngp.computer" = { 294 - group = "httpd"; 295 - dnsProvider = "porkbun"; 296 - environmentFile = config.age.secrets.acme.path; 297 - }; 298 - certs."jellyfin.packetlost.dev" = { 299 - group = "httpd"; 300 - dnsProvider = "porkbun"; 301 - environmentFile = config.age.secrets.acme.path; 302 - }; 287 + certs = 288 + pkgs.lib.genAttrs 289 + [ 290 + "plex.packetlost.dev" 291 + "img.ngp.computer" 292 + "knot.packetlost.dev" 293 + "files.ngp.computer" 294 + "cache.ngp.computer" 295 + "photos.ngp.computer" 296 + "jellyfin.packetlost.dev" 297 + ] 298 + (_: { 299 + group = "httpd"; 300 + dnsProvider = "porkbun"; 301 + environmentFile = config.age.secrets.acme.path; 302 + }); 303 + #certs."plex.packetlost.dev" = { 304 + # group = "httpd"; 305 + # dnsProvider = "porkbun"; 306 + # environmentFile = config.age.secrets.acme.path; 307 + #}; 308 + #certs."img.ngp.computer" = { 309 + # group = "httpd"; 310 + # dnsProvider = "porkbun"; 311 + # environmentFile = config.age.secrets.acme.path; 312 + #}; 313 + #certs."files.ngp.computer" = { 314 + # group = "httpd"; 315 + # dnsProvider = "porkbun"; 316 + # environmentFile = config.age.secrets.acme.path; 317 + #}; 318 + #certs."cache.ngp.computer" = { 319 + # group = "httpd"; 320 + # dnsProvider = "porkbun"; 321 + # environmentFile = config.age.secrets.acme.path; 322 + #}; 323 + #certs."photos.ngp.computer" = { 324 + # group = "httpd"; 325 + # dnsProvider = "porkbun"; 326 + # environmentFile = config.age.secrets.acme.path; 327 + #}; 328 + #certs."jellyfin.packetlost.dev" = { 329 + # group = "httpd"; 330 + # dnsProvider = "porkbun"; 331 + # environmentFile = config.age.secrets.acme.path; 332 + #}; 303 333 }; 304 334 305 335 # A test email server that only works on LAN ··· 498 528 http2 = true; 499 529 locations."/".proxyPass = 500 530 "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}"; 531 + }; 532 + virtualHosts."knot.packetlost.dev" = { 533 + forceSSL = true; 534 + enableACME = true; 535 + acmeRoot = null; 536 + http2 = true; 537 + locations."/".proxyPass = "http://${config.services.tangled.knot.server.listenAddr}"; 501 538 }; 502 539 503 540 # give a name to the virtual host. It also becomes the server name.