Compare commits

..

367 commits

Author SHA1 Message Date
4e7e0d2aaf
kitty: make cursor+selection white 2026-04-09 14:25:15 -04:00
6e0d0c8556
firefox: disable more ai, clear new tab page 2026-04-09 14:13:54 -04:00
0d8c7075e2
use lix 2026-04-09 12:36:56 -04:00
8f649d66e8
neovim: swap accent with whatever color it was before 2026-04-09 11:55:05 -04:00
1919c98392
neovim: switch theme to one requiring less config 2026-04-09 11:54:57 -04:00
418ef5a797
bat: use base16 theme 2026-04-09 11:07:46 -04:00
a3fd2ee27e
add ytfp (youtube search script) 2026-04-09 10:50:58 -04:00
600d3ddb51
configure fzf 2026-04-09 10:44:39 -04:00
4fb7bbe084
more boot changes 2026-04-07 11:43:56 -04:00
49937eaf99
make peach boot seamless 2026-04-05 12:00:58 -04:00
0531956b4c
add glances system monitoring 2026-04-04 15:58:00 -04:00
ef30d7507c
add local network hosts 2026-04-04 15:23:59 -04:00
166cb87306
peach: make boot logos seamless 2026-04-04 15:23:42 -04:00
7e6a77501c
add sops alien host key 2026-04-03 16:12:30 -04:00
330087d4ff
add sops-nix 2026-04-03 10:30:18 -04:00
fab570dd29
many changes: prepare to allow multiple users 2026-04-02 19:36:49 -04:00
c31864133e
alien: add some windows compat programs 2026-04-02 19:17:01 -04:00
ee25c3faf1
shorten system/tailscale 2026-03-26 13:40:26 -04:00
d5bd220838
update flake 2026-03-26 13:37:10 -04:00
dbc99ec132
alien: configure proton vars and add steam big picture entry 2026-03-26 11:25:07 -04:00
4baab41f2c
use stable openmw 2026-03-26 11:24:34 -04:00
50e1adbbf5
add dearrow firefox extension 2026-03-26 11:24:18 -04:00
d427471309
remove copilot from neovim 2026-03-23 19:02:36 -04:00
5a0d1fa6c8
add dolphin emu 2026-03-23 09:06:01 -04:00
d7074bec8f
add comments and more settings to spotifyd 2026-03-20 15:19:52 -04:00
f813e3853b
update flake 2026-03-20 14:51:02 -04:00
0fc6174d47
refactor widevine 2026-03-16 17:18:51 -04:00
42005cb380
remove custom gamescope & bottles 2026-03-16 17:07:56 -04:00
92d44f4419
update flake 2026-03-16 17:01:03 -04:00
4c7d54629a
changes to gamescope 2026-03-16 12:05:19 -04:00
3c83c0a928
use noctalia's new blur support 2026-03-11 15:13:33 -04:00
476538c4cb
niri: disable xray, make fuzzel transparent 2026-03-11 13:38:17 -04:00
e9e0cc6624
remove hyprland 2026-03-11 13:25:27 -04:00
2b4acb3dd9
remove plasma 2026-03-11 13:24:26 -04:00
63b568c914
generate man caches again 2026-03-09 21:50:44 -04:00
46cb66802f
update flake 2026-03-09 21:49:25 -04:00
30419caa35
remove base16-discord 2026-03-09 21:47:14 -04:00
185963a9c5
fix bibata cursor position ??? 2026-03-09 21:38:27 -04:00
27c26f4ef7
update apple-silicon 2026-03-09 21:09:15 -04:00
95f11b1bc7
changes 2026-03-09 11:24:58 -04:00
28bffa0b68
alien: add factorio server 2026-03-08 10:16:46 -04:00
903cc34632
terminal refactor, move packages to default, inline btop theme 2026-03-05 21:41:12 -05:00
b61c42aeba
turn home/default.nix into skeleton, configure git 2026-03-05 10:22:41 -05:00
984cff894e
kanagawa-dragon -> materiak-dark 2026-03-04 13:44:26 -05:00
1e5b22274a
move ananicy to systemwide 2026-03-03 23:22:53 -05:00
7f8a4c443f
add tinted bibata cursors 2026-03-03 20:40:48 -05:00
60cc37b97a
switch to swaylock-effects 2026-03-03 18:05:01 -05:00
bfe8141a86
remove sunshine and gamescope nested session 2026-03-03 17:49:52 -05:00
3bad9cb4a7
move mimeapps to home/services, add handler for kitty 2026-03-03 17:45:40 -05:00
bfb60a0ff6
disable kde, enable autologin with swaylock 2026-03-03 17:32:22 -05:00
ee71554e6f
fix noctalia battery widget 2026-03-03 16:19:52 -05:00
f258beb032
use gamescope for all systems 2026-03-03 16:19:44 -05:00
51f28a74d6
update niri 2026-03-03 13:05:05 -05:00
bd35a64a27
disable qbittorrent 2026-03-03 12:31:10 -05:00
684a6eea14
remove spicetify 2026-03-02 18:04:28 -05:00
628166f8f0
disable discord 2026-03-02 13:46:28 -05:00
53c2df23d0
switch icon theme to adwaita 2026-03-02 13:46:10 -05:00
3e61bdcd8b
disable hyprland for now 2026-03-01 19:48:40 -05:00
dc69c8e6f6
wip: add hyprland 2026-02-28 12:41:55 -05:00
cb394d1634
drop later: calibre is currently broken 2026-02-28 11:53:15 -05:00
22ff823804
update niri, rename openmw, remove cat-discord, refactor flake inputs 2026-02-28 11:40:56 -05:00
813840b6cc
remove aerothemeplasma 2026-02-27 16:43:55 -05:00
94bdffcf2b
update kernels 2026-02-27 14:24:56 -05:00
bdd356790c
remove discord font override, pnevma -> banana-blueberry 2026-02-27 14:20:50 -05:00
9b15e8df5b
update niri 2026-02-26 19:42:08 -05:00
df7026b59e
add obs 2026-02-26 16:34:23 -05:00
e554c3b752
unfloat firefox picture-in-picture 2026-02-25 13:54:21 -05:00
299b90d1f2
reduce dependence on noctalia ipc 2026-02-25 13:47:21 -05:00
50b664d46b
add mute and toggle opacity keys to niri 2026-02-25 12:28:42 -05:00
8d8943977f
edit noctalia systemd service 2026-02-25 12:28:24 -05:00
9b2d9cfedb
move macbook display to its home/hosts 2026-02-24 11:16:50 -05:00
ca3d16bed7
changes to niri & firefox 2026-02-23 18:43:22 -05:00
7487cd0a7a
peach -> hopscotch theme 2026-02-23 16:30:44 -05:00
7b31387d3c
change niri and noctalia opacities 2026-02-22 16:27:15 -05:00
6a8af8942b
fix VM 2026-02-22 13:02:46 -05:00
14eb4fd425
colorize wallpaper 2026-02-22 12:17:46 -05:00
c5426c573a
switch from awww to wbg, fight over? 2026-02-22 11:54:32 -05:00
b7a580ca5c
reformat niri 2026-02-22 11:49:11 -05:00
c6ca2cccae
wallpaper updates in prep to switch to wbg 2026-02-22 11:48:53 -05:00
15d6d34ef7
refactor session vars 2026-02-21 20:00:16 -05:00
b91bf4779c
add niri blur 2026-02-21 09:58:07 -05:00
1ecf9fa51a
make systemd services more robust 2026-02-21 09:48:03 -05:00
63b96ffd43
peach: frappe -> mocha 2026-02-20 22:01:49 -05:00
05b2f188f5
switch from mpvpaper to awww, refactor wallpaper 2026-02-20 21:56:56 -05:00
f8bec21820
fix: wallpaper aspect ratio 2026-02-20 18:30:49 -05:00
af13cb972a
add torrenting config 2026-02-20 16:44:06 -05:00
00778aadbb
move searxng to port 5364 2026-02-20 16:43:31 -05:00
d92a7428c7
switch from wpaperd to mpvpaper 2026-02-20 14:56:55 -05:00
5a4e06d465
use nixpkgs-unstable again 2026-02-19 13:12:38 -05:00
435a46ac0e
lock tt-schemes to good catppuccin version 2026-02-19 11:44:48 -05:00
18f33e6b8f
remove riff for now 2026-02-19 11:43:12 -05:00
bc73ba1721
change searxng weights 2026-02-19 11:34:13 -05:00
4f00eac45d
update kitty theme 2026-02-19 11:34:00 -05:00
ab17e1f300
use base16 for fish 2026-02-19 11:30:42 -05:00
57101322bd
redo neovim theme 2026-02-19 11:08:42 -05:00
236a4833f9
fix cachyos kernel cache 2026-02-18 13:49:50 -05:00
9705e9f47c
add aerothemeplasma 2026-02-17 19:44:10 -05:00
a381fd79a9
aaa 2026-02-16 11:19:04 -05:00
d114f30429
update openmw 2026-02-13 13:23:52 -05:00
0b2734b053
improve firefox theme 2026-02-12 22:27:08 -05:00
15d45f9c49
add git repo to bookmarks 2026-02-12 22:04:21 -05:00
7a6fbff426
aaa 2026-02-11 21:12:00 -05:00
840e3e1398
fix apple-silicon not building 2026-02-09 09:09:46 -05:00
5b0df97764
fix mpv accent color 2026-02-09 20:44:02 -05:00
2c18755ee7
switch back to firefox and use searxng 2026-02-09 09:47:58 -05:00
c32c8fcc50
set fuzzel icons to colloid 2026-02-09 09:47:30 -05:00
5ec404194a
refactor noctalia 2026-02-09 09:03:55 -05:00
a2b7ab0444
add power profiles daemon 2026-02-09 00:01:42 -05:00
a5fd0bf597
fix accents 2026-02-08 21:32:44 -05:00
94c1f574cb
changes 2026-02-08 18:15:27 -05:00
b7c561136b
configure dconf 2026-02-07 17:49:17 -05:00
452b03f6f9
add niri shadow 2026-02-07 17:05:34 -05:00
7784a952a9
add more default apps 2026-02-07 15:46:08 -05:00
64256689f2
alien: add gamemode and proton-ge 2026-02-07 13:22:06 -05:00
53f864d037
fix xwayland in niri 2026-02-07 13:21:53 -05:00
c2f01cf31d
update openmw 2026-02-06 22:00:45 -05:00
7e322b21f8
changes to niri/noctalia, add fuzzel 2026-02-06 21:49:13 -05:00
fcd82c39b5
handle default apps with xdg 2026-02-06 14:05:07 -05:00
637cdfe16e
alien: switch to stable kernel+nvidia, everywhere: add chromium 2026-02-06 13:59:51 -05:00
a26f9784b3
add vintagestory 1.21.4 2026-02-06 13:40:51 -05:00
7bc2a3370b
update apple-silicon flake 2026-02-05 14:06:51 -05:00
73f27bda56
changes 2026-02-05 14:01:03 -05:00
0acdd9936a
disable forced flag in noctalia night light 2026-02-02 10:33:36 -05:00
ccc140beea
alien: re-enable ddc 2026-02-01 19:38:21 -05:00
53df4ce2c3
alien: fix gamescope in steam 2026-02-01 19:37:59 -05:00
e26702b83d
changes 2026-02-01 10:56:22 -05:00
c384d4a44c
move pinentry package to system-declaration 2026-01-30 15:20:39 -05:00
b59dc3c933
add umask=0077 to boot partitions 2026-01-30 15:20:25 -05:00
6e903422bb
make niri resizing more precise 2026-01-30 13:38:46 -05:00
53d35f6349
add lazy{git,sql} and neovim autocomplete 2026-01-30 13:38:17 -05:00
94991e6ad7
use home-manager mpv config 2026-01-30 13:28:41 -05:00
03cfc3ab73
peach: refactor hardwarre 2026-01-29 20:49:07 -05:00
b8c4831a4c
add html to files handled by prettier in neovim 2026-01-29 20:20:45 -05:00
141f7e28e6
set gpg pinentry to curses 2026-01-29 20:20:07 -05:00
4eb7321460
alien: adjust hardware setup 2026-01-29 20:19:50 -05:00
69a1bf179f
switch up nixpkgs decs 2026-01-29 20:25:42 -05:00
dda84d948c
alien: add hard drives in raid0 2026-01-29 13:09:39 -05:00
81cca7b7bd
changes 2026-01-29 08:52:21 -05:00
567de5ca7d
update flake 2026-01-28 08:46:52 -05:00
0374b37e55
updates for peach reinstall 2026-01-28 00:04:13 -05:00
2a7d450284
update flake 2026-01-26 15:41:31 -05:00
e617b539e4
switch to limine boot 2026-01-25 13:42:22 -05:00
d1b4a4c179
re-add catppuccin discord 2026-01-25 13:41:23 -05:00
f271f86d15
changes 2026-01-24 12:32:53 -05:00
0368b5ff69
refactor wallpaper 2026-01-24 01:43:15 -05:00
16cdb91f7d
add niri blur 2026-01-24 01:43:03 -05:00
a66c88c379
switch to unstable 2026-01-22 12:40:17 -05:00
fb18ff7455
switch to base16 project-wide 2026-01-21 14:04:21 -05:00
b46e8dbb37
changes 2026-01-21 10:07:43 -05:00
ec8c0bea85
add spotify: riff 2026-01-20 22:50:30 -05:00
565d248c71
add prowlarr stack 2026-01-20 19:57:32 -05:00
2952135ab1
switch peach back to mocha/peach 2026-01-20 19:57:21 -05:00
2f5f16ec1c
update niri config 2026-01-20 19:57:02 -05:00
62032eab6d
switch back to nixfmt 2026-01-19 22:27:28 -05:00
6d30e0a9f5
move openmw to overlay.nix 2026-01-19 21:57:56 -05:00
ac2399c9aa
wallpaper: use wpaperd 2026-01-19 14:34:26 -05:00
963fe175cd
disable kde for now 2026-01-19 13:47:24 -05:00
72a9b9e892
use upstream noctalia-shell theming 2026-01-19 13:30:34 -05:00
e228035134
refactor home/tiling
refactor home/terminal

refactor home/apps

refactor home/services

