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