Import all nix files in a directory tree.
Discussions: https://oeiuwq.zulipchat.com/join/nqp26cd4kngon6mo3ncgnuap/
dendrix.oeiuwq.com/Dendritic.html
dendritic
inputs
1---
2import { LinkButton, Icon } from '@astrojs/starlight/components';
3---
4
5<section class="sponsor-card">
6 <div class="content">
7 <div class="header">
8 <Icon name="heart" size="2.5rem" class="heart-icon" />
9 <h4><code>vic/import-tree</code>?</h4>
10 </div>
11
12 <LinkButton href="https://dendritic.oeiuwq.com/sponsor" variant="primary">Become a Sponsor</LinkButton>
13
14 <p class="description">
15 import-tree is part of <a href="https://dendritic.oeiuwq.com">@vic's Dendritic Ecosystem</a> — made with love and maintained with passion.
16 </p>
17
18 <ul class="ecosystem">
19 <li><a href="https://github.com/vic/flake-aspects">flake-aspects</a></li>
20 <li><a href="https://github.com/vic/flake-file">flake-file</a></li>
21 <li><a href="https://github.com/vic/with-inputs">with-inputs</a></li>
22 <li><a href="https://github.com/vic/den">den</a></li>
23 <li><a href="https://github.com/vic/denful">denful</a></li>
24 <li><a href="https://github.com/vic/dendrix">dendrix</a></li>
25 </ul>
26
27 <LinkButton icon="github" href="https://github.com/vic?tab=repositories" variant="minimal"><code>More <strong>@vic</strong> OpenSource</code></LinkButton>
28 </div>
29</section>
30
31<style>
32 .sponsor-card {
33 border-radius: 1rem;
34 padding: 2rem 1.5rem;
35 margin: 2rem 1rem;
36 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
37 transition: all 0.4s ease;
38 max-width: 20em;
39 }
40
41 .sponsor-card:hover {
42 background: linear-gradient(135deg, #a855f7 0%, #06b6d4 100%);
43 box-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
44 transform: translateY(-2px);
45 }
46
47 .content * {
48 color: var(--sl-color-fg);
49 }
50
51 .content {
52 text-align: center;
53 }
54
55 .content:hover * {
56 color: white;
57 }
58
59 .content a:link {
60 color: inherit;
61 }
62
63 .content a.primary:link {
64 color: var(--sl-color-bg);
65 }
66
67 .content a.primary:visited {
68 color: var(--sl-color-bg);
69 }
70
71 .content a:visited {
72 color: inherit;
73 }
74
75 .header {
76 display: flex;
77 align-items: center;
78 justify-content: center;
79 gap: 0.75rem;
80 margin-bottom: 1rem;
81 }
82
83 .heart-icon {
84 animation: pulse 2s ease-in-out infinite;
85 }
86
87 @keyframes pulse {
88 0%, 100% {
89 opacity: 1;
90 }
91 50% {
92 opacity: 0.7;
93 }
94 }
95
96 h3 {
97 font-size: 1.5rem;
98 font-weight: 700;
99 margin: 0;
100 letter-spacing: -0.02em;
101 }
102
103 .description {
104 font-size: 0.95rem;
105 line-height: 1.6;
106 margin: 1rem 0 1.5rem 0;
107 opacity: 0.95;
108 }
109
110 .description a {
111 font-weight: 600;
112 text-decoration: underline;
113 text-decoration-thickness: 2px;
114 text-underline-offset: 4px;
115 }
116
117 .description a:hover {
118 opacity: 0.85;
119 }
120
121 .ecosystem {
122 list-style: none;
123 padding: 0;
124 margin: 1.5rem 0;
125 display: grid;
126 grid-template-columns: repeat(2, 1fr);
127 gap: 0.75rem;
128 font-size: 0.9rem;
129 }
130
131 .ecosystem li {
132 background: rgba(255, 255, 255, 0.15);
133 padding: 0.5rem 0.75rem;
134 border-radius: 0.5rem;
135 backdrop-filter: blur(10px);
136 }
137
138 .ecosystem a {
139 text-decoration: none;
140 font-weight: 500;
141 transition: opacity 0.2s;
142 }
143
144 .ecosystem a:hover {
145 opacity: 0.85;
146 text-decoration: underline;
147 }
148
149 .cta-button {
150 display: inline-flex;
151 align-items: center;
152 gap: 0.5rem;
153 background: rgba(255, 255, 255, 0.25);
154 padding: 0.875rem 1.75rem;
155 border-radius: 0.75rem;
156 font-weight: 600;
157 font-size: 1rem;
158 text-decoration: none;
159 border: 2px solid rgba(255, 255, 255, 0.4);
160 transition: all 0.3s ease;
161 margin-top: 1rem;
162 cursor: pointer;
163 }
164
165 .cta-button:hover {
166 background: rgba(255, 255, 255, 0.35);
167 border-color: rgba(255, 255, 255, 0.6);
168 transform: scale(1.05);
169 }
170
171 .cta-button:active {
172 transform: scale(0.98);
173 }
174</style>