refactor home/games
2026-01-19 12:40:30 -05:00
c241155b93
update niri config 2026-01-19 12:35:29 -05:00
ca7d6de714
update flake 2026-01-17 15:10:11 -05:00
02a3d5ae44
add git aliases, remove redundant line in catppuccin-discord 2026-01-16 12:03:35 -05:00
7c4e07af40
move custom noctalia shell to packages/ 2026-01-16 11:18:25 -05:00
4d1e348f38
revert to pure sddm & peach: add ddc support 2026-01-16 11:03:50 -05:00
687c61c4b6
get rid of mkSource 2026-01-16 10:00:31 -05:00
b381e1785d
move all url fetches into main flake 2026-01-15 22:39:47 -05:00
61799a275e
remove altserver 2026-01-15 22:21:08 -05:00
9c4d353ef5
changes 2026-01-15 18:32:50 -05:00
59c15a65ad
add custom openmw 2026-01-15 18:08:10 -05:00
9ab5a2ce66
update flake 2026-01-15 17:18:19 -05:00
255745d4a3
switch to asahi kernel overlay 2026-01-15 17:16:55 -05:00
11a8f3e009
changes to niri 2026-01-15 17:06:17 -05:00
fdda29ecb9
wip: altserver from source 2026-01-15 16:27:18 -05:00
26899f676f
add custom altserver package 2026-01-15 12:46:01 -05:00
d9a219fa10
avoid regenerating man cache for every rebuild 2026-01-15 11:42:28 -05:00
7129246178
configure bat 2026-01-15 11:33:33 -05:00
620a906c3e
changes to niri 2026-01-15 11:33:14 -05:00
b3b2cddabe
fix spotifyd volume & remove unecessary catppuccin cursors 2026-01-15 11:32:24 -05:00
5b736e0248
move hostname dec to flake 2026-01-15 11:31:50 -05:00
719ec8949c
switch to librewolf & finish its theme 2026-01-15 09:21:06 -05:00
730f7fbceb
various catppuccin changes 2026-01-14 16:54:50 -05:00
766115ee4b
misc changes 2026-01-14 15:48:07 -05:00
9ef9476f80
configure firefoxpwa 2026-01-14 14:50:25 -05:00
0913501ba3
write kitty's color theme ourselves 2026-01-14 12:38:57 -05:00
0c1cab042c
peach: update fairydust to 6.18.4 2026-01-14 12:11:45 -05:00
ebc0421b21
use sddm for alien and gdm for peach (fairydust problem) 2026-01-14 11:58:34 -05:00
390f164d4a
asahi: switch to fairydust kernel, alien: switch to vanilla kernel 2026-01-14 11:50:02 -05:00
225c73dd43
remove v4l2loopback 2026-01-13 20:04:40 -05:00
02aba5b7c1
massive structural changes 2026-01-13 14:46:30 -05:00
5f7200bf6b
add unstable nixpkgs 2026-01-13 13:11:31 -05:00
8c6a7296f5
changes 2026-01-11 15:23:27 -05:00
0d7f0ef4dc
remove spotifyd overlay 2026-01-11 15:15:41 -05:00
077989a154
changes 2026-01-09 15:04:51 -05:00
cc5d8acf32
pin to 25.11 2026-01-08 14:59:26 -05:00
b4de545e03
update flake 2026-01-07 20:37:02 -05:00
0fe2dff27c
changes 2026-01-07 19:41:09 -05:00
a40d9a0b86
refactor gtk and qt themes 2026-01-07 14:04:41 -05:00
6e2f381a6b
ugh gtk 2026-01-07 13:44:43 -05:00
b3aa736113
update terminal 2026-01-07 13:23:11 -05:00
9d91f0dba4
finally fix gtk3 theme and home-manager split from system 2026-01-06 14:07:05 -05:00
6da37f70b3
update fish prompt 2026-01-06 12:50:26 -05:00
f6f8af69c6
add more VM configs 2026-01-06 12:26:05 -05:00
f6dbc88abb
make vm architecture agnostic 2026-01-06 11:03:26 -05:00
a6ddd527d4
move tailscale setting to its proper place 2026-01-05 17:48:23 -05:00
fcd9e04432
update flake, changes 2026-01-03 14:55:42 -05:00
6aa4fe8d09
update flake 2025-12-30 20:48:59 -05:00
7b3da66748
use noctalia ipc for brightness 2025-12-29 19:21:46 -05:00
d3665d35c1
update neovim 2025-12-28 15:40:34 -05:00
bb8af61737
alien: remove games 2025-12-27 08:25:33 -05:00
36f85a49dd
add nixd to neovim 2025-12-27 08:15:07 -05:00
63d7ffc2fc
update niri and keybinds 2025-12-27 08:14:04 -05:00
28043aded9
format with alejandra 2025-12-24 11:29:41 -05:00
9915af6522
update flake 2025-12-24 10:38:14 -05:00
a2beaca5f9
update flake 2025-12-19 13:07:24 -05:00
2207d0ca62
switch to helium from nur 2025-12-19 13:05:41 -05:00
1666d20a66
spin off games folder 2025-12-19 12:54:45 -05:00
1faa92d85b
add ssh pubkey 2025-12-18 11:53:14 -05:00
db11319668
alien: remove autologin 2025-12-18 10:50:27 -05:00
06c8c267e6
modify font vars and add emojis 2025-12-18 10:49:43 -05:00
433d976629
wip: update firefox theme 2025-12-18 10:49:20 -05:00
92614f1c05
wip: fix gtk, qt themes 2025-12-17 21:21:20 -05:00
24b57f18df
attempt to fix wallpaper applying with noctalia 2025-12-17 15:35:08 -05:00
e08062939f
update flake 2025-12-17 15:33:57 -05:00
d7210506a9
alien: fix ddc again 2025-12-17 15:08:14 -05:00
f1810eb104
fix discord catppuccin theme packaging 2025-12-17 12:20:17 -05:00
a3d91c2d46
remove teal button hover in noctalia 2025-12-17 11:38:30 -05:00
e2912337ab
remove old tiling configs 2025-12-17 11:08:25 -05:00
65be83623e
fix nixvim formatters 2025-12-17 11:03:34 -05:00
e18d4b2770
nix-native config for discord/vesktop 2025-12-17 10:55:13 -05:00
10dc026185
updates to firefox 2025-12-16 11:20:12 -05:00
2201b838bf
add spotify webapp 2025-12-15 21:22:46 -05:00
db416ee93a
update kitty 2025-12-15 16:15:20 -05:00
78b9c84e62
alien: enable and use i2c and ddcutil 2025-12-15 15:25:15 -05:00
8eb28c23ee
alien: use cachyos kernel 2025-12-15 15:11:10 -05:00
88285e396f
alien: add gamescope 2025-12-15 14:36:26 -05:00
3431f28102
alien: configure 4k dp monitor 2025-12-15 12:55:38 -05:00
9980c7fa8e
changes, add mpv 2025-12-14 17:53:34 -05:00
644c291b69
go to by-label for peach 2025-12-14 15:38:43 -05:00
dc8d6c3db3
modify structure 2025-12-14 15:35:13 -05:00
86f63580fc
fix firefox widevine 2025-12-14 15:23:45 -05:00
71a0139aaf
use colloid gtk theme 2025-12-14 13:55:15 -05:00
94930a13b8
use upstream equivalent of linux-6.17-11 declaration 2025-12-14 13:09:51 -05:00
32ccf53258
updates to qt theming 2025-12-14 13:09:27 -05:00
6ff58e0ae6
other mesa fix didn't work 2025-12-14 12:31:53 -05:00
1f4a269d40
set up 26.05 home manager qt config 2025-12-14 12:31:45 -05:00
2932d8a443
rebase to unstable
update lock (12/15/2025)
2025-12-14 10:38:46 -05:00
61eb9ef02c
changes to niri 2025-12-14 10:36:02 -05:00
7772bb6b67
fix cursors 2025-12-14 10:13:58 -05:00
7d3236a75f
use noctalia for wallpaper 2025-12-14 03:00:53 -05:00
fe82f49c7d
fix niri overlay 2025-12-14 02:01:59 -05:00
6641cfac30
many changes 2025-12-14 00:38:59 -05:00
f513a28414
fix asahi niri bug 2025-12-13 23:57:04 -05:00
39bcaddfeb
limit amount of configurations 2025-12-13 23:56:38 -05:00
362df45987
fully remove flavor and accent-specific catppuccin configs 2025-12-13 22:49:47 -05:00
679b37b1ea
rebase flake back to 25.11/rolling 2025-12-13 21:39:18 -05:00
229e201897
switch niri config to nix format 2025-12-13 21:31:54 -05:00
a305327dc5
add bing wallpaper for niri 2025-12-13 19:44:24 -05:00
9ee186f340
add noctalia 2025-12-13 13:48:33 -05:00
fcac084248
further changes to niri 2025-12-13 13:43:00 -05:00
a728e3b0eb
if it ain't broke 2025-12-13 13:09:33 -05:00
d94bd6d7d0
redo tiling theming 2025-12-13 12:54:44 -05:00
f3648ea211
update flake and disable main catppuccin 2025-12-13 12:35:11 -05:00
53973bbfb1
updates to tiling 2025-12-13 12:09:17 -05:00
8a7dd224f9
updates 2025-12-12 13:23:24 -05:00
7d9fc767db
updates to tiling and neovim 2025-12-11 22:26:19 -05:00
7e17ef312d
updates 2025-12-08 12:18:05 -05:00
a82e6b789f
switch vm to by-label 2025-12-04 15:03:03 -05:00
f35d65f94d
add sunshine/moonlight streaming 2025-12-04 13:39:41 -05:00
bd6c1d60ae
changes 2025-12-04 12:57:22 -05:00
c9f757e4bd
modify fish, kitty and neovim 2025-12-04 12:40:08 -05:00
20225b4295
pin flake to stable 25.11 2025-12-03 16:49:54 -05:00
f00a845f2c
remove catppuccin window decorations 2025-12-03 16:46:55 -05:00
373f1b85cc
make sure widevine-firefox is only applied to aarch64 2025-12-03 16:28:25 -05:00
559df9da6b
changes 2025-12-03 16:19:39 -05:00
0cd61c0a9d
add bitwarden 2025-12-03 13:28:11 -05:00
fb429f8293
changes 2025-12-03 11:04:34 -05:00
2bfae6b6c1
pin flake to unstable 2025-12-02 18:21:51 -05:00
3751597ca2
more firefox changes 2025-12-02 16:03:32 -05:00
c62024f426
update helium 2025-12-02 14:07:10 -05:00
18b1d057c0
various updates to firefox 2025-12-02 12:09:46 -05:00
e1f8d9d466
update fish prompt 2025-12-02 09:53:47 -05:00
68049b7893
switch vm to parallels 2025-12-01 20:27:42 -05:00
ec0108af66
add calibre 2025-12-01 19:34:30 -05:00
d437c762fd
add spotifyd 2025-12-01 15:59:05 -05:00
27d3704a6a
fix mesa 25.3 regression 2025-12-01 14:36:31 -05:00
f75527e426
add java again 2025-12-01 14:36:31 -05:00
a00ffd43b9
update fish prompt 2025-12-01 13:23:20 -05:00
37bbb9695d
switch back to upstream prismlauncher 2025-12-01 13:09:44 -05:00
01b07aa0ff
switch back to upstream strawberry 2025-12-01 13:08:45 -05:00
365a03bad6
switch back to rolling 2025-12-01 12:47:12 -05:00
7e657cddc1
add aarch64 vm 2025-12-01 12:23:07 -05:00
9a381083f1
changes 2025-11-30 15:27:45 -05:00
cb9e4508e6
add daggerfall and zelda 2025-11-29 12:25:01 -05:00
be8e5e6407
add hash for new helium 2025-11-24 09:38:05 -05:00
1ff39e94b6
add compose2nix to alien 2025-11-24 09:36:32 -05:00
38e4f2320b
fix helium widevine x86_64 2025-11-24 09:32:57 -05:00
61e020288c
switch noto to nerd font variant 2025-11-23 16:39:19 -05:00
b977829277
changes to nvim and kde 2025-11-23 13:25:59 -05:00
c2ab4f76cc
wip: add niri wm 2025-11-23 13:13:32 -05:00
278f87f4c7
use newer tag for prism-launcher 2025-11-23 10:24:35 -05:00
e0ce786646
update plasma 2025-11-23 10:02:55 -05:00
6693299535
improve home-manager catppuccin 2025-11-22 15:22:12 -05:00
4f15e4623c
update fish 2025-11-22 13:16:23 -05:00
f2610a0432
mitigate mesa 25.3 issue 2025-11-21 10:39:04 -05:00
7ca285280e
update flake.lock 2025-11-21 10:36:34 -05:00
7361a02755
changes 2025-11-21 09:49:32 -05:00
82a65fab84
update systemd 2025-11-21 09:48:07 -05:00
ef0ac2dab4
update helium 2025-11-19 20:54:57 -05:00
8eeb0669e5
update vscode 2025-11-19 14:36:10 -05:00
94cf39da75
wip: aarch64 widevine for helium 2025-11-19 13:51:39 -05:00
69b7fb4cec
add binfmt emulation 2025-11-18 16:53:32 -05:00
d87b0b45cd
update strawberry and lock its commit 2025-11-18 11:43:15 -05:00
26977f99d8
update flake.lock 2025-11-18 11:16:01 -05:00
db238bda7a
wip: add vscode 2025-11-18 11:03:56 -05:00
88c4990578
update helium 2025-11-17 10:09:56 -05:00
f7f4061085
add virtualization 2025-11-14 09:47:05 -05:00
42651d51c0
fix firmware directory 2025-11-14 08:53:43 -05:00
227a48500e
add rc and caching for rclone 2025-11-13 23:27:02 -05:00
4b1245fea3
fix and update rclone 2025-11-13 22:28:35 -05:00
b3b0c86d3e
update kitty 2025-11-13 22:32:16 -05:00
24961c4333
add btop and update kitty 2025-11-13 21:36:37 -05:00
7d86fc8027
fix helium gsettings warning 2025-11-13 20:18:07 -05:00
fdbfd8d6a6
remove firefox from taskbar 2025-11-13 19:47:27 -05:00
1b5af61002
fix pip rule for chromium browsers 2025-11-13 19:10:30 -05:00
a7a25b1d7b
switch helium-browser to non-appimage 2025-11-13 17:54:50 -05:00
7dba6d3bf4
wip: aarch64 widevine for helium 2025-11-13 17:00:09 -05:00
c52381a6d0
fix pwas for firefox 2025-11-13 16:04:54 -05:00
2a541c3504
edit helium package 2025-11-13 16:01:41 -05:00
2c4481ac72
fix firefox text 2025-11-13 15:50:09 -05:00
f1a03a7f5f
fix rclone 2025-11-13 15:09:03 -05:00
4e1e0edfb5
update flake.lock 2025-11-13 14:54:14 -05:00
ec7197316a
finish current refactor 2025-11-13 14:50:12 -05:00
c11f713e34
firefox refactor 2025-11-13 13:41:00 -05:00
5b648d9784
wip: refactor structure 2025-11-13 11:29:01 -05:00
32ab27ac62
add helium browser 2025-11-13 10:04:30 -05:00
8c1b135dbc
changes 2025-11-12 16:36:45 -05:00
1abf84fca2
add synology mount 2025-11-12 13:30:49 -05:00
c5c9789c6a
autostart input-leap 2025-11-12 11:09:56 -05:00
56a3a55239
add autologin for alien 2025-11-12 10:54:17 -05:00
a0181c5e0b
aaa 2025-11-11 21:20:43 -05:00
3a3884cc9e
update plasma config 2025-11-11 11:16:21 -05:00
9395e3ea49
enable widevine for chromium and firefox 2025-11-10 15:01:55 -05:00
5573293a41
add extensions 2025-11-08 19:40:55 -05:00
d232c420b4
more plasma changes 2025-11-08 12:59:18 -05:00
cac2d82f46
more plasma changes 2025-11-08 11:31:05 -05:00
60ce56a055
add strawberry from git 2025-11-08 09:52:26 -05:00
16dc6466a9
add chromium 2025-11-08 09:13:00 -05:00
e075cbd912
add asahi packages 2025-11-08 08:04:09 -05:00
6fff736006
more panel changes 2025-11-07 22:41:58 -05:00
6970ae6974
broken: add firmware to tracking 2025-11-07 22:31:10 -05:00
4e5ba99872
remove rclone 2025-11-07 20:56:01 -05:00
1a7e251874
remove asahi firmware extraction 2025-11-07 20:55:01 -05:00
279c1ef2ce
flake update 2025-11-07 20:53:35 -05:00
bee9d7c135
changes to both panel alts 2025-11-07 19:58:11 -05:00
92b9b80af5
minor changes 2025-11-07 19:31:14 -05:00
a6cb436754
add workaround for broken key 2025-11-07 19:14:22 -05:00
54954912a1
split off systray into 2 areas 2025-11-07 19:09:37 -05:00
31a49353d2
add wallpaper 2025-11-07 18:55:52 -05:00
b3934cfd7d
add kate and alien global menu 2025-11-07 18:42:22 -05:00
34eb7fd06a
fix alien formatting 2025-11-07 17:48:05 -05:00
439a1ad75c
fix rclone 2025-11-07 17:44:38 -05:00
83dfbf9260
add nixvim config 2025-11-07 15:44:57 -05:00
1da91f0176
plasma-manager and other changes 2025-11-06 12:33:16 -05:00
315e7eb23e
add openmw 2025-11-05 15:28:43 -05:00
c25871e480
fix asahi audio 2025-11-05 15:03:47 -05:00
27a75b03c7
spin off all.nix 2025-11-05 13:40:27 -05:00
aee51814ae
updates 2025-11-05 13:26:16 -05:00
72 changed files with 2137 additions and 2422 deletions

19
.sops.yaml Normal file
View file

@ -0,0 +1,19 @@
# This example uses YAML anchors which allows reuse of multiple keys
# without having to repeat yourself.
# Also see https://github.com/Mic92/dotfiles/blob/d6114726d859df36ccaa32891c4963ae5717ef7f/nixos/.sops.yaml
# for a more complex example.
keys:
- &admin_sckova 7622FD7E6AB9F1E9D2CEFE2700F325187C68651A
- &user_sckova age1k9zp37p9sejvpvwu688t7jkl8utkugrsch7a9ahufpq7uhj609gqsd3wka
- &host_peach age1dx9rwrkhqj8sfr8vdfsgrqjwqefzmgtugsp6ykklpudfw4hcnuyqx9x20e
- &host_alien age1ygykyl3xyfhkt0x46frqnef4f39w0cnu6d98nf0efl43f706uqtsnsx5nd
creation_rules:
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
key_groups:
- pgp:
- *admin_sckova
age:
- *user_sckova
- *host_peach
- *host_alien

152
README.md
View file

