···
131
131
"fenix": {
132
132
"inputs": {
133
133
"nixpkgs": [
134
134
-
"trmnl-rs",
134
134
+
"fsel",
135
135
+
"naersk",
135
136
"nixpkgs"
136
137
],
137
138
"rust-analyzer-src": "rust-analyzer-src"
138
139
},
139
140
"locked": {
141
141
+
"lastModified": 1752475459,
142
142
+
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
143
143
+
"owner": "nix-community",
144
144
+
"repo": "fenix",
145
145
+
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
146
146
+
"type": "github"
147
147
+
},
148
148
+
"original": {
149
149
+
"owner": "nix-community",
150
150
+
"repo": "fenix",
151
151
+
"type": "github"
152
152
+
}
153
153
+
},
154
154
+
"fenix_2": {
155
155
+
"inputs": {
156
156
+
"nixpkgs": [
157
157
+
"kaleidux",
158
158
+
"naersk",
159
159
+
"nixpkgs"
160
160
+
],
161
161
+
"rust-analyzer-src": "rust-analyzer-src_2"
162
162
+
},
163
163
+
"locked": {
164
164
+
"lastModified": 1752475459,
165
165
+
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
166
166
+
"owner": "nix-community",
167
167
+
"repo": "fenix",
168
168
+
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
169
169
+
"type": "github"
170
170
+
},
171
171
+
"original": {
172
172
+
"owner": "nix-community",
173
173
+
"repo": "fenix",
174
174
+
"type": "github"
175
175
+
}
176
176
+
},
177
177
+
"fenix_3": {
178
178
+
"inputs": {
179
179
+
"nixpkgs": [
180
180
+
"trmnl-rs",
181
181
+
"nixpkgs"
182
182
+
],
183
183
+
"rust-analyzer-src": "rust-analyzer-src_3"
184
184
+
},
185
185
+
"locked": {
140
186
"lastModified": 1757400094,
141
187
"narHash": "sha256-5Rcs6juMoMTaMJSR1glravl4QB9yLAFBD8s7KLi4kdQ=",
142
188
"owner": "nix-community",
···
198
244
"type": "github"
199
245
}
200
246
},
247
247
+
"flake-utils_3": {
248
248
+
"inputs": {
249
249
+
"systems": "systems_4"
250
250
+
},
251
251
+
"locked": {
252
252
+
"lastModified": 1731533236,
253
253
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
254
254
+
"owner": "numtide",
255
255
+
"repo": "flake-utils",
256
256
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
257
257
+
"type": "github"
258
258
+
},
259
259
+
"original": {
260
260
+
"owner": "numtide",
261
261
+
"repo": "flake-utils",
262
262
+
"type": "github"
263
263
+
}
264
264
+
},
265
265
+
"fsel": {
266
266
+
"inputs": {
267
267
+
"flake-utils": "flake-utils_2",
268
268
+
"naersk": "naersk",
269
269
+
"nixpkgs": [
270
270
+
"nixpkgs"
271
271
+
]
272
272
+
},
273
273
+
"locked": {
274
274
+
"lastModified": 1773279064,
275
275
+
"narHash": "sha256-BLcSfp2aNm+0oDoHbvTufBRS2XwKqbIeUOXD8t58efE=",
276
276
+
"owner": "Mjoyufull",
277
277
+
"repo": "fsel",
278
278
+
"rev": "7b38c6223eed6e509f98e066ff89f481bd1930d7",
279
279
+
"type": "github"
280
280
+
},
281
281
+
"original": {
282
282
+
"owner": "Mjoyufull",
283
283
+
"repo": "fsel",
284
284
+
"type": "github"
285
285
+
}
286
286
+
},
201
287
"home-manager": {
202
288
"inputs": {
203
289
"nixpkgs": [
···
261
347
"type": "github"
262
348
}
263
349
},
350
350
+
"kaleidux": {
351
351
+
"inputs": {
352
352
+
"naersk": "naersk_2",
353
353
+
"nixpkgs": [
354
354
+
"nixpkgs"
355
355
+
],
356
356
+
"utils": "utils"
357
357
+
},
358
358
+
"locked": {
359
359
+
"lastModified": 1771317848,
360
360
+
"narHash": "sha256-Zq2oYebRrRMsKmX+mi9qf1ywpO7Y/jZuOFyVTpdrdFY=",
361
361
+
"owner": "Mjoyufull",
362
362
+
"repo": "Kaleidux",
363
363
+
"rev": "64edb0815cbb1b4dd3055924750b5da914dfa6d6",
364
364
+
"type": "github"
365
365
+
},
366
366
+
"original": {
367
367
+
"owner": "Mjoyufull",
368
368
+
"repo": "Kaleidux",
369
369
+
"type": "github"
370
370
+
}
371
371
+
},
372
372
+
"naersk": {
373
373
+
"inputs": {
374
374
+
"fenix": "fenix",
375
375
+
"nixpkgs": "nixpkgs_3"
376
376
+
},
377
377
+
"locked": {
378
378
+
"lastModified": 1769799857,
379
379
+
"narHash": "sha256-88IFXZ7Sa1vxbz5pty0Io5qEaMQMMUPMonLa3Ls/ss4=",
380
380
+
"owner": "nix-community",
381
381
+
"repo": "naersk",
382
382
+
"rev": "9d4ed44d8b8cecdceb1d6fd76e74123d90ae6339",
383
383
+
"type": "github"
384
384
+
},
385
385
+
"original": {
386
386
+
"owner": "nix-community",
387
387
+
"repo": "naersk",
388
388
+
"type": "github"
389
389
+
}
390
390
+
},
391
391
+
"naersk_2": {
392
392
+
"inputs": {
393
393
+
"fenix": "fenix_2",
394
394
+
"nixpkgs": [
395
395
+
"kaleidux",
396
396
+
"nixpkgs"
397
397
+
]
398
398
+
},
399
399
+
"locked": {
400
400
+
"lastModified": 1763384566,
401
401
+
"narHash": "sha256-r+wgI+WvNaSdxQmqaM58lVNvJYJ16zoq+tKN20cLst4=",
402
402
+
"owner": "nix-community",
403
403
+
"repo": "naersk",
404
404
+
"rev": "d4155d6ebb70fbe2314959842f744aa7cabbbf6a",
405
405
+
"type": "github"
406
406
+
},
407
407
+
"original": {
408
408
+
"owner": "nix-community",
409
409
+
"ref": "master",
410
410
+
"repo": "naersk",
411
411
+
"type": "github"
412
412
+
}
413
413
+
},
264
414
"niri": {
265
415
"inputs": {
266
416
"niri-stable": "niri-stable",
267
417
"niri-unstable": "niri-unstable",
268
268
-
"nixpkgs": "nixpkgs_3",
418
418
+
"nixpkgs": "nixpkgs_4",
269
419
"nixpkgs-stable": "nixpkgs-stable",
270
420
"xwayland-satellite-stable": "xwayland-satellite-stable",
271
421
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
···
319
469
},
320
470
"nixarr": {
321
471
"inputs": {
322
322
-
"nixpkgs": "nixpkgs_4",
472
472
+
"nixpkgs": "nixpkgs_5",
323
473
"vpnconfinement": "vpnconfinement",
324
474
"website-builder": "website-builder"
325
475
},
···
384
534
"argononed": "argononed",
385
535
"flake-compat": "flake-compat",
386
536
"nixos-images": "nixos-images",
387
387
-
"nixpkgs": "nixpkgs_5"
537
537
+
"nixpkgs": "nixpkgs_6"
388
538
},
389
539
"locked": {
390
540
"lastModified": 1769297295,
···
466
616
},
467
617
"nixpkgs_3": {
468
618
"locked": {
619
619
+
"lastModified": 1752077645,
620
620
+
"narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
621
621
+
"owner": "NixOS",
622
622
+
"repo": "nixpkgs",
623
623
+
"rev": "be9e214982e20b8310878ac2baa063a961c1bdf6",
624
624
+
"type": "github"
625
625
+
},
626
626
+
"original": {
627
627
+
"owner": "NixOS",
628
628
+
"ref": "nixpkgs-unstable",
629
629
+
"repo": "nixpkgs",
630
630
+
"type": "github"
631
631
+
}
632
632
+
},
633
633
+
"nixpkgs_4": {
634
634
+
"locked": {
469
635
"lastModified": 1770562336,
470
636
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
471
637
"owner": "NixOS",
···
480
646
"type": "github"
481
647
}
482
648
},
483
483
-
"nixpkgs_4": {
649
649
+
"nixpkgs_5": {
484
650
"locked": {
485
651
"lastModified": 1765608474,
486
652
"narHash": "sha256-9Wx53UK0z8Di5iesJID0tS1dRKwGxI4i7tsSanOHhF0=",
···
496
662
"type": "github"
497
663
}
498
664
},
499
499
-
"nixpkgs_5": {
665
665
+
"nixpkgs_6": {
500
666
"locked": {
501
667
"lastModified": 1769296100,
502
668
"narHash": "sha256-T5VGtbz2X+waw2P1dYvLa56osxj3cNZArfa5aRBVT+s=",
···
512
678
"type": "github"
513
679
}
514
680
},
515
515
-
"nixpkgs_6": {
681
681
+
"nixpkgs_7": {
516
682
"locked": {
517
683
"lastModified": 1770562336,
518
684
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
···
551
717
"agenix": "agenix",
552
718
"catppuccin": "catppuccin",
553
719
"copyparty": "copyparty",
720
720
+
"fsel": "fsel",
554
721
"home-manager": "home-manager_2",
722
722
+
"kaleidux": "kaleidux",
555
723
"niri": "niri",
556
724
"nixarr": "nixarr",
557
725
"nixos-hardware": "nixos-hardware",
558
726
"nixos-raspberrypi": "nixos-raspberrypi",
559
559
-
"nixpkgs": "nixpkgs_6",
727
727
+
"nixpkgs": "nixpkgs_7",
560
728
"organelle-hello": "organelle-hello",
561
729
"trmnl-rs": "trmnl-rs",
562
730
"zen-browser": "zen-browser"
···
565
733
"rust-analyzer-src": {
566
734
"flake": false,
567
735
"locked": {
736
736
+
"lastModified": 1752428706,
737
737
+
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
738
738
+
"owner": "rust-lang",
739
739
+
"repo": "rust-analyzer",
740
740
+
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
741
741
+
"type": "github"
742
742
+
},
743
743
+
"original": {
744
744
+
"owner": "rust-lang",
745
745
+
"ref": "nightly",
746
746
+
"repo": "rust-analyzer",
747
747
+
"type": "github"
748
748
+
}
749
749
+
},
750
750
+
"rust-analyzer-src_2": {
751
751
+
"flake": false,
752
752
+
"locked": {
753
753
+
"lastModified": 1752428706,
754
754
+
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
755
755
+
"owner": "rust-lang",
756
756
+
"repo": "rust-analyzer",
757
757
+
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
758
758
+
"type": "github"
759
759
+
},
760
760
+
"original": {
761
761
+
"owner": "rust-lang",
762
762
+
"ref": "nightly",
763
763
+
"repo": "rust-analyzer",
764
764
+
"type": "github"
765
765
+
}
766
766
+
},
767
767
+
"rust-analyzer-src_3": {
768
768
+
"flake": false,
769
769
+
"locked": {
568
770
"lastModified": 1757362324,
569
771
"narHash": "sha256-/PAhxheUq4WBrW5i/JHzcCqK5fGWwLKdH6/Lu1tyS18=",
570
772
"owner": "rust-lang",
···
609
811
"type": "github"
610
812
}
611
813
},
814
814
+
"systems_3": {
815
815
+
"locked": {
816
816
+
"lastModified": 1681028828,
817
817
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
818
818
+
"owner": "nix-systems",
819
819
+
"repo": "default",
820
820
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
821
821
+
"type": "github"
822
822
+
},
823
823
+
"original": {
824
824
+
"owner": "nix-systems",
825
825
+
"repo": "default",
826
826
+
"type": "github"
827
827
+
}
828
828
+
},
829
829
+
"systems_4": {
830
830
+
"locked": {
831
831
+
"lastModified": 1681028828,
832
832
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
833
833
+
"owner": "nix-systems",
834
834
+
"repo": "default",
835
835
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
836
836
+
"type": "github"
837
837
+
},
838
838
+
"original": {
839
839
+
"owner": "nix-systems",
840
840
+
"repo": "default",
841
841
+
"type": "github"
842
842
+
}
843
843
+
},
612
844
"trmnl-rs": {
613
845
"inputs": {
614
846
"crane": "crane_2",
615
615
-
"fenix": "fenix",
616
616
-
"flake-utils": "flake-utils_2",
847
847
+
"fenix": "fenix_3",
848
848
+
"flake-utils": "flake-utils_3",
617
849
"nixpkgs": [
618
850
"nixpkgs"
619
851
],
···
630
862
"original": {
631
863
"owner": "seanaye",
632
864
"repo": "trmnl-rs",
865
865
+
"type": "github"
866
866
+
}
867
867
+
},
868
868
+
"utils": {
869
869
+
"inputs": {
870
870
+
"systems": "systems_3"
871
871
+
},
872
872
+
"locked": {
873
873
+
"lastModified": 1731533236,
874
874
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
875
875
+
"owner": "numtide",
876
876
+
"repo": "flake-utils",
877
877
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
878
878
+
"type": "github"
879
879
+
},
880
880
+
"original": {
881
881
+
"owner": "numtide",
882
882
+
"repo": "flake-utils",
633
883
"type": "github"
634
884
}
635
885
},
···
23
23
url = "github:ryantm/agenix";
24
24
inputs.nixpkgs.follows = "nixpkgs";
25
25
};
26
26
+
kaleidux = {
27
27
+
url = "github:Mjoyufull/Kaleidux";
28
28
+
inputs.nixpkgs.follows = "nixpkgs";
29
29
+
};
30
30
+
fsel = {
31
31
+
url = "github:Mjoyufull/fsel";
32
32
+
inputs.nixpkgs.follows = "nixpkgs";
33
33
+
};
26
34
organelle-hello = {
27
35
url = "path:/home/sean/dev/organelle-hello";
28
36
inputs.nixpkgs.follows = "nixpkgs";
···
108
108
enable = true;
109
109
control = "sufficient";
110
110
cue = true;
111
111
+
settings = {
112
112
+
origin = "pam://nixos";
113
113
+
appid = "pam://nixos";
114
114
+
};
111
115
};
112
116
security.pam.services.sudo.u2fAuth = true;
113
117
···
23
23
iotop
24
24
zellij # terminal multiplexer
25
25
alacritty
26
26
-
fuzzel # Application launcher
26
26
+
inputs.fsel.packages.${pkgs.system}.default # App launcher / fuzzy finder
27
27
bemoji # emoji picker
28
28
networkmanager_dmenu # network picker for fuzzel
29
29
quickshell # Status bar (QML-based)
30
30
-
swww # For setting wallpapers
30
30
+
inputs.kaleidux.packages.${pkgs.system}.default # Dynamic wallpaper daemon
31
31
(import ../../packages/cclip.nix { inherit pkgs; }) # Clipboard history manager
32
32
pavucontrol # GUI for PulseAudio/PipeWire volume control
33
33
playerctl # MPRIS media player control
···
118
118
};
119
119
};
120
120
binds = {
121
121
-
"Mod+d".action.spawn = "fuzzel";
121
121
+
"Mod+d".action.spawn = [
122
122
+
"alacritty"
123
123
+
"-e"
124
124
+
"fsel"
125
125
+
"--detach"
126
126
+
];
127
127
+
"Mod+c".action.spawn = [
128
128
+
"alacritty"
129
129
+
"-e"
130
130
+
"fsel"
131
131
+
"--cclip"
132
132
+
];
122
133
"Mod+e".action.spawn = "bemoji";
123
134
"Mod+n".action.spawn = "networkmanager_dmenu";
124
135
"Mod+a".action.spawn = "alacritty";
···
301
312
};
302
313
spawn-at-startup = [
303
314
{ command = [ "xwayland-satellite" ]; }
304
304
-
{ command = [ "swww-daemon" ]; }
315
315
+
{ command = [ "kaleidux-daemon" ]; }
305
316
{ command = [ "cclipd" ]; }
306
317
];
307
318
environment = {
···
317
328
"libsoup-2.74.3"
318
329
];
319
330
331
331
+
# Download wallpapers at activation time (skips dead URLs gracefully)
332
332
+
home.activation.downloadWallpapers =
333
333
+
let
334
334
+
wallpapers = import ./wallpapers.nix;
335
335
+
downloads = builtins.concatStringsSep "\n" (
336
336
+
map (wp: ''
337
337
+
if [ ! -f "$DIR/${wp.filename}" ]; then
338
338
+
echo "Downloading ${wp.filename}..."
339
339
+
${pkgs.curl}/bin/curl -fsSL -o "$DIR/${wp.filename}" ${
340
340
+
builtins.replaceStrings [ "\"" ] [ "\\\"" ] wp.url
341
341
+
} || echo "WARNING: Failed to download ${wp.filename}, skipping"
342
342
+
fi
343
343
+
'') wallpapers
344
344
+
);
345
345
+
in
346
346
+
config.lib.dag.entryAfter [ "writeBoundary" ] ''
347
347
+
DIR="${config.home.homeDirectory}/Pictures/Wallpapers"
348
348
+
mkdir -p "$DIR"
349
349
+
${downloads}
350
350
+
'';
351
351
+
352
352
+
# Kaleidux wallpaper daemon config
353
353
+
xdg.configFile."kaleidux/config.toml".text = ''
354
354
+
[global]
355
355
+
monitor-behavior = "independent"
356
356
+
video-ratio = 50
357
357
+
sorting = "loveit"
358
358
+
transition-time = 1000
359
359
+
360
360
+
[any]
361
361
+
path = "${config.home.homeDirectory}/Pictures/Wallpapers"
362
362
+
duration = "15m"
363
363
+
transition = { type = "fade" }
364
364
+
'';
365
365
+
320
366
# Quickshell status bar
321
367
xdg.configFile."quickshell/shell.qml".source = ./quickshell/shell.qml;
322
368
···
410
456
411
457
services.udiskie = {
412
458
enable = true;
413
413
-
tray = "auto";
459
459
+
tray = "never";
414
460
automount = true;
415
461
};
416
462
···
431
477
enable = true;
432
478
flavor = "frappe";
433
479
};
434
434
-
435
435
-
programs.fuzzel.enable = true;
436
480
437
481
programs.direnv.enable = true;
438
482
···
791
835
AGE-PLUGIN-YUBIKEY-1304E5QVZZD74FKSP8FMCT
792
836
'';
793
837
838
838
+
# yubikey sudo access
794
839
home.file.".config/Yubico/u2f_keys".text = ''
795
795
-
sean:6sa1fnimjshdqKgadDlgQXqSXD6qQ7eSOZneMQZNAzO2OVCViQlxAZXHVf8kDOLKQ4uzcrHMj/t3889Sqi3Dyw==,1jm0HwRmNFFRMGu/DsVrwIBZc6HyNDSlvDhwQd73f0f3KWVxHo6PdSu4OUr+7GwOAfASKGakwyyetv73463CQw==,es256,+presence
840
840
+
sean:2HY//CedY0ZSrKf57lT7abxG8+8bkPyxCfp/0HMlk/il/5W8pn4R5xLiZDcJtvL85U24h9IEIxa4CS22mpaDSA==,gcD/dpLdwvUFcGGPHS4qNsarH4lOEy1AJAT7zoC6BPlFRUYEa8DpVVKFTcvT6PotjnSHSrWWGb/f3U2k2jIOIw==,es256,+presence
796
841
'';
797
842
798
843
# Set the state version for Home Manager
···
1
1
+
# Wallpapers fetched from URLs and placed in ~/Pictures/Wallpapers
2
2
+
# Add entries as { url = "..."; filename = "name.jpg"; }
3
3
+
# Downloads happen at activation time - dead URLs are skipped gracefully.
4
4
+
# Already-downloaded files are not re-fetched.
5
5
+
[
6
6
+
# Example:
7
7
+
# {
8
8
+
# url = "https://images.unsplash.com/photo-example";
9
9
+
# filename = "mountain.jpg";
10
10
+
# }
11
11
+
{
12
12
+
url = "https://w.wallhaven.cc/full/w5/wallhaven-w58mv7.png";
13
13
+
filename = "rockets.png";
14
14
+
}
15
15
+
{
16
16
+
url = "https://w.wallhaven.cc/full/e8/wallhaven-e8y51o.png";
17
17
+
filename = "frieren.png";
18
18
+
}
19
19
+
{
20
20
+
url = "https://w.wallhaven.cc/full/xe/wallhaven-xe761z.jpg";
21
21
+
filename = "cigarette.jpg";
22
22
+
}
23
23
+
{
24
24
+
url = "https://w.wallhaven.cc/full/21/wallhaven-21d8m6.png";
25
25
+
filename = "monogatari.png";
26
26
+
}
27
27
+
{
28
28
+
url = "https://w.wallhaven.cc/full/5y/wallhaven-5y57x8.png";
29
29
+
filename = "vortex.png";
30
30
+
}
31
31
+
{
32
32
+
url = "https://w.wallhaven.cc/full/5y/wallhaven-5y5537.png";
33
33
+
filename = "car.png";
34
34
+
}
35
35
+
{
36
36
+
url = "https://w.wallhaven.cc/full/85/wallhaven-852q62.png";
37
37
+
filename = "sunset.png";
38
38
+
}
39
39
+
]