Compare commits

...
Sign in to create a new pull request.

511 commits

Author SHA1 Message Date
924e9b7ab4 Syncthing: move device info to separate file 2025-12-20 01:00:31 +01:00
beb9705d2f Flake: update secrets 2025-12-19 13:21:31 +01:00
b5a8a9a545 Common; disable mutable users 2025-12-19 12:20:35 +01:00
6365f7b4f3 Common: set toast password 2025-12-19 12:14:24 +01:00
27babd819c Flake: update lock file 2025-12-19 00:52:35 +01:00
0d0d6ebb56 Machines/Archie: mount hard drive 2025-12-19 00:52:35 +01:00
fa8efef26a Programs/distrobox: add container 2025-12-19 00:52:35 +01:00
e8af512370 Desktop/distrobox: enable 2025-12-19 00:52:35 +01:00
15149a7968 Server/syncthing: remove school things folder 2025-12-15 09:53:02 +01:00
9f53c984f4 Server/borg: allow connections from localhost 2025-12-14 21:33:40 +01:00
4828dc5a21 Server: add borg repos 2025-12-14 02:18:31 +01:00
2d801ae06a Server/ssh: only allow toast user 2025-12-14 02:16:23 +01:00
d8f2812003 Server/caddy: wait for tailscale ip before starting 2025-12-14 01:07:51 +01:00
e863aea052 Run formatter 2025-12-14 01:07:21 +01:00
04163b2c79 Common/kmscon: enable 2025-12-13 16:31:56 +01:00
3f0333b4a0 Kde/patches: add more patches 2025-12-13 16:31:56 +01:00
d7c245ed8e Desktop: install tetrio 2025-12-13 16:31:56 +01:00
83831f6a75 Common: append -iso to the variant id if building an iso 2025-12-13 16:31:56 +01:00
9be3caddbc Common: set up a default time zone 2025-12-13 16:31:56 +01:00
76ecdba67e Machines/Everest: wait for DNS to be available 2025-12-13 00:37:31 +01:00
03f0570342 Machines/WinMax2: remove jovian
I basically didn't use it, and it just caused more issues than anything
2025-12-09 19:28:15 +01:00
4e9a1dae72 Server/ssh: write ssh keys to correct locations 2025-12-09 19:17:41 +01:00
b668212daf Server: migrate secrets to sops 2025-12-08 17:51:55 +01:00
859a4b20a5 Common: set up default sops file 2025-12-08 01:39:48 +01:00
72c8a0e7e2 Server/syncthing: fix id of games folder 2025-12-07 23:19:54 +01:00
351bd99fdf Flake: add nixpkgs patch 2025-12-06 18:31:24 +00:00
1ea530a2a6 Desktop/networkManager: add home wifi 2025-12-06 04:41:12 +01:00
7277135a5b Desktop/networkManager: refactor 2025-12-06 04:16:48 +01:00
8c6fdd5b51 Desktop/NetworkManager: migrate secrets to sops-nix 2025-12-06 03:37:06 +01:00
1d1b76b329 Flake: add sops-nix 2025-12-06 03:31:56 +01:00
9ca56553f7 Justfile: update secrets repo url 2025-12-06 02:33:40 +01:00
4361d6e0a9 Flake: remove stable catppuccin 2025-12-06 00:09:31 +01:00
e6bdf0f984 Common/git: update git and delta settings 2025-12-06 00:09:31 +01:00
8331e8c875 Flake: update lock file, switch stable to 25.11 2025-12-06 00:09:31 +01:00
ed8a6297b7 Gaming/pcsx2: refactor, add game config for burnout 3 2025-12-06 00:05:39 +01:00
eb5ebb056c Gaming: patch sdl to ignore keychron things 2025-12-05 23:59:26 +01:00
8b86b1ccc0 Flake: update lock file 2025-11-19 12:01:11 +01:00
ce5be49975 Kde/patches: add spectacle patches 2025-11-16 01:41:14 +01:00
85b1605ea9 Pkgs/kame-editor: add required programs to wrapper path 2025-11-15 18:56:36 +01:00
0bfe20a736 Packages: add kame-editor and dependencies 2025-11-11 17:12:37 +01:00
5ddac8b95b Roles/common: use flake overlay 2025-11-11 17:12:37 +01:00
b1e5e83744 Flake: get packages from overlay 2025-11-11 17:12:37 +01:00
c42c6cd83a Flake: remove unused packages 2025-11-11 17:12:37 +01:00
afab4c4d0a Server: remove school.nix
Haven't used this in months
2025-11-07 02:16:55 +01:00
284bd502f0 Server/forgejo: use unix socket 2025-11-07 01:05:05 +01:00
9f7cf822ed Roles: delete gnome
Only used it on the iMac
2025-11-06 22:41:38 +01:00
b8264643e6 Machines: remove iMac 2025-11-06 22:40:29 +01:00
8b9eae079e Desktop/firefox: add control panel for twitter 2025-11-05 10:28:33 +00:00
c00ef6ab7c Kde/patches: get patches with lib.toast.patches.patchesInPath 2025-11-02 13:44:37 +01:00
16f79d8a7d Kde/patches: remove plasma-workspace patch
Lots of packages depend on plasma workspace, so it's not worth building
all of them just for a small patch
2025-11-02 13:43:34 +01:00
c914256c97 Kde/patches: add plasma-desktop patches 2025-11-02 13:43:13 +01:00
2240c4e256 Add custom lib 2025-11-02 09:59:40 +01:00
8f97bc80e3 Common/nix: remove now redundant system nixpkgs flake registry 2025-11-02 00:57:49 +01:00
392df35a1c Flake: update lock file 2025-11-01 21:09:14 +01:00
d916c8f36a Revert "Flake: add nixpkgs patch to fix rtkit"
This reverts commit 13c1d5864d.
2025-11-01 18:44:01 +01:00
03b73e7090 Revert "Roles/gaming: fix emulator build issues"
This reverts commit 65eb518651.
2025-11-01 18:43:19 +01:00
d3a3617e29 Deskop/discord: enable translate plugin 2025-10-28 19:13:07 +01:00
4da3beb168 Desktop: add tailscale system tray 2025-10-28 19:03:26 +01:00
74175100c7 Gaming/steam: open firewall for local network game transfers 2025-10-26 19:41:18 +01:00
c8d487d374 Gaming/steam: install sgdboop, move comment to place 2025-10-26 19:38:06 +01:00
13c1d5864d Flake: add nixpkgs patch to fix rtkit 2025-10-26 12:47:08 +01:00
91d0d875ea Desktop/firefox: disable AI features 2025-10-25 00:26:05 +02:00
1b620d556b Kde/kwin: enable overlays 2025-10-25 00:14:37 +02:00
65eb518651 Roles/gaming: fix emulator build issues 2025-10-24 01:12:22 +02:00
e15a9c0c01 Kde/patches: remove patches that are in plasma 6.5 2025-10-24 01:07:37 +02:00
2c49a7318b Flake: update lock file 2025-10-24 00:41:26 +02:00
93944f1391 Kde/kwin: enable wayland pip support 2025-10-23 23:54:16 +02:00
c777f0e5f1 Common/nix: disable nixos-options 2025-10-18 11:43:11 +02:00
0af0720268 Flake: update lock file 2025-10-18 01:12:59 +02:00
3d91ef0932 Desktop/syncthing: add another missing option 2025-10-18 01:08:11 +02:00
f445891c25 Kde/patches: delete merged patches 2025-10-18 01:08:11 +02:00
cf08bc61b2 Flake: use stable catppuccin nix for Everest 2025-10-04 17:28:08 +02:00
3fedba90c4 Server/beets: enable mbsync and random plugins 2025-10-04 00:17:24 +02:00
fc803fd67e Kde/patches: add more patches 2025-09-30 21:08:38 +02:00
a4f27b49af Kde/patches: override packages instead of replacing at runtime
This causes A LOT more rebuilds, but it's less hacky
2025-09-30 21:08:38 +02:00
68218ec187 Kde/patches: delete merged patches 2025-09-30 21:08:38 +02:00
641ebc7ad9 Flake: update lock file 2025-09-30 21:08:38 +02:00
8597f372c0 Flake: remove unneeded patches 2025-09-30 21:08:38 +02:00
2fc9fe9e1a Server/beets: make music library accesible with copyparty 2025-09-29 14:21:47 +02:00
75312f7622 Server/copyparty: set up db directory, enable rproxy 2025-09-29 14:21:47 +02:00
86fe2646d1 KDE/Patches: don't garbage collect the <package>-patched packages 2025-09-26 18:43:27 +02:00
57125b4bf8 Flake: add nixpkgs patches 2025-09-26 00:01:11 +02:00
8fdeb93bc5 Server: add minecraft 2025-09-22 17:41:39 +02:00
ccebf381b0 Server/beets: configure permissions plugin 2025-09-21 19:18:43 +02:00
09d0847ea4 Desktop/kde: add patches 2025-09-19 18:00:15 +02:00
b6119bd2cc Server/beets: enable chroma plugin 2025-09-19 15:09:32 +02:00
3e29186990 Server: add navidrome 2025-09-19 15:09:32 +02:00
e1c1ff801d Server/copyparty: add to rust_motd 2025-09-19 15:09:32 +02:00
eb2a4ea67a Server: add beets 2025-09-19 15:09:32 +02:00
ae0393ae37 Flake: update lock file 2025-09-18 21:33:20 +02:00
cd876e3a17 Machines/Archie: fix headphones not being detected sometimes 2025-09-18 21:33:10 +02:00
69c5e8d9be Server/syncthing: add to rust-motd 2025-09-11 01:44:26 +02:00
fb317980e2 Machines/Everest: set static time zone 2025-09-11 01:32:50 +02:00
2615b290a1 Server/forgejo: use lts 2025-09-11 01:27:25 +02:00
e43910155c Desktop/ssh: remove default config 2025-09-09 11:54:40 +02:00
38df2ff9d6 Kde/plasma: update plasma-manager home manager module name 2025-09-07 01:12:22 +02:00
0a00c2b25a Desktop/mpv: set cd speed to 8 2025-09-07 01:08:31 +02:00
eecbb372cb Kde/patches: remove unneeded dolphin patches 2025-09-05 18:46:01 +02:00
28245e92f5 Flake: update lock file 2025-09-05 18:45:52 +02:00
970da745ad Desktop/keepassxc: update configs 2025-08-26 14:58:06 +09:00
338714285e Flake: update lock file 2025-08-26 14:57:55 +09:00
f934ff1092 Desktop/mpv: enable cdda support 2025-08-19 12:12:11 +09:00
164d665324 Common: set up timezone automatically 2025-08-15 11:24:49 +09:00
190010e31f Desktop/networkmanager: disable wifi mac address randomisation 2025-08-15 04:17:56 +02:00
2b42883523 Machines/WinMax2: use stock mesa and radv 2025-08-04 15:35:48 +02:00
cd58dde5fd Flake: update lock file 2025-08-04 10:45:47 +02:00
3af90c044f Flake: switch to upstream copyparty 2025-08-04 10:45:32 +02:00
91e57025b7 Machines/WinMax2: enable secure boot 2025-08-02 15:27:29 +02:00
48993bb1e6 Machines/WinMax2: disable inputplumber 2025-08-02 15:27:29 +02:00
64d2ca9c23 Machines/WinMax2: reduce limine timeout 2025-08-02 15:27:29 +02:00
2df0370ce0 Machines/WinMax2: switch to limine 2025-08-02 15:27:29 +02:00
2fea832484 Revert "Desktop/NetworkManager: change dhcp implementation"
This reverts commit f29d5d4207.
2025-08-02 15:27:29 +02:00
90028fb7fe Roles/server: add copyparty 2025-07-30 03:27:36 +02:00
fb41beb270 Common/eza: set group option 2025-07-30 02:53:52 +02:00
5fc8c72a51 Flake: add copyparty flake 2025-07-30 00:18:55 +02:00
283ef9c680 Flake: update lock file 2025-07-21 15:25:12 +02:00
d824d6269c Roles/kde: get rid of kwin-x11 2025-07-21 15:25:12 +02:00
25cad55c78 Gaming/pcsx2: update ps2 bios link 2025-07-21 15:25:12 +02:00
820e082f49 Kde/plasma: enable i2c 2025-07-21 15:25:12 +02:00
264942168d Machines/Everest: update eno1 prefixLength
Forgot to update this when I switched to the isp router. Whoops!
2025-07-21 13:18:21 +02:00
fe93e06d34 Flake: update lock file 2025-07-09 15:15:41 +02:00
a82ddf87df Kde/patches: remove unneeded kwin patches 2025-07-09 13:59:32 +02:00
19493e8ef6 Kde/patches: update patches 2025-07-09 13:56:20 +02:00
a959fb46be Common/atuin: set default filter mode to workspace 2025-07-06 13:15:00 +02:00
7c242b437d Desktop/discord: use catppuccin vencord module 2025-07-05 19:24:24 +02:00
98f9b3a8fc Add kde patches
The nixpkgs patch is to clear out a conflict with a patch that's applied
to plasma-workspace by nixpkgs
2025-07-05 14:52:58 +02:00
fd0f27145a Flake: update lock file 2025-07-04 18:01:12 +02:00
d05764d3dd Roles/kde: remove all patches 2025-07-04 18:00:51 +02:00
d87450b305 Roles/desktop: add japanese fonts 2025-07-04 17:06:07 +02:00
2c6009b5b8 Flake: update secrets url 2025-06-24 13:24:31 +02:00
a741b9b559 Server/forgejo: expose to the internet 2025-06-06 18:54:14 +02:00
bb801f4e4c Common: update stateVersion 2025-06-03 21:19:02 +02:00
c37d347ba1 Flake: switch stable nixpkgs and home-manager to 25.05 2025-06-03 20:44:05 +02:00
0bfc27e90f Flake: update lock file 2025-06-03 18:19:41 +02:00
53df838182 Server: remove changedetection.io 2025-05-31 11:40:50 +02:00
f29d5d4207 Desktop/NetworkManager: change dhcp implementation 2025-05-26 16:19:52 +02:00
9aea5cd1f6 Flake: remove uneeded nixpkgs patches 2025-05-15 19:29:57 +02:00
9666439eeb Flake: update lock file 2025-05-15 19:29:17 +02:00
50e6fac406 Gaming/azahar: use nixpkgs version 2025-05-15 18:40:27 +02:00
ce69f89492 Desktop: remove git cola 2025-05-06 13:33:13 +02:00
c2d28ac798 Desktop/discord: get mauve catpuccin theme 2025-04-30 17:48:42 +02:00
22896ea923 Common/atuin: use catppuccin theme 2025-04-27 19:25:24 +02:00
203ffb3738 Common/atuin: bring back pre 18.4 behaviour 2025-04-27 19:01:34 +02:00
d2d28a968f Desktop/discord: configure vencord 2025-04-27 18:43:04 +02:00
f7e9fd9cad Desktop/discord: use vesktop module 2025-04-27 02:53:25 +02:00
6e5a9ca208 Desktop/keepassxc: move to new module 2025-04-27 02:32:00 +02:00
85c3c570dd Flake: add nixpkgs patches
Update and fix rpcs3 package
2025-04-27 00:23:28 +02:00
db6366a491 Flake: update lock file 2025-04-27 00:21:53 +02:00
f8140164d1 Desktop/jamesdsp: remove old build fix
Patch that fixes the build is already upstreamed, so this is entirely
  unneeded. Not even sure how it still compiled with the fix twize tbh