@ -1,152 +0,0 @@
# NixOS Configuration
This repository contains the personal **NixOS** and **Home Manager** configuration for **Sean Kovacs** (`sckova`). It utilizes **Nix Flakes** to manage reproducible system states across disparate hardware architectures, specifically targeting high-performance x86_64 gaming desktops and Apple Silicon laptops.
## 🖥️ Hosts
The configuration defines three distinct system profiles via `flake.nix`:
### 👽 `alien` (x86_64-linux)
The primary high-performance desktop and gaming workstation.
* **Kernel:** Uses the **CachyOS** kernel (`linux-cachyos-lts`) via `nix-cachyos-kernel` overlay for scheduler and performance optimizations.
* **Graphics:** Nvidia proprietary drivers (Stable) with Open kernel modules disabled.
#### Gaming Stack:
* **Steam**: Enabled with Gamescope session and Proton-GE.
* **Optimization**: `ananicy-cpp` enabled with specific rules for Gamescope (nice -20).
* **Streaming**: Sunshine game streaming service enabled and auto-started.
* **RGB**: OpenRGB and `ddcutil` for hardware lighting and display control.
* **Virtualization:** Podman (Docker compatible) and Hyper-V guest support enabled.
* **Hardware:** Specific monitor configuration defined in Niri settings (Dual 4K @ 144Hz + Portrait 1440p).
### 🍑 `peach` (aarch64-linux)
A configuration tailored for Apple Silicon hardware using **Asahi Linux**.
#### **System-specific setup**:
* GPU-accelerated desktop via Apple Silicon drivers.
* Touchpad configuration with natural scrolling.
* Specific notch handling and boot logo customization with plymouth & m1n1.
* Configures docker in a rootless setup.
* **Kernel**: Patched `linuxPackages_asahi` with Apple Mailbox and RTKit support.
### 💻 `vm-generic`
A generic template for virtual machines, supported on both `x86_64-linux` and `aarch64-linux`.
## 🎨 Desktop Environment
The system uses a highly customized Wayland environment centered around **Niri**.
### Window Manager: **Niri**
#### Type:
* Scrollable-tiling Wayland compositor.
#### Style:
* Tightly separated windows with 2px borders and 4px gaps.
* Animations and window rounding (8px radius).
#### **Input**:
* Focus follows mouse
* Adaptive acceleration
* Natural scrolling enabled
#### **Keybinds**:
* Super+Shift+? preserved for showing the custom keybinds.
### Shell & Widgets: **Noctalia**
* **Bar**: Custom top bar with workspaces, system monitor, media controls, and tray.
* **Notifications**: Integrated notification daemon with "Do Not Disturb" capabilities.
* **Control Center**: Quick access to network, bluetooth, and power profiles.
* **Launcher**: Fuzzel app launcher with clipboard history support.
### Theming: **Base16/24**
A centralized theme configuration module propagates and builds colors across the system's applications and toolkits.
#### Scheme:
* Can use any scheme declared in the [tinted-gallery](https://tinted-theming.github.io/tinted-gallery/).
#### Accent:
* Orange for peach
* Blue for alien
* Green for the VM
#### Cursor:
* Catppuccin Mocha Peach (Size 24).
#### Fonts:
* Sans: Noto Sans
* Serif: Noto Serif
* Mono: FiraMono Nerd Font
## 📦 Software Stack
### Terminal & Editors
#### **Terminal**: **Kitty**
* Fish shell integration
* Scrollback buffering
* Custom theme
* Wayland-specific integrations
#### **Shell**: **Fish**
* Customized prompt
* Modern alternatives to ls `eza`, cat `bat`, and gzip `pigz`.
* `btop` is used as a system monitor.
#### **Editor**: **Neovim** (via `nixvim`) configured with:
* LSP support (`nixd`, `qmlls`).
* `conform-nvim` for formatting (Prettier, Stylua, Black).
* `cmp` for autocompletion.
* `fzf-lua` for fuzzy finding.
### Applications
#### Browser: **Firefox** with extensive hardening
* Telemetry, Pocket, and AI features disabled.
* Custom userChrome theme.
* Vertical tabs enabled.
* Extensions managed via Nix (uBlock Origin, SponsorBlock, Bitwarden, etc.).
* PWA support via `firefoxpwa`.
* SearXNG metasearch engine set up and enabled as the default search engine and homepage.
#### Social
* **Vesktop**: Discord client.
* Dynamically generated base16 theme.
* Numerous plugins (MessageLogger, FakeNitro, etc.) enabled.
* **Fractal**: Matrix client.
* **Tuba**: Mastodon client.
#### Media
* **MPV** with `uosc` UI and `mpris` support.
* **Spotify**: Custom `riff` package (Rust-based client) and `spotify-webapp`.
* **Spicetify**: CLI Spotify client theming.
* **Strawberry**: Music client.
* **Audacity**, **Musescore**: Musical workstations.
### Services
* **Wallpaper**: Automated daily **Bing Wallpaper** downloader service.
* **Storage**: **Synology NAS** mounting via Rclone systemd service.
* **Network**: **Tailscale** mesh networking.
## 🛠️ Usage
### Rebuilding the System
To apply the configuration for a specific host:
```bash
# Rebuild NixOS configuration and switch
sudo nixos-rebuild switch --flake .#systemName
# Rebuild NixOS configuration for next boot
sudo nixos-rebuild boot --flake .#systemName --install-bootloader
```
### VM Testing
To build and run the generic VM:
```bash
nixos-rebuild build-vm --flake .#vm-generic
./result/bin/run-vm-generic-vm
```

397
flake.lock generated
View file

@ -1,37 +1,16 @@
{
"nodes": {
"aerothemeplasma-nix": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1771513958,
"narHash": "sha256-KoDcVuYgmP/kX6pd9uCW5Wo5Xn3y0SumrMaCLu5ojdY=",
"owner": "nyakase",
"repo": "aerothemeplasma-nix",
"rev": "348cbf661738840d0ae02d5eda7f4c076e59b733",
"type": "github"
},
"original": {
"owner": "nyakase",
"repo": "aerothemeplasma-nix",
"type": "github"
}
},
"apple-silicon": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1771511514,
"narHash": "sha256-qhtonMK07BCVC/wZ+pZ9/MKhcTric7YUaCpW6pOg8IM=",
"lastModified": 1774264319,
"narHash": "sha256-aAsO35YtqIdvBhCIKZ0a+OcC8wB0H1+mAoPKBY0jxeQ=",
"owner": "nix-community",
"repo": "nixos-apple-silicon",
"rev": "2b92d495204be0b10845c66361444dbc8441c68d",
"rev": "9fe29a63b23005acfcd1324a9e78b6241226cdb1",
"type": "github"
},
"original": {
@ -58,30 +37,14 @@
"type": "github"
}
},
"base16-discord": {
"flake": false,
"locked": {
"lastModified": 1771164756,
"narHash": "sha256-6NU5HQZVZ1mSNaIyZxE+U35nF46uXH/768y3auhQdiI=",
"owner": "imbypass",
"repo": "base16-discord",
"rev": "8b005607e5783f751fe369f0442965a86eed8051",
"type": "github"
},
"original": {
"owner": "imbypass",
"repo": "base16-discord",
"type": "github"
}
},
"cachyos-kernel": {
"flake": false,
"locked": {
"lastModified": 1771263855,
"narHash": "sha256-akyds1g8cb742d2OrnQ4YciscpynsQ0+0YD2a8aZdvo=",
"lastModified": 1774160598,
"narHash": "sha256-ArPoVPHpXauFDGsz7nGBiXljj7keGcp/O4Pf4ZU4/30=",
"owner": "CachyOS",
"repo": "linux-cachyos",
"rev": "5ece16c7b4a7d1261da68153cafc318a60b78ce8",
"rev": "1caa0b77871d4537f0d629a2ce30edb2f6178d19",
"type": "github"
},
"original": {
@ -93,11 +56,11 @@
"cachyos-kernel-patches": {
"flake": false,
"locked": {
"lastModified": 1771399550,
"narHash": "sha256-Q2rMJcwZiI1rn8H27gLleKA3ATW/EykukyGR6S1tBPk=",
"lastModified": 1774023710,
"narHash": "sha256-Oc+4K6edCv0fdvfe6UW+OpJiXYWkXRrOH9TDMNwi+J8=",
"owner": "CachyOS",
"repo": "kernel-patches",
"rev": "021aae790c8555a4bb6e2135c6b777bf6fdcba02",
"rev": "a4e26fa95257ac09bd42930334399b0eabd5b5b1",
"type": "github"
},
"original": {
@ -106,22 +69,6 @@
"type": "github"
}
},
"catppuccin-discord": {
"flake": false,
"locked": {
"lastModified": 1770426312,
"narHash": "sha256-rxvHIifq5CYIBPwFA2SpOrWT+sG/z0ItXT3sx2wbEqg=",
"owner": "catppuccin",
"repo": "discord",
"rev": "b9b5547f0b32296d2389716ef606de87b3c1e7c7",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "discord",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1761640442,
@ -158,11 +105,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"lastModified": 1772408722,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"type": "github"
},
"original": {
@ -172,24 +119,6 @@
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
@ -210,7 +139,7 @@
"type": "github"
}
},
"flake-parts_4": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"nur",
@ -231,6 +160,24 @@
"type": "github"
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
@ -254,11 +201,11 @@
]
},
"locked": {
"lastModified": 1771519029,
"narHash": "sha256-H59Qf82wv5kBXVoyXsmUKW+9J3o8FqgY4uKaLdsLdLg=",
"lastModified": 1774539458,
"narHash": "sha256-H9GIOqdMfQZ6lFetsQhO9TCq53hYzpTHDWOt3PRh9V0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "167e0b6837115e672ec5f58e2b0ea39093abe807",
"rev": "e2e5f512b33ed19a7a3271d0b73ed5eefcc0be5f",
"type": "github"
},
"original": {
@ -267,28 +214,14 @@
"type": "github"
}
},
"kvlibadwaita": {
"flake": false,
"locked": {
"lastModified": 1757782301,
"narHash": "sha256-jCXME6mpqqWd7gWReT04a//2O83VQcOaqIIXa+Frntc=",
"owner": "GabePoel",
"repo": "KvLibadwaita",
"rev": "1f4e0bec44b13dabfa1fe4047aa8eeaccf2f3557",
"type": "github"
},
"original": {
"owner": "GabePoel",
"repo": "KvLibadwaita",
"type": "github"
}
},
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"niri-unstable": [
"niri-blur"
],
"nixpkgs": [
"nixpkgs"
"nixpkgs-unstable"
],
"nixpkgs-stable": [
"nixpkgs-stable"
@ -297,19 +230,37 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1771514840,
"narHash": "sha256-t3WbZvwoDj/75YDX/nwkZuxanZLZaWr9meSfKswaN6g=",
"owner": "sodiboo",
"lastModified": 1771682768,
"narHash": "sha256-RJ9RVJSAktCgWiqLDCjYmx9KgMuLaszUrI28k92Pa2I=",
"owner": "sckova",
"repo": "niri-flake",
"rev": "4f69ab280e9bb34e2c0b67fdfa6f0978a170ef56",
"rev": "383bd9d32706b163807b05983418069b2e692310",
"type": "github"
},
"original": {
"owner": "sodiboo",
"owner": "sckova",
"ref": "feat/blur",
"repo": "niri-flake",
"type": "github"
}
},
"niri-blur": {
"flake": false,
"locked": {
"lastModified": 1774190104,
"narHash": "sha256-L/Ldq9G41Mj8WjWTuC+rePvWIx1A/tHdFpLbQmtrMSA=",
"owner": "niri-wm",
"repo": "niri",
"rev": "d06dd4b9e60fa07120c217aa095f3ed8caac99f2",
"type": "github"
},
"original": {
"owner": "niri-wm",
"ref": "wip/branch",
"repo": "niri",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
@ -327,36 +278,20 @@
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1771305475,
"narHash": "sha256-lqweVTwHhYc+9T33cysp38gVwxaibGJHriOPZXWyhCY=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "a2a52911757cb3b497db9407592f9b4c439571ea",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nix-cachyos-kernel": {
"inputs": {
"cachyos-kernel": "cachyos-kernel",
"cachyos-kernel-patches": "cachyos-kernel-patches",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1771438239,
"narHash": "sha256-/d5FnrQ1nvZ9n1I7o/hMTzjd8tTBvV5rT24Nh7h59RQ=",
"lastModified": 1774290535,
"narHash": "sha256-dnFbucSiAjjWmPENgyIiK/ocCuYSp4sM6Sq4WCVjG+8=",
"owner": "xddxdd",
"repo": "nix-cachyos-kernel",
"rev": "58f338b00bc5619144a6f3082eed5c83e79b279b",
"rev": "c0fcdf5cab21b7e3157e84046b57407a60934415",
"type": "github"
},
"original": {
@ -368,11 +303,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1768305791,
"narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=",
"lastModified": 1774106199,
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e",
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
"type": "github"
},
"original": {
@ -384,11 +319,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"lastModified": 1772328832,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
"type": "github"
},
"original": {
@ -414,11 +349,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1771419570,
"narHash": "sha256-bxAlQgre3pcQcaRUm/8A0v/X8d2nhfraWSFqVmMcBcU=",
"lastModified": 1774388614,
"narHash": "sha256-tFwzTI0DdDzovdE9+Ras6CUss0yn8P9XV4Ja6RjA+nU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6d41bc27aaf7b6a3ba6b169db3bd5d6159cfaa47",
"rev": "1073dad219cb244572b74da2b20c7fe39cb3fa9e",
"type": "github"
},
"original": {
@ -430,11 +365,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1771369470,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
"lastModified": 1774386573,
"narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0182a361324364ae3f436a63005877674cf45efb",
"rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9",
"type": "github"
},
"original": {
@ -446,11 +381,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1771353015,
"narHash": "sha256-gvMwFEdFCM2zFxLVDaAbhV2N9zK0IW/RceBundHUdZs=",
"lastModified": 1774235121,
"narHash": "sha256-CzpSER+YKq4yD+RPom6Su9c/4FutF+sD4rEnls+4MyM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "931ef4db402cdab9dfe66fe4a2b01d50f6fe435d",
"rev": "1116aed2cee959f7d054a462458513ad323b710a",
"type": "github"
},
"original": {
@ -460,20 +395,36 @@
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1770115704,
"narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e6eae2ee2110f3d31110d5c222cd395303343b08",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_3",
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1771135771,
"narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=",
"lastModified": 1774309640,
"narHash": "sha256-8oWL7YLwElBY9ebYri1LlSlhf/gd1Qoqj0nbBwG2yso=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba",
"rev": "28c58bf023bf537354f78d6e496a349d7a0ed554",
"type": "github"
},
"original": {
@ -486,14 +437,15 @@
"inputs": {
"nixpkgs": [
"nixpkgs"
]
],
"noctalia-qs": "noctalia-qs"
},
"locked": {
"lastModified": 1771513929,
"narHash": "sha256-dPeHevAT1Cb2w/Wrfz/d5i6RfO8bvbGl/KrTPxU2l3w=",
"lastModified": 1774536980,
"narHash": "sha256-j7I4XVEaUsiR0EOUJGnY7DZ0V/GYtcGJ97K3abzU9QY=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "9c47ce03f200e0b8fc515d973440d5bc3e359785",
"rev": "396fba755b515913f4ac7596c30b827b0f67d53a",
"type": "github"
},
"original": {
@ -502,19 +454,42 @@
"type": "github"
}
},
"noctalia-qs": {
"inputs": {
"nixpkgs": [
"noctalia",
"nixpkgs"
],
"systems": "systems_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1774351986,
"narHash": "sha256-N131zILQ06ZNEvtgtjjFZ0N5qEI70rKKhCZsBcZoDH8=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "066835ebd5daeabc86df1e62fb5fe82a51407cc0",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_3",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1771516225,
"narHash": "sha256-G2cPs4Ic8Z1Aq8QfMa1VwJoBwIhVpwzcQ036ZhI4oXc=",
"lastModified": 1774540439,
"narHash": "sha256-zVYoM58GjEh07Oa56zRygHaqp+Fm83PK8C77p84l5uA=",
"owner": "nix-community",
"repo": "NUR",
"rev": "d4694f0614419034910767b5a036384ab358b138",
"rev": "95ed6efd2ba5aefb62f522c71ef3276b18a8b5a0",
"type": "github"
},
"original": {
@ -535,44 +510,18 @@
},
"original": {
"owner": "OpenMW",
"ref": "01bcd6",
"repo": "openmw",
"rev": "01bcd6a6369fe461caaf900354967b4751aede7a",
"type": "gitlab"
}
},
"plasma-manager": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1770766818,
"narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "44b928068359b7d2310a34de39555c63c93a2c90",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"root": {
"inputs": {
"aerothemeplasma-nix": "aerothemeplasma-nix",
"apple-silicon": "apple-silicon",
"base16": "base16",
"base16-discord": "base16-discord",
"catppuccin-discord": "catppuccin-discord",
"home-manager": "home-manager",
"kvlibadwaita": "kvlibadwaita",
"niri": "niri",
"niri-blur": "niri-blur",
"nix-cachyos-kernel": "nix-cachyos-kernel",
"nixpkgs": [
"nixpkgs-unstable"
@ -583,29 +532,47 @@
"noctalia": "noctalia",
"nur": "nur",
"openmw": "openmw",
"plasma-manager": "plasma-manager",
"spicetify-nix": "spicetify-nix",
"seamless-asahi-plymouth": "seamless-asahi-plymouth",
"sops-nix": "sops-nix",
"tt-schemes": "tt-schemes"
}
},
"spicetify-nix": {
"seamless-asahi-plymouth": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_2"
"flake-parts": "flake-parts_4",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1771268051,
"narHash": "sha256-nGqPcngnezoT+/xAvw3UDjwdKP2MC4fO315A/Otb9eE=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "b930de84c561f62a0c39a6a57c2ab553a97e8495",
"lastModified": 1770365598,
"narHash": "sha256-tjmDL8eaK2NIwWDho81GhygkBZoauiiiUqwV1VP1FwQ=",
"owner": "luca-schlecker",
"repo": "seamless-asahi-plymouth",
"rev": "e3f5517643f9c2021bee2870b55d8bd363763cd1",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "spicetify-nix",
"owner": "luca-schlecker",
"repo": "seamless-asahi-plymouth",
"type": "github"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1774910634,
"narHash": "sha256-B+rZDPyktGEjOMt8PcHKYmgmKoF+GaNAFJhguktXAo0=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "19bf3d8678fbbfbc173beaa0b5b37d37938db301",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
@ -626,16 +593,38 @@
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"repo": "default-linux",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"noctalia",
"noctalia-qs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1772660329,
"narHash": "sha256-IjU1FxYqm+VDe5qIOxoW+pISBlGvVApRjiw/Y/ttJzY=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "3710e0e1218041bbad640352a0440114b1e10428",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},

276
flake.nix
View file

@ -8,23 +8,19 @@
# edit this to switch between stable and unstable
nixpkgs.follows = "nixpkgs-unstable";
nix-cachyos-kernel = {
url = "github:xddxdd/nix-cachyos-kernel/release";
# inputs.nixpkgs.follows = "nixpkgs";
};
base16 = {
url = "github:SenchoPens/base16.nix";
};
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
apple-silicon.url = "github:nix-community/nixos-apple-silicon";
seamless-asahi-plymouth.url = "github:luca-schlecker/seamless-asahi-plymouth";
base16.url = "github:SenchoPens/base16.nix";
tt-schemes = {
url = "github:tinted-theming/schemes/b9f335ad6a0b7d85b9c2eb932c3215f7429f7d11";
flake = false;
};
base16-discord = {
url = "github:imbypass/base16-discord";
flake = false;
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
@ -32,40 +28,23 @@
inputs.nixpkgs.follows = "nixpkgs";
};
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
aerothemeplasma-nix = {
url = "github:nyakase/aerothemeplasma-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
url = "github:sckova/niri-flake/feat/blur";
inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs.nixpkgs-stable.follows = "nixpkgs-stable";
# inputs.niri-stable.follows = "niri-blur";
# inputs.niri-unstable.follows = "niri-blur";
inputs.niri-unstable.follows = "niri-blur";
};
# niri-blur = {
# url = "github:visualglitch91/niri/feat/blur";
# flake = false;
# };
niri-blur = {
url = "github:niri-wm/niri/wip/branch";
flake = false;
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix = {
url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
@ -76,23 +55,8 @@
inputs.nixpkgs.follows = "nixpkgs";
};
apple-silicon = {
url = "github:nix-community/nixos-apple-silicon";
# inputs.nixpkgs.follows = "nixpkgs";
};
openmw = {
url = "gitlab:OpenMW/openmw/01bcd6a6369fe461caaf900354967b4751aede7a";
flake = false;
};
catppuccin-discord = {
url = "github:catppuccin/discord";
flake = false;
};
kvlibadwaita = {
url = "github:GabePoel/KvLibadwaita";
url = "gitlab:OpenMW/openmw/01bcd6";
flake = false;
};
};
@ -102,32 +66,20 @@
nixpkgs,
nixpkgs-unstable,
nix-cachyos-kernel,
apple-silicon,
seamless-asahi-plymouth,
base16,
tt-schemes,
base16-discord,
sops-nix,
home-manager,
plasma-manager,
aerothemeplasma-nix,
niri,
noctalia,
spicetify-nix,
nur,
nixvim,
apple-silicon,
openmw,
catppuccin-discord,
kvlibadwaita,
...
}:
let
# All systems we want to support for the generic VM
# to run the vm:
# nixos-rebuild build-vm --flake ~/nix#$(nix eval --raw --impure --expr 'builtins.currentSystem')
supportedSystems = [
"x86_64-linux"
"aarch64-linux"
];
# Shared config for all package sets
pkgConfig = {
allowUnfree = true;
@ -151,86 +103,92 @@
}
// extraSpecialArgs;
modules = [
{
nixpkgs = {
config = pkgConfig;
overlays = [
niri.overlays.niri
noctalia.overlays.default
nur.overlays.default
(final: prev: {
openmw-git = openmw;
catppuccin-discord-git = catppuccin-discord;
kvlibadwaita-git = kvlibadwaita;
base16-discord-git = base16-discord;
})
(import ./packages/overlay.nix)
];
};
nix = {
settings = {
experimental-features = [
"nix-command"
"flakes"
(
{ pkgs, ... }:
{
nixpkgs = {
config = pkgConfig;
overlays = [
niri.overlays.niri
noctalia.overlays.default
nur.overlays.default
(final: prev: {
openmw-git = openmw;
})
(final: prev: {
inherit (prev.lixPackageSets.stable)
nixpkgs-review
nix-eval-jobs
nix-fast-build
colmena
;
})
(import ./packages/overlay.nix)
];
};
nix = {
package = pkgs.lixPackageSets.stable.lix;
settings = {
experimental-features = [
"nix-command"
"flakes"
];
substituters = [
"https://attic.xuyh0120.win/lantian"
"https://cache.garnix.io"
"https://nixos-apple-silicon.cachix.org"
];
substituters = [
"https://attic.xuyh0120.win/lantian"
"https://cache.garnix.io"
"https://nixos-apple-silicon.cachix.org"
];
trusted-public-keys = [
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20="
];
trusted-public-keys = [
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20="
];
trusted-users = [
"root"
"sckova"
];
trusted-users = [
"root"
"sckova"
];
};
# Increase file descriptor limit for builds
# sandbox = "relaxed";
# extra-sandbox-paths = [ ];
# build-users-group = "nixbld";
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
networking.hostName = hostname;
users.users.sckova = {
isNormalUser = true;
description = "Sean Kovacs";
extraGroups = [
"wheel"
"networkmanager"
"podman"
"pipewire"
];
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova"
];
};
};
networking.hostName = hostname;
users.users.sckova = {
isNormalUser = true;
description = "Sean Kovacs";
extraGroups = [
"wheel"
"networkmanager"
"podman"
];
hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0";
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova"
];
};
}
}
)
./options.nix
./sops.nix
./system
./system/searxng
./system/games
./system/widevine
./system/shell/fish.nix
./system/tailscale
./system/hosts/${hostname}
./hardware/${hostname}
aerothemeplasma-nix.nixosModules.aerothemeplasma-nix
niri.nixosModules.niri
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
noctalia.nixosModules.default
{
home-manager = {
useGlobalPkgs = true;
@ -239,16 +197,18 @@
imports = [
./home
./options.nix
./home/apps
./home/games
./home/hosts/${hostname}
./home/kde
./home/services
./home/terminal
./home/tiling
./sops.nix
./home/sckova
./home/sckova/apps
./home/sckova/games
./home/sckova/hosts/${hostname}
./home/sckova/services
./home/sckova/terminal
./home/sckova/tiling
];
};
sharedModules = [
sops-nix.homeManagerModules.sops
base16.nixosModule
(
{ config, ... }:
@ -256,14 +216,10 @@
scheme = "${tt-schemes}/base24/${config.colors.scheme}.yaml";
}
)
aerothemeplasma-nix.homeModules.aerothemeplasma-nix
plasma-manager.homeModules.plasma-manager
noctalia.homeModules.default
spicetify-nix.homeManagerModules.default
nixvim.homeModules.nixvim
];
extraSpecialArgs = {
inherit spicetify-nix;
pkgs-unstable = import nixpkgs-unstable {
inherit system;
config = pkgConfig;
@ -271,6 +227,7 @@
};
};
}
noctalia.nixosModules.default
]
++ extraModules;
};
@ -293,10 +250,9 @@
home.username = user;
home.homeDirectory = "/home/${user}";
modules = [
./home
./home/hosts/${hostname}.nix
./home/${user}
./home/${user}/hosts/${hostname}.nix
home-manager.homeModules.home-manager
plasma-manager.homeModules.plasma-manager
niri.homeModules.default
noctalia.homeModules.noctalia
nixvim.homeModules.nixvim
@ -308,27 +264,21 @@
peach = mkNixosSystem {
hostname = "peach";
system = "aarch64-linux";
extraSpecialArgs = { inherit seamless-asahi-plymouth; };
extraModules = [
apple-silicon.nixosModules.default
{ nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; }
];
};
alien =
mkNixosSystem {
hostname = "alien";
system = "x86_64-linux";
extraModules = [
{ nixpkgs.overlays = [ nix-cachyos-kernel.overlays.pinned ]; }
];
}
// nixpkgs.lib.genAttrs supportedSystems (
system:
mkNixosSystem {
hostname = "vm-generic";
inherit system;
alien = mkNixosSystem {
hostname = "alien";
system = "x86_64-linux";
extraModules = [
{
nixpkgs.overlays = [ nix-cachyos-kernel.overlays.pinned ];
}
);
];
};
};
homeConfigurations = {
@ -342,14 +292,6 @@
hostname = "alien";
system = "x86_64-linux";
};
}
// nixpkgs.lib.genAttrs supportedSystems (
system:
mkHomeConfig {
user = "sckova";
hostname = "vm-generic";
inherit system;
}
);
};
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./discord.nix
./firefox.nix
./mpv.nix
# ./vscode.nix
];
}

View file

@ -1,105 +1,14 @@
{
config,
pkgs,
pkgs-unstable,
...
}:
{
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
config.home.stateVersion = "25.05";
config = {
home.packages = with pkgs; [
# cli utilities
tmux
fastfetch
btop
wget
ripgrep
ncdu
fzf
wl-clipboard
rclone
waypipe
spotdl
browsh
mosh
gh
# development & tooling
jdk21_headless
quickemu
nerd-fonts.noto
noto-fonts
noto-fonts-color-emoji
nix-prefetch
prowlarr
radarr
sonarr
flaresolverr
nerd-fonts.fira-mono
ffmpeg-full
# kde and kde theming
# kde-rounded-corners
kdePackages.partitionmanager
pkgs.catppuccin-cursors.mochaPeach
# gui applications
input-leap
libreoffice-qt-fresh
# nur.repos.forkprince.helium-nightly
chromium
qbittorrent
nautilus
fractal
tuba
# gui applications ( multimedia )
audacity
strawberry
musescore
gimp
calibre
# riff
dissent
loupe
spotify-player
# overrides
# (chromium.override {
# enableWideVine = true;
# })
];
services = {
spotifyd = {
enable = true;
package = pkgs-unstable.spotifyd;
settings = {
global = {
device_type = "computer";
dbus_type = "session";
disable_discovery = true;
use_mpris = true;
bitrate = 320;
initial_volume = 100;
volume_normalisation = true;
normalisation_pregain = 0;
};
};
};
};
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "25.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
};
# Let Home Manager install and manage itself.
config.programs.home-manager.enable = true;
}

View file

@ -1,6 +0,0 @@
{
imports = [
./minecraft.nix
./morrowind.nix
];
}

View file

@ -1,55 +0,0 @@
{
config,
pkgs,
lib,
pkgs-unstable,
spicetify-nix,
...
}:
{
colors = {
scheme = "catppuccin-mocha";
accent = "base0D";
};
home.packages = with pkgs; [
pkgs-unstable.ckan
# steam gtk theming
adwsteamgtk
daggerfall-unity
vintagestory
gamemode
];
programs.noctalia-shell.settings.brightness.enableDdcSupport = true;
programs.noctalia-shell.settings.bar = {
position = "top";
density = "default";
};
programs.spicetify =
let
spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
{
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names)
];
enabledCustomApps = with spicePkgs.apps; [
newReleases
ncsVisualizer
];
enabledSnippets = with spicePkgs.snippets; [
rotatingCoverart
pointer
];
theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha";
};
}

View file

