Dendritic Nix - Community-driven Nix distribution based on the Dendritic pattern.
5
fork

Configure Feed

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

documentation site

+441 -4056
+5 -3547
README.md
··· 1 - <!-- NOTICE: edit this file at dev/readme_template.md and then run the `files` devshell command. --> 1 + > Documentation has moved to our site: https://vic.github.io/dendrix 2 2 3 3 # Dendrix - community-driven distribution of Dendritic Nix configurations. 4 4 5 - Editor-distributions like those for nvim/emacs provide community-driven, 6 - opinionated configurations that can be easily reused and enabled by newcomers. 7 - 8 - The `dendrix` project aims to provide the same experience: having community-managed, high-quality and no-barrier-of-entry setups for everything that can be configured using [flake-parts modules](https://flake.parts/options/flake-parts-modules.html). 9 - 10 - Read more on [Motivation](#motivation) and [How it works](#how-it-works). 11 - 12 - ## Available dendritic repos. 13 - 14 - The following is a list of known dendritic repositories from the nix community. 15 - If you want to add/remove one of them, send a pull-request that edits `dev/npins/sources.json`. 16 - Also if you want to provide custom trees, send a pull-request editing `dev/modules/community/your_repo.nix`. 17 - 18 - <details> 19 - <summary> 20 - 21 - Dendrix knows of <b>8</b> [dendritic repositories](https://github.com/vic/dendrix/blob/main/dev/npins/sources.json). 22 - 203 [import-trees](https://github.com/vic/dendrix/tree/main/dev/modules/community). 23 - 9 flags. 24 - 162 aspects accross 9 different nix configuration classes. 25 - 612 nix configuration files. 26 - 27 - </summary> 28 - 29 - ### [Maka-77x-nixconf7](https://github.com/Maka-77x/nixconf7/tree/e3fd4cacd66d708911109b3a0f43f7b65d8be7bd 30 - 31 - <details> 32 - <summary> 33 - 34 - Maka-77x-nixconf7 at rev e3fd4ca. 35 - 22 dendritic trees. 36 - <b>22</b> aspects across 2 nix classes. 37 - 97 nix configuration files. 38 - 39 - </summary> 40 - 41 - [README](https://github.com/Maka-77x/nixconf7/tree/e3fd4cacd66d708911109b3a0f43f7b65d8be7bd/README.md) 42 - 43 - <details> 44 - <summary> 45 - 46 - ##### Maka-77x-nixconf7 defines <b>22</b> aspects across 2 nix classes. 47 - 48 - </summary> 49 - 50 - - <code>ai</code>: <code>nixos</code> 51 - 52 - - <code>base</code>: <code>homeManager</code>/<code>nixos</code> 53 - 54 - - <code>bluetooth</code>: <code>nixos</code> 55 - 56 - - <code>desktop</code>: <code>homeManager</code>/<code>nixos</code> 57 - 58 - - <code>dev</code>: <code>homeManager</code>/<code>nixos</code> 59 - 60 - - <code>displaylink</code>: <code>nixos</code> 61 - 62 - - <code>email</code>: <code>homeManager</code> 63 - 64 - - <code>facter</code>: <code>homeManager</code>/<code>nixos</code> 65 - 66 - - <code>fwupd</code>: <code>nixos</code> 67 - 68 - - <code>games</code>: <code>homeManager</code> 69 - 70 - - <code>guacamole</code>: <code>nixos</code> 71 - 72 - - <code>hosts/gouda</code>: <code>nixos</code> 73 - 74 - - <code>hosts/nixos</code>: <code>nixos</code> 75 - 76 - - <code>messaging</code>: <code>homeManager</code> 77 - 78 - - <code>mimi</code>: <code>nixos</code> 79 - 80 - - <code>openssh</code>: <code>nixos</code> 81 - 82 - - <code>root</code>: <code>nixos</code> 83 - 84 - - <code>shell</code>: <code>homeManager</code>/<code>nixos</code> 85 - 86 - - <code>sound</code>: <code>nixos</code> 87 - 88 - - <code>virtualisation</code>: <code>nixos</code> 89 - 90 - - <code>vpn</code>: <code>homeManager</code>/<code>nixos</code> 91 - 92 - - <code>work</code>: <code>homeManager</code> 93 - 94 - </details> 95 - 96 - No community notes on Maka-77x-nixconf7. Use the source, Luke. 97 - 98 - - ai: 99 - 100 - Maka-77x-nixconf7's ai tree 101 - 102 - ```nix 103 - # usage on your layers.nix 104 - {inputs, ...}: { 105 - imports = [ 106 - inputs.dendrix.community.Maka-77x-nixconf7.ai 107 - ]; 108 - } 109 - ``` 110 - 111 - - base: 112 - 113 - Maka-77x-nixconf7's base tree 114 - 115 - ```nix 116 - # usage on your layers.nix 117 - {inputs, ...}: { 118 - imports = [ 119 - inputs.dendrix.community.Maka-77x-nixconf7.base 120 - ]; 121 - } 122 - ``` 123 - 124 - - bluetooth: 125 - 126 - Maka-77x-nixconf7's bluetooth tree 127 - 128 - ```nix 129 - # usage on your layers.nix 130 - {inputs, ...}: { 131 - imports = [ 132 - inputs.dendrix.community.Maka-77x-nixconf7.bluetooth 133 - ]; 134 - } 135 - ``` 136 - 137 - - desktop: 138 - 139 - Maka-77x-nixconf7's desktop tree 140 - 141 - ```nix 142 - # usage on your layers.nix 143 - {inputs, ...}: { 144 - imports = [ 145 - inputs.dendrix.community.Maka-77x-nixconf7.desktop 146 - ]; 147 - } 148 - ``` 149 - 150 - - dev: 151 - 152 - Maka-77x-nixconf7's dev tree 153 - 154 - ```nix 155 - # usage on your layers.nix 156 - {inputs, ...}: { 157 - imports = [ 158 - inputs.dendrix.community.Maka-77x-nixconf7.dev 159 - ]; 160 - } 161 - ``` 162 - 163 - - displaylink: 164 - 165 - Maka-77x-nixconf7's displaylink tree 166 - 167 - ```nix 168 - # usage on your layers.nix 169 - {inputs, ...}: { 170 - imports = [ 171 - inputs.dendrix.community.Maka-77x-nixconf7.displaylink 172 - ]; 173 - } 174 - ``` 175 - 176 - - email: 177 - 178 - Maka-77x-nixconf7's email tree 179 - 180 - ```nix 181 - # usage on your layers.nix 182 - {inputs, ...}: { 183 - imports = [ 184 - inputs.dendrix.community.Maka-77x-nixconf7.email 185 - ]; 186 - } 187 - ``` 188 - 189 - - facter: 190 - 191 - Maka-77x-nixconf7's facter tree 192 - 193 - ```nix 194 - # usage on your layers.nix 195 - {inputs, ...}: { 196 - imports = [ 197 - inputs.dendrix.community.Maka-77x-nixconf7.facter 198 - ]; 199 - } 200 - ``` 201 - 202 - - fwupd: 203 - 204 - Maka-77x-nixconf7's fwupd tree 205 - 206 - ```nix 207 - # usage on your layers.nix 208 - {inputs, ...}: { 209 - imports = [ 210 - inputs.dendrix.community.Maka-77x-nixconf7.fwupd 211 - ]; 212 - } 213 - ``` 214 - 215 - - games: 216 - 217 - Maka-77x-nixconf7's games tree 218 - 219 - ```nix 220 - # usage on your layers.nix 221 - {inputs, ...}: { 222 - imports = [ 223 - inputs.dendrix.community.Maka-77x-nixconf7.games 224 - ]; 225 - } 226 - ``` 227 - 228 - - guacamole: 229 - 230 - Maka-77x-nixconf7's guacamole tree 231 - 232 - ```nix 233 - # usage on your layers.nix 234 - {inputs, ...}: { 235 - imports = [ 236 - inputs.dendrix.community.Maka-77x-nixconf7.guacamole 237 - ]; 238 - } 239 - ``` 240 - 241 - - hosts/gouda: 242 - 243 - Maka-77x-nixconf7's hosts/gouda tree 244 - 245 - ```nix 246 - # usage on your layers.nix 247 - {inputs, ...}: { 248 - imports = [ 249 - inputs.dendrix.community.Maka-77x-nixconf7.hosts/gouda 250 - ]; 251 - } 252 - ``` 253 - 254 - - hosts/nixos: 255 - 256 - Maka-77x-nixconf7's hosts/nixos tree 257 - 258 - ```nix 259 - # usage on your layers.nix 260 - {inputs, ...}: { 261 - imports = [ 262 - inputs.dendrix.community.Maka-77x-nixconf7.hosts/nixos 263 - ]; 264 - } 265 - ``` 266 - 267 - - messaging: 268 - 269 - Maka-77x-nixconf7's messaging tree 270 - 271 - ```nix 272 - # usage on your layers.nix 273 - {inputs, ...}: { 274 - imports = [ 275 - inputs.dendrix.community.Maka-77x-nixconf7.messaging 276 - ]; 277 - } 278 - ``` 279 - 280 - - mimi: 281 - 282 - Maka-77x-nixconf7's mimi tree 283 - 284 - ```nix 285 - # usage on your layers.nix 286 - {inputs, ...}: { 287 - imports = [ 288 - inputs.dendrix.community.Maka-77x-nixconf7.mimi 289 - ]; 290 - } 291 - ``` 292 - 293 - - openssh: 294 - 295 - Maka-77x-nixconf7's openssh tree 296 - 297 - ```nix 298 - # usage on your layers.nix 299 - {inputs, ...}: { 300 - imports = [ 301 - inputs.dendrix.community.Maka-77x-nixconf7.openssh 302 - ]; 303 - } 304 - ``` 305 - 306 - - root: 307 - 308 - Maka-77x-nixconf7's root tree 309 - 310 - ```nix 311 - # usage on your layers.nix 312 - {inputs, ...}: { 313 - imports = [ 314 - inputs.dendrix.community.Maka-77x-nixconf7.root 315 - ]; 316 - } 317 - ``` 318 - 319 - - shell: 320 - 321 - Maka-77x-nixconf7's shell tree 322 - 323 - ```nix 324 - # usage on your layers.nix 325 - {inputs, ...}: { 326 - imports = [ 327 - inputs.dendrix.community.Maka-77x-nixconf7.shell 328 - ]; 329 - } 330 - ``` 331 - 332 - - sound: 333 - 334 - Maka-77x-nixconf7's sound tree 335 - 336 - ```nix 337 - # usage on your layers.nix 338 - {inputs, ...}: { 339 - imports = [ 340 - inputs.dendrix.community.Maka-77x-nixconf7.sound 341 - ]; 342 - } 343 - ``` 344 - 345 - - virtualisation: 346 - 347 - Maka-77x-nixconf7's virtualisation tree 348 - 349 - ```nix 350 - # usage on your layers.nix 351 - {inputs, ...}: { 352 - imports = [ 353 - inputs.dendrix.community.Maka-77x-nixconf7.virtualisation 354 - ]; 355 - } 356 - ``` 357 - 358 - - vpn: 359 - 360 - Maka-77x-nixconf7's vpn tree 361 - 362 - ```nix 363 - # usage on your layers.nix 364 - {inputs, ...}: { 365 - imports = [ 366 - inputs.dendrix.community.Maka-77x-nixconf7.vpn 367 - ]; 368 - } 369 - ``` 370 - 371 - - work: 372 - 373 - Maka-77x-nixconf7's work tree 374 - 375 - ```nix 376 - # usage on your layers.nix 377 - {inputs, ...}: { 378 - imports = [ 379 - inputs.dendrix.community.Maka-77x-nixconf7.work 380 - ]; 381 - } 382 - ``` 383 - 384 - </details> 385 - 386 - ### [dliberalesso-nix-config](https://github.com/dliberalesso/nix-config/tree/c2906862413dccd1745ce26e0172cac4381c34bd 387 - 388 - <details> 389 - <summary> 390 - 391 - dliberalesso-nix-config at rev c290686. 392 - 8 dendritic trees. 393 - <b>8</b> aspects across 2 nix classes. 394 - 85 nix configuration files. 395 - 396 - </summary> 397 - 398 - [README](https://github.com/dliberalesso/nix-config/tree/c2906862413dccd1745ce26e0172cac4381c34bd/README.md) 399 - 400 - <details> 401 - <summary> 402 - 403 - ##### dliberalesso-nix-config defines <b>8</b> aspects across 2 nix classes. 404 - 405 - </summary> 406 - 407 - - <code>default</code>: <code>home</code>/<code>nixos</code> 408 - 409 - - <code>facter</code>: <code>home</code>/<code>nixos</code> 410 - 411 - - <code>gui</code>: <code>home</code>/<code>nixos</code> 412 - 413 - - <code>hyprde</code>: <code>home</code>/<code>nixos</code> 414 - 415 - - <code>irpf</code>: <code>home</code>/<code>nixos</code> 416 - 417 - - <code>laptop</code>: <code>home</code>/<code>nixos</code> 418 - 419 - - <code>work</code>: <code>home</code>/<code>nixos</code> 420 - 421 - - <code>wsl</code>: <code>home</code>/<code>nixos</code> 422 - 423 - </details> 424 - 425 - No community notes on dliberalesso-nix-config. Use the source, Luke. 426 - 427 - - default: 428 - 429 - dliberalesso-nix-config's default tree 430 - 431 - ```nix 432 - # usage on your layers.nix 433 - {inputs, ...}: { 434 - imports = [ 435 - inputs.dendrix.community.dliberalesso-nix-config.default 436 - ]; 437 - } 438 - ``` 439 - 440 - - facter: 441 - 442 - dliberalesso-nix-config's facter tree 443 - 444 - ```nix 445 - # usage on your layers.nix 446 - {inputs, ...}: { 447 - imports = [ 448 - inputs.dendrix.community.dliberalesso-nix-config.facter 449 - ]; 450 - } 451 - ``` 452 - 453 - - gui: 454 - 455 - dliberalesso-nix-config's gui tree 456 - 457 - ```nix 458 - # usage on your layers.nix 459 - {inputs, ...}: { 460 - imports = [ 461 - inputs.dendrix.community.dliberalesso-nix-config.gui 462 - ]; 463 - } 464 - ``` 465 - 466 - - hyprde: 467 - 468 - dliberalesso-nix-config's hyprde tree 469 - 470 - ```nix 471 - # usage on your layers.nix 472 - {inputs, ...}: { 473 - imports = [ 474 - inputs.dendrix.community.dliberalesso-nix-config.hyprde 475 - ]; 476 - } 477 - ``` 478 - 479 - - irpf: 480 - 481 - dliberalesso-nix-config's irpf tree 482 - 483 - ```nix 484 - # usage on your layers.nix 485 - {inputs, ...}: { 486 - imports = [ 487 - inputs.dendrix.community.dliberalesso-nix-config.irpf 488 - ]; 489 - } 490 - ``` 491 - 492 - - laptop: 493 - 494 - dliberalesso-nix-config's laptop tree 495 - 496 - ```nix 497 - # usage on your layers.nix 498 - {inputs, ...}: { 499 - imports = [ 500 - inputs.dendrix.community.dliberalesso-nix-config.laptop 501 - ]; 502 - } 503 - ``` 504 - 505 - - work: 506 - 507 - dliberalesso-nix-config's work tree 508 - 509 - ```nix 510 - # usage on your layers.nix 511 - {inputs, ...}: { 512 - imports = [ 513 - inputs.dendrix.community.dliberalesso-nix-config.work 514 - ]; 515 - } 516 - ``` 517 - 518 - - wsl: 519 - 520 - dliberalesso-nix-config's wsl tree 521 - 522 - ```nix 523 - # usage on your layers.nix 524 - {inputs, ...}: { 525 - imports = [ 526 - inputs.dendrix.community.dliberalesso-nix-config.wsl 527 - ]; 528 - } 529 - ``` 530 - 531 - </details> 532 - 533 - ### [drupol-infra](https://github.com/drupol/infra/tree/a10da3a0e88d17566918fa8db69fa0faa9e1d0c8 534 - 535 - <details> 536 - <summary> 537 - 538 - drupol-infra at rev a10da3a. 539 - 24 dendritic trees. 540 - <b>24</b> aspects across 2 nix classes. 541 - 107 nix configuration files. 542 - 543 - </summary> 544 - 545 - [README](https://github.com/drupol/infra/tree/a10da3a0e88d17566918fa8db69fa0faa9e1d0c8/README.md) 546 - 547 - <details> 548 - <summary> 549 - 550 - ##### drupol-infra defines <b>24</b> aspects across 2 nix classes. 551 - 552 - </summary> 553 - 554 - - <code>ai</code>: <code>nixos</code> 555 - 556 - - <code>base</code>: <code>homeManager</code>/<code>nixos</code> 557 - 558 - - <code>bluetooth</code>: <code>nixos</code> 559 - 560 - - <code>desktop</code>: <code>homeManager</code>/<code>nixos</code> 561 - 562 - - <code>dev</code>: <code>homeManager</code>/<code>nixos</code> 563 - 564 - - <code>displaylink</code>: <code>nixos</code> 565 - 566 - - <code>email</code>: <code>homeManager</code> 567 - 568 - - <code>facter</code>: <code>homeManager</code>/<code>nixos</code> 569 - 570 - - <code>fwupd</code>: <code>nixos</code> 571 - 572 - - <code>games</code>: <code>homeManager</code> 573 - 574 - - <code>guacamole</code>: <code>nixos</code> 575 - 576 - - <code>hosts/nixos</code>: <code>nixos</code> 577 - 578 - - <code>hosts/x13</code>: <code>nixos</code> 579 - 580 - - <code>hosts/x260</code>: <code>nixos</code> 581 - 582 - - <code>hosts/x280</code>: <code>nixos</code> 583 - 584 - - <code>hosts/xeonixos</code>: <code>nixos</code> 585 - 586 - - <code>messaging</code>: <code>homeManager</code> 587 - 588 - - <code>openssh</code>: <code>nixos</code> 589 - 590 - - <code>pol</code>: <code>nixos</code> 591 - 592 - - <code>root</code>: <code>nixos</code> 593 - 594 - - <code>shell</code>: <code>homeManager</code>/<code>nixos</code> 595 - 596 - - <code>sound</code>: <code>nixos</code> 597 - 598 - - <code>vpn</code>: <code>homeManager</code>/<code>nixos</code> 599 - 600 - - <code>work</code>: <code>homeManager</code> 601 - 602 - </details> 603 - 604 - No community notes on drupol-infra. Use the source, Luke. 605 - 606 - - ai: 607 - 608 - drupol-infra's ai tree 609 - 610 - ```nix 611 - # usage on your layers.nix 612 - {inputs, ...}: { 613 - imports = [ 614 - inputs.dendrix.community.drupol-infra.ai 615 - ]; 616 - } 617 - ``` 618 - 619 - - base: 620 - 621 - drupol-infra's base tree 622 - 623 - ```nix 624 - # usage on your layers.nix 625 - {inputs, ...}: { 626 - imports = [ 627 - inputs.dendrix.community.drupol-infra.base 628 - ]; 629 - } 630 - ``` 631 - 632 - - bluetooth: 633 - 634 - drupol-infra's bluetooth tree 635 - 636 - ```nix 637 - # usage on your layers.nix 638 - {inputs, ...}: { 639 - imports = [ 640 - inputs.dendrix.community.drupol-infra.bluetooth 641 - ]; 642 - } 643 - ``` 644 - 645 - - desktop: 646 - 647 - drupol-infra's desktop tree 648 - 649 - ```nix 650 - # usage on your layers.nix 651 - {inputs, ...}: { 652 - imports = [ 653 - inputs.dendrix.community.drupol-infra.desktop 654 - ]; 655 - } 656 - ``` 657 - 658 - - dev: 659 - 660 - drupol-infra's dev tree 661 - 662 - ```nix 663 - # usage on your layers.nix 664 - {inputs, ...}: { 665 - imports = [ 666 - inputs.dendrix.community.drupol-infra.dev 667 - ]; 668 - } 669 - ``` 670 - 671 - - displaylink: 672 - 673 - drupol-infra's displaylink tree 674 - 675 - ```nix 676 - # usage on your layers.nix 677 - {inputs, ...}: { 678 - imports = [ 679 - inputs.dendrix.community.drupol-infra.displaylink 680 - ]; 681 - } 682 - ``` 683 - 684 - - email: 685 - 686 - drupol-infra's email tree 687 - 688 - ```nix 689 - # usage on your layers.nix 690 - {inputs, ...}: { 691 - imports = [ 692 - inputs.dendrix.community.drupol-infra.email 693 - ]; 694 - } 695 - ``` 696 - 697 - - facter: 698 - 699 - drupol-infra's facter tree 700 - 701 - ```nix 702 - # usage on your layers.nix 703 - {inputs, ...}: { 704 - imports = [ 705 - inputs.dendrix.community.drupol-infra.facter 706 - ]; 707 - } 708 - ``` 709 - 710 - - fwupd: 711 - 712 - drupol-infra's fwupd tree 713 - 714 - ```nix 715 - # usage on your layers.nix 716 - {inputs, ...}: { 717 - imports = [ 718 - inputs.dendrix.community.drupol-infra.fwupd 719 - ]; 720 - } 721 - ``` 722 - 723 - - games: 724 - 725 - drupol-infra's games tree 726 - 727 - ```nix 728 - # usage on your layers.nix 729 - {inputs, ...}: { 730 - imports = [ 731 - inputs.dendrix.community.drupol-infra.games 732 - ]; 733 - } 734 - ``` 735 - 736 - - guacamole: 737 - 738 - drupol-infra's guacamole tree 739 - 740 - ```nix 741 - # usage on your layers.nix 742 - {inputs, ...}: { 743 - imports = [ 744 - inputs.dendrix.community.drupol-infra.guacamole 745 - ]; 746 - } 747 - ``` 748 - 749 - - hosts/nixos: 750 - 751 - drupol-infra's hosts/nixos tree 752 - 753 - ```nix 754 - # usage on your layers.nix 755 - {inputs, ...}: { 756 - imports = [ 757 - inputs.dendrix.community.drupol-infra.hosts/nixos 758 - ]; 759 - } 760 - ``` 761 - 762 - - hosts/x13: 763 - 764 - drupol-infra's hosts/x13 tree 765 - 766 - ```nix 767 - # usage on your layers.nix 768 - {inputs, ...}: { 769 - imports = [ 770 - inputs.dendrix.community.drupol-infra.hosts/x13 771 - ]; 772 - } 773 - ``` 774 - 775 - - hosts/x260: 776 - 777 - drupol-infra's hosts/x260 tree 778 - 779 - ```nix 780 - # usage on your layers.nix 781 - {inputs, ...}: { 782 - imports = [ 783 - inputs.dendrix.community.drupol-infra.hosts/x260 784 - ]; 785 - } 786 - ``` 787 - 788 - - hosts/x280: 789 - 790 - drupol-infra's hosts/x280 tree 791 - 792 - ```nix 793 - # usage on your layers.nix 794 - {inputs, ...}: { 795 - imports = [ 796 - inputs.dendrix.community.drupol-infra.hosts/x280 797 - ]; 798 - } 799 - ``` 800 - 801 - - hosts/xeonixos: 802 - 803 - drupol-infra's hosts/xeonixos tree 804 - 805 - ```nix 806 - # usage on your layers.nix 807 - {inputs, ...}: { 808 - imports = [ 809 - inputs.dendrix.community.drupol-infra.hosts/xeonixos 810 - ]; 811 - } 812 - ``` 813 - 814 - - messaging: 815 - 816 - drupol-infra's messaging tree 817 - 818 - ```nix 819 - # usage on your layers.nix 820 - {inputs, ...}: { 821 - imports = [ 822 - inputs.dendrix.community.drupol-infra.messaging 823 - ]; 824 - } 825 - ``` 826 - 827 - - openssh: 828 - 829 - drupol-infra's openssh tree 830 - 831 - ```nix 832 - # usage on your layers.nix 833 - {inputs, ...}: { 834 - imports = [ 835 - inputs.dendrix.community.drupol-infra.openssh 836 - ]; 837 - } 838 - ``` 839 - 840 - - pol: 841 - 842 - drupol-infra's pol tree 843 - 844 - ```nix 845 - # usage on your layers.nix 846 - {inputs, ...}: { 847 - imports = [ 848 - inputs.dendrix.community.drupol-infra.pol 849 - ]; 850 - } 851 - ``` 852 - 853 - - root: 854 - 855 - drupol-infra's root tree 856 - 857 - ```nix 858 - # usage on your layers.nix 859 - {inputs, ...}: { 860 - imports = [ 861 - inputs.dendrix.community.drupol-infra.root 862 - ]; 863 - } 864 - ``` 865 - 866 - - shell: 867 - 868 - drupol-infra's shell tree 869 - 870 - ```nix 871 - # usage on your layers.nix 872 - {inputs, ...}: { 873 - imports = [ 874 - inputs.dendrix.community.drupol-infra.shell 875 - ]; 876 - } 877 - ``` 878 - 879 - - sound: 880 - 881 - drupol-infra's sound tree 882 - 883 - ```nix 884 - # usage on your layers.nix 885 - {inputs, ...}: { 886 - imports = [ 887 - inputs.dendrix.community.drupol-infra.sound 888 - ]; 889 - } 890 - ``` 891 - 892 - - vpn: 893 - 894 - drupol-infra's vpn tree 895 - 896 - ```nix 897 - # usage on your layers.nix 898 - {inputs, ...}: { 899 - imports = [ 900 - inputs.dendrix.community.drupol-infra.vpn 901 - ]; 902 - } 903 - ``` 904 - 905 - - work: 906 - 907 - drupol-infra's work tree 908 - 909 - ```nix 910 - # usage on your layers.nix 911 - {inputs, ...}: { 912 - imports = [ 913 - inputs.dendrix.community.drupol-infra.work 914 - ]; 915 - } 916 - ``` 917 - 918 - </details> 919 - 920 - ### [gaetanlepage-nix-config](https://github.com/gaetanlepage/nix-config/tree/1d2b2faa7dc402b64e4fad02dd8ce85bce5c15cd 921 - 922 - <details> 923 - <summary> 924 - 925 - gaetanlepage-nix-config at rev 1d2b2fa. 926 - 55 dendritic trees. 927 - <b>55</b> aspects across 2 nix classes. 928 - 131 nix configuration files. 929 - 930 - </summary> 931 - 932 - [README](https://github.com/gaetanlepage/nix-config/tree/1d2b2faa7dc402b64e4fad02dd8ce85bce5c15cd/README.md) 933 - 934 - <details> 935 - <summary> 936 - 937 - ##### gaetanlepage-nix-config defines <b>55</b> aspects across 2 nix classes. 938 - 939 - </summary> 940 - 941 - - <code>agenix</code>: <code>nixos</code> 942 - 943 - - <code>android</code>: <code>nixos</code> 944 - 945 - - <code>bg-stream</code>: <code>homeManager</code> 946 - 947 - - <code>bluetooth</code>: <code>nixos</code> 948 - 949 - - <code>bootloader</code>: <code>nixos</code> 950 - 951 - - <code>caddy-reverse-proxies</code>: <code>nixos</code> 952 - 953 - - <code>cloud-backup</code>: <code>nixos</code> 954 - 955 - - <code>core</code>: <code>homeManager</code>/<code>nixos</code> 956 - 957 - - <code>csConfig</code>: <code>homeManager</code> 958 - 959 - - <code>desktop</code>: <code>homeManager</code>/<code>nixos</code> 960 - 961 - - <code>desktop-programs</code>: <code>homeManager</code> 962 - 963 - - <code>dev</code>: <code>nixos</code> 964 - 965 - - <code>display-manager</code>: <code>nixos</code> 966 - 967 - - <code>dunst</code>: <code>homeManager</code> 968 - 969 - - <code>email</code>: <code>homeManager</code> 970 - 971 - - <code>firefox</code>: <code>homeManager</code> 972 - 973 - - <code>flameshot</code>: <code>homeManager</code> 974 - 975 - - <code>foot</code>: <code>homeManager</code> 976 - 977 - - <code>gammastep</code>: <code>homeManager</code> 978 - 979 - - <code>gtk</code>: <code>homeManager</code> 980 - 981 - - <code>home-manager</code>: <code>homeManager</code>/<code>nixos</code> 982 - 983 - - <code>host_cuda</code>: <code>homeManager</code>/<code>nixos</code> 984 - 985 - - <code>host_feroe</code>: <code>nixos</code> 986 - 987 - - <code>host_framework</code>: <code>homeManager</code>/<code>nixos</code> 988 - 989 - - <code>host_inria</code>: <code>homeManager</code> 990 - 991 - - <code>host_jrs</code>: <code>homeManager</code> 992 - 993 - - <code>host_tank</code>: <code>nixos</code> 994 - 995 - - <code>host_vps</code>: <code>nixos</code> 996 - 997 - - <code>kanshi</code>: <code>homeManager</code> 998 - 999 - - <code>keyring</code>: <code>homeManager</code> 1000 - 1001 - - <code>nh</code>: <code>homeManager</code> 1002 - 1003 - - <code>nix</code>: <code>homeManager</code>/<code>nixos</code> 1004 - 1005 - - <code>nix-index-database</code>: <code>homeManager</code> 1006 - 1007 - - <code>nvidia</code>: <code>nixos</code> 1008 - 1009 - - <code>obs</code>: <code>nixos</code> 1010 - 1011 - - <code>printing</code>: <code>nixos</code> 1012 - 1013 - - <code>remote-builders</code>: <code>nixos</code> 1014 - 1015 - - <code>rofi</code>: <code>homeManager</code> 1016 - 1017 - - <code>security</code>: <code>nixos</code> 1018 - 1019 - - <code>server</code>: <code>nixos</code> 1020 - 1021 - - <code>sound</code>: <code>nixos</code> 1022 - 1023 - - <code>ssh-client</code>: <code>nixos</code> 1024 - 1025 - - <code>ssh-server</code>: <code>nixos</code> 1026 - 1027 - - <code>streaming</code>: <code>homeManager</code> 1028 - 1029 - - <code>substituters</code>: <code>homeManager</code>/<code>nixos</code> 1030 - 1031 - - <code>sway</code>: <code>homeManager</code> 1032 - 1033 - - <code>swaylock</code>: <code>homeManager</code> 1034 - 1035 - - <code>thunar</code>: <code>nixos</code> 1036 - 1037 - - <code>udiskie</code>: <code>homeManager</code> 1038 - 1039 - - <code>users</code>: <code>nixos</code> 1040 - 1041 - - <code>waybar</code>: <code>homeManager</code> 1042 - 1043 - - <code>wayland</code>: <code>homeManager</code> 1044 - 1045 - - <code>wireguard-client</code>: <code>nixos</code> 1046 - 1047 - - <code>xdg</code>: <code>homeManager</code> 1048 - 1049 - - <code>zathura</code>: <code>homeManager</code> 1050 - 1051 - </details> 1052 - 1053 - No community notes on gaetanlepage-nix-config. Use the source, Luke. 1054 - 1055 - - agenix: 1056 - 1057 - gaetanlepage-nix-config's agenix tree 1058 - 1059 - ```nix 1060 - # usage on your layers.nix 1061 - {inputs, ...}: { 1062 - imports = [ 1063 - inputs.dendrix.community.gaetanlepage-nix-config.agenix 1064 - ]; 1065 - } 1066 - ``` 1067 - 1068 - - android: 1069 - 1070 - gaetanlepage-nix-config's android tree 1071 - 1072 - ```nix 1073 - # usage on your layers.nix 1074 - {inputs, ...}: { 1075 - imports = [ 1076 - inputs.dendrix.community.gaetanlepage-nix-config.android 1077 - ]; 1078 - } 1079 - ``` 1080 - 1081 - - bg-stream: 1082 - 1083 - gaetanlepage-nix-config's bg-stream tree 1084 - 1085 - ```nix 1086 - # usage on your layers.nix 1087 - {inputs, ...}: { 1088 - imports = [ 1089 - inputs.dendrix.community.gaetanlepage-nix-config.bg-stream 1090 - ]; 1091 - } 1092 - ``` 1093 - 1094 - - bluetooth: 1095 - 1096 - gaetanlepage-nix-config's bluetooth tree 1097 - 1098 - ```nix 1099 - # usage on your layers.nix 1100 - {inputs, ...}: { 1101 - imports = [ 1102 - inputs.dendrix.community.gaetanlepage-nix-config.bluetooth 1103 - ]; 1104 - } 1105 - ``` 1106 - 1107 - - bootloader: 1108 - 1109 - gaetanlepage-nix-config's bootloader tree 1110 - 1111 - ```nix 1112 - # usage on your layers.nix 1113 - {inputs, ...}: { 1114 - imports = [ 1115 - inputs.dendrix.community.gaetanlepage-nix-config.bootloader 1116 - ]; 1117 - } 1118 - ``` 1119 - 1120 - - caddy-reverse-proxies: 1121 - 1122 - gaetanlepage-nix-config's caddy-reverse-proxies tree 1123 - 1124 - ```nix 1125 - # usage on your layers.nix 1126 - {inputs, ...}: { 1127 - imports = [ 1128 - inputs.dendrix.community.gaetanlepage-nix-config.caddy-reverse-proxies 1129 - ]; 1130 - } 1131 - ``` 1132 - 1133 - - cloud-backup: 1134 - 1135 - gaetanlepage-nix-config's cloud-backup tree 1136 - 1137 - ```nix 1138 - # usage on your layers.nix 1139 - {inputs, ...}: { 1140 - imports = [ 1141 - inputs.dendrix.community.gaetanlepage-nix-config.cloud-backup 1142 - ]; 1143 - } 1144 - ``` 1145 - 1146 - - core: 1147 - 1148 - gaetanlepage-nix-config's core tree 1149 - 1150 - ```nix 1151 - # usage on your layers.nix 1152 - {inputs, ...}: { 1153 - imports = [ 1154 - inputs.dendrix.community.gaetanlepage-nix-config.core 1155 - ]; 1156 - } 1157 - ``` 1158 - 1159 - - csConfig: 1160 - 1161 - gaetanlepage-nix-config's csConfig tree 1162 - 1163 - ```nix 1164 - # usage on your layers.nix 1165 - {inputs, ...}: { 1166 - imports = [ 1167 - inputs.dendrix.community.gaetanlepage-nix-config.csConfig 1168 - ]; 1169 - } 1170 - ``` 1171 - 1172 - - desktop: 1173 - 1174 - gaetanlepage-nix-config's desktop tree 1175 - 1176 - ```nix 1177 - # usage on your layers.nix 1178 - {inputs, ...}: { 1179 - imports = [ 1180 - inputs.dendrix.community.gaetanlepage-nix-config.desktop 1181 - ]; 1182 - } 1183 - ``` 1184 - 1185 - - desktop-programs: 1186 - 1187 - gaetanlepage-nix-config's desktop-programs tree 1188 - 1189 - ```nix 1190 - # usage on your layers.nix 1191 - {inputs, ...}: { 1192 - imports = [ 1193 - inputs.dendrix.community.gaetanlepage-nix-config.desktop-programs 1194 - ]; 1195 - } 1196 - ``` 1197 - 1198 - - dev: 1199 - 1200 - gaetanlepage-nix-config's dev tree 1201 - 1202 - ```nix 1203 - # usage on your layers.nix 1204 - {inputs, ...}: { 1205 - imports = [ 1206 - inputs.dendrix.community.gaetanlepage-nix-config.dev 1207 - ]; 1208 - } 1209 - ``` 1210 - 1211 - - display-manager: 1212 - 1213 - gaetanlepage-nix-config's display-manager tree 1214 - 1215 - ```nix 1216 - # usage on your layers.nix 1217 - {inputs, ...}: { 1218 - imports = [ 1219 - inputs.dendrix.community.gaetanlepage-nix-config.display-manager 1220 - ]; 1221 - } 1222 - ``` 1223 - 1224 - - dunst: 1225 - 1226 - gaetanlepage-nix-config's dunst tree 1227 - 1228 - ```nix 1229 - # usage on your layers.nix 1230 - {inputs, ...}: { 1231 - imports = [ 1232 - inputs.dendrix.community.gaetanlepage-nix-config.dunst 1233 - ]; 1234 - } 1235 - ``` 1236 - 1237 - - email: 1238 - 1239 - gaetanlepage-nix-config's email tree 1240 - 1241 - ```nix 1242 - # usage on your layers.nix 1243 - {inputs, ...}: { 1244 - imports = [ 1245 - inputs.dendrix.community.gaetanlepage-nix-config.email 1246 - ]; 1247 - } 1248 - ``` 1249 - 1250 - - firefox: 1251 - 1252 - gaetanlepage-nix-config's firefox tree 1253 - 1254 - ```nix 1255 - # usage on your layers.nix 1256 - {inputs, ...}: { 1257 - imports = [ 1258 - inputs.dendrix.community.gaetanlepage-nix-config.firefox 1259 - ]; 1260 - } 1261 - ``` 1262 - 1263 - - flameshot: 1264 - 1265 - gaetanlepage-nix-config's flameshot tree 1266 - 1267 - ```nix 1268 - # usage on your layers.nix 1269 - {inputs, ...}: { 1270 - imports = [ 1271 - inputs.dendrix.community.gaetanlepage-nix-config.flameshot 1272 - ]; 1273 - } 1274 - ``` 1275 - 1276 - - foot: 1277 - 1278 - gaetanlepage-nix-config's foot tree 1279 - 1280 - ```nix 1281 - # usage on your layers.nix 1282 - {inputs, ...}: { 1283 - imports = [ 1284 - inputs.dendrix.community.gaetanlepage-nix-config.foot 1285 - ]; 1286 - } 1287 - ``` 1288 - 1289 - - gammastep: 1290 - 1291 - gaetanlepage-nix-config's gammastep tree 1292 - 1293 - ```nix 1294 - # usage on your layers.nix 1295 - {inputs, ...}: { 1296 - imports = [ 1297 - inputs.dendrix.community.gaetanlepage-nix-config.gammastep 1298 - ]; 1299 - } 1300 - ``` 1301 - 1302 - - gtk: 1303 - 1304 - gaetanlepage-nix-config's gtk tree 1305 - 1306 - ```nix 1307 - # usage on your layers.nix 1308 - {inputs, ...}: { 1309 - imports = [ 1310 - inputs.dendrix.community.gaetanlepage-nix-config.gtk 1311 - ]; 1312 - } 1313 - ``` 1314 - 1315 - - home-manager: 1316 - 1317 - gaetanlepage-nix-config's home-manager tree 1318 - 1319 - ```nix 1320 - # usage on your layers.nix 1321 - {inputs, ...}: { 1322 - imports = [ 1323 - inputs.dendrix.community.gaetanlepage-nix-config.home-manager 1324 - ]; 1325 - } 1326 - ``` 1327 - 1328 - - host_cuda: 1329 - 1330 - gaetanlepage-nix-config's host_cuda tree 1331 - 1332 - ```nix 1333 - # usage on your layers.nix 1334 - {inputs, ...}: { 1335 - imports = [ 1336 - inputs.dendrix.community.gaetanlepage-nix-config.host_cuda 1337 - ]; 1338 - } 1339 - ``` 1340 - 1341 - - host_feroe: 1342 - 1343 - gaetanlepage-nix-config's host_feroe tree 1344 - 1345 - ```nix 1346 - # usage on your layers.nix 1347 - {inputs, ...}: { 1348 - imports = [ 1349 - inputs.dendrix.community.gaetanlepage-nix-config.host_feroe 1350 - ]; 1351 - } 1352 - ``` 1353 - 1354 - - host_framework: 1355 - 1356 - gaetanlepage-nix-config's host_framework tree 1357 - 1358 - ```nix 1359 - # usage on your layers.nix 1360 - {inputs, ...}: { 1361 - imports = [ 1362 - inputs.dendrix.community.gaetanlepage-nix-config.host_framework 1363 - ]; 1364 - } 1365 - ``` 1366 - 1367 - - host_inria: 1368 - 1369 - gaetanlepage-nix-config's host_inria tree 1370 - 1371 - ```nix 1372 - # usage on your layers.nix 1373 - {inputs, ...}: { 1374 - imports = [ 1375 - inputs.dendrix.community.gaetanlepage-nix-config.host_inria 1376 - ]; 1377 - } 1378 - ``` 1379 - 1380 - - host_jrs: 1381 - 1382 - gaetanlepage-nix-config's host_jrs tree 1383 - 1384 - ```nix 1385 - # usage on your layers.nix 1386 - {inputs, ...}: { 1387 - imports = [ 1388 - inputs.dendrix.community.gaetanlepage-nix-config.host_jrs 1389 - ]; 1390 - } 1391 - ``` 1392 - 1393 - - host_tank: 1394 - 1395 - gaetanlepage-nix-config's host_tank tree 1396 - 1397 - ```nix 1398 - # usage on your layers.nix 1399 - {inputs, ...}: { 1400 - imports = [ 1401 - inputs.dendrix.community.gaetanlepage-nix-config.host_tank 1402 - ]; 1403 - } 1404 - ``` 1405 - 1406 - - host_vps: 1407 - 1408 - gaetanlepage-nix-config's host_vps tree 1409 - 1410 - ```nix 1411 - # usage on your layers.nix 1412 - {inputs, ...}: { 1413 - imports = [ 1414 - inputs.dendrix.community.gaetanlepage-nix-config.host_vps 1415 - ]; 1416 - } 1417 - ``` 1418 - 1419 - - kanshi: 1420 - 1421 - gaetanlepage-nix-config's kanshi tree 1422 - 1423 - ```nix 1424 - # usage on your layers.nix 1425 - {inputs, ...}: { 1426 - imports = [ 1427 - inputs.dendrix.community.gaetanlepage-nix-config.kanshi 1428 - ]; 1429 - } 1430 - ``` 1431 - 1432 - - keyring: 1433 - 1434 - gaetanlepage-nix-config's keyring tree 1435 - 1436 - ```nix 1437 - # usage on your layers.nix 1438 - {inputs, ...}: { 1439 - imports = [ 1440 - inputs.dendrix.community.gaetanlepage-nix-config.keyring 1441 - ]; 1442 - } 1443 - ``` 1444 - 1445 - - nh: 1446 - 1447 - gaetanlepage-nix-config's nh tree 1448 - 1449 - ```nix 1450 - # usage on your layers.nix 1451 - {inputs, ...}: { 1452 - imports = [ 1453 - inputs.dendrix.community.gaetanlepage-nix-config.nh 1454 - ]; 1455 - } 1456 - ``` 1457 - 1458 - - nix: 1459 - 1460 - gaetanlepage-nix-config's nix tree 1461 - 1462 - ```nix 1463 - # usage on your layers.nix 1464 - {inputs, ...}: { 1465 - imports = [ 1466 - inputs.dendrix.community.gaetanlepage-nix-config.nix 1467 - ]; 1468 - } 1469 - ``` 1470 - 1471 - - nix-index-database: 1472 - 1473 - gaetanlepage-nix-config's nix-index-database tree 1474 - 1475 - ```nix 1476 - # usage on your layers.nix 1477 - {inputs, ...}: { 1478 - imports = [ 1479 - inputs.dendrix.community.gaetanlepage-nix-config.nix-index-database 1480 - ]; 1481 - } 1482 - ``` 1483 - 1484 - - nvidia: 1485 - 1486 - gaetanlepage-nix-config's nvidia tree 1487 - 1488 - ```nix 1489 - # usage on your layers.nix 1490 - {inputs, ...}: { 1491 - imports = [ 1492 - inputs.dendrix.community.gaetanlepage-nix-config.nvidia 1493 - ]; 1494 - } 1495 - ``` 1496 - 1497 - - obs: 1498 - 1499 - gaetanlepage-nix-config's obs tree 1500 - 1501 - ```nix 1502 - # usage on your layers.nix 1503 - {inputs, ...}: { 1504 - imports = [ 1505 - inputs.dendrix.community.gaetanlepage-nix-config.obs 1506 - ]; 1507 - } 1508 - ``` 1509 - 1510 - - printing: 1511 - 1512 - gaetanlepage-nix-config's printing tree 1513 - 1514 - ```nix 1515 - # usage on your layers.nix 1516 - {inputs, ...}: { 1517 - imports = [ 1518 - inputs.dendrix.community.gaetanlepage-nix-config.printing 1519 - ]; 1520 - } 1521 - ``` 1522 - 1523 - - remote-builders: 1524 - 1525 - gaetanlepage-nix-config's remote-builders tree 1526 - 1527 - ```nix 1528 - # usage on your layers.nix 1529 - {inputs, ...}: { 1530 - imports = [ 1531 - inputs.dendrix.community.gaetanlepage-nix-config.remote-builders 1532 - ]; 1533 - } 1534 - ``` 1535 - 1536 - - rofi: 1537 - 1538 - gaetanlepage-nix-config's rofi tree 1539 - 1540 - ```nix 1541 - # usage on your layers.nix 1542 - {inputs, ...}: { 1543 - imports = [ 1544 - inputs.dendrix.community.gaetanlepage-nix-config.rofi 1545 - ]; 1546 - } 1547 - ``` 1548 - 1549 - - security: 1550 - 1551 - gaetanlepage-nix-config's security tree 1552 - 1553 - ```nix 1554 - # usage on your layers.nix 1555 - {inputs, ...}: { 1556 - imports = [ 1557 - inputs.dendrix.community.gaetanlepage-nix-config.security 1558 - ]; 1559 - } 1560 - ``` 1561 - 1562 - - server: 1563 - 1564 - gaetanlepage-nix-config's server tree 1565 - 1566 - ```nix 1567 - # usage on your layers.nix 1568 - {inputs, ...}: { 1569 - imports = [ 1570 - inputs.dendrix.community.gaetanlepage-nix-config.server 1571 - ]; 1572 - } 1573 - ``` 1574 - 1575 - - sound: 1576 - 1577 - gaetanlepage-nix-config's sound tree 1578 - 1579 - ```nix 1580 - # usage on your layers.nix 1581 - {inputs, ...}: { 1582 - imports = [ 1583 - inputs.dendrix.community.gaetanlepage-nix-config.sound 1584 - ]; 1585 - } 1586 - ``` 1587 - 1588 - - ssh-client: 1589 - 1590 - gaetanlepage-nix-config's ssh-client tree 1591 - 1592 - ```nix 1593 - # usage on your layers.nix 1594 - {inputs, ...}: { 1595 - imports = [ 1596 - inputs.dendrix.community.gaetanlepage-nix-config.ssh-client 1597 - ]; 1598 - } 1599 - ``` 1600 - 1601 - - ssh-server: 1602 - 1603 - gaetanlepage-nix-config's ssh-server tree 1604 - 1605 - ```nix 1606 - # usage on your layers.nix 1607 - {inputs, ...}: { 1608 - imports = [ 1609 - inputs.dendrix.community.gaetanlepage-nix-config.ssh-server 1610 - ]; 1611 - } 1612 - ``` 1613 - 1614 - - streaming: 1615 - 1616 - gaetanlepage-nix-config's streaming tree 1617 - 1618 - ```nix 1619 - # usage on your layers.nix 1620 - {inputs, ...}: { 1621 - imports = [ 1622 - inputs.dendrix.community.gaetanlepage-nix-config.streaming 1623 - ]; 1624 - } 1625 - ``` 1626 - 1627 - - substituters: 1628 - 1629 - gaetanlepage-nix-config's substituters tree 1630 - 1631 - ```nix 1632 - # usage on your layers.nix 1633 - {inputs, ...}: { 1634 - imports = [ 1635 - inputs.dendrix.community.gaetanlepage-nix-config.substituters 1636 - ]; 1637 - } 1638 - ``` 1639 - 1640 - - sway: 1641 - 1642 - gaetanlepage-nix-config's sway tree 1643 - 1644 - ```nix 1645 - # usage on your layers.nix 1646 - {inputs, ...}: { 1647 - imports = [ 1648 - inputs.dendrix.community.gaetanlepage-nix-config.sway 1649 - ]; 1650 - } 1651 - ``` 1652 - 1653 - - swaylock: 1654 - 1655 - gaetanlepage-nix-config's swaylock tree 1656 - 1657 - ```nix 1658 - # usage on your layers.nix 1659 - {inputs, ...}: { 1660 - imports = [ 1661 - inputs.dendrix.community.gaetanlepage-nix-config.swaylock 1662 - ]; 1663 - } 1664 - ``` 1665 - 1666 - - thunar: 1667 - 1668 - gaetanlepage-nix-config's thunar tree 1669 - 1670 - ```nix 1671 - # usage on your layers.nix 1672 - {inputs, ...}: { 1673 - imports = [ 1674 - inputs.dendrix.community.gaetanlepage-nix-config.thunar 1675 - ]; 1676 - } 1677 - ``` 1678 - 1679 - - udiskie: 1680 - 1681 - gaetanlepage-nix-config's udiskie tree 1682 - 1683 - ```nix 1684 - # usage on your layers.nix 1685 - {inputs, ...}: { 1686 - imports = [ 1687 - inputs.dendrix.community.gaetanlepage-nix-config.udiskie 1688 - ]; 1689 - } 1690 - ``` 1691 - 1692 - - users: 1693 - 1694 - gaetanlepage-nix-config's users tree 1695 - 1696 - ```nix 1697 - # usage on your layers.nix 1698 - {inputs, ...}: { 1699 - imports = [ 1700 - inputs.dendrix.community.gaetanlepage-nix-config.users 1701 - ]; 1702 - } 1703 - ``` 1704 - 1705 - - waybar: 1706 - 1707 - gaetanlepage-nix-config's waybar tree 1708 - 1709 - ```nix 1710 - # usage on your layers.nix 1711 - {inputs, ...}: { 1712 - imports = [ 1713 - inputs.dendrix.community.gaetanlepage-nix-config.waybar 1714 - ]; 1715 - } 1716 - ``` 1717 - 1718 - - wayland: 1719 - 1720 - gaetanlepage-nix-config's wayland tree 1721 - 1722 - ```nix 1723 - # usage on your layers.nix 1724 - {inputs, ...}: { 1725 - imports = [ 1726 - inputs.dendrix.community.gaetanlepage-nix-config.wayland 1727 - ]; 1728 - } 1729 - ``` 1730 - 1731 - - wireguard-client: 1732 - 1733 - gaetanlepage-nix-config's wireguard-client tree 1734 - 1735 - ```nix 1736 - # usage on your layers.nix 1737 - {inputs, ...}: { 1738 - imports = [ 1739 - inputs.dendrix.community.gaetanlepage-nix-config.wireguard-client 1740 - ]; 1741 - } 1742 - ``` 1743 - 1744 - - xdg: 1745 - 1746 - gaetanlepage-nix-config's xdg tree 1747 - 1748 - ```nix 1749 - # usage on your layers.nix 1750 - {inputs, ...}: { 1751 - imports = [ 1752 - inputs.dendrix.community.gaetanlepage-nix-config.xdg 1753 - ]; 1754 - } 1755 - ``` 1756 - 1757 - - zathura: 1758 - 1759 - gaetanlepage-nix-config's zathura tree 1760 - 1761 - ```nix 1762 - # usage on your layers.nix 1763 - {inputs, ...}: { 1764 - imports = [ 1765 - inputs.dendrix.community.gaetanlepage-nix-config.zathura 1766 - ]; 1767 - } 1768 - ``` 1769 - 1770 - </details> 1771 - 1772 - ### [henrysipp-nix-setup](https://github.com/henrysipp/nix-setup/tree/5fbfdf52685dd13ecf96e418a9a83af95787e787 1773 - 1774 - <details> 1775 - <summary> 1776 - 1777 - henrysipp-nix-setup at rev 5fbfdf5. 1778 - 21 dendritic trees. 1779 - <b>21</b> aspects across 6 nix classes. 1780 - 48 nix configuration files. 1781 - 1782 - </summary> 1783 - 1784 - [README](https://github.com/henrysipp/nix-setup/tree/5fbfdf52685dd13ecf96e418a9a83af95787e787/README.md) 1785 - 1786 - <details> 1787 - <summary> 1788 - 1789 - ##### henrysipp-nix-setup defines <b>21</b> aspects across 6 nix classes. 1790 - 1791 - </summary> 1792 - 1793 - - <code>albion</code>: <code>hosts</code> 1794 - 1795 - - <code>allowedUnfreePackages</code>: <code>nixpkgs</code> 1796 - 1797 - - <code>base</code>: <code>homeManager</code>/<code>nixos</code> 1798 - 1799 - - <code>containers</code>: <code>nixos</code> 1800 - 1801 - - <code>darwin-desktop</code>: <code>homeManager</code> 1802 - 1803 - - <code>desktop</code>: <code>darwin</code>/<code>homeManager</code>/<code>nixos</code> 1804 - 1805 - - <code>dev</code>: <code>homeManager</code>/<code>nixos</code> 1806 - 1807 - - <code>fonts</code>: <code>homeManager</code>/<code>nixos</code> 1808 - 1809 - - <code>games</code>: <code>homeManager</code>/<code>nixos</code> 1810 - 1811 - - <code>gawain</code>: <code>hosts</code> 1812 - 1813 - - <code>gnome</code>: <code>homeManager</code>/<code>nixos</code> 1814 - 1815 - - <code>guren</code>: <code>hosts</code> 1816 - 1817 - - <code>henry</code>: <code>nixosUsers</code> 1818 - 1819 - - <code>nixvim</code>: <code>homeManager</code> 1820 - 1821 - - <code>packages</code>: <code>nixos</code> 1822 - 1823 - - <code>plasma</code>: <code>homeManager</code>/<code>nixos</code> 1824 - 1825 - - <code>root</code>: <code>nixosUsers</code> 1826 - 1827 - - <code>shell</code>: <code>darwin</code>/<code>homeManager</code>/<code>nixos</code> 1828 - 1829 - - <code>sound</code>: <code>nixos</code> 1830 - 1831 - - <code>system</code>: <code>darwin</code> 1832 - 1833 - - <code>work</code>: <code>darwin</code> 1834 - 1835 - </details> 1836 - 1837 - No community notes on henrysipp-nix-setup. Use the source, Luke. 1838 - 1839 - - albion: 1840 - 1841 - henrysipp-nix-setup's albion tree 1842 - 1843 - ```nix 1844 - # usage on your layers.nix 1845 - {inputs, ...}: { 1846 - imports = [ 1847 - inputs.dendrix.community.henrysipp-nix-setup.albion 1848 - ]; 1849 - } 1850 - ``` 1851 - 1852 - - allowedUnfreePackages: 1853 - 1854 - henrysipp-nix-setup's allowedUnfreePackages tree 1855 - 1856 - ```nix 1857 - # usage on your layers.nix 1858 - {inputs, ...}: { 1859 - imports = [ 1860 - inputs.dendrix.community.henrysipp-nix-setup.allowedUnfreePackages 1861 - ]; 1862 - } 1863 - ``` 1864 - 1865 - - base: 1866 - 1867 - henrysipp-nix-setup's base tree 1868 - 1869 - ```nix 1870 - # usage on your layers.nix 1871 - {inputs, ...}: { 1872 - imports = [ 1873 - inputs.dendrix.community.henrysipp-nix-setup.base 1874 - ]; 1875 - } 1876 - ``` 1877 - 1878 - - containers: 1879 - 1880 - henrysipp-nix-setup's containers tree 1881 - 1882 - ```nix 1883 - # usage on your layers.nix 1884 - {inputs, ...}: { 1885 - imports = [ 1886 - inputs.dendrix.community.henrysipp-nix-setup.containers 1887 - ]; 1888 - } 1889 - ``` 1890 - 1891 - - darwin-desktop: 1892 - 1893 - henrysipp-nix-setup's darwin-desktop tree 1894 - 1895 - ```nix 1896 - # usage on your layers.nix 1897 - {inputs, ...}: { 1898 - imports = [ 1899 - inputs.dendrix.community.henrysipp-nix-setup.darwin-desktop 1900 - ]; 1901 - } 1902 - ``` 1903 - 1904 - - desktop: 1905 - 1906 - henrysipp-nix-setup's desktop tree 1907 - 1908 - ```nix 1909 - # usage on your layers.nix 1910 - {inputs, ...}: { 1911 - imports = [ 1912 - inputs.dendrix.community.henrysipp-nix-setup.desktop 1913 - ]; 1914 - } 1915 - ``` 1916 - 1917 - - dev: 1918 - 1919 - henrysipp-nix-setup's dev tree 1920 - 1921 - ```nix 1922 - # usage on your layers.nix 1923 - {inputs, ...}: { 1924 - imports = [ 1925 - inputs.dendrix.community.henrysipp-nix-setup.dev 1926 - ]; 1927 - } 1928 - ``` 1929 - 1930 - - fonts: 1931 - 1932 - henrysipp-nix-setup's fonts tree 1933 - 1934 - ```nix 1935 - # usage on your layers.nix 1936 - {inputs, ...}: { 1937 - imports = [ 1938 - inputs.dendrix.community.henrysipp-nix-setup.fonts 1939 - ]; 1940 - } 1941 - ``` 1942 - 1943 - - games: 1944 - 1945 - henrysipp-nix-setup's games tree 1946 - 1947 - ```nix 1948 - # usage on your layers.nix 1949 - {inputs, ...}: { 1950 - imports = [ 1951 - inputs.dendrix.community.henrysipp-nix-setup.games 1952 - ]; 1953 - } 1954 - ``` 1955 - 1956 - - gawain: 1957 - 1958 - henrysipp-nix-setup's gawain tree 1959 - 1960 - ```nix 1961 - # usage on your layers.nix 1962 - {inputs, ...}: { 1963 - imports = [ 1964 - inputs.dendrix.community.henrysipp-nix-setup.gawain 1965 - ]; 1966 - } 1967 - ``` 1968 - 1969 - - gnome: 1970 - 1971 - henrysipp-nix-setup's gnome tree 1972 - 1973 - ```nix 1974 - # usage on your layers.nix 1975 - {inputs, ...}: { 1976 - imports = [ 1977 - inputs.dendrix.community.henrysipp-nix-setup.gnome 1978 - ]; 1979 - } 1980 - ``` 1981 - 1982 - - guren: 1983 - 1984 - henrysipp-nix-setup's guren tree 1985 - 1986 - ```nix 1987 - # usage on your layers.nix 1988 - {inputs, ...}: { 1989 - imports = [ 1990 - inputs.dendrix.community.henrysipp-nix-setup.guren 1991 - ]; 1992 - } 1993 - ``` 1994 - 1995 - - henry: 1996 - 1997 - henrysipp-nix-setup's henry tree 1998 - 1999 - ```nix 2000 - # usage on your layers.nix 2001 - {inputs, ...}: { 2002 - imports = [ 2003 - inputs.dendrix.community.henrysipp-nix-setup.henry 2004 - ]; 2005 - } 2006 - ``` 2007 - 2008 - - nixvim: 2009 - 2010 - henrysipp-nix-setup's nixvim tree 2011 - 2012 - ```nix 2013 - # usage on your layers.nix 2014 - {inputs, ...}: { 2015 - imports = [ 2016 - inputs.dendrix.community.henrysipp-nix-setup.nixvim 2017 - ]; 2018 - } 2019 - ``` 2020 - 2021 - - packages: 2022 - 2023 - henrysipp-nix-setup's packages tree 2024 - 2025 - ```nix 2026 - # usage on your layers.nix 2027 - {inputs, ...}: { 2028 - imports = [ 2029 - inputs.dendrix.community.henrysipp-nix-setup.packages 2030 - ]; 2031 - } 2032 - ``` 2033 - 2034 - - plasma: 2035 - 2036 - henrysipp-nix-setup's plasma tree 2037 - 2038 - ```nix 2039 - # usage on your layers.nix 2040 - {inputs, ...}: { 2041 - imports = [ 2042 - inputs.dendrix.community.henrysipp-nix-setup.plasma 2043 - ]; 2044 - } 2045 - ``` 2046 - 2047 - - root: 2048 - 2049 - henrysipp-nix-setup's root tree 2050 - 2051 - ```nix 2052 - # usage on your layers.nix 2053 - {inputs, ...}: { 2054 - imports = [ 2055 - inputs.dendrix.community.henrysipp-nix-setup.root 2056 - ]; 2057 - } 2058 - ``` 2059 - 2060 - - shell: 2061 - 2062 - henrysipp-nix-setup's shell tree 2063 - 2064 - ```nix 2065 - # usage on your layers.nix 2066 - {inputs, ...}: { 2067 - imports = [ 2068 - inputs.dendrix.community.henrysipp-nix-setup.shell 2069 - ]; 2070 - } 2071 - ``` 2072 - 2073 - - sound: 2074 - 2075 - henrysipp-nix-setup's sound tree 2076 - 2077 - ```nix 2078 - # usage on your layers.nix 2079 - {inputs, ...}: { 2080 - imports = [ 2081 - inputs.dendrix.community.henrysipp-nix-setup.sound 2082 - ]; 2083 - } 2084 - ``` 2085 - 2086 - - system: 2087 - 2088 - henrysipp-nix-setup's system tree 2089 - 2090 - ```nix 2091 - # usage on your layers.nix 2092 - {inputs, ...}: { 2093 - imports = [ 2094 - inputs.dendrix.community.henrysipp-nix-setup.system 2095 - ]; 2096 - } 2097 - ``` 2098 - 2099 - - work: 2100 - 2101 - henrysipp-nix-setup's work tree 2102 - 2103 - ```nix 2104 - # usage on your layers.nix 2105 - {inputs, ...}: { 2106 - imports = [ 2107 - inputs.dendrix.community.henrysipp-nix-setup.work 2108 - ]; 2109 - } 2110 - ``` 2111 - 2112 - </details> 2113 - 2114 - ### [icyd-nixvim](https://github.com/icyd/nixvim/tree/6bf416ad3ba76a24afb287fa989561f5bcde1bd2 2115 - 2116 - <details> 2117 - <summary> 2118 - 2119 - icyd-nixvim at rev 6bf416a. 2120 - 30 dendritic trees. 2121 - <b>30</b> aspects across 2 nix classes. 2122 - 41 nix configuration files. 2123 - 2124 - </summary> 2125 - 2126 - [README](https://github.com/icyd/nixvim/tree/6bf416ad3ba76a24afb287fa989561f5bcde1bd2/README.md) 2127 - 2128 - <details> 2129 - <summary> 2130 - 2131 - ##### icyd-nixvim defines <b>30</b> aspects across 2 nix classes. 2132 - 2133 - </summary> 2134 - 2135 - - <code>additional-plugins</code>: <code>nixvim</code> 2136 - 2137 - - <code>auto-session</code>: <code>nixvim</code> 2138 - 2139 - - <code>colorizer</code>: <code>nixvim</code> 2140 - 2141 - - <code>compiler</code>: <code>nixvim</code> 2142 - 2143 - - <code>completion</code>: <code>nixvim</code> 2144 - 2145 - - <code>core</code>: <code>config</code>/<code>nixvim</code> 2146 - 2147 - - <code>debug</code>: <code>nixvim</code> 2148 - 2149 - - <code>dial</code>: <code>nixvim</code> 2150 - 2151 - - <code>firenvim</code>: <code>nixvim</code> 2152 - 2153 - - <code>full</code>: <code>config</code> 2154 - 2155 - - <code>git</code>: <code>nixvim</code> 2156 - 2157 - - <code>harpoon</code>: <code>nixvim</code> 2158 - 2159 - - <code>lsp</code>: <code>nixvim</code> 2160 - 2161 - - <code>markdown</code>: <code>nixvim</code> 2162 - 2163 - - <code>maximize</code>: <code>nixvim</code> 2164 - 2165 - - <code>navigator</code>: <code>nixvim</code> 2166 - 2167 - - <code>neorg</code>: <code>nixvim</code> 2168 - 2169 - - <code>oil</code>: <code>nixvim</code> 2170 - 2171 - - <code>optimizations</code>: <code>nixvim</code> 2172 - 2173 - - <code>overseer</code>: <code>nixvim</code> 2174 - 2175 - - <code>project-nvim</code>: <code>nixvim</code> 2176 - 2177 - - <code>telescope</code>: <code>nixvim</code> 2178 - 2179 - - <code>tests</code>: <code>nixvim</code> 2180 - 2181 - - <code>todo-comments</code>: <code>nixvim</code> 2182 - 2183 - - <code>treesitter</code>: <code>nixvim</code> 2184 - 2185 - - <code>trouble</code>: <code>nixvim</code> 2186 - 2187 - - <code>ufo</code>: <code>nixvim</code> 2188 - 2189 - - <code>ui</code>: <code>nixvim</code> 2190 - 2191 - - <code>utils</code>: <code>nixvim</code> 2192 - 2193 - - <code>yanky</code>: <code>nixvim</code> 2194 - 2195 - </details> 2196 - 2197 - No community notes on icyd-nixvim. Use the source, Luke. 2198 - 2199 - - additional-plugins: 2200 - 2201 - icyd-nixvim's additional-plugins tree 2202 - 2203 - ```nix 2204 - # usage on your layers.nix 2205 - {inputs, ...}: { 2206 - imports = [ 2207 - inputs.dendrix.community.icyd-nixvim.additional-plugins 2208 - ]; 2209 - } 2210 - ``` 2211 - 2212 - - auto-session: 2213 - 2214 - icyd-nixvim's auto-session tree 2215 - 2216 - ```nix 2217 - # usage on your layers.nix 2218 - {inputs, ...}: { 2219 - imports = [ 2220 - inputs.dendrix.community.icyd-nixvim.auto-session 2221 - ]; 2222 - } 2223 - ``` 2224 - 2225 - - colorizer: 2226 - 2227 - icyd-nixvim's colorizer tree 2228 - 2229 - ```nix 2230 - # usage on your layers.nix 2231 - {inputs, ...}: { 2232 - imports = [ 2233 - inputs.dendrix.community.icyd-nixvim.colorizer 2234 - ]; 2235 - } 2236 - ``` 2237 - 2238 - - compiler: 2239 - 2240 - icyd-nixvim's compiler tree 2241 - 2242 - ```nix 2243 - # usage on your layers.nix 2244 - {inputs, ...}: { 2245 - imports = [ 2246 - inputs.dendrix.community.icyd-nixvim.compiler 2247 - ]; 2248 - } 2249 - ``` 2250 - 2251 - - completion: 2252 - 2253 - icyd-nixvim's completion tree 2254 - 2255 - ```nix 2256 - # usage on your layers.nix 2257 - {inputs, ...}: { 2258 - imports = [ 2259 - inputs.dendrix.community.icyd-nixvim.completion 2260 - ]; 2261 - } 2262 - ``` 2263 - 2264 - - core: 2265 - 2266 - icyd-nixvim's core tree 2267 - 2268 - ```nix 2269 - # usage on your layers.nix 2270 - {inputs, ...}: { 2271 - imports = [ 2272 - inputs.dendrix.community.icyd-nixvim.core 2273 - ]; 2274 - } 2275 - ``` 2276 - 2277 - - debug: 2278 - 2279 - icyd-nixvim's debug tree 2280 - 2281 - ```nix 2282 - # usage on your layers.nix 2283 - {inputs, ...}: { 2284 - imports = [ 2285 - inputs.dendrix.community.icyd-nixvim.debug 2286 - ]; 2287 - } 2288 - ``` 2289 - 2290 - - dial: 2291 - 2292 - icyd-nixvim's dial tree 2293 - 2294 - ```nix 2295 - # usage on your layers.nix 2296 - {inputs, ...}: { 2297 - imports = [ 2298 - inputs.dendrix.community.icyd-nixvim.dial 2299 - ]; 2300 - } 2301 - ``` 2302 - 2303 - - firenvim: 2304 - 2305 - icyd-nixvim's firenvim tree 2306 - 2307 - ```nix 2308 - # usage on your layers.nix 2309 - {inputs, ...}: { 2310 - imports = [ 2311 - inputs.dendrix.community.icyd-nixvim.firenvim 2312 - ]; 2313 - } 2314 - ``` 2315 - 2316 - - full: 2317 - 2318 - icyd-nixvim's full tree 2319 - 2320 - ```nix 2321 - # usage on your layers.nix 2322 - {inputs, ...}: { 2323 - imports = [ 2324 - inputs.dendrix.community.icyd-nixvim.full 2325 - ]; 2326 - } 2327 - ``` 2328 - 2329 - - git: 2330 - 2331 - icyd-nixvim's git tree 2332 - 2333 - ```nix 2334 - # usage on your layers.nix 2335 - {inputs, ...}: { 2336 - imports = [ 2337 - inputs.dendrix.community.icyd-nixvim.git 2338 - ]; 2339 - } 2340 - ``` 2341 - 2342 - - harpoon: 2343 - 2344 - icyd-nixvim's harpoon tree 2345 - 2346 - ```nix 2347 - # usage on your layers.nix 2348 - {inputs, ...}: { 2349 - imports = [ 2350 - inputs.dendrix.community.icyd-nixvim.harpoon 2351 - ]; 2352 - } 2353 - ``` 2354 - 2355 - - lsp: 2356 - 2357 - icyd-nixvim's lsp tree 2358 - 2359 - ```nix 2360 - # usage on your layers.nix 2361 - {inputs, ...}: { 2362 - imports = [ 2363 - inputs.dendrix.community.icyd-nixvim.lsp 2364 - ]; 2365 - } 2366 - ``` 2367 - 2368 - - markdown: 2369 - 2370 - icyd-nixvim's markdown tree 2371 - 2372 - ```nix 2373 - # usage on your layers.nix 2374 - {inputs, ...}: { 2375 - imports = [ 2376 - inputs.dendrix.community.icyd-nixvim.markdown 2377 - ]; 2378 - } 2379 - ``` 2380 - 2381 - - maximize: 2382 - 2383 - icyd-nixvim's maximize tree 2384 - 2385 - ```nix 2386 - # usage on your layers.nix 2387 - {inputs, ...}: { 2388 - imports = [ 2389 - inputs.dendrix.community.icyd-nixvim.maximize 2390 - ]; 2391 - } 2392 - ``` 2393 - 2394 - - navigator: 2395 - 2396 - icyd-nixvim's navigator tree 2397 - 2398 - ```nix 2399 - # usage on your layers.nix 2400 - {inputs, ...}: { 2401 - imports = [ 2402 - inputs.dendrix.community.icyd-nixvim.navigator 2403 - ]; 2404 - } 2405 - ``` 2406 - 2407 - - neorg: 2408 - 2409 - icyd-nixvim's neorg tree 2410 - 2411 - ```nix 2412 - # usage on your layers.nix 2413 - {inputs, ...}: { 2414 - imports = [ 2415 - inputs.dendrix.community.icyd-nixvim.neorg 2416 - ]; 2417 - } 2418 - ``` 2419 - 2420 - - oil: 2421 - 2422 - icyd-nixvim's oil tree 2423 - 2424 - ```nix 2425 - # usage on your layers.nix 2426 - {inputs, ...}: { 2427 - imports = [ 2428 - inputs.dendrix.community.icyd-nixvim.oil 2429 - ]; 2430 - } 2431 - ``` 2432 - 2433 - - optimizations: 2434 - 2435 - icyd-nixvim's optimizations tree 2436 - 2437 - ```nix 2438 - # usage on your layers.nix 2439 - {inputs, ...}: { 2440 - imports = [ 2441 - inputs.dendrix.community.icyd-nixvim.optimizations 2442 - ]; 2443 - } 2444 - ``` 2445 - 2446 - - overseer: 2447 - 2448 - icyd-nixvim's overseer tree 2449 - 2450 - ```nix 2451 - # usage on your layers.nix 2452 - {inputs, ...}: { 2453 - imports = [ 2454 - inputs.dendrix.community.icyd-nixvim.overseer 2455 - ]; 2456 - } 2457 - ``` 2458 - 2459 - - project-nvim: 2460 - 2461 - icyd-nixvim's project-nvim tree 2462 - 2463 - ```nix 2464 - # usage on your layers.nix 2465 - {inputs, ...}: { 2466 - imports = [ 2467 - inputs.dendrix.community.icyd-nixvim.project-nvim 2468 - ]; 2469 - } 2470 - ``` 2471 - 2472 - - telescope: 2473 - 2474 - icyd-nixvim's telescope tree 2475 - 2476 - ```nix 2477 - # usage on your layers.nix 2478 - {inputs, ...}: { 2479 - imports = [ 2480 - inputs.dendrix.community.icyd-nixvim.telescope 2481 - ]; 2482 - } 2483 - ``` 2484 - 2485 - - tests: 2486 - 2487 - icyd-nixvim's tests tree 2488 - 2489 - ```nix 2490 - # usage on your layers.nix 2491 - {inputs, ...}: { 2492 - imports = [ 2493 - inputs.dendrix.community.icyd-nixvim.tests 2494 - ]; 2495 - } 2496 - ``` 2497 - 2498 - - todo-comments: 2499 - 2500 - icyd-nixvim's todo-comments tree 2501 - 2502 - ```nix 2503 - # usage on your layers.nix 2504 - {inputs, ...}: { 2505 - imports = [ 2506 - inputs.dendrix.community.icyd-nixvim.todo-comments 2507 - ]; 2508 - } 2509 - ``` 2510 - 2511 - - treesitter: 2512 - 2513 - icyd-nixvim's treesitter tree 2514 - 2515 - ```nix 2516 - # usage on your layers.nix 2517 - {inputs, ...}: { 2518 - imports = [ 2519 - inputs.dendrix.community.icyd-nixvim.treesitter 2520 - ]; 2521 - } 2522 - ``` 2523 - 2524 - - trouble: 2525 - 2526 - icyd-nixvim's trouble tree 2527 - 2528 - ```nix 2529 - # usage on your layers.nix 2530 - {inputs, ...}: { 2531 - imports = [ 2532 - inputs.dendrix.community.icyd-nixvim.trouble 2533 - ]; 2534 - } 2535 - ``` 2536 - 2537 - - ufo: 2538 - 2539 - icyd-nixvim's ufo tree 2540 - 2541 - ```nix 2542 - # usage on your layers.nix 2543 - {inputs, ...}: { 2544 - imports = [ 2545 - inputs.dendrix.community.icyd-nixvim.ufo 2546 - ]; 2547 - } 2548 - ``` 2549 - 2550 - - ui: 2551 - 2552 - icyd-nixvim's ui tree 2553 - 2554 - ```nix 2555 - # usage on your layers.nix 2556 - {inputs, ...}: { 2557 - imports = [ 2558 - inputs.dendrix.community.icyd-nixvim.ui 2559 - ]; 2560 - } 2561 - ``` 2562 - 2563 - - utils: 2564 - 2565 - icyd-nixvim's utils tree 2566 - 2567 - ```nix 2568 - # usage on your layers.nix 2569 - {inputs, ...}: { 2570 - imports = [ 2571 - inputs.dendrix.community.icyd-nixvim.utils 2572 - ]; 2573 - } 2574 - ``` 2575 - 2576 - - yanky: 2577 - 2578 - icyd-nixvim's yanky tree 2579 - 2580 - ```nix 2581 - # usage on your layers.nix 2582 - {inputs, ...}: { 2583 - imports = [ 2584 - inputs.dendrix.community.icyd-nixvim.yanky 2585 - ]; 2586 - } 2587 - ``` 2588 - 2589 - </details> 2590 - 2591 - ### [quasigod-nixconfig](https://codeberg.org/vic/quasigod-nixconfig/src/commit/4326b7976ff363f83a461700a4567859830906bf 2592 - 2593 - <details> 2594 - <summary> 2595 - 2596 - quasigod-nixconfig at rev 4326b79. 2597 - 19 dendritic trees. 2598 - <b>19</b> aspects across 2 nix classes. 2599 - 59 nix configuration files. 2600 - 2601 - </summary> 2602 - 2603 - [README](https://codeberg.org/vic/quasigod-nixconfig/src/commit/4326b7976ff363f83a461700a4567859830906bf/README.md) 2604 - 2605 - <details> 2606 - <summary> 2607 - 2608 - ##### quasigod-nixconfig defines <b>19</b> aspects across 2 nix classes. 2609 - 2610 - </summary> 2611 - 2612 - - <code>cachix</code>: <code>home</code>/<code>nixos</code> 2613 - 2614 - - <code>default</code>: <code>home</code>/<code>nixos</code> 2615 - 2616 - - <code>gaming</code>: <code>home</code>/<code>nixos</code> 2617 - 2618 - - <code>hacking</code>: <code>home</code>/<code>nixos</code> 2619 - 2620 - - <code>laptop</code>: <code>home</code>/<code>nixos</code> 2621 - 2622 - - <code>localai</code>: <code>home</code>/<code>nixos</code> 2623 - 2624 - - <code>plymouth</code>: <code>home</code>/<code>nixos</code> 2625 - 2626 - - <code>remote</code>: <code>home</code>/<code>nixos</code> 2627 - 2628 - - <code>replays</code>: <code>home</code>/<code>nixos</code> 2629 - 2630 - - <code>secure-boot</code>: <code>home</code>/<code>nixos</code> 2631 - 2632 - - <code>server</code>: <code>home</code>/<code>nixos</code> 2633 - 2634 - - <code>ssh</code>: <code>home</code>/<code>nixos</code> 2635 - 2636 - - <code>syncthing-client</code>: <code>home</code>/<code>nixos</code> 2637 - 2638 - - <code>syncthing-server</code>: <code>home</code>/<code>nixos</code> 2639 - 2640 - - <code>virtualisation</code>: <code>home</code>/<code>nixos</code> 2641 - 2642 - - <code>waydroid</code>: <code>home</code>/<code>nixos</code> 2643 - 2644 - - <code>workstation</code>: <code>home</code>/<code>nixos</code> 2645 - 2646 - - <code>zfs</code>: <code>home</code>/<code>nixos</code> 2647 - 2648 - - <code>zsa-kb</code>: <code>home</code>/<code>nixos</code> 2649 - 2650 - </details> 2651 - 2652 - No community notes on quasigod-nixconfig. Use the source, Luke. 2653 - 2654 - - cachix: 2655 - 2656 - quasigod-nixconfig's cachix tree 2657 - 2658 - ```nix 2659 - # usage on your layers.nix 2660 - {inputs, ...}: { 2661 - imports = [ 2662 - inputs.dendrix.community.quasigod-nixconfig.cachix 2663 - ]; 2664 - } 2665 - ``` 2666 - 2667 - - default: 2668 - 2669 - quasigod-nixconfig's default tree 2670 - 2671 - ```nix 2672 - # usage on your layers.nix 2673 - {inputs, ...}: { 2674 - imports = [ 2675 - inputs.dendrix.community.quasigod-nixconfig.default 2676 - ]; 2677 - } 2678 - ``` 2679 - 2680 - - gaming: 2681 - 2682 - quasigod-nixconfig's gaming tree 2683 - 2684 - ```nix 2685 - # usage on your layers.nix 2686 - {inputs, ...}: { 2687 - imports = [ 2688 - inputs.dendrix.community.quasigod-nixconfig.gaming 2689 - ]; 2690 - } 2691 - ``` 2692 - 2693 - - hacking: 2694 - 2695 - quasigod-nixconfig's hacking tree 2696 - 2697 - ```nix 2698 - # usage on your layers.nix 2699 - {inputs, ...}: { 2700 - imports = [ 2701 - inputs.dendrix.community.quasigod-nixconfig.hacking 2702 - ]; 2703 - } 2704 - ``` 2705 - 2706 - - laptop: 2707 - 2708 - quasigod-nixconfig's laptop tree 2709 - 2710 - ```nix 2711 - # usage on your layers.nix 2712 - {inputs, ...}: { 2713 - imports = [ 2714 - inputs.dendrix.community.quasigod-nixconfig.laptop 2715 - ]; 2716 - } 2717 - ``` 2718 - 2719 - - localai: 2720 - 2721 - quasigod-nixconfig's localai tree 2722 - 2723 - ```nix 2724 - # usage on your layers.nix 2725 - {inputs, ...}: { 2726 - imports = [ 2727 - inputs.dendrix.community.quasigod-nixconfig.localai 2728 - ]; 2729 - } 2730 - ``` 2731 - 2732 - - plymouth: 2733 - 2734 - quasigod-nixconfig's plymouth tree 2735 - 2736 - ```nix 2737 - # usage on your layers.nix 2738 - {inputs, ...}: { 2739 - imports = [ 2740 - inputs.dendrix.community.quasigod-nixconfig.plymouth 2741 - ]; 2742 - } 2743 - ``` 2744 - 2745 - - remote: 2746 - 2747 - quasigod-nixconfig's remote tree 2748 - 2749 - ```nix 2750 - # usage on your layers.nix 2751 - {inputs, ...}: { 2752 - imports = [ 2753 - inputs.dendrix.community.quasigod-nixconfig.remote 2754 - ]; 2755 - } 2756 - ``` 2757 - 2758 - - replays: 2759 - 2760 - quasigod-nixconfig's replays tree 2761 - 2762 - ```nix 2763 - # usage on your layers.nix 2764 - {inputs, ...}: { 2765 - imports = [ 2766 - inputs.dendrix.community.quasigod-nixconfig.replays 2767 - ]; 2768 - } 2769 - ``` 2770 - 2771 - - secure-boot: 2772 - 2773 - quasigod-nixconfig's secure-boot tree 2774 - 2775 - ```nix 2776 - # usage on your layers.nix 2777 - {inputs, ...}: { 2778 - imports = [ 2779 - inputs.dendrix.community.quasigod-nixconfig.secure-boot 2780 - ]; 2781 - } 2782 - ``` 2783 - 2784 - - server: 2785 - 2786 - quasigod-nixconfig's server tree 2787 - 2788 - ```nix 2789 - # usage on your layers.nix 2790 - {inputs, ...}: { 2791 - imports = [ 2792 - inputs.dendrix.community.quasigod-nixconfig.server 2793 - ]; 2794 - } 2795 - ``` 2796 - 2797 - - ssh: 2798 - 2799 - quasigod-nixconfig's ssh tree 2800 - 2801 - ```nix 2802 - # usage on your layers.nix 2803 - {inputs, ...}: { 2804 - imports = [ 2805 - inputs.dendrix.community.quasigod-nixconfig.ssh 2806 - ]; 2807 - } 2808 - ``` 2809 - 2810 - - syncthing-client: 2811 - 2812 - quasigod-nixconfig's syncthing-client tree 2813 - 2814 - ```nix 2815 - # usage on your layers.nix 2816 - {inputs, ...}: { 2817 - imports = [ 2818 - inputs.dendrix.community.quasigod-nixconfig.syncthing-client 2819 - ]; 2820 - } 2821 - ``` 2822 - 2823 - - syncthing-server: 2824 - 2825 - quasigod-nixconfig's syncthing-server tree 2826 - 2827 - ```nix 2828 - # usage on your layers.nix 2829 - {inputs, ...}: { 2830 - imports = [ 2831 - inputs.dendrix.community.quasigod-nixconfig.syncthing-server 2832 - ]; 2833 - } 2834 - ``` 2835 - 2836 - - virtualisation: 2837 - 2838 - quasigod-nixconfig's virtualisation tree 2839 - 2840 - ```nix 2841 - # usage on your layers.nix 2842 - {inputs, ...}: { 2843 - imports = [ 2844 - inputs.dendrix.community.quasigod-nixconfig.virtualisation 2845 - ]; 2846 - } 2847 - ``` 2848 - 2849 - - waydroid: 2850 - 2851 - quasigod-nixconfig's waydroid tree 2852 - 2853 - ```nix 2854 - # usage on your layers.nix 2855 - {inputs, ...}: { 2856 - imports = [ 2857 - inputs.dendrix.community.quasigod-nixconfig.waydroid 2858 - ]; 2859 - } 2860 - ``` 2861 - 2862 - - workstation: 2863 - 2864 - quasigod-nixconfig's workstation tree 2865 - 2866 - ```nix 2867 - # usage on your layers.nix 2868 - {inputs, ...}: { 2869 - imports = [ 2870 - inputs.dendrix.community.quasigod-nixconfig.workstation 2871 - ]; 2872 - } 2873 - ``` 2874 - 2875 - - zfs: 2876 - 2877 - quasigod-nixconfig's zfs tree 2878 - 2879 - ```nix 2880 - # usage on your layers.nix 2881 - {inputs, ...}: { 2882 - imports = [ 2883 - inputs.dendrix.community.quasigod-nixconfig.zfs 2884 - ]; 2885 - } 2886 - ``` 2887 - 2888 - - zsa-kb: 2889 - 2890 - quasigod-nixconfig's zsa-kb tree 2891 - 2892 - ```nix 2893 - # usage on your layers.nix 2894 - {inputs, ...}: { 2895 - imports = [ 2896 - inputs.dendrix.community.quasigod-nixconfig.zsa-kb 2897 - ]; 2898 - } 2899 - ``` 2900 - 2901 - </details> 2902 - 2903 - ### [vic-vix](https://github.com/vic/vix/tree/f31e8a10fd4dc69980d661bbd610f4aa551fbbb0 2904 - 2905 - <details> 2906 - <summary> 2907 - 2908 - vic-vix at rev f31e8a1. 2909 - 24 dendritic trees. 2910 - <b>24</b> aspects across 3 nix classes. 2911 - 44 nix configuration files. 2912 - 2913 - </summary> 2914 - 2915 - [README](https://github.com/vic/vix/tree/f31e8a10fd4dc69980d661bbd610f4aa551fbbb0/README.md) 2916 - 2917 - <details> 2918 - <summary> 2919 - 2920 - ##### vic-vix defines <b>24</b> aspects across 3 nix classes. 2921 - 2922 - </summary> 2923 - 2924 - - <code>aarch64-darwin</code>: <code>darwin</code> 2925 - 2926 - - <code>aarch64-linux</code>: <code>nixos</code> 2927 - 2928 - - <code>all-firmware</code>: <code>nixos</code> 2929 - 2930 - - <code>bootable</code>: <code>nixos</code> 2931 - 2932 - - <code>darwin</code>: <code>darwin</code> 2933 - 2934 - - <code>gnome-desktop</code>: <code>nixos</code> 2935 - 2936 - - <code>kde-desktop</code>: <code>nixos</code> 2937 - 2938 - - <code>kvm-amd</code>: <code>nixos</code> 2939 - 2940 - - <code>kvm-intel</code>: <code>nixos</code> 2941 - 2942 - - <code>macos-keys</code>: <code>nixos</code> 2943 - 2944 - - <code>nix-index</code>: <code>homeManager</code> 2945 - 2946 - - <code>nix-registry</code>: <code>homeManager</code> 2947 - 2948 - - <code>nix-settings</code>: <code>nixos</code> 2949 - 2950 - - <code>nixos</code>: <code>nixos</code> 2951 - 2952 - - <code>nvidia</code>: <code>nixos</code> 2953 - 2954 - - <code>rdesk</code>: <code>homeManager</code>/<code>nixos</code> 2955 - 2956 - - <code>unfree</code>: <code>nixos</code> 2957 - 2958 - - <code>vic</code>: <code>darwin</code>/<code>homeManager</code>/<code>nixos</code> 2959 - 2960 - - <code>vscode-server</code>: <code>homeManager</code> 2961 - 2962 - - <code>wl-broadcom</code>: <code>nixos</code> 2963 - 2964 - - <code>wsl</code>: <code>nixos</code> 2965 - 2966 - - <code>x86_64-darwin</code>: <code>darwin</code> 2967 - 2968 - - <code>x86_64-linux</code>: <code>nixos</code> 2969 - 2970 - - <code>xfce-desktop</code>: <code>nixos</code> 2971 - 2972 - </details> 2973 - 2974 - No community notes on vic-vix. Use the source, Luke. 2975 - 2976 - - aarch64-darwin: 2977 - 2978 - vic-vix's aarch64-darwin tree 2979 - 2980 - ```nix 2981 - # usage on your layers.nix 2982 - {inputs, ...}: { 2983 - imports = [ 2984 - inputs.dendrix.community.vic-vix.aarch64-darwin 2985 - ]; 2986 - } 2987 - ``` 2988 - 2989 - - aarch64-linux: 2990 - 2991 - vic-vix's aarch64-linux tree 2992 - 2993 - ```nix 2994 - # usage on your layers.nix 2995 - {inputs, ...}: { 2996 - imports = [ 2997 - inputs.dendrix.community.vic-vix.aarch64-linux 2998 - ]; 2999 - } 3000 - ``` 3001 - 3002 - - all-firmware: 3003 - 3004 - vic-vix's all-firmware tree 3005 - 3006 - ```nix 3007 - # usage on your layers.nix 3008 - {inputs, ...}: { 3009 - imports = [ 3010 - inputs.dendrix.community.vic-vix.all-firmware 3011 - ]; 3012 - } 3013 - ``` 3014 - 3015 - - bootable: 3016 - 3017 - vic-vix's bootable tree 3018 - 3019 - ```nix 3020 - # usage on your layers.nix 3021 - {inputs, ...}: { 3022 - imports = [ 3023 - inputs.dendrix.community.vic-vix.bootable 3024 - ]; 3025 - } 3026 - ``` 3027 - 3028 - - darwin: 3029 - 3030 - vic-vix's darwin tree 3031 - 3032 - ```nix 3033 - # usage on your layers.nix 3034 - {inputs, ...}: { 3035 - imports = [ 3036 - inputs.dendrix.community.vic-vix.darwin 3037 - ]; 3038 - } 3039 - ``` 3040 - 3041 - - gnome-desktop: 3042 - 3043 - vic-vix's gnome-desktop tree 3044 - 3045 - ```nix 3046 - # usage on your layers.nix 3047 - {inputs, ...}: { 3048 - imports = [ 3049 - inputs.dendrix.community.vic-vix.gnome-desktop 3050 - ]; 3051 - } 3052 - ``` 3053 - 3054 - - kde-desktop: 3055 - 3056 - vic-vix's kde-desktop tree 3057 - 3058 - ```nix 3059 - # usage on your layers.nix 3060 - {inputs, ...}: { 3061 - imports = [ 3062 - inputs.dendrix.community.vic-vix.kde-desktop 3063 - ]; 3064 - } 3065 - ``` 3066 - 3067 - - kvm-amd: 3068 - 3069 - vic-vix's kvm-amd tree 3070 - 3071 - ```nix 3072 - # usage on your layers.nix 3073 - {inputs, ...}: { 3074 - imports = [ 3075 - inputs.dendrix.community.vic-vix.kvm-amd 3076 - ]; 3077 - } 3078 - ``` 3079 - 3080 - - kvm-intel: 3081 - 3082 - vic-vix's kvm-intel tree 3083 - 3084 - ```nix 3085 - # usage on your layers.nix 3086 - {inputs, ...}: { 3087 - imports = [ 3088 - inputs.dendrix.community.vic-vix.kvm-intel 3089 - ]; 3090 - } 3091 - ``` 3092 - 3093 - - macos-keys: 3094 - 3095 - vic-vix's macos-keys tree 3096 - 3097 - ```nix 3098 - # usage on your layers.nix 3099 - {inputs, ...}: { 3100 - imports = [ 3101 - inputs.dendrix.community.vic-vix.macos-keys 3102 - ]; 3103 - } 3104 - ``` 3105 - 3106 - - nix-index: 3107 - 3108 - vic-vix's nix-index tree 3109 - 3110 - ```nix 3111 - # usage on your layers.nix 3112 - {inputs, ...}: { 3113 - imports = [ 3114 - inputs.dendrix.community.vic-vix.nix-index 3115 - ]; 3116 - } 3117 - ``` 3118 - 3119 - - nix-registry: 3120 - 3121 - vic-vix's nix-registry tree 3122 - 3123 - ```nix 3124 - # usage on your layers.nix 3125 - {inputs, ...}: { 3126 - imports = [ 3127 - inputs.dendrix.community.vic-vix.nix-registry 3128 - ]; 3129 - } 3130 - ``` 3131 - 3132 - - nix-settings: 3133 - 3134 - vic-vix's nix-settings tree 3135 - 3136 - ```nix 3137 - # usage on your layers.nix 3138 - {inputs, ...}: { 3139 - imports = [ 3140 - inputs.dendrix.community.vic-vix.nix-settings 3141 - ]; 3142 - } 3143 - ``` 3144 - 3145 - - nixos: 3146 - 3147 - vic-vix's nixos tree 3148 - 3149 - ```nix 3150 - # usage on your layers.nix 3151 - {inputs, ...}: { 3152 - imports = [ 3153 - inputs.dendrix.community.vic-vix.nixos 3154 - ]; 3155 - } 3156 - ``` 3157 - 3158 - - nvidia: 3159 - 3160 - vic-vix's nvidia tree 3161 - 3162 - ```nix 3163 - # usage on your layers.nix 3164 - {inputs, ...}: { 3165 - imports = [ 3166 - inputs.dendrix.community.vic-vix.nvidia 3167 - ]; 3168 - } 3169 - ``` 3170 - 3171 - - rdesk: 3172 - 3173 - vic-vix's rdesk tree 3174 - 3175 - ```nix 3176 - # usage on your layers.nix 3177 - {inputs, ...}: { 3178 - imports = [ 3179 - inputs.dendrix.community.vic-vix.rdesk 3180 - ]; 3181 - } 3182 - ``` 3183 - 3184 - - unfree: 3185 - 3186 - vic-vix's unfree tree 3187 - 3188 - ```nix 3189 - # usage on your layers.nix 3190 - {inputs, ...}: { 3191 - imports = [ 3192 - inputs.dendrix.community.vic-vix.unfree 3193 - ]; 3194 - } 3195 - ``` 3196 - 3197 - - vic: 3198 - 3199 - vic-vix's vic tree 3200 - 3201 - ```nix 3202 - # usage on your layers.nix 3203 - {inputs, ...}: { 3204 - imports = [ 3205 - inputs.dendrix.community.vic-vix.vic 3206 - ]; 3207 - } 3208 - ``` 3209 - 3210 - - vscode-server: 3211 - 3212 - vic-vix's vscode-server tree 3213 - 3214 - ```nix 3215 - # usage on your layers.nix 3216 - {inputs, ...}: { 3217 - imports = [ 3218 - inputs.dendrix.community.vic-vix.vscode-server 3219 - ]; 3220 - } 3221 - ``` 3222 - 3223 - - wl-broadcom: 3224 - 3225 - vic-vix's wl-broadcom tree 3226 - 3227 - ```nix 3228 - # usage on your layers.nix 3229 - {inputs, ...}: { 3230 - imports = [ 3231 - inputs.dendrix.community.vic-vix.wl-broadcom 3232 - ]; 3233 - } 3234 - ``` 3235 - 3236 - - wsl: 3237 - 3238 - vic-vix's wsl tree 3239 - 3240 - ```nix 3241 - # usage on your layers.nix 3242 - {inputs, ...}: { 3243 - imports = [ 3244 - inputs.dendrix.community.vic-vix.wsl 3245 - ]; 3246 - } 3247 - ``` 3248 - 3249 - - x86_64-darwin: 3250 - 3251 - vic-vix's x86_64-darwin tree 3252 - 3253 - ```nix 3254 - # usage on your layers.nix 3255 - {inputs, ...}: { 3256 - imports = [ 3257 - inputs.dendrix.community.vic-vix.x86_64-darwin 3258 - ]; 3259 - } 3260 - ``` 3261 - 3262 - - x86_64-linux: 3263 - 3264 - vic-vix's x86_64-linux tree 3265 - 3266 - ```nix 3267 - # usage on your layers.nix 3268 - {inputs, ...}: { 3269 - imports = [ 3270 - inputs.dendrix.community.vic-vix.x86_64-linux 3271 - ]; 3272 - } 3273 - ``` 3274 - 3275 - - xfce-desktop: 3276 - 3277 - vic-vix's xfce-desktop tree 3278 - 3279 - ```nix 3280 - # usage on your layers.nix 3281 - {inputs, ...}: { 3282 - imports = [ 3283 - inputs.dendrix.community.vic-vix.xfce-desktop 3284 - ]; 3285 - } 3286 - ``` 3287 - 3288 - </details> 3289 - 3290 - </details> 3291 - 3292 - ## Cross-repository Dendritic Aspects. 3293 - 3294 - A primary advantage of the nix dendritic pattern are aspects (aka. cross-cutting concerns). 3295 - If you browse the list of available repos above, you can see the aspects that each repo defines as [discovered](https://github.com/vic/dendrix/blob/main/dev/lib/discover-aspects.nix) by Dendrix. 3296 - 3297 - <details> 3298 - <summary> 3299 - 3300 - > Aspects are just the flake outputs: `flake.modules.<class>.<name>`. 3301 - 3302 - </summary> 3303 - 3304 - For example, some people have `flake.modules.nixos.virtualization` and `flake.modules.darwin.virtualization` and `flake.modules.homeManager.virtualization`. 3305 - 3306 - Here, `virtualization` is the aspect name, and `nixos`/`darwin`/`homeManager` are the nix configuration classes across which the `virtualization` aspect is configured. 3307 - 3308 - ```nix 3309 - # virtualization.nix 3310 - { 3311 - flake.modules.nixos.virtualization = { ... }; 3312 - flake.modules.darwin.virtualization = { ... }; 3313 - flake.modules.homeManager.virtualization = { ... }; 3314 - } 3315 - ``` 3316 - 3317 - This is the reason we say that Dendritic setups are aspect-oriented: they configure cross-cutting concerns across different module types. 3318 - 3319 - </details> 3320 - 3321 - The following is a list of aspects that are common in more than a single repository. 3322 - Our hope is that people can collaborate to find naming conventions for common aspects. 3323 - Having that we could mix configurations from different sources to enhance the same aspect. 3324 - 3325 - <details> 3326 - <summary> 3327 - TODO 3328 - </summary> 3329 - 3330 - TODO 3331 - 3332 - </details> 3333 - 3334 - ## Flags 3335 - 3336 - > Flags are a [dendrix convention](https://github.com/vic/dendrix/blob/main/dev/modules/community/_pipeline.nix) 3337 - > used as part of a file or directory name as named signals. 3338 - > Flags only exist in positive form: `+flag`. A negative `-flag` means: ignore positive `+flag` files. 3339 - 3340 - For example, if you have `ai+local.nix` and `ai+cloud.nix` files. 3341 - The aspect configured by these files is most likely `ai` but the `local` and `cloud` flags signal the vendor. 3342 - 3343 - Flags are inspired by editor configurations, like doomemacs: `(scala +lsp)`. 3344 - And are used in Dendrix only as a way to filter files on community import-trees. 3345 - For example, one could exclude all `+emacs` paths like `tree.flagged "-emacs +vim"`. 3346 - 3347 - ## Quick Start 3348 - 3349 - We provide some [templates](https://github.com/vic/dendrix/tree/main/templates) you can 3350 - use to start a new flake. 3351 - 3352 - ``` 3353 - nix flake init github:vic/dendrix#template 3354 - ``` 3355 - 3356 - Then edit your [`layers.nix`](https://github.com/vic/dendrix/tree/main/templates/default/layers.nix) file. 3357 - 3358 - ### Try it Online! 3359 - 3360 - If you are not currently a NixOS user, you can try 3361 - running an ephemereal NixOS on the web. 3362 - 3363 - - Go to [Distrosea nixos-unstable-minimal](https://distrosea.com/start/nixos-unstable-minimal/) 3364 - 3365 - Start a machine and run the following: 3366 - 3367 - ```shell 3368 - nix run .#os-switch template 3369 - 3370 - ``` 3371 - 3372 - ## Customization 3373 - 3374 - Once you have a `./modules/` directory on your flake, just add flake-parts modules following the dendritic pattern. 3375 - All files will be loaded automatically. Edit your `layers.nix` to include dendrix provided aspects you choose. 3376 - 3377 - ## Motivation 3378 - 3379 - <details> 3380 - 3381 - <summary> 3382 - 3383 - _:: long but worth read on config organization and sharing ::_ 3384 - 3385 - > tl;dr. Because even if we already have our nix infra configs accessible to the public, 3386 - > sometimes it's not that easy for newcomers to know what to pick from them. 3387 - > Small steps of courtesy can have a big and positive impact in our community. 3388 - > Having an [import-tree](https://github.com/vic/import-tree) reference to [your repository](https://github.com/vic/dendrix/blob/main/dev/npins/sources.json) imposes no cost to you, and yet if you [help document your subtrees or refine them](https://github.com/vic/dendrix/blob/main/dev/modules/community/vic-vix.nix), that helps the community even more. Your files are always in your control and you are free to accept pull-requests for your shared aspects, staying true to the sharing-spirit of opensource. 3389 - 3390 - </summary> 3391 - 3392 - One cool advantage of the [dendritic](https://github.com/mightyiam/dendritic) pattern is that _every single file_ has the same `.nix` syntax, but also the same meaning. Unlike other configuration setups where nix files can be anything: nixos, darwin, packages or home configurations. In a dendritic setup each `.nix` file has only one interpretation: a flake-module. As such, it will internally [configure many different nix config classes](https://discourse.nixos.org/t/how-do-you-structure-your-nixos-configs/65851/8). 3393 - 3394 - > This property enables _aspect-closures_ to be possible. Everything that is needed for a aspect to work is closely related in the same unit (file/directory), instead of being dispersed. 3395 - 3396 - Imagine a single `A_aspect.nix` file. Being itself a flake-module, it can internally configure modules for `nixos`, `darwin`, `homeManager` or any other configuration class that needs to be affected for `aspect-a` to work seamlesly. 3397 - 3398 - > Another unlocked property is _incremental-aspects_. Many different files can incrementally contribute to the same aspect, removing nix files or adding more do not break existing aspects, but only extend or limit its capabilites. 3399 - 3400 - Now imagine two files: `A_aspect/minimal.nix`, `A_aspect/maximal.nix`. In a dendritic setup, nor filename nor location is significant, and thus, both files can contribute to the same modules that constitute `aspect-a`, but each file is focused on different capabilities. 3401 - 3402 - Using the import-tree API one could select only minimal 3403 - capabilities. 3404 - 3405 - ```nix 3406 - shared-tree = import-tree.filter (lib.hasInfix "minimal"); 3407 - ``` 3408 - 3409 - We could also have `A_aspect/private.nix` making it contribute capabilities to our personal infra but not visible for community members. 3410 - 3411 - ```nix 3412 - shared-tree = import-tree.filterNot (lib.hasInfix "private"); 3413 - ``` 3414 - 3415 - We can also have a convention of anything inside `community` be shareable. 3416 - 3417 - ```nix 3418 - shared-tree = import-tree.filter (lib.hasInfix "community"); 3419 - ``` 3420 - 3421 - > And even provide a richer [import-tree API](https://github.com/vic/import-tree) for people 3422 - > willing to consume our shared configuration tree: 3423 - 3424 - ```nix 3425 - # provider's flake 3426 - flake.lib.shared-tree = lib.pipe inputs.import-tree [ 3427 - (self: self.addPath ./modules) 3428 - (self: self.filterNot lib.hasInfix("private")) 3429 - (self: self.filter lib.hasInfix("community")) 3430 - (self: self.addAPI { 3431 - aspect-a = self: self.filter lib.hasInfix("A_aspect"); 3432 - aspect-b = self: self.filter lib.hasInfix("B_aspect"); 3433 - minimal = self: self.filter lib.hasInfix("minimal"); 3434 - maximal = self: self.filter lib.hasInfix("maximal"); 3435 - }) 3436 - ]; 3437 - ``` 3438 - 3439 - This way people consuming our shared import-tree will not 3440 - have access to anything including `private` and only things under `community` and a couple of `minimal`, and `maximal` capability selectors. 3441 - 3442 - ```nix 3443 - # consumer's flake 3444 - imports = [ 3445 - inputs.providers-flake.lib.shared-tree.minimal.aspect-a 3446 - inputs.providers-flake.lib.shared-tree.maximal.aspect-b 3447 - ]; 3448 - ``` 3449 - 3450 - Of course this is only an example API. People and the community can comeup with better conventions on how to name things that better suit their design. 3451 - 3452 - </details> 3453 - 3454 - ## How it works 3455 - 3456 - <details> 3457 - 3458 - <summary> 3459 - 3460 - > tl;dr. By sharing subsets of community's flake-modules on this repo. 3461 - 3462 - `dendrix` provides collections of [`import-tree`](https://github.com/vic/import-tree)s from [many dendritic nix repositories](https://github.com/vic/dendrix/blob/main/dev/npins/sources.json) made available by the nix community. You can think of each import-tree like a pointer into a repository's [subdir and filters](https://github.com/vic/dendrix/tree/main/dev/modules/community) to select files within. 3463 - 3464 - This section outlines [some conventions](https://github.com/vic/dendrix/tree/main/dev/modules/community/_pipeline.nix) for people willing to opt-in on sharing substrees of their dendritic configs. 3465 - 3466 - </summary> 3467 - 3468 - In a sense, this repository is akin to [nix-community/NUR](https://github.com/nix-community/NUR) 3469 - but for flake-parts modules that can provide packages and aspects to many different nix configuration classes. 3470 - 3471 - Many dendritic repositories have a `./modules` directory from where they `import-tree` all of their nix modules. However the dendritic pattern does not impose any naming convention, it just happens most of us have used `./modules`. If you have an uncommon modules path, you can set the [`trees.default.subdir`](https://github.com/vic/dendrix/blob/main/dev/modules/community/options.nix#L59) option for your-repo ([example](https://github.com/vic/dendrix/blob/main/dev/modules/community/vic-vix.nix)). 3472 - 3473 - You can also use the [`import-tree API`](https://github.com/vic/import-tree) to provide refined subtrees or file filters for specific collections. 3474 - 3475 - A dendrix [default convention](https://github.com/vic/dendrix/blob/main/dev/modules/community/options.nix#L16) is that any path of yours having the `private` (file or directory) is not for share. 3476 - 3477 - We (as a community) still have to come up with other conventions like, how we name aspect modules. But they will araise (feel free to open an issue or discussion on this repo) as we start having _incremental aspects_ across repositories. 3478 - 3479 - Based on these community import-trees we also provide some _blessed_, configuration [layers](https://github.com/vic/dendrix/tree/main/modules/layers) maintained by the Dendrix community that people can easily enable on their own dendritic setup. 3480 - 3481 - </details> 3482 - 3483 - ## FAQ 3484 - 3485 - - Are these configurations restriced to dendritic setups? 3486 - 3487 - Yes. The reason is that using dendritic patterns allows 3488 - us to easily combine configs from many different community sources 3489 - knowing that each and every .nix file will be a flake-parts module. 3490 - 3491 - Layers (blessed presets) are always loaded by import-tree, 3492 - but _only enabled_ when you include them as part of a top-level module of yours. 5 + Editor-distributions like those for nvim/emacs provide community-driven, opinionated configurations that can be easily reused and enabled by newcomers. 3493 6 3494 - - Is dendrix a NixOS based distribution ? 7 + The `dendrix` project aims to provide the same experience: having community-managed, author-maintained and no-barrier-of-entry [setups](https://vic.github.io/dendrix/Dendrix-Layers.html) for everything that can be configured using [flake-parts modules](https://flake.parts/options/flake-parts-modules.html). 3495 8 3496 - In a way, but we still don't provide customized bootable installers. 9 + In a sense, this repository is akin to [nix-community/NUR](https://github.com/nix-community/NUR) but for flake-parts [dendritic](https://vic.github.io/dendrix/Dendritic.html) modules that can provide packages and aspects to many different nix configuration classes. 3497 10 3498 - It is more a flake-parts configurations collection that can be included 3499 - on any dendritic setup. 3500 - 3501 - - Can I contribute my _awesome Desktop_ rice? 3502 - 3503 - Sure! the best way to do that is to keep your desktop rice on your own repository. 3504 - And use this repo to add an import-tree object pointing to it. See the notes above 3505 - about contributing on `dev/npins/sources.json` and `dev/modules/community/*.nix`. 3506 - 3507 - - How are layers made? 3508 - 3509 - A layer is a _blessed_ dendritic setup, aimed to reuse aspects from the community 3510 - provided dendritic repositories. However these blessed configs might have conventions 3511 - that community repositories not necessarily follow (since our repos are mainly used 3512 - for our own infra). So it is part of this community to create discussions about how 3513 - to name things so that best practices and conventions arise around sharing and 3514 - extending known aspects. 3515 - 3516 - For example, if we had a `gaming` aspect. We would need conventions on how to name 3517 - aspect modules for gaming. And people would likely provide such dendritic configurations 3518 - on their setups. 3519 - 3520 - So, long story short, layers are community owned setups. And repos are owned by 3521 - a respective community member. 3522 - 3523 - - How about Games/AI/Devops/Security layers? 3524 - 3525 - You are right on point!, that's precisely why this project started. We also 3526 - want to provide specialized versions of NixOS focused on pre-configured security, gaming, 3527 - development setups. 3528 - 3529 - ## Contributing 3530 - 3531 - Since we all now have agreed to follow the Dendritic 3532 - pattern to organize our files, lets take a few more guidelines to make eveybody's life easier: 3533 - 3534 - - Always be nice, and have respect for others. 3535 - - Be professional and considerate we are giving our time and energy on this project as an invaluable good for others. 3536 - - Contributions are welcome as long as you also make a compromise to become maintainer for your aspect don't abandon your contribution easily. (Unmaintained files will be removed.) 3537 - - This is a community project, so as soon as your PR is merged you'll also get commit bit, however we restrict 3538 - changes to be only via PRs and require code-owners review before merge. 3539 - - Prefer linear git history, squash PRs and no merge-commit. Vic recommends working with jujutsu. 3540 - 3541 - ### Development 3542 - 3543 - We recommend to use `direnv` or anything that can load our `nix develop path:dev` environment. If you are 3544 - using direnv, we provide an `.envrc` for it. 3545 - 3546 - Upon entering the shell, you will see a menu of useful commands during development. 3547 - 3548 - ```shell 3549 - nix develop ./dev -c files # generate nix-controlled files (like this README) and format them. 3550 - nix flake check ./dev # checks all is up-to-date, community checks, and formatting 3551 - 3552 - # when adding a new repo, run npins inside of ./dev 3553 - ``` 11 + Made with <3 by [@vic](https://github.com/vic)
+11
dev/book/src/Contributing.md
··· 1 + # Contributing 2 + 3 + Since we all now have agreed to follow the Dendritic 4 + pattern to organize our files, lets take a few more guidelines to make eveybody's life easier: 5 + 6 + - Always be nice, and have respect for others. 7 + - Be professional and considerate we are giving our time and energy on this project as an invaluable good for others. 8 + - Contributions are welcome as long as you also make a compromise to become maintainer for your aspect don't abandon your contribution easily. (Unmaintained files will be removed.) 9 + - This is a community project, so as soon as your PR is merged you'll also get commit bit, however we restrict 10 + changes to be only via PRs and require code-owners review before merge. 11 + - Prefer linear git history, squash PRs and no merge-commit. Vic recommends working with jujutsu.
+182
dev/book/src/Dendritic.md
··· 1 + # Dendritic Nix 2 + 3 + [Dendritic](https://github.com/mightyiam/dendritic) is a [pattern](https://discourse.nixos.org/t/pattern-every-file-is-a-flake-parts-module/61271) for writing nix configurations based on [flake-parts](https://flake.parts)'s [`modules` option](https://flake.parts/options/flake-parts-modules.html). 4 + 5 + We say that Dendritic nix configurations are _aspect-oriented_ meaning that each nix file 6 + provides config-values for the same _aspect_ across different nix configuration classes. 7 + 8 + This is done via flake-parts' `flake.modules.<class>.<aspect>` options. 9 + 10 + Where `<class>` is a type of configuration, like [`nixos`](https://nixos.org/manual/nixos/stable/options), [`darwin`](https://nix-darwin.github.io/nix-darwin/manual/), [`homeManager`](https://home-manager.dev/manual/23.11/options.xhtml), [`nixvim`](https://nix-community.github.io/nixvim/search/), etc. 11 + 12 + And `<aspect>` is the _cross-cutting concern_ or _feature_ that is being configured across 13 + one or more of these classes. 14 + 15 + ### Example of a dendritic configuration. 16 + 17 + As an example of what a dendritic nix config looks like, suppose we want to configure ssh facilities 18 + (the `ssh` aspect) across our NixOS, Nix-darwin hosts and user homes. 19 + 20 + ```nix 21 + # modules/ssh.nix -- like every other file inside modules, this is a flake-parts module. 22 + { config, ... }: { 23 + flake.modules.nixos.ssh = { 24 + # Linux config: server, firewall-ports, etc. 25 + }; 26 + 27 + flake.modules.darwin.ssh = { 28 + # MacOS config: enable builtin ssh server, etc. 29 + }; 30 + 31 + flake.modules.homeManager.ssh = { 32 + # setup ~/.ssh/config or keys. 33 + }; 34 + 35 + perSystem = {pkgs, ...}: { 36 + # expose custom package/checks/devshells by this aspect. 37 + }; 38 + } 39 + ``` 40 + 41 + That's it. This is what Dendritic is all about. By following this configuration pattern you 42 + will notice the following advantages for your configurations. 43 + 44 + ## Denritic Advantages 45 + 46 + ### No need to use specialArgs for communicating values. 47 + 48 + A common pattern for passing values between different nix configurations types (eg between a `nixos` config and a `homeManager` one), 49 + is to use the [`specialArgs`](https://nixos.org/manual/nixos/stable/options#opt-_module.args) module argument or [`home-manager.extraSpecialArgs`](https://home-manager.dev/manual/23.11/nixos-options.xhtml#nixos-opt-home-manager.extraSpecialArgs). 50 + 51 + This is considered an _anti-pattern in dendritic setups_, since there's no need to use `specialArgs` at all. Because you can 52 + always use let bindings (or even define your own _options_ at the flake-parts level) to share values across different configuration classes. 53 + 54 + ```nix 55 + # modules/vic.nix -- a flake-parts module that configures the "vic" user aspect. 56 + let 57 + userName = "vic"; # a shared value between classes 58 + in 59 + { 60 + flake.modules.nixos.${userName} = { 61 + users.users.${userName} = { isNormalUser = true; extraGroups = [ "wheel" ]; }; 62 + }; 63 + 64 + flake.modules.darwin.${userName} = { 65 + system.primaryUser = userName; # configuring a user is different on MacOS than on NixOS. 66 + }; 67 + 68 + flake.modules.homeManager.${userName} = 69 + { pkgs, lib, ... }: 70 + { 71 + home.username = lib.mkDefault userName; 72 + home.homeDirectory = lib.mkDefault (if pkgs.stdenvNoCC.isDarwin then "/Users/${userName}" else "/home/${userName}"); 73 + home.stateVersion = lib.mkDefault "25.05"; 74 + }; 75 + } 76 + ``` 77 + 78 + ### No file organization restrictions. 79 + 80 + The dendritic pattern imposes no restrictions on how you organize or name your nix files. 81 + 82 + Unlike other nix-configuration libs/frameworks that mandate a predefined structure. In Dendritic, 83 + you are free to move or rename each file as it better suits your mental model. 84 + 85 + This is possible because: 86 + 87 + ### All nix files have the same semantic meaning. 88 + 89 + In a Dendritic setup, each `.nix` file has only one interpretation: A flake-parts module. 90 + 91 + Unlike other kinds of setup where each nix file can be a `nixos` configuration, or a `home-manager` configuration, or 92 + a package, or something entrely different, where loading a file needs you need to be sure of what kind of meaning 93 + it has. 94 + 95 + ### No manual file imports. 96 + 97 + All files being flake-parts modules, means we have no need for manually importing nix files. They can all be 98 + loaded at once into a single import. 99 + 100 + The Dendritic community commonly uses [`vic/import-tree`](https://github.com/vic/import-tree) for this. 101 + Note: import-tree ignores any file that has an `_` anywhere as part of its path. 102 + 103 + ```nix 104 + # flake.nix 105 + { 106 + inputs = { 107 + flake-parts.url = "github:hercules-ci/flake-parts"; 108 + import-tree.url = "github:vic/import-tree"; 109 + # all other inputs your flake needs, like nixpkgs. 110 + }; 111 + outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules); 112 + } 113 + ``` 114 + 115 + This is the only place you will call `import-tree` and it will load all files under `./modules` recursively. 116 + 117 + This means we can have: 118 + 119 + ### Minimal and focused flake.nix 120 + 121 + Instead of having huge `flake.nix` files with lots of nix logic inside the flake itself. 122 + It is now possible move to all nix logic into `./modules`. 123 + 124 + Your flake becomes minimal, focused on defining inputs and possibly cache, experimental-features config. 125 + 126 + And any file inside modules can contribute to flake outputs (packages/checks/osConfigurations) as needed. 127 + 128 + ```nix 129 + # modules/flake/formatter.nix 130 + { 131 + petSystem = {pkgs, ...}: { 132 + formatter = pkgs.alejandra; 133 + }; 134 + } 135 + ``` 136 + 137 + ### Feature Centric instead of Host Centric. 138 + 139 + As noted by Pol Dellaiera in [Flipping the Configuration Matrix](https://not-a-number.io/2025/refactoring-my-infrastructure-as-code-configurations/#flipping-the-configuration-matrix): 140 + 141 + > the configuration is now structured around features, not hostnames. It is a shift in the axis of composition, essentially an inversion of configuration control. What may seem like a subtle change at first has profound implications for flexibility, reuse, and maintainability. 142 + 143 + You will notice that you start naming your files around the `aspect`s (features) they define 144 + instead of where they are applied. 145 + 146 + ### Feature _Closures_ 147 + 148 + By closure we mean that if you need to look where some `feature` is provided, you only have 149 + to look at a single place: The file or directory likely named after that feature. 150 + 151 + Because a single `feature.nix` contributes to different configuration classes, it has all 152 + the information on how feature works, instead of having to look at different files for 153 + package definitions, nixos or home-manager configurations dispersed over all over the tree. 154 + 155 + ### _Incremental_ Features 156 + 157 + Since all nix files are loaded automatically. You can increment the capabilities that an 158 + existing `feature-x.nix` file has by just creating another `feature-x/advanced.nix` file. 159 + Both of them should contribute to the same aspect: `flake.modules.<class>.feature-x`, but 160 + each file focuses on the different capabilities they provide. 161 + 162 + This way, you can split `feature-x/advanced.nix` into more files. And adding or removing 163 + files from your modules (or adding an `_` for them to be ignored) has no 164 + other impact than the overall capabilities provided into your systems. 165 + 166 + This is an easy way to disable loading files while on a huge refactor. Or when some hosts 167 + or features should be decomissioned immediatly/temporarily. 168 + 169 + ### No dependencies other than flake-parts 170 + 171 + Since the dendritic pattern builds around flake-parts modules, the only dependency is 172 + `flake-parts`. You can load files using import-tree or any other means. You can also use 173 + any flake-parts based library to define your configurations, like [Unify](https://codeberg.org/quasigod/unify), 174 + as long as it exposes `flake.modules.<class>.<aspect>` attribute sets. 175 + 176 + ### Dendritic community. 177 + 178 + Last but not least. By using the dendritic pattern you open the door to defining or re-using 179 + existing non-hardware/non-user generic configurations from the community. 180 + 181 + This is the goal of the Dendrix project: To allow people share dendritic configurations and 182 + socially enhance their capabilities.
+49
dev/book/src/Dendrix-Conventions.md
··· 1 + # Dendrix conventions 2 + 3 + There are some non-mandatory conventions on Dendrix. However using them can ease integration of your repo. 4 + 5 + Some of these conventions translate as code in the [default pipe-line](https://github.com/vic/dendrix/blob/main/dev/modules/community/_pipeline.nix) used to configure each import-tree. 6 + 7 + 8 + ## Having a `modules/community` directory. 9 + 10 + By default, dendrix detects if the community repo has a `modules/community` directory. If so, _only_ that directory is scanned for aspects. So we recommend having such a directory. 11 + 12 + Otherwise the `modules/` directory will be scanned and shared. 13 + 14 + If you, however, prefer to have another structure, it is possible to define a `community-paths` [option](https://github.com/vic/dendrix/blob/main/dev/modules/community/options.nix). 15 + 16 + ## Anything `private` is not shared. 17 + 18 + Any file (even inside `modules/community`) having a `private` infix anywhere in their path is not visible to the community. 19 + 20 + This is akin to import-tree's `_` convention used for ignoring files. However `private` paths can be loaded by your flake but 21 + not on Dendrix import-trees. 22 + 23 + ## Flags 24 + 25 + Flags are a convention for allowing consumers of your repo 26 + to easily select or skip collections of files. 27 + 28 + A flag has the following form: `+flag`. A plus-sign and a name consisting of alphanumeric characters and `-` hypen. 29 + 30 + Some examples of flags are: `+lsp`, `+local-ai`, `+rust`. 31 + 32 + Flags can be present anywhere on a path: directory or file names. 33 + 34 + By using flags in your paths, it can be posible for people do 35 + things like including/excluding some capabilities: 36 + 37 + ```nix 38 + # Include anything with +vim on their path. 39 + # Exclude anything with +emacs on their path. 40 + import-tree [ 41 + dendrix.community.your-repo.flagged "-emacs +vim" 42 + ] 43 + ``` 44 + 45 + ## A clean `flake.nix` that just `import-tree ./modules` 46 + 47 + As noted in the [focused flake.nix](Dendritic.html#minimal-and-focused-flakenix), a best practice is to move all your nix logic into a nix file inside `./modules`. 48 + 49 + People usually have a `./modules/flake` for this purpose.
+32
dev/book/src/Dendrix-Layers.md
··· 1 + # Dendrix layers 2 + 3 + > Layers are an upcoming feature of the Dendrix project. 4 + 5 + Dendrix Layers are cross-repository import-trees that provide community-managed configurations. 6 + 7 + For example, if the community comes up with an `ai` aspect shared across different repos, we 8 + could have a _blessed_ layer providing both: 9 + 10 + ```nix 11 + dendrix.layers.ai = import-tree.addPath [ 12 + dendrix.community.repo-one.ai 13 + dendrix.community.repo-two.ai 14 + ]; 15 + ``` 16 + 17 + For this to be possible we first need to collaborate around configuring the `ai` feature 18 + in `repo-one` and `repo-two` so that their configurations do not depend on host/user specifics. 19 + 20 + This is quite possible, since repo-one can do the following: 21 + 22 + ```shell 23 + # only this is shared to the community 24 + ./modules/community/ai.nix 25 + 26 + # these two are not community shared. 27 + ./modules/hosts/myhost/ai.nix # augmented for host specific gpu. 28 + ./modules/users/vic/ai.nix # with user specific credentials. 29 + ``` 30 + 31 + Having Dendrix Layers will allow us to provide _opinionated_ or _batteries-included_ NixOS 32 + specific distributions. Like NixOS for AI development, NixOS for Gaming, etc.
+33
dev/book/src/Dendrix-Trees.md
··· 1 + # Dendrix import-trees 2 + 3 + Our last section ended with the following mission statement: 4 + 5 + > This is the goal of the Dendrix project: To allow people share dendritic configurations and 6 + > socially enhance their capabilities. 7 + 8 + As a first step into this goal, Dendrix [discovers](https://github.com/vic/dendrix/blob/main/dev/modules/community/discovered.nix) what `aspect`s and which nix configuration `class`es are provided by the dendritic [community repository sources](https://github.com/vic/dennix/blob/main/dev/npins/sources.json). 9 + 10 + The sidebar on the left shows a filtering UI that serves three purposes: 11 + 12 + - Document which aspects/classes are found on each repo and their locations. 13 + - Visibility on what names are used by the community for defining aspects/classes. 14 + - Allow people to re-use existing aspects by providing import-trees [to them](https://github.com/vic/dendrix/tree/main/dev/modules/community/discovered). 15 + 16 + ## Community Participation. 17 + 18 + ### Sharing re-usable parts of your Dendritic configs. 19 + 20 + You are free to send a PR adding/removing your dendritic repo into `dev/npins/sources.json`. 21 + 22 + And even if you have an uncommon directory layout, you can share [specific `community-paths`](https://github.com/vic/dendrix/blob/main/dev/modules/community/vic-vix.nix). 23 + 24 + As an example in the previous link, vic has a `modules/community` subdir, indicating that 25 + everything outside of it might not be ready for re-use by other people. perhaps because it depends on some hardware or 26 + host-specifc or user-specific settings. 27 + 28 + ### Organizing with other people around aspects. 29 + 30 + The better we organize and name our files around aspects, the better it will be to discover their intent and re-usability. 31 + 32 + It is our hope that using the UI at the left, we can discover how are community members naming our aspects 33 + or organizing our files, and we can participate in community discussions around aspect's naming conventions.
+1
dev/book/src/Dendrix.md
··· 1 + # Dendrix import-trees
+13
dev/book/src/Development.md
··· 1 + # Development 2 + 3 + We recommend to use `direnv` or anything that can load our `nix develop path:dev` environment. If you are 4 + using direnv, we provide an `.envrc` for it. 5 + 6 + Upon entering the shell, you will see a menu of useful commands during development. 7 + 8 + ```shell 9 + nix develop ./dev -c files # generate nix-controlled files (like this README) and format them. 10 + nix flake check ./dev # checks all is up-to-date, community checks, and formatting 11 + 12 + # when adding a new repo, run npins inside of ./dev 13 + ```
+45
dev/book/src/FAQ.md
··· 1 + # Frequently Asked Questions 2 + 3 + - Are these configurations restriced to dendritic setups? 4 + 5 + Yes. The reason is that using dendritic patterns allows 6 + us to easily combine configs from many different community sources 7 + knowing that each and every .nix file will be a flake-parts module. 8 + 9 + Layers (blessed presets) are always loaded by import-tree, 10 + but _only enabled_ when you include them as part of a top-level module of yours. 11 + 12 + - Is dendrix a NixOS based distribution ? 13 + 14 + In a way, but we still don't provide customized bootable installers. 15 + 16 + It is more a flake-parts configurations collection that can be included 17 + on any dendritic setup. 18 + 19 + - Can I contribute my _awesome Desktop_ rice? 20 + 21 + Sure! the best way to do that is to keep your desktop rice on your own repository. 22 + And use this repo to add an import-tree object pointing to it. See the notes above 23 + about contributing on `dev/npins/sources.json` and `dev/modules/community/*.nix`. 24 + 25 + - How are layers made? 26 + 27 + A layer is a _blessed_ dendritic setup, aimed to reuse aspects from the community 28 + provided dendritic repositories. However these blessed configs might have conventions 29 + that community repositories not necessarily follow (since our repos are mainly used 30 + for our own infra). So it is part of this community to create discussions about how 31 + to name things so that best practices and conventions arise around sharing and 32 + extending known aspects. 33 + 34 + For example, if we had a `gaming` aspect. We would need conventions on how to name 35 + aspect modules for gaming. And people would likely provide such dendritic configurations 36 + on their setups. 37 + 38 + So, long story short, layers are community owned setups. And repos are owned by 39 + a respective community member. 40 + 41 + - How about Games/AI/Devops/Security layers? 42 + 43 + You are right on point!, that's precisely why this project started. We also 44 + want to provide specialized versions of NixOS focused on pre-configured security, gaming, 45 + development setups.
+33
dev/book/src/Getting-Started.md
··· 1 + # Getting Started 2 + 3 + > Dendrix is an on-going effort. While we aim at providing blessed [Layers](Dendrix-Layers.html) to ease the life of NixOS newcomers, we are not still there. 4 + 5 + ## Quick Start 6 + 7 + We provide some [templates](https://github.com/vic/dendrix/tree/main/templates) you can 8 + use to start a new flake. 9 + 10 + ``` 11 + nix flake init github:vic/dendrix#template 12 + ``` 13 + 14 + Then edit your [`layers.nix`](https://github.com/vic/dendrix/tree/main/templates/default/layers.nix) file. 15 + 16 + ### Try it Online! 17 + 18 + If you are not currently a NixOS user, you can try 19 + running an ephemereal NixOS on the web. 20 + 21 + - Go to [Distrosea nixos-unstable-minimal](https://distrosea.com/start/nixos-unstable-minimal/) 22 + 23 + Start a machine and run the following: 24 + 25 + ```shell 26 + nix run .#os-switch template 27 + 28 + ``` 29 + 30 + ## Customization 31 + 32 + Once you have a `./modules/` directory on your flake, just add flake-parts modules following the dendritic pattern. 33 + All files will be loaded automatically. Edit your `layers.nix` to include dendrix provided aspects you choose.
+8 -2
dev/book/src/README.md
··· 1 - <!-- NOTE: EDIT THESE FILES IN dev/book. --> 1 + # Dendrix - community-driven distribution of Dendritic Nix configurations. 2 + 3 + Editor-distributions like those for nvim/emacs provide community-driven, opinionated configurations that can be easily reused and enabled by newcomers. 2 4 3 - HELLO 5 + The `dendrix` project aims to provide the same experience: having community-managed, author-maintained and no-barrier-of-entry [setups](Dendrix-Layers.html) for everything that can be configured using [flake-parts modules](https://flake.parts/options/flake-parts-modules.html). 6 + 7 + In a sense, this repository is akin to [nix-community/NUR](https://github.com/nix-community/NUR) but for flake-parts [dendritic](Dendritic.html) modules that can provide packages and aspects to many different nix configuration classes. 8 + 9 + Made with <3 by [@vic](https://github.com/vic)
-1
dev/book/src/README.txt
··· 1 - DO NOT EDIT ANY FILE IN THIS DIRECTORY.
+16
dev/book/src/SUMMARY.md
··· 1 1 # Summary 2 2 3 3 [Introduction](README.md) 4 + 5 + [Getting Started](Getting-Started.md) 6 + 7 + [Dendritic Nix](Dendritic.md) 8 + 9 + [Dendrix `import-tree`s](Dendrix-Trees.md) 10 + 11 + [Dendrix layers](Dendrix-Layers.md) 12 + 13 + [Dendrix conventions](Dendrix-Conventions.md) 14 + 15 + [Contributing](Contributing.md) 16 + 17 + [Development](Development.md) 18 + 19 + [FAQ](FAQ.md)
-4
dev/book/src/dendritic.md
··· 1 - 2 - ## Why Dendritic 3 - 4 - Because aspects
-9
dev/book/src/dendrix.md
··· 1 - 2 - ## Why Dendrix 3 - 4 - Because community 5 - 6 - ```nix 7 - This is <a href="https://github.com/vic/vix">some nix</a> code 8 - 9 - ```
-3
dev/modules/community/_pipeline.nix
··· 39 39 community 40 40 flagged 41 41 availableFlags 42 - rootPath 43 42 ; 44 43 }; 45 - 46 - rootPath = self: path: lib.pipe (self.new.addPath path) pipe-line; 47 44 48 45 # anything having private on its path is ignored. 49 46 skip-private = self: self.filterNot (lib.hasInfix "private");
+7 -8
dev/modules/community/options.nix
··· 26 26 27 27 community-dir = 28 28 if builtins.pathExists "${repo-cfg.source}/modules/community" then 29 - "modules/community" 29 + "${repo-cfg.source}/modules/community" 30 30 else 31 - "modules"; 31 + "${repo-cfg.source}/modules"; 32 32 33 - default-path = "${repo-cfg.source}/${config.community-dir}"; 34 - default-import-tree = lib.pipe (inputs.import-tree.addPath default-path) default-pipeline; 33 + default-import-tree = lib.pipe (inputs.import-tree.addPath config.community-paths) default-pipeline; 35 34 36 35 discovered-aspects = discoverAspects repo-cfg.source default-import-tree; 37 36 discovered-trees = lib.pipe discovered-aspects [ ··· 103 102 readOnly = true; 104 103 internal = true; 105 104 }; 106 - community-dir = mkOption { 107 - type = types.str; 108 - description = "repo community subdir"; 109 - default = community-dir; 105 + community-paths = mkOption { 106 + type = types.unspecified; 107 + description = "any inport-tree argument representing shared tree"; 108 + default = [ community-dir ]; 110 109 }; 111 110 }; 112 111 }
-11
dev/modules/community/quasigod-nixconfig.nix
··· 1 - { 2 - 3 - flake.community.quasigod-nixconfig = 4 - { ... }: 5 - { 6 - trees = { 7 - # default.subdir = "modules"; 8 - }; 9 - }; 10 - 11 - }
+2 -1
dev/modules/community/vic-vix.nix
··· 5 5 { config, ... }: 6 6 { 7 7 # custom directory where to share modules from. 8 - community-dir = "modules/community"; 8 + community-paths = [ "${config.source}/modules/community" ]; 9 + 9 10 trees = { 10 11 # a custom import-tree outside of shared community modules. 11 12 vic.import-tree = inputs.import-tree.addPath "${config.source}/modules/vic";
+4 -1
dev/modules/gh-pages.nix
··· 60 60 }; 61 61 } 62 62 ]; 63 - treefmt.settings.global.excludes = [ path_ ]; 63 + treefmt.settings.global.excludes = [ 64 + path_ 65 + "dev/book/**" 66 + ]; 64 67 }; 65 68 }
-182
dev/modules/repo-readme.nix
··· 1 - { lib, config, ... }: 2 - let 3 - README = lib.pipe ./../readme_template.md [ 4 - builtins.readFile 5 - (lib.replaceString "<!--:repos:-->" repos) 6 - (lib.replaceString "<!--:repos-summary:-->" repos-summary) 7 - (lib.replaceString "<!--:cross-repos-aspects:-->" cross-repos-aspects) 8 - (lib.replaceString "<!--:cross-repos-aspects-summary:-->" cross-repos-aspects-summary) 9 - ]; 10 - 11 - count = items: builtins.toString (lib.length items); 12 - 13 - repo-count = count (lib.attrNames config.flake.community); 14 - 15 - all-trees = lib.pipe config.flake.community [ 16 - (lib.attrValues) 17 - (builtins.map (x: builtins.attrValues x.trees)) 18 - (lib.flatten) 19 - ]; 20 - 21 - on-all-trees = 22 - f: 23 - lib.pipe all-trees [ 24 - (builtins.map f) 25 - (lib.flatten) 26 - (lib.unique) 27 - ]; 28 - 29 - all-nix-files = on-all-trees (t: t.import-tree.files); 30 - all-flags = on-all-trees (t: t.import-tree.availableFlags); 31 - all-aspects = on-all-trees (t: lib.attrNames t.aspects); 32 - all-classes = on-all-trees ( 33 - t: 34 - lib.pipe t.aspects [ 35 - (lib.attrValues) 36 - (lib.map lib.attrNames) 37 - (lib.flatten) 38 - (lib.filter (n: !lib.hasInfix "ERROR" n)) 39 - ] 40 - ); 41 - 42 - repos-summary = '' 43 - 44 - Dendrix knows of <b>${repo-count}</b> [dendritic repositories](https://github.com/vic/dendrix/blob/main/dev/npins/sources.json). 45 - ${count all-trees} [import-trees](https://github.com/vic/dendrix/tree/main/dev/modules/community). 46 - ${count all-flags} flags. 47 - ${count all-aspects} aspects accross ${count all-classes} different nix configuration classes. 48 - ${count all-nix-files} nix configuration files. 49 - ''; 50 - 51 - repos = lib.pipe config.flake.community [ 52 - (lib.mapAttrsToList repoReadme) 53 - (lib.concatStringsSep "\n") 54 - ]; 55 - 56 - repoHome = 57 - repo: 58 - lib.pipe repo.source.url [ 59 - (lib.replaceString ".tar.gz" "") 60 - ( 61 - if repo.source.repository.type == "Forgejo" then 62 - lib.replaceString "/archive/" "/src/commit/" 63 - else 64 - lib.replaceString "/archive/" "/tree/" 65 - ) 66 - ]; 67 - 68 - repoReadme = 69 - name: repo: 70 - let 71 - rev = builtins.substring 0 7 repo.source.revision; 72 - repo-aspects = lib.pipe repo.trees [ 73 - (lib.attrValues) 74 - (lib.map (t: t.aspects)) 75 - (lib.map (lib.attrNames)) 76 - (lib.flatten) 77 - (lib.unique) 78 - ]; 79 - repo-clases = lib.pipe repo.trees [ 80 - (lib.attrValues) 81 - (lib.map (t: t.aspects)) 82 - (lib.map (lib.attrValues)) 83 - (lib.flatten) 84 - (lib.map (lib.attrNames)) 85 - (lib.flatten) 86 - (lib.unique) 87 - ]; 88 - repo-files = lib.pipe repo.trees [ 89 - (lib.attrValues) 90 - (lib.map (t: t.import-tree.files)) 91 - (lib.flatten) 92 - (lib.unique) 93 - ]; 94 - repoSummary = '' 95 - ${name} at rev ${rev}. 96 - ${count (lib.attrNames repo.trees)} dendritic trees. 97 - <b>${count repo-aspects}</b> aspects across ${count repo-clases} nix classes. 98 - ${count repo-files} nix configuration files. 99 - ''; 100 - definedAspects = lib.pipe repo.trees [ 101 - (lib.attrValues) 102 - (lib.map (t: t.aspects)) 103 - (lib.map ( 104 - lib.mapAttrsToList ( 105 - aspect: classes: '' 106 - - <code>${aspect}</code>: ${ 107 - lib.concatStringsSep "/" (lib.map (s: "<code>" + s + "</code>") (lib.attrNames classes)) 108 - } 109 - '' 110 - ) 111 - )) 112 - (lib.flatten) 113 - (lib.concatStringsSep "\n") 114 - ]; 115 - text = '' 116 - ### [${name}](${repoHome repo} 117 - 118 - <details> 119 - <summary> 120 - 121 - ${repoSummary} 122 - </summary> 123 - 124 - [README](${repoHome repo}/README.md) 125 - 126 - <details> 127 - <summary> 128 - 129 - ##### ${name} defines <b>${count repo-aspects}</b> aspects across ${count repo-clases} nix classes. 130 - 131 - </summary> 132 - 133 - ${definedAspects} 134 - </details> 135 - 136 - ${repo.readme} 137 - 138 - ${lib.concatStringsSep "\n" (lib.mapAttrsToList (repoTree name repo) repo.trees)} 139 - </details> 140 - ''; 141 - in 142 - text; 143 - 144 - repoTree = 145 - repoName: _repo: name: tree: 146 - let 147 - text = '' 148 - - ${name}: 149 - 150 - ${tree.readme} 151 - 152 - ```nix 153 - # usage on your layers.nix 154 - {inputs, ...}: { 155 - imports = [ 156 - inputs.dendrix.community.${repoName}.${name} 157 - ]; 158 - } 159 - ``` 160 - ''; 161 - in 162 - text; 163 - 164 - cross-repos-aspects-summary = "TODO"; 165 - 166 - cross-repos-aspects = "TODO"; 167 - 168 - in 169 - { 170 - perSystem = 171 - { pkgs, ... }: 172 - { 173 - files.files = [ 174 - { 175 - path_ = "README.md"; 176 - drv = pkgs.writeText "README.md" README; 177 - } 178 - ]; 179 - 180 - treefmt.settings.global.excludes = [ "dev/book/*" ]; 181 - }; 182 - }
-287
dev/readme_template.md
··· 1 - <!-- NOTICE: edit this file at dev/readme_template.md and then run the `files` devshell command. --> 2 - 3 - # Dendrix - community-driven distribution of Dendritic Nix configurations. 4 - 5 - Editor-distributions like those for nvim/emacs provide community-driven, 6 - opinionated configurations that can be easily reused and enabled by newcomers. 7 - 8 - The `dendrix` project aims to provide the same experience: having community-managed, high-quality and no-barrier-of-entry setups for everything that can be configured using [flake-parts modules](https://flake.parts/options/flake-parts-modules.html). 9 - 10 - Read more on [Motivation](#motivation) and [How it works](#how-it-works). 11 - 12 - ## Available dendritic repos. 13 - 14 - The following is a list of known dendritic repositories from the nix community. 15 - If you want to add/remove one of them, send a pull-request that edits `dev/npins/sources.json`. 16 - Also if you want to provide custom trees, send a pull-request editing `dev/modules/community/your_repo.nix`. 17 - 18 - <details> 19 - <summary> 20 - <!--:repos-summary:--> 21 - </summary> 22 - 23 - <!--:repos:--> 24 - </details> 25 - 26 - ## Cross-repository Dendritic Aspects. 27 - 28 - A primary advantage of the nix dendritic pattern are aspects (aka. cross-cutting concerns). 29 - If you browse the list of available repos above, you can see the aspects that each repo defines as [discovered](https://github.com/vic/dendrix/blob/main/dev/lib/discover-aspects.nix) by Dendrix. 30 - 31 - <details> 32 - <summary> 33 - 34 - > Aspects are just the flake outputs: `flake.modules.<class>.<name>`. 35 - 36 - </summary> 37 - 38 - For example, some people have `flake.modules.nixos.virtualization` and `flake.modules.darwin.virtualization` and `flake.modules.homeManager.virtualization`. 39 - 40 - Here, `virtualization` is the aspect name, and `nixos`/`darwin`/`homeManager` are the nix configuration classes across which the `virtualization` aspect is configured. 41 - 42 - ```nix 43 - # virtualization.nix 44 - { 45 - flake.modules.nixos.virtualization = { ... }; 46 - flake.modules.darwin.virtualization = { ... }; 47 - flake.modules.homeManager.virtualization = { ... }; 48 - } 49 - ``` 50 - 51 - This is the reason we say that Dendritic setups are aspect-oriented: they configure cross-cutting concerns across different module types. 52 - 53 - </details> 54 - 55 - The following is a list of aspects that are common in more than a single repository. 56 - Our hope is that people can collaborate to find naming conventions for common aspects. 57 - Having that we could mix configurations from different sources to enhance the same aspect. 58 - 59 - <details> 60 - <summary> 61 - <!--:cross-repos-aspects-summary:--> 62 - </summary> 63 - 64 - <!--:cross-repos-aspects:--> 65 - 66 - </details> 67 - 68 - ## Flags 69 - 70 - > Flags are a [dendrix convention](https://github.com/vic/dendrix/blob/main/dev/modules/community/_pipeline.nix) 71 - > used as part of a file or directory name as named signals. 72 - > Flags only exist in positive form: `+flag`. A negative `-flag` means: ignore positive `+flag` files. 73 - 74 - For example, if you have `ai+local.nix` and `ai+cloud.nix` files. 75 - The aspect configured by these files is most likely `ai` but the `local` and `cloud` flags signal the vendor. 76 - 77 - Flags are inspired by editor configurations, like doomemacs: `(scala +lsp)`. 78 - And are used in Dendrix only as a way to filter files on community import-trees. 79 - For example, one could exclude all `+emacs` paths like `tree.flagged "-emacs +vim"`. 80 - 81 - ## Quick Start 82 - 83 - We provide some [templates](https://github.com/vic/dendrix/tree/main/templates) you can 84 - use to start a new flake. 85 - 86 - ``` 87 - nix flake init github:vic/dendrix#template 88 - ``` 89 - 90 - Then edit your [`layers.nix`](https://github.com/vic/dendrix/tree/main/templates/default/layers.nix) file. 91 - 92 - ### Try it Online! 93 - 94 - If you are not currently a NixOS user, you can try 95 - running an ephemereal NixOS on the web. 96 - 97 - - Go to [Distrosea nixos-unstable-minimal](https://distrosea.com/start/nixos-unstable-minimal/) 98 - 99 - Start a machine and run the following: 100 - 101 - ```shell 102 - nix run .#os-switch template 103 - 104 - ``` 105 - 106 - ## Customization 107 - 108 - Once you have a `./modules/` directory on your flake, just add flake-parts modules following the dendritic pattern. 109 - All files will be loaded automatically. Edit your `layers.nix` to include dendrix provided aspects you choose. 110 - 111 - ## Motivation 112 - 113 - <details> 114 - 115 - <summary> 116 - 117 - _:: long but worth read on config organization and sharing ::_ 118 - 119 - > tl;dr. Because even if we already have our nix infra configs accessible to the public, 120 - > sometimes it's not that easy for newcomers to know what to pick from them. 121 - > Small steps of courtesy can have a big and positive impact in our community. 122 - > Having an [import-tree](https://github.com/vic/import-tree) reference to [your repository](https://github.com/vic/dendrix/blob/main/dev/npins/sources.json) imposes no cost to you, and yet if you [help document your subtrees or refine them](https://github.com/vic/dendrix/blob/main/dev/modules/community/vic-vix.nix), that helps the community even more. Your files are always in your control and you are free to accept pull-requests for your shared aspects, staying true to the sharing-spirit of opensource. 123 - 124 - </summary> 125 - 126 - One cool advantage of the [dendritic](https://github.com/mightyiam/dendritic) pattern is that _every single file_ has the same `.nix` syntax, but also the same meaning. Unlike other configuration setups where nix files can be anything: nixos, darwin, packages or home configurations. In a dendritic setup each `.nix` file has only one interpretation: a flake-module. As such, it will internally [configure many different nix config classes](https://discourse.nixos.org/t/how-do-you-structure-your-nixos-configs/65851/8). 127 - 128 - > This property enables _aspect-closures_ to be possible. Everything that is needed for a aspect to work is closely related in the same unit (file/directory), instead of being dispersed. 129 - 130 - Imagine a single `A_aspect.nix` file. Being itself a flake-module, it can internally configure modules for `nixos`, `darwin`, `homeManager` or any other configuration class that needs to be affected for `aspect-a` to work seamlesly. 131 - 132 - > Another unlocked property is _incremental-aspects_. Many different files can incrementally contribute to the same aspect, removing nix files or adding more do not break existing aspects, but only extend or limit its capabilites. 133 - 134 - Now imagine two files: `A_aspect/minimal.nix`, `A_aspect/maximal.nix`. In a dendritic setup, nor filename nor location is significant, and thus, both files can contribute to the same modules that constitute `aspect-a`, but each file is focused on different capabilities. 135 - 136 - Using the import-tree API one could select only minimal 137 - capabilities. 138 - 139 - ```nix 140 - shared-tree = import-tree.filter (lib.hasInfix "minimal"); 141 - ``` 142 - 143 - We could also have `A_aspect/private.nix` making it contribute capabilities to our personal infra but not visible for community members. 144 - 145 - ```nix 146 - shared-tree = import-tree.filterNot (lib.hasInfix "private"); 147 - ``` 148 - 149 - We can also have a convention of anything inside `community` be shareable. 150 - 151 - ```nix 152 - shared-tree = import-tree.filter (lib.hasInfix "community"); 153 - ``` 154 - 155 - > And even provide a richer [import-tree API](https://github.com/vic/import-tree) for people 156 - > willing to consume our shared configuration tree: 157 - 158 - ```nix 159 - # provider's flake 160 - flake.lib.shared-tree = lib.pipe inputs.import-tree [ 161 - (self: self.addPath ./modules) 162 - (self: self.filterNot lib.hasInfix("private")) 163 - (self: self.filter lib.hasInfix("community")) 164 - (self: self.addAPI { 165 - aspect-a = self: self.filter lib.hasInfix("A_aspect"); 166 - aspect-b = self: self.filter lib.hasInfix("B_aspect"); 167 - minimal = self: self.filter lib.hasInfix("minimal"); 168 - maximal = self: self.filter lib.hasInfix("maximal"); 169 - }) 170 - ]; 171 - ``` 172 - 173 - This way people consuming our shared import-tree will not 174 - have access to anything including `private` and only things under `community` and a couple of `minimal`, and `maximal` capability selectors. 175 - 176 - ```nix 177 - # consumer's flake 178 - imports = [ 179 - inputs.providers-flake.lib.shared-tree.minimal.aspect-a 180 - inputs.providers-flake.lib.shared-tree.maximal.aspect-b 181 - ]; 182 - ``` 183 - 184 - Of course this is only an example API. People and the community can comeup with better conventions on how to name things that better suit their design. 185 - 186 - </details> 187 - 188 - ## How it works 189 - 190 - <details> 191 - 192 - <summary> 193 - 194 - > tl;dr. By sharing subsets of community's flake-modules on this repo. 195 - 196 - `dendrix` provides collections of [`import-tree`](https://github.com/vic/import-tree)s from [many dendritic nix repositories](https://github.com/vic/dendrix/blob/main/dev/npins/sources.json) made available by the nix community. You can think of each import-tree like a pointer into a repository's [subdir and filters](https://github.com/vic/dendrix/tree/main/dev/modules/community) to select files within. 197 - 198 - This section outlines [some conventions](https://github.com/vic/dendrix/tree/main/dev/modules/community/_pipeline.nix) for people willing to opt-in on sharing substrees of their dendritic configs. 199 - 200 - </summary> 201 - 202 - In a sense, this repository is akin to [nix-community/NUR](https://github.com/nix-community/NUR) 203 - but for flake-parts modules that can provide packages and aspects to many different nix configuration classes. 204 - 205 - Many dendritic repositories have a `./modules` directory from where they `import-tree` all of their nix modules. However the dendritic pattern does not impose any naming convention, it just happens most of us have used `./modules`. If you have an uncommon modules path, you can set the [`trees.default.subdir`](https://github.com/vic/dendrix/blob/main/dev/modules/community/options.nix#L59) option for your-repo ([example](https://github.com/vic/dendrix/blob/main/dev/modules/community/vic-vix.nix)). 206 - 207 - You can also use the [`import-tree API`](https://github.com/vic/import-tree) to provide refined subtrees or file filters for specific collections. 208 - 209 - A dendrix [default convention](https://github.com/vic/dendrix/blob/main/dev/modules/community/options.nix#L16) is that any path of yours having the `private` (file or directory) is not for share. 210 - 211 - We (as a community) still have to come up with other conventions like, how we name aspect modules. But they will araise (feel free to open an issue or discussion on this repo) as we start having _incremental aspects_ across repositories. 212 - 213 - Based on these community import-trees we also provide some _blessed_, configuration [layers](https://github.com/vic/dendrix/tree/main/modules/layers) maintained by the Dendrix community that people can easily enable on their own dendritic setup. 214 - 215 - </details> 216 - 217 - ## FAQ 218 - 219 - - Are these configurations restriced to dendritic setups? 220 - 221 - Yes. The reason is that using dendritic patterns allows 222 - us to easily combine configs from many different community sources 223 - knowing that each and every .nix file will be a flake-parts module. 224 - 225 - Layers (blessed presets) are always loaded by import-tree, 226 - but _only enabled_ when you include them as part of a top-level module of yours. 227 - 228 - - Is dendrix a NixOS based distribution ? 229 - 230 - In a way, but we still don't provide customized bootable installers. 231 - 232 - It is more a flake-parts configurations collection that can be included 233 - on any dendritic setup. 234 - 235 - - Can I contribute my _awesome Desktop_ rice? 236 - 237 - Sure! the best way to do that is to keep your desktop rice on your own repository. 238 - And use this repo to add an import-tree object pointing to it. See the notes above 239 - about contributing on `dev/npins/sources.json` and `dev/modules/community/*.nix`. 240 - 241 - - How are layers made? 242 - 243 - A layer is a _blessed_ dendritic setup, aimed to reuse aspects from the community 244 - provided dendritic repositories. However these blessed configs might have conventions 245 - that community repositories not necessarily follow (since our repos are mainly used 246 - for our own infra). So it is part of this community to create discussions about how 247 - to name things so that best practices and conventions arise around sharing and 248 - extending known aspects. 249 - 250 - For example, if we had a `gaming` aspect. We would need conventions on how to name 251 - aspect modules for gaming. And people would likely provide such dendritic configurations 252 - on their setups. 253 - 254 - So, long story short, layers are community owned setups. And repos are owned by 255 - a respective community member. 256 - 257 - - How about Games/AI/Devops/Security layers? 258 - 259 - You are right on point!, that's precisely why this project started. We also 260 - want to provide specialized versions of NixOS focused on pre-configured security, gaming, 261 - development setups. 262 - 263 - ## Contributing 264 - 265 - Since we all now have agreed to follow the Dendritic 266 - pattern to organize our files, lets take a few more guidelines to make eveybody's life easier: 267 - 268 - - Always be nice, and have respect for others. 269 - - Be professional and considerate we are giving our time and energy on this project as an invaluable good for others. 270 - - Contributions are welcome as long as you also make a compromise to become maintainer for your aspect don't abandon your contribution easily. (Unmaintained files will be removed.) 271 - - This is a community project, so as soon as your PR is merged you'll also get commit bit, however we restrict 272 - changes to be only via PRs and require code-owners review before merge. 273 - - Prefer linear git history, squash PRs and no merge-commit. Vic recommends working with jujutsu. 274 - 275 - ### Development 276 - 277 - We recommend to use `direnv` or anything that can load our `nix develop path:dev` environment. If you are 278 - using direnv, we provide an `.envrc` for it. 279 - 280 - Upon entering the shell, you will see a menu of useful commands during development. 281 - 282 - ```shell 283 - nix develop ./dev -c files # generate nix-controlled files (like this README) and format them. 284 - nix flake check ./dev # checks all is up-to-date, community checks, and formatting 285 - 286 - # when adding a new repo, run npins inside of ./dev 287 - ```