2025-04-25 10:57:31 +02:00
1a927b60be Keep nixpkgs-patches folder 2025-04-24 11:19:19 +02:00
f06d9b0e01 Machines/WinMax2: don't disable direct scanout 2025-04-19 19:03:30 +02:00
83977d50ae Gaming: install azahar 2025-04-18 00:38:38 +02:00
6292a84a01 Flake: remove school role 2025-04-15 17:26:54 +02:00
28c64bd454 Kde/kwin: add patches 2025-04-15 16:39:04 +02:00
a377ad8176 Server/samba: overhaul config 2025-04-12 01:00:05 +02:00
dafbcb9f8d Server: remove school things 2025-04-03 20:05:47 +02:00
513dab012d Flake: update lock file 2025-04-03 19:34:28 +02:00
630e634cd2 Flake: remove unneeded patches 2025-04-03 19:34:28 +02:00
f7a528a94f Firefox: install and configure containers extension 2025-04-03 19:34:28 +02:00
35f9aaca7d Desktop/firefox: change tab switcher order for toast 2025-04-03 19:34:28 +02:00
989f5407ec Desktop/firefox: install sponsorblock for toast 2025-04-03 19:34:28 +02:00
cb1230214a Desktop/firefox: uninstall undeclared extensions 2025-04-03 19:34:28 +02:00
bc9098525b Desktop/firefox: set up per user settings 2025-04-03 19:34:28 +02:00
0bd973fb25 Kde/firefox: manage with home-manager 2025-04-03 19:34:28 +02:00
90b1e43b99 Desktop/firefox: manage firefox with home-manager 2025-04-03 19:34:28 +02:00
7fce74c605 Desktop: install spotify 2025-04-03 19:34:28 +02:00
1815e8e3f6 Desktop/firefox: enable autoplay on synctube 2025-04-03 19:34:28 +02:00
a47d0a090d Kde/patches: use replaceDependencies to avoid mass rebuilds 2025-04-03 19:34:28 +02:00
5832fcb26b Flake: add nixpkgs patches 2025-04-03 19:34:28 +02:00
00cbe6876e Kde/patches: refactor overlay function 2025-04-03 19:34:28 +02:00
b8a2c3c10d Server/tailscale: wait more time for ip to be up 2025-03-25 22:31:06 +01:00
421a389bdb Server/ddclient: change ip provider 2025-03-25 22:30:49 +01:00
c925026183 Revert "Machines/WinMax2: temporarely change to default kernel"
This reverts commit b123ab87df.
2025-03-15 17:29:27 +01:00
5d77bb0959 Desktop/jamesdsp: install using home-manager, fix build 2025-03-15 17:08:45 +01:00
71a1bad913 Flake: drop nur 2025-03-15 17:07:47 +01:00
8385b2d6e6 Gaming/rpcs3: use package from nixpkgs 2025-03-15 17:07:09 +01:00
0c64697063 Flake: update lock file 2025-03-15 17:05:23 +01:00
a0fadd7a1b Revert "Kde: fix qt wayland"
This reverts commit f3ee33177f.
2025-03-15 09:39:23 +01:00
c366ce1cbe Common: add .local/bin to path 2025-03-14 19:42:22 +01:00
ba96c9b687 Revert "Desktop/discord: revert vesktop to electron 33"
This reverts commit 922c492412.
2025-03-12 12:55:00 +01:00
790b5ec4e7 Machines/everest: change eno1 ip 2025-03-10 14:18:51 +01:00
6be10e325a Server/adguard: get host ip dinamically 2025-03-10 14:18:29 +01:00
965a5eef13 Server/ssh: remove log 2025-03-09 11:55:52 +01:00
0617934f31 Flake: make nur follow nixpkgs unstable 2025-03-07 02:59:58 +01:00
23d426f0ea Kde/plasma: reenable kickoff's switch on hover 2025-03-05 13:06:41 +01:00
a7545faa45 Kde: add spectacle patch 2025-03-05 02:20:39 +01:00
92a6c20c18 Kde: add kinfocenter patches 2025-03-05 02:20:39 +01:00
f3ee33177f Kde: fix qt wayland 2025-03-05 02:20:39 +01:00
da57debd66 Kde: load patches automatically 2025-03-05 02:20:39 +01:00
a483112a32 Server/transmission: upgrade to transmission 4 2025-03-03 18:11:30 +01:00
68ea0f03f2 Flake: remove unneeded patch 2025-03-03 18:08:06 +01:00
cbbef2a3a6 Flake: update lock file 2025-03-03 18:07:55 +01:00
8279721102 Kde/skanpage: use qt6 package 2025-03-03 17:14:09 +01:00
922c492412 Desktop/discord: revert vesktop to electron 33 2025-02-20 17:29:53 +01:00
36d0ee851e Flake: Add patch to fix nixpkgs-unstable grup install script 2025-02-19 17:29:26 +01:00
d0a38fbfa3 Server/forgejo: enable catppuccin theme 2025-02-19 17:25:45 +01:00
40d2622862 Flake: update lock file 2025-02-19 16:08:28 +01:00
5640408d9f Roles/kde: remove patches
All of this patches are in 6.3, so they're not needed anymore
2025-02-19 15:23:04 +01:00
789157e3bf Flake: update shows-api input 2025-02-07 23:31:25 +01:00
1c7d4a513d Server/headscale: never stop trying to restart 2025-02-07 20:13:08 +01:00
c46418c783 Gaming/PCSX2: fix games location 2025-02-04 09:52:20 +01:00
3dd73e0b24 Desktop/keepassxc: replace manual autostart config with home-manager module 2025-01-31 11:11:43 +01:00
bdff3d97e9 Desktop: enable xdg autostart 2025-01-31 11:11:23 +01:00
8bfd76f23c Flake: update lock file 2025-01-31 10:48:46 +01:00
b123ab87df Machines/WinMax2: temporarely change to default kernel 2025-01-31 10:48:21 +01:00
6adbd2d38c Flake: remove unneeded patch 2025-01-31 10:48:05 +01:00
ac36661d4e Server/school: add dns record and caddy reverse proxy 2025-01-27 13:29:31 +01:00
8a700174b1 Flake: add shows-api input 2025-01-27 11:17:09 +01:00
786e3967e3 Server: add school container
This container is for hosting things that I need for school
I don't trust my code to be secure yet, so that's why it's in a
container
2025-01-27 10:59:00 +01:00
f8bf8ed7a4 Flake: update lock file 2025-01-27 10:55:28 +01:00
bcff4d2cbe Server/immich: add too rust-motd service status 2025-01-25 15:37:45 +01:00
251f88df02 Server: add immich 2025-01-23 23:12:42 +01:00
5847ecfe1b Machines/everest: change boot partition location 2025-01-23 19:28:32 +01:00
573fbdd240 School/helix: set up prettier as js/ts/tsx formatter 2025-01-21 19:28:42 +01:00
65b7cf4ab6 School: configure helix with typecript lsp 2025-01-19 20:45:57 +01:00
a59b356e9d Flake: add the school role to archie 2025-01-19 12:37:01 +01:00
dec75b3f7e Common/helix: change diagnostics options 2025-01-18 16:54:37 +01:00
83f7d01824 Flake: backport nixpkgs pr to stable nixpkgs 2025-01-18 13:14:06 +01:00
91da240751 Server/adguard: change local IP address 2025-01-18 12:30:26 +01:00
02fcfb5008 Flake: update lock file 2025-01-18 00:28:22 +01:00
2f970835b2 Flake: remove unneeded nixpkgs patch 2025-01-18 00:27:52 +01:00
77edacc9d4 Roles/kde: add kwin and plasma-workspace patches 2025-01-17 22:21:12 +01:00
b6bd1ec321 Flake: update nixpkgs patch 2025-01-17 16:36:11 +01:00
a60ca21925 Machines/Everest: change ip address and default gateway 2025-01-15 11:06:26 +01:00
d713ba1f15 Flake: add nixpkgs patch 2025-01-14 10:51:13 +01:00
904bb98f36 Flake: fully remove nix-minecraft references 2025-01-13 12:44:37 +01:00
36ac10c6dd Server/grafana: change security settings 2025-01-13 12:42:25 +01:00
24f4f270c1 Server/grafana: set root url 2025-01-13 12:42:25 +01:00
d93a2a7993 Flake: remove nix-minecraft 2025-01-10 18:41:48 +01:00
67989ca1a8 Server/endlessh: open firewal
I got confused and closed the firewall
thinking it was for the prometheus metrics
2025-01-10 11:26:57 +01:00
d65b4380e7 Server/grafana: provision prometheus datasource 2025-01-10 10:45:40 +01:00
3d4deae65a Server/grafana: disable telemetry 2025-01-10 10:10:47 +01:00
daf1e39df3 Justfile: remove update-input recipe 2025-01-09 11:17:28 +01:00
c154d91613 Server/grafana: configure default username and password 2025-01-09 11:17:28 +01:00
5631236aff Flake: udate secrets 2025-01-09 11:17:28 +01:00
8933b405d4 Server/endlessh: disable stderr logging, enable geoip 2025-01-09 11:17:28 +01:00
c66d7c21da Flake: add nixpkgs pr 2025-01-09 11:17:28 +01:00
bd0d7e5495 Server/endlessh: don't open firewall, add prometheus integration 2025-01-09 11:17:28 +01:00
88235bb32e Server: add grafana 2025-01-09 11:17:28 +01:00
a2bce9715d Server: add prometheus with node exporter 2025-01-09 11:17:28 +01:00
710e431dad Machines/WinMax2: add boot debugging specialisation 2025-01-09 09:43:01 +01:00
fb7b164a6c Common/atuin: change options 2025-01-09 09:31:58 +01:00
335205338f Server/forgejo: upgrade to non lts version 2025-01-04 02:55:24 +01:00
ebbbc8da58 Server/caddy: precompress the NixOS manual 2025-01-04 02:55:24 +01:00
dca3d05aec Server/forgejo: enable repo indexer 2025-01-04 02:55:24 +01:00
f83298f632 Flake: update lock file 2025-01-04 02:52:16 +01:00
a1d47a2744 Common: update catppuccin options 2025-01-04 02:32:18 +01:00
c396ca7400 Common/helix: disable nano 2025-01-04 01:57:25 +01:00
a275c8d43e Common/syncthing: open firewall ports 2025-01-02 22:59:37 +01:00
74ed35e5f4 Server/caddy: adjust systemd restart parameters 2025-01-02 22:51:52 +01:00
21c8f8c7e4 Machines/Everest: remove unneeded firewall options 2025-01-02 21:24:50 +01:00
98ebbcfbd3 Server/minecraft: remove 2025-01-02 20:37:09 +01:00
7eeff4c125 Server/syncthing: add games folder 2024-12-29 16:13:33 +01:00
16d3391714 Gaming/retroarch: update retroarch library automatically 2024-12-29 16:10:02 +01:00
fcba25620b Gaming/syncthing: sync games with syncthing 2024-12-29 16:09:15 +01:00
68994153d0 Gaming/pcsx2: fix typos in syncthing ignore file 2024-12-29 16:08:08 +01:00
62cf076375 Gaming: don't add games to the store 2024-12-29 16:05:51 +01:00
135cd0642b Gaming/syncthing: sync project eden save files 2024-12-24 14:46:51 +01:00
3733eb8b3a Server: add changedetection-io 2024-12-19 11:58:38 +01:00
2d4374899c Kde/plasma: add plasma_desktop pr 2661 2024-12-19 00:47:48 +01:00
ba2d6eb02a Kde/kwin: add kwin pr 6844 2024-12-19 00:47:20 +01:00
0c754f1930 Kde/kwin: app pr 6878 2024-12-18 16:19:39 +01:00
577aa1cc33 Kde/konsole: remove now-upstreamed patch 2024-12-18 15:49:04 +01:00
fe9678388d Flake: update lock file and remove unneeded nixpkgs patches 2024-12-18 15:47:03 +01:00
49130f062d Gaming/syncthing: sync project diva mods 2024-12-16 10:32:41 +01:00
0b3613086c Kde/plasma: add entry for mouse over bluetooth 2024-12-15 19:40:48 +01:00
ce51dd5dd3 Gitignore: ignore nix repl result files 2024-12-15 19:31:15 +01:00
d130ffb20d Common/nix: remove unneeded nixpath workaround, update comment 2024-12-15 16:25:48 +01:00
99056c9f32 Run formatter 2024-12-15 15:43:36 +01:00
5895f4beb1 Kde/plasma: add mouse settings 2024-12-15 15:42:25 +01:00
a2eacddd44 Kde/konsole: replace fetchFromGitHub with flake input 2024-12-15 03:07:23 +01:00
3eaabeacd9 Machines/Archie: remove btrfs compression 2024-12-15 02:30:44 +01:00
4bb34105f1 Machines/Archie: replace usb_storage module with nvme 2024-12-15 02:28:56 +01:00
efc4b199a4 Common: update state version 2024-12-10 17:34:22 +01:00
049a95e7b0 Server/forgejo: chage root url to https 2024-12-10 17:13:18 +01:00
10f09226eb Update changed options 2024-12-10 11:23:35 +01:00
75e75a571e Kde/kwin: update patch 2024-12-10 11:23:16 +01:00
9aabffc52a Flake: remove uneeded nixpkgs patches 2024-12-10 11:13:29 +01:00
5eab2e1ccc Flake: update lock file 2024-12-10 11:10:33 +01:00
49e920ac97 Flake: update nur 2024-12-10 11:08:59 +01:00
16d61d8d73 Machines/WinMax2: remove now uneeded steam HiDPI workaround 2024-12-10 00:35:17 +01:00
45daaddfb6 Revert "Machines/WinMax2: enable bluetooth wake from sleep"
This reverts commit aee3b50212.
Turns out this makes it so that I get instant wakeup after sleep
2024-12-10 00:28:17 +01:00
818bb17a3f Flake: update hhd nixpkgs pr 2024-12-10 00:27:27 +01:00
cf66663534 Flake: add nixpkgs pr 2024-12-10 00:27:15 +01:00
22dc0e1915 Flake: fix giving patched nixpkgs the wrong arguments 2024-12-09 18:34:24 +01:00
d7f7561cbb Kde/kate: install qt6 version 2024-12-05 12:49:31 +01:00
a6a4f594cf Server/ddclient: update options 2024-12-05 09:16:25 +01:00
581f281950 Server/ssh: remove trace 2024-12-05 09:16:25 +01:00
aee3b50212 Machines/WinMax2: enable bluetooth wake from sleep 2024-12-03 10:24:34 +01:00
30e89ac9d3 Flake: add pr 361364 2024-12-03 09:29:27 +01:00
ff4ceecd67 Server/samba: update options 2024-12-02 12:15:01 +01:00
7c98655a99 Common/eza: remove workaround for 24.05 2024-12-02 12:14:35 +01:00
fc51305ad6 Revert "Flake: backport headscale changes to stable nixpkgs"
This reverts commit fdad5d88bb.
2024-12-02 12:14:09 +01:00
5c8044283a Flake: upgrade stable nixpkgs and home-manager 2024-12-02 12:11:26 +01:00
dc4f025318 Server/caddy: double restartSec duration 2024-11-28 10:53:33 +01:00
565e5f8224 Flake: update lock file 2024-11-28 10:52:44 +01:00
bdc9c97289 Flake: remove unneeded patch 2024-11-28 10:45:52 +01:00
4a4284bce2 Flake: add pr 359282 2024-11-27 10:15:11 +01:00
bcb20eb1ca School/programs: install mongodb compass 2024-11-26 12:12:56 +01:00
74d858d5c5 Kde: configure baloo 2024-11-26 09:57:22 +01:00
dd07992751 Flake: update lock file and change nixpkgs patches 2024-11-24 22:26:22 +01:00
e4f9e94269 Desktop/syncthing: run as a user service managed by home-manager 2024-11-24 04:18:50 +01:00
69c9bfca26 Common: start services managed bu home-manager 2024-11-23 21:02:35 +01:00
ed5cbe1a05 Desktop: get rid of vscode 2024-11-19 00:45:03 +01:00
147be34498 Revert "Common: temporarely downgrade adw-gtk3"
This reverts commit 39fcb86f6e.
2024-11-15 12:47:02 +01:00
221e4878b4 Flake: add nixpkgs patch 2024-11-15 11:38:41 +01:00
0f6f51975d Flake: update nixpkgs patches 2024-11-15 10:56:31 +01:00
e952cfa34f Flake: update lock file 2024-11-12 11:01:00 +01:00
84f5b7537b Kde: add plasma-workspace patch 2024-11-12 10:50:23 +01:00
9cbd262e14 Kde/kwin: fix patch path 2024-11-12 09:58:25 +01:00
Toast
159dbbfe90 Merge pull request 'Refactor plasma role' (#12) from plasma-refactor into main
Reviewed-on: https://git.everest.tailscale/Toast/nix-stuff/pulls/12
2024-11-12 09:43:02 +01:00
183ebd78d1 Kde: move kwin configs and patches into separate file 2024-11-12 09:43:02 +01:00
147c52ee20 Kde: rework patch paths 2024-11-12 09:43:02 +01:00
4159ee98cc Kde: move konsole patches into konsole.nix 2024-11-12 09:43:02 +01:00
25db001181 Server/headscale: start before tailscale 2024-11-12 00:07:38 +01:00
3c72a10ec0 Server/ssh: send a message to discord on login 2024-11-10 18:58:52 +01:00
aa17ed51c8 Flake: make devshell without compiler 2024-11-10 02:49:43 +01:00
8bace4cb22 Kde: add breeze cursor to steam 2024-11-09 14:24:44 +01:00
99e5c29a3b Server/headscale: update ip prefixes setting 2024-11-07 12:39:23 +01:00
38281315f7 Kde: add konsole patch 2024-11-07 11:23:42 +01:00
c569ed03d2 Kde: add kwin patch 2024-11-07 11:09:49 +01:00
c666b582f6 Kde: add libplasma patch 2024-11-06 18:15:49 +01:00
b20c1b53d1 Kde: delete old unused patch 2024-11-06 18:15:49 +01:00
7ad9530040 Server/headscale: update settings 2024-11-06 00:40:41 +01:00
fdad5d88bb Flake: backport headscale changes to stable nixpkgs 2024-11-06 00:40:23 +01:00
32b291be20 Server/rust_motd: add headscale status 2024-11-05 11:08:45 +01:00
3b5c8735be Services/rust_motd: add adguard status 2024-11-05 11:00:42 +01:00
e531e6cb68 Services: add adguard 2024-11-05 10:42:47 +01:00
e15aa9ba44 Server/syncthing: bind to localhost 2024-11-03 20:20:07 +01:00
cd802ab3a6 Flake: update lix 2024-11-03 17:16:23 +01:00
Toast
3748aae1c5 Merge pull request 'Switch to headscale' (#11) from headscale into main
Reviewed-on: https://git.everest.tailscale/Toast/nix-stuff/pulls/11
2024-11-03 01:30:30 +01:00
34e1dd0bfc Server/headscale: override local dns
For some reason extra dns records don't apply without the override
2024-11-03 01:19:30 +01:00
0e66939ab1 Server: replace dnsmasq cnames with headscale extra dns records 2024-11-03 01:18:39 +01:00
c7d2db076b Server: get rid of dnsmasq
I can add custom records to headscale's dns settings, so I don't need
  dnsmasq anymore. This will also bring back resolved's stub
2024-11-02 18:18:20 +01:00
52a08be94d Merge branch 'main' into headscale 2024-11-01 23:24:53 +01:00
d18e059d1e Flake: update lock file 2024-11-01 12:27:51 +01:00
492d870980 Server/headscale: setup dns 2024-10-31 16:20:08 +01:00
d39890589b Server/caddy: update server IP 2024-10-31 00:39:53 +01:00
37f3b3fc60 Server/headscale: set up ip prefixes 2024-10-31 00:23:25 +01:00
dfd094ef67 Server: add headscale 2024-10-29 11:50:27 +01:00
59692e7651 Server/caddy: open http/s ports on firewall 2024-10-29 11:50:08 +01:00
a643254864 Desktop/ssh: add config to connect to everest over the internet 2024-10-29 09:44:59 +01:00
cfa31cbe51 Common/eza: fix icons config for 24.05 2024-10-25 10:56:47 +02:00
b51bea1785 Server/tailscale: increase tailscale timeout 2024-10-25 00:58:01 +02:00
582ac7314a Common/eza: use catppuccin theme 2024-10-24 14:07:49 +02:00
67716baa54 Common/eza: enable git and icon support 2024-10-24 14:07:32 +02:00
f58fdb8d49 Flake: add non-flake inputs 2024-10-24 13:50:48 +02:00
74cadfd80f Common: enable eza 2024-10-24 13:35:30 +02:00
85dc75ced4 Flake: update lock file 2024-10-21 00:59:27 +02:00
059ed79f33 Schooli/mysql: disable mycli temporarely 2024-10-21 00:58:09 +02:00
9b8a0629a1 Common/helix: add taplo as toml lsp 2024-10-19 20:34:57 +02:00
84113d5327 Desktop/NetworkManager: change connection priorities 2024-10-17 09:11:42 +02:00
f85d3d5ac2 School: install insomnia 2024-10-15 19:08:30 +02:00
72ec589771 Flake: update lock file 2024-10-14 10:02:33 +02:00
0466a64c17 School/services: add mysql 2024-10-08 13:24:52 +02:00
dbb6887168 Flake: update nixpkgs patches 2024-10-08 11:51:09 +02:00
f3c83f4ac2 Desktop: install qmk tools 2024-10-08 09:25:43 +02:00
39fcb86f6e Common: temporarely downgrade adw-gtk3 2024-10-03 14:25:36 +02:00
bd866ba7a2 Flake: update lock file 2024-10-02 14:00:02 +02:00
cae6f707af Desktop: enable user qmk access 2024-10-02 11:27:22 +02:00
4dbe60e314 Gnome: manage keyring with home-manager, disable ssh 2024-09-23 12:10:19 +02:00
d0194b301a Server/minecraft: update motd 2024-09-22 16:49:51 +02:00
e497436f05 Gnome/blackbox: set up catpuccin theme 2024-09-20 14:01:16 +02:00
ef324a47db Gnome/blackbox: remove gnome console and add nautilus integration 2024-09-20 13:18:10 +02:00
12f190bbaa Gnome/nautilus: install and change settings 2024-09-20 13:15:20 +02:00
99bce3fd14 Gnome/programs: install dconf editor and gnome tweaks 2024-09-20 12:48:59 +02:00
428fd3f9f0 Gnome: change favorite apps 2024-09-20 12:29:21 +02:00
7d04111f4a Machines/iMac: set up gpu frequency 2024-09-20 12:10:38 +02:00
1ed98c54b5 Machines/iMac: enable backlight control 2024-09-20 12:10:38 +02:00
565aae0710 Gnome: run formatter 2024-09-20 12:10:38 +02:00
17e929fe3e Common: enable home-manager manual 2024-09-20 10:09:55 +02:00
1ba89c9548 Machines/WinMax2: reboot on panic 2024-09-20 09:18:04 +02:00
b061708ce7 Gnome: install firefox gnome theme 2024-09-19 12:48:34 +02:00
c3ee394131 Flake: update lock filw 2024-09-19 10:34:18 +02:00
1f6c51441a Gnome: set up gtk 2024-09-18 14:09:12 +02:00
f551e27127 Flake: package kasane teto cursor theme 2024-09-18 14:01:02 +02:00
4872cdfb98 Gnome: enable and set up QT 2024-09-18 13:18:35 +02:00
f71901fc08 School: move android studio into it's own file 2024-09-18 12:32:33 +02:00
3730c8f01c Gnome: change settings 2024-09-18 12:31:07 +02:00
45488dd25c Run formatter 2024-09-18 12:20:06 +02:00
ab1ffbcfdf Gnome: add panel workspace scroll extension 2024-09-18 11:54:02 +02:00
8004eba6d9 Kde/plasma: let kde configure gtk 2024-09-17 09:45:57 +02:00
c084034269 School/syncthing: add school things folder 2024-09-17 09:45:19 +02:00
a68714db8d Flake: update lock file 2024-09-16 09:59:17 +02:00
2d911bc591 Flake: update plasma-manager 2024-09-16 09:31:22 +02:00
32598541f3 School: add webdev things 2024-09-13 20:45:49 +02:00
6747aba0d3 Gnome: enable dark mode 2024-09-13 14:16:09 +02:00
694104e62c Gnome/blackbox: set up preferences 2024-09-13 14:14:00 +02:00
3a2bc2cda5 Gnome: replace gnome console with blackbox 2024-09-13 14:01:14 +02:00
eb7b34924a School: install android studio 2024-09-13 12:38:29 +02:00
1cac73de87 Gnome: enable dynamic workspaces 2024-09-13 12:38:15 +02:00
ffc7d81f70 Machines/iMac: mark /persist as needed for boot 2024-09-13 11:45:26 +02:00
37823965c3 Common/syncthing: add iMac 2024-09-13 10:57:27 +02:00
ca38820ac6 Machines/iMac: use the systemd initrd 2024-09-12 14:18:12 +02:00
3baa80bf1f Gnome: add dash-to-dock 2024-09-12 14:17:12 +02:00
09274de08c Gnome: enable extensions 2024-09-12 13:18:11 +02:00
c018979cb2 Gnome: add extensions 2024-09-12 12:56:14 +02:00
d5235f5bf3 Flake: update secrets 2024-09-12 12:44:10 +02:00
ec6a77b76b Roles: add gnome role 2024-09-12 11:53:42 +02:00
4bd53fc871 School: install intellij idea 2024-09-12 10:22:53 +02:00
551c3e2b11 Roles: Add new school role 2024-09-12 09:48:20 +02:00
3645370498 Flake: update secrets 2024-09-12 09:48:01 +02:00
8637b214ac Flake: add nvd to devshell 2024-09-11 14:13:16 +02:00
b81cb471cc Machines: add initial support for iMac 2024-09-11 14:11:37 +02:00
b442b1e5a9 Server/minecraft: update motd 2024-09-06 19:32:37 +02:00
c3c4c32358 Revert "Flake: pin catppuccin-vsc input"
This reverts commit c0594967a7.
2024-09-06 04:15:35 +02:00
a3b8fe20d1 Flake: update lock file 2024-09-06 03:57:45 +02:00
dc9cc8b6fa Server/minecraft: format file 2024-09-06 03:38:46 +02:00
bdf8140765 Server/minecraft: add toast to minecraft group 2024-09-06 03:38:23 +02:00
10902ed69f Flake: refactor nixos configurations 2024-09-06 02:26:11 +02:00
1aca0c5e64 Server/minecraft: disable spawn protection 2024-09-02 16:39:33 +02:00
c7088d8b96 Kde/plasma: install plasma vaults 2024-09-01 14:12:14 +02:00
0991d4defb Common: enable fstrim 2024-08-28 17:07:23 +02:00
dad79e9b40 Kde/plasma: make the panel floating 2024-08-28 14:11:20 +02:00
d686b4f0b5 Kde/plasma: redo panel configuration 2024-08-28 13:52:17 +02:00
f836354767 Kde/neochat: disable temporarely 2024-08-28 03:46:29 +02:00
8bc792fb2d Flake: remove uneeded patches 2024-08-28 03:46:29 +02:00
5981d50a72 Flake: update lock file 2024-08-28 03:46:29 +02:00
52cb4607db Server/minecraft: don't set the whitelist declaratively 2024-08-25 19:53:00 +02:00
d9d0ad7b73 Server/minecraft: add more memory 2024-08-25 19:52:15 +02:00
2626ac99c3 Server/minecraft: change vr locals server settings 2024-08-24 03:05:19 +02:00
100f7ec33e Server/minecraft: make vr locals server 2024-08-23 20:36:58 +02:00
5bf5c9f737 Machines/Everest: mount root subvolume of ssd 2024-08-23 18:06:12 +02:00
cf2a201c7a Flake: add nix-minecraft module to Everest 2024-08-23 16:40:26 +02:00
6d6dab1764 Flake: add nixpkgs patches 2024-08-18 15:32:25 +02:00
64b4a1b6cb Flake: update lock file 2024-08-18 15:31:29 +02:00
97b30aa8fc Server/rust_motd: add nix to filesystems 2024-08-16 20:38:54 +02:00
2c45da4844 Server/tailscale: wait to get ip address 2024-08-16 19:57:08 +02:00
16fa01ad7d Server/Caddy: start after tailscale:x 2024-08-16 19:54:39 +02:00
0119c52db6 Machines/Everest: move nix subvolume to SSD 2024-08-16 18:10:45 +02:00
95dd730b7d Flake: update lock file 2024-08-05 18:49:11 +02:00
b8d1c3985b Flake: remove unneeded patch 2024-08-05 18:48:57 +02:00
7a5219af7c Common/starship: configure only with nixos, remove old profile workaround 2024-08-05 17:34:18 +02:00
6f82fb26bd Common/starship: remove catppuccin preset
The catpuccin nix module already does this
2024-08-05 12:53:29 +02:00
a65936845f Desktop: change nix io and cpu schedulers 2024-08-01 21:46:14 +02:00
7eae2ded13 Gaming/cemu: add wii u discs 2024-07-26 11:23:01 +02:00
bf3c360a0d Gaming: add cemu 2024-07-26 11:23:01 +02:00
48f97c5aae Desktop: add sysdvr-qt 2024-07-26 11:23:01 +02:00
777ab3a99b Server/caddy: also serve downloads over http 2024-07-26 03:20:17 +02:00
7006a7ff93 Server/caddy: add downloads page 2024-07-26 02:16:12 +02:00
301a1bfa9b Server/dnsmasq: add status to rust-motd 2024-07-19 12:53:43 +02:00
6e885dfbb6 Server/caddy: add status to rust-motd 2024-07-19 12:42:37 +02:00
79a247d9e6 Caddy: bring back tailscale depenency and restart interval 2024-07-18 23:31:52 +02:00
c322de5757 Flake: update stable nixpkgs 2024-07-18 11:36:26 +02:00
1b96024e4a Common: add Caddy root ca 2024-07-18 02:04:41 +02:00
114fcad32e Server/caddy: change name of the root ca cert 2024-07-18 02:01:41 +02:00
e1f4b528c6 Server/caddy: serve the NixOS manual 2024-07-18 00:55:00 +02:00
863840b2b1 Server: replace traefik with caddy 2024-07-18 00:45:00 +02:00
5001e70c14 Change my tailscale network name 2024-07-17 19:06:24 +02:00
020cec94a1 Remove leftover school things 2024-07-15 16:32:08 +02:00
99a17a7c79 Server: add rust_motd 2024-07-12 11:48:32 +02:00
a826c532e5 Server/nfs: add nfs root 2024-07-12 02:02:52 +02:00
85ccce45b9 Server: move transmission nfs share settings to transmission.nix 2024-07-12 01:52:26 +02:00
675b8c7b85 Machines/WinMax2: enable hhd and hhd-ui 2024-07-11 12:29:33 +02:00
cae5c4f036 Flake: add nixpkgs patches 2024-07-11 12:29:18 +02:00
a700fc64b7 Switch to lix 2024-07-07 17:56:27 +02:00
c8863554a2 Flake: update lock file 2024-07-05 13:33:37 +02:00
faab731506 Programs: delete micro 2024-07-05 13:22:52 +02:00
b9b9f28e26 Common: enable iotop 2024-07-02 14:34:52 +02:00
8b43439238 Machines/WinMax2: remove unneeded workaround 2024-07-02 14:34:28 +02:00
1318dbba65 Machines/WinMax2: disable kwin direct scanout 2024-06-26 10:48:47 +02:00
5e310a8255 Machines/WinMax2: remove scaling env variable 2024-06-23 13:41:57 +02:00
e4ec92a8f0 Flake: update lock file and remove unneeded patch 2024-06-23 13:24:17 +02:00
67f3cf3fad Server/dns: change how host records are added 2024-06-18 15:54:33 +02:00
421be2b14b Flake: update lock file 2024-06-15 18:31:48 +02:00
b7a9debd3b Common/fish: enable catppuccin 2024-06-09 20:09:15 +02:00
4f61147f8d Common: set catppuccin accent 2024-06-09 20:09:15 +02:00
7e3da29f97 Flake: update catppuccin
I had to change flavour into flavor in the configs
2024-06-09 20:09:15 +02:00
5f99d8a0f4 Revert "Flake: pin catppucin input"
This reverts commit 8d8b118b36.

Revert "Flake: actually downgrade catppuccin input"

This reverts commit aeed860735.
2024-06-09 20:09:15 +02:00
45f86f522a Server/forgejo: disable offline mode 2024-06-05 23:49:35 +02:00
84fa84350a Kde/sddm: change background 2024-06-05 22:55:38 +02:00
f4712fdf70 Kde/sddm: change cursor name
The cursor name changed in Plasma 6 and I forgot to change it
2024-06-05 22:53:31 +02:00
bec73e73ad Machines/WinMax2: enable ryzen smu 2024-06-04 09:35:54 +02:00
7de1a1bad7 Common/avahi: remove 23.11 compatibity on config 2024-06-03 01:02:39 +02:00
6ac0973357 Flake: remove unneeded nixpkgs patches 2024-06-03 00:52:22 +02:00
2f3eafb1de Common: update state version to 24.05 2024-06-03 00:51:03 +02:00
fd871aed7a Flake: upgrade nixos-stable and home-manager to 24.05, upgrade flake 2024-06-03 00:48:56 +02:00
c0594967a7 Flake: pin catppuccin-vsc input 2024-06-02 20:27:03 +02:00
05c28f5ce5 Desktop/discord: remove vencord overlay
I don't use the official discord app, and vesktop uses it's own
vencord so I don't need it anymore
2024-06-02 00:29:22 +02:00
46678f11f1 Common/fish: enable fish 2024-05-31 01:34:32 +02:00
617a0b2356 Machines/Archie: use amd zenpower nixos-hardware module 2024-05-31 00:43:05 +02:00
57c9e8d66f Flake: update lock file 2024-05-31 00:40:01 +02:00
b7d90ad5a5 Common/direnv: configure using home-manager 2024-05-25 16:03:52 +02:00
9fc7d0c26b Machines/WinMax2: remove fingerprint reader instead of disabling 2024-05-25 02:17:22 +02:00
e3f0c2666f Machines/WinMax2: disable fingerprint reader 2024-05-25 00:56:36 +02:00
07217c6777 Gaming/pcsx2: add timesplitters 2 2024-05-24 11:19:31 +02:00
1fad825868 Gaming/pcsx2: rework iso compression 2024-05-22 00:43:32 +02:00
6628a2d181 Flake: update lock file and remove uneeded nixpkgs patch 2024-05-18 18:55:03 +02:00
89c600766a Desktop/discord: update vencord 2024-05-18 14:01:12 +02:00
fbe01084d2 Desktop/discord: get rid of official discord app 2024-05-18 13:28:50 +02:00
cc11a5a386 Desktop: add mpv 2024-05-18 12:14:41 +02:00
28a3bf2509 School: remove most of the role 2024-05-18 01:31:40 +02:00
19985c86da Kde/sddm: enable wayland 2024-05-14 20:38:59 +02:00
b740d56f03 Machines/WinMax2: add spanish keyboard layout to plasma 2024-05-14 19:16:16 +02:00
316a147c4a Machines/WinMax2: refactor steam scaling 2024-05-14 19:16:16 +02:00
3931366eb9 Kde/plasma: install plasma-thundetbolt 2024-05-14 19:16:10 +02:00
e2925ee06a Machines/WinMax2: enable bolt 2024-05-14 19:00:01 +02:00
94b0eb3d65 Machines: Update jovian desktop session name 2024-05-11 20:51:45 +02:00
72557d36ea Flake: update secrets 2024-05-11 20:49:53 +02:00
f704fd47d1 Machines/SteamDeck: mount persist subvolume 2024-05-11 20:35:16 +02:00
a66628290b Desktop/discord: update vencord 2024-05-07 10:19:51 +02:00
9e1ae553cf Flake: add nixpkgs patches 2024-05-07 09:36:20 +02:00
aeed860735 Flake: actually downgrade catppuccin input 2024-05-06 09:45:03 +02:00
008d792a4b Flake: update lock file 2024-05-03 18:21:08 +02:00
c9646442f8 Gaming/syncthing: share wolfenstein the new order saves with winmax2 2024-05-03 18:06:44 +02:00
8d8b118b36 Flake: pin catppucin input
The commit after this one breaks on nixos 23.11, and I can't be arsed to fix that rn
2024-05-03 18:02:48 +02:00
2d49d6aece Server/syncthing: add pcsx2 folder 2024-05-01 03:35:30 +02:00
91ebf1acc9 Gaming/pcsx2: set up syncthing 2024-05-01 03:34:42 +02:00
74116aa110 Gaming/pcsx2: add default hotkeys 2024-05-01 02:40:41 +02:00
6b8e8fc132 Gaming/pcsx2: set resolution multiplayer 2024-05-01 02:25:52 +02:00
Toast
3eee85a87d Merge pull request 'Switch to plasma 6' (#9) from plasma6 into main
Reviewed-on: http://git.everest.sable-pancake.ts.net/Toast/nix-stuff/pulls/9
2024-04-29 20:02:43 +02:00
132 changed files with 6529 additions and 1777 deletions

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
# Ignore build outputs from performing a nix-build or `nix build` command
result
result-*
repl-result*
# ---> Kate
# Ignore kate's swap files

View file

@ -14,14 +14,10 @@ print-recipes:
update:
nix flake update
# Update a single input
update-input input:
nix flake lock --update-input {{input}}
@edit-secrets:
git clone ssh://forgejo@git.everest.sable-pancake.ts.net:4222/Toast/nix-secrets.git /tmp/secrets
sed -i 's\git+ssh://forgejo@git.everest.sable-pancake.ts.net:4222/Toast/nix-secrets\/tmp/secrets\g' flake.nix
just -q update-input secrets
git clone ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets.git /tmp/secrets
sed -i 's\git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets\/tmp/secrets\g' flake.nix
nix flake update secrets
echo "{{bold}}All done!"
echo "{{normal}}Remember to restore flake.nix"
echo ""

392
flake.lock generated
View file

@ -10,11 +10,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1712079060,
"narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=",
"lastModified": 1762618334,
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
"owner": "ryantm",
"repo": "agenix",
"rev": "1381a759b205dff7a6818733118d02253340fd5e",
"rev": "fcdea223397448d35d9b31f798479227e80183f6",
"type": "github"
},
"original": {
@ -24,64 +24,83 @@
}
},
"catppuccin": {
"locked": {
"lastModified": 1713895615,
"narHash": "sha256-SVkxhcL0/IN5fNI2dqr702wXOnzktsm0LCEVGRAJQcY=",
"owner": "catppuccin",
"repo": "nix",
"rev": "a48e70a31616cb63e4794fd3465bff1835cc4246",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "nix",
"type": "github"
}
},
"catppuccin-vsc": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1713966850,
"narHash": "sha256-AHAkkTUjk86rED3pQh8i4OiSze+OHe697L0o3zhv89A=",
"lastModified": 1765990358,
"narHash": "sha256-l8x0gU8mnYaGMl+gWrsSHKBJlZWD8KXJfHTkRlFiPI0=",
"owner": "catppuccin",
"repo": "vscode",
"rev": "75d96f3ae48b249f77124688a026ca5d7eeb5fb2",
"repo": "nix",
"rev": "de1b60ca45a578f59f7d84c8d338b346017b2161",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "vscode",
"repo": "nix",
"type": "github"
}
},
"flake-compat": {
"catppuccin-konsole": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"lastModified": 1720277724,
"narHash": "sha256-d5+ygDrNl2qBxZ5Cn4U7d836+ZHz77m6/yxTIANd9BU=",
"owner": "catppuccin",
"repo": "konsole",
"rev": "3b64040e3f4ae5afb2347e7be8a38bc3cd8c73a8",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"owner": "catppuccin",
"repo": "konsole",
"type": "github"
}
},
"copyparty": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs-raw"
]
},
"locked": {
"lastModified": 1766045858,
"narHash": "sha256-lsbdHVSc5EB2+XgKDbeG1DjLLY5DnzlKQIPV0uQu/bQ=",
"owner": "9001",
"repo": "copyparty",
"rev": "0e6b167167eaf04036df8576f1ea96bc116ea951",
"type": "github"
},
"original": {
"owner": "9001",
"repo": "copyparty",
"type": "github"
}
},
"eza-themes": {
"flake": false,
"locked": {
"lastModified": 1765813820,
"narHash": "sha256-WcwzKm2mi/tyA+zZCpyvTdrOrZ1R1ENA3t622SGzFas=",
"owner": "eza-community",
"repo": "eza-themes",
"rev": "1239cb1dd23fa8b70865550db77701b164a53cde",
"type": "github"
},
"original": {
"owner": "eza-community",
"repo": "eza-themes",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1678901627,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
"type": "github"
},
"original": {
@ -90,6 +109,72 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
"owner": "lf-",
"repo": "flakey-profile",
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
"type": "github"
},
"original": {
"owner": "lf-",
"repo": "flakey-profile",
"type": "github"
}
},
"flakey-profile_2": {
"locked": {
"lastModified": 1712898590,
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
"owner": "lf-",
"repo": "flakey-profile",
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
"type": "github"
},
"original": {
"owner": "lf-",
"repo": "flakey-profile",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -98,11 +183,11 @@
]
},
"locked": {
"lastModified": 1703113217,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"lastModified": 1745494811,
"narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
"type": "github"
},
"original": {
@ -118,11 +203,11 @@
]
},
"locked": {
"lastModified": 1714042918,
"narHash": "sha256-4AItZA3EQIiSNAxliuYEJumw/LaVfrMv84gYyrs0r3U=",
"lastModified": 1765980955,
"narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0c5704eceefcb7bb238a958f532a86e3b59d76db",
"rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173",
"type": "github"
},
"original": {
@ -138,16 +223,16 @@
]
},
"locked": {
"lastModified": 1714043624,
"narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=",
"lastModified": 1765979862,
"narHash": "sha256-/r9/1KamvbHJx6I40H4HsSXnEcBAkj46ZwibhBx9kg0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411",
"rev": "d3135ab747fd9dac250ffb90b4a7e80634eacbe9",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-23.11",
"ref": "release-25.11",
"repo": "home-manager",
"type": "github"
}
@ -160,11 +245,11 @@
]
},
"locked": {
"lastModified": 1714022840,
"narHash": "sha256-i6xZsf7Kvp1n/Sn3nqPY1MJQx0gf80OGQw32PA/aZd8=",
"lastModified": 1766067735,
"narHash": "sha256-cRC/rOYRtZNzc5y9nTccozyo/mkI4/1eFE33Aqgs+SQ=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "94def3af1d45fe4b142beda3aa59a6a98e62ce9e",
"rev": "34a16089be30f77ac9444907ec97c02b4b711896",
"type": "github"
},
"original": {
@ -173,13 +258,73 @@
"type": "github"
}
},
"lix": {
"flake": false,
"locked": {
"lastModified": 1765883751,
"narHash": "sha256-clrWX/t2swPGBVs50Yegq2HK3q5bbwOt3kWMsL7JIZM=",
"rev": "fc0073f54095f15ee272621d4746eb9f40946385",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/fc0073f54095f15ee272621d4746eb9f40946385.tar.gz?rev=fc0073f54095f15ee272621d4746eb9f40946385"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
}
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile",
"lix": [
"lix"
],
"nixpkgs": [
"nixpkgs-raw"
]
},
"locked": {
"lastModified": 1764519849,
"narHash": "sha256-XnNABKfIYKSimQVvKc9FnlC2H0LurOhd9MS6l0Z67lE=",
"rev": "6c95c0b6f73f831226453fc6905c216ab634c30f",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/6c95c0b6f73f831226453fc6905c216ab634c30f.tar.gz?rev=6c95c0b6f73f831226453fc6905c216ab634c30f"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
}
},
"lix-module-unstable": {
"inputs": {
"flake-utils": "flake-utils_3",
"flakey-profile": "flakey-profile_2",
"lix": [
"lix"
],
"nixpkgs": [
"nixpkgs-unstable-raw"
]
},
"locked": {
"lastModified": 1764519849,
"narHash": "sha256-XnNABKfIYKSimQVvKc9FnlC2H0LurOhd9MS6l0Z67lE=",
"rev": "6c95c0b6f73f831226453fc6905c216ab634c30f",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/6c95c0b6f73f831226453fc6905c216ab634c30f.tar.gz?rev=6c95c0b6f73f831226453fc6905c216ab634c30f"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1711997375,
"narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=",
"lastModified": 1754777568,
"narHash": "sha256-0bBqT+3XncgF8F03RFAamw9vdf0VmaDoIJLTGkjfQZs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "45bf66f7068db79b552da864c0e87452be624d6c",
"rev": "62f636b87ef6050760a8cb325cadb90674d1e23e",
"type": "github"
},
"original": {
@ -197,11 +342,11 @@
]
},
"locked": {
"lastModified": 1690328911,
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=",
"lastModified": 1729697500,
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747",
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
"type": "github"
},
"original": {
@ -213,11 +358,11 @@
},
"nix-impermanence": {
"locked": {
"lastModified": 1708968331,
"narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=",
"lastModified": 1737831083,
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30",
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
"type": "github"
},
"original": {
@ -233,11 +378,11 @@
]
},
"locked": {
"lastModified": 1713869268,
"narHash": "sha256-o3CMQeu/S8/4zU0pMtYg51rd1FWdJsI2Xohzng1Ysdg=",
"lastModified": 1765267181,
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "dcb6ac44922858ce3a5b46f77a36d6030181460c",
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
"type": "github"
},
"original": {
@ -253,11 +398,11 @@
]
},
"locked": {
"lastModified": 1713869268,
"narHash": "sha256-o3CMQeu/S8/4zU0pMtYg51rd1FWdJsI2Xohzng1Ysdg=",
"lastModified": 1765267181,
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "dcb6ac44922858ce3a5b46f77a36d6030181460c",
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
"type": "github"
},
"original": {
@ -268,11 +413,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1713864415,
"narHash": "sha256-/BPDMJEkrsFAFOsQWhwm31wezlgshPFlLBn34KEUdVA=",
"lastModified": 1764440730,
"narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "797f8d8082c7cc3259cba7275c699d4991b09ecc",
"rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3",
"type": "github"
},
"original": {
@ -284,11 +429,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1712963716,
"narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=",
"lastModified": 1763966396,
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "cfd6b5fc90b15709b780a5a1619695a88505a176",
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
"type": "github"
},
"original": {
@ -300,26 +445,26 @@
},
"nixpkgs-raw": {
"locked": {
"lastModified": 1713995372,
"narHash": "sha256-fFE3M0vCoiSwCX02z8VF58jXFRj9enYUSTqjyHAjrds=",
"lastModified": 1765838191,
"narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dd37924974b9202f8226ed5d74a252a9785aedf8",
"rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-23.11",
"ref": "nixos-25.11",
"type": "indirect"
}
},
"nixpkgs-unstable-raw": {
"locked": {
"lastModified": 1713895582,
"narHash": "sha256-cfh1hi+6muQMbi9acOlju3V1gl8BEaZBXBR9jQfQi4U=",
"lastModified": 1765779637,
"narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "572af610f6151fd41c212f897c71f7056e3fb518",
"rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
"type": "github"
},
"original": {
@ -328,21 +473,6 @@
"type": "indirect"
}
},
"nur": {
"locked": {
"lastModified": 1714114197,
"narHash": "sha256-f1kMNBUgbY+2/N0YkeouGNYdL7HVsRgcQLf5zL/ayd0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "10fc1b8b048fe797ada9302f700590afb457dde2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"plasma-manager": {
"inputs": {
"home-manager": [
@ -353,16 +483,15 @@
]
},
"locked": {
"lastModified": 1714390161,
"narHash": "sha256-hWPGLUGNr7IR2FT4xS0VlhTW3S6xpw0hU3LJJC3CaKo=",
"owner": "toast003",
"lastModified": 1763909441,
"narHash": "sha256-56LwV51TX/FhgX+5LCG6akQ5KrOWuKgcJa+eUsRMxsc=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "d9754f6f5dcf96969ad40496326213d5344846e5",
"rev": "b24ed4b272256dfc1cc2291f89a9821d5f9e14b4",
"type": "github"
},
"original": {
"owner": "toast003",
"ref": "libinput",
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
@ -371,10 +500,15 @@
"inputs": {
"agenix": "agenix",
"catppuccin": "catppuccin",
"catppuccin-vsc": "catppuccin-vsc",
"catppuccin-konsole": "catppuccin-konsole",
"copyparty": "copyparty",
"eza-themes": "eza-themes",
"home-manager": "home-manager_2",
"home-manager-unstable": "home-manager-unstable",
"jovian": "jovian",
"lix": "lix",
"lix-module": "lix-module",
"lix-module-unstable": "lix-module-unstable",
"nix-flatpak": "nix-flatpak",
"nix-impermanence": "nix-impermanence",
"nix-index-db": "nix-index-db",
@ -382,26 +516,45 @@
"nixos-hardware": "nixos-hardware",
"nixpkgs-raw": "nixpkgs-raw",
"nixpkgs-unstable-raw": "nixpkgs-unstable-raw",
"nur": "nur",
"plasma-manager": "plasma-manager",
"secrets": "secrets",
"vscode-extensions": "vscode-extensions"
"sops-nix": "sops-nix"
}
},
"secrets": {
"flake": false,
"locked": {
"lastModified": 1713910881,
"narHash": "sha256-MZ1+GmZL3V3Kqe4YrxPA2W8vrF/c+f7sYOpf+jw6ESc=",
"lastModified": 1766143747,
"narHash": "sha256-bG4QoCZLUDrubYFuRvxiXhycBD3R+UjrzXrNZ+qRnio=",
"ref": "refs/heads/main",
"rev": "918b61f3ee194d7e67fa1d3200b64fe7741dd24a",
"revCount": 15,
"rev": "8921f23861a82f0f8d706c276bc738ca72c053b1",
"revCount": 41,
"type": "git",
"url": "ssh://forgejo@git.everest.sable-pancake.ts.net:4222/Toast/nix-secrets"
"url": "ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets"
},
"original": {
"type": "git",
"url": "ssh://forgejo@git.everest.sable-pancake.ts.net:4222/Toast/nix-secrets"
"url": "ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable-raw"
]
},
"locked": {
"lastModified": 1765836173,
"narHash": "sha256-hWRYfdH2ONI7HXbqZqW8Q1y9IRbnXWvtvt/ONZovSNY=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "443a7f2e7e118c4fc63b7fae05ab3080dd0e5c63",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"systems": {
@ -434,25 +587,18 @@
"type": "github"
}
},
"vscode-extensions": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs-unstable-raw"
]
},
"systems_3": {
"locked": {
"lastModified": 1714094499,
"narHash": "sha256-SC6tm901h2tzRxd6hfzn5/bgLJ8R4ng39R7SIkg6wlo=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "e05ff96b9f710d57d7cd60641f0273176debf222",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}

225
flake.nix
View file

@ -3,10 +3,10 @@
inputs = {
secrets = {
url = "git+ssh://forgejo@git.everest.sable-pancake.ts.net:4222/Toast/nix-secrets";
url = "git+ssh://forgejo@git.toast003.xyz:4222/Toast/nix-secrets";
flake = false;
};
nixpkgs-raw.url = "nixpkgs/nixos-23.11";
nixpkgs-raw.url = "nixpkgs/nixos-25.11";
nixpkgs-unstable-raw.url = "nixpkgs/nixos-unstable";
agenix = {
@ -16,9 +16,13 @@
darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies
};
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
};
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs-raw";
};
@ -36,6 +40,9 @@
nix-impermanence.url = "github:nix-community/impermanence";
copyparty.url = "github:9001/copyparty";
copyparty.inputs.nixpkgs.follows = "nixpkgs-raw";
/*
These are the same input, just following different nixpkgs versions
This avoids some wierdness when using one that follows unstable on a stable nixpkgs
@ -51,22 +58,41 @@
};
plasma-manager = {
url = "github:toast003/plasma-manager/libinput";
url = "github:nix-community/plasma-manager/";
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
inputs.home-manager.follows = "home-manager-unstable";
};
catppuccin-vsc.url = "github:catppuccin/vscode";
vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
};
nix-flatpak.url = "github:gmodena/nix-flatpak/main";
nur.url = "github:nix-community/NUR";
catppuccin.url = "github:catppuccin/nix";
lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
inputs.nixpkgs.follows = "nixpkgs-raw";
inputs.lix.follows = "lix";
};
lix-module-unstable = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
inputs.nixpkgs.follows = "nixpkgs-unstable-raw";
inputs.lix.follows = "lix";
};
# Non flake inputs / random things
lix = {
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
flake = false;
};
eza-themes = {
url = "github:eza-community/eza-themes";
flake = false;
};
catppuccin-konsole = {
url = "github:catppuccin/konsole";
flake = false;
};
};
outputs = {...} @ inputs:
@ -77,28 +103,30 @@
nixpkgs-unstable-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches {
name = "patched-nixpkgs-unstable";
src = nixpkgs-unstable-raw;
patches = [];
patches = [
./nixpkgs-patches/pr471291.patch
./nixpkgs-patches/revert-mangohud-update.patch
];
};
nixpkgs-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches {
name = "patched-nixpkgs";
src = nixpkgs-raw;
patches = [
./nixpkgs-patches/0001-catppuccin-add-grub-theme.patch
./nixpkgs-patches/0002-catppuccin-add-starship-theme.patch
];
};
# https://discourse.nixos.org/t/proper-way-of-applying-patch-to-system-managed-via-flake/21073/26
nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs {self = inputs.self;};
nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs {self = inputs.self;};
nixpkgs-unstable = (import "${nixpkgs-unstable-patched}/flake.nix").outputs {self = inputs.nixpkgs-unstable-raw;};
nixpkgs = (import "${nixpkgs-patched}/flake.nix").outputs {self = inputs.nixpkgs-raw;};
in {
formatter.x86_64-linux = nixpkgs-unstable.legacyPackages.x86_64-linux.alejandra;
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell {
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShellNoCC {
name = "toast-devshell";
# The agenix cli is not needed to activate a configuration, so instead of installing it
# I'll just add it to de devShell, since that's the only real time I'm going to use it.
packages = with nixpkgs.legacyPackages.x86_64-linux; [
agenix.packages.x86_64-linux.default
git
nvd
nix-output-monitor
nix-diff
just
@ -108,117 +136,104 @@
export PS1="$PS1(toast-configs)> "
'';
};
overlays.default = final: prev: {
kasane-teto-cursor = final.callPackage ./pkgs/kasane-teto-cursor {};
kame-editor = final.callPackage ./pkgs/kame-editor {};
kame-tools = final.callPackage ./pkgs/kame-tools {};
rstmcpp = final.callPackage ./pkgs/rstmcpp {};
};
packages = {
x86_64-linux = with import nixpkgs-unstable-raw {system = "x86_64-linux";}; {
anything-sync-daemon = callPackage ./pkgs/anything-sync-daemon {};
discord-krisp-fixer = callPackage ./pkgs/discord-krisp-fixer {};
x86_64-linux = with import nixpkgs-unstable-raw {
system = "x86_64-linux";
overlays = [self.overlays.default];
}; {
inherit kasane-teto-cursor kame-editor kame-tools rstmcpp;
};
};
nixosConfigurations = {
Archie = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
nixosConfigurations = let
mkSystems = hosts:
builtins.mapAttrs (
host: settings: let
pkgs =
if isStable
then nixpkgs
else nixpkgs-unstable;
isStable = (settings ? stable) && (settings.stable == true);
in
mkSystem host settings.modules pkgs isStable
)
hosts;
mkSystem = host: modules: pkgs: stable:
pkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
flakeSelf = self;
};
lib = import ./lib {nixpkgs = pkgs;};
modules =
[
agenix.nixosModules.default
sops-nix.nixosModules.sops
(
if stable
then home-manager
else home-manager-unstable
)
.nixosModules
.home-manager
(
if stable
then nix-index-db
else nix-index-db-unstable
)
.nixosModules
.nix-index
catppuccin.nixosModules.catppuccin
(
if stable
then lix-module
else lix-module-unstable
)
.nixosModules
.default
./roles/common
(./machines + "/${host}")
]
++ modules;
};
/*
I used to set up nixpkgs in the flake, but doing that made
defining overlays in modules impossible (or at least I could
not figure out how)
Also has nice side effect of making it easier to add new systems :3
*/
modules = [
agenix.nixosModules.default
home-manager-unstable.nixosModule
nix-index-db-unstable.nixosModules.nix-index
catppuccin.nixosModules.catppuccin
./roles/common
in
mkSystems {
Archie.modules = [
nixos-hardware.nixosModules.common-cpu-amd-zenpower
./roles/desktop
./roles/kde
./roles/gaming
./roles/school
./machines/Archie
];
};
SurfaceGo = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
modules = [
agenix.nixosModules.default
home-manager-unstable.nixosModule
SurfaceGo.modules = [
nixos-hardware.nixosModules.microsoft-surface-go
nix-index-db-unstable.nixosModules.nix-index
catppuccin.nixosModules.catppuccin
./roles/common
./roles/desktop
./roles/kde
./machines/SurfaceGo
];
};
SteamDeck = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
modules = [
agenix.nixosModules.default
SteamDeck.modules = [
jovian.nixosModules.default
home-manager-unstable.nixosModule
nix-index-db-unstable.nixosModules.nix-index
catppuccin.nixosModules.catppuccin
./roles/common
./roles/desktop
./roles/kde
./roles/gaming
./roles/school
./machines/SteamDeck
];
};
WinMax2 = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
systemPkgs = inputs.nixpkgs-unstable-raw;
flakeSelf = self;
};
modules = [
agenix.nixosModules.default
jovian.nixosModules.default
home-manager-unstable.nixosModule
nix-index-db-unstable.nixosModules.nix-index
WinMax2.modules = [
nixos-hardware.nixosModules.gpd-win-max-2-2023
catppuccin.nixosModules.catppuccin
./roles/common
./roles/desktop
./roles/kde
./roles/gaming
./roles/school
./machines/WinMax2
];
};
Everest = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
systemPkgs = inputs.nixpkgs-raw;
flakeSelf = self;
Everest = {
stable = true;
modules = [
copyparty.nixosModules.default
./roles/server
];
};
modules = [
agenix.nixosModules.default
home-manager.nixosModule
nix-index-db.nixosModules.nix-index
catppuccin.nixosModules.catppuccin
./roles/common
./roles/server
./machines/Everest
];
};
};
};
}