@ -1,51 +0,0 @@
{
pkgs,
config,
lib,
...
}:
{
colors = {
scheme = "catppuccin-latte";
accent = "base09";
};
home.packages = with pkgs; [
asahi-nvram
asahi-bless
asahi-btsync
asahi-wifisync
moonlight-qt
];
# https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777
programs.niri.settings.debug = {
render-drm-device = "/dev/dri/card2";
};
programs.noctalia-shell.settings.bar = {
position = "top";
density = "spacious";
};
programs.plasma = lib.mkDefault {
input.touchpads = [
{
name = "Apple MTP multi-touch";
vendorId = "05ac";
productId = "0352";
disableWhileTyping = false;
enable = true;
tapToClick = false;
naturalScroll = true;
accelerationProfile = "default";
}
];
shortcuts = {
# this is really annoying on apple laptops
org_kde_powerdevil.Sleep = [ ];
};
};
}

View file

@ -1,108 +0,0 @@
{
config,
pkgs,
...
}:
{
colors = {
scheme = "catppuccin-mocha";
accent = "base0B";
};
home.packages = with pkgs; [ ];
programs.plasma = {
panels = [
# Application name, Global menu and Song information and playback controls at the top
{
location = "top";
height = 37;
floating = false;
widgets = [
{
applicationTitleBar = {
behavior = {
activeTaskSource = "activeTask";
};
layout = {
elements = [ "windowTitle" ];
horizontalAlignment = "right";
showDisabledElements = "deactivated";
verticalAlignment = "center";
};
overrideForMaximized.enable = false;
windowTitle = {
font = {
bold = false;
fit = "fixedSize";
size = 10;
};
hideEmptyTitle = true;
margins = {
bottom = 5;
left = 10;
right = 0;
top = 5;
};
source = "appName";
};
};
}
"org.kde.plasma.appmenu"
"org.kde.plasma.panelspacer"
{
plasmusicToolbar = {
panelIcon = {
albumCover = {
useAsIcon = false;
radius = 8;
};
icon = "";
};
playbackSource = "auto";
musicControls.showPlaybackControls = false;
songText = {
displayInSeparateLines = true;
maximumWidth = 320;
scrolling = {
behavior = "alwaysScroll";
speed = 3;
};
};
};
}
"org.kde.plasma.marginsseparator"
{
systemTray.items = {
shown = [
"org.kde.plasma.battery"
"org.kde.plasma.bluetooth"
"org.kde.plasma.networkmanagement"
"org.kde.plasma.brightness"
"org.kde.plasma.volume"
];
hidden = [
"org.kde.plasma.clipboard"
"org.kde.plasma.manage-inputmethod"
"org.kde.plasma.cameraindicator"
"org.kde.plasma.keyboardlayout"
"org.kde.plasma.devicenotifier"
"org.kde.plasma.notifications"
"org.kde.plasma.weather"
"org.kde.plasma.printmanager"
"org.kde.plasma.keyboardindicator"
"org.kde.plasma.mediacontroller"
];
};
}
{
digitalClock = {
calendar.firstDayOfWeek = "sunday";
time.format = "12h";
};
}
];
}
];
};
}

View file