10
lib/default.nix Normal file
View file

@ -0,0 +1,10 @@
{nixpkgs}:
nixpkgs.lib.extend (final: prev: {
toast = let
importLib = file: import file {lib = final;};
in {
patches = importLib ./patches.nix;
networkManager = importLib ./networkManager.nix;
syncthing = importLib ./syncthing.nix;
};
})

23
lib/networkManager.nix Normal file
View file

@ -0,0 +1,23 @@
{lib}: {
/**
Make a NetworkManager wifi profile, to be used with ensureProfiles
*/
mkWifiProfile = {
id,
ssid,
priority ? 0,
wifi-security,
}: {
connection = {
inherit id;
type = "wifi";
autoconnect-priority = priority;
};
ipv4.method = "auto";
wifi = {
mode = "infrastructure";
inherit ssid;
};
inherit wifi-security;
};
}

13
lib/patches.nix Normal file
View file

@ -0,0 +1,13 @@
{lib}: {
/**
Get a list of patches from a path.
*/
patchesInPath = path: let
pathContents = builtins.readDir path;
filter = name: value:
(value == "regular" || value == "symlink") && lib.strings.hasSuffix ".patch" name;
filteredContents = lib.attrsets.filterAttrs filter pathContents;
patchFilenames = builtins.attrNames filteredContents;
in
builtins.map (value: lib.path.append path value) patchFilenames;
}

5
lib/syncthing.nix Normal file
View file

@ -0,0 +1,5 @@
{lib}: let
data = import ./../syncthing.nix;
in {
devices = builtins.getAttr "devices" data;
}

View file

@ -14,27 +14,28 @@
# Enable support for the Xbox One wireless dongle
hardware.xone.enable = true;
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "nvme" "sd_mod"];
boot.initrd.kernelModules = ["amdgpu"];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
boot.extraModprobeConfig = "options snd_hda_intel power_save=0";
fileSystems."/" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["subvol=@root" "compress=zstd"];
options = ["subvol=@root"];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["subvol=@nix" "compress=zstd"];
options = ["subvol=@nix"];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["subvol=@boot" "compress=zstd"];
options = ["subvol=@boot"];
};
fileSystems."/boot/efi" = {
@ -53,6 +54,12 @@
fsType = config.fileSystems."/".fsType;
options = ["subvolid=5" "ro"];
};
"/mnt/hdd" = {
# device = "/dev/disk/by-id/ata-SAMSUNG_HD103SI_S1Y5J9CZA19763-part1";
label = "Archie\\x20HDD";
fsType = "bcachefs";
options = ["x-systemd.automount"];
};
"/mnt/windows" = {
device = "/dev/disk/by-uuid/B61AFDAC1AFD6A2F";
fsType = "ntfs3";
@ -62,12 +69,12 @@
"/home" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["subvol=@home" "compress=zstd"];
options = ["subvol=@home"];
};
"/persist" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["subvol=@persist" "compress=zstd"];
options = ["subvol=@persist"];
neededForBoot = true;
};
};

View file

@ -22,18 +22,22 @@
wakeOnLan.enable = true;
ipv4.addresses = [
{
address = "192.168.0.160";
address = "192.168.1.160";
prefixLength = 24;
}
];
};
# I use networkd, so I need to declare the interface for the default gateway
defaultGateway = {
address = "192.168.0.1";
address = "192.168.1.1";
interface = "eno1";
};
nameservers = ["9.9.9.9"];
};
systemd.network.wait-online.extraArgs = ["--dns"];
time.timeZone = "Europe/Madrid";
services.automatic-timezoned.enable = lib.mkForce false;
# Define a user account. Don't forget to set a password with passwd.
users.users.toast = {
@ -53,11 +57,4 @@
};
};
};
# Open ports in the firewall.
# No idea what ports 5201 and 21027 do tho
networking.firewall.allowedTCPPorts = [5201];
networking.firewall.allowedUDPPorts = [5201 21027];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
}

View file

@ -23,9 +23,9 @@
options = ["compress=zstd" "subvol=@"];
};
"/nix" = {
device = "/dev/disk/by-label/Everest";
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["compress=zstd" "subvol=@nix"];
options = ["subvol=@nix-server"];
};
"/home" = {
device = "/dev/disk/by-label/Everest";
@ -37,6 +37,11 @@
fsType = "btrfs";
options = ["compress=zstd" "subvol=/" "ro"];
};
"/mnt/ssd" = {
device = "/dev/disk/by-uuid/5322c217-b87b-4150-8b4c-a8fa17a899bf";
fsType = "btrfs";
options = ["subvol=/" "ro"];
};
"/persist" = {
device = "/dev/disk/by-label/Everest";
fsType = "btrfs";
@ -46,7 +51,7 @@
};
fileSystems."/boot/efi" = {
device = "/dev/disk/by-label/Boot";
device = "/dev/disk/by-uuid/FB87-4CBC";
fsType = "vfat";
};

View file