@ -1,231 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
programs.ghostwriter = {
enable = true;
font = {
family = config.userOptions.fontSans.name;
pointSize = config.userOptions.fontSans.size;
};
};
programs.kate = {
enable = true;
editor = {
font = {
family = config.userOptions.fontMono.name;
pointSize = config.userOptions.fontMono.size;
};
};
};
# aerothemeplasma = {
# enable = true;
# plasma.enable = true;
# fonts.enable = true;
# };
programs.plasma = lib.mkDefault {
enable = true;
session = {
sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession";
};
workspace = {
wallpaperPictureOfTheDay.provider = "bing";
wallpaperFillMode = "preserveAspectCrop";
};
kscreenlocker = {
appearance.wallpaperPictureOfTheDay.provider = "bing";
};
window-rules = [
{
description = "Global Changes";
match = {
window-class = {
value = "";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
opacityactive = {
value = 100;
apply = "force";
};
opacityinactive = {
value = 100;
apply = "force";
};
};
}
{
description = "OpenMW";
match = {
window-class = {
value = "openmw";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
noborder = {
value = true;
apply = "force";
};
maximizehoriz = {
value = true;
apply = "force";
};
maximizevert = {
value = true;
apply = "force";
};
desktops = {
value = "Desktop_4";
apply = "force";
};
};
}
{
description = "Minecraft";
match = {
window-class = {
value = "Minecraft*";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
noborder = {
value = true;
apply = "initially";
};
maximizehoriz = {
value = true;
apply = "initially";
};
maximizevert = {
value = true;
apply = "initially";
};
desktops = {
value = "Desktop_4";
apply = "initially";
};
};
}
{
description = "Picture-in-Picture";
match = {
window-class = {
value = "";
type = "substring";
};
title = {
value = "(?i)picture[- ]in[- ]picture";
type = "regex";
};
};
apply = {
above = {
value = true;
apply = "force";
};
desktops = {
value = "\\0";
apply = "force";
};
};
}
{
description = "Steam (Distrobox)";
match = {
window-class = {
value = "steamwebhelper";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
desktopfile = {
value = "distrobox-steam";
apply = "force";
};
};
}
];
kwin = {
nightLight = {
enable = true;
mode = "location";
# Atlanta
location.latitude = "33.7501";
location.longitude = "-84.3885";
temperature.day = 6000;
temperature.night = 3500;
transitionTime = 60;
};
virtualDesktops = {
names = [
"1"
"2"
"3"
"4"
];
rows = 1;
};
effects = {
# desktopSwitching = {
# animation = "slide";
# navigationWrapping = true;
# };
minimization = {
animation = "magiclamp";
duration = 500;
};
shakeCursor.enable = true;
snapHelper.enable = true;
};
};
configFile = {
# KDE has an automatic light-dark that CURRENTLY
# isn't supported by plasma-manager.
# kdeglobals.KDE.AutomaticLookAndFeel = true;
# DefaultDarkLookAndFeel = "Catppuccin-Flavor-Accent";
# DefaultLightLookAndFeel = "Catppuccin-Flavor-Accent";
kwinrc.Round-Corners.ActiveOutlinePalette = 2;
kwinrc.Round-Corners.ActiveOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveOutlineUsePalette = true;
kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2;
kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveOutlinePalette = 3;
kwinrc.Round-Corners.InactiveOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3;
kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true;
plasmaparc.General.AudioFeedback = false;
kdeglobals.Sounds.Enable = false;
kwinrc.Plugins.forceblurEnabled = false;
kwinrc.Effect-blurplus.BlurDecorations = true;
kwinrc.Effect-blurplus.BlurMatching = false;
kwinrc.Effect-blurplus.BlurMenus = true;
kwinrc.Effect-blurplus.BlurNonMatching = true;
kwinrc.Effect-blurplus.TopCornerRadius = 10;
kwinrc.Effect-blurplus.BottomCornerRadius = 10;
kwinrc.Effect-blurplus.NoiseStrength = 6;
kwinrc.Effect-blurplus.RefractionStrength = 10;
ksplashrc.KSplash.Engine = "KSplashQML";
};
};
}

View file

@ -0,0 +1,35 @@
{ pkgs, ... }:
{
imports = [
# ./discord.nix
./firefox.nix
./mpv.nix
# ./vscode.nix
];
home.packages = with pkgs; [
# gui applications
input-leap
libreoffice-qt-fresh
# nur.repos.forkprince.helium-nightly
nautilus
fractal
tuba
# gui applications ( multimedia )
audacity
strawberry
musescore
gimp
# calibre
# riff
dissent
loupe
spotify-player
# overrides
(chromium.override {
enableWideVine = true;
})
];
}

View file

@ -4,9 +4,8 @@
...
}:
let
mergedThemes = pkgs.runCommand "mergedConfig" { } ''
mergedThemes = pkgs.runCommand "discordThemeDir" { } ''
mkdir -p $out
cp -rvf ${pkgs.base16-discord-git}/base16.css $out/base16.css
'';
vesktopSettings = {
@ -47,11 +46,6 @@ in
home.file.".config/vesktop/settings/quickCss.css" = with config.scheme.withHashtag; {
text = ''
* {
font-family: "${config.userOptions.fontSans.name}" !important;
font-size: ${toString config.userOptions.fontSans.size}px;
}
:root {
--base00: ${base00};
--base01: ${base01};

View file

@ -76,7 +76,7 @@
url = "https://web.whatsapp.com/";
manifestUrl = "https://web.whatsapp.com/data/manifest.json";
desktopEntry = {
icon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/whatsapp.svg";
icon = "${pkgs.morewaita-icon-theme}/share/icons/MoreWaita/scalable/apps/whatsapp.svg";
categories = [
"Network"
"Chat"
@ -104,7 +104,6 @@
"uBlock0@raymondhill.net".installation_mode = "allowed";
"gdpr@cavi.au.dk".installation_mode = "allowed";
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}".installation_mode = "allowed";
"plasma-browser-integration@kde.org".installation_mode = "allowed";
"jid1-MnnxcxisBPnSXQ@jetpack".installation_mode = "allowed";
"firefoxpwa@filips.si".installation_mode = "allowed";
"sponsorBlocker@ajay.app".installation_mode = "allowed";
@ -113,6 +112,7 @@
"{446900e4-71c2-419f-a6a7-df9c091e268b}".installation_mode = "allowed";
"CanvasBlocker@kkapsner.de".installation_mode = "allowed";
"shinigamieyes@shinigamieyes".installation_mode = "allowed";
"deArrow@ajay.app".installation_mode = "allowed";
};
DisableTelemetry = true;
DisableFirefoxStudies = true;
@ -142,7 +142,6 @@
force = true;
packages = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
plasma-integration
stylus
violentmonkey
consent-o-matic
@ -153,6 +152,7 @@
bitwarden
canvasblocker
shinigami-eyes
dearrow
];
settings = {
"{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}".settings = {
@ -207,10 +207,20 @@
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.showWeather" = false;
"browser.download.autoHideButton" = false;
"browser.startup.homepage" = "http://localhost:8080/";
# "browser.startup.homepage" = "http://localhost:5364/";
"browser.tabs.splitview.hasUsed" = true;
# Disable Firefox's machine learning (AI) features
"browser.ml.enable" = false;
"browser.ml.chat.enabled" = false;
"browser.ml.chat.page" = false;
"browser.ai.control.default" = "blocked";
"browser.ai.control.linkPreviewKeyPoints" = "blocked";
"browser.ai.control.pdfjsAltText" = "blocked";
"browser.ai.control.sidebarChatbot" = "blocked";
"browser.ai.control.smartTabGroups" = "blocked";
"browser.ai.control.translations" = "blocked";
"sidebar.notification.badge.aichat" = false;
# For browser toolbox/live editing user CSS
"devtools.chrome.enabled" = true;
@ -228,12 +238,12 @@
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
"gdpr_cavi_au_dk-browser-action"
"firefoxpwa_filips_si-browser-action"
"plasma-browser-integration_kde_org-browser-action"
"canvasblocker_kkapsner_de-browser-action"
"_5cce4ab5-3d47-41b9-af5e-8203eea05245_-browser-action"
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
"_aecec67f-0d10-4fa7-b7c7-609a2db280cf_-browser-action"
"_7a7a4a92-a2a0-41d1-9fd7-1e92480d612d_-browser-action"
"dearrow_ajay_app-browser-action"
];
nav-bar = [
# "sidebar-button"
@ -252,7 +262,6 @@
seen = [
"gdpr_cavi_au_dk-browser-action"
"firefoxpwa_filips_si-browser-action"
"plasma-browser-integration_kde_org-browser-action"
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
"canvasblocker_kkapsner_de-browser-action"
"_5cce4ab5-3d47-41b9-af5e-8203eea05245_-browser-action"
@ -261,6 +270,7 @@
"_aecec67f-0d10-4fa7-b7c7-609a2db280cf_-browser-action"
"_7a7a4a92-a2a0-41d1-9fd7-1e92480d612d_-browser-action"
"sponsorblocker_ajay_app-browser-action"
"dearrow_ajay_app-browser-action"
"developer-button"
];
dirtyAreaCache = [
@ -306,8 +316,8 @@
};
search =
let
nixIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid/apps/scalable/nix-snowflake.svg";
searchIcon = "${pkgs.colloid-icon-theme}/share/icons/Colloid-Dark/places/symbolic/folder-saved-search-symbolic.svg";
nixIcon = "/run/current-system/sw/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
searchIcon = "${pkgs.adwaita-icon-theme}/share/icons/Adwaita/scalable/places/folder-saved-search-symbolic.svg";
in
{
force = true;
@ -369,7 +379,7 @@
searxng = {
name = "SearXNG";
urls = [ { template = "http://localhost:8080/search?q={searchTerms}"; } ];
urls = [ { template = "http://localhost:5364/search?q={searchTerms}"; } ];
icon = searchIcon;
definedAliases = [ "@go" ];
};

View file

@ -14,7 +14,7 @@
visibility: hidden !important;
}
.browserContainer {
/*.browserContainer {
border-radius: 8px !important;
margin: 6px !important;
background-color: transparent !important;
@ -22,4 +22,4 @@
browser {
border-radius: 8px !important;
}
}*/

10
home/sckova/default.nix Normal file
View file

@ -0,0 +1,10 @@
{
# the user to activate
userOptions = {
name = "Sean Kovacs";
username = "sckova";
email = "kovacsmillio@gmail.com";
};
sops.age.keyFile = "/home/sckova/.config/sops/age/keys.txt";
}

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
imports = [
./minecraft.nix
./morrowind.nix
];
home.packages = with pkgs; [
dolphin-emu
];
}

View file

@ -1,15 +1,10 @@
{
config,
pkgs,
...
}:
{
home = {
packages = with pkgs; [ openmw ];
sessionVariables = {
SDL_VIDEO_DRIVER = "wayland";
};
};
home.packages = with pkgs; [ openmw ];
home.sessionVariables.SDL_VIDEO_DRIVER = "wayland";
programs.firefox.profiles.default.search.engines.uesp = {
name = "Unofficial Elder Scrolls Pages";

View file

@ -0,0 +1,46 @@
{
pkgs,
...
}:
{
colors = {
scheme = "catppuccin-mocha";
accent = "base0D";
};
home.packages = with pkgs; [
ckan
spotify
adwsteamgtk
daggerfall-unity
vintagestory
gamemode
];
# PROTON_ENABLE_NVAPI=1 PROTON_DLSS_UPGRADE=1 PROTON_ENABLE_NGX_UPDATER=1 DXVK_NVAPI_DRS_SETTINGS=NGX_DLSS_SR_MODE=balanced MANGOHUD_CONFIG="fps_limit=144,gamemode,ram,vram" mangohud gamemoderun %command%
xdg.desktopEntries.steam-big-picture = {
name = "Steam (Big Picture)";
icon = "steam";
exec = "gamescope -e --force-grab-cursor -s 2 -- steam -tenfoot";
terminal = false;
categories = [
"Network"
"FileTransfer"
"Game"
];
};
home.sessionVariables = {
PROTON_ENABLE_NVAPI = 1;
PROTON_DLSS_UPGRADE = 1;
PROTON_ENABLE_NGX_UPDATER = 1;
DXVK_NVAPI_DRS_SETTINGS = "NGX_DLSS_SR_MODE=balanced";
MANGOHUD_CONFIG = "fps_limit=144,gamemode,ram,vram";
};
programs.noctalia-shell.settings.brightness.enableDdcSupport = true;
programs.noctalia-shell.settings.bar = {
position = "top";
density = "default";
};
}

View file

@ -0,0 +1,40 @@
{
pkgs,
lib,
...
}:
{
colors = {
scheme = "catppuccin-frappe";
accent = "base09";
};
home.packages = with pkgs; [
asahi-nvram
asahi-bless
asahi-btsync
asahi-wifisync
moonlight-qt
];
programs = {
noctalia-shell.settings.bar = {
position = "top";
density = "spacious";
};
niri.settings.outputs."eDP-1" = {
scale = 1.5;
mode = {
width = 3024;
height = 1964;
refresh = 120.000;
};
position = {
x = 272;
y = 1440;
};
};
};
}

View file

@ -0,0 +1,252 @@
{
osConfig,
config,
pkgs,
...
}:
{
imports = [
./gtk.nix
./qt.nix
./systemd.nix
];
home.packages = with pkgs; [
adwaita-icon-theme
morewaita-icon-theme
];
home.file = {
".icons/default/index.theme" = {
text = ''
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=${config.userOptions.cursor.name}
'';
force = true;
};
};
services.spotifyd.enable = true;
# comments taken from https://docs.spotifyd.rs/configuration/index.html
services.spotifyd.settings.global = {
#---------#
# GENERAL #
#---------#
# The name that gets displayed under the connect tab on
# official clients.
device_name = "daemon@${osConfig.system.name}";
# The displayed device type in Spotify clients.
# Can be unknown, computer, tablet, smartphone, speaker, t_v,
# a_v_r (Audio/Video Receiver), s_t_b (Set-Top Box), and audio_dongle.
device_type = "computer";
# The bus to bind to with the MPRIS interface.
# Possible values: "session", "system"
# The system bus can be used if no graphical session is available
# (e.g. on headless systems) but you still want to be able to use MPRIS.
# NOTE: You might need to add appropriate policies to allow spotifyd to
# own the name.
dbus_type = "session";
# If set to true, `spotifyd` tries to bind to dbus (default is the session bus)
# and expose MPRIS controls. When running headless, without the session bus,
# you should set this to false, to avoid errors. If you still want to use MPRIS,
# have a look at the `dbus_type` option.
use_mpris = true;
# The directory used to store credentials and audio cache.
# Default: infers a sensible cache directory (e.g. on Linux: $XDG_CACHE_HOME)
# Note: The file path does not get expanded. Environment variables and
# shell placeholders like $HOME or ~ don't work!
# cache_path = "";
# If set to true, audio data does NOT get cached.
# In this case, the cache is only used for credentials.
no_audio_cache = false;
# The maximal size of the cache directory in bytes
# The value below corresponds to ~ 10GB
max_cache_size = 10000000000;
#-----------#
# DISCOVERY #
#-----------#
# If set to true, this disables zeroconf discovery.
# This can be useful, if one prefers to run a single-user instance.
disable_discovery = true;
#-------#
# AUDIO #
#-------#
# The audio backend used to play music. To get
# a list of possible backends, run `spotifyd --help`.
backend = "alsa"; # use portaudio for macOS [homebrew]
# The alsa audio device to stream audio. To get a
# list of valid devices, run `aplay -L`,
device = "default"; # omit for macOS
# If set to true, enables volume normalisation between songs.
volume_normalisation = true;
# The normalisation pregain that is applied for each song.
normalisation_pregain = 0;
# The audio bitrate. 96, 160 or 320 kbit/s
bitrate = 320;
# Volume on startup between 0 and 100
initial_volume = 100;
#-------ä
# OTHER #
#-------#
# After the music playback has ended, start playing similar songs based on the previous tracks.
# By default, `spotifyd` infers this setting from the user settings.
autoplay = false;
};
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
clock-format = "12h";
clock-show-weekday = true;
};
"org/gnome/desktop/wm/preferences" = {
button-layout = ":";
action-double-click-titlebar = "'none'";
};
"org/gnome/desktop/media-handling" = {
automount = false;
automount-open = false;
autorun-never = true;
};
"org/gnome/settings-daemon/plugins/power" = {
sleep-inactive-ac-type = "nothing";
};
"org/gnome/mutter" = {
edge-tiling = true;
dynamic-workspaces = true;
experimental-features = [ "variable-refresh-rate" ];
};
};
home.pointerCursor = {
gtk.enable = true;
name = config.userOptions.cursor.name;
package = config.userOptions.cursor.package;
size = config.userOptions.cursor.size;
};
home.sessionVariables = {
QT_QPA_PLATFORMTHEME = "qt6ct";
# this makes electron apps work per the wiki
NIXOS_OZONE_WL = "1";
# allow non-free packages in shells
NIXPKGS_ALLOW_UNFREE = 1;
};
gtk = {
enable = true;
gtk4.theme = null;
colorScheme = "dark";
iconTheme = {
name = "MoreWaita";
package = pkgs.morewaita-icon-theme;
};
cursorTheme = {
name = config.home.pointerCursor.name;
package = config.home.pointerCursor.package;
size = config.home.pointerCursor.size;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = ":";
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = ":";
};
};
xdg.mimeApps = {
enable = true;
associations.added = {
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"x-scheme-handler/discord" = [ "vesktop.desktop" ];
"x-scheme-handler/spotify" = [ "riff.desktop" ];
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
"image/png" = [ "loupe.desktop" ];
"image/jpeg" = [ "loupe.desktop" ];
};
defaultApplications = {
# Web
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"text/html" = [ "firefox.desktop" ];
# Communication & Social
"x-scheme-handler/discord" = [ "vesktop.desktop" ];
"x-scheme-handler/spotify" = [ "riff.desktop" ];
# File Management
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
# Torrents
"application/x-bittorrent" = [ "org.qbittorrent.qBittorrent.desktop" ];
"x-scheme-handler/magnet" = [ "org.qbittorrent.qBittorrent.desktop" ];
# Documents
"application/pdf" = [ "firefox.desktop" ]; # Or libreoffice-draw.desktop
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = [
"libreoffice-writer.desktop"
]; # docx
"application/msword" = [ "libreoffice-writer.desktop" ]; # doc
"application/vnd.oasis.opendocument.text" = [ "libreoffice-writer.desktop" ]; # odt
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" = [
"libreoffice-calc.desktop"
]; # xlsx
"application/vnd.ms-excel" = [ "libreoffice-calc.desktop" ]; # xls
"application/vnd.oasis.opendocument.spreadsheet" = [ "libreoffice-calc.desktop" ]; # ods
# Text & Code
"text/plain" = [ "nvim.desktop" ];
"text/markdown" = [ "nvim.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" ];
"application/json" = [ "nvim.desktop" ];
"text/x-c" = [ "nvim.desktop" ];
"text/x-c++" = [ "nvim.desktop" ];
"text/x-python" = [ "nvim.desktop" ];
"text/x-makefile" = [ "nvim.desktop" ];
# Terminal
"x-scheme-handler/terminal" = [ "kitty.desktop" ];
# Media
"video/mp4" = [ "mpv.desktop" ];
"video/mkv" = [ "mpv.desktop" ];
"video/webm" = [ "mpv.desktop" ];
"audio/mpeg" = [ "mpv.desktop" ];
"audio/flac" = [ "mpv.desktop" ];
"audio/wav" = [ "mpv.desktop" ];
# Images
"image/png" = [ "loupe.desktop" ];
"image/jpeg" = [ "loupe.desktop" ];
"image/webp" = [ "loupe.desktop" ];
"image/gif" = [ "loupe.desktop" ];
};
};
}

View file

@ -4,39 +4,15 @@
...
}:
{
home.packages = with pkgs; [
kdePackages.qtstyleplugin-kvantum
themix-gui
kvmarwaita
];
# home.file.".config/Kvantum" = {
# source = ./kvantum;
# recursive = true;
# force = true;
# };
# home.file.".config/Kvantum/kvantum.kvconfig" = {
# text = ''
# [General]
# theme=
# '';
# force = true;
# };
qt = {
enable = true;
style = {
name = "kvantum";
package = pkgs.qt6Packages.qtstyleplugin-kvantum;
};
qt5ctSettings = {
Appearance = {
style = "kvantum";
style = "Breeze";
icon_theme = config.gtk.iconTheme.name;
# color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf";
# custom_palette = true;
color_scheme_path = "/home/${config.userOptions.username}/.config/qt5ct/qt5ct.conf";
custom_palette = true;
standard_dialogs = "xdgdesktopportal";
};
Fonts = config.qt.qt6ctSettings.Fonts;
@ -45,10 +21,10 @@
qt6ctSettings = {
Appearance = {
style = "kvantum";
style = "Breeze";
icon_theme = config.gtk.iconTheme.name;
# color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf";
# custom_palette = true;
color_scheme_path = "/home/${config.userOptions.username}/.config/qt6ct/qt6ct.conf";
custom_palette = true;
standard_dialogs = "xdgdesktopportal";
};

View file

@ -0,0 +1,60 @@
{
config,
pkgs,
...
}:
{
systemd.user.sessionVariables = {
XCURSOR_THEME = config.userOptions.cursor.name;
XCURSOR_SIZE = toString config.userOptions.cursor.size;
XCURSOR_PATH = config.userOptions.cursor.path;
};
sops.templates."synology.conf".content = ''
[synology]
type = smb
host = nas.taila30609.ts.net
pass = ${config.sops.placeholder.rclone_synology}
'';
systemd.user.services.synology-mount = {
Unit = {
Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "tailscaled.service" ];
Wants = [ "tailscaled.service" ];
StartLimitBurst = 5;
StartLimitIntervalSec = "1m";
};
Service = {
Type = "simple";
Restart = "on-failure";
RestartSec = "1m";
ExecStart = "${pkgs.writeShellScript "synology-mount" ''
#!/usr/bin/env bash
set -euo pipefail
# Ensure mount point exists
mkdir -p $HOME/Synology || true
# Unmount stale mount if present
/run/wrappers/bin/umount "$HOME/Synology" || true
# Mount rclone in foreground
${pkgs.rclone}/bin/rclone \
--config=${config.sops.templates."synology.conf".path} \
--ignore-checksum \
--log-level INFO \
--rc --rc-serve \
mount "synology:home" "$HOME/Synology"
''}";
ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i";
StandardOutput = "journal";
StandardError = "journal";
};
Install = {
WantedBy = [ "default.target" ];
};
};
}

View file

@ -0,0 +1,108 @@
{
config,
pkgs,
...
}:
let
btop-colors-file = pkgs.writeTextFile {
name = "btop-colors";
text = with config.scheme.withHashtag; ''
# Credit to https://github.com/catppuccin/btop
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="${base00}"
# Main text color
theme[main_fg]="${base05}"
# Title color for boxes
theme[title]="${base05}"
# Highlight color for keyboard shortcuts
theme[hi_fg]="${base0D}"
# Background color of selected item in processes box
theme[selected_bg]="${base02}"
# Foreground color of selected item in processes box
theme[selected_fg]="${base0D}"
# Color of inactive/disabled text
theme[inactive_fg]="${base03}"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="${base06}"
# Background color of the percentage meters
theme[meter_bg]="${base02}"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="${base06}"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="${base0E}" #Mauve
theme[mem_box]="${base0B}" #Green
theme[net_box]="${base12}" #Maroon
theme[proc_box]="${base0D}" #Blue
# Box divider line and small boxes line color
theme[div_line]="${base03}"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="${base0B}"
theme[temp_mid]="${base0A}"
theme[temp_end]="${base08}"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="${base0C}"
theme[cpu_mid]="${base16}"
theme[cpu_end]="${base07}"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="${base0E}"
theme[free_mid]="${base07}"
theme[free_end]="${base0D}"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="${base16}"
theme[cached_mid]="${base0D}"
theme[cached_end]="${base07}"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="${base09}"
theme[available_mid]="${base12}"
theme[available_end]="${base08}"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="${base0B}"
theme[used_mid]="${base0C}"
theme[used_end]="${base15}"
# Download graph colors (Peach -> Red)
theme[download_start]="${base09}"
theme[download_mid]="${base12}"
theme[download_end]="${base08}"
# Upload graph colors (Green -> Sky)
theme[upload_start]="${base0B}"
theme[upload_mid]="${base0C}"
theme[upload_end]="${base15}"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="${base16}"
theme[process_mid]="${base07}"
theme[process_end]="${base0E}"
'';
destination = "/nixos.theme";
};
batConfigDir = pkgs.runCommand "mergedConfig" { } ''
mkdir -p $out/themes
cp -r ${btop-colors-file}/nixos.theme $out/themes/nixos.theme
'';
in
{
home.file.".config/btop" = {
source = batConfigDir;
recursive = true;
};
}

View file

@ -0,0 +1,109 @@
{
config,
pkgs,
...
}:
{
imports = [
./btop.nix
./fish.nix
./kitty.nix
./neovim.nix
./ytfp.nix
];
home.packages = with pkgs; [
# cli utilities
tmux
fastfetch
btop
wget
ripgrep
ncdu
wl-clipboard
rclone
waypipe
spotdl
browsh
mosh
gh
kdePackages.qttools
eza
pigz
# development & tooling
jdk21_headless
quickemu
nerd-fonts.noto
noto-fonts
noto-fonts-color-emoji
nix-prefetch
prowlarr
radarr
sonarr
flaresolverr
nerd-fonts.fira-mono
ffmpeg-full
# formatters
kdePackages.qtdeclarative
prettier
prettierd
nixfmt
stylua
black
clang-tools
];
programs = {
git = {
enable = true;
settings = {
user = {
name = config.userOptions.name;
email = config.userOptions.email;
};
core.pager = "${pkgs.bat}/bin/bat";
commit.gpgsign = true;
init.defaultBranch = "main";
};
};
bat = {
enable = true;
config = {
style = "numbers,changes";
theme = "base16";
};
};
lazygit = {
enable = true;
enableFishIntegration = true;
};
lazysql.enable = true;
fzf = {
enable = true;
enableFishIntegration = true;
defaultOptions = [
"--height 40%"
"--border"
];
colors = with config.scheme.withHashtag; {
bg = base00;
"bg+" = base01;
border = base03;
fg = base05;
"fg+" = base05;
header = base08;
hl = base08;
"hl+" = base08;
info = config.scheme.withHashtag.${config.colors.accent};
label = base05;
marker = base07;
pointer = base06;
prompt = config.scheme.withHashtag.${config.colors.accent};
"selected-bg" = base02;
spinner = base06;
};
};
};
}

View file

@ -1,16 +1,9 @@
{
pkgs,
config,
lib,
...
}:
{
home.packages = with pkgs; [
kdePackages.qttools
eza
pigz
];
programs.fish = {
enable = true;
shellAliases = {
@ -39,10 +32,6 @@
description = "Wrapper for nix-shell that runs fish by default";
body = builtins.readFile ./fish_functions/nix-shell.fish;
};
logout = {
description = "Log out of KDE Plasma";
body = builtins.readFile ./fish_functions/logout.fish;
};
};
};

View file

@ -0,0 +1,127 @@
{
config,
pkgs,
...
}:
{
home.file.".config/kitty/themes" = {
source = pkgs.writeTextFile {
name = "kitty-colors";
text = with config.scheme.withHashtag; ''
# vim:ft=kitty
## name: NixOS Kitty Theme
## author: Catppuccin Org & sckova
## license: MIT
## upstream: https://github.com/catppuccin/kitty
## blurb: The theme generated from the NixOS configuration!
# The basic colors
foreground ${base05}
background ${base00}
selection_foreground ${base00}
selection_background ${base05}
# Cursor colors
cursor ${base05}
cursor_text_color ${base00}
# URL underline color when hovering with mouse
url_color ${base05}
# Kitty window border colors
active_border_color ${config.scheme.withHashtag.${config.colors.accent}}
inactive_border_color ${base01}
bell_border_color ${base12}
# Tab bar colors
active_tab_foreground ${base11}
active_tab_background ${config.scheme.withHashtag.${config.colors.accent}}
inactive_tab_foreground ${base05}
inactive_tab_background ${base10}
tab_bar_background ${base11}
# Colors for marks (marked text in the terminal)
mark1_foreground ${base00}
mark1_background ${base09}
mark2_foreground ${base00}
mark2_background ${base0D}
mark3_foreground ${base00}
mark3_background ${base15}
# The 16 terminal colors
# black
color0 ${base02}
color8 ${base02}
# red
color1 ${base08}
color9 ${base08}
# green
color2 ${base0B}
color10 ${base0B}
# yellow
color3 ${base0A}
color11 ${base0A}
# blue
color4 ${base0D}
color12 ${base0D}
# magenta
color5 ${base17}
color13 ${base17}
# cyan
color6 ${base0C}
color14 ${base0C}
# white
color7 ${base04}
color15 ${base04}
'';
destination = "/kitty-colors.conf";
};
recursive = true;
};
home.file.".config/kitty/ssh.conf" = {
text = ''
shell_integration inherited
'';
};
programs = {
kitty = {
enable = true;
enableGitIntegration = true;
font = {
name = config.userOptions.fontMono.name;
size = config.userOptions.fontMono.size;
};
shellIntegration.enableFishIntegration = true;
keybindings = {
"ctrl+k" = "combine : clear_terminal scroll active : clear_terminal scrollback active";
};
settings = {
include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf";
scrollback_lines = 10000;
wheel_scroll_multiplier = 5.0;
touch_scroll_multiplier = 5.0;
enable_audio_bell = false;
update_check_interval = 0;
confirm_os_window_close = 0;
window_padding_width = 4;
tab_bar_min_tabs = 2;
tab_bar_edge = "top";
tab_bar_style = "powerline";
tab_powerline_style = "slanted";
mouse_hide_wait = "-1.0";
wayland_titlebar_color = "system";
macos_titlebar_color = "system";
};
};
};
}

View file

@ -1,22 +1,10 @@
{
pkgs,
config,
lib,
...
}:
{
home.sessionVariables = {
EDITOR = "nvim";
};
home.packages = with pkgs; [
kdePackages.qtdeclarative
prettier
prettierd
nixfmt
stylua
black
clang-tools
];
home.sessionVariables.EDITOR = lib.mkForce "nvim";
programs.nixvim = {
enable = true;
@ -36,49 +24,38 @@
expandtab = true;
number = true;
};
colorschemes.palette = {
colorschemes.base16 = {
enable = true;
settings = {
palettes = {
main = "base16_custom";
accent = "base16_custom";
state = "base16_custom";
setUpBar = false;
colorscheme =
let
cleanScheme = {
inherit (config.scheme.withHashtag)
base00
base01
base02
base03
base04
base05
base06
base07
base08
base09
base0A
base0B
base0C
base0D
base0E
base0F
;
};
in
cleanScheme
// {
base08 = cleanScheme.${config.colors.accent};
${config.colors.accent} = cleanScheme.base08;
};
# this is helpful for figuring out what color is what:
# https://github.com/tinted-theming/schemes/blob/spec-0.11/base24/catppuccin-frappe.yaml
custom_palettes = with config.scheme.withHashtag; {
main.base16_custom = {
color0 = base00; # background
color1 = base01; # lighter background
color2 = base02; # selection background
color3 = base03; # color inside ${}
color4 = base04; # dark foreground
color5 = config.scheme.withHashtag.${config.colors.accent}; # default foreground, left side of assignments
color6 = base03; # comments
color7 = base07; # lightest foreground
color8 = base05; # variables/tags
};
accent.base16_custom = {
accent0 = base08; # red, integers/constants
accent1 = base0A; # orange, classes/search
accent2 = base0A; # yellow, strings/inherited
accent3 = base0B; # green, support/regex
accent4 = base0D; # blue, functions/headings
accent5 = base0E; # purple, keywords/bold
accent6 = base07; # lavender, deprecated/embedded
};
state.base16_custom = {
error = base08; # red
warning = base0A; # yellow
hint = base0C; # cyan
ok = base0B; # green
info = base0D; # blue
};
};
};
};
keymaps = [
@ -168,7 +145,6 @@
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
keywordLength = 3;
}
{ name = "copilot"; }
{
name = "path"; # file system paths
keywordLength = 3;

View file

@ -0,0 +1,47 @@
# full credit to u/SupermarketAntique32 on reddit:
# https://www.reddit.com/r/commandline/comments/1sd26he/youtube_search_and_play_in_20_lines_of_bash/
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
(writeShellApplication {
name = "ytfp";
runtimeInputs = [
bash
curl
fzf
yt-dlp
chafa
config.programs.mpv.finalPackage
];
text = ''
# `ytfp`: Search YouTube video using `fzf` and play it in `mpv`
SEARCH_VID() {
yt-dlp "https://www.youtube.com/results?search_query=$1" \
--flat-playlist --playlist-items 1:20 --print \
$'%(thumbnails.0.url)s\t%(title)s\t%(channel)s\t%(view_count)s\t%(url)s' \
| grep --extended-regexp --invert-match 'playlist|channel'
}
RENDER_VID_INFO() {
curl --silent "$1" | chafa --size=x14 --clear
echo "Title : $2"
echo "Channel : $3"
echo "Views : $4"
}
export -f SEARCH_VID RENDER_VID_INFO
fzf --preview-window down --layout reverse --disabled --with-shell 'bash -c' \
--bind 'start:reload:SEARCH_VID fzf' \
--bind 'change:reload:sleep 0.3; SEARCH_VID {q} || true' \
--bind 'load:first' \
--delimiter '\t' --with-nth 2 \
--preview 'RENDER_VID_INFO {1} {2} {3} {4}' \
--bind 'enter:execute-silent(mpv {5})'
'';
})
];
}

View file

@ -0,0 +1,114 @@
{ pkgs, config, ... }:
{
imports = [
./niri.nix
./noctalia.nix
./wallpaper.nix
];
home.packages = with pkgs; [
xdg-desktop-portal
brightnessctl
qt6Packages.qt6ct
libsForQt5.qt5ct
catppuccin-qt5ct
xwayland-satellite
playerctl
];
programs.fuzzel = {
enable = true;
package = pkgs.fuzzel;
settings = {
main = {
terminal = "${pkgs.kitty}/bin/kitty";
layer = "overlay";
font = with config.userOptions.fontMono; name + ":size=" + toString (size + 2);
launch-prefix = "${pkgs.niri}/bin/niri msg action spawn --";
icon-theme = config.gtk.iconTheme.name;
};
border = {
width = 2;
radius = 8;
};
colors = with config.scheme; {
background = base00 + "E6";
text = base05 + "E6";
prompt = base04 + "E6";
placeholder = base04 + "E6";
input = base05 + "E6";
match = config.scheme.withHashtag.${config.colors.accent} + "FF";
selection = base04 + "E6";
selection-text = base00 + "E6";
counter = base04 + "E6";
border = config.scheme.withHashtag.${config.colors.accent} + "FF";
};
};
};
programs.swaylock = with config.scheme; {
enable = true;
# package = pkgs.swaylock-effects;
settings = {
# this would sometimes load the previous day's wallpaper
# when it is run before the bing retrieval script finishes
# image = "~/.local/share/wallpaper/daily-colored.jpg";
# effect-blur = "7x5";
color = "000000"; # black
font-size = 24;
indicator-idle-visible = true;
indicator-radius = 100;
show-failed-attempts = true;
bs-hl-color = base09 + "E6"; # peach
caps-lock-bs-hl-color = base09 + "E6"; # peach
caps-lock-key-hl-color = base0E + "E6"; # mauve
inside-color = base00 + "E6"; # base
inside-clear-color = base00 + "E6"; # base
inside-caps-lock-color = base00 + "E6"; # base
inside-ver-color = base00 + "E6"; # base
inside-wrong-color = base00 + "E6"; # base
key-hl-color = base0D + "E6"; # blue
layout-bg-color = base00 + "E6"; # base
layout-border-color = base00 + "E6"; # base
layout-text-color = base05 + "E6"; # text
line-color = base00 + "E6"; # base
line-clear-color = base00 + "E6"; # base
line-caps-lock-color = base00 + "E6"; # base
line-ver-color = base00 + "E6"; # base
line-wrong-color = base00 + "E6"; # base
ring-color = base00 + "E6"; # base
ring-clear-color = base09 + "E6"; # peach
ring-caps-lock-color = base00 + "E6"; # base
ring-ver-color = base0B + "E6"; # green
ring-wrong-color = base00 + "E6"; # base
separator-color = "00000000"; # transparent
text-color = base05 + "E6"; # text
text-clear-color = base09 + "E6"; # peach
text-caps-lock-color = base0E + "E6"; # mauve
text-ver-color = base05 + "E6"; # text
text-wrong-color = base08 + "E6"; # red
};
};
systemd.user.services.swaylock = {
Unit = {
After = [ "niri.service" ];
PartOf = [ "niri.service" ];
Description = "Screen locker";
Documentation = "https://github.com/swaywm/swaylock";
};
Service = {
ExecStart = "${config.programs.swaylock.package}/bin/swaylock";
Restart = "on-failure";
};
Install.WantedBy = [ "niri.service" ];
};
xsession = {
enable = true;
windowManager.command = "niri";
};
}

View file

@ -1,6 +1,5 @@
{
config,
pkgs,
...
}:
{
@ -17,7 +16,7 @@
XCURSOR_THEME = config.userOptions.cursor.name;
XCURSOR_SIZE = toString config.userOptions.cursor.size;
};
screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png";
screenshot-path = "~/Pictures/Screenshots/%a %b %e %Y @%l:%M %p.png";
hotkey-overlay.skip-at-startup = true;
prefer-no-csd = true;
gestures.hot-corners.enable = false;
@ -29,7 +28,6 @@
input = {
focus-follows-mouse.enable = true;
focus-follows-mouse.max-scroll-amount = "0%";
warp-mouse-to-focus.enable = true;
mod-key = "Super";
keyboard = {
numlock = false;
@ -50,13 +48,6 @@
};
};
outputs = {
"eDP-1" = {
scale = 1.5;
position = {
x = 272;
y = 1440;
};
};
"HDMI-A-1" = {
mode = {
width = 3840;
@ -84,17 +75,13 @@
};
cursor = {
hide-when-typing = false;
# hide-after-inactive-ms = 10000;
size = config.userOptions.cursor.size;
theme = config.userOptions.cursor.name;
};
layout = {
gaps = 4;
# background-color = base10;
background-color = "transparent";
default-column-width = {
proportion = 0.5;
};
default-column-width.proportion = 0.5;
preset-column-widths = [
{ proportion = 4.0 / 12.0; }
{ proportion = 6.0 / 12.0; }
@ -103,16 +90,16 @@
border = {
enable = true;
width = 2;
active.color = config.scheme.withHashtag.${config.colors.accent};
inactive.color = base01;
urgent.color = base12;
active.color = config.scheme.withHashtag.${config.colors.accent} + "E6";
inactive.color = base01 + "E6";
urgent.color = base12 + "E6";
};
focus-ring = {
enable = false;
width = 2;
active.color = config.scheme.withHashtag.${config.colors.accent};
inactive.color = base01;
urgent.color = base12;
active.color = config.scheme.withHashtag.${config.colors.accent} + "E6";
inactive.color = base01 + "E6";
urgent.color = base12 + "E6";
};
shadow = {
enable = true;
@ -122,12 +109,6 @@
softness = 30;
color = base11 + "BF";
};
# blur = {
# enable = true;
# passes = 4;
# radius = 4;
# noise = 0.1;
# };
};
window-rules = [
{
@ -138,30 +119,34 @@
bottom-right = 8.0;
};
clip-to-geometry = true;
opacity = 1.0;
}
{
matches = [
{
app-id = "firefox$";
title = "^Picture-in-Picture$";
}
];
open-floating = true;
default-floating-position = {
x = 16;
y = 16;
relative-to = "bottom-left";
opacity = 0.90;
background-effect = {
xray = false;
blur = true;
noise = 0.05;
saturation = 1;
};
draw-border-with-background = false;
}
{
matches = [
{
app-id = "vesktop$";
}
{
app-id = "org.gnome.Nautilus$";
}
];
block-out-from = "screen-capture";
}
{
matches = [
{
is-active = false;
}
];
opacity = 0.90;
}
{
matches = [
{
@ -173,41 +158,98 @@
title = "Minecraft";
}
];
open-maximized = true;
open-maximized-to-edges = true;
open-focused = true;
opacity = 1.00;
}
{
matches = [
{
app-id = "mpv";
}
{
app-id = "firefox";
title = "Picture-in-Picture";
}
];
opacity = 1.0;
}
{
# Kitty Fastfetch window
matches = [
{
app-id = "kitty";
title = "^fastfetch$";
}
];
open-floating = true;
baba-is-float = true;
min-width = 960;
min-height = 480;
max-width = 960;
max-height = 480;
}
];
layer-rules = [
{
matches = [
{
namespace = "^wpaperd.*";
}
];
matches = [ { namespace = "^launcher$"; } ];
background-effect = {
xray = false;
blur = true;
noise = 0.05;
saturation = 1;
};
}
{
matches = [ { namespace = "^wallpaper$"; } ];
place-within-backdrop = true;
}
];
binds = {
"Mod+Shift+Slash".action.show-hotkey-overlay = { };
"Mod+D" = {
action.toggle-window-rule-opacity = { };
repeat = false;
};
"Mod+M" = {
action.spawn = [
"wpctl"
"set-mute"
"@DEFAULT_AUDIO_SOURCE@"
"toggle"
];
hotkey-overlay.title = "Toggle Microphone Mute";
repeat = false;
};
"Mod+T" = {
action.spawn = [ "kitty" ];
hotkey-overlay.title = "Open a Terminal: kitty";
};
"Mod+Shift+T" = {
action.spawn-sh = [ "kitty --title fastfetch sh -c 'fastfetch; sleep 10'" ];
hotkey-overlay.title = "Open a Terminal with Fastfetch";
};
"Mod+Space" = {
action.spawn = [ "fuzzel" ];
hotkey-overlay.title = "Run an Application: Noctalia app launcher";
hotkey-overlay.title = "Run an Application: Fuzzel";
};
"XF86AudioRaiseVolume" = {
action.spawn-sh = [
"noctalia-shell ipc call volume increase"
action.spawn = [
"wpctl"
"set-volume"
"@DEFAULT_AUDIO_SINK@"
"0.05+"
];
allow-when-locked = true;
};
"XF86AudioLowerVolume" = {
action.spawn-sh = [
"noctalia-shell ipc call volume decrease"
action.spawn = [
"wpctl"
"set-volume"
"@DEFAULT_AUDIO_SINK@"
"0.05-"
];
allow-when-locked = true;
};
@ -232,14 +274,20 @@
};
"MouseForward" = {
action.spawn-sh = [
"noctalia-shell ipc call volume increase"
action.spawn = [
"wpctl"
"set-volume"
"@DEFAULT_AUDIO_SINK@"
"0.05+"
];
allow-when-locked = true;
};
"MouseBack" = {
action.spawn-sh = [
"noctalia-shell ipc call volume decrease"
action.spawn = [
"wpctl"
"set-volume"
"@DEFAULT_AUDIO_SINK@"
"0.05-"
];
allow-when-locked = true;
};
@ -264,14 +312,20 @@
};
"XF86AudioMute" = {
action.spawn-sh = [
"noctalia-shell ipc call volume muteOutput"
action.spawn = [
"wpctl"
"set-mute"
"@DEFAULT_AUDIO_SINK@"
"toggle"
];
allow-when-locked = true;
};
"XF86AudioMicMute" = {
action.spawn-sh = [
"noctalia-shell ipc call volume muteInput"
action.spawn = [
"wpctl"
"set-mute"
"@DEFAULT_AUDIO_SOURCE@"
"toggle"
];
allow-when-locked = true;
};
@ -342,29 +396,14 @@
allow-when-locked = true;
};
"XF86Sleep" = {
action.power-off-monitors = { };
};
"XF86Sleep".action.power-off-monitors = { };
"XF86Search" = {
action.spawn = [
"noctalia-shell"
"ipc"
"call"
"launcher"
"toggle"
];
allow-when-locked = true;
};
"XF86Search".action.spawn = [ "fuzzel" ];
"Mod+Shift+L".action.spawn = [ "swaylock" ];
"XF86LaunchA" = {
action.spawn = [
"niri"
"msg"
"action"
"toggle-overview"
];
allow-when-locked = true;
action.toggle-overview = { };
repeat = false;
};
"Mod+O" = {
@ -381,10 +420,6 @@
"Mod+Down".action.focus-window-down = { };
"Mod+Up".action.focus-window-up = { };
"Mod+Right".action.focus-column-right = { };
"Mod+H".action.focus-column-left = { };
"Mod+J".action.focus-window-down = { };
"Mod+K".action.focus-window-up = { };
"Mod+L".action.focus-column-right = { };
"Mod+Ctrl+Left".action.move-column-left = { };
"Mod+Ctrl+Down".action.move-window-down = { };
@ -404,10 +439,6 @@
"Mod+Shift+Down".action.focus-monitor-down = { };
"Mod+Shift+Up".action.focus-monitor-up = { };
"Mod+Shift+Right".action.focus-monitor-right = { };
"Mod+Shift+H".action.focus-monitor-left = { };
"Mod+Shift+J".action.focus-monitor-down = { };
"Mod+Shift+K".action.focus-monitor-up = { };
"Mod+Shift+L".action.focus-monitor-right = { };
"Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { };
"Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { };
@ -492,18 +523,15 @@
"Mod+Ctrl+Shift+F".action.fullscreen-window = { };
"Mod+C".action.center-column = { };
"Mod+Ctrl+C".action.center-visible-columns = { };
"Mod+Minus".action.set-column-width = "-10%";
"Mod+Equal".action.set-column-width = "+10%";
"Mod+Shift+Minus".action.set-window-height = "-10%";
"Mod+Shift+Equal".action.set-window-height = "+10%";
"Mod+Ctrl+Minus".action.set-column-width = "-0.25%";
"Mod+Ctrl+Equal".action.set-column-width = "+0.25%";
"Mod+Ctrl+Shift+Minus".action.set-window-height = "-0.25%";
"Mod+Ctrl+Shift+Equal".action.set-window-height = "+0.25%";
@ -512,18 +540,9 @@
"Mod+W".action.toggle-column-tabbed-display = { };
"Print".action.screenshot = {
show-pointer = false;
};
"Mod+Shift+S".action.screenshot = {
show-pointer = false;
};
"Ctrl+Print".action.screenshot-screen = {
show-pointer = false;
};
"Alt+Print".action.screenshot-window = {
show-pointer = false;
};
"Mod+Shift+S".action.screenshot.show-pointer = false;
"Ctrl+Shift+S".action.screenshot-screen.show-pointer = false;
"Alt+Shift+S".action.screenshot-window.show-pointer = false;
"Mod+Escape" = {
action.toggle-keyboard-shortcuts-inhibit = { };

View file

@ -63,12 +63,12 @@
bar = {
autoHideDelay = 500;
autoShowDelay = 150;
backgroundOpacity = 1;
backgroundOpacity = 0.90;
monitors = [ ];
showCapsule = true;
barType = "simple";
capsuleColorKey = "none";
capsuleOpacity = 1;
capsuleOpacity = 0.90;
displayMode = "always_visible";
floating = false;
marginHorizontal = 5;
@ -79,7 +79,7 @@
outerCorners = false;
screenOverrides = [ ];
showOutline = false;
useSeparateOpacity = false;
useSeparateOpacity = true;
widgets = {
center = [ ];
left = [
@ -203,10 +203,10 @@
unreadBadgeColor = "primary";
}
{
deviceNativePath = "__default__";
deviceNativePath = "";
displayMode = "icon-hover";
hideIfIdle = false;
hideIfNotDetected = false;
hideIfNotDetected = true;
id = "Battery";
showNoctaliaPerformance = false;
showPowerProfiles = true;
@ -348,12 +348,13 @@
animationDisabled = false;
animationSpeed = 1;
autoStartAuth = false;
avatarImage = "/home/sckova/.face";
avatarImage = "/home/${config.userOptions.username}/.face";
boxRadiusRatio = 1;
clockFormat = "hh\\nmm";
clockStyle = "custom";
compactLockScreen = false;
dimmerOpacity = 0.5;
enableBlurBehind = true;
enableLockScreenCountdown = true;
enableShadows = false;
forceBlackScreenCorners = false;
@ -423,7 +424,7 @@
};
notifications = {
backgroundOpacity = 1;
backgroundOpacity = 0.90;
criticalUrgencyDuration = 15;
enableBatteryToast = true;
enableKeyboardLayoutToast = true;
@ -549,7 +550,7 @@
fontFixed = "FiraMono Nerd Font Mono";
fontFixedScale = 1;
networkPanelView = "wifi";
panelBackgroundOpacity = 1;
panelBackgroundOpacity = 0.90;
panelsAttachedToBar = true;
settingsPanelMode = "attached";
tooltipsEnabled = true;
@ -558,7 +559,7 @@
wallpaper = {
automationEnabled = false;
directory = "/home/sckova/.local/share/wallpaper";
directory = "/home/${config.userOptions.username}/.local/share/wallpaper";
enableMultiMonitorDirectories = false;
enabled = false;
fillColor = "#1e1e2e";
@ -598,23 +599,19 @@
After = [ "niri.service" ];
PartOf = [ "niri.service" ];
Description = "Noctalia Shell - Wayland desktop shell";
Documentation = "https://docs.noctalia.dev/docs";
Documentation = "https://docs.noctalia.dev";
X-Restart-Triggers = [
"${config.xdg.configFile."noctalia/settings.json".source}"
"${config.xdg.configFile."noctalia/colors.json".source}"
];
};
Service = {
ExecStart = "${pkgs.noctalia-shell}/bin/noctalia-shell";
Restart = "on-failure";
Environment = [
"LOCALE_ARCHIVE=${pkgs.glibcLocales}/lib/locale"
"TZDIR=${pkgs.tzdata}/share/zoneinfo"
"NOCTALIA_SETTINGS_FALLBACK=%h/.config/noctalia/gui-settings.json"
"QT_QPA_PLATFORM=wayland"
"QT_QPA_PLATFORMTHEME=qt6ct"
];
Environment = [ "QT_QPA_PLATFORMTHEME=qt6ct" ];
};
Install = {
WantedBy = [ "niri.service" ];
};
Install.WantedBy = [ "niri.service" ];
};
}

View file

@ -0,0 +1,107 @@
{
pkgs,
config,
...
}:
{
systemd.user.services.wbg-daemon = {
Unit.Description = "Wallpaper service using wbg (daemon)";
Service.ExecStart = ''
${pkgs.wbg}/bin/wbg -s \
%h/.local/share/wallpaper/daily-colored.jpg
'';
Install.WantedBy = [ "niri.service" ];
};
systemd.user.services.bing-wallpaper = {
Unit.Description = "Download and set Bing wallpaper of the day";
Unit.StartLimitBurst = 6;
Unit.StartLimitIntervalSec = "10m";
Service.Restart = "on-failure";
Service.RestartSec = "10s";
Service.Type = "oneshot";
Service.ExecStart = pkgs.lib.getExe (
pkgs.writeShellApplication {
name = "bing-wallpaper";
runtimeInputs = with pkgs; [
wget
jq
coreutils
libnotify
];
text = ''
OUT="$HOME/.local/share/wallpaper/daily.jpg"
API=$(wget -qO- "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&mkt=en-US&n=1")
BASE=$(echo "$API" | jq -r '.images[0].urlbase')
TITLE=$(echo "$API" | jq -r '.images[0].title')
mkdir -p "$HOME/.local/share/wallpaper"
wget -qO "$OUT" "https://www.bing.com''${BASE}_UHD.jpg"
notify-send \
-a "Wallpaper of the day" \
-u low \
-i preferences-desktop-wallpaper \
"$TITLE"
'';
}
);
Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user start gowall-convert.service";
Install.WantedBy = [ "niri.service" ];
};
systemd.user.timers.bing-wallpaper = {
Unit.Description = "Run bing wallpaper retrieval daily";
Timer.OnCalendar = "*-*-* 10:00:00 GMT";
Timer.Persistent = true;
Install.WantedBy = [ "timers.target" ];
};
systemd.user.services.gowall-convert = {
Unit.Description = "Convert a wallpaper to the system color scheme";
Unit.StartLimitBurst = 6;
Unit.StartLimitIntervalSec = "10m";
Service.Restart = "on-failure";
Service.RestartSec = "10s";
Service.Type = "oneshot";
Service.ExecStart = ''
${pkgs.gowall}/bin/gowall convert \
%h/.local/share/wallpaper/daily.jpg \
--output %h/.local/share/wallpaper/daily-colored.jpg \
-t nix
'';
Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart wbg-daemon.service";
};
home.file.".config/gowall/config.yml".text = with config.scheme.withHashtag; ''
themes:
- name: "nix"
colors:
- "${base06}"
- "${base0F}"
- "${base17}"
- "${base0E}"
- "${base08}"
- "${base12}"
- "${base09}"
- "${base0A}"
- "${base0B}"
- "${base0C}"
- "${base15}"
- "${base16}"
- "${base0D}"
- "${base07}"
- "${base05}"
- "${base07}"
- "${base0D}"
- "${base0D}"
- "${base04}"
- "${base04}"
- "${base04}"
- "${base03}"
- "${base02}"
- "${base00}"
- "${base01}"
- "${base11}"
'';
}

View file

@ -1,76 +0,0 @@
{
config,
pkgs,
...
}:
{
imports = [
./gtk.nix
./qt.nix
./systemd.nix
];
home.file = {
".icons/default/index.theme" = {
text = ''
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=${config.userOptions.cursor.name}
'';
force = true;
};
};
home.pointerCursor = {
gtk.enable = true;
name = config.userOptions.cursor.name;
package = config.userOptions.cursor.package;
size = config.userOptions.cursor.size;
};
home.sessionVariables = {
QT_QPA_PLATFORMTHEME = "qt6ct";
};
gtk = {
enable = true;
# colorScheme = if config.userOptions.isDark then "dark" else "light";
# theme = {
# package = pkgs.kdePackages.breeze-gtk;
# name =
# if config.userOptions.isDark
# then "Breeze-Dark"
# else "Breeze";
# };
# iconTheme = {
# name = if config.userOptions.isDark then "Colloid-Dark" else "Colloid-Light";
# package = pkgs.colloid-icon-theme;
# };
colorScheme = "dark";
iconTheme = {
name = "Colloid-Dark";
package = pkgs.colloid-icon-theme;
};
cursorTheme = {
name = config.home.pointerCursor.name;
package = config.home.pointerCursor.package;
size = config.home.pointerCursor.size;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = ":";
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
gtk-decoration-layout = ":";
};
};
}

View file

@ -1,113 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
systemd.user.sessionVariables = {
XCURSOR_THEME = config.userOptions.cursor.name;
XCURSOR_SIZE = toString config.userOptions.cursor.size;
XCURSOR_PATH = config.userOptions.cursor.path;
};
xdg.configFile."rclone/synology.conf".text = ''
[synology]
type = sftp
user = sckova
host = nas.taila30609.ts.net
key_file = ~/.ssh/key
shell_type = unix
root = home
md5sum_command = "${pkgs.coreutils}/bin/md5sum";
sha1sum_command = "${pkgs.coreutils}/bin/sha1sum";
'';
systemd.user.services.synology-mount = {
Unit = {
Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "tailscaled.service" ];
Wants = [ "tailscaled.service" ];
};
Service = {
Type = "simple";
# ExecStartPre = "${pkgs.writeShellScript "synology-prep" ''
# if mountpoint -q %h/Synology; then
# /run/wrappers/bin/fusermount -uz %h/Synology
# fi
# ${pkgs.coreutils}/bin/mkdir -p %h/Synology
# ''}";
ExecStart = "${pkgs.writeShellScript "synology-mount" ''
#!/usr/bin/env bash
set -euo pipefail
# Ensure mount point exists
mkdir -p $HOME/Synology || true
# Unmount stale mount if present
/run/wrappers/bin/umount "$HOME/Synology" || true
# Mount rclone in foreground
${pkgs.rclone}/bin/rclone \
--config=$HOME/.config/rclone/synology.conf \
--ignore-checksum \
--log-level INFO \
--rc --rc-serve \
mount "synology:" "$HOME/Synology"
''}";
ExecStop = "/run/wrappers/bin/fusermount -uz %h/Synology/%i";
StandardOutput = "journal";
StandardError = "journal";
};
Install = {
WantedBy = [ "default.target" ];
};
};
# systemd.user.services.synology-prefill = {
# Unit = {
# Description = "Prefill Synology NAS rclone cache";
# After = [ "synology-mount.service" ];
# Wants = [ "synology-mount.service" ];
# };
# Service = {
# Type = "simple";
# ExecStart = "${pkgs.writeShellScript "synology-prefill" ''
# #!/usr/bin/env bash
# set -euo pipefail
# ${pkgs.rclone}/bin/rclone rc vfs/refresh -v --fast-list recursive=true >/dev/null
# ''}";
# StandardOutput = "journal";
# StandardError = "journal";
# Restart = "on-failure";
# };
# Install = {
# WantedBy = [ "default.target" ];
# };
# };
# systemd.user.services.input-leap = {
# Unit = {
# Description = "Autostart Input Leap";
# After = [ "graphical-session.target" ];
# };
# Service = {
# Type = "oneshot";
# RemainAfterExit = true;
# PassEnvironment = "DISPLAY";
# ExecStart = "${pkgs.writeShellScript "input-leap-start" ''
# sleep 5
# ${pkgs.input-leap}/bin/input-leap
# ''}";
# };
# Install = {
# WantedBy = [ "graphical-session.target" ];
# };
# };
}

View file

@ -1,110 +0,0 @@
{
config,
pkgs,
...
}:
let
btop-colors = with config.scheme.withHashtag; ''
# Credit to https://github.com/catppuccin/btop
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="${base00}"
# Main text color
theme[main_fg]="${base05}"
# Title color for boxes
theme[title]="${base05}"
# Highlight color for keyboard shortcuts
theme[hi_fg]="${base0D}"
# Background color of selected item in processes box
theme[selected_bg]="${base02}"
# Foreground color of selected item in processes box
theme[selected_fg]="${base0D}"
# Color of inactive/disabled text
theme[inactive_fg]="${base03}"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="${base06}"
# Background color of the percentage meters
theme[meter_bg]="${base02}"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="${base06}"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="${base0E}" #Mauve
theme[mem_box]="${base0B}" #Green
theme[net_box]="${base12}" #Maroon
theme[proc_box]="${base0D}" #Blue
# Box divider line and small boxes line color
theme[div_line]="${base03}"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="${base0B}"
theme[temp_mid]="${base0A}"
theme[temp_end]="${base08}"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="${base0C}"
theme[cpu_mid]="${base16}"
theme[cpu_end]="${base07}"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="${base0E}"
theme[free_mid]="${base07}"
theme[free_end]="${base0D}"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="${base16}"
theme[cached_mid]="${base0D}"
theme[cached_end]="${base07}"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="${base09}"
theme[available_mid]="${base12}"
theme[available_end]="${base08}"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="${base0B}"
theme[used_mid]="${base0C}"
theme[used_end]="${base15}"
# Download graph colors (Peach -> Red)
theme[download_start]="${base09}"
theme[download_mid]="${base12}"
theme[download_end]="${base08}"
# Upload graph colors (Green -> Sky)
theme[upload_start]="${base0B}"
theme[upload_mid]="${base0C}"
theme[upload_end]="${base15}"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="${base16}"
theme[process_mid]="${base07}"
theme[process_end]="${base0E}"
'';
btop-colors-file = pkgs.writeTextFile {
name = "btop-colors";
text = btop-colors;
destination = "/nixos.theme";
};
mergedConfig = pkgs.runCommand "mergedConfig" { } ''
mkdir -p $out/themes
cp -r ${btop-colors-file}/nixos.theme $out/themes/nixos.theme
'';
in
{
home.file.".config/btop" = {
source = mergedConfig;
recursive = true;
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./btop.nix
./fish.nix
./kitty.nix
./neovim.nix
];
}

View file

@ -1,5 +0,0 @@
if status is-login
builtin exit
else
/run/current-system/sw/bin/qdbus org.kde.Shutdown /Shutdown org.kde.Shutdown.logout
end

View file

@ -1,141 +0,0 @@
{
config,
pkgs,
...
}:
let
# Map Catppuccin colors to Kitty theme structure
kitty-colors = with config.scheme.withHashtag; ''
# vim:ft=kitty
## name: Kova's Nixified Kitty
## author: Catppuccin Org & sckova
## license: MIT
## upstream: https://github.com/catppuccin/kitty
## blurb: The theme generated from the NixOS configuration!
# The basic colors
foreground ${base05}
background ${base00}
selection_foreground ${base00}
selection_background ${base06}
# Cursor colors
cursor ${base06}
cursor_text_color ${base00}
# URL underline color when hovering with mouse
url_color ${base06}
# Kitty window border colors
active_border_color ${config.scheme.withHashtag.${config.colors.accent}}
inactive_border_color ${base01}
bell_border_color ${base12}
# Tab bar colors
active_tab_foreground ${base11}
active_tab_background ${config.scheme.withHashtag.${config.colors.accent}}
inactive_tab_foreground ${base05}
inactive_tab_background ${base10}
tab_bar_background ${base11}
# Colors for marks (marked text in the terminal)
mark1_foreground ${base00}
mark1_background ${base09}
mark2_foreground ${base00}
mark2_background ${base0D}
mark3_foreground ${base00}
mark3_background ${base15}
# The 16 terminal colors
# black
color0 ${base02}
color8 ${base02}
# red
color1 ${base08}
color9 ${base08}
# green
color2 ${base0B}
color10 ${base0B}
# yellow
color3 ${base0A}
color11 ${base0A}
# blue
color4 ${base0D}
color12 ${base0D}
# magenta
color5 ${base17}
color13 ${base17}
# cyan
color6 ${base0C}
color14 ${base0C}
# white
color7 ${base04}
color15 ${base04}
'';
kitty-colors-file = pkgs.writeTextFile {
name = "kitty-colors";
text = kitty-colors;
destination = "/kitty-colors.conf";
};
in
{
home.file.".config/kitty/themes" = {
source = kitty-colors-file;
recursive = true;
};
home.file.".config/kitty/ssh.conf" = {
text = ''
shell_integration inherited
'';
};
programs = {
kitty = {
enable = true;
enableGitIntegration = true;
font = {
name = config.userOptions.fontMono.name;
size = config.userOptions.fontMono.size;
};
shellIntegration.enableFishIntegration = true;
keybindings = {
"ctrl+k" = "combine : clear_terminal scroll active : clear_terminal scrollback active";
};
settings = {
include = "/home/${config.userOptions.username}/.config/kitty/themes/kitty-colors.conf";
scrollback_lines = 10000;
wheel_scroll_multiplier = 5.0;
touch_scroll_multiplier = 5.0;
enable_audio_bell = false;
update_check_interval = 0;
confirm_os_window_close = 0;
window_padding_width = 4;
tab_bar_min_tabs = 2;
tab_bar_edge = "top";
tab_bar_style = "powerline";
tab_powerline_style = "slanted";
mouse_hide_wait = "-1.0";
wayland_titlebar_color = "system";
macos_titlebar_color = "system";
};
};
bat = {
enable = true;
# config.theme = "Catppuccin ${config.catppuccinUpper.flavor}";
};
lazygit = {
enable = true;
enableFishIntegration = true;
};
lazysql.enable = true;
};
}

View file

@ -1,121 +0,0 @@
{ pkgs, config, ... }:
{
imports = [
./niri.nix
./noctalia.nix
./wallpaper.nix
];
home.packages = with pkgs; [
xdg-desktop-portal
brightnessctl
qt6Packages.qt6ct
libsForQt5.qt5ct
catppuccin-qt5ct
xwayland-satellite
playerctl
];
programs.fuzzel = {
enable = true;
package = pkgs.fuzzel;
settings = {
main = {
terminal = "${pkgs.kitty}/bin/kitty";
layer = "overlay";
font = with config.userOptions.fontMono; name + ":size=" + toString (size + 2);
launch-prefix = "${pkgs.niri}/bin/niri msg action spawn --";
icon-theme = "Colloid-Dark";
};
border = {
width = 2;
radius = 8;
};
colors = with config.scheme; {
background = base00 + "ff";
text = base05 + "ff";
prompt = base04 + "ff";
placeholder = base04 + "ff";
input = base05 + "ff";
match = config.scheme.withHashtag.${config.colors.accent} + "ff";
selection = base04 + "ff";
selection-text = base00 + "ff";
counter = base04 + "ff";
border = config.scheme.withHashtag.${config.colors.accent} + "ff";
};
};
};
xsession = {
enable = true;
windowManager.command = "niri";
};
xdg.mimeApps = {
enable = true;
associations.added = {
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"x-scheme-handler/discord" = [ "vesktop.desktop" ];
"x-scheme-handler/spotify" = [ "riff.desktop" ];
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
"image/png" = [ "loupe.desktop" ];
"image/jpeg" = [ "loupe.desktop" ];
};
defaultApplications = {
# Web
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"text/html" = [ "firefox.desktop" ];
# Communication & Social
"x-scheme-handler/discord" = [ "vesktop.desktop" ];
"x-scheme-handler/spotify" = [ "riff.desktop" ];
# File Management
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
# Torrents
"application/x-bittorrent" = [ "org.qbittorrent.qBittorrent.desktop" ];
"x-scheme-handler/magnet" = [ "org.qbittorrent.qBittorrent.desktop" ];
# Documents
"application/pdf" = [ "firefox.desktop" ]; # Or libreoffice-draw.desktop
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = [
"libreoffice-writer.desktop"
]; # docx
"application/msword" = [ "libreoffice-writer.desktop" ]; # doc
"application/vnd.oasis.opendocument.text" = [ "libreoffice-writer.desktop" ]; # odt
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" = [
"libreoffice-calc.desktop"
]; # xlsx
"application/vnd.ms-excel" = [ "libreoffice-calc.desktop" ]; # xls
"application/vnd.oasis.opendocument.spreadsheet" = [ "libreoffice-calc.desktop" ]; # ods
# Text & Code
"text/plain" = [ "nvim.desktop" ];
"text/markdown" = [ "nvim.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" ];
"application/json" = [ "nvim.desktop" ];
"text/x-c" = [ "nvim.desktop" ];
"text/x-c++" = [ "nvim.desktop" ];
"text/x-python" = [ "nvim.desktop" ];
"text/x-makefile" = [ "nvim.desktop" ];
# Media
"video/mp4" = [ "mpv.desktop" ];
"video/mkv" = [ "mpv.desktop" ];
"video/webm" = [ "mpv.desktop" ];
"audio/mpeg" = [ "mpv.desktop" ];
"audio/flac" = [ "mpv.desktop" ];
"audio/wav" = [ "mpv.desktop" ];
# Images
"image/png" = [ "loupe.desktop" ];
"image/jpeg" = [ "loupe.desktop" ];
"image/webp" = [ "loupe.desktop" ];
"image/gif" = [ "loupe.desktop" ];
};
};
}

View file

@ -1,81 +0,0 @@
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
wpaperd
];
home.file.".config/wpaperd/config.toml" = {
text = ''
[default]
mode = "center"
[any]
path = "/home/${config.userOptions.username}/.local/share/wallpaper/daily.jpg"
'';
force = true;
};
systemd.user.services.wpaperd = {
Unit = {
Description = "Modern wallpaper daemon for Wayland";
PartOf = [ "niri.service" ];
Requires = [ "niri.service" ];
After = [ "niri.service" ];
};
Service = {
ExecStart = "${pkgs.wpaperd}/bin/wpaperd";
};
Install = {
WantedBy = [ "niri.service" ];
};
};
systemd.user.services.bing-wallpaper = {
Unit = {
Description = "Download and set Bing wallpaper of the day";
After = [ "network-online.target" ];
Wants = [ "network-online.target" ];
};
Service = {
Type = "oneshot";
ExecStart = pkgs.writeShellScript "bing-wallpaper" ''
OUT="''${XDG_DATA_HOME:-$HOME/.local/share}/wallpaper/daily.jpg"
API_RESP=$(${pkgs.wget}/bin/wget -qO- "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&mkt=en-US&n=1") || exit 1
URL_BASE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'urlbase":"[^"]*' | cut -d '"' -f 3)
TITLE=$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'title":"[^"]*' | cut -d '"' -f 3)
${pkgs.coreutils}/bin/mkdir -p "$(dirname "$OUT")"
${pkgs.wget}/bin/wget -qO "$OUT" "https://www.bing.com$URL_BASE\_UHD.jpg" || \
${pkgs.wget}/bin/wget -qO "$OUT" "https://www.bing.com$(echo "$API_RESP" | ${pkgs.gnugrep}/bin/grep -oP 'url":"[^"]*' | cut -d '"' -f 3)"
${pkgs.libnotify}/bin/notify-send \
-a "Bing Wallpaper Service" \
-u low \
-i preferences-desktop-wallpaper \
"$TITLE"
'';
ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart wpaperd.service";
};
Install = {
WantedBy = [ "niri.service" ];
};
};
systemd.user.timers.bing-wallpaper = {
Unit = {
Description = "Run bing wallpaper retrieval daily";
};
Timer = {
OnCalendar = "*-*-* 10:00:00 GMT";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
}

View file

@ -16,33 +16,22 @@
default = "base09";
};
};
# catppuccinUpper = {
# accent = lib.mkOption {
# type = lib.types.str;
# readOnly = true;
# default =
# builtins.substring 0 1 (lib.toUpper config.catppuccin.accent)
# + builtins.substring 1 (-1) config.catppuccin.accent;
# };
# flavor = lib.mkOption {
# type = lib.types.str;
# readOnly = true;
# default =
# builtins.substring 0 1 (lib.toUpper config.catppuccin.flavor)
# + builtins.substring 1 (-1) config.catppuccin.flavor;
# };
# };
userOptions = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
readOnly = false;
default = "Sean Kovacs";
};
username = lib.mkOption {
type = lib.types.str;
readOnly = true;
readOnly = false;
default = "sckova";
};
email = lib.mkOption {
type = lib.types.str;
readOnly = false;
default = "kovacsmillio@gmail.com";
};
hostname = lib.mkOption {
type = lib.types.str;
readOnly = true;
@ -116,32 +105,36 @@
default = pkgs.noto-fonts-color-emoji;
};
};
cursor =
let
attrName = "mocha" + "Peach";
in
{
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "catppuccin-mocha-peach-cursors";
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default = pkgs.catppuccin-cursors.${attrName};
};
size = lib.mkOption {
type = lib.types.int;
readOnly = true;
default = 24;
};
path = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons";
};
cursor = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = config.colors.scheme;
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default =
with config.scheme;
(pkgs.bibata-cursor.override {
themeName = config.colors.scheme;
baseColor = withHashtag.${config.colors.accent};
outlineColor = withHashtag.base00;
watchBackgroundColor = withHashtag.base11;
cursorSizes = "16 20 22 24 28 32 40 48 56 64 72 80 88 96";
});
};
size = lib.mkOption {
type = lib.types.int;
readOnly = true;
default = 24;
};
path = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "${config.userOptions.cursor.package}/share/icons/${config.colors.scheme}";
};
};
# isDark = lib.mkOption {
# type = lib.types.bool;
# readOnly = true;

View file

@ -0,0 +1,103 @@
{
pkgs ? import <nixpkgs> { },
themeName ? "bibata",
baseColor ? "#000000",
outlineColor ? "#FFFFFF",
watchBackgroundColor ? "",
cursorSizes ? "24",
}:
let
version = "2.0.7";
src = pkgs.fetchFromGitHub {
owner = "ful1e5";
repo = "Bibata_Cursor";
rev = "v${version}";
hash = "sha256-kIKidw1vditpuxO1gVuZeUPdWBzkiksO/q2R/+DUdEc=";
};
yarnOfflineCache = pkgs.fetchYarnDeps {
yarnLock = "${src}/yarn.lock";
hash = "sha256-EpWIGoFFokmzRML2r/dCM+TImOCtii8mifLgnLKdUMY=";
};
in
pkgs.stdenv.mkDerivation {
pname = "bibata-${themeName}-cursor";
inherit version src;
nativeBuildInputs = with pkgs; [
yarn
nodejs
fixup-yarn-lock
python3Packages.clickgen
autoPatchelfHook
];
buildInputs = with pkgs; [
# Required to satisfy dynamic linking for prebuilt JS native modules (like resvg-js)
stdenv.cc.cc.lib
];
configurePhase = ''
runHook preConfigure
export HOME=$(mktemp -d)
echo "1. Setup offline yarn cache"
yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
fixup-yarn-lock yarn.lock
echo "2. Install node_modules offline"
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
patchShebangs node_modules/
rm -rf node_modules/@resvg/resvg-js-linux-*-musl
echo "3. Patch prebuilt node binaries (like resvg) so they can run in the Nix sandbox"
autoPatchelf node_modules/
# https://github.com/ful1e5/cbmp/issues/4
echo "4. Patch 'ora' library to prevent Nix sandbox hangs"
sed -i 's/this.#isEnabled = .*/this.#isEnabled = false;/g' node_modules/ora/index.js
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
echo "Splitting SVGs to render across $NIX_BUILD_CORES cores..."
echo "1. Distribute SVGs evenly into chunk directories"
if [ -n "${watchBackgroundColor}" ]; then
./node_modules/.bin/cbmp -d "svg" -o "bitmaps/${themeName}" -bc "${baseColor}" -oc "${outlineColor}" -wc "${watchBackgroundColor}"
else
./node_modules/.bin/cbmp -d "svg" -o "bitmaps/${themeName}" -bc "${baseColor}" -oc "${outlineColor}"
fi
echo "Rendering complete. Building XCursor theme..."
echo "4. Build the final cursors"
ctgen configs/normal/x.build.toml -s ${cursorSizes} -p x11 -d "bitmaps/${themeName}" -n "${themeName}" -c "${themeName} cursors"
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -dm 0755 $out/share/icons
cp -r themes/${themeName} $out/share/icons/
runHook postInstall
'';
meta = with pkgs.lib; {
description = "Custom colored Bibata Cursor theme built from source";
homepage = "https://github.com/ful1e5/Bibata_Cursor";
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -1,56 +0,0 @@
{
lib,
stdenv,
fetchYarnDeps,
yarn,
nodejs,
fixup-yarn-lock,
nodePackages,
catppuccin-discord-git,
}:
stdenv.mkDerivation rec {
pname = "catppuccin-discord";
version = "unstable-${catppuccin-discord-git.rev}";
src = catppuccin-discord-git;
yarnOfflineCache = fetchYarnDeps {
yarnLock = "${src}/yarn.lock";
hash = "sha256-BhE3aKyA/LBErjWx+lbEVb/CIXhqHkXbV+9U2djIBhs=";
};
nativeBuildInputs = [
yarn
nodejs
fixup-yarn-lock
nodePackages.sass
];
postPatch = ''
substituteInPlace package.json \
--replace-fail "--no-charset --no-source-map" ""
'';
configurePhase = ''
export HOME=$TMPDIR
yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
fixup-yarn-lock yarn.lock
yarn install --offline --frozen-lockfile --ignore-scripts --ignore-platform
'';
buildPhase = ''
yarn --offline release
'';
installPhase = ''
mkdir -p $out/share/catppuccin-discord
cp -r dist/dist/* $out/share/catppuccin-discord/
'';
meta = {
description = "Soothing pastel theme for Discord";
homepage = "https://github.com/catppuccin/discord";
license = lib.licenses.mit;
platforms = lib.platforms.all;
};
}

View file

@ -1,51 +0,0 @@
{
lib,
stdenvNoCC,
kvlibadwaita-git,
colorScheme ? null,
}:
stdenvNoCC.mkDerivation {
pname = "kvlibadwaita";
version = "git";
# Pulls from the flake-provided git variable
src = kvlibadwaita-git;
# We take the colors as an input but do nothing with them yet per your instructions.
# They are passed into the derivation environment just in case, but unused for now.
passthru = {
inherit colorScheme;
};
# Standard phases are skipped for pure file-copying derivations to save time
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
# Recreate the exact requested directory structure in the output
mkdir -p $out/src/Colors
mkdir -p $out/src/KvLibadwaita
# Export Colors
cp "src/Colors/Libadwaita Dark.colors" "$out/src/Colors/"
cp "src/Colors/Libadwaita Light.colors" "$out/src/Colors/"
# Export KvLibadwaita files
cp "src/KvLibadwaita/KvLibadwaita.kvconfig" "$out/src/KvLibadwaita/"
cp "src/KvLibadwaita/KvLibadwaita.svg" "$out/src/KvLibadwaita/"
cp "src/KvLibadwaita/KvLibadwaitaDark.kvconfig" "$out/src/KvLibadwaita/"
cp "src/KvLibadwaita/KvLibadwaitaDark.svg" "$out/src/KvLibadwaita/"
runHook postInstall
'';
meta = with lib; {
description = "Libadwaita theme for Kvantum";
homepage = "https://github.com/GabePoel/kvlibadwaita"; # Update if pointing to a specific fork
license = licenses.gpl3Only;
platforms = platforms.linux;
};
}

View file

@ -1,15 +1,8 @@
final: prev: {
spotify-webapp = final.callPackage ./spotify-webapp { };
bibata-cursor = final.callPackage ./bibata-cursor { };
catppuccin-discord = final.callPackage ./catppuccin-discord {
inherit (final) catppuccin-discord-git;
};
kvlibadwaita = final.callPackage ./kvlibadwaita {
inherit (final) kvlibadwaita-git;
};
openmw = prev.openmw.overrideAttrs (oldAttrs: {
openmw-unstable = prev.openmw.overrideAttrs (oldAttrs: {
pname = "openmw";
src = final.openmw-git;
version = "${final.openmw-git.rev}";

51
secrets/secrets.yaml Normal file
View file

@ -0,0 +1,51 @@
#ENC[AES256_GCM,data:TggQPAlRHvMKs5nMF7arHHoXjj6+1c0n1DuIS5UFXuRob9E2AHn3JCObcPW/IH0JOcg=,iv:PFDAr1ZQMu158TglCPFqK548LfOtYHT+7zon83JN8IY=,tag:72fhZeqDG7yK+pv1k330zA==,type:comment]
searxng_secret: ENC[AES256_GCM,data:j/PY84sAXdcP/WaekjhT+wYDa1Q9OBWchrAUKpW7ygSEMqbiIx5i/bmjyqjifnZqKvy/hgF/SA2ZbFKsQ5jjpQ==,iv:8Sv9WTjO+Vkrgmd+V6l7vdMPPtjBVkWfeG/DRsbhQYE=,tag:jc3HWlyAUUmkzZMnv8Kbmw==,type:str]
#ENC[AES256_GCM,data:HBJEtuvZUeUD51q8/d+d6lQ4Yke1RfHDqo4P9l21mbvF2rrHp0KRNH0=,iv:cNpmj145TKmF/bNQN3wFeAXoqWkLxu0bqvEhydRQZcs=,tag:x02R5lfpYUMZw3eSRA5MIA==,type:comment]
rclone_synology: ENC[AES256_GCM,data:2k9aYyXMDDYt740VUUvvTSUQ+ybK3PIkBetqw5wmCXYEumk=,iv:J3ZFY3iX7OHoriJNHbmCYHglwNeh+T1UP9q608wAXGU=,tag:QmyVZQiQzBhoB9jkOiruhw==,type:str]
#ENC[AES256_GCM,data:CvsKAAXJQWM8t5bc0eInokZr,iv:YpEJYqyDNGydfrUBoLeUyJsnai/jMAo0PojRmpVPmN8=,tag:9DoQE+Wic5OnWcGIZNFsIg==,type:comment]
sckova_password: ENC[AES256_GCM,data:JgXq8TyCGI072g==,iv:kPme4bkmAfj+np32LoAcDWoQA2qFnTdqnyTSwB2TvBk=,tag:hAPQ+dWW+7QstyEdvSvpGw==,type:str]
sops:
age:
- recipient: age1k9zp37p9sejvpvwu688t7jkl8utkugrsch7a9ahufpq7uhj609gqsd3wka
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaTDA0NVNWZEcwb0ltL2sy
aExnSzNJV1NZS3M1N2Q4YlJ4VzN6T0g5dWd3CmY5STFBTW9DdjV3bStpTlkwdDNj
V3lUT0Rpc0tJb0RiNXd1OEV2RVZVZ00KLS0tIGVna0c5Mi9lamxURmdRYVlNTndU
T2ZhWHl2RVhYMjdBSG1ERmIzWlQ3UmMKYNtmkBicEaYDKteBEixZ9JHDiIoQsMOr
V+31mcG0qeGn0HBFyJoWSxJsyXKdM42qzz9P70XQPHqiXmMz3zuniQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1dx9rwrkhqj8sfr8vdfsgrqjwqefzmgtugsp6ykklpudfw4hcnuyqx9x20e
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3VFdBVytyY29zckFQVE1v
dllxbDUxR2h0Qy9nMlUxN1VPZHlHVkhuVzNRClpYWkREUnZzUTBvZjlzQnI4TnFr
Y2xNRngwNmpXMVFoa1FzYnpiTE5FcXcKLS0tIHRWY3RsK3NXOS9UakNPV2lKWERo
ZEpqaVBCc0J1Ui9pZE1wOUkxN2NPNUkKmrT2o9AgJAQsPZkZEoeNy2VbqgiNE+PW
P9YutsxmnbCwiLt4GItq0ZSDxRr2mPcLOZcJZ3M7MFoka36peXilUg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1ygykyl3xyfhkt0x46frqnef4f39w0cnu6d98nf0efl43f706uqtsnsx5nd
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWdGRYQ3Z1YXdZaFk1eG1n
bFRBMXZOc0hnQjRWaGRaSTBqS1NoUUFjOG1nClhFd2ZEUTQ2WFIrTzVrbU5NOUpE
VDBYSmdVTk1RT1g5dXB3eXl4YklUMEUKLS0tIEZGMEw3VWpQVXYwajFJeFQ4cjdj
anJmOWpjR0w1c3RBWC9kUVFpRlNRWWcKqSxAQIOdnDKLiDorI7NZpwweLiNftQd/
G+kIZPqLmGt7LxuYfvazAZ0qha9UJ9/IWiiY4goc7THF8fPTNhbwwQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-04-03T13:51:22Z"
mac: ENC[AES256_GCM,data:jQtzEZWE6csGTQE939UAl3xA6ecqLD4aGRqw7KF7GqW0w3FTfC59uel1xM2Nl91Bg42TzYsO9WB3rox5daFAcUgoQE0TNMAbH+w/vkVc3NoJHrWQlV69j8zUAAiNgbAx30l1MIjLS/zJ6Xlt+jkj4FtPfK0d84V/O2KwCBAJ+uM=,iv:+u3muRmMuZJUcUNHJDOqzytxgK60YxxmawwQeUTm9aU=,tag:mR8lTA7dgfOqYqUvCAuYFQ==,type:str]
pgp:
- created_at: "2026-04-03T20:00:57Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DrD+TWkWMG9QSAQdA0UdBBAWr7EsXODCWUq6xwueaGar9NX2czQM2r5ALyl8w
2sG5IY/tj3baCwZwljtK7BzhkMfkY9dfW9a9pkZ/ptWYQLAVmGJTFLDo/tXFl0ol
0lwBFmeeDYqoGb/p4Vzu4bWNziy0pVt6tgcaQmtrPW576SWJ2hg2O5GwKX2yWPu4
iotgvTARkLWiXkKxyTYhWDQVmL4ue1AsNVxGI6NHaosVwgcR+O88ZGnyoc7g9Q==
=+F0l
-----END PGP MESSAGE-----
fp: 7622FD7E6AB9F1E9D2CEFE2700F325187C68651A
unencrypted_suffix: _unencrypted
version: 3.12.2

7
sops-example.yaml Normal file
View file

@ -0,0 +1,7 @@
# nix-shell -p openssl --run 'openssl rand -hex 32'
searxng_secret:
# echo 'secretpassword' | rclone obscure -
rclone_synology:
# sckova's password
sckova_password:

16
sops.nix Normal file
View file

@ -0,0 +1,16 @@
{
config,
lib,
pkgs,
...
}:
{
sops = {
defaultSopsFile = ./secrets/secrets.yaml;
defaultSopsFormat = "yaml";
secrets = {
searxng_secret = { };
rclone_synology = { };
};
};
}

View file

@ -2,45 +2,40 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{
config,
pkgs,
...
}:
{
environment.sessionVariables = {
# this makes electron apps work per the wiki
NIXOS_OZONE_WL = "1";
# the user to activate
userOptions = {
name = "Sean Kovacs";
username = "sckova";
email = "kovacsmillio@gmail.com";
};
boot = {
plymouth = {
enable = true;
logo = "${pkgs.nixos-icons}/share/icons/hicolor/64x64/apps/nix-snowflake-white.png";
};
sops.secrets.sckova_password.neededForUsers = true;
users.users.sckova.hashedPasswordFile = config.sops.secrets.sckova_password.path;
boot = {
plymouth.enable = true;
plymouth.logo = "${pkgs.nixos-icons}/share/icons/hicolor/64x64/apps/nix-snowflake-white.png";
loader = {
timeout = 3;
# systemd-boot = {
timeout = 0;
systemd-boot.enable = true;
# limine = {
# enable = true;
# consoleMode = lib.mkForce "auto";
# configurationLimit = 10;
# maxGenerations = 10;
# style = {
# wallpapers = [ ];
# wallpaperStyle = "stretched";
# backdrop = "#1e1e2e";
# interface = {
# branding = "kova's nixos!";
# brandingColor = 5;
# };
# };
# };
limine = {
enable = true;
maxGenerations = 10;
extraConfig = ''
timeout: 3
'';
style = {
wallpapers = [ ];
wallpaperStyle = "stretched";
backdrop = "#1e1e2e";
interface = {
branding = "kova's nixos!";
brandingColor = 5;
};
};
};
# efi.canTouchEfiVariables = true;
};
kernelParams = [
"quiet"
@ -53,11 +48,146 @@
];
consoleLogLevel = 0;
initrd.verbose = false;
extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
};
networking.networkmanager.enable = true;
hardware.bluetooth.enable = true;
programs = {
gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-curses;
};
niri.enable = true;
niri.package = pkgs.niri-unstable;
dconf.enable = true;
dconf.profiles.user = {
databases = [
{
# breaks user-level indirect config of dconf
# lockAll = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
clock-format = "12h";
clock-show-weekday = true;
};
"org/gnome/desktop/wm/preferences" = {
button-layout = ":";
action-double-click-titlebar = "'none'";
};
"org/gnome/desktop/media-handling" = {
automount = false;
automount-open = false;
autorun-never = true;
};
"org/gnome/settings-daemon/plugins/power" = {
sleep-inactive-ac-type = "nothing";
};
"org/gnome/mutter" = {
edge-tiling = true;
dynamic-workspaces = true;
experimental-features = [ "variable-refresh-rate" ];
};
};
}
];
};
};
services = {
displayManager = {
autoLogin.enable = true;
autoLogin.user = config.userOptions.username;
defaultSession = "niri";
sddm.enable = true;
sddm.wayland.enable = true;
};
gnome.gnome-keyring.enable = true;
libinput.enable = true;
printing.enable = true;
pipewire = {
enable = true;
systemWide = true;
wireplumber.enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
udisks2.enable = true;
gvfs.enable = true;
upower.enable = true;
power-profiles-daemon.enable = true;
openssh.enable = true;
glances.enable = true;
glances.package = pkgs.glances.overrideAttrs (oldAttrs: {
disabledTests = (oldAttrs.disabledTests or [ ]) ++ [
"test_phys_core_returns_int"
];
});
};
environment.systemPackages = with pkgs; [
git
firefoxpwa
(wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
];
})
];
security = {
pam.services = {
niri.enableGnomeKeyring = config.services.gnome.gnome-keyring.enable;
swaylock = {
name = "swaylock";
enableGnomeKeyring = config.services.gnome.gnome-keyring.enable;
gnupg.enable = true;
gnupg.noAutostart = true;
};
};
sudo.wheelNeedsPassword = false;
polkit.enable = true;
};
networking = {
firewall.enable = false;
networkmanager.enable = true;
hosts = {
"192.168.1.64" = [
"kube1"
"kube1.local"
"kube1.attlocal.net"
];
"192.168.1.65" = [
"kube2"
"kube2.local"
"kube2.attlocal.net"
];
"192.168.1.66" = [
"kube3"
"kube3.local"
"kube3.attlocal.net"
"kube3.taila30609.ts.net"
];
"192.168.1.67" = [
"kube4"
"kube4.local"
"kube4.attlocal.net"
];
};
};
documentation.man.enable = true;
hardware.graphics.enable = true;
hardware.bluetooth.enable = true;
time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
@ -72,108 +202,6 @@
LC_TIME = "en_US.UTF-8";
};
# Enable OpenGL
hardware.graphics = {
enable = true;
};
programs.niri = {
enable = true;
package = pkgs.niri-unstable;
};
services.gnome.gnome-keyring.enable = true;
security.pam.services.niri.enableGnomeKeyring = true;
programs.dconf.enable = true;
programs.dconf.profiles.user = {
databases = [
{
# breaks user-level indirect config of dconf
# lockAll = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
clock-format = "12h";
clock-show-weekday = true;
};
"org/gnome/desktop/wm/preferences" = {
button-layout = ":";
action-double-click-titlebar = "'none'";
};
"org/gnome/desktop/media-handling" = {
automount = false;
automount-open = false;
autorun-never = true;
};
"org/gnome/settings-daemon/plugins/power" = {
sleep-inactive-ac-type = "nothing";
};
"org/gnome/mutter" = {
edge-tiling = true;
dynamic-workspaces = true;
experimental-features = [ "variable-refresh-rate" ];
};
};
}
];
};
# aerothemeplasma = {
# enable = true;
# plasma.enable = true;
# fonts.enable = false;
# plymouth.enable = false;
# sddm.enable = true;
# };
services = {
# displayManager = {
# gdm.enable = true;
# defaultSession = "niri";
# };
desktopManager.plasma6.enable = true;
displayManager = {
sddm.enable = true;
# defaultSession = "aerothemeplasma";
};
libinput.enable = true;
printing.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
udisks2.enable = true;
gvfs.enable = true;
upower.enable = true;
power-profiles-daemon.enable = true;
};
environment = {
systemPackages = with pkgs; [
git
firefoxpwa
distrobox
];
};
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-curses;
};
networking.firewall.enable = false;
documentation.man = {
enable = true;
generateCaches = false;
};
services.openssh.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave

37
system/games/default.nix Normal file
View file

@ -0,0 +1,37 @@
{
config,
pkgs,
lib,
...
}:
{
programs = {
gamescope = {
enable = true;
capSysNice = false;
args = [
"--output-width 3840"
"--nested-width 3840"
"--output-height 2160"
"--nested-height 2160"
"--expose-wayland"
"--fullscreen"
];
};
gamemode.enable = true;
};
services = {
ananicy = {
enable = true;
package = pkgs.ananicy-cpp;
rulesProvider = pkgs.ananicy-cpp;
extraRules = [
{
"name" = "gamescope";
"nice" = -20;
}
];
};
};
}

View file

@ -8,12 +8,16 @@
environment.systemPackages = with pkgs; [
ddcutil
mangohud
(bottles.override { removeWarningPopup = true; })
openrgb
p7zip
protontricks
zenity
wineWow64Packages.stable
wineWow64Packages.waylandFull
];
# enable ddcutil
users.users.sckova.extraGroups = [ "i2c" ];
users.users.${config.userOptions.username}.extraGroups = [ "i2c" ];
boot.extraModulePackages = [ config.boot.kernelPackages.ddcci-driver ];
boot.kernelModules = [
"i2c-dev"
@ -36,10 +40,6 @@
boot.loader.limine.maxGenerations = lib.mkForce 100;
programs = {
gamescope = {
enable = true;
capSysNice = false;
};
steam = {
enable = true;
gamescopeSession.enable = true;
@ -48,38 +48,11 @@
};
};
services.ananicy = {
enable = true;
package = pkgs.ananicy-cpp;
rulesProvider = pkgs.ananicy-cpp;
extraRules = [
{
"name" = "gamescope";
"nice" = -20;
}
];
};
services.xserver.videoDrivers = [
"modesetting"
"nvidia"
];
services.displayManager = {
autoLogin = {
enable = false;
user = "sckova";
};
};
environment = {
loginShellInit = ''
[[ "$(tty)" = "/dev/tty1" ]] && ./gs.sh
'';
};
security.sudo.wheelNeedsPassword = false;
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
@ -87,13 +60,6 @@
open = false;
};
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
openFirewall = true;
};
# virtualization settings
virtualisation = {
@ -109,14 +75,21 @@
virtualisation.hypervGuest.enable = true;
boot.blacklistedKernelModules = [ "hyperv_fb" ];
boot.binfmt.emulatedSystems = [
"aarch64-linux"
"riscv64-linux"
];
# i don't even remember what this does or why i added it
systemd.tmpfiles.rules = [
"L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"
"d /mnt/storage 0775 sckova users - -"
"d /mnt/storage 0775 ${config.userOptions.username} users - -"
];
services.factorio = {
enable = true;
openFirewall = true;
requireUserVerification = false;
lan = true;
port = 25565;
# bind = "[::]"; # support IPv6
game-name = "kova's minecraft";
game-password = "ThisIsASuperSecurePasswordThatNobodyWillGuess";
admins = [ config.userOptions.username ];
};
}

View file

@ -1,27 +0,0 @@
#!/usr/bin/env bash
set -xeuo pipefail
gamescopeArgs=(
--adaptive-sync # VRR support
--hdr-enabled
--mangoapp # performance overlay
--rt
--steam
)
steamArgs=(
-pipewire-dmabuf
-tenfoot
)
mangoConfig=(
cpu_temp
gpu_temp
ram
vram
)
mangoVars=(
MANGOHUD=1
MANGOHUD_CONFIG="$(IFS=,; echo "${mangoConfig[*]}")"
)
export "${mangoVars[@]}"
exec gamescope "${gamescopeArgs[@]}" -- steam "${steamArgs[@]}"

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -1,7 +1,8 @@
{
pkgs,
config,
pkgs,
lib,
seamless-asahi-plymouth,
...
}:
let
@ -13,10 +14,43 @@ let
};
in
{
nixpkgs.overlays = [
(final: prev: {
uboot-asahi = prev.uboot-asahi.overrideAttrs (old: {
postConfigure = (old.postConfigure or "") + ''
cat >> .config <<'EOF'
# CONFIG_VIDEO_LOGO is not set
CONFIG_DISPLAY_BOARDINFO_LATE=n
CONFIG_BOOTDELAY=0
CONFIG_SILENT_CONSOLE=y
CONFIG_PREBOOT="setenv silent 1"
EOF
# Regenerate the configuration with new flags
make olddefconfig
'';
});
})
];
boot = {
kernelParams = [ "appledrm.show_notch=1" ];
m1n1CustomLogo = "${asahi-artwork}/logos/png_256/AsahiLinux_logomark.png";
plymouth.logo = lib.mkForce "${asahi-artwork}/logos/png_64/AsahiLinux_logomark.png";
# thank you to u/douv:
# https://www.reddit.com/r/AsahiLinux/comments/1sb8cby/retro_boot_logo/
m1n1CustomLogo = ./apple-rainbow.png;
plymouth = {
enable = true;
theme = "seamless-asahi";
themePackages = [
(seamless-asahi-plymouth.packages.${pkgs.system}.default.override {
logo = ./apple-rainbow.png;
})
];
extraConfig = ''
DeviceScale=1
'';
};
};
programs.dconf.profiles.gdm.databases = [
@ -26,6 +60,19 @@ in
}
];
# environment.systemPackages = with pkgs; [
# # note for wine support (should be done by 26.05 release):
# # https://github.com/NixOS/nixpkgs/issues/412458
# muvm
# fex
# ];
services.logind.settings.Login = {
HandleSuspendKey = "ignore";
HandlePowerKey = "lock";
HandleLidSwitch = "lock";
};
virtualisation.docker = {
enable = true;
# Use the rootless mode - run Docker daemon as non-root user
@ -34,7 +81,7 @@ in
setSocketVariable = true;
};
};
users.users.sckova.extraGroups = [ "docker" ];
users.users.${config.userOptions.username}.extraGroups = [ "docker" ];
hardware.asahi = {
enable = true;
@ -52,6 +99,4 @@ in
'';
};
};
security.sudo.wheelNeedsPassword = false;
}

View file

@ -1,17 +0,0 @@
{ catppuccin, ... }:
{
home-manager.users.sckova = {
imports = [ catppuccin.homeModules.catppuccin ];
};
services.spice-vdagentd.enable = true;
virtualisation.vmVariant = {
virtualisation = {
memorySize = 8192;
cores = 6;
};
};
security.sudo.wheelNeedsPassword = false;
}

View file

@ -1,22 +1,20 @@
{
lib,
pkgs,
config,
...
}:
{
sops.templates."searxng.env".content = ''
SEARXNG_SECRET=${config.sops.placeholder.searxng_secret}
'';
services.searx = {
enable = true;
redisCreateLocally = true;
environmentFile = config.sops.templates."searxng.env".path;
settings = {
server = {
secret_key = lib.removeSuffix "\n" (
builtins.readFile (
pkgs.runCommand "gen-key" { buildInputs = [ pkgs.openssl ]; } "openssl rand -hex 32 > $out"
)
);
port = 8080;
port = 5364;
bind_address = "127.0.0.1";
};

View file

@ -19,5 +19,4 @@
alias edit "nvim"
'';
};
documentation.man.generateCaches = false;
}

View file

@ -7,26 +7,21 @@
lib,
...
}:
let
tailscaleWaitScript = pkgs.writeShellScript "tailscale-wait-for-ip" ''
echo "Waiting for tailscale0 to get an IP address..."
for i in {1..15}; do
if ${lib.getExe' pkgs.iproute2 "ip"} addr show dev tailscale0 2>/dev/null | ${lib.getExe' pkgs.gnugrep "grep"} -q 'inet '; then
echo "tailscale0 has IP address"
exit 0
fi
echo "Attempt $i"
sleep 1
done
echo "Warning: tailscale0 did not get IP address within 15 seconds"
exit 0
'';
in
{
systemd.services.tailscaled = {
serviceConfig = {
ExecStartPost = tailscaleWaitScript;
};
serviceConfig.ExecStartPost = pkgs.writeShellScript "tailscale-wait-for-ip" ''
echo "Waiting for tailscale0 to get an IP address..."
for i in {1..15}; do
if ${lib.getExe' pkgs.iproute2 "ip"} addr show dev tailscale0 2>/dev/null | ${lib.getExe' pkgs.gnugrep "grep"} -q 'inet '; then
echo "tailscale0 has IP address"
exit 0
fi
echo "Attempt $i"
sleep 1
done
echo "Warning: tailscale0 did not get IP address within 15 seconds"
exit 0
'';
};
services.tailscale = {

View file

@ -7,29 +7,42 @@
}:
{
nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [
(final: prev: {
wrapFirefox =
browser: opts:
let
extraPrefs = (opts.extraPrefs or "") + ''
lockPref("media.gmp-widevinecdm.version", "system-installed");
lockPref("media.gmp-widevinecdm.visible", true);
lockPref("media.gmp-widevinecdm.enabled", true);
lockPref("media.gmp-widevinecdm.autoupdate", false);
lockPref("media.eme.enabled", true);
lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true);
'';
widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm";
widevineOutDir = "$out/gmp-widevinecdm/system-installed";
in
(prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: {
buildCommand = previousAttrs.buildCommand + ''
mkdir -p "${widevineOutDir}"
ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so"
ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json"
wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}"
'';
});
})
(
final: prev:
let
# Determine the correct directory name based on the system architecture
archDir =
if final.stdenv.hostPlatform.isAarch64 then
"linux_arm64"
else if final.stdenv.hostPlatform.isx86_64 then
"linux_x64"
else
throw "Unsupported architecture for Widevine CDM";
in
{
wrapFirefox =
browser: opts:
let
extraPrefs = (opts.extraPrefs or "") + ''
lockPref("media.gmp-widevinecdm.version", "system-installed");
lockPref("media.gmp-widevinecdm.visible", true);
lockPref("media.gmp-widevinecdm.enabled", true);
lockPref("media.gmp-widevinecdm.autoupdate", false);
lockPref("media.eme.enabled", true);
lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true);
'';
widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm";
widevineOutDir = "$out/gmp-widevinecdm/system-installed";
in
(prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: {
buildCommand = previousAttrs.buildCommand + ''
mkdir -p "${widevineOutDir}"
ln -s "${widevineCdmDir}/_platform_specific/${archDir}/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so"
ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json"
wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}"
'';
});
}
)
];
}