@ -39,7 +39,7 @@
enable = true;
autoStart = true;
user = "toast";
desktopSession = "plasmawayland";
desktopSession = "plasma";
};
decky-loader = {
enable = true;

View file

@ -45,6 +45,13 @@ in {
fsType = "btrfs";
options = ["subvol=@" "compress=zstd"];
};
"btrfs_persist" = {
mountPoint = "/persist";
label = ssdLabel;
fsType = "btrfs";
options = ["subvol=@persist"];
neededForBoot = true;
};
"btrfs_boot" = {
mountPoint = "/boot";
label = ssdLabel;

View file

@ -7,16 +7,19 @@
lib,
...
}: {
# Use grub boot loader
boot = {
loader = {
systemd-boot.enable = false;
grub = {
limine = {
enable = true;
device = "nodev";
efiSupport = true;
# No other OS on here :P
useOSProber = false;
enableEditor = true;
secureBoot.enable = true;
extraConfig = ''
timeout: 3
'';
style = {
graphicalTerminal.font.scale = "2x2";
};
};
efi = {
efiSysMountPoint = config.fileSystems."efi_boot_partition".mountPoint;
@ -33,24 +36,29 @@
kernelPackages = pkgs.linuxPackages_latest;
};
catppuccin.limine.enable = true;
networking.hostName = "WinMax2"; # Define your hostname.
specialisation.noAVX512.configuration = {
# For some reason The Finals crashes on CPUs that support AVX512
boot.kernelParams = ["clearcpuid=304"];
};
# Sleep fixes
boot.kernelParams = ["rtc_cmos.use_acpi_alarm=1"];
boot.kernelParams = ["rtc_cmos.use_acpi_alarm=1" "panic=5"];
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="GXTP7385:00", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="i2c", ATTR{name}=="PNP0C50:00", ATTR{power/wakeup}="disabled"
SUBSYSTEM=="usb", ATTR{idVendor}=="2541", ATTR{idProduct}=="9711", ATTR{remove}="1"
'';
services.handheld-daemon = {
enable = true;
user = "toast";
services = {
hardware.bolt.enable = true;
handheld-daemon = {
enable = true;
ui = {
enable = true;
};
user = "toast";
};
# Input plumber conflicts with hhd, and it doesn't let me use mouse mode
inputplumber.enable = lib.mkForce false;
};
# Allow unfree packages
@ -62,29 +70,6 @@
services = {
xserver.xkb.layout = lib.mkForce "us";
displayManager.sddm.settings = {
General.GreeterEnvironment = "QT_SCREEN_SCALE_FACTORS=2";
};
};
jovian = {
# Steam Deck UI settings
steam = {
enable = true;
autoStart = false;
user = "toast";
desktopSession = "plasmawayland";
};
hardware.amd.gpu.enableBacklightControl = true;
# Need patched mesa
steamos = {
enableMesaPatches = true;
enableVendorRadv = true;
};
decky-loader = {
enable = true;
package = pkgs.decky-loader-prerelease;
};
};
# Enable bluetooth
@ -98,23 +83,9 @@
# Enable CUPS to print documents.
# services.printing.enable = true;
environment.sessionVariables = {
STEAM_FORCE_DESKTOPUI_SCALING = "2";
};
home-manager.sharedModules = [
{
# Steam's hidpi support is bugged so it needds to be hardcoded
# This bypasses that
xdg.desktopEntries = {
steam-noScaling = {
name = "Steam (No Scaling)";
exec = "env STEAM_FORCE_DESKTOPUI_SCALING=0 steam %U";
icon = "steam";
categories = ["Network" "FileTransfer" "Game"];
comment = "Application for managing and playing games on Steam";
};
};
programs.plasma.input.keyboard.layouts = lib.mkForce ["us"];
programs.plasma.input.keyboard.layouts = lib.mkForce [{layout = "us";} {layout = "es";}];
}
];
@ -158,4 +129,13 @@
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
specialisation.bootDebug.configuration = {
boot.kernelParams = [
"systemd.debug-shell=1"
"systemd.log_level=debug"
"systemd.log_target=kmsg"
"log_buf_len=1M"
"printk.devkmsg=on"
];
};
}

View file

@ -78,7 +78,10 @@ in {
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware = {
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
cpu.amd = {
updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
ryzen-smu.enable = true;
};
sensor.iio.bmi260.enable = true;
};
}

0
nixpkgs-patches/.gitkeep Normal file
View file

View file

@ -1,49 +0,0 @@
From 316d5e8f356d6817626bca5a37dd587418afc856 Mon Sep 17 00:00:00 2001
From: BlankParticle <blankparticle@gmail.com>
Date: Tue, 21 Nov 2023 18:14:15 +0530
Subject: [PATCH 1/2] catppuccin: add grub theme
---
pkgs/data/themes/catppuccin/default.nix | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/pkgs/data/themes/catppuccin/default.nix b/pkgs/data/themes/catppuccin/default.nix
index 59e030eb9e0e..e8cdb0456d17 100644
--- a/pkgs/data/themes/catppuccin/default.nix
+++ b/pkgs/data/themes/catppuccin/default.nix
@@ -1,5 +1,5 @@
let
- validThemes = [ "bat" "bottom" "btop" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "refind" "rofi" "waybar" ];
+ validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "refind" "rofi" "waybar" ];
in
{ fetchFromGitHub
, lib
@@ -40,6 +40,14 @@ let
hash = "sha256-J3UezOQMDdxpflGax0rGBF/XMiKqdqZXuX4KMVGTxFk=";
};
+ grub = fetchFromGitHub {
+ name = "grub";
+ owner = "catppuccin";
+ repo = "grub";
+ rev = "v1.0.0";
+ hash = "sha256-/bSolCta8GCZ4lP0u5NVqYQ9Y3ZooYCNdTwORNvR7M0=";
+ };
+
hyprland = fetchFromGitHub {
name = "hyprland";
owner = "catppuccin";
@@ -140,6 +148,10 @@ stdenvNoCC.mkDerivation {
mkdir -p $out/bottom
cp "${sources.bottom}/themes/${variant}.toml" "$out/bottom/"
+ '' + lib.optionalString (lib.elem "grub" themeList) ''
+ mkdir -p $out/grub
+ cp -r ${sources.grub}/src/catppuccin-${variant}-grub-theme/* "$out/grub/"
+
'' + lib.optionalString (lib.elem "hyprland" themeList) ''
mkdir -p $out/hyprland
cp "${sources.hyprland}/themes/${variant}.conf" "$out/hyprland/"
--
2.42.0

View file

@ -1,49 +0,0 @@
From 93af02433861cd32221164ddb4fc03b19cbf776b Mon Sep 17 00:00:00 2001
From: Toast <39011842+toast003@users.noreply.github.com>
Date: Sat, 13 Jan 2024 18:41:51 +0100
Subject: [PATCH 2/2] catppuccin: add starship theme
---
pkgs/data/themes/catppuccin/default.nix | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/pkgs/data/themes/catppuccin/default.nix b/pkgs/data/themes/catppuccin/default.nix
index e8cdb0456d17..6ac8cc541ad3 100644
--- a/pkgs/data/themes/catppuccin/default.nix
+++ b/pkgs/data/themes/catppuccin/default.nix
@@ -1,5 +1,5 @@
let
- validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "refind" "rofi" "waybar" ];
+ validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "refind" "rofi" "starship" "waybar" ];
in
{ fetchFromGitHub
, lib
@@ -104,6 +104,14 @@ let
hash = "sha256-DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
};
+ starship = fetchFromGitHub {
+ name = "starship";
+ owner = "catppuccin";
+ repo = "starship";
+ rev = "5629d2356f62a9f2f8efad3ff37476c19969bd4f";
+ hash = "sha256-nsRuxQFKbQkyEI4TXgvAjcroVdG+heKX5Pauq/4Ota0=";
+ };
+
waybar = fetchFromGitHub {
name = "waybar";
owner = "catppuccin";
@@ -183,6 +191,10 @@ stdenvNoCC.mkDerivation {
cp ${sources.refind}/${variant}.conf $out/refind/
cp -r ${sources.refind}/assets/${variant} $out/refind/assets/
+ '' + lib.optionalString (lib.elem "starship" themeList) ''
+ mkdir -p $out/starship
+ cp ${sources.starship}/palettes/${variant}.toml $out/starship/
+
'' + lib.optionalString (lib.elem "waybar" themeList) ''
mkdir -p $out/waybar
cp ${sources.waybar}/${variant}.css $out/waybar/
--
2.42.0

View file

@ -0,0 +1,61 @@
From ef52b16862caa43dd4abc0aedf1814796342b664 Mon Sep 17 00:00:00 2001
From: K900 <me@0upti.me>
Date: Tue, 16 Dec 2025 11:48:37 +0300
Subject: [PATCH] kdePackages.plasma-vault: refresh patch
No idea how this happened.
---
.../plasma/plasma-vault/hardcode-paths.patch | 26 +++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
index d8a5f4a025de3..090df77eb15b0 100644
--- a/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
+++ b/pkgs/kde/plasma/plasma-vault/hardcode-paths.patch
@@ -1,5 +1,5 @@
diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp
-index f425eb3..5b8cd43 100644
+index 64138b6..5d249aa 100644
--- a/kded/engine/backends/cryfs/cryfsbackend.cpp
+++ b/kded/engine/backends/cryfs/cryfsbackend.cpp
@@ -207,7 +207,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const
@@ -44,7 +44,7 @@ index b992f6f..eb828dd 100644
QString GocryptfsBackend::getConfigFilePath(const Device &device) const
diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp
-index 8763304..e6860d2 100644
+index 714b660..61d8bf5 100644
--- a/kded/engine/fusebackend_p.cpp
+++ b/kded/engine/fusebackend_p.cpp
@@ -90,7 +90,7 @@ QProcess *FuseBackend::process(const QString &executable, const QStringList &arg
@@ -57,19 +57,19 @@ index 8763304..e6860d2 100644
FutureResult<> FuseBackend::initialize(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload)
diff --git a/kded/engine/vault.cpp b/kded/engine/vault.cpp
-index c101079..67c8a83 100644
+index a7a4741..773b671 100644
--- a/kded/engine/vault.cpp
+++ b/kded/engine/vault.cpp
-@@ -485,7 +485,7 @@ FutureResult<> Vault::close()
- } else {
- // We want to check whether there is an application
- // that is accessing the vault
-- AsynQt::Process::getOutput(QStringLiteral("lsof"), {QStringLiteral("-t"), mountPoint().data()}) | cast<QString>() | onError([this] {
-+ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), {QStringLiteral("-t"), mountPoint().data()}) | cast<QString>() | onError([this] {
- d->updateMessage(i18n("Unable to lock the vault because an application is using it"));
- }) | onSuccess([this](const QString &result) {
- // based on ksolidnotify.cpp
-@@ -538,7 +538,7 @@ FutureResult<> Vault::forceClose()
+@@ -490,7 +490,7 @@ FutureResult<> Vault::close()
+ } else {
+ // We want to check whether there is an application
+ // that is accessing the vault
+- AsynQt::Process::getOutput(QStringLiteral("lsof"), { QStringLiteral("-t"), mountPoint().data() })
++ AsynQt::Process::getOutput(QStringLiteral("@lsof@"), { QStringLiteral("-t"), mountPoint().data() })
+ | cast<QString>()
+ | onError([this] {
+ d->updateMessage(i18n("Unable to close the vault because an application is using it"));
+@@ -546,7 +546,7 @@ FutureResult<> Vault::forceClose()
using namespace AsynQt::operators;
AsynQt::await(

View file

@ -0,0 +1,49 @@
diff --git a/pkgs/tools/graphics/mangohud/default.nix b/pkgs/tools/graphics/mangohud/default.nix
index cf83d4254baa..992afd60d3cb 100644
--- a/pkgs/tools/graphics/mangohud/default.nix
+++ b/pkgs/tools/graphics/mangohud/default.nix
@@ -24,8 +24,10 @@
unzip,
wayland,
libXNVCtrl,
+ nlohmann_json,
spdlog,
libxkbcommon,
+ glew,
glfw,
libXrandr,
x11Support ? true,
@@ -93,14 +95,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "mangohud";
- version = "0.8.2";
+ version = "0.8.1";
src = fetchFromGitHub {
owner = "flightlessmango";
repo = "MangoHud";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
- hash = "sha256-BZ3R7D2zOlg69rx4y2FzzjpXuPOv913TOz9kSvRN+Wg=";
+ hash = "sha256-FvPhnOvcYE8vVB5R+ZRmuZxrC9U4GA338V7VAuUlHCE=";
};
outputs = [
@@ -188,6 +190,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
dbus
+ nlohmann_json
spdlog
]
++ lib.optional waylandSupport wayland
@@ -195,6 +198,7 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional nvidiaSupport libXNVCtrl
++ lib.optional (x11Support || waylandSupport) libxkbcommon
++ lib.optionals mangoappSupport [
+ glew
glfw
libXrandr
];

View file

@ -1,57 +0,0 @@
{
stdenv,
lib,
fetchFromGitHub,
makeWrapper,
rsync,
gawk,
pv,
gnutar,
zstd,
util-linux,
coreutils,
gnugrep,
findutils,
}:
stdenv.mkDerivation rec {
pname = "anything-sync-daemon";
version = "6.0.0";
src = fetchFromGitHub {
owner = "graysky2";
repo = pname;
rev = "v${version}";
hash = "sha256-6nfaAMH5YgK6gimuZ8j1zWLTDOi11KIwW7Bf0Iwh7+I=";
};
patches = [./disableDaemonStopTargets.patch];
nativeBuildInputs = [makeWrapper];
postPatch = ''
substituteInPlace init/asd* \
--replace /usr/bin/anything-sync-daemon $out/bin/anything-sync-daemon
'';
enableParallelBuilding = true;
makeFlags = [
"DESTDIR=${placeholder "out"}"
"PREFIX="
"INITDIR_SYSTEMD=/lib/systemd/system"
];
installTargets = ["install-systemd-all"];
postInstall = ''
wrapProgram $out/bin/anything-sync-daemon \
--suffix PATH : ${lib.makeBinPath [rsync gawk pv gnutar zstd util-linux coreutils gnugrep findutils]}
'';
meta = with lib; {
description = "Symlinks and syncs user specified dirs to RAM";
homepage = "https://github.com/graysky2/anything-sync-daemon/";
license = lib.licenses.mit;
platforms = platforms.linux;
};
}

View file

@ -1,23 +0,0 @@
diff --git a/Makefile b/Makefile
index ddf2d73..827ea8f 100644
--- a/Makefile
+++ b/Makefile
@@ -31,17 +31,7 @@ common/$(PN): Makefile common/$(PN).in
help: install
-stop-asd:
-ifneq ($(PREFIX), /usr)
- sudo -E asd unsync
-endif
-
-disable-systemd:
-ifeq ($(PREFIX), /usr)
- systemctl stop asd asd-resync || /bin/true
-endif
-
-install-bin: stop-asd disable-systemd common/$(PN)
+install-bin: common/$(PN)
$(Q)echo -e '\033[1;32mInstalling main script...\033[0m'
$(INSTALL_DIR) "$(DESTDIR)$(BINDIR)"
$(INSTALL_PROGRAM) common/$(PN) "$(DESTDIR)$(BINDIR)/$(PN)"

View file

@ -1,17 +0,0 @@
{ writeShellApplication
, rizin
, discord
}:
writeShellApplication rec {
name = "discord-krisp-fixer";
runtimeInputs = [ rizin ];
text = ''
discord_version="${discord.version}"
file="$HOME/.config/discord/$discord_version/modules/discord_krisp/discord_krisp.node"
addr=$(rz-find -x '4881ec00010000' "$file" | head -n1)
rizin -q -w -c "s $addr + 0x30 ; wao nop" "$file"
'';
}

View file

@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchFromGitLab,
qt6,
portaudio,
kame-tools,
vgmstream,
rstmcpp,
}:
stdenv.mkDerivation rec {
name = "kame-editor";
version = "1.4.1";
src = fetchFromGitLab {
owner = "beelzy";
repo = name;
# tag = version;
rev = "82c9c445644b133b6d0ce3529e65b1a3df83c804";
hash = "sha256-V2nMvVIjFRM8++XQ9tkE2OiZzCvdrg0jK69HM+ZIVyA=";
};
postPatch = ''
substituteInPlace kame-editor.pro \
--replace-fail "/usr/local/bin/" "$out/bin"
'';
buildInputs = [
qt6.qtbase
portaudio
];
qtWrapperArgs = [
"--prefix PATH : ${
lib.makeBinPath [
kame-tools
vgmstream
rstmcpp
]
}"
];
nativeBuildInputs = [
qt6.qmake
qt6.wrapQtAppsHook
];
postBuild = ''
bash ./buildicons.sh
'';
postInstall = ''
mkdir -p $out/share/icons/hicolor
mkdir -p $out/share/applications
cp kame-editor.desktop $out/share/applications
cp -r icons/. $out/share/icons/hicolor
'';
}

View file

@ -0,0 +1,29 @@
{
stdenv,
fetchFromGitLab,
zip,
}:
stdenv.mkDerivation rec {
name = "kame-tools";
version = "a1fe47cc";
src = fetchFromGitLab {
owner = "beelzy";
repo = name;
rev = version;
fetchSubmodules = true;
hash = "sha256-ETl5f8M4OJPFB7NEq2mVuMm4RhBtAbMzlrvGHD14zXw=";
};
postPatch = ''
substituteInPlace buildtools/make_base \
--replace-fail "/usr/local/bin" "$out/bin"
'';
installPhase = ''
mkdir -p $out/bin
cp output/linux-x86_64/* $out/bin/
'';
nativeBuildInputs = [zip];
}

18
pkgs/kasane-teto-cursor Normal file
View file

@ -0,0 +1,18 @@
{
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation {
name = "kasane-teto-cursors";
src = fetchzip {
url = "http://dl.everest.tailscale/Kasane%20Teto%20Cursor%20-%20by%20wobb.zip";
hash = "sha256-4neZqApkK6hwufLTilUtPmgzyBih7onSdSZ9lezQbIU=";
};
dontBuild = true;
installPhase = ''
mkdir -p $out/share/icons
cp -dr --no-preserve='ownership' $src/Linux/Kasane\ Teto $out/share/icons
'';
}

21
pkgs/rstmcpp/default.nix Normal file
View file

@ -0,0 +1,21 @@
{
stdenv,
fetchFromGitLab,
}:
stdenv.mkDerivation rec {
name = "rstmcpp";
version = "fe8bee01";
src = fetchFromGitLab {
owner = "beelzy";
repo = name;
rev = version;
fetchSubmodules = true;
hash = "sha256-T9mxTBj/eykvbBkbmEKTUFldtBp3cJgWAbeu44SwxiM=";
};
installPhase = ''
mkdir -p $out/bin
cp rstmcpp $out/bin
'';
}

View file

@ -5,7 +5,6 @@
flakeSelf,
...
}: {
imports = [flakeSelf.inputs.nur.nixosModules.nur];
environment = {
# As of the 1st of May 2023, the default packages are nano, perl, rsync and strace
# I don't need any of them, so I just empty the list
@ -19,6 +18,8 @@
cleanOnBoot = !config.boot.tmp.useTmpfs;
};
environment.localBinInPath = lib.mkDefault true;
# Set up zram
zramSwap = {
enable = true;
@ -45,6 +46,23 @@
boot.supportedFilesystems = ["nfs"];
security.pki.certificates = [
# Caddy
''
-----BEGIN CERTIFICATE-----
MIIBqTCCAU+gAwIBAgIQceh0ZUBNrOmqLVsDr+2HBjAKBggqhkjOPQQDAjAzMTEw
LwYDVQQDEyhDYWRkeSAoRXZlcmVzdCkgbG9jYWwgQ0EgLSAyMDI0IEVDQyBSb290
MB4XDTI0MDcxODAwMDEwM1oXDTM0MDUyNzAwMDEwM1owMzExMC8GA1UEAxMoQ2Fk
ZHkgKEV2ZXJlc3QpIGxvY2FsIENBIC0gMjAyNCBFQ0MgUm9vdDBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABJjrY8x6iDXncxG8exwLyaEq8N0XnCIbga8PVYiz3VLS
07++i0Dey9k68ag6KUZICfc8dX1uZ6/ozUZb4YO3xCSjRTBDMA4GA1UdDwEB/wQE
AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBTQAqZS9KeiAr9mSPV9
RIJbSvRsTzAKBggqhkjOPQQDAgNIADBFAiBIgHrD2cUfNEctVx0WzHb0cLAsrK4Q
3QbyxPLyenR+dAIhAMOIAyxlKKKvAJMOzAg0r+csSVRdP1YHsHiE7U1GeHWx
-----END CERTIFICATE-----
''
];
# Set up localisation
i18n = {
defaultLocale = "en_US.UTF-8";
@ -66,19 +84,26 @@
};
};
services.fwupd.enable = true;
services = {
fstrim.enable = true;
fwupd.enable = true;
};
# Set up my user
users.mutableUsers = false;
users.users.toast = {
isNormalUser = true;
description = "Toast";
extraGroups = ["wheel"];
hashedPasswordFile = config.sops.secrets.toast.path;
};
# Set up time zone.
time.timeZone = "Europe/Madrid";
time.timeZone = lib.mkDefault "Europe/Madrid";
services.automatic-timezoned.enable = true;
nixpkgs.overlays = [
flakeSelf.outputs.overlays.default
(
final: prev: {
catppuccin = prev.catppuccin.override {
@ -95,16 +120,29 @@
)
];
catppuccin.flavour = "mocha";
catppuccin = {
flavor = "mocha";
accent = "mauve";
};
programs.iotop.enable = true;
home-manager = {
backupFileExtension = "hm-backup";
useGlobalPkgs = true;
verbose = true;
sharedModules = [flakeSelf.inputs.catppuccin.homeManagerModules.catppuccin];
sharedModules = with flakeSelf; [
inputs.catppuccin.homeModules.catppuccin
inputs.sops-nix.homeManagerModules.sops
];
users.toast = {osConfig, ...}: {
catppuccin.flavour = osConfig.catppuccin.flavour;
home.stateVersion = "23.11";
catppuccin.flavor = osConfig.catppuccin.flavor;
catppuccin.accent = osConfig.catppuccin.accent;
home.stateVersion = "25.05";
manual = {
manpages.enable = true;
html.enable = true;
};
xdg = {
enable = true;
userDirs = {
@ -113,6 +151,7 @@
publicShare = null; # Disable the public folder
};
};
systemd.user.startServices = true;
};
};
@ -122,8 +161,16 @@
"/persist/id_host"
];
};
sops = {
age.sshKeyPaths = ["/persist/id_host"];
defaultSopsFile = "${flakeSelf.inputs.secrets}/${config.networking.hostName}.yaml";
secrets.toast = {
sopsFile = "${flakeSelf.inputs.secrets}/passwd.yaml";
neededForUsers = true;
};
};
boot.loader.grub.catppuccin.enable = true;
catppuccin.grub.enable = true;
/*
I used to keep the host keys in the repo as a secret, but since I use the
@ -134,9 +181,12 @@
*/
system = {
stateVersion = "23.11";
stateVersion = "25.05";
# Nix on nixos 23.05 does not have dirtyRev
configurationRevision = flakeSelf.sourceInfo.rev or flakeSelf.sourceInfo.dirtyRev or "dirty";
nixos.variant_id = lib.strings.toLower config.networking.hostName;
nixos.variant_id = lib.mkDefault (lib.strings.toLower config.networking.hostName);
};
image.modules.iso = {
system.nixos.variant_id = "${lib.strings.toLower config.networking.hostName}-iso";
};
}

View file

@ -1,14 +1,20 @@
{...}: {
home-manager.users.toast.programs.atuin = {
enable = true;
settings = {
enter_accept = false;
workspaces = true;
stats = {
common_prefix = [
"sudo"
","
];
home-manager.users.toast = {
catppuccin.atuin.enable = true;
programs.atuin = {
enable = true;
settings = {
enter_accept = true;
workspaces = true;
filter_mode = "workspace";
style = "auto";
inline_height = 0;
stats = {
common_prefix = [
"sudo"
","
];
};
};
};
};

View file

@ -1,8 +1,8 @@
{...}: {
home-manager = {
users.toast.programs.bat = {
enable = true;
catppuccin.enable = true;
users.toast = {
programs.bat.enable = true;
catppuccin.bat.enable = true;
};
};
}

View file

@ -1,10 +1,8 @@
{...}: {
home-manager = {
users.toast = {
programs.btop = {
enable = true;
catppuccin.enable = true;
};
catppuccin.btop.enable = true;
programs.btop.enable = true;
};
};
}

View file

@ -2,7 +2,6 @@
imports = [
./htop.nix
./nix.nix
./micro.nix
./nix-index.nix
./command-not-found.nix
./comma.nix
@ -14,6 +13,8 @@
./helix.nix
./direnv.nix
./atuin.nix
./fish.nix
./eza.nix
];
# Some programs dont have a programs.*.enable option, so I install their package here
environment.systemPackages = with pkgs; [

View file

@ -1,8 +1,10 @@
{...}: {
programs.direnv = {
enable = true;
nix-direnv = {
home-manager.users.toast = {
programs.direnv = {
enable = true;
nix-direnv = {
enable = true;
};
};
};
}

View file

@ -0,0 +1,20 @@
{
flakeSelf,
config,
...
}: {
home-manager = {
users.toast = {
programs.eza = {
enable = true;
enableBashIntegration = true;
git = true;
icons = "auto";
extraOptions = [
"--group"
];
};
xdg.configFile."eza/theme.yml".source = "${flakeSelf.inputs.eza-themes}/themes/catppuccin.yml";
};
};
}

View file

@ -0,0 +1,10 @@
{...}: {
programs.fish = {
enable = true;
};
home-manager.users.toast = {
catppuccin.fish.enable = true;
programs.fish.enable = true;
};
}

View file

@ -1,23 +1,25 @@
{...}: {
programs.ssh.knownHosts = {
"[git.everest.sable-pancake.ts.net]:4222".publicKey = ''
"[git.toast003.xyz]:4222".publicKey = ''
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKoUcWx56NZ3kqydN3d0gLNz6SlBm1ArkHhqR9Fwd8qs
'';
};
home-manager.users.toast = {
programs.git = {
enable = true;
userName = "Toast";
userEmail = "toast003@tutamail.com";
delta = {
enable = true;
catppuccin.enable = true;
};
extraConfig = {
settings = {
user.name = "toast";
user.email = "toast003@tutamail.com";
init.defaultBranch = "main";
diff.colorMoved = "default";
commit.verbose = "true";
};
};
programs.delta = {
enable = true;
enableGitIntegration = true;
};
catppuccin.delta.enable = true;
};
}

View file

@ -3,18 +3,20 @@
config,
...
}: {
programs.nano.enable = false;
home-manager.users.toast = {
catppuccin.helix = {
enable = true;
useItalics = true;
};
programs.helix = {
enable = true;
defaultEditor = true;
extraPackages = with pkgs; [
nixpkgs-fmt
nil
taplo
];
catppuccin = {
enable = true;
useItalics = true;
};
settings = {
editor = {
mouse = true;
@ -27,6 +29,8 @@
select = "Select";
};
indent-guides.render = true;
end-of-line-diagnostics = "hint";
inline-diagnostics.cursor-line = "warning";
};
};
languages = {

View file

@ -1,14 +0,0 @@
{...}: {
home-manager = {
users.toast = {...}: {
programs.micro = {
enable = true;
settings = {
clipboard = "internal";
indentchar = "|";
softwrap = true;
};
};
};
};
}

View file

@ -1,5 +1,4 @@
{
systemPkgs,
config,
lib,
flakeSelf,
@ -20,6 +19,8 @@
'';
};
system.tools.nixos-option.enable = false;
nix = {
settings = {
auto-optimise-store = true;
@ -56,11 +57,6 @@
type = "github";
};
};
# Write the system's nixpkgs into the registry to avoid mixing nixpkgs versions
# https://dataswamp.org/~solene/2022-07-20-nixos-flakes-command-sync-with-system.html
system.flake = systemPkgs;
};
# I removed this in the past since I thought that I didn't need it, but turns out comma does :)
nixPath = ["nixpkgs=${systemPkgs}"];
};
}

View file

@ -1,61 +1,31 @@
{
pkgs,
lib,
...
}:
with lib;
with builtins; let
catppuccinFlavour = "mocha";
catppuccinStarship = pkgs.catppuccin + /starship/${catppuccinFlavour}.toml;
presets = {
nerdFontSymbols = pkgs.fetchurl {
url = "https://starship.rs/presets/toml/nerd-font-symbols.toml";
hash = "sha256-JKX+DKY4IPQwNj3znkhMUReNqbKBxdJyBZW+WCdKwuU=";
};
};
# -------------------------------- F U N C T I O N S --------------------------------
/*
Gonna be honest, I have no idea how this works, although it seems to work
Stolen from https://gist.github.com/pdalpra/daf339f59288201a6c8ba7dc84e9060e
*/
# Takes a list of attrSets and merges them
mergeAllAttrSets = attrsSets:
foldl' recursiveUpdate {} attrsSets;
# Reads a TOML file and parses it
readTomlPreset = file: (fromTOML (readFile file));
in {
{...}: {
programs.starship = {
enable = true;
settings = mergeAllAttrSets [
(readTomlPreset presets.nerdFontSymbols)
(readTomlPreset catppuccinStarship)
{
nix_shell = {
disabled = false;
heuristic = true;
};
os = {
disabled = false;
};
directory = {
disabled = false;
truncation_length = 6;
truncation_symbol = ".../";
};
palette = "catppuccin_${catppuccinFlavour}";
}
presets = [
"nerd-font-symbols"
];
settings = {
nix_shell = {
disabled = false;
heuristic = true;
};
os = {
disabled = false;
};
directory = {
disabled = false;
truncation_length = 6;
truncation_symbol = ".../";
};
};
};
# The catppuccin module only works for home-manager, so this
# sets up starship with home-manager using the system config
home-manager.users.toast = {osConfig, ...}: {
programs.starship = {
enable = true;
catppuccin.enable = true;
settings = osConfig.programs.starship.settings;
};
};
# home-manager.users.toast = {osConfig, ...}: {
# programs.starship = {
# enable = false;
# catppuccin.enable = true;
# settings = osConfig.programs.starship.settings;
# };
# };
}

View file

@ -1,23 +1,6 @@
{config, ...}: let
old = {
nssmdns = true;
};
new = {
{config, ...}: {
services.avahi = {
enable = true;
nssmdns4 = true;
};
in {
/*
NixOS 24.05 changed the option for mnds to be able to turn on/off IPv6
23.11 doesn't support this, so I need to use the conditional to be able to
use the same config for both
*/
services.avahi =
{
enable = true;
}
// (
if config.system.nixos.release == "23.11"
then old
else new
);
}

View file

@ -3,5 +3,6 @@
./avahi.nix
./tailscale.nix
./syncthing.nix
./kmscon.nix
];
}

View file

@ -0,0 +1,29 @@
{pkgs, ...}: {
services.kmscon = {
enable = true;
useXkbConfig = true;
fonts = [
{
name = "JetBrains Mono Nerd Font";
package = pkgs.nerd-fonts.jetbrains-mono;
}
];
extraConfig = ''
term=xterm-256color
font-size=10
'';
package = pkgs.kmscon.overrideAttrs (old: {
patches =
old.patches
++ [
# https://github.com/kmscon/kmscon/issues/133
(
pkgs.fetchpatch {
url = "https://github.com/Aetf/kmscon/pull/135.patch";
hash = "sha256-hJrKkONdQmz9gGMXbk11+4MF8Vn4guE3Bl1Ni6SGDw4=";
}
)
];
});
};
}

View file

@ -1,5 +1,6 @@
{
config,
lib,
flakeSelf,
...
}: let
@ -22,32 +23,7 @@ in {
urAccepted = 3;
};
# Set up devices and folders common to every device
devices = {
"phone" = {
name = "Xiaomi Redmi Note 10 Pro";
id = "K7KNZ5V-XREUADL-CROQXPV-6AA4H65-2VUD34Z-VQWKJ6S-LWWW4EE-XPNEZQ6";
};
"pc" = {
name = "Archie";
id = "NJPX754-64AQNP3-7GZFIRZ-W2EDRJQ-27ORWYM-X5YXEXQ-ERRTRTQ-BSYD4AY";
};
"steamdeck" = {
name = "Steam Deck";
id = "DNFEGEA-PDEVW5A-O5VBVQK-IUXI7J5-MAHCQAG-2JLEFFM-DSXB6AS-TX6ZHAN";
};
"server" = {
name = "Everest";
id = "2GXFZJZ-CF56ER2-SISBGOF-VNXJIG5-GQC6ECA-NHCHAPX-677RSJT-RI5POAZ";
};
"surface" = {
name = "Surface Go";
id = "HTVSF3O-AHY3TNH-BLVSEGK-HRRSMHC-H5LJWVF-NDKGM6O-ATWZALC-YXNV2Q4";
};
"winmax2" = {
name = "Win Max 2";
id = "X2NILRM-ADRBQ23-AFREAZA-62GVFDF-UVMPR4L-KGHMUNY-BJ2C3CQ-RBT43QS";
};
};
devices = lib.toast.syncthing.devices;
folders = {
"passwords" = {
label = "KeePassXC Passwords";
@ -57,4 +33,8 @@ in {
};
};
};
networking.firewall = {
allowedTCPPorts = [22000];
allowedUDPPorts = [22000 21027];
};
}

View file

@ -8,10 +8,28 @@
services.xserver.enable = true;
nix = {
daemonIOSchedClass = "idle";
daemonCPUSchedPolicy = "idle";
};
# Set up fonts
fonts.packages = [
(pkgs.nerdfonts.override {fonts = ["Hack" "JetBrainsMono"];})
fonts.packages = with pkgs.nerd-fonts; [
hack
jetbrains-mono
# Japanese fonts
pkgs.noto-fonts-cjk-sans
pkgs.noto-fonts-cjk-serif
];
# Already use electron apps (discord) so this only adds 20 mb more
environment.systemPackages = [pkgs.tetrio-desktop];
hardware.keyboard.qmk.enable = true;
home-manager.users.toast.home.packages = [pkgs.qmk];
home-manager.users.toast.xdg.autostart.enable = true;
boot.plymouth.enable = true;
}

View file

@ -2,12 +2,14 @@
imports = [
./discord.nix
./firefox.nix
./micro.nix
./keepassxc.nix
./jamesdsp.nix
./vscode.nix
./git.nix
./ssh.nix
./appimage.nix
./mpv.nix
./sysdvr-qt.nix
./spotify.nix
./distrobox.nix
];
}

View file

@ -1,44 +1,59 @@
{
pkgs,
lib,
...
}: let
{pkgs, ...}: let
discordOverlay = _self: super: {
discord = super.discord.override {
withOpenASAR = true;
withVencord = true;
};
# Update some stuff while I wait for nixpkgs
/*
vencord = super.vencord.overrideAttrs rec {
version = "522fdcd";
src = pkgs.fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
rev = "522fdcd";
#rev = "v${version}";
hash = "sha256-9G7FNL4pHaaLachzJmeAol0WpNUj533K2FNa7DH0eBM=";
};
};
*/
};
stock-discord = _self: super: {
discord = super.discord.override {
withOpenASAR = false;
withVencord = false;
};
};
in {
# Sometimes discord breaks after updates, and launching it stock once fixes it
specialisation.stockDiscord.configuration = {
nixpkgs.overlays = lib.mkAfter [stock-discord];
};
nixpkgs.overlays = [discordOverlay];
home-manager.users.toast = {
home.packages = with pkgs; [
discord
vesktop
];
catppuccin.vesktop.enable = true;
programs.vesktop = {
enable = true;
settings = {
arRPC = true;
minimizeToTray = true;
discordBranch = "stable";
customTitleBar = true;
spellCheckLanguages = ["en-US" "en" "es"];
enableMenu = false;
};
vencord = {
settings = {
plugins = {
BetterGifPicker.enabled = true;
BetterSettings.enabled = true;
CallTimer.enabled = true;
ClearURLs.enabled = true;
FakeNitro.enabled = true;
FixSpotifyEmbeds.enabled = true;
FixYoutubeEmbeds.enabled = true;
FriendsSince.enabled = true;
iLoveSpam.enabled = true;
LoadingQuotes = {
enabled = true;
enableDiscordPresetQuotes = true;
};
MessageClickActions.enabled = true;
MessageLinkEmbeds.enabled = true;
MessageLogger.enabled = true;
Moyai = {
enabled = true;
volume = 1;
quality = "HD";
};
OpenInApp.enabled = true;
petpet.enabled = true;
PlatformIndicators.enabled = true;
ShowHiddenChannels.enabled = true;
ShowHiddenThings.enabled = true;
SpotifyControls.enabled = true;
Translate.enabled = true;
YoutubeAdblock.enabled = true;
};
};
};
};
};
}

View file

@ -0,0 +1,28 @@
{...}: {
virtualisation.podman = {
# Due to limitations with home-manager, podman has to be available system wide
enable = true;
};
home-manager.users.toast = {
programs.distrobox = {
enable = true;
containers = {
uav = {
image = "quay.io/toolbx/ubuntu-toolbox:24.04";
# additional_packages = "lsb-release dmidecode git";
additional_packages = "git";
init_hooks = [
"git clone https://github.com/PX4/PX4-Autopilot.git --recursive /tmp/px4"
"cd /tmp/px4/Tools/setup/"
# The install scripts wants to add things to .bashrc, so it errors out
# This removes the line that does that
"sed -i '181d' ubuntu.sh"
"bash ubuntu.sh"
"rm -rf /tmp/px4 --one-file-system"
];
entry = true;
};
};
};
};
}

View file

@ -1,55 +1,147 @@
{lib, ...}: {
# System wide firefox settings
programs.firefox = {
enable = true;
policies = {
"DisablePocket" = true;
"DisableTelemetry" = true;
# You need these for Spotify
"EncryptedMediaExtensions" = {"Enabled" = true;};
"ExtensionSettings" = {
# TODO: Install extensions the NUR instead of from AMO
"uBlock0@raymondhill.net" = {
"installation_mode" = "force_installed";
"install_url" = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
home-manager.sharedModules = [
{
# System wide firefox settings
programs.firefox = {
enable = true;
policies = {
DisableTelemetry = true;
GenerativeAI = {
Chatbot = false;
LinkPreviews = false;
TabGroups = false;
Locked = true;
};
# You need these for Spotify
EncryptedMediaExtensions.Enabled = true;
ExtensionSettings = {
# TODO: Install extensions the NUR instead of from AMO
"uBlock0@raymondhill.net" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
};
# Decentraleyes
"jid1-BoFifL9Vbdl2zQ@jetpack" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi";
};
"jid1-MnnxcxisBPnSXQ@jetpack" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
};
# Uninstall undeclared extensions
"*" = {
installation_mode = "blocked";
blocked_install_message = "Extensions are managed by home-manager";
};
};
Preferences = {
# Enable video hardware acceleration
"media.ffmpeg.vaapi.enabled" = {
Value = true;
Status = "default";
};
"dom.security.https_only_mode" = {
Value = true;
Status = "locked";
};
"browser.ml.chat.page" = {
Value = false;
Status = "Locked";
};
};
PromptForDownloadLocation = true;
# I use an external password manager, so the built in one just bothers me
PasswordManagerEnabled = false;
Permissions = {
Autoplay = {
Allow = [
"https://www.youtube.com"
"https://sync-tube.de"
];
Default = "block-audio-video";
};
};
FirefoxHome.SponsoredTopSites = false;
};
# Decentraleyes
"jid1-BoFifL9Vbdl2zQ@jetpack" = {
"installation_mode" = "normal_installed";
"install_url" = "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi";
};
"jid1-MnnxcxisBPnSXQ@jetpack" = {
"installation_mode" = "normal_installed";
"install_url" = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
};
# Uninstall the kde plasma integration extension if KDE is not installed
"plasma-browser-integration@kde.org"."installation_mode" = lib.mkDefault "blocked";
};
"Preferences" = {
# Enable video hardware acceleration
"media.ffmpeg.vaapi.enabled" = {
"Value" = true;
"Status" = "default";
}
];
# Per-user settings
home-manager.users.toast = {
programs.firefox.policies = {
DisablePocket = true;
ExtensionSettings = {
"sponsorBlocker@ajay.app" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
};
"dom.security.https_only_mode" = {
"Value" = true;
"Status" = "locked";
"@testpilot-containers" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi";
};
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/control-panel-for-twitter/latest.xpi";
};
};
Preferences = {
"general.smoothScroll.msdPhysics.enabled" = {
"Value" = true;
"Status" = "default";
Value = true;
Status = "default";
};
"browser.ctrlTab.sortByRecentlyUsed" = {
Value = true;
Status = "default";
};
# This should be set automatically, but it isn't for some reason
"extensions.webextensions.ExtensionStorageIDB.enabled" = {
Value = false;
Status = "locked";
};
};
"PromptForDownloadLocation" = true;
# I use an external password manager, so the built in one just bothers me
"PasswordManagerEnabled" = false;
"Permissions" = {
"Autoplay" = {
"Allow" = ["https://www.youtube.com"];
"Default" = "block-audio-video";
};
programs.firefox.profiles = {
personal = {
name = "Personal";
id = 0;
isDefault = true;
containersForce = true;
containers = {
work = {
name = "Work";
id = 1;
icon = "briefcase";
color = "green";
};
};
extensions.force = true;
extensions.settings = {
"@testpilot-containers".settings = {
onboarding-stage = 8;
"siteContainerMap@@_teams.microsoft.com" = {
userContextId = "1";
neverAsk = false;
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
};
"siteContainerMap@@_outlook.office.com" = {
userContextId = "1";
neverAsk = false;
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
};
};
# Control panel for twitter
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}".settings = {
hideForYouTimeline = false;
alwaysUseLatestTweets = false;
retweets = "ignore";
restoreOtherInteractionLinks = true;
navBaseFontSize = false;
followButtonStyle = "themed";
hideSidebarContent = true;
};
};
};
"FirefoxHome" = {"SponsoredTopSites" = false;};
};
};
}

View file

@ -1,18 +1,7 @@
{
pkgs,
lib,
...
}: {
{pkgs, ...}: {
home-manager.users.toast = {
programs.git = {
package = pkgs.gitFull;
extraConfig = {
cola = {
icontheme = lib.mkDefault "dark";
};
};
};
home.packages = [pkgs.git-cola];
};
}

View file

@ -1,3 +1,7 @@
{pkgs, ...}: {
users.users.toast.packages = [pkgs.jamesdsp];
home-manager.users.toast = {
home.packages = with pkgs; [
jamesdsp
];
};
}

View file

@ -1,61 +1,32 @@
{lib, ...}: let
kpxcSettings = lib.generators.toINI {} {
General = {
# Not sure what changing this does, I'll leave it alone
ConfigVersion = 2;
MinimizeAfterUnlock = true;
AutoSaveAfterEveryChange = false;
};
GUI = {
ApplicationTheme = "classic";
MinimizeOnStartup = false;
MinimizeOnClose = true;
MinimizeToTray = true;
ShowTrayIcon = true;
# 0 is icons, 1 is text, 2 is text next to icons, 3 is text under icons, and 4 is follow style
ToolButtonStyle = 0; # Would choose 4 but it's too big for a small window
# monochrome-light, monochrome-dark or colorful
TrayIconAppearance = "monochrome-light";
};
Security = {
HideNotes = true;
IconDownloadFallback = true;
};
SSHAgent.Enabled = true;
};
in {
{pkgs, ...}: {
home-manager = {
extraSpecialArgs = {kpxcSettings = kpxcSettings;};
users.toast = {
pkgs,
kpxcSettings,
...
}: {
# No module for KeePassXC config :(
home = {
packages = [pkgs.keepassxc];
file = {
".config/keepassxc/keepassxc.ini".text = kpxcSettings;
# For some reason the autostart .desktop is not the same as the regular one
".config/autostart/org.keepassxc.KeePassXC.desktop".text = ''
[Desktop Entry]
Name=KeePassXC
GenericName=Password Manager
Exec=keepassxc
TryExec=keepassxc
Icon=keepassxc
StartupWMClass=keepassxc
StartupNotify=true
Terminal=false
Type=Application
Version=1.0
Categories=Utility;Security;Qt;
MimeType=application/x-keepass2;
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=2
X-KDE-autostart-after=panel
X-LXQt-Need-Tray=true
'';
programs.keepassxc = {
enable = true;
autostart = true;
settings = {
General = {
# Not sure what changing this does, I'll leave it alone
ConfigVersion = 2;
MinimizeAfterUnlock = true;
AutoSaveAfterEveryChange = false;
};
GUI = {
ApplicationTheme = "classic";
MinimizeOnStartup = false;
MinimizeOnClose = true;
MinimizeToTray = true;
ShowTrayIcon = true;
# 0 is icons, 1 is text, 2 is text next to icons, 3 is text under icons, and 4 is follow style
ToolButtonStyle = 0; # Would choose 4 but it's too big for a small window
# monochrome-light, monochrome-dark or colorful
TrayIconAppearance = "monochrome-light";
};
Security = {
HideNotes = true;
IconDownloadFallback = true;
};
SSHAgent.Enabled = true;
};
};
};

View file

@ -1,18 +0,0 @@
{lib, ...}: {
home-manager = {
users.toast = {pkgs, ...}: {
programs.micro = {
enable = true;
settings = {
# Use xclip/wl-clipboard for copying and pasting
clipboard = lib.mkForce "external";
};
};
/*
On a kde wayland session micro uses xsel or xclip instead of wl-clipboard
which doesn't work, so I only install wl-clipboard here to make micro use it
*/
home.packages = with pkgs; [wl-clipboard];
};
};
}

View file

@ -0,0 +1,24 @@
{pkgs, ...}: {
nixpkgs.overlays = [
(
final: prev: {
mpv-unwrapped = prev.mpv-unwrapped.override {
cddaSupport = true;
};
}
)
];
home-manager.users.toast = {
programs.mpv = {
enable = true;
scripts = with pkgs.mpvScripts; [
mpris
];
config = {
hwdec = "auto";
cache = true;
cdda-speed = "8";
};
};
};
}

View file

@ -0,0 +1,5 @@
{pkgs, ...}: {
home-manager.users.toast = {
home.packages = [pkgs.spotify];
};
}

View file

@ -2,7 +2,7 @@
programs.ssh.knownHosts = {
everest = {
hostNames = [
"everest.sable-pancake.ts.net"
"everest.tailscale"
"toast003.xyz"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAqfABZKnF5YYGZTOKuT7m+sOnUqBQSvLke9c3JDsF5s";
@ -12,10 +12,18 @@
home-manager.users.toast = {
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"everest" = {
host = "toast003.xyz";
hostname = "toast003.xyz";
forwardAgent = true;
sendEnv = ["COLORTERM"];
port = 69;
};
"everest-tailscale" = {
host = "everest";
hostname = "everest.sable-pancake.ts.net";
hostname = "everest.tailscale";
forwardAgent = true;
sendEnv = ["COLORTERM"];
};

View file

@ -0,0 +1,8 @@
{...}: {
services.udev.extraRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee0", MODE="0666"
'';
home-manager.users.toast.services.flatpak = {
packages = ["io.github.parnassius.SysDVR-Qt"];
};
}

View file

@ -1,44 +0,0 @@
{
pkgs,
flakeSelf,
...
}: let
inputs = flakeSelf.inputs;
in {
nixpkgs.overlays = [inputs.catppuccin-vsc.overlays.default];
home-manager.users.toast = {
home.packages = with pkgs; [
nixpkgs-fmt
];
programs.vscode = {
enable = true;
package = pkgs.vscodium;
mutableExtensionsDir = false;
extensions = with inputs.vscode-extensions.extensions.x86_64-linux.open-vsx; [
jnoortheen.nix-ide
(pkgs.catppuccin-vsc.override {
workbenchMode = "flat";
extraBordersEnabled = true;
})
catppuccin.catppuccin-vsc-icons
waderyan.gitblame
];
userSettings = {
# VSCode doesn't like nested settings
# https://stackoverflow.com/questions/74134436/is-it-possible-to-express-settings-in-vs-codes-settings-json-where-each-dot-sep
# TODO: write a function that unnests settings
"workbench.colorTheme" = "Catppuccin Mocha";
"workbench.iconTheme" = "catppuccin-mocha";
"editor.fontFamily" = "JetBrainsMono Nerd Font";
"editor.semanticHighlighting.enabled" = true;
"nix.enableLanguageServer" = true;
"nix.serverPath" = "${pkgs.nil}/bin/nil";
"nix.serverSettings" = {
"nil"."formatting"."command" = ["nixpkgs-fmt"];
};
"terminal.integrated.minimumContrastRatio" = 1;
"window.titleBarStyle" = "custom";
};
};
};
}

View file

@ -6,5 +6,6 @@
./pipewire.nix
./printing.nix
./networkmanager.nix
./tailscale.nix
];
}

View file

@ -1,54 +1,51 @@
{
config,
lib,
flakeSelf,
...
}: let
tailscaleName = config.services.tailscale.interfaceName;
in {
age.secrets = {
wifiPasswords.file = "${flakeSelf.inputs.secrets}/wifi-passwords.age";
sops.secrets.wifiPasswords = {
sopsFile = "${flakeSelf.inputs.secrets}/wifi-passwords.env";
format = "dotenv";
};
networking.networkmanager = {
enable = true;
unmanaged = [
"interface-name:${tailscaleName}"
];
wifi.macAddress = "random";
ensureProfiles = {
environmentFiles = [config.age.secrets.wifiPasswords.path];
profiles = {
"4g-modem" = {
connection = {
id = "4G Modem";
type = "wifi";
};
ipv4.method = "auto";
wifi = {
mode = "infrastructure";
ssid = "TP-Link_CCB4";
};
environmentFiles = [config.sops.secrets.wifiPasswords.path];
profiles = with lib.toast.networkManager; {
"4g-modem" = mkWifiProfile {
id = "4G Modem";
priority = 5;
ssid = "TP-Link_CCB4";
wifi-security = {
auth-alg = "open";
key-mgmt = "wpa-psk";
psk = "$MODEM";
};
};
phone = {
connection = {
id = "Phone";
type = "wifi";
};
ipv4.method = "auto";
wifi = {
mode = "infrastructure";
ssid = "Redmi Note 10 Pro_5197";
};
phone = mkWifiProfile {
id = "Phone";
priority = 5;
ssid = "Redmi Note 10 Pro_5197";
wifi-security = {
auth-alg = "open";
key-mgmt = "sae";
psk = "$PHONE";
};
};
home = mkWifiProfile {
id = "Home";
ssid = "MOVISTAR-WIFI6-DC98";
wifi-security = {
key-mgmt = "sae";
psk = "$HOME";
};
};
};
};
};

View file

@ -1,23 +1,57 @@
{config, ...}: {
services.syncthing = {
enable = true;
user = "toast";
group = "users";
dataDir = config.users.users.toast.home;
# enable = true;
# user = "toast";
# group = "users";
# dataDir = config.users.users.toast.home;
settings.folders."passwords".path = "~/Documents/Passwords";
};
# Allow regular users to stop syncthing
# https://stackoverflow.com/questions/61480914/using-policykit-to-allow-non-root-users-to-start-and-stop-a-service
security.polkit.extraConfig = ''
polkit.addRule(function(action, subject) {
if (
action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "syncthing.service" &&
subject.user == "${config.services.syncthing.user}"
)
{
return polkit.Result.YES;
}
})
'';
age.secrets = {
syncthingCert = {
owner = "toast";
group = "users";
};
syncthingKey = {
owner = "toast";
group = "users";
};
};
home-manager.users.toast = {
osConfig,
lib,
...
}: let
systemConfig = osConfig.services.syncthing;
missingOptions = [
"all_proxy"
"configDir"
"dataDir"
"databaseDir"
"declarative"
"devices"
"folders"
"extraFlags"
"user"
"group"
"systemService"
"openDefaultPorts"
"options"
"relay"
"useInotify"
"guiPasswordFile"
];
removeMissingOptions = rawOptions: (
# lib.attrsets.filterAttrs (n: v: n == "all_proxy") rawOptions
builtins.removeAttrs rawOptions missingOptions
);
in {
services.syncthing =
removeMissingOptions systemConfig
// {
enable = true;
# Renamed options
allProxy = systemConfig.all_proxy;
extraOptions = systemConfig.extraFlags;
};
};
}

View file

@ -0,0 +1,16 @@
{pkgs, ...}: {
home-manager.users.toast = {
services.tailscale-systray = {
enable = true;
package = pkgs.tailscale.overrideAttrs {
postPatch = ''
substituteInPlace client/systray/logo.go --replace-fail \
"color.NRGBA{0, 0, 0, 255}" "color.NRGBA{0, 0, 0, 0}"
'';
# Only use this for the tray, so no testing is needed
# Makes the build last a lot less too
doCheck = false;
};
};
};
}

View file

@ -1,6 +1,16 @@
{...}: {
{pkgs, ...}: {
imports = [
./programs
./services
];
system.replaceDependencies.replacements = [
{
oldDependency = pkgs.sdl3;
newDependency = pkgs.sdl3.overrideAttrs {
patches = [
./sdl-keychron-blacklist.patch
];
};
}
];
}

View file

@ -0,0 +1,18 @@
{pkgs, ...}: {
# nixpkgs.overlays = [
# (
# final: prev: {
# azahar = prev.azahar.overrideAttrs (old: {
# version = "2120.3";
# src = final.fetchzip {
# url = "https://github.com/azahar-emu/azahar/releases/download/2120.3/azahar-unified-source-20250414-00e3bbb.tar.xz";
# hash = "sha256-3QKicmpmWDM7x9GDJ8sxm2Xu+0Yfho4LkSWMp+ixzRk=";
# };
# });
# }
# )
# ];
home-manager.users.toast = {
home.packages = [pkgs.azahar];
};
}

View file

@ -0,0 +1,7 @@
{pkgs, ...}: {
home-manager.users.toast = {
home = {
packages = [pkgs.cemu];
};
};
}

View file

@ -5,6 +5,8 @@
./rpcs3.nix
./retroarch.nix
./pcsx2.nix
./cemu.nix
./azahar.nix
];
environment.systemPackages = with pkgs; [
heroic

View file

@ -3,100 +3,113 @@
lib,
...
}: let
ps2-isos = pkgs.symlinkJoin {
name = "ps2-isos";
paths = [
(pkgs.fetchzip {
url = "https://myrient.erista.me/files/Redump/Sony%20-%20PlayStation%202/007%20-%20Nightfire%20%28USA%29.zip";
hash = "sha256-66Ey0SqC3Tk02Af+xR6rpxYSkO0n83NWYPCt4M3CUWo=";
})
];
};
compressed-ps2-isos = pkgs.runCommand "compressed-ps2-isos" {} ''
mkdir $out
cd ${ps2-isos}
for file in ./*
do
${pkgs.mame-tools}/bin/chdman createdvd -i "$file" -o "$out/''${file%.iso}.chd"
done
'';
pcsx2-bios = pkgs.fetchzip {
url = "https://myrient.erista.me/files/Redump/Sony%20-%20PlayStation%202%20-%20BIOS%20Images/ps2-0200a-20040614.zip";
url = "https://myrient.erista.me/files/Redump/Sony%20-%20PlayStation%202%20-%20BIOS%20Images%20%28DoM%20Version%29/ps2-0200a-20040614.zip";
hash = "sha256-wMvswgmsKl+cJl49VlVW84tvU5Jzd+2dl07SOiUDtwA=";
};
toPcsx2INI = lib.generators.toINI {listsAsDuplicateKeys = true;};
in {
home-manager.users.toast = {
home = {
packages = with pkgs; [
pcsx2
];
file."Games/Isos/PS2".source = compressed-ps2-isos;
};
home.packages = with pkgs; [
pcsx2
];
xdg.configFile = {
#PCSX2 silently overwrites the symlink so I need to force it's creation
"PCSX2/inis/PCSX2.ini".force = true;
"PCSX2/inis/PCSX2.ini".text =
lib.generators.toINI {
listsAsDuplicateKeys = true;
} {
UI = {
SettingsVersion = 1;
# Use the system theme
Theme = "";
HideMouseCursor = true;
};
Folders = {
Bios = "/home/toast/.local/share/PCSX2/bios";
};
GameList.RecursivePaths = [
"/home/toast/Games/Isos/PS2/"
];
"EmuCore/GS".dithering_ps2 = 1;
EmuCore = {
EnableDiscordPresence = true;
EnableFastBoot = true;
McdFolderAutoManage = false;
};
MemoryCards.Slot1_Filename = "MemoryCard1.ps2";
# Controller settings
Pad1 = {
Up = "SDL-0/DPadUp";
Right = "SDL-0/DPadRight";
Down = "SDL-0/DPadDown";
Left = "SDL-0/DPadLeft";
Triangle = "SDL-0/Y";
Circle = "SDL-0/B";
Cross = "SDL-0/A";
Square = "SDL-0/X";
Select = "SDL-0/Back";
Start = "SDL-0/Start";
L1 = "SDL-0/LeftShoulder";
L2 = "SDL-0/+LeftTrigger";
R1 = "SDL-0/RightShoulder";
R2 = "SDL-0/+RightTrigger";
L3 = "SDL-0/LeftStick";
R3 = "SDL-0/RightStick";
Analog = "SDL-0/Guide";
LUp = "SDL-0/-LeftY";
LRight = "SDL-0/+LeftX";
LDown = "SDL-0/+LeftY";
LLeft = "SDL-0/-LeftX";
RUp = "SDL-0/-RightY";
RRight = "SDL-0/+RightX";
RDown = "SDL-0/+RightY";
RLeft = "SDL-0/-RightX";
LargeMotor = "SDL-0/LargeMotor";
SmallMotor = "SDL-0/SmallMotor";
};
"PCSX2/inis/PCSX2.ini".text = toPcsx2INI {
UI = {
SettingsVersion = 1;
# Use the system theme
Theme = "";
HideMouseCursor = true;
};
Folders = {
Bios = "/home/toast/.local/share/PCSX2/bios";
};
GameList.RecursivePaths = [
"/home/toast/Games/PS2/"
];
"EmuCore/GS" = {
dithering_ps2 = 1;
upscale_multiplier = 2;
};
EmuCore = {
EnableDiscordPresence = true;
EnableFastBoot = true;
McdFolderAutoManage = false;
};
MemoryCards.Slot1_Filename = "MemoryCard1.ps2";
# Controller settings
Pad1 = {
Up = "SDL-0/DPadUp";
Right = "SDL-0/DPadRight";
Down = "SDL-0/DPadDown";
Left = "SDL-0/DPadLeft";
Triangle = "SDL-0/Y";
Circle = "SDL-0/B";
Cross = "SDL-0/A";
Square = "SDL-0/X";
Select = "SDL-0/Back";
Start = "SDL-0/Start";
L1 = "SDL-0/LeftShoulder";
L2 = "SDL-0/+LeftTrigger";
R1 = "SDL-0/RightShoulder";
R2 = "SDL-0/+RightTrigger";
L3 = "SDL-0/LeftStick";
R3 = "SDL-0/RightStick";
Analog = "SDL-0/Guide";
LUp = "SDL-0/-LeftY";
LRight = "SDL-0/+LeftX";
LDown = "SDL-0/+LeftY";
LLeft = "SDL-0/-LeftX";
RUp = "SDL-0/-RightY";
RRight = "SDL-0/+RightX";
RDown = "SDL-0/+RightY";
RLeft = "SDL-0/-RightX";
LargeMotor = "SDL-0/LargeMotor";
SmallMotor = "SDL-0/SmallMotor";
};
# Default hotkeys
Hotkeys = {
ToggleFullscreen = "Keyboard/Alt & Keyboard/Return";
CycleAspectRatio = "Keyboard/F6";
CycleInterlaceMode = "Keyboard/F5";
CycleMipmapMode = "Keyboard/Insert";
GSDumpMultiFrame = "Keyboard/Control & Keyboard/Shift & Keyboard/F8";
Screenshot = "Keyboard/F8";
GSDumpSingleFrame = "Keyboard/Shift & Keyboard/F8";
ToggleSoftwareRendering = "Keyboard/F9";
ZoomIn = "Keyboard/Control & Keyboard/Plus";
ZoomOut = "Keyboard/Control & Keyboard/Minus";
InputRecToggleMode = "Keyboard/Shift & Keyboard/R";
LoadStateFromSlot = "Keyboard/F3";
SaveStateToSlot = "Keyboard/F1";
NextSaveStateSlot = "Keyboard/F2";
PreviousSaveStateSlot = "Keyboard/Shift & Keyboard/F2";
OpenPauseMenu = "Keyboard/Escape";
ToggleFrameLimit = "Keyboard/F4";
TogglePause = "Keyboard/Space";
ToggleSlowMotion = "Keyboard/Shift & Keyboard/Backtab";
ToggleTurbo = "Keyboard/Tab";
HoldTurbo = "Keyboard/Period";
};
};
# 007 nightfire
"PCSX2/gamesettings/SLUS-20579_5B86BB62.ini".text = lib.generators.toINI {} {
"PCSX2/gamesettings/SLUS-20579_5B86BB62.ini".text = toPcsx2INI {
"EmuCore/GS".AspectRatio = "16:9";
};
"PCSX2/gamesettings/SLUS-21050_BEBF8793.ini".text = toPcsx2INI {
"EmuCore/GS".AspectRatio = "16:9";
Patches.Enable = [
"60 FPS for Crashes"
"60 FPS for Menus"
"Progressive Scan"
"MPH to KPH"
"Extra Particles While Driving"
];
};
};
xdg.dataFile = {
# I would prefer to use symlinkJoin like I do for the ISOs, but
@ -106,4 +119,23 @@ in {
'';
};
};
# Syncthing
services.syncthing.settings.folders."pcsx2" = {
label = "PCSX2";
id = "qcdsp-qaaej";
devices = ["steamdeck" "server" "pc" "winmax2"];
path = "~/.config/PCSX2";
};
home-manager.users.toast.xdg.configFile = {
"PCSX2/.stignore".text = ''
cache
bios
gamesettings
inis/PCSX2.ini*
inis/debuggersettings
inputprofiles
logs
'';
};
}

View file

@ -1,27 +1,9 @@
{pkgs, ...}: let
snes-roms = [
# ActRaiser
(pkgs.fetchzip {
url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/ActRaiser%20%28USA%29.zip";
hash = "sha256-yxIL5Pqlp8xsx7wvNO1MlB8ffDjS0xpE+yrEfMj61As=";
})
# Kirby Super Star
(pkgs.fetchzip {
url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/Kirby%20Super%20Star%20%28USA%29.zip";
hash = "sha256-NX5OjCthf4ZiAhamclRBRk8GiMjZX3JLeShm8sQdDfc=";
})
# Super Mario Kart
(pkgs.fetchzip {
url = "https://myrient.erista.me/files/No-Intro/Nintendo%20-%20Super%20Nintendo%20Entertainment%20System/Super%20Mario%20Kart%20%28USA%29.zip";
hash = "sha256-RLBxPBmBrXCuPdnWE07KamBNgGJ5IntQVUPeij+2HUI=";
})
];
in {
{pkgs, ...}: {
home-manager.users.toast = {
home = {
packages = [
(
pkgs.retroarch.override {
pkgs.wrapRetroArch {
cores = with pkgs.libretro; [
snes9x
];
@ -62,15 +44,6 @@ in {
}
)
];
file."Games/Roms/SNES/" = {
onChange = ''
${pkgs.retroarch}/bin/retroarch --scan "/home/toast/Games/Roms/SNES"
'';
source = pkgs.symlinkJoin {
name = "snes-roms";
paths = [snes-roms];
};
};
};
# Retroarch is dumb since it doesn't generate some folders (but it does for others)
systemd.user.tmpfiles.rules = [
@ -78,6 +51,28 @@ in {
"d /%h/.local/share/retroarch/saves"
"d /%h/.local/share/retroarch/states"
];
systemd.user.paths = {
snes-roms = {
Unit.Description = "Monitor SNES rom path for changes";
Path = {
PathChanged = "/%h/Games/SNES";
Unit = "update-retroarch-library.service";
};
Install.WantedBy = ["default.target"];
};
};
systemd.user.services.update-retroarch-library = {
Service = {
Type = "oneshot";
ExecStart = pkgs.writeShellScript "scan-snes-games" ''
${pkgs.libnotify}/bin/notify-send -a RetroArch \
-i retroarch \
"SNES games changed!" \
"Scanning $TRIGGER_PATH..."
${pkgs.retroarch}/bin/retroarch --scan "/home/toast/Games/SNES"
'';
};
};
};
# Sync saves and some other stuff

View file

@ -1,12 +1,7 @@
{config, ...}: {
environment.systemPackages = with config; [
nur.repos.ataraxiasjel.rpcs3
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
rpcs3
];
# Compiling RPCS3 takes quite a while
nix.settings = {
substituters = ["https://ataraxiadev-foss.cachix.org"];
trusted-public-keys = ["ataraxiadev-foss.cachix.org-1:ws/jmPRUF5R8TkirnV1b525lP9F/uTBsz2KraV61058="];
};
# Increase the memory lock limit
security.pam.loginLimits = [

View file

@ -5,6 +5,7 @@
}: {
programs.steam = {
enable = true;
localNetworkGameTransfers.openFirewall = true;
# Doubt that I'll use it, but I'll enable it anyways
remotePlay.openFirewall = true;
@ -19,14 +20,15 @@
then true
else false;
# Celeste mod manager
home-manager.users.toast = {
systemd.user.tmpfiles.rules = [
"r '/%h/.local/share/applications/Steam Linux Runtime *.desktop'"
"r '/%h/.local/share/applications/Proton *.desktop'"
];
services.flatpak.packages = [
# Celeste mod manager
"io.github.everestapi.Olympus"
];
home.packages = [pkgs.sgdboop];
};
}

View file

@ -0,0 +1,13 @@
diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
index 5ce36de86..37bf5ca85 100644
--- a/src/joystick/SDL_joystick.c
+++ b/src/joystick/SDL_joystick.c
@@ -281,6 +281,8 @@ static Uint32 initial_blacklist_devices[] = {
MAKE_VIDPID(0x3297, 0x1969), // Moonlander MK1 Keyboard
MAKE_VIDPID(0x3434, 0x0211), // Keychron K1 Pro System Control
MAKE_VIDPID(0x04f2, 0xa13c), // HP Deluxe Webcam KQ246AA
+ MAKE_VIDPID(0x3434, 0x0353), // Keychron V5 System Control
+ MAKE_VIDPID(0x3434, 0xd030), // Keychron Link
};
static SDL_vidpid_list blacklist_devices = {
SDL_HINT_JOYSTICK_BLACKLIST_DEVICES, 0, 0, NULL,

View file

@ -8,9 +8,27 @@
"steam-201810" = {
label = "Wolfenstein The New Order Saves";
id = "laxxf-t2wmy";
devices = ["steamdeck" "server" "pc"];
devices = ["steamdeck" "server" "pc" "winmax2"];
path = "~/.local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/";
};
"project-diva-mods" = {
label = "Project Diva Mods";
id = "7pscj-6egww";
devices = ["steamdeck" "server" "pc" "winmax2"];
path = "~/.local/share/Steam/steamapps/common/Hatsune Miku Project DIVA Mega Mix Plus/mods/";
};
"project-eden-saves" = {
label = "Project Eden saves";
id = "xa3qx-3ax5k";
devices = ["server" "pc" "winmax2" "steamdeck"];
path = "~/.local/share/Steam/steamapps/compatdata/1761390/pfx/drive_c/users/steamuser/AppData/Roaming/EDEN/";
};
"games" = {
label = "Games";
id = "mwzph-gf2df";
devices = ["server" "pc" "winmax2" "steamdeck"];
path = "~/Games";
};
};
home-manager.users.toast.home.file."steam-201810-ignore" = {
target = ".local/share/Steam/steamapps/compatdata/201810/pfx/drive_c/users/steamuser/Saved Games/MachineGames/Wolfenstein The New Order/.stignore";

View file

@ -3,5 +3,6 @@
./plasma.nix
./sddm.nix
./programs
./patches
];
}

View file

@ -1,191 +0,0 @@
diff --git a/share/color-schemes/BreezeClassic.colors b/share/color-schemes/BreezeClassicTint.colors
similarity index 70%
rename from share/color-schemes/BreezeClassic.colors
rename to share/color-schemes/BreezeClassicTint.colors
index 8dbc299..d64e300 100644
--- a/share/color-schemes/BreezeClassic.colors
+++ b/share/color-schemes/BreezeClassicTint.colors
@@ -103,48 +103,12 @@ ForegroundPositive=46,204,113
ForegroundVisited=61,174,230
[General]
-ColorScheme=BreezeClassic
-Name=Breeze Classic
-Name[ar]=نسيم التقليدي
-Name[az]=Breeze klassik
-Name[bg]=Breeze Класически
-Name[ca]=Brisa clàssica
-Name[ca@valencia]=Brisa clàssica
-Name[cs]=Breeze Classic
-Name[da]=Breeze Classic
-Name[de]=Breeze Klassisch
-Name[el]=Breeze κλασικό
-Name[en_GB]=Breeze Classic
-Name[es]=Brisa clásico
-Name[eu]=Breeze klasikoa
-Name[fi]=Perinteinen Breeze
-Name[fr]=Breeze classique
-Name[gl]=Brisa clásica
-Name[hi]=ब्रीज़ क्लासिक
-Name[hu]=Breeze Classic
-Name[ia]=Brisa Classic
-Name[id]=Breeze Klasik
-Name[it]=Brezza classico
-Name[ja]=Breeze クラシック
-Name[ka]=Breeze კლასიკური
-Name[ko]=Breeze 고전
-Name[nl]=Breeze Classic
-Name[nn]=Breeze klassisk
-Name[pl]=Klasyczna Bryza
-Name[pt]=Brisa Clássica
-Name[pt_BR]=Breeze Classic
-Name[ro]=Briză, clasic
-Name[ru]=Breeze, классический вариант
-Name[sk]=Klasický vánok
-Name[sl]=Sapica, klasična
-Name[sv]=Breeze klassisk
-Name[tr]=Esinti Klasik
-Name[uk]=Класична Breeze
-Name[x-test]=xxBreeze Classicxx
-Name[zh_CN]=Breeze 微风经典
-Name[zh_TW]=Breeze Classic
+ColorScheme=BreezeClassicTint
+Name=Breeze Classic (Tint)
accentActiveTitlebar=true
accentInactiveTitlebar=false
+TintFactor=0.2
+TitlebarIsAccentColored=true
shadeSortColumn=true
[KDE]
diff --git a/share/color-schemes/BreezeDark.colors b/share/color-schemes/BreezeDarkTint.colors
similarity index 71%
rename from share/color-schemes/BreezeDark.colors
rename to share/color-schemes/BreezeDarkTint.colors
index fc1fcb0..a97a552 100644
--- a/share/color-schemes/BreezeDark.colors
+++ b/share/color-schemes/BreezeDarkTint.colors
@@ -131,57 +131,10 @@ ForegroundPositive=39,174,96
ForegroundVisited=155,89,182
[General]
-ColorScheme=BreezeDark
-Name=Breeze Dark
-Name[ar]=نسيم داكن
-Name[az]=Breeze - Tünd
-Name[bg]=Breeze Тъмен
-Name[bs]=Breeze tamna
-Name[ca]=Brisa fosca
-Name[ca@valencia]=Brisa fosca
-Name[cs]=Breeze Tmavé
-Name[da]=Breeze Dark
-Name[de]=Breeze Dunkel
-Name[el]=Breeze σκούρο
-Name[en_GB]=Breeze Dark
-Name[es]=Brisa oscuro
-Name[et]=Breeze tume
-Name[eu]=Breeze iluna
-Name[fi]=Tumma Breeze
-Name[fr]=Brise sombre
-Name[gl]=Brisa escura
-Name[he]=Breeze Dark
-Name[hi]=ब्रीज़ गहरा
-Name[hu]=Breeze Dark
-Name[ia]=Brisa obscure
-Name[id]=Breeze Gelap
-Name[it]=Brezza scuro
-Name[ja]=Breeze ダーク
-Name[ka]=Breeze მუქი
-Name[ko]=어두운 Breeze
-Name[lt]=Breeze tamsus
-Name[nb]=Breeze mørk
-Name[nl]=Breeze Dark
-Name[nn]=Breeze mørk
-Name[pa]=ਬਰੀਜ਼ ਗੂੜ੍ਹਾ
-Name[pl]=Ciemna Bryza
-Name[pt]=Brisa Escura
-Name[pt_BR]=Breeze Dark
-Name[ro]=Briză, întunecat
-Name[ru]=Breeze, тёмный вариант
-Name[sk]=Tmavý vánok
-Name[sl]=Sapica, temna
-Name[sr]=Поветарац тамни
-Name[sr@ijekavian]=Поветарац тамни
-Name[sr@ijekavianlatin]=Povetarac tamni
-Name[sr@latin]=Povetarac tamni
-Name[sv]=Breeze mörk
-Name[tg]=Насими торик
-Name[tr]=Esinti Koyu
-Name[uk]=Темна Breeze
-Name[x-test]=xxBreeze Darkxx
-Name[zh_CN]=Breeze 微风深色
-Name[zh_TW]=Breeze Dark
+ColorScheme=BreezeDarkTint
+Name=Breeze Dark (Tint)
+TintFactor=0.2
+TitlebarIsAccentColored=true
shadeSortColumn=true
[KDE]
diff --git a/share/color-schemes/BreezeLight.colors b/share/color-schemes/BreezeLightTint.colors
similarity index 75%
rename from share/color-schemes/BreezeLight.colors
rename to share/color-schemes/BreezeLightTint.colors
index 5bfdc22..223509c 100644
--- a/share/color-schemes/BreezeLight.colors
+++ b/share/color-schemes/BreezeLightTint.colors
@@ -131,50 +131,10 @@ ForegroundPositive=39,174,96
ForegroundVisited=155,89,182
[General]
-ColorScheme=BreezeLight
-Name=Breeze Light
-Name[ar]=نسيم فاتح
-Name[az]=Breeze - İşıqlı
-Name[bg]=Breeze Светъл
-Name[ca]=Brisa clara
-Name[ca@valencia]=Brisa clara
-Name[cs]=Breeze Světlé
-Name[da]=Breeze Light
-Name[de]=Breeze Hell
-Name[el]=Breeze φωτεινό
-Name[en_GB]=Breeze Light
-Name[es]=Brisa claro
-Name[et]=Breeze hele
-Name[eu]=Breeze argia
-Name[fi]=Vaalea Breeze
-Name[fr]=Brise clair
-Name[gl]=Brisa clara
-Name[hi]=ब्रीज़ हलका
-Name[hu]=Breeze Light
-Name[ia]=Brisa Ligier
-Name[id]=Breeze Terang
-Name[it]=Brezza chiaro
-Name[ja]=Breeze ライト
-Name[ka]=Breeze ღია
-Name[ko]=밝은 Breeze
-Name[lt]=Breeze šviesus
-Name[nl]=Breeze Light
-Name[nn]=Breeze lys
-Name[pa]=ਬਰੀਜ਼ ਹਲਕਾ
-Name[pl]=Jasna Bryza
-Name[pt]=Brisa Clara
-Name[pt_BR]=Breeze Light
-Name[ro]=Briză, luminos
-Name[ru]=Breeze, светлый вариант
-Name[sk]=Svetlý vánok
-Name[sl]=Sapica, svetla
-Name[sv]=Breeze ljus
-Name[tg]=Насими сабук
-Name[tr]=Esinti Açık
-Name[uk]=Світла Breeze
-Name[x-test]=xxBreeze Lightxx
-Name[zh_CN]=Breeze 微风浅色
-Name[zh_TW]=Breeze Light
+ColorScheme=BreezeLightTint
+Name=Breeze Light (Tint)
+TintFactor=0.2
+TitlebarIsAccentColored=true
shadeSortColumn=true
[KDE]

View file

@ -0,0 +1,29 @@
{lib, ...}: let
rootDirs = builtins.readDir ./.;
removeFiles = lib.attrsets.filterAttrs (n: v: v == "directory") rootDirs;
programsToPatch = builtins.attrNames removeFiles;
bigOverlay = final: prev:
lib.attrsets.mergeAttrsList (
lib.lists.forEach programsToPatch (
program: let
unpatchedProgram = prev."${program}";
newPatches = lib.toast.patches.patchesInPath (lib.path.append ./. program);
in {
"${program}" = unpatchedProgram.overrideAttrs {
version = "${unpatchedProgram.version}-patched";
__intentionallyOverridingVersion = true;
patches = unpatchedProgram.patches ++ newPatches;
};
}
)
);
in {
nixpkgs.overlays = [
(
final: prev: {
kdePackages = prev.kdePackages.overrideScope bigOverlay;
}
)
];
}

View file

@ -0,0 +1,6 @@
Plasma 6.6.0:
Pr 3256 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3256
Pr 3259 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3259
Pr 3269 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3269
Pr 3356 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3356

View file

@ -0,0 +1,94 @@
From 79d010f4bcdb19d5a19d222dd3c3cb581fde891d Mon Sep 17 00:00:00 2001
From: David Redondo <kde@david-redondo.de>
Date: Fri, 17 Oct 2025 15:15:51 +0200
Subject: [PATCH] applets/taskmanager: Allow changing a tasks volume by
scrolling
FEATURE:510668
FIXED-IN:6.6
---
.../package/contents/config/main.xml | 1 +
.../package/contents/ui/ConfigBehavior.qml | 3 ++-
.../package/contents/ui/MouseHandler.qml | 20 +++++++++++++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/applets/taskmanager/package/contents/config/main.xml b/applets/taskmanager/package/contents/config/main.xml
index f71a7a8457..8c3b68785b 100644
--- a/applets/taskmanager/package/contents/config/main.xml
+++ b/applets/taskmanager/package/contents/config/main.xml
@@ -90,6 +90,7 @@
<choice name="None"/>
<choice name="AllTask"/>
<choice name="TaskOnly"/>
+ <choice name="AdjustVolume"/>
</choices>
<default>0</default>
</entry>
diff --git a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
index 2c0dc19154..73357e9dcd 100644
--- a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
+++ b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
@@ -202,13 +202,14 @@ KCMUtils.SimpleKCM {
QQC2.ComboBox {
id: wheelEnabled
- Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows'", "Scrolling behavior:")
+ Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows/adjusts the hovered tasks volume''", "Scrolling behavior:")
Layout.fillWidth: true
Layout.minimumWidth: Kirigami.Units.gridUnit * 14
model: [
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior does nothing'", "Does nothing"),
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through all tasks'", "Cycles through all tasks"),
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through the hovered task's windows'", "Cycles through the hovered tasks windows"),
+ i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior adjusts the hovered tasks volume'", "Adjusts the hovered tasks volume"),
]
}
diff --git a/applets/taskmanager/package/contents/ui/MouseHandler.qml b/applets/taskmanager/package/contents/ui/MouseHandler.qml
index cf2362835a..3f8d703d73 100644
--- a/applets/taskmanager/package/contents/ui/MouseHandler.qml
+++ b/applets/taskmanager/package/contents/ui/MouseHandler.qml
@@ -8,6 +8,7 @@ import QtQuick
import org.kde.taskmanager as TaskManager
import org.kde.plasma.plasmoid
+import org.kde.plasma.private.volume as PlasmaPa
import "code/tools.js" as TaskTools
@@ -157,6 +158,10 @@ DropArea {
}
}
+ PlasmaPa.GlobalConfig {
+ id: plasmaPaConfig
+ }
+
WheelHandler {
id: wheelHandler
@@ -179,6 +184,21 @@ DropArea {
increment--;
}
const anchor = dropArea.target.childAt(event.x, event.y);
+ if (Plasmoid.configuration.wheelEnabled === 3) {
+ const loudest = anchor?.audioStreams?.reduce((loudest, stream) => Math.max(loudest, stream.volume), 0)
+ const step = (pulseAudio.item.normalVolume - pulseAudio.item.minimalVolume) * plasmaPaConfig.volumeStep / 100;
+ anchor?.audioStreams?.forEach((stream) => {
+ let delta = step * increment;
+ if (loudest > 0) {
+ delta *= stream.volume / loudest;
+ }
+ const volume = stream.volume + delta;
+ console.log(volume, Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume)));
+ stream.model.Volume = Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume));
+ stream.model.Muted = volume === 0
+ })
+ return;
+ }
while (increment !== 0) {
TaskTools.activateNextPrevTask(anchor, increment < 0, Plasmoid.configuration.wheelSkipMinimized, Plasmoid.configuration.wheelEnabled, tasks);
increment += (increment < 0) ? 1 : -1;
--
GitLab

View file

@ -0,0 +1,78 @@
From 57885ba4ec524bdc1c1326228f27c1c3a3561bba Mon Sep 17 00:00:00 2001
From: Nate Graham <nate@kde.org>
Date: Tue, 21 Oct 2025 13:39:40 -0600
Subject: [PATCH] applets/kickoff: add spacing between non-switch-on-hover
category items
Otherwise, their highlight effects touch, and it looks bad.
To avoid blowing up the layout as a result of this change, slightly
decrease the height of these category list items too, which also reduces
some code complexity.
BUG: 508985
FIXED-IN: 6.6.0
---
applets/kickoff/ApplicationsPage.qml | 1 +
applets/kickoff/KickoffListDelegate.qml | 9 ---------
applets/kickoff/KickoffListView.qml | 5 +++++
3 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
index c2baa75b52..fe8d6eaafb 100644
--- a/applets/kickoff/ApplicationsPage.qml
+++ b/applets/kickoff/ApplicationsPage.qml
@@ -20,6 +20,7 @@ BasePage {
id: sideBar
focus: true // needed for Loaders
model: kickoff.rootModel
+ showingCategories: true
// needed otherwise app displayed at top-level will show a first character as group.
section.property: ""
delegate: KickoffListDelegate {
diff --git a/applets/kickoff/KickoffListDelegate.qml b/applets/kickoff/KickoffListDelegate.qml
index b1f8afb3ce..02bfcfcacd 100644
--- a/applets/kickoff/KickoffListDelegate.qml
+++ b/applets/kickoff/KickoffListDelegate.qml
@@ -72,15 +72,6 @@ AbstractKickoffItemDelegate {
id: label
Layout.fillWidth: !descriptionLabel.visible
Layout.maximumWidth: root.width - root.leftPadding - root.rightPadding - icon.width - row.spacing
- Layout.preferredHeight: {
- if (root.isCategoryListItem) {
- return root.compact ? implicitHeight : Math.round(implicitHeight * 1.5);
- }
- if (!root.compact && !descriptionLabel.visible) {
- return implicitHeight + descriptionLabel.implicitHeight
- }
- return implicitHeight;
- }
text: root.text
textFormat: root.isMultilineText ? Text.StyledText : Text.PlainText
elide: Text.ElideRight
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
index c7787493e0..382d146428 100644
--- a/applets/kickoff/KickoffListView.qml
+++ b/applets/kickoff/KickoffListView.qml
@@ -33,6 +33,7 @@ EmptyPage {
property alias section: view.section
property alias highlight: view.highlight
property alias view: view
+ property bool showingCategories: false
property bool mainContentView: false
property bool hasSectionView: false
@@ -144,6 +145,10 @@ EmptyPage {
width: view.availableWidth
}
+ // Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
+ // When this happens, their highlights tuoch and look ungly without some artificial spacing added.
+ spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
+
section {
property: "group"
criteria: ViewSection.FullString
--
GitLab

View file

@ -0,0 +1,66 @@
From a63fce38f285b59407c24f44639023d41b5d3ca9 Mon Sep 17 00:00:00 2001
From: Nate Graham <nate@kde.org>
Date: Thu, 30 Oct 2025 20:01:32 -0600
Subject: [PATCH] applets/kickoff: add separation between Places page list
items too
Missed in 57885ba4ec524bdc1c1326228f27c1c3a3561bba
BUG: 508985
FIXED-IN: 6.6.0
---
applets/kickoff/ApplicationsPage.qml | 2 +-
applets/kickoff/KickoffListView.qml | 4 ++--
applets/kickoff/PlacesPage.qml | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
index fe8d6eaafb..206ddd958d 100644
--- a/applets/kickoff/ApplicationsPage.qml
+++ b/applets/kickoff/ApplicationsPage.qml
@@ -20,7 +20,7 @@ BasePage {
id: sideBar
focus: true // needed for Loaders
model: kickoff.rootModel
- showingCategories: true
+ isSidebar: true
// needed otherwise app displayed at top-level will show a first character as group.
section.property: ""
delegate: KickoffListDelegate {
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
index 382d146428..2d67bd59b7 100644
--- a/applets/kickoff/KickoffListView.qml
+++ b/applets/kickoff/KickoffListView.qml
@@ -33,7 +33,7 @@ EmptyPage {
property alias section: view.section
property alias highlight: view.highlight
property alias view: view
- property bool showingCategories: false
+ property bool isSidebar: false
property bool mainContentView: false
property bool hasSectionView: false
@@ -147,7 +147,7 @@ EmptyPage {
// Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
// When this happens, their highlights tuoch and look ungly without some artificial spacing added.
- spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
+ spacing: root.isSidebar && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
section {
property: "group"
diff --git a/applets/kickoff/PlacesPage.qml b/applets/kickoff/PlacesPage.qml
index ff92f535e4..7f81096834 100644
--- a/applets/kickoff/PlacesPage.qml
+++ b/applets/kickoff/PlacesPage.qml
@@ -19,6 +19,7 @@ BasePage {
id: sideBar
focus: true // needed for Loaders
model: placesCategoryModel
+ isSidebar: true
delegate: KickoffListDelegate {
url: ""
description: ""
--
GitLab

View file

@ -0,0 +1,37 @@
From 04c747a41d8c01248c7baeec5c852c2298f76fc3 Mon Sep 17 00:00:00 2001
From: Christoph Wolk <cwo.kde@posteo.net>
Date: Mon, 1 Dec 2025 14:36:09 +0100
Subject: [PATCH] applets/kickoff: also close when triggering from footer menu
Kickoff already closes when one of the power/session buttons from the
menu is pressed, but the same does not happen if the same action is
shown in the overflow menu.
Instead, also close kickoff in that case.
CCBUG: 508725
---
applets/kickoff/LeaveButtons.qml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/applets/kickoff/LeaveButtons.qml b/applets/kickoff/LeaveButtons.qml
index c9a14dc3254..acf83639341 100644
--- a/applets/kickoff/LeaveButtons.qml
+++ b/applets/kickoff/LeaveButtons.qml
@@ -214,7 +214,12 @@ RowLayout {
text: model.display
icon: model.decoration
- onClicked: filteredMenuItemsModel.trigger(index)
+ onClicked: {
+ filteredMenuItemsModel.trigger(index)
+ if (kickoff.hideOnWindowDeactivate) {
+ kickoff.expanded = false;
+ }
+ }
}
onObjectAdded: (index, object) => contextMenu.addMenuItem(object)
onObjectRemoved: (index, object) => contextMenu.removeMenuItem(object)
--
GitLab

View file

@ -0,0 +1,5 @@
Pr 462 https://invent.kde.org/plasma/spectacle/-/merge_requests/462
Pr 487 https://invent.kde.org/plasma/spectacle/-/merge_requests/487
Plasma 6.6.0:
Pr 493 https://invent.kde.org/plasma/spectacle/-/merge_requests/493

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,704 @@
From d72a6fcb76053139ea709d7b1a4f45aa430a066d Mon Sep 17 00:00:00 2001
From: Jhair Paris <dev@jhairparis.com>
Date: Sat, 8 Nov 2025 17:32:20 -0500
Subject: [PATCH 1/4] Enhance OCR language settings management and
synchronization
- Improved signal handling in OcrLanguageSelector to prevent unnecessary updates.
- Added config sync suspension functionality in OcrManager to manage settings changes.
- Adjusted SettingsDialog to ensure proper synchronization of OCR configurations.
---
src/Gui/SettingsDialog/GeneralOptionsPage.cpp | 7 +-
src/Gui/SettingsDialog/GeneralOptionsPage.h | 4 +-
.../SettingsDialog/OcrLanguageSelector.cpp | 132 ++++++++----------
src/Gui/SettingsDialog/OcrLanguageSelector.h | 7 +-
src/Gui/SettingsDialog/SettingsDialog.cpp | 25 +++-
src/Gui/SettingsDialog/SettingsDialog.h | 1 +
src/OcrManager.cpp | 25 ++++
src/OcrManager.h | 3 +
8 files changed, 117 insertions(+), 87 deletions(-)
diff --git a/src/Gui/SettingsDialog/GeneralOptionsPage.cpp b/src/Gui/SettingsDialog/GeneralOptionsPage.cpp
index f6be13d56..ae0a997c3 100644
--- a/src/Gui/SettingsDialog/GeneralOptionsPage.cpp
+++ b/src/Gui/SettingsDialog/GeneralOptionsPage.cpp
@@ -10,7 +10,6 @@
#include "OcrLanguageSelector.h"
#include "OcrManager.h"
-#include "settings.h"
#include "ui_GeneralOptions.h"
#include <KLocalizedString>
@@ -49,7 +48,7 @@ GeneralOptionsPage::GeneralOptionsPage(QWidget *parent)
GeneralOptionsPage::~GeneralOptionsPage() = default;
-void GeneralOptionsPage::refreshOcrLanguageSettings()
+void GeneralOptionsPage::refreshOcrLanguageSettings(bool rebuildSelector)
{
OcrManager *ocrManager = OcrManager::instance();
@@ -62,7 +61,9 @@ void GeneralOptionsPage::refreshOcrLanguageSettings()
m_ui->ocrLanguageScrollArea->setVisible(true);
m_ui->ocrUnavailableWidget->setVisible(false);
- m_ocrLanguageSelector->refresh();
+ if (rebuildSelector) {
+ m_ocrLanguageSelector->refresh();
+ }
}
}
diff --git a/src/Gui/SettingsDialog/GeneralOptionsPage.h b/src/Gui/SettingsDialog/GeneralOptionsPage.h
index a3a5cb17d..bbb6d79a8 100644
--- a/src/Gui/SettingsDialog/GeneralOptionsPage.h
+++ b/src/Gui/SettingsDialog/GeneralOptionsPage.h
@@ -20,8 +20,8 @@ class GeneralOptionsPage : public QWidget
public:
explicit GeneralOptionsPage(QWidget *parent = nullptr);
~GeneralOptionsPage() override;
-
- void refreshOcrLanguageSettings();
+
+ void refreshOcrLanguageSettings(bool rebuildSelector = true);
/**
* @brief Get direct access to the OCR language selector widget
diff --git a/src/Gui/SettingsDialog/OcrLanguageSelector.cpp b/src/Gui/SettingsDialog/OcrLanguageSelector.cpp
index d1d809323..815b4c707 100644
--- a/src/Gui/SettingsDialog/OcrLanguageSelector.cpp
+++ b/src/Gui/SettingsDialog/OcrLanguageSelector.cpp
@@ -12,6 +12,7 @@
#include <KLocalizedString>
#include <QCheckBox>
+#include <QSignalBlocker>
#include <QVBoxLayout>
using namespace Qt::Literals::StringLiterals;
@@ -19,7 +20,6 @@ using namespace Qt::Literals::StringLiterals;
OcrLanguageSelector::OcrLanguageSelector(QWidget *parent)
: QWidget(parent)
, m_layout(new QVBoxLayout(this))
- , m_blockSignals(false)
, m_ocrManager(OcrManager::instance())
{
m_layout->setContentsMargins(0, 0, 0, 0);
@@ -46,15 +46,14 @@ QStringList OcrLanguageSelector::selectedLanguages() const
void OcrLanguageSelector::setSelectedLanguages(const QStringList &languages)
{
- m_blockSignals = true;
+ QSignalBlocker blocker(this);
for (QCheckBox *checkbox : m_languageCheckboxes) {
const QString langCode = checkbox->property("languageCode").toString();
+ QSignalBlocker checkboxBlocker(checkbox);
checkbox->setChecked(languages.contains(langCode));
}
- m_blockSignals = false;
-
enforceSelectionLimits();
}
@@ -67,18 +66,11 @@ bool OcrLanguageSelector::isDefault() const
return false;
}
- // Check if it's English (preferred default)
- for (const QCheckBox *checkbox : m_languageCheckboxes) {
- if (checkbox->property("languageCode").toString() == u"eng"_s) {
- // English is available, so default is English
- return current.contains(u"eng"_s);
- }
- }
+ QCheckBox *defaultCheckbox = findDefaultCheckbox();
- // English not available, default is the first available language
- if (!m_languageCheckboxes.isEmpty()) {
- QString firstLangCode = m_languageCheckboxes.first()->property("languageCode").toString();
- return current.contains(firstLangCode);
+ if (defaultCheckbox) {
+ QString defaultLangCode = defaultCheckbox->property("languageCode").toString();
+ return current.contains(defaultLangCode);
}
return false;
@@ -91,36 +83,28 @@ bool OcrLanguageSelector::hasChanges() const
void OcrLanguageSelector::applyDefaults()
{
- if (!m_languageCheckboxes.isEmpty()) {
- m_blockSignals = true;
-
- for (QCheckBox *checkbox : m_languageCheckboxes) {
- checkbox->setChecked(false);
- }
+ if (m_languageCheckboxes.isEmpty()) {
+ return;
+ }
- // Try to select English first
- bool foundDefault = false;
- for (QCheckBox *checkbox : m_languageCheckboxes) {
- if (checkbox->property("languageCode").toString() == u"eng"_s) {
- checkbox->setChecked(true);
- foundDefault = true;
- break;
- }
- }
+ QSignalBlocker blocker(this);
- // If English not available, select first language
- if (!foundDefault) {
- m_languageCheckboxes.first()->setChecked(true);
- }
+ QCheckBox *defaultCheckbox = findDefaultCheckbox();
- m_blockSignals = false;
+ for (QCheckBox *checkbox : m_languageCheckboxes) {
+ QSignalBlocker checkboxBlocker(checkbox);
+ checkbox->setChecked(checkbox == defaultCheckbox);
+ }
- const QStringList selected = selectedLanguages();
- Settings::setOcrLanguages(selected);
+ const int selectedCount = defaultCheckbox ? 1 : 0;
+ updateCheckboxEnabledStates(selectedCount);
- // Emit signal to notify changes
- Q_EMIT selectedLanguagesChanged(selected);
+ QStringList selected;
+ if (defaultCheckbox) {
+ selected.append(defaultCheckbox->property("languageCode").toString());
}
+
+ Q_EMIT selectedLanguagesChanged(selected);
}
void OcrLanguageSelector::refresh()
@@ -142,13 +126,17 @@ void OcrLanguageSelector::updateWidgets()
void OcrLanguageSelector::onLanguageCheckboxChanged()
{
- if (m_blockSignals) {
- return;
- }
-
enforceSelectionLimits();
- const QStringList selected = selectedLanguages();
+ QStringList selected;
+ selected.reserve(OcrManager::MAX_OCR_LANGUAGES);
+
+ for (QCheckBox *checkbox : m_languageCheckboxes) {
+ if (checkbox->isChecked()) {
+ selected.append(checkbox->property("languageCode").toString());
+ }
+ }
+
Q_EMIT selectedLanguagesChanged(selected);
}
@@ -167,21 +155,20 @@ void OcrLanguageSelector::setupLanguageCheckboxes()
}
m_languageCheckboxes.clear();
- m_availableLanguages.clear();
if (!m_ocrManager || !m_ocrManager->isAvailable()) {
qCWarning(SPECTACLE_LOG) << "OCR is not available; language selector will remain empty.";
return;
}
- m_availableLanguages = m_ocrManager->availableLanguagesWithNames();
+ const QMap<QString, QString> availableLanguages = m_ocrManager->availableLanguagesWithNames();
- if (m_availableLanguages.isEmpty()) {
+ if (availableLanguages.isEmpty()) {
qCWarning(SPECTACLE_LOG) << "No OCR language data available.";
return;
}
- for (auto it = m_availableLanguages.cbegin(); it != m_availableLanguages.cend(); ++it) {
+ for (auto it = availableLanguages.cbegin(); it != availableLanguages.cend(); ++it) {
const QString &langCode = it.key();
if (langCode == u"osd"_s) {
continue;
@@ -208,64 +195,57 @@ void OcrLanguageSelector::setupLanguageCheckboxes()
void OcrLanguageSelector::enforceSelectionLimits()
{
- const QStringList selected = selectedLanguages();
- const int count = selected.size();
+ int selectedCount = 0;
+
+ for (QCheckBox *checkbox : m_languageCheckboxes) {
+ if (checkbox->isChecked()) {
+ ++selectedCount;
+ }
+ }
- if (count > OcrManager::MAX_OCR_LANGUAGES) { // Max languages for performance
+ if (selectedCount > OcrManager::MAX_OCR_LANGUAGES) {
for (int i = m_languageCheckboxes.size() - 1; i >= 0; --i) {
QCheckBox *checkbox = m_languageCheckboxes[i];
if (checkbox->isChecked()) {
- blockSignalsAndSetChecked(checkbox, false);
+ QSignalBlocker blocker(checkbox);
+ checkbox->setChecked(false);
+ --selectedCount;
break;
}
}
}
- updateCheckboxEnabledStates();
+ updateCheckboxEnabledStates(selectedCount);
- if (selectedLanguages().size() == 0 && !m_languageCheckboxes.isEmpty()) {
+ if (selectedCount == 0 && !m_languageCheckboxes.isEmpty()) {
applyDefaults();
}
}
-QString OcrLanguageSelector::getDefaultLanguageCode() const
+QCheckBox *OcrLanguageSelector::findDefaultCheckbox() const
{
if (m_languageCheckboxes.isEmpty()) {
- return QString();
+ return nullptr;
}
// Try English first
- for (const QCheckBox *checkbox : m_languageCheckboxes) {
+ for (QCheckBox *checkbox : m_languageCheckboxes) {
if (checkbox->property("languageCode").toString() == u"eng"_s) {
- return u"eng"_s;
+ return checkbox;
}
}
// Fallback to first available
- return m_languageCheckboxes.first()->property("languageCode").toString();
+ return m_languageCheckboxes.first();
}
-void OcrLanguageSelector::updateCheckboxEnabledStates()
+void OcrLanguageSelector::updateCheckboxEnabledStates(int selectedCount)
{
- const QStringList selected = selectedLanguages();
- const int count = selected.size();
+ const bool enableUnchecked = selectedCount < OcrManager::MAX_OCR_LANGUAGES;
- // If we have max languages selected, disable all unchecked checkboxes
- // If we have less than max, enable all checkboxes
for (QCheckBox *checkbox : m_languageCheckboxes) {
- if (checkbox->isChecked()) {
- checkbox->setEnabled(true);
- } else {
- checkbox->setEnabled(count < OcrManager::MAX_OCR_LANGUAGES);
- }
+ checkbox->setEnabled(checkbox->isChecked() || enableUnchecked);
}
}
-void OcrLanguageSelector::blockSignalsAndSetChecked(QCheckBox *checkbox, bool checked)
-{
- m_blockSignals = true;
- checkbox->setChecked(checked);
- m_blockSignals = false;
-}
-
#include "moc_OcrLanguageSelector.cpp"
\ No newline at end of file
diff --git a/src/Gui/SettingsDialog/OcrLanguageSelector.h b/src/Gui/SettingsDialog/OcrLanguageSelector.h
index 59b1a3d42..e938e06fa 100644
--- a/src/Gui/SettingsDialog/OcrLanguageSelector.h
+++ b/src/Gui/SettingsDialog/OcrLanguageSelector.h
@@ -96,14 +96,11 @@ private Q_SLOTS:
private:
void setupLanguageCheckboxes();
void enforceSelectionLimits();
- void updateCheckboxEnabledStates();
- QString getDefaultLanguageCode() const;
- void blockSignalsAndSetChecked(QCheckBox *checkbox, bool checked);
+ void updateCheckboxEnabledStates(int selectedCount);
+ QCheckBox *findDefaultCheckbox() const;
QVBoxLayout *m_layout;
QList<QCheckBox *> m_languageCheckboxes;
- QMap<QString, QString> m_availableLanguages; // code -> display name
- bool m_blockSignals;
OcrManager *m_ocrManager;
};
diff --git a/src/Gui/SettingsDialog/SettingsDialog.cpp b/src/Gui/SettingsDialog/SettingsDialog.cpp
index 532bfd3c3..696636685 100644
--- a/src/Gui/SettingsDialog/SettingsDialog.cpp
+++ b/src/Gui/SettingsDialog/SettingsDialog.cpp
@@ -11,6 +11,7 @@
#include "GeneralOptionsPage.h"
#include "ImageSaveOptionsPage.h"
#include "OcrLanguageSelector.h"
+#include "OcrManager.h"
#include "ShortcutsOptionsPage.h"
#include "VideoSaveOptionsPage.h"
#include "settings.h"
@@ -46,6 +47,16 @@ SettingsDialog::SettingsDialog(QWidget *parent)
connect(this, &KConfigDialog::currentPageChanged, this, &SettingsDialog::updateButtons);
}
+SettingsDialog::~SettingsDialog()
+{
+ // Ensure OCR config sync is resumed
+ if (OcrManager *ocrManager = OcrManager::instance()) {
+ if (ocrManager->isConfigSyncSuspended()) {
+ ocrManager->setConfigSyncSuspended(false);
+ }
+ }
+}
+
QSize SettingsDialog::sizeHint() const
{
// Avoid having pages that need to be scrolled,
@@ -91,6 +102,10 @@ void SettingsDialog::updateSettings()
m_shortcutsPage->saveChanges();
m_generalPage->ocrLanguageSelector()->saveSettings();
+
+ if (OcrManager *ocrManager = OcrManager::instance()) {
+ ocrManager->setConfigSyncSuspended(false);
+ }
}
void SettingsDialog::updateWidgets()
@@ -100,15 +115,23 @@ void SettingsDialog::updateWidgets()
m_generalPage->ocrLanguageSelector()->updateWidgets();
m_generalPage->refreshOcrLanguageSettings();
+
+ if (OcrManager *ocrManager = OcrManager::instance()) {
+ ocrManager->setConfigSyncSuspended(false);
+ }
}
void SettingsDialog::updateWidgetsDefault()
{
+ if (OcrManager *ocrManager = OcrManager::instance()) {
+ ocrManager->setConfigSyncSuspended(true);
+ }
+
KConfigDialog::updateWidgetsDefault();
m_shortcutsPage->defaults();
m_generalPage->ocrLanguageSelector()->applyDefaults();
- m_generalPage->refreshOcrLanguageSettings();
+ m_generalPage->refreshOcrLanguageSettings(false);
}
#include "moc_SettingsDialog.cpp"
diff --git a/src/Gui/SettingsDialog/SettingsDialog.h b/src/Gui/SettingsDialog/SettingsDialog.h
index 50f6d85bf..64281dd09 100644
--- a/src/Gui/SettingsDialog/SettingsDialog.h
+++ b/src/Gui/SettingsDialog/SettingsDialog.h
@@ -20,6 +20,7 @@ class SettingsDialog : public KConfigDialog
public:
explicit SettingsDialog(QWidget *parent = nullptr);
+ ~SettingsDialog() override;
protected:
QSize sizeHint() const override;
diff --git a/src/OcrManager.cpp b/src/OcrManager.cpp
index 1d09db8ef..56d467993 100644
--- a/src/OcrManager.cpp
+++ b/src/OcrManager.cpp
@@ -56,6 +56,9 @@ OcrManager::OcrManager(QObject *parent)
m_workerThread->start();
connect(Settings::self(), &Settings::ocrLanguagesChanged, this, [this]() {
+ if (m_configSyncSuspended) {
+ return;
+ }
const QStringList newLanguages = Settings::ocrLanguages();
const QString combinedLanguages = newLanguages.join(u"+"_s);
if (combinedLanguages != m_currentLanguageCode) {
@@ -150,6 +153,28 @@ QString OcrManager::currentLanguageCode() const
return m_currentLanguageCode;
}
+void OcrManager::setConfigSyncSuspended(bool suspended)
+{
+ if (m_configSyncSuspended == suspended) {
+ return;
+ }
+
+ m_configSyncSuspended = suspended;
+
+ // On resume, apply any changes made to Settings
+ if (!m_configSyncSuspended) {
+ const QStringList settingsLanguages = Settings::ocrLanguages();
+ if (settingsLanguages != m_configuredLanguages) {
+ setLanguagesByCode(settingsLanguages);
+ }
+ }
+}
+
+bool OcrManager::isConfigSyncSuspended() const
+{
+ return m_configSyncSuspended;
+}
+
void OcrManager::recognizeText(const QImage &image)
{
#ifdef HAVE_TESSERACT_OCR
diff --git a/src/OcrManager.h b/src/OcrManager.h
index c71505b3e..37f490600 100644
--- a/src/OcrManager.h
+++ b/src/OcrManager.h
@@ -98,6 +98,8 @@ public:
* @return Current language code (e.g., "eng", "spa")
*/
QString currentLanguageCode() const;
+ void setConfigSyncSuspended(bool suspended);
+ bool isConfigSyncSuspended() const;
public Q_SLOTS:
/**
@@ -169,6 +171,7 @@ private:
bool m_shouldRestoreToConfigured;
QStringList m_availableLanguages;
QMap<QString, QString> m_languageNames;
+ bool m_configSyncSuspended = false;
bool m_initialized;
private:
--
GitLab
From 642600410714c783515f2416a9be08ef3406b0d9 Mon Sep 17 00:00:00 2001
From: Jhair Paris <dev@jhairparis.com>
Date: Sat, 8 Nov 2025 21:30:41 -0500
Subject: [PATCH 2/4] Fix flickering in settings dialog during OCR
initialization
---
src/Gui/SettingsDialog/GeneralOptionsPage.cpp | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/Gui/SettingsDialog/GeneralOptionsPage.cpp b/src/Gui/SettingsDialog/GeneralOptionsPage.cpp
index ae0a997c3..adfc045e6 100644
--- a/src/Gui/SettingsDialog/GeneralOptionsPage.cpp
+++ b/src/Gui/SettingsDialog/GeneralOptionsPage.cpp
@@ -38,7 +38,7 @@ GeneralOptionsPage::GeneralOptionsPage(QWidget *parent)
connect(m_ocrLanguageSelector, &OcrLanguageSelector::selectedLanguagesChanged, this, &GeneralOptionsPage::ocrLanguageChanged);
- refreshOcrLanguageSettings();
+ refreshOcrLanguageSettings(false);
//On Wayland we can't programmatically raise and focus the window so we have to hide the option
if (KWindowSystem::isPlatformWayland() || qstrcmp(qgetenv("XDG_SESSION_TYPE").constData(), "wayland") == 0) {
@@ -51,8 +51,9 @@ GeneralOptionsPage::~GeneralOptionsPage() = default;
void GeneralOptionsPage::refreshOcrLanguageSettings(bool rebuildSelector)
{
OcrManager *ocrManager = OcrManager::instance();
-
- if (!ocrManager->isAvailable()) {
+ const bool ocrAvailable = ocrManager->isAvailable();
+
+ if (!ocrAvailable) {
m_ui->ocrLanguageLabel->setVisible(false);
m_ui->ocrLanguageScrollArea->setVisible(false);
m_ui->ocrUnavailableWidget->setVisible(true);
@@ -60,10 +61,10 @@ void GeneralOptionsPage::refreshOcrLanguageSettings(bool rebuildSelector)
m_ui->ocrLanguageLabel->setVisible(true);
m_ui->ocrLanguageScrollArea->setVisible(true);
m_ui->ocrUnavailableWidget->setVisible(false);
+ }
- if (rebuildSelector) {
- m_ocrLanguageSelector->refresh();
- }
+ if (ocrAvailable && rebuildSelector) {
+ m_ocrLanguageSelector->refresh();
}
}
--
GitLab
From 6c6d95f3fd87ff70f8c1d25786a5a7f047e9d74f Mon Sep 17 00:00:00 2001
From: Jhair Paris <dev@jhairparis.com>
Date: Sat, 8 Nov 2025 21:51:05 -0500
Subject: [PATCH 3/4] Improve OCR language handling in settings dialog
---
src/Gui/SettingsDialog/SettingsDialog.cpp | 24 ++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/Gui/SettingsDialog/SettingsDialog.cpp b/src/Gui/SettingsDialog/SettingsDialog.cpp
index 696636685..0bfab8bb9 100644
--- a/src/Gui/SettingsDialog/SettingsDialog.cpp
+++ b/src/Gui/SettingsDialog/SettingsDialog.cpp
@@ -88,12 +88,20 @@ void SettingsDialog::showEvent(QShowEvent *event)
bool SettingsDialog::hasChanged()
{
- return m_shortcutsPage->isModified() || m_generalPage->ocrLanguageSelector()->hasChanges() || KConfigDialog::hasChanged();
+ bool ocrHasChanges = false;
+ if (OcrManager::instance()->isAvailable()) {
+ ocrHasChanges = m_generalPage->ocrLanguageSelector()->hasChanges();
+ }
+ return m_shortcutsPage->isModified() || ocrHasChanges || KConfigDialog::hasChanged();
}
bool SettingsDialog::isDefault()
{
- return currentPage()->name() != i18n("Shortcuts") && m_generalPage->ocrLanguageSelector()->isDefault() && KConfigDialog::isDefault();
+ bool ocrIsDefault = true;
+ if (OcrManager::instance()->isAvailable()) {
+ ocrIsDefault = m_generalPage->ocrLanguageSelector()->isDefault();
+ }
+ return currentPage()->name() != i18n("Shortcuts") && ocrIsDefault && KConfigDialog::isDefault();
}
void SettingsDialog::updateSettings()
@@ -101,7 +109,9 @@ void SettingsDialog::updateSettings()
KConfigDialog::updateSettings();
m_shortcutsPage->saveChanges();
- m_generalPage->ocrLanguageSelector()->saveSettings();
+ if (OcrManager::instance()->isAvailable()) {
+ m_generalPage->ocrLanguageSelector()->saveSettings();
+ }
if (OcrManager *ocrManager = OcrManager::instance()) {
ocrManager->setConfigSyncSuspended(false);
@@ -113,7 +123,9 @@ void SettingsDialog::updateWidgets()
KConfigDialog::updateWidgets();
m_shortcutsPage->resetChanges();
- m_generalPage->ocrLanguageSelector()->updateWidgets();
+ if (OcrManager::instance()->isAvailable()) {
+ m_generalPage->ocrLanguageSelector()->updateWidgets();
+ }
m_generalPage->refreshOcrLanguageSettings();
if (OcrManager *ocrManager = OcrManager::instance()) {
@@ -130,7 +142,9 @@ void SettingsDialog::updateWidgetsDefault()
KConfigDialog::updateWidgetsDefault();
m_shortcutsPage->defaults();
- m_generalPage->ocrLanguageSelector()->applyDefaults();
+ if (OcrManager::instance()->isAvailable()) {
+ m_generalPage->ocrLanguageSelector()->applyDefaults();
+ }
m_generalPage->refreshOcrLanguageSettings(false);
}
--
GitLab
From 174b4a4a10e2c42fa28eb361cd4b6a833af60dc7 Mon Sep 17 00:00:00 2001
From: Jhair Paris <dev@jhairparis.com>
Date: Mon, 10 Nov 2025 22:10:51 -0500
Subject: [PATCH 4/4] Remove Tesseract language pack validation test and
simplify OCR support check
---
CMakeLists.txt | 24 ++----------------------
cmake/tesseract_test.cpp | 40 ----------------------------------------
2 files changed, 2 insertions(+), 62 deletions(-)
delete mode 100644 cmake/tesseract_test.cpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ea44e71d4..2adf8a9ac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -96,28 +96,8 @@ if(PkgConfig_FOUND)
pkg_check_modules(TESSERACT tesseract)
if(TESSERACT_FOUND)
- # Test if Tesseract has usable language packs
- try_run(
- TESSERACT_TEST_RUN_RESULT
- TESSERACT_TEST_COMPILE_RESULT
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/cmake/tesseract_test.cpp
- LINK_LIBRARIES ${TESSERACT_LIBRARIES}
- CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${TESSERACT_INCLUDE_DIRS}"
- COMPILE_OUTPUT_VARIABLE TESSERACT_COMPILE_OUTPUT
- RUN_OUTPUT_VARIABLE TESSERACT_RUN_OUTPUT
- )
-
- if(TESSERACT_TEST_COMPILE_RESULT AND TESSERACT_TEST_RUN_RESULT EQUAL 0)
- message(STATUS "Tesseract OCR support enabled")
- message(STATUS "${TESSERACT_RUN_OUTPUT}")
- set(HAVE_TESSERACT_OCR TRUE)
- else()
- message(WARNING "Tesseract library found but no usable language packs detected")
- message(WARNING "${TESSERACT_RUN_OUTPUT}")
- message(WARNING "OCR functionality will be disabled. Install language data packages (e.g., tesseract-ocr-eng)")
- set(HAVE_TESSERACT_OCR FALSE)
- endif()
+ message(STATUS "Tesseract OCR support enabled")
+ set(HAVE_TESSERACT_OCR TRUE)
else()
message(STATUS "Tesseract not found - OCR functionality disabled")
set(HAVE_TESSERACT_OCR FALSE)
diff --git a/cmake/tesseract_test.cpp b/cmake/tesseract_test.cpp
deleted file mode 100644
index 4ebae9779..000000000
--- a/cmake/tesseract_test.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-#include <iostream>
-#include <string>
-#include <tesseract/baseapi.h>
-#include <vector>
-
-int main()
-{
- tesseract::TessBaseAPI api;
-
- if (api.Init(nullptr, nullptr) != 0) {
- std::cerr << "Failed to initialize Tesseract" << std::endl;
- return 1;
- }
-
- std::vector<std::string> languages;
- api.GetAvailableLanguagesAsVector(&languages);
-
- // Filter out 'osd' as it's not a usable language for OCR
- std::vector<std::string> usableLanguages;
- for (const auto &lang : languages) {
- if (lang != "osd") {
- usableLanguages.push_back(lang);
- }
- }
-
- if (usableLanguages.empty()) {
- std::cerr << "No usable Tesseract language packs found. Install language data files (e.g., tesseract-ocr-eng)" << std::endl;
- return 1;
- }
-
- std::cout << "Found " << usableLanguages.size() << " Tesseract language pack(s): ";
- for (size_t i = 0; i < usableLanguages.size(); ++i) {
- std::cout << usableLanguages[i];
- if (i < usableLanguages.size() - 1)
- std::cout << ", ";
- }
- std::cout << std::endl;
-
- return 0;
-}
--
GitLab

View file

@ -0,0 +1,129 @@
From 49c615c1989d9fcfce7ed1be805538a9dca6a8a8 Mon Sep 17 00:00:00 2001
From: Taras Oleksyn <taras.oleksyn@gmail.com>
Date: Sat, 29 Nov 2025 10:17:28 +0200
Subject: [PATCH] Add cancel button to capture window to improve touchscreen
usability
BUG: 490980
---
src/CMakeLists.txt | 1 +
src/Gui/CancelAction.qml | 11 +++++++++++
src/Gui/CaptureOverlay.qml | 14 ++++++++++++++
src/Gui/CaptureWindow.cpp | 5 +++++
src/Gui/CaptureWindow.h | 1 +
src/PlasmaVersion.h | 2 +-
6 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 src/Gui/CancelAction.qml
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 23fc4f483..f4957bda7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -158,6 +158,7 @@ qt_target_qml_sources(spectacle
Gui/AnnotationOptionsToolBarContents.qml
Gui/AnnotationsToolBarContents.qml
Gui/ButtonGrid.qml
+ Gui/CancelAction.qml
Gui/CaptureModeButtonsColumn.qml
Gui/CaptureOptions.qml
Gui/CaptureOverlay.qml
diff --git a/src/Gui/CancelAction.qml b/src/Gui/CancelAction.qml
new file mode 100644
index 000000000..74bf54816
--- /dev/null
+++ b/src/Gui/CancelAction.qml
@@ -0,0 +1,11 @@
+/* SPDX-FileCopyrightText: 2025 Noah Davis <noahadvs@gmail.com>
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+import QtQuick.Templates as T
+
+T.Action {
+ icon.name: "dialog-cancel"
+ text: i18nc("@action cancel selection", "Cancel")
+ onTriggered: contextWindow.cancel()
+}
diff --git a/src/Gui/CaptureOverlay.qml b/src/Gui/CaptureOverlay.qml
index e5089934d..5c15d9939 100644
--- a/src/Gui/CaptureOverlay.qml
+++ b/src/Gui/CaptureOverlay.qml
@@ -491,6 +491,11 @@ MouseArea {
visible: action.enabled
action: AcceptAction {}
}
+ ToolButton {
+ display: TtToolButton.TextBesideIcon
+ visible: action.enabled
+ action: CancelAction {}
+ }
ToolButton {
display: TtToolButton.IconOnly
visible: action.enabled
@@ -527,6 +532,10 @@ MouseArea {
visible: action.enabled
action: AcceptAction {}
}
+ ToolButton {
+ visible: action.enabled
+ action: CancelAction {}
+ }
ToolButton {
visible: action.enabled
action: SaveAction {}
@@ -560,6 +569,11 @@ MouseArea {
visible: action.enabled
action: RecordAction {}
}
+ ToolButton {
+ display: TtToolButton.TextBesideIcon
+ visible: action.enabled
+ action: CancelAction {}
+ }
}
}
diff --git a/src/Gui/CaptureWindow.cpp b/src/Gui/CaptureWindow.cpp
index cb8ce97ab..c263d1b45 100644
--- a/src/Gui/CaptureWindow.cpp
+++ b/src/Gui/CaptureWindow.cpp
@@ -129,6 +129,11 @@ bool CaptureWindow::accept()
return SelectionEditor::instance()->acceptSelection();
}
+void CaptureWindow::cancel()
+{
+ SpectacleCore::instance()->cancelScreenshot();
+}
+
void CaptureWindow::save()
{
SelectionEditor::instance()->acceptSelection(ExportManager::Save | ExportManager::UserAction);
diff --git a/src/Gui/CaptureWindow.h b/src/Gui/CaptureWindow.h
index b5e87a834..0d50aac90 100644
--- a/src/Gui/CaptureWindow.h
+++ b/src/Gui/CaptureWindow.h
@@ -34,6 +34,7 @@ public:
public Q_SLOTS:
bool accept();
+ void cancel();
void save() override;
void saveAs() override;
void copyImage() override;
diff --git a/src/PlasmaVersion.h b/src/PlasmaVersion.h
index 08502c895..9518da62b 100644
--- a/src/PlasmaVersion.h
+++ b/src/PlasmaVersion.h
@@ -15,7 +15,7 @@ public:
static quint32 get();
/**
- * Use this for plasama versions the same way you'd use QT_VERSION_CHECK()
+ * Use this for plasma versions the same way you'd use QT_VERSION_CHECK()
*/
static quint32 check(quint8 major, quint8 minor, quint8 patch);
--
GitLab

View file

@ -43,40 +43,19 @@ in {
programs.dconf.enable = true;
# Install the plasma default configs
environment.systemPackages = [plasmaDefaults];
environment.systemPackages = with pkgs.kdePackages; [
plasmaDefaults
plasma-thunderbolt
plasma-vault
];
# Allows controlling brightness on external monitors
hardware.i2c.enable = true;
# Plasma configs should be on all users
home-manager.sharedModules = [
(
{config, ...}: let
gtk2rc = "${config.xdg.configHome}/gtk-2.0/gtkrc";
in {
gtk.gtk2.configLocation = gtk2rc;
# Kde has an annoying habit of overwriting the gtk2 config file
home.file."${gtk2rc}".force = true;
}
)
{
imports = [flakeSelf.inputs.plasma-manager.homeManagerModules.plasma-manager];
gtk = {
enable = true;
# Most apps are dark, so a white cursor is easier to spot
cursorTheme = {
package = pkgs.kdePackages.breeze;
name = "Breeze_Light";
};
iconTheme = {
package = pkgs.kdePackages.breeze-icons;
name = "breeze-dark";
};
theme = {
package = pkgs.kdePackages.breeze-gtk;
name = "Breeze";
};
# Gtk2 doesn't have a dark mode, so I just tell gtk 3 and 4 to use the dark variant
gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
};
imports = [flakeSelf.inputs.plasma-manager.homeModules.plasma-manager];
home.packages = [
(
pkgs.catppuccin-kde.override {
@ -90,60 +69,68 @@ in {
enable = true;
workspace = {
clickItemTo = "select";
cursorTheme = "Breeze_Light";
cursor.theme = "Breeze_Light";
iconTheme = "breeze-dark";
lookAndFeel = "Catppuccin-Mocha-Mauve";
theme = "default";
colorScheme = "CatppuccinMochaMauve";
};
kwin = {
titlebarButtons = {
left = ["on-all-desktops" "keep-above-windows"];
right = ["minimize" "maximize" "close"];
};
virtualDesktops = {
rows = 1;
number = 2;
};
};
input = {
keyboard = {
layouts = ["es"];
layouts = [{layout = "es";}];
numlockOnStartup = "off";
};
mice = let
settings = {
enable = true;
accelerationProfile = "none";
};
mice = [
{
productId = "d030";
vendorId = "3434";
name = "Keychron Keychron Link ";
}
{
productId = "d03f";
vendorId = "3434";
name = "Keychron Keychron M6 ";
}
{
productId = "d03f";
vendorId = "3434";
name = "Keychron M6 Mouse";
}
];
in
lib.lists.forEach mice (miceInfo: miceInfo // settings);
};
panels = [
{
location = "bottom";
height = 44;
floating = true;
widgets = [
{
name = "org.kde.plasma.kickoff";
config.General.icon = "nix-snowflake-white";
kickoff = {
icon = "nix-snowflake-white";
settings.General.switchCategoryOnHover = true;
};
}
"org.kde.plasma.pager"
"org.kde.plasma.icontasks"
"org.kde.plasma.marginsseparator"
"org.kde.plasma.systemtray"
{
name = "org.kde.plasma.digitalclock";
config.Appearance.showSeconds = "true";
digitalClock = {
time.showSeconds = "always";
};
}
"org.kde.plasma.showdesktop"
];
}
];
shortcuts = {
"kwin" = {
"Switch One Desktop to the Left" = ["Meta+Ctrl+Left"];
"Switch One Desktop to the Right" = ["Meta+Ctrl+Right"];
};
};
configFile = {
"kwinrc" = {
"org.kde.kdecoration2"."BorderSize".value = "None";
"TabBox"."LayoutName".value = "thumbnail_grid";
};
"kdeglobals"."General"."AccentColor".value = null;
"auroraerc"."CatppuccinMocha-Classic"."ButtonSize".value = 0;
"plasmanotifyrc"."Notifications"."NormalAlwaysOnTop".value = true;

View file

@ -0,0 +1,16 @@
{lib, ...}: {
home-manager.users.toast = {
programs.plasma.configFile = {
"baloofilerc"."General" = {
"exclude folders".shellExpand = true;
"exclude folders".value = with lib.strings;
concatStrings (
intersperse "," [
"$HOME/Documents/Repos"
"$HOME/Documents/Android"
]
);
};
};
};
}

View file

@ -1,13 +1,17 @@
{...}: {
{pkgs, ...}: {
imports = [
./kate.nix
./firefox.nix
./skanpage.nix
./neochat.nix
# Neochat depends on olm which is unsafe now
# ./neochat.nix
./konsole.nix
./git.nix
./kwin.nix
./baloo.nix
./spectacle.nix
];
# Enable the kde partition manager
programs.partition-manager.enable = true;
programs.steam.extraPackages = [pkgs.kdePackages.breeze];
}

View file

@ -1,30 +1,35 @@
{...}: {
# KDE specific firefox settings
programs.firefox = {
policies = {
"ExtensionSettings" = {
# TODO: Install extensions the NUR instead of from AMO
"plasma-browser-integration@kde.org" = {
"installation_mode" = "normal_installed";
"install_url" = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi";
{pkgs, ...}: {
home-manager.sharedModules = [
{
# KDE specific firefox settings
programs.firefox = {
nativeMessagingHosts = [pkgs.kdePackages.plasma-browser-integration];
policies = {
ExtensionSettings = {
# TODO: Install extensions the NUR instead of from AMO
"plasma-browser-integration@kde.org" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi";
};
};
Preferences = {
# Make firefox use the kde file picker
"widget.use-xdg-desktop-portal.file-picker" = {
Value = 1;
Status = "default";
};
/*
https://wiki.archlinux.org/title/Firefox#KDE_integration tells me to enable this,
but strangely enough doing so makes firefox ask to be set as the default browser
every time you start it up, so I'll disable it
*/
"widget.use-xdg-desktop-portal.mime-handler" = {
Value = 0;
Status = "default";
};
};
};
};
"Preferences" = {
# Make firefox use the kde file picker
"widget.use-xdg-desktop-portal.file-picker" = {
"Value" = 1;
"Status" = "default";
};
/*
https://wiki.archlinux.org/title/Firefox#KDE_integration tells me to enable this,
but strangely enough doing so makes firefox ask to be set as the default browser
every time you start it up, so I'll disable it
*/
"widget.use-xdg-desktop-portal.mime-handler" = {
"Value" = 0;
"Status" = "default";
};
};
};
};
}
];
}

View file

@ -1,11 +0,0 @@
{...}: {
home-manager.users.toast = {
programs.git = {
extraConfig = {
cola = {
terminal = "konsole";
};
};
};
};
}

View file

@ -1,5 +1,5 @@
{pkgs, ...}: {
environment.systemPackages = [pkgs.kate];
environment.systemPackages = [pkgs.kdePackages.kate];
# Use kwrite to open text files, and kate if I'm developing stuff
xdg.mime.defaultApplications = {

View file

@ -1,13 +1,5 @@
{pkgs, ...}: let
catppuccinKonsole =
pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "konsole";
# Latest commit is 7d86b8a1e56e58f6b5649cdaac543a573ac194ca
rev = "main";
hash = "sha256-EwSJMTxnaj2UlNJm1t6znnatfzgm1awIQQUF3VPfCTM=";
}
+ /Catppuccin-Mocha.colorscheme;
{flakeSelf, ...}: let
catppuccinKonsole = "${flakeSelf.inputs.catppuccin-konsole}/themes/catppuccin-mocha.colorscheme";
in {
home-manager.users.toast = {
xdg.dataFile = {

View file

@ -0,0 +1,33 @@
{pkgs, ...}: {
environment.plasma6.excludePackages = [pkgs.kdePackages.kwin-x11];
environment.variables = {
KWIN_WAYLAND_SUPPORT_XX_PIP_V1 = 1;
KWIN_USE_OVERLAYS = 1;
};
home-manager.users.toast = {
programs.plasma = {
kwin = {
titlebarButtons = {
left = ["on-all-desktops" "keep-above-windows"];
right = ["minimize" "maximize" "close"];
};
virtualDesktops = {
rows = 1;
number = 2;
};
};
configFile = {
"kwinrc" = {
"org.kde.kdecoration2"."BorderSize".value = "None";
"TabBox"."LayoutName".value = "thumbnail_grid";
};
};
shortcuts = {
"kwin" = {
"Switch One Desktop to the Left" = ["Meta+Ctrl+Left"];
"Switch One Desktop to the Right" = ["Meta+Ctrl+Right"];
};
};
};
};
}

View file

@ -6,7 +6,7 @@
}: {
# Only install skanpage if scanning is set up
config = lib.mkIf config.hardware.sane.enable {
environment.systemPackages = [pkgs.skanpage];
environment.systemPackages = [pkgs.kdePackages.skanpage];
};
# environment.systemPackages = if config.hardware.sane.enable == true then [ pkgs.skanpage ] else [];
}

View file

@ -0,0 +1,24 @@
{...}: {
nixpkgs.overlays = [
(
final: prev: {
kdePackages = prev.kdePackages.overrideScope (
kFinal: kPrev: {
# Needed for OCR
spectacle = kPrev.spectacle.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [final.pkg-config];
buildInputs = with final;
old.buildInputs
++ [
tesseract
leptonica
libarchive
curl
];
});
}
);
}
)
];
}

View file

@ -1,10 +1,8 @@
{
config,
lib,
pkgs,
...
}: let
currentTheme = config.services.displayManager.sddm.theme;
sddm-sugar-candy = pkgs.stdenv.mkDerivation {
pname = "sddm-sugar-candy";
version = "master";
@ -30,13 +28,18 @@
customcfg = pkgs.stdenv.mkDerivation {
name = "sddm-theme-customizer";
dontUnpack = true;
# TODO: generate theme.conf.user outside of installPhase
installPhase = ''
installPhase = let
config = lib.generators.toINI {} {
# Add the custom config here
General = {
background = "${pkgs.kdePackages.breeze}/share/wallpapers/Next/contents/images_dark/5120x2880.png";
};
};
in ''
runHook preInstall
mkdir -p $out/share/sddm/themes/${currentTheme}/
echo "[General]
background = ${pkgs.plasma-workspace-wallpapers}/share/wallpapers/MilkyWay/contents/images/5120x2880.png" >> $out/share/sddm/themes/${currentTheme}/theme.conf.user
mkdir -p $out/share/sddm/themes/breeze/
echo "${config}" >> $out/share/sddm/themes/breeze/theme.conf.user
runHook postInstall
'';
@ -45,12 +48,15 @@ in {
# Enable SDDM.
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
# theme = "sugar-candy";
settings = {
General = {Numlock = "off";};
Theme = {CursorTheme = "Breeze_Snow";};
Theme = {CursorTheme = "Breeze_Light";};
};
};
# Sugar candy doesn't seem to work on qt6 :(
# environment.systemPackages = [sddm-sugar-candy customcfg];
environment.systemPackages = [customcfg];
}

View file

@ -1,6 +0,0 @@
{...}: {
imports = [
./services
./programs
];
}

View file

@ -1,13 +0,0 @@
{pkgs, ...}: {
imports = [
./virtualbox.nix
./jetbrains.nix
./vscode.nix
./helix.nix
./unity.nix
];
environment.systemPackages = with pkgs; [
dia
];
}

View file

@ -1,10 +0,0 @@
{pkgs, ...}: {
home-manager.users.toast = {
programs.helix = {
extraPackages = with pkgs; [
nodePackages.typescript-language-server
omnisharp-roslyn
];
};
};
}

View file

@ -1,19 +0,0 @@
{pkgs, ...}:
with pkgs; {
environment.systemPackages = with jetbrains; [
idea-ultimate
scenebuilder
datagrip
];
home-manager.users.toast = {
/*
If you use programs.java.enable intellij picks up the jdk package directly, which is not ideal
This adds the jdks I want to use to a directory intellij expects jdks to be
*/
home.file.".jdks/jdk8".source = "${pkgs.jdk8}/lib/openjdk";
home.file.".jdks/jdk17".source = let
jdk17 = pkgs.jdk17.override {enableJavaFX = true;};
in "${jdk17}/lib/openjdk";
};
}

View file

@ -1,8 +0,0 @@
{pkgs, ...}: {
home-manager.users.toast = {
home.packages = with pkgs; [
unityhub
jetbrains.rider
];
};
}

Some files were not shown because too many files have changed in this diff Show more