Compare commits

...

168 Commits

Author SHA1 Message Date
chn
d5803a66c1 devices.pc: add specialisation for nvidia graphic card 2024-02-16 09:53:58 +08:00
chn
536a96ce5e hardware.gpu: fix 2024-02-16 09:44:14 +08:00
chn
a94d6e3d21 devices.pc: switch to amd+nvidia 2024-02-15 23:20:56 +08:00
chn
0e09b925c2 hardware.gpu: rewrite 2024-02-15 23:17:20 +08:00
chn
9d1fae10d8 hardware: update nvidia driver 2024-02-15 20:28:51 +08:00
chn
ef1caae121 hardware: use default nvidia driver 2024-02-15 19:55:41 +08:00
chn
6d70eecc19 system.kernel: fix for surface 2024-02-15 19:38:33 +08:00
chn
1e42238723 system.kernel: update to 6.7 2024-02-15 19:38:17 +08:00
chn
fe089060ae Revert "add todo"
This reverts commit 54bfa1c8ac.
2024-02-15 16:54:57 +08:00
chn
8a5bb908c7 devices.nas: disable snapper 2024-02-15 16:17:16 +08:00
chn
54bfa1c8ac add todo 2024-02-15 16:16:40 +08:00
chn
54493a2ec6 users.chn.plasma: fix kwin shortcuts 2024-02-15 15:53:57 +08:00
chn
f1218571c5 fix build 2024-02-15 15:40:21 +08:00
chn
aecc530aa9 packages.firefox: fix cascade UI 2024-02-15 15:28:21 +08:00
chn
c43187a15c fix build 2024-02-15 15:27:39 +08:00
chn
86a781b327 packages.firefox: add grammarly 2024-02-12 18:39:05 +08:00
chn
0424d7eed7 users.chn.plasma.wallpaper: fix 2024-02-12 18:23:11 +08:00
chn
78a74a5aef users.chn.plasma.shortcuts: add shortcut for system monitor 2024-02-12 14:16:24 +08:00
chn
a4c04c9de2 devices.nas: use desktop-fat package set 2024-02-12 14:12:15 +08:00
chn
aad44c7edd users.chn.plasma.autostart: fix 2024-02-12 13:40:40 +08:00
chn
2a7e8d78be Revert "vps7: disable gui"
This reverts commit bffed3b584.
2024-02-12 13:39:37 +08:00
chn
8b90c0bc22 Revert "nas: disable gui"
This reverts commit 08df40f3a3.
2024-02-12 13:39:26 +08:00
chn
6f533e73ee packages.desktop: enable yubikey-touch-detector 2024-02-12 13:36:55 +08:00
chn
244b0e17fa users.chn.plasma.autostart: fix 2024-02-12 11:59:42 +08:00
chn
7f165fccf4 users.chn.plasma.autostart: add kmail and discord 2024-02-12 11:27:48 +08:00
chn
40f4d35b62 users.chn.plasma.autostart: add element 2024-02-12 11:09:26 +08:00
chn
02981d242f users.chn.plasma.autostart: init 2024-02-12 10:17:28 +08:00
chn
6a36fe0539 users.chn.plasma: split config 2024-02-12 10:04:56 +08:00
chn
45e5569d55 packages.firefox: force write profile.ini 2024-02-12 09:19:09 +08:00
chn
a9027c6127 Merge branch 'firefox' into production 2024-02-12 08:28:37 +08:00
chn
67079b0885 packages.firefox: add dualsub, pakkujs, rsspreview 2024-02-12 08:28:17 +08:00
chn
3384026e91 users.chn.plasma: use tela icon 2024-02-12 00:05:58 +08:00
chn
803b20ec96 users.chn.plasma: switch back to black background 2024-02-11 23:47:56 +08:00
chn
074f88d231 users.chn.konsole: fix opacity 2024-02-11 23:22:10 +08:00
chn
fd7fe508f5 localPackages.blurred-wallpaper: fix 2024-02-11 22:57:59 +08:00
chn
cf6a66f11e users.chn.plasma: fix 2024-02-11 22:45:59 +08:00
chn
c4c2e680a4 packages.firefox: do not use catppuccin 2024-02-11 22:23:02 +08:00
chn
bf16cc5593 packages.desktop.firefox: use catppucin color 2024-02-11 22:08:43 +08:00
chn
5d473887a3 Merge branch 'production' into firefox 2024-02-11 21:56:44 +08:00
chn
773b2e8cc1 users.chn.plasma: add impermanence 2024-02-11 21:53:12 +08:00
chn
c9cfbb515b users.chn.plasma: add yakuake and konsole 2024-02-11 21:41:43 +08:00
chn
82e2cd4e7d system.impermanence: do not persist fontconfig 2024-02-11 17:27:15 +08:00
chn
794657d0ea packages.desktop.firefox: add firefox-color 2024-02-11 17:26:24 +08:00
chn
4f621ce7f1 fix wallpaper 2024-02-11 17:17:24 +08:00
chn
4ebff80941 services.fontconfig: force set font config 2024-02-11 16:59:43 +08:00
chn
6080de15ca users.chn.wallpaper: use blurred-wallpaper package 2024-02-11 16:45:51 +08:00
chn
2310289c92 packages.desktop.firefox: enable language packs 2024-02-11 11:59:31 +08:00
chn
ef30e0f6dc packages.desktop.firefox: force set search engine 2024-02-11 11:32:22 +08:00
chn
e26e287603 packages.default.firefox: add zotero-connector 2024-02-11 11:26:42 +08:00
chn
f9227c3e85 packages.desktop.firefox: add some settings 2024-02-11 09:55:40 +08:00
chn
264be067ca packages.desktop.firefox: add user chrome 2024-02-10 11:21:49 +08:00
chn
047619ee17 packages.desktop.firefox: init 2024-02-10 10:53:57 +08:00
chn
fc6cbc6230 do not set wallpaper 2024-02-09 21:48:12 +08:00
chn
056f38dbf5 devices.pc: fix xcalib startup script 2024-02-09 21:32:12 +08:00
chn
61d7db84ba direct add wallpaper to flake 2024-02-09 21:24:20 +08:00
chn
6672ea7f4f plasma-manager: init 2024-02-09 17:05:34 +08:00
chn
4aead6cfc6 fix build 2024-02-09 12:38:12 +08:00
chn
139722dfdf fix waydroid 2024-02-09 12:12:58 +08:00
chn
ac85049d0f fix zip 2024-02-08 23:01:08 +08:00
chn
f5f71bee21 localPackages.win11os-kde: init 2024-02-05 18:18:10 +08:00
chn
08af6615af update plasma-manager 2024-02-05 11:45:56 +08:00
chn
a07800192d system.gurb: fix efishell 2024-02-04 11:37:36 +08:00
chn
13b0c77e7a do not archive 2024-02-04 11:13:34 +08:00
chn
43e8215fc6 Merge branch 'main' into production 2024-02-03 20:52:43 +08:00
chn
abdf3f5f0b vps7: disable mastodon 2024-02-03 20:52:16 +08:00
chn
9b41ebd154 Revert "services.mastodon: security update to 4.2.5"
This reverts commit 3a60acebb5.
2024-02-03 20:51:55 +08:00
chn
21e8b5300a switch to production 2024-02-03 20:49:59 +08:00
chn
6967ab4839 Revert "switch to production build"
This reverts commit 2fe4fb2a25.
2024-02-03 20:45:25 +08:00
chn
3a60acebb5 services.mastodon: security update to 4.2.5 2024-02-03 20:39:47 +08:00
chn
26f0b20684 fix build for silvermont 2024-02-03 19:21:34 +08:00
chn
2fe4fb2a25 switch to production build 2024-02-03 19:14:42 +08:00
chn
641fd3bb97 fix vps7 build 2024-02-03 10:56:07 +08:00
chn
d37e47ff40 system.grub: fix efi shell 2024-02-02 23:39:12 +08:00
chn
67d3cac7a1 packages.server: add dmidecode 2024-02-01 14:32:23 +08:00
chn
3ffdf466bb system.grub: add efi shell 2024-02-01 13:56:09 +08:00
chn
c89af3fa52 system.grub: rewrite 2024-02-01 12:30:01 +08:00
chn
817613ea96 system.envfs: fix 2024-02-01 11:09:11 +08:00
chn
236ddddffc rewrite system.nix 2024-02-01 10:55:47 +08:00
chn
c08fd457cb system.nix: keepOutputs -> includeBuildDependencies 2024-02-01 10:43:54 +08:00
chn
a577616756 system.nix: autoOptimiseStore = false by default 2024-02-01 10:39:27 +08:00
chn
9e43844e14 system.impermanence: enable by default 2024-02-01 10:05:02 +08:00
chn
81521bcd3b system: add envfs 2024-02-01 10:03:15 +08:00
chn
e2674908fb packages.desktop: fix xclip 2024-02-01 09:56:30 +08:00
chn
7d43e6218d localPackages: fix mirism 2024-02-01 09:30:37 +08:00
chn
41552e2ea1 pc: envfs use upstream 2024-02-01 00:30:11 +08:00
chn
268c5bdf3a pc: enable envfs 2024-02-01 00:05:04 +08:00
chn
500d4ac79e 整理了一些plasma的配置 2024-01-31 22:49:30 +08:00
chn
d0603c5977 fix surface build 2024-01-31 22:05:18 +08:00
chn
a5fdf1ea1d pc: do not include build dependencies 2024-01-31 21:14:21 +08:00
chn
8774a6759a packages.workstation: add yuzu 2024-01-31 15:21:22 +08:00
chn
d354b555eb Revert "pc: enable envfs"
This reverts commit 3a96911336.
2024-01-30 20:21:35 +08:00
chn
3a96911336 pc: enable envfs 2024-01-30 19:34:10 +08:00
chn
08df40f3a3 nas: disable gui 2024-01-30 19:22:25 +08:00
chn
bffed3b584 vps7: disable gui 2024-01-30 19:21:36 +08:00
chn
c29eb53ee0 Revert "Revert "pc: include all build dependencies""
This reverts commit fbc6d5bee1.
2024-01-30 13:34:54 +08:00
chn
42119af04d fix pc build 2024-01-30 11:46:06 +08:00
chn
9d5772ab1f Merge branch 'main' into next 2024-01-30 11:41:04 +08:00
chn
fbc6d5bee1 Revert "pc: include all build dependencies"
This reverts commit 9f9e58e54e.
2024-01-29 21:34:40 +08:00
chn
9f9e58e54e pc: include all build dependencies 2024-01-29 18:45:48 +08:00
chn
dc297d0d04 pc: enable snapper 2024-01-29 14:48:58 +08:00
chn
b59dc1b213 services.xray: do not bypass nvidia 2024-01-29 11:07:05 +08:00
chn
853aaf8183 system.nix: set max-jobs & max-substitution-jobs 2024-01-28 19:02:34 +08:00
chn
795acc3828 system.nix: limit max-substitution-jobs 2024-01-27 18:38:28 +08:00
chn
7cf371e78c system.grub: enable memtest86 2024-01-27 18:36:51 +08:00
chn
39fde66754 pc: enable beesd 2024-01-26 16:00:12 +08:00
chn
7a881491bd pc: do not autoOptimiseStore 2024-01-26 15:56:49 +08:00
chn
8e7c615b02 pc: disable beesd and snapper 2024-01-24 08:59:54 +08:00
chn
dbc6874ead update everything 2024-01-23 15:31:49 +08:00
chn
1a2f725a8e localPackages: zpp-bits use flake inputs 2024-01-22 21:11:00 +08:00
chn
0665f57988 pc: setup color profile 2024-01-22 10:54:31 +08:00
chn
15a9f0c05e packages.desktop: add xcalib 2024-01-22 10:50:36 +08:00
chn
82d834e93a pc: add color profiles 2024-01-22 00:52:49 +08:00
chn
c4cccacba3 packages.desktop: add argyllcms 2024-01-22 00:30:53 +08:00
chn
753709d494 pc: disable colord 2024-01-22 00:28:13 +08:00
chn
173d83daae localPackage.rsshub: use flake inputs 2024-01-21 23:45:43 +08:00
chn
cbe228c873 surface: enable waydroid 2024-01-21 18:14:11 +08:00
chn
eb2ab49388 packages: move some package from workstation to desktop-fat 2024-01-20 11:42:41 +08:00
chn
3fd0988582 surface: add maliit 2024-01-20 11:36:26 +08:00
chn
de3b40360b surface: enable iptsd 2024-01-20 11:10:27 +08:00
chn
bb9a1bfb68 Revert "surface: remove patch from nixos-hardware"
This reverts commit 9d8442b1cf.
2024-01-20 11:10:13 +08:00
chn
9d8442b1cf surface: remove patch from nixos-hardware 2024-01-20 10:04:00 +08:00
chn
26150244cb update aagl 2024-01-19 23:50:47 +08:00
chn
914eea92b6 services.wireguard: fix 2024-01-19 19:45:56 +08:00
chn
b2532ef44d services.xray: rename 2024-01-19 19:08:28 +08:00
chn
b600c81aa7 system.nix: comma use upstream nixpkgs-unstable 2024-01-19 10:39:08 +08:00
chn
01a5c290bc surface: enable swap 2024-01-18 22:38:29 +08:00
chn
16c9fa7c3d surface: disable iptsd 2024-01-18 22:12:28 +08:00
chn
9bf3faee63 system.gui: fix 2024-01-18 21:40:51 +08:00
chn
e1789991c4 allow deploy to surface 2024-01-18 21:38:11 +08:00
chn
3cbfe14cc2 system.gui: use wayland as default 2024-01-18 21:20:56 +08:00
chn
2df6396b84 localPackages.typora: update 2024-01-18 15:11:17 +08:00
chn
ce44fe7856 localPackages.misskey: use flake input 2024-01-18 14:45:50 +08:00
chn
de292de159 system: less log 2024-01-18 11:39:09 +08:00
chn
81b6831e1b do not blacklist module ideapad_laptop 2024-01-18 10:18:01 +08:00
chn
bd445d5034 surface: adjust 2024-01-17 16:22:07 +08:00
chn
0ca6df2499 nixos-hardware use upstream repo 2024-01-17 15:10:03 +08:00
chn
00d010a910 surface: fix kernel 2024-01-17 15:07:42 +08:00
chn
48f450bfe3 surface: add lantian patch 2024-01-17 14:31:09 +08:00
chn
7e4fe4837f surface: fix kernel 2024-01-17 14:27:55 +08:00
chn
13edf20710 use nixos-hardware from CHN-beta 2024-01-17 14:07:22 +08:00
chn
556a8d68fc surface: add config from nixos-hardware 2024-01-17 13:21:43 +08:00
chn
2e9972a8cd pc: enable waydroid 2024-01-17 12:16:03 +08:00
chn
30397a8443 pc: fix nvidia 2024-01-17 11:36:24 +08:00
chn
1fcecbb74d pc: disable waydroid 2024-01-17 09:38:55 +08:00
chn
d80d009e3a pc: enable virtualbox 2024-01-16 23:33:30 +08:00
chn
a9e0a57791 Revert "pc: enable anbox"
This reverts commit 17430b943e.
2024-01-16 23:15:57 +08:00
chn
17430b943e pc: enable anbox 2024-01-16 23:12:11 +08:00
chn
7e8bd6f959 pc: enable colord 2024-01-16 22:45:18 +08:00
chn
a624e98514 split machine config 2024-01-16 22:41:03 +08:00
chn
67a03b5ccc default use x11 2024-01-16 22:07:15 +08:00
chn
f64390d7a7 pc: switch back to nvidia 2024-01-16 22:00:21 +08:00
chn
d0158b1608 pc: prime use offload 2024-01-16 21:33:49 +08:00
chn
36da74115e try to fix amdgpu (failed) 2024-01-16 21:32:29 +08:00
chn
fd13dd7319 try to fix 2024-01-16 20:14:41 +08:00
chn
0e75a6f4e8 update kernel 2024-01-16 16:40:41 +08:00
chn
ccc102ea00 fix chromium 2024-01-16 01:18:22 +08:00
chn
4465522bc5 hardware: disable nvidia modesetting 2024-01-16 00:47:48 +08:00
chn
8ba5913eca surface: fix opencolorio 2024-01-16 00:14:14 +08:00
chn
478d760816 comment 2024-01-15 19:39:10 +08:00
chn
98f9bfd1e5 pc: use prime 2024-01-15 18:59:26 +08:00
chn
2d1df77bc3 vps6: xray reset uuid 2024-01-15 10:27:37 +08:00
chn
dc19b577dc comment 2024-01-14 22:37:44 +08:00
chn
49898a9d01 fix scipy 2024-01-14 22:32:57 +08:00
chn
c35664984e plasma-manager: prepare 2024-01-14 22:06:00 +08:00
chn
aec8ef7c35 add some comment 2024-01-14 20:29:46 +08:00
chn
8931b90a33 some adjust 2024-01-14 19:56:55 +08:00
chn
2b2883ab48 hardware: use production nvidia driver 2024-01-14 18:52:05 +08:00
chn
410f73e8b1 pc: try to fix backlight 2024-01-14 17:36:36 +08:00
76 changed files with 2352 additions and 2040 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.icm filter=lfs diff=lfs merge=lfs -text

View File

@@ -3,7 +3,7 @@ keys: # cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age
- &pc age1ffvr5pqd2lfj24e3fh53s92z6h76fda3du4y4k6r3yjumdwvpfgqzj033a - &pc age1ffvr5pqd2lfj24e3fh53s92z6h76fda3du4y4k6r3yjumdwvpfgqzj033a
- &vps6 age164tyqklwhdm57tfm5u863mdt2xrzrrzac4py8a0j9y6kzqcjy9zsp073t6 - &vps6 age164tyqklwhdm57tfm5u863mdt2xrzrrzac4py8a0j9y6kzqcjy9zsp073t6
- &vps7 age137x7csalutwvfygvvzpemlsywvdxj3j4z93a50z2sjx03w6zau8q3r5902 - &vps7 age137x7csalutwvfygvvzpemlsywvdxj3j4z93a50z2sjx03w6zau8q3r5902
- &yoga age1qrea4twxdhd7fnvlq5v45528c90qy6hp2wa55kghsxzgut6n6fxs7w6u42 - &surface age1ck5vzs0xqx0jplmuksrkh45xwmkm2t05m2wyq5k2w2mnkmn79fxs6tvl3l
- &nas age19lhcwk37jmvn6z0v4dpdfh0k4u23f76twdjknc0p7atktf37rd7s4t4wj3 - &nas age19lhcwk37jmvn6z0v4dpdfh0k4u23f76twdjknc0p7atktf37rd7s4t4wj3
- &xmupc1 age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m - &xmupc1 age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m
creation_rules: creation_rules:
@@ -27,15 +27,11 @@ creation_rules:
- age: - age:
- *chn - *chn
- *nas - *nas
- path_regex: secrets/xmupc1/.*$ - path_regex: secrets/surface/.*$
key_groups: key_groups:
- age: - age:
- *chn - *chn
- path_regex: secrets/yoga/.*$ - *surface
key_groups:
- age:
- *chn
- *yoga
- path_regex: secrets/xmupc1/.*$ - path_regex: secrets/xmupc1/.*$
key_groups: key_groups:
- age: - age:

101
devices/nas/default.nix Normal file
View File

@@ -0,0 +1,101 @@
inputs:
{
config =
{
nixos =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/13BC-F0C9" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/0e184f3b-af6c-4f5d-926a-2559f2dc3063"."/boot" = "/boot";
"/dev/mapper/nix"."/nix" = "/nix";
"/dev/mapper/root1" =
{
"/nix/rootfs" = "/nix/rootfs";
"/nix/persistent" = "/nix/persistent";
"/nix/nodatacow" = "/nix/nodatacow";
"/nix/rootfs/current" = "/";
"/nix/backup" = "/nix/backup";
};
};
};
decrypt.manual =
{
enable = true;
devices =
{
"/dev/disk/by-uuid/5cf1d19d-b4a5-4e67-8e10-f63f0d5bb649".mapper = "root1";
"/dev/disk/by-uuid/aa684baf-fd8a-459c-99ba-11eb7636cb0d".mapper = "root2";
"/dev/disk/by-uuid/a779198f-cce9-4c3d-a64a-9ec45f6f5495" = { mapper = "nix"; ssd = true; };
};
delayedMount = [ "/" "/nix" ];
};
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root1"; path = "/nix/rootfs"; };
};
initrd.sshd.enable = true;
grub.installDevice = "efi";
nixpkgs.march = "silvermont";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
kernel.patches = [ "cjktty" ];
networking.hostname = "nas";
gui.preferred = false;
};
hardware = { cpus = [ "intel" ]; gpu.type = "intel"; };
packages.packageSet = "desktop-fat";
services =
{
snapper.enable = false;
fontconfig.enable = true;
samba =
{
enable = true;
hostsAllowed = "192.168. 127.";
shares = { home.path = "/home"; root.path = "/"; };
};
sshd = { enable = true; passwordAuthentication = true; };
xray.client =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
xrdp = { enable = true; hostname = [ "nas.chn.moe" "office.chn.moe" ]; };
groupshare.enable = true;
smartd.enable = true;
beesd =
{
enable = true;
instances =
{
root = { device = "/"; hashTableSizeMB = 2048; };
nix = { device = "/nix"; hashTableSizeMB = 128; };
};
};
frpClient =
{
enable = true;
serverName = "frp.chn.moe";
user = "nas";
stcp.hpc = { localIp = "hpc.xmu.edu.cn"; localPort = 22; };
};
nginx = { enable = true; applications.webdav.instances."local.webdav.chn.moe" = {}; };
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "xCYRbZEaGloMk7Awr00UR3JcDJy4AzVp4QvGNoyEgFY=";
wireguardIp = "192.168.83.4";
};
};
users.users = [ "chn" "xll" "zem" "yjq" "yxy" ];
};
};
}

BIN
devices/pc/color/TPLCD_161B_Default.icm LFS Executable file

Binary file not shown.

BIN
devices/pc/color/TPLCD_161B_Native.icm LFS Executable file

Binary file not shown.

Binary file not shown.

BIN
devices/pc/color/TPLCD_161B_REC709.icm LFS Executable file

Binary file not shown.

BIN
devices/pc/color/TPLCD_161B_sRGB.icm LFS Executable file

Binary file not shown.

156
devices/pc/default.nix Normal file
View File

@@ -0,0 +1,156 @@
inputs:
{
config =
{
nixos =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/3F57-0EBE" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/02e426ec-cfa2-4a18-b3a5-57ef04d66614"."/" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.auto =
{
"/dev/disk/by-uuid/55fdd19f-0f1d-4c37-bd4e-6df44fc31f26" = { mapper = "root"; ssd = true; };
"/dev/disk/by-uuid/4be45329-a054-4c20-8965-8c5b7ee6b35d" =
{ mapper = "swap"; ssd = true; before = [ "root" ]; };
};
swap = [ "/dev/mapper/swap" ];
resume = "/dev/mapper/swap";
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub =
{
# TODO: install windows
# windowsEntries = { "7317-1DB6" = "Windows"; "7321-FA9C" = "Windows for malware"; };
installDevice = "efi";
};
nix =
{
marches =
[
"znver2" "znver3" "znver4"
# FXSR SAHF XSAVE
"sandybridge"
# FXSR PREFETCHW RDRND SAHF
"silvermont"
# FXSR HLE LZCNT PREFETCHW RDRND SAHF XSAVE
"broadwell"
# FXSR HLE LZCNT PREFETCHW RDRND SAHF SGX XSAVE
"skylake"
# AVX-VNNI CLDEMOTE GFNI-SSE HRESET KL LZCNT MOVDIR64B MOVDIRI PCONFIG PREFETCHW PTWRITE RDRND
# SERIALIZE SGX WAITPKG WIDEKL XSAVE XSAVEOPT
"alderlake"
];
};
nixpkgs =
{ march = "znver4"; cuda = { enable = true; capabilities = [ "8.9" ]; forwardCompat = false; }; };
kernel.patches = [ "cjktty" "lantian" ];
networking.hostname = "pc";
sysctl.laptop-mode = 5;
};
hardware =
{
cpus = [ "amd" ];
gpu = { type = "amd+nvidia"; prime.busId = { amd = "8:0:0"; nvidia = "1:0:0"; }; };
# gpu.type = "amd";
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
legion.enable = true;
};
packages.packageSet = "workstation";
virtualization =
{
waydroid.enable = true;
docker.enable = true;
kvmHost = { enable = true; gui = true; autoSuspend = [ "win10" "hardconnect" ]; };
nspawn = [ "arch" "ubuntu-22.04" "fedora" ];
};
services =
{
snapper.enable = true;
fontconfig.enable = true;
samba =
{
enable = true;
private = true;
hostsAllowed = "192.168. 127.";
shares =
{
media.path = "/run/media/chn";
home.path = "/home/chn";
mnt.path = "/mnt";
share.path = "/home/chn/share";
};
};
sshd.enable = true;
xray.client =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns =
{
extraInterfaces = [ "docker0" ];
hosts =
{
"mirism.one" = "74.211.99.69";
"beta.mirism.one" = "74.211.99.69";
"ng01.mirism.one" = "74.211.99.69";
"debug.mirism.one" = "127.0.0.1";
"initrd.vps6.chn.moe" = "74.211.99.69";
"nix-store.chn.moe" = "127.0.0.1";
"initrd.nas.chn.moe" = "192.168.1.185";
};
};
};
firewall.trustedInterfaces = [ "virbr0" "waydroid0" ];
acme = { enable = true; cert."debug.mirism.one" = {}; };
frpClient =
{
enable = true;
serverName = "frp.chn.moe";
user = "pc";
stcpVisitor."yy.vnc".localPort = 6187;
};
nix-serve = { enable = true; hostname = "nix-store.chn.moe"; };
smartd.enable = true;
misskey.instances.misskey.hostname = "xn--qbtm095lrg0bfka60z.chn.moe";
beesd = { enable = true; instances.root = { device = "/"; hashTableSizeMB = 2048; threads = 4; }; };
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "l1gFSDCeBxyf/BipXNvoEvVvLqPgdil84nmr5q6+EEw=";
wireguardIp = "192.168.83.3";
};
gamemode = { enable = true; drmDevice = 1; };
};
bugs = [ "xmunet" "backlight" "amdpstate" ];
};
virtualisation.virtualbox.host = { enable = true; enableExtensionPack = true; };
services.colord.enable = true;
specialisation.nvidia.configuration =
{
system.nixos.tags = [ "discreate graphic" ];
services =
{
xserver.displayManager.defaultSession = inputs.lib.mkForce "plasma";
colord.enable = inputs.lib.mkForce false;
};
hardware.nvidia.forceFullCompositionPipeline = true;
home-manager.users.chn.config.programs.plasma.startup.autoStartScript.xcalib.text =
"${inputs.pkgs.xcalib}/bin/xcalib -d :0 ${./color/TPLCD_161B_Default.icm}";
};
};
}

View File

@@ -0,0 +1,66 @@
inputs:
{
imports = inputs.localLib.mkModules [ inputs.topInputs.nixos-hardware.nixosModules.microsoft-surface-pro-intel ];
config =
{
nixos =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/7179-9C69" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/c6d35075-85fe-4129-aaa8-f436ab85ce43"."/boot" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.auto =
{
"/dev/disk/by-uuid/4f7420f9-ea19-4713-b084-2ac8f0a963ac" = { mapper = "root"; ssd = true; };
"/dev/disk/by-uuid/88bd9d44-928b-40a2-8f3d-6dcd257c4601" =
{ mapper = "swap"; ssd = true; before = [ "root" ]; };
};
swap = [ "/dev/mapper/swap" ];
resume = "/dev/mapper/swap";
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
nixpkgs.march = "skylake";
grub.installDevice = "efi";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
kernel.patches = [ "cjktty" "lantian" "surface" ];
networking.hostname = "surface";
};
hardware =
{
cpus = [ "intel" ];
gpu.type = "intel";
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
};
packages.packageSet = "desktop-fat";
virtualization = { docker.enable = true; waydroid.enable = true; };
services =
{
snapper.enable = true;
fontconfig.enable = true;
sshd.enable = true;
xray.client =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
firewall.trustedInterfaces = [ "virbr0" ];
};
bugs = [ "xmunet" ];
};
environment.systemPackages = with inputs.pkgs; [ maliit-keyboard maliit-framework ];
};
}

83
devices/vps6/default.nix Normal file
View File

@@ -0,0 +1,83 @@
inputs:
{
config =
{
nixos =
{
system =
{
fileSystems =
{
mount =
{
btrfs =
{
"/dev/disk/by-uuid/24577c0e-d56b-45ba-8b36-95a848228600"."/boot" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.manual =
{
enable = true;
devices."/dev/disk/by-uuid/4f8aca22-9ec6-4fad-b21a-fd9d8d0514e8" = { mapper = "root"; ssd = true; };
delayedMount = [ "/" ];
};
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub.installDevice = "/dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:0";
nixpkgs.march = "sandybridge";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
initrd.sshd.enable = true;
networking.hostname = "vps6";
};
packages.packageSet = "server";
services =
{
snapper.enable = true;
sshd.enable = true;
xray.server = { enable = true; serverName = "vps6.xserver.chn.moe"; };
frpServer = { enable = true; serverName = "frp.chn.moe"; };
nginx =
{
streamProxy.map =
{
"anchor.fm" = { upstream = "anchor.fm:443"; proxyProtocol = false; };
"podcasters.spotify.com" = { upstream = "podcasters.spotify.com:443"; proxyProtocol = false; };
"xlog.chn.moe" = { upstream = "cname.xlog.app:443"; proxyProtocol = false; };
}
// (builtins.listToAttrs (builtins.map
(site: { name = "${site}.chn.moe"; value.upstream.address = "wireguard.pc.chn.moe"; })
[ "nix-store" "xn--qbtm095lrg0bfka60z" ]))
// (builtins.listToAttrs (builtins.map
(site: { name = "${site}.chn.moe"; value.upstream.address = "wireguard.vps7.chn.moe"; })
[
"xn--s8w913fdga" "misskey" "synapse" "syncv3.synapse" "matrix" "syncv3.matrix"
"send" "kkmeeting" "api" "git" "grafana"
]));
applications =
{
element.instances."element.chn.moe" = {};
synapse-admin.instances."synapse-admin.chn.moe" = {};
catalog.enable = true;
blog.enable = true;
main.enable = true;
};
};
coturn.enable = true;
httpua.enable = true;
mirism.enable = true;
fail2ban.enable = true;
wireguard =
{
enable = true;
peers = [ "pc" "nas" "vps7" ];
publicKey = "AVOsYUKQQCvo3ctst3vNi8XSVWo1Wh15066aHh+KpF4=";
wireguardIp = "192.168.83.1";
listenIp = "74.211.99.69";
lighthouse = true;
};
};
};
};
}

78
devices/vps7/default.nix Normal file
View File

@@ -0,0 +1,78 @@
inputs:
{
config =
{
nixos =
{
system =
{
fileSystems =
{
mount =
{
btrfs =
{
"/dev/disk/by-uuid/e36287f7-7321-45fa-ba1e-d126717a65f0"."/boot" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.manual =
{
enable = true;
devices."/dev/disk/by-uuid/db48c8de-bcf7-43ae-a977-60c4f390d5c4" = { mapper = "root"; ssd = true; };
delayedMount = [ "/" ];
};
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub.installDevice = "/dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:0";
nixpkgs.march = "broadwell";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
initrd.sshd.enable = true;
networking.hostname = "vps7";
gui.preferred = false;
};
packages.packageSet = "desktop";
services =
{
snapper.enable = true;
fontconfig.enable = true;
sshd.enable = true;
rsshub.enable = true;
wallabag.enable = true;
misskey.instances =
{
misskey.hostname = "xn--s8w913fdga.chn.moe";
misskey-old = { port = 9727; redis.port = 3546; meilisearch.enable = false; };
};
synapse.instances =
{
synapse.matrixHostname = "synapse.chn.moe";
matrix = { port = 8009; redisPort = 6380; slidingSyncPort = 9001; };
};
xrdp = { enable = true; hostname = [ "vps7.chn.moe" ]; };
vaultwarden.enable = true;
beesd = { enable = true; instances.root = { device = "/"; hashTableSizeMB = 1024; }; };
photoprism.enable = true;
nextcloud.enable = true;
freshrss.enable = true;
send.enable = true;
huginn.enable = true;
fz-new-order.enable = true;
nginx.applications = { kkmeeting.enable = true; webdav.instances."webdav.chn.moe" = {}; };
httpapi.enable = true;
gitea.enable = true;
grafana.enable = true;
fail2ban.enable = true;
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "n056ppNxC9oECcW7wEbALnw8GeW7nrMImtexKWYVUBk=";
wireguardIp = "192.168.83.2";
listenIp = "95.111.228.40";
};
};
};
};
}

View File

@@ -0,0 +1,99 @@
inputs:
{
config =
{
nixos =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/3F57-0EBE" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/02e426ec-cfa2-4a18-b3a5-57ef04d66614"."/" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
swap = [ "/dev/mapper/swap" ];
resume = "/dev/mapper/swap";
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub.installDevice = "efi";
nixpkgs =
{
march = "znver3";
cuda =
{
enable = true;
capabilities =
[
# 2080 Ti
"7.5"
# 3090
"8.6"
# 4090
"8.9"
];
forwardCompat = false;
};
};
gui.preferred = false;
kernel.patches = [ "cjktty" ];
networking.hostname = "xmupc1";
};
hardware =
{
cpus = [ "amd" ];
# gpus = [ "nvidia" ];
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
# gamemode.drmDevice = 1;
};
packages.packageSet = "workstation";
virtualization = { docker.enable = true; kvmHost = { enable = true; gui = true; }; };
services =
{
snapper.enable = true;
fontconfig.enable = true;
samba =
{
enable = true;
private = true;
hostsAllowed = "192.168. 127.";
shares =
{
media.path = "/run/media/chn";
home.path = "/home/chn";
mnt.path = "/mnt";
share.path = "/home/chn/share";
};
};
sshd.enable = true;
xray.client =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
firewall.trustedInterfaces = [ "virbr0" "waydroid0" ];
acme = { enable = true; cert."debug.mirism.one" = {}; };
smartd.enable = true;
beesd = { enable = true; instances.root = { device = "/nix/persistent"; hashTableSizeMB = 2048; }; };
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "JEY7D4ANfTpevjXNvGDYO6aGwtBGRXsf/iwNwjwDRQk=";
wireguardIp = "192.168.83.5";
};
};
bugs = [ "xmunet" "firefox" ];
};
};
}

764
flake.lock generated

File diff suppressed because it is too large Load Diff

605
flake.nix
View File

@@ -4,7 +4,7 @@
inputs = inputs =
{ {
nixpkgs.url = "github:CHN-beta/nixpkgs/nixos-23.11"; nixpkgs.url = "github:CHN-beta/nixpkgs/nixos-23.11";
nixpkgs-unstable.url = "github:CHN-beta/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-2305.url = "github:CHN-beta/nixpkgs/nixos-23.05"; nixpkgs-2305.url = "github:CHN-beta/nixpkgs/nixos-23.05";
home-manager = { url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; };
sops-nix = sops-nix =
@@ -13,7 +13,7 @@
inputs = { nixpkgs.follows = "nixpkgs"; nixpkgs-stable.follows = "nixpkgs"; }; inputs = { nixpkgs.follows = "nixpkgs"; nixpkgs-stable.follows = "nixpkgs"; };
}; };
aagl = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; aagl = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
nix-index-database = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-index-database = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs-unstable"; };
nur.url = "github:nix-community/NUR"; nur.url = "github:nix-community/NUR";
nixos-cn = { url = "github:nixos-cn/flakes"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-cn = { url = "github:nixos-cn/flakes"; inputs.nixpkgs.follows = "nixpkgs"; };
nur-xddxdd = { url = "github:xddxdd/nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; }; nur-xddxdd = { url = "github:xddxdd/nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; };
@@ -24,13 +24,15 @@
inputs = { nixpkgs.follows = "nixpkgs"; nix-index-database.follows = "nix-index-database"; }; inputs = { nixpkgs.follows = "nixpkgs"; nix-index-database.follows = "nix-index-database"; };
}; };
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
qchem = { url = "github:Nix-QChem/NixOS-QChem"; inputs.nixpkgs.follows = "nixpkgs"; }; qchem = { url = "github:Nix-QChem/NixOS-QChem/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; };
nixd = { url = "github:nix-community/nixd"; inputs.nixpkgs.follows = "nixpkgs"; }; nixd = { url = "github:nix-community/nixd"; inputs.nixpkgs.follows = "nixpkgs"; };
napalm = { url = "github:nix-community/napalm"; inputs.nixpkgs.follows = "nixpkgs"; }; napalm = { url = "github:nix-community/napalm"; inputs.nixpkgs.follows = "nixpkgs"; };
nixpak = { url = "github:nixpak/nixpak"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpak = { url = "github:nixpak/nixpak"; inputs.nixpkgs.follows = "nixpkgs"; };
deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; }; deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; };
pnpm2nix-nzbr = { url = "github:CHN-beta/pnpm2nix-nzbr"; inputs.nixpkgs.follows = "nixpkgs"; }; pnpm2nix-nzbr = { url = "github:CHN-beta/pnpm2nix-nzbr"; inputs.nixpkgs.follows = "nixpkgs"; };
# oneapi
lmix = { url = "github:CHN-beta/lmix"; inputs.nixpkgs.follows = "nixpkgs"; }; lmix = { url = "github:CHN-beta/lmix"; inputs.nixpkgs.follows = "nixpkgs"; };
# nvhpc
dguibert-nur-packages = { url = "github:CHN-beta/dguibert-nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; }; dguibert-nur-packages = { url = "github:CHN-beta/dguibert-nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; };
plasma-manager = plasma-manager =
{ {
@@ -39,6 +41,29 @@
}; };
nix-doom-emacs = { url = "github:nix-community/nix-doom-emacs"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-doom-emacs = { url = "github:nix-community/nix-doom-emacs"; inputs.nixpkgs.follows = "nixpkgs"; };
nur-linyinfeng = { url = "github:linyinfeng/nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; }; nur-linyinfeng = { url = "github:linyinfeng/nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; };
nixos-hardware.url = "github:CHN-beta/nixos-hardware";
envfs = { url = "github:Mic92/envfs"; inputs.nixpkgs.follows = "nixpkgs"; };
misskey = { url = "git+https://github.com/CHN-beta/misskey?submodules=1"; flake = false; };
rsshub = { url = "github:DIYgod/RSSHub"; flake = false; };
zpp-bits = { url = "github:eyalz800/zpp_bits"; flake = false; };
citation-style-language = { url = "git+https://github.com/zepinglee/citeproc-lua?submodules=1"; flake = false; };
concurrencpp = { url = "github:David-Haim/concurrencpp"; flake = false; };
cppcoro = { url = "github:Garcia6l20/cppcoro"; flake = false; };
date = { url = "github:HowardHinnant/date"; flake = false; };
eigen = { url = "gitlab:libeigen/eigen"; flake = false; };
matplotplusplus = { url = "github:alandefreitas/matplotplusplus"; flake = false; };
nameof = { url = "github:Neargye/nameof"; flake = false; };
nodesoup = { url = "github:olvb/nodesoup"; flake = false; };
tgbot-cpp = { url = "github:reo7sp/tgbot-cpp"; flake = false; };
v-sim = { url = "gitlab:l_sim/v_sim"; flake = false; };
win11os-kde = { url = "github:yeyushengfan258/Win11OS-kde"; flake = false; };
fluent-kde = { url = "github:vinceliuice/Fluent-kde"; flake = false; };
rycee = { url = "gitlab:rycee/nur-expressions"; flake = false; };
cascade = { url = "github:CHN-beta/cascade"; flake = false; };
blurred-wallpaper = { url = "github:bouteillerAlan/blurredwallpaper"; flake = false; };
slate = { url = "github:TheBigWazz/Slate"; flake = false; };
linux-surface = { url = "github:linux-surface/linux-surface"; flake = false; };
}; };
outputs = inputs: outputs = inputs:
@@ -65,562 +90,27 @@
# ssh-keygen -t rsa -C root@pe -f /mnt/nix/persistent/etc/ssh/ssh_host_rsa_key # ssh-keygen -t rsa -C root@pe -f /mnt/nix/persistent/etc/ssh/ssh_host_rsa_key
# ssh-keygen -t ed25519 -C root@pe -f /mnt/nix/persistent/etc/ssh/ssh_host_ed25519_key # ssh-keygen -t ed25519 -C root@pe -f /mnt/nix/persistent/etc/ssh/ssh_host_ed25519_key
# systemd-machine-id-setup --root=/mnt/nix/persistent # systemd-machine-id-setup --root=/mnt/nix/persistent
nixosConfigurations = nixosConfigurations = builtins.listToAttrs (builtins.map
let (system:
system = {
name = system;
value = inputs.nixpkgs.lib.nixosSystem
{ {
pc = system = "x86_64-linux";
{ specialArgs = { topInputs = inputs; inherit localLib; };
system = modules = localLib.mkModules
[
(moduleInputs:
{ {
fileSystems = config.nixpkgs.overlays = [(final: prev: { localPackages =
{ import ./local/pkgs { inherit (moduleInputs) lib; pkgs = final; topInputs = inputs; };})];
mount = })
{ ./modules
vfat."/dev/disk/by-uuid/3F57-0EBE" = "/boot/efi"; ./devices/${system}
btrfs = ];
{
"/dev/disk/by-uuid/02e426ec-cfa2-4a18-b3a5-57ef04d66614"."/" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.auto =
{
"/dev/disk/by-uuid/55fdd19f-0f1d-4c37-bd4e-6df44fc31f26" = { mapper = "root"; ssd = true; };
"/dev/disk/by-uuid/4be45329-a054-4c20-8965-8c5b7ee6b35d" =
{ mapper = "swap"; ssd = true; before = [ "root" ]; };
};
swap = [ "/dev/mapper/swap" ];
resume = "/dev/mapper/swap";
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub =
{
# TODO: install windows
# windowsEntries = { "7317-1DB6" = "Windows"; "7321-FA9C" = "Windows for malware"; };
installDevice = "efi";
};
nix =
{
marches =
[
"znver2" "znver3" "znver4"
# FXSR SAHF XSAVE
"sandybridge"
# FXSR PREFETCHW RDRND SAHF
"silvermont"
# FXSR HLE LZCNT PREFETCHW RDRND SAHF XSAVE
"broadwell"
# AVX-VNNI CLDEMOTE GFNI-SSE HRESET KL LZCNT MOVDIR64B MOVDIRI PCONFIG PREFETCHW PTWRITE RDRND
# SERIALIZE SGX WAITPKG WIDEKL XSAVE XSAVEOPT
"alderlake"
# TODO: adjust skylake
"skylake"
];
keepOutputs = true;
};
nixpkgs =
{ march = "znver4"; cuda = { enable = true; capabilities = [ "8.9" ]; forwardCompat = false; }; };
kernel.patches = [ "cjktty" "lantian" ];
impermanence.enable = true;
networking.hostname = "pc";
sysctl.laptop-mode = 5;
};
hardware =
{
cpus = [ "amd" ];
gpus = [ "amd" "nvidia" ];
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
legion.enable = true;
};
packages.packageSet = "workstation";
virtualization =
{
waydroid.enable = true;
docker.enable = true;
kvmHost = { enable = true; gui = true; autoSuspend = [ "win10" "hardconnect" ]; };
# kvmGuest.enable = true;
nspawn = [ "arch" "ubuntu-22.04" "fedora" ];
};
services =
{
snapper.enable = true;
fontconfig.enable = true;
samba =
{
enable = true;
private = true;
hostsAllowed = "192.168. 127.";
shares =
{
media.path = "/run/media/chn";
home.path = "/home/chn";
mnt.path = "/mnt";
share.path = "/home/chn/share";
};
};
sshd.enable = true;
xrayClient =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns =
{
extraInterfaces = [ "docker0" ];
hosts =
{
"mirism.one" = "74.211.99.69";
"beta.mirism.one" = "74.211.99.69";
"ng01.mirism.one" = "74.211.99.69";
"debug.mirism.one" = "127.0.0.1";
"initrd.vps6.chn.moe" = "74.211.99.69";
"nix-store.chn.moe" = "127.0.0.1";
"initrd.nas.chn.moe" = "192.168.1.185";
};
};
};
firewall.trustedInterfaces = [ "virbr0" "waydroid0" ];
acme = { enable = true; cert."debug.mirism.one" = {}; };
frpClient =
{
enable = true;
serverName = "frp.chn.moe";
user = "pc";
stcpVisitor."yy.vnc".localPort = 6187;
};
nix-serve = { enable = true; hostname = "nix-store.chn.moe"; };
smartd.enable = true;
misskey.instances.misskey.hostname = "xn--qbtm095lrg0bfka60z.chn.moe";
beesd = { enable = true; instances.root = { device = "/"; hashTableSizeMB = 2048; }; };
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "l1gFSDCeBxyf/BipXNvoEvVvLqPgdil84nmr5q6+EEw=";
wireguardIp = "192.168.83.3";
};
};
bugs = [ "xmunet" "suspend-hibernate-waydroid" ];
};
vps6 =
{
system =
{
fileSystems =
{
mount =
{
btrfs =
{
"/dev/disk/by-uuid/24577c0e-d56b-45ba-8b36-95a848228600"."/boot" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.manual =
{
enable = true;
devices."/dev/disk/by-uuid/4f8aca22-9ec6-4fad-b21a-fd9d8d0514e8" = { mapper = "root"; ssd = true; };
delayedMount = [ "/" ];
};
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub.installDevice = "/dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:0";
nixpkgs.march = "sandybridge";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
initrd.sshd.enable = true;
impermanence.enable = true;
networking.hostname = "vps6";
};
packages.packageSet = "server";
services =
{
snapper.enable = true;
sshd.enable = true;
xrayServer = { enable = true; serverName = "vps6.xserver.chn.moe"; };
frpServer = { enable = true; serverName = "frp.chn.moe"; };
nginx =
{
streamProxy.map =
{
"anchor.fm" = { upstream = "anchor.fm:443"; proxyProtocol = false; };
"podcasters.spotify.com" = { upstream = "podcasters.spotify.com:443"; proxyProtocol = false; };
"xlog.chn.moe" = { upstream = "cname.xlog.app:443"; proxyProtocol = false; };
}
// (builtins.listToAttrs (builtins.map
(site: { name = "${site}.chn.moe"; value.upstream.address = "wireguard.pc.chn.moe"; })
[ "nix-store" "xn--qbtm095lrg0bfka60z" ]))
// (builtins.listToAttrs (builtins.map
(site: { name = "${site}.chn.moe"; value.upstream.address = "wireguard.vps7.chn.moe"; })
[
"xn--s8w913fdga" "misskey" "synapse" "syncv3.synapse" "matrix" "syncv3.matrix"
"send" "kkmeeting" "api" "git" "grafana"
]));
applications =
{
element.instances."element.chn.moe" = {};
synapse-admin.instances."synapse-admin.chn.moe" = {};
catalog.enable = true;
blog.enable = true;
main.enable = true;
};
};
coturn.enable = true;
httpua.enable = true;
mirism.enable = true;
fail2ban.enable = true;
wireguard =
{
enable = true;
peers = [ "pc" "nas" "vps7" ];
publicKey = "AVOsYUKQQCvo3ctst3vNi8XSVWo1Wh15066aHh+KpF4=";
wireguardIp = "192.168.83.1";
externalIp = "74.211.99.69";
lighthouse = true;
};
};
};
vps7 =
{
system =
{
fileSystems =
{
mount =
{
btrfs =
{
"/dev/disk/by-uuid/e36287f7-7321-45fa-ba1e-d126717a65f0"."/boot" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.manual =
{
enable = true;
devices."/dev/disk/by-uuid/db48c8de-bcf7-43ae-a977-60c4f390d5c4" = { mapper = "root"; ssd = true; };
delayedMount = [ "/" ];
};
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub.installDevice = "/dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:0";
nixpkgs.march = "broadwell";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
initrd.sshd.enable = true;
impermanence.enable = true;
networking.hostname = "vps7";
gui.preferred = false;
};
packages.packageSet = "desktop";
services =
{
snapper.enable = true;
fontconfig.enable = true;
sshd.enable = true;
rsshub.enable = true;
wallabag.enable = true;
misskey.instances =
{
misskey.hostname = "xn--s8w913fdga.chn.moe";
misskey-old = { port = 9727; redis.port = 3546; meilisearch.enable = false; };
};
synapse.instances =
{
synapse.matrixHostname = "synapse.chn.moe";
matrix = { port = 8009; redisPort = 6380; slidingSyncPort = 9001; };
};
xrdp = { enable = true; hostname = [ "vps7.chn.moe" ]; };
vaultwarden.enable = true;
beesd = { enable = true; instances.root = { device = "/"; hashTableSizeMB = 1024; }; };
photoprism.enable = true;
nextcloud.enable = true;
freshrss.enable = true;
send.enable = true;
huginn.enable = true;
fz-new-order.enable = true;
nginx.applications = { kkmeeting.enable = true; webdav.instances."webdav.chn.moe" = {}; };
httpapi.enable = true;
mastodon.enable = true;
gitea.enable = true;
grafana.enable = true;
fail2ban.enable = true;
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "n056ppNxC9oECcW7wEbALnw8GeW7nrMImtexKWYVUBk=";
wireguardIp = "192.168.83.2";
externalIp = "95.111.228.40";
};
};
};
nas =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/13BC-F0C9" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/0e184f3b-af6c-4f5d-926a-2559f2dc3063"."/boot" = "/boot";
"/dev/mapper/nix"."/nix" = "/nix";
"/dev/mapper/root1" =
{
"/nix/rootfs" = "/nix/rootfs";
"/nix/persistent" = "/nix/persistent";
"/nix/nodatacow" = "/nix/nodatacow";
"/nix/rootfs/current" = "/";
"/nix/backup" = "/nix/backup";
};
};
};
decrypt.manual =
{
enable = true;
devices =
{
"/dev/disk/by-uuid/5cf1d19d-b4a5-4e67-8e10-f63f0d5bb649".mapper = "root1";
"/dev/disk/by-uuid/aa684baf-fd8a-459c-99ba-11eb7636cb0d".mapper = "root2";
"/dev/disk/by-uuid/a779198f-cce9-4c3d-a64a-9ec45f6f5495" = { mapper = "nix"; ssd = true; };
};
delayedMount = [ "/" "/nix" ];
};
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root1"; path = "/nix/rootfs"; };
};
initrd.sshd.enable = true;
grub.installDevice = "efi";
nixpkgs.march = "silvermont";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
kernel.patches = [ "cjktty" ];
impermanence.enable = true;
networking.hostname = "nas";
gui.preferred = false;
};
hardware = { cpus = [ "intel" ]; gpus = [ "intel" ]; };
packages.packageSet = "desktop";
services =
{
snapper.enable = true;
fontconfig.enable = true;
samba =
{
enable = true;
hostsAllowed = "192.168. 127.";
shares = { home.path = "/home"; root.path = "/"; };
};
sshd = { enable = true; passwordAuthentication = true; };
xrayClient =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
xrdp = { enable = true; hostname = [ "nas.chn.moe" "office.chn.moe" ]; };
groupshare.enable = true;
smartd.enable = true;
beesd =
{
enable = true;
instances =
{
root = { device = "/"; hashTableSizeMB = 2048; };
nix = { device = "/nix"; hashTableSizeMB = 128; };
};
};
frpClient =
{
enable = true;
serverName = "frp.chn.moe";
user = "nas";
stcp.hpc = { localIp = "hpc.xmu.edu.cn"; localPort = 22; };
};
nginx = { enable = true; applications.webdav.instances."local.webdav.chn.moe" = {}; };
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "xCYRbZEaGloMk7Awr00UR3JcDJy4AzVp4QvGNoyEgFY=";
wireguardIp = "192.168.83.4";
};
};
users.users = [ "chn" "xll" "zem" "yjq" "yxy" ];
};
surface =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/86B8-CF80" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/e252f81d-b4b3-479f-8664-380a9b73cf83"."/boot" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
decrypt.auto."/dev/disk/by-uuid/8186d34e-005c-4461-94c7-1003a5bd86c0" =
{ mapper = "root"; ssd = true; };
swap = [ "/nix/swap/swap" ];
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
nixpkgs.march = "skylake";
grub.installDevice = "efi";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
kernel.patches = [ "cjktty" ];
impermanence.enable = true;
networking.hostname = "surface";
};
hardware =
{
cpus = [ "intel" ];
gpus = [ "intel" ];
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
};
packages.packageSet = "desktop-fat";
virtualization.docker.enable = true;
services =
{
snapper.enable = true;
fontconfig.enable = true;
sshd.enable = true;
xrayClient =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
firewall.trustedInterfaces = [ "virbr0" ];
};
bugs = [ "xmunet" ];
};
xmupc1 =
{
system =
{
fileSystems =
{
mount =
{
vfat."/dev/disk/by-uuid/3F57-0EBE" = "/boot/efi";
btrfs =
{
"/dev/disk/by-uuid/02e426ec-cfa2-4a18-b3a5-57ef04d66614"."/" = "/boot";
"/dev/mapper/root" = { "/nix" = "/nix"; "/nix/rootfs/current" = "/"; };
};
};
swap = [ "/dev/mapper/swap" ];
resume = "/dev/mapper/swap";
rollingRootfs = { device = "/dev/mapper/root"; path = "/nix/rootfs"; };
};
grub.installDevice = "efi";
nixpkgs =
{
march = "znver3";
cuda =
{
enable = true;
capabilities =
[
# 2080 Ti
"7.5"
# 3090
"8.6"
# 4090
"8.9"
];
forwardCompat = false;
};
};
gui.preferred = false;
kernel.patches = [ "cjktty" ];
impermanence.enable = true;
networking.hostname = "xmupc1";
};
hardware =
{
cpus = [ "amd" ];
gpus = [ "nvidia" ];
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
gamemode.drmDevice = 1;
};
packages.packageSet = "workstation";
virtualization = { docker.enable = true; kvmHost = { enable = true; gui = true; }; };
services =
{
snapper.enable = true;
fontconfig.enable = true;
samba =
{
enable = true;
private = true;
hostsAllowed = "192.168. 127.";
shares =
{
media.path = "/run/media/chn";
home.path = "/home/chn";
mnt.path = "/mnt";
share.path = "/home/chn/share";
};
};
sshd.enable = true;
xrayClient =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
firewall.trustedInterfaces = [ "virbr0" "waydroid0" ];
acme = { enable = true; cert."debug.mirism.one" = {}; };
smartd.enable = true;
beesd = { enable = true; instances.root = { device = "/nix/persistent"; hashTableSizeMB = 2048; }; };
wireguard =
{
enable = true;
peers = [ "vps6" ];
publicKey = "JEY7D4ANfTpevjXNvGDYO6aGwtBGRXsf/iwNwjwDRQk=";
wireguardIp = "192.168.83.5";
};
};
bugs = [ "xmunet" "firefox" ];
};
}; };
in builtins.listToAttrs (builtins.map })
(system: [ "pc" "vps6" "vps7" "nas" "surface" "xmupc1" ]);
{
name = system.name;
value = inputs.nixpkgs.lib.nixosSystem
{
system = "x86_64-linux";
specialArgs = { topInputs = inputs; inherit localLib; };
modules = localLib.mkModules
[
(inputs: { config.nixpkgs.overlays = [(final: prev:
{ localPackages = (import ./local/pkgs { inherit (inputs) lib; pkgs = final; }); })]; })
./modules
{ config.nixos = system.value; }
];
};
})
(localLib.attrsToList system));
# sudo HTTPS_PROXY=socks5://127.0.0.1:10884 nixos-install --flake .#bootstrap --option substituters http://127.0.0.1:5000 --option require-sigs false --option system-features gccarch-silvermont # sudo HTTPS_PROXY=socks5://127.0.0.1:10884 nixos-install --flake .#bootstrap --option substituters http://127.0.0.1:5000 --option require-sigs false --option system-features gccarch-silvermont
# nix-serve -p 5000 # nix-serve -p 5000
# nix copy --substitute-on-destination --to ssh://server /run/current-system # nix copy --substitute-on-destination --to ssh://server /run/current-system
@@ -656,10 +146,11 @@
inputs.self.nixosConfigurations.${node}; inputs.self.nixosConfigurations.${node};
}; };
}) })
[ "vps6" "vps7" "nas" "yoga" ]); [ "vps6" "vps7" "nas" "surface" ]);
}; };
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks inputs.self.deploy) inputs.deploy-rs.lib; checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks inputs.self.deploy) inputs.deploy-rs.lib;
overlays.default = final: prev: overlays.default = final: prev:
{ localPackages = (import ./local/pkgs { inherit (inputs) lib; pkgs = final; }); }; { localPackages = (import ./local/pkgs { inherit (inputs) lib; pkgs = final; }); };
config.archive = false;
}; };
} }

View File

@@ -1,6 +1,6 @@
lib: lib:
{ {
attrsToList = Attrs: builtins.map ( name: { inherit name; value = Attrs.${name}; } ) ( builtins.attrNames Attrs ); attrsToList = attrs: builtins.map (name: { inherit name; value = attrs.${name}; }) (builtins.attrNames attrs);
mkConditional = condition: trueResult: falseResult: let inherit (lib) mkMerge mkIf; in mkConditional = condition: trueResult: falseResult: let inherit (lib) mkMerge mkIf; in
mkMerge [ ( mkIf condition trueResult ) ( mkIf (!condition) falseResult ) ]; mkMerge [ ( mkIf condition trueResult ) ( mkIf (!condition) falseResult ) ];

View File

@@ -0,0 +1,11 @@
{ stdenv, src }: stdenv.mkDerivation
{
name = "blurred-wallpaper";
inherit src;
phases = [ "installPhase" ];
installPhase =
''
mkdir -p $out/share/plasma/wallpapers/a2n.blur
cp -r $src/* $out/share/plasma/wallpapers/a2n.blur
'';
}

View File

@@ -1,22 +1,14 @@
{ stdenvNoCC, texlive, fetchFromGitHub }: stdenvNoCC.mkDerivation (finalAttrs: rec { stdenvNoCC, texlive, src }: stdenvNoCC.mkDerivation (finalAttrs:
{ {
pname = "citation-style-language"; name = "citation-style-language";
version = "0.4.5"; inherit src;
passthru = { passthru =
{
pkgs = [ finalAttrs.finalPackage ]; pkgs = [ finalAttrs.finalPackage ];
tlDeps = with texlive; [ latex ]; tlDeps = with texlive; [ latex ];
tlType = "run"; tlType = "run";
}; };
src = fetchFromGitHub
{
owner = "zepinglee";
repo = "citeproc-lua";
rev = "v${version}";
sha256 = "XH+GH+t/10hr4bfaod8F9JPxmBnAQlDmpSvQNDQsslM=";
fetchSubmodules = true;
};
nativeBuildInputs = [ texlive.combined.scheme-full ]; nativeBuildInputs = [ texlive.combined.scheme-full ];
dontConfigure = true; dontConfigure = true;
dontBuild = true; dontBuild = true;

View File

@@ -1,13 +1,6 @@
{ stdenv, fetchFromGitHub, cmake }: stdenv.mkDerivation rec { stdenv, cmake, src }: stdenv.mkDerivation
{ {
pname = "concurrencpp"; name = "concurrencpp";
version = "0.1.7"; inherit src;
src = fetchFromGitHub
{
owner = "David-Haim";
repo = "concurrencpp";
rev = "v.${version}";
sha256 = "4qT29YVjKEWcMrI5R5Ps8aD4grAAgz5VOxANjpp1oTo=";
};
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
} }

View File

@@ -1,13 +1,7 @@
{ stdenv, fetchFromGitHub, cmake }: stdenv.mkDerivation { stdenv, cmake, src }: stdenv.mkDerivation
{ {
name = "cppcoro"; name = "cppcoro";
src = fetchFromGitHub inherit src;
{
owner = "Garcia6l20";
repo = "cppcoro";
rev = "e1d53e620b0eee828915ada179cd7ca8e66ca855";
sha256 = "luBkf1x5kqXaVbQM01yWRmA5QvrQNZkFVCjRctJdnXc=";
};
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
patches = [ ./cppcoro-include-utility.patch ]; patches = [ ./cppcoro-include-utility.patch ];
} }

View File

@@ -1,18 +1,13 @@
{ stdenv, fetchFromGitHub }: stdenv.mkDerivation { stdenv, src }: stdenv.mkDerivation
{ {
name = "date"; name = "date";
src = fetchFromGitHub inherit src;
{
owner = "HowardHinnant";
repo = "date";
rev = "cc4685a21e4a4fdae707ad1233c61bbaff241f93";
sha256 = "KilhBEeLMvHtS76Gu0UhzE8lhS1+sCwQ1UL4pswKXTs=";
};
phases = [ "installPhase" ]; phases = [ "installPhase" ];
installPhase = installPhase =
'' ''
runHook preInstall runHook preInstall
mkdir -p $out mkdir -p $out
cp -r $src/{include,src} $out cp -r $src/{include,src} $out
runHook postInstall
''; '';
} }

View File

@@ -1,10 +1,10 @@
{ lib, pkgs }: with pkgs; rec { lib, pkgs, topInputs }: with pkgs; rec
{ {
typora = callPackage ./typora {}; typora = callPackage ./typora {};
vesta = callPackage ./vesta {}; vesta = callPackage ./vesta {};
oneapi = callPackage ./oneapi {}; oneapi = callPackage ./oneapi {};
rsshub = callPackage ./rsshub {}; rsshub = callPackage ./rsshub { src = topInputs.rsshub; };
misskey = callPackage ./misskey { nodejs = nodejs_21; }; misskey = callPackage ./misskey { nodejs = nodejs_21; src = topInputs.misskey; };
mk-meili-mgn = callPackage ./mk-meili-mgn {}; mk-meili-mgn = callPackage ./mk-meili-mgn {};
# vasp = callPackage ./vasp # vasp = callPackage ./vasp
# { # {
@@ -18,31 +18,35 @@
openmpi = pkgs.openmpi.override { cudaSupport = false; }; openmpi = pkgs.openmpi.override { cudaSupport = false; };
}; };
vaspkit = callPackage ./vaspkit { attrsToList = (import ../lib lib).attrsToList; }; vaspkit = callPackage ./vaspkit { attrsToList = (import ../lib lib).attrsToList; };
v_sim = callPackage ./v_sim {}; v-sim = callPackage ./v-sim { src = topInputs.v-sim; };
concurrencpp = callPackage ./concurrencpp { stdenv = gcc13Stdenv; }; concurrencpp = callPackage ./concurrencpp { stdenv = gcc13Stdenv; src = topInputs.concurrencpp; };
eigengdb = python3Packages.callPackage ./eigengdb {}; eigengdb = python3Packages.callPackage ./eigengdb {};
nodesoup = callPackage ./nodesoup {}; nodesoup = callPackage ./nodesoup { src = topInputs.nodesoup; };
matplotplusplus = callPackage ./matplotplusplus { inherit nodesoup glad; }; matplotplusplus = callPackage ./matplotplusplus { inherit nodesoup glad; src = topInputs.matplotplusplus; };
zpp-bits = callPackage ./zpp-bits {}; zpp-bits = callPackage ./zpp-bits { src = topInputs.zpp-bits; };
eigen = callPackage ./eigen {}; eigen = callPackage ./eigen { src = topInputs.eigen; };
nameof = callPackage ./nameof {}; nameof = callPackage ./nameof { src = topInputs.nameof; };
pslist = callPackage ./pslist {}; pslist = callPackage ./pslist {};
glad = callPackage ./glad {}; glad = callPackage ./glad {};
chromiumos-touch-keyboard = callPackage ./chromiumos-touch-keyboard {}; chromiumos-touch-keyboard = callPackage ./chromiumos-touch-keyboard {};
yoga-support = callPackage ./yoga-support {}; yoga-support = callPackage ./yoga-support {};
tgbot-cpp = callPackage ./tgbot-cpp {}; tgbot-cpp = callPackage ./tgbot-cpp { src = topInputs.tgbot-cpp; };
biu = callPackage ./biu { inherit concurrencpp tgbot-cpp nameof; stdenv = gcc13Stdenv; }; biu = callPackage ./biu { inherit concurrencpp tgbot-cpp nameof; stdenv = gcc13Stdenv; };
citation-style-language = callPackage ./citation-style-language {}; citation-style-language = callPackage ./citation-style-language { src = topInputs.citation-style-language; };
mirism = callPackage ./mirism mirism = callPackage ./mirism
{ {
inherit cppcoro nameof tgbot-cpp date; inherit cppcoro nameof tgbot-cpp date;
nghttp2 = nghttp2-2305.override { enableAsioLib = true; }; nghttp2 = nghttp2-2305.override { enableAsioLib = true; };
}; };
cppcoro = callPackage ./cppcoro {}; cppcoro = callPackage ./cppcoro { src = topInputs.cppcoro; };
date = callPackage ./date {}; date = callPackage ./date { src = topInputs.date; };
esbonio = python3Packages.callPackage ./esbonio {}; esbonio = python3Packages.callPackage ./esbonio {};
pix2tex = python3Packages.callPackage ./pix2tex {}; pix2tex = python3Packages.callPackage ./pix2tex {};
pyreadline3 = python3Packages.callPackage ./pyreadline3 {}; pyreadline3 = python3Packages.callPackage ./pyreadline3 {};
torchdata = python3Packages.callPackage ./torchdata {}; torchdata = python3Packages.callPackage ./torchdata {};
torchtext = python3Packages.callPackage ./torchtext { inherit torchdata; }; torchtext = python3Packages.callPackage ./torchtext { inherit torchdata; };
win11os-kde = callPackage ./win11os-kde { src = topInputs.win11os-kde; };
fluent-kde = callPackage ./fluent-kde { src = topInputs.fluent-kde; };
blurred-wallpaper = callPackage ./blurred-wallpaper { src = topInputs.blurred-wallpaper; };
slate = callPackage ./slate { src = topInputs.slate; };
} }

View File

@@ -1,12 +1,6 @@
{ lib, stdenv, fetchFromGitLab, cmake }: stdenv.mkDerivation rec { lib, stdenv, cmake, src }: stdenv.mkDerivation
{ {
name = "eigen"; name = "eigen";
src = fetchFromGitLab inherit src;
{
owner = "libeigen";
repo = name;
rev = "6d829e766ff1b1ab867d93631163cbc63ed5798f";
sha256 = "BXUnizcRPrOyiPpoyYJ4VVOjlG49aj80mgzPKmEYPKU=";
};
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
} }

View File

@@ -1,11 +1,11 @@
{ lib, fetchPypi, buildPythonPackage }: buildPythonPackage rec { lib, fetchPypi, buildPythonPackage }: buildPythonPackage rec
{ {
pname = "esbonio"; pname = "esbonio";
version = "0.16.3"; version = "0.16.4";
src = fetchPypi src = fetchPypi
{ {
inherit pname version; inherit pname version;
sha256 = "1ggxdzl95fy0zxpyd1pcylhif1x604wk4wy7sv9322hc84b708zx"; sha256 = "1MBNBLCEBD6HtlxEASc4iZaXYyNdih2MIHoxK84jMdI=";
}; };
doCheck = false; doCheck = false;
} }

View File

@@ -0,0 +1,22 @@
{ lib, stdenv, src }: stdenv.mkDerivation
{
name = "fluent-kde";
inherit src;
installPhase =
''
mkdir -p $out/share/aurorae/themes
cp -r $src/aurorae/* $out/share/aurorae/themes
mkdir -p $out/share/color-schemes
cp -r $src/color-schemes/*.colors $out/share/color-schemes
mkdir -p $out/share/Kvantum
cp -r $src/Kvantum/Fluent* $out/share/Kvantum
mkdir -p $out/share/plasma/desktoptheme
cp -r $src/plasma/desktoptheme/* $out/share/plasma/desktoptheme
mkdir -p $out/share/plasma/layout-templates
cp -r $src/plasma/layout-templates/* $out/share/plasma/layout-templates
mkdir -p $out/share/plasma/look-and-feel
cp -r $src/plasma/look-and-feel/com.github.vinceliuice.Fluent* $out/share/plasma/look-and-feel
mkdir -p $out/share/wallpapers
cp -r $src/wallpaper/* $out/share/wallpapers
'';
}

View File

@@ -1,17 +1,10 @@
{ {
stdenv, fetchFromGitHub, cmake, pkg-config, substituteAll, stdenv, src, cmake, pkg-config, substituteAll,
gnuplot, libjpeg, libtiff, zlib, libpng, lapack, blas, fftw, opencv, nodesoup, cimg, glfw, libGL, python3, glad gnuplot, libjpeg, libtiff, zlib, libpng, lapack, blas, fftw, opencv, nodesoup, cimg, glfw, libGL, python3, glad
}: stdenv.mkDerivation }: stdenv.mkDerivation
{ {
pname = "matplotplusplus"; name = "matplotplusplus";
version = "1.2.0"; inherit src;
src = fetchFromGitHub
{
owner = "alandefreitas";
repo = "matplotplusplus";
rev = "a40344efa9dc5ea0c312e6e9ef4eb7238d98dc12";
sha256 = "6/dH/Rl2aAb8b+Ji5LwzkC+GWPOCBnYCrjy0qk8u/+I=";
};
cmakeFlags = cmakeFlags =
[ [
"-DBUILD_SHARED_LIBS=ON" "-DMATPLOTPP_BUILD_SHARED_LIBS=ON" "-DMATPLOTPP_BUILD_EXAMPLES=OFF" "-DBUILD_SHARED_LIBS=ON" "-DMATPLOTPP_BUILD_SHARED_LIBS=ON" "-DMATPLOTPP_BUILD_EXAMPLES=OFF"

View File

@@ -8,7 +8,7 @@
src = requireFile src = requireFile
{ {
inherit name; inherit name;
sha256 = "1q3f4q4ln9dz68dfc35jybgv861f7acqiiykkm7jxviz8jdgn8c7"; sha256 = "0f50pvdafhlmrlbf341mkp9q50v4ld5pbx92d2w1633f18zghbzf";
hashMode = "recursive"; hashMode = "recursive";
message = "Source file not found."; message = "Source file not found.";
}; };

View File

@@ -1,21 +1,12 @@
{ {
lib, stdenv, mkPnpmPackage, fetchFromGitHub, fetchurl, nodejs, writeShellScript, buildFHSEnv, lib, stdenv, mkPnpmPackage, fetchurl, nodejs, writeShellScript, buildFHSEnv,
bash, cypress, vips, pkg-config bash, cypress, vips, pkg-config, src
}: }:
let let
pname = "misskey"; name = "misskey";
version = "2023.12.2";
src = fetchFromGitHub
{
owner = "CHN-beta";
repo = "misskey";
rev = "cd1d0ab06eb6b7e06afdfae9a12b2d2829564229";
hash = "sha256-sKEZ1ZpyA/02CNwiOMIOS5f/csx6ELDwCVJYc+oMChM=";
fetchSubmodules = true;
};
originalPnpmPackage = mkPnpmPackage originalPnpmPackage = mkPnpmPackage
{ {
inherit pname version src nodejs; inherit name src nodejs;
copyPnpmStore = true; copyPnpmStore = true;
}; };
startScript = writeShellScript "misskey" startScript = writeShellScript "misskey"
@@ -28,7 +19,7 @@ let
in in
stdenv.mkDerivation rec stdenv.mkDerivation rec
{ {
inherit version src pname; inherit src name;
buildInputs = buildInputs =
[ [
bash nodejs nodejs.pkgs.typescript nodejs.pkgs.pnpm nodejs.pkgs.gulp cypress vips pkg-config bash nodejs nodejs.pkgs.typescript nodejs.pkgs.pnpm nodejs.pkgs.gulp cypress vips pkg-config

View File

@@ -1,14 +1,7 @@
{ lib, stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { lib, stdenv, src }: stdenv.mkDerivation
{ {
pname = "nameof"; name = "nameof";
version = "0.10.3"; inherit src;
src = fetchFromGitHub
{
owner = "Neargye";
repo = pname;
rev = "v${version}";
sha256 = "eHG0Y/BQGbwTrBHjq9SeSiIXaVqWp7PxIq7vCIECYPk=";
};
phases = [ "installPhase" ]; phases = [ "installPhase" ];
installPhase = installPhase =
'' ''

View File

@@ -1,13 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkg-config, cairo, pcre2, xorg }: stdenv.mkDerivation rec { stdenv, src, cmake, pkg-config, cairo, pcre2, xorg }: stdenv.mkDerivation
{ {
name = "nodesoup"; name = "nodesoup";
src = fetchFromGitHub inherit src;
{
owner = "olvb";
repo = "nodesoup";
rev = "3158ad082bb0cd1abee75418b12b35522dbca74f";
sha256 = "tFLq6QC3U3uvcuWsdRy2wnwcmAfH2MkI2oMcAiUBHSo=";
};
buildInputs = [ cairo pcre2.dev xorg.libXdmcp.dev ]; buildInputs = [ cairo pcre2.dev xorg.libXdmcp.dev ];
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
} }

View File

@@ -1,16 +1,9 @@
{ {
lib, stdenv, mkPnpmPackage, fetchFromGitHub, nodejs, writeShellScript, lib, stdenv, mkPnpmPackage, nodejs, writeShellScript,
chromium, bash chromium, bash, src
}: }:
let let
name = "rsshub"; name = "rsshub";
src = fetchFromGitHub
{
owner = "DIYgod";
repo = "RSSHub";
rev = "38a5b0c193bf77d71c4eea33db6e76bc8b565d0b";
hash = "sha256-gJsT9W2fFiy2IG89E5th49DpBHsPMfsdONyzAKDG48c=";
};
originalPnpmPackage = mkPnpmPackage { inherit name src nodejs; }; originalPnpmPackage = mkPnpmPackage { inherit name src nodejs; };
nodeModules = originalPnpmPackage.nodeModules.overrideAttrs { PUPPETEER_SKIP_DOWNLOAD = true; }; nodeModules = originalPnpmPackage.nodeModules.overrideAttrs { PUPPETEER_SKIP_DOWNLOAD = true; };
rsshub-unwrapped = stdenv.mkDerivation rsshub-unwrapped = stdenv.mkDerivation

View File

@@ -0,0 +1,10 @@
{ stdenv, src }: stdenv.mkDerivation
{
name = "slate";
src = "${src}/Slate.tar.gz";
installPhase =
''
mkdir -p $out/share/yakuake/skins/Slate
cp -r * $out/share/yakuake/skins/Slate
'';
}

View File

@@ -1,14 +1,7 @@
{ stdenv, fetchFromGitHub, cmake, pkg-config, boost, openssl, zlib, curl }: stdenv.mkDerivation rec { stdenv, src, cmake, pkg-config, boost, openssl, zlib, curl }: stdenv.mkDerivation rec
{ {
pname = "tgbot-cpp"; name = "tgbot-cpp";
version = "1.7.2"; inherit src;
src = fetchFromGitHub
{
owner = "reo7sp";
repo = "tgbot-cpp";
rev = "v${version}";
sha256 = "TKirSxEUqFB1WtzNEfU4EJK3p7V5xcFIvA2+QVX7TlA=";
};
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [ boost openssl zlib curl.dev ]; buildInputs = [ boost openssl zlib curl.dev ];
propagatedBuildInputs = buildInputs; propagatedBuildInputs = buildInputs;

View File

@@ -3,11 +3,11 @@ let
typora-dist = stdenv.mkDerivation rec typora-dist = stdenv.mkDerivation rec
{ {
pname = "typora-dist"; pname = "typora-dist";
version = "1.7.6"; version = "1.8.2-dev";
src = fetchurl src = fetchurl
{ {
url = "https://download.typora.io/linux/typora_${version}_amd64.deb"; url = "https://download.typora.io/linux/typora_${version}_amd64.deb";
sha256 = "19xgv83zk3mhniswwrb341sr9j4sb9pqy47jamrmkc3w8famxpd3"; sha256 = "0abi9m8h8k0228ajag26lxk756a7aqqixg608k85gnkdmibnq6mv";
}; };
dontFixup = true; dontFixup = true;

View File

@@ -1,19 +1,12 @@
{ {
stdenv, lib, fetchFromGitLab, stdenv, lib, src,
wrapGAppsHook, autoreconfHook, autoconf, libtool, intltool, gettext, automake, gtk-doc, pkg-config, gfortran, libxslt, wrapGAppsHook, autoreconfHook, autoconf, libtool, intltool, gettext, automake, gtk-doc, pkg-config, gfortran, libxslt,
glib, gtk3, epoxy, libyaml glib, gtk3, epoxy, libyaml
}: }:
stdenv.mkDerivation stdenv.mkDerivation
{ {
pname = "v_sim"; name = "v-sim";
version = "3.8.0_p20230824"; inherit src;
src = fetchFromGitLab
{
owner = "l_sim";
repo = "v_sim";
rev = "8abc67b56795c19a8e2357d442b556c71d2441cb";
sha256 = "KQNd3BGvkZVsfIPVLEEMBptiFQYeCbWGR28ds2Y+w2Y=";
};
buildInputs = [ glib gtk3 epoxy libyaml ]; buildInputs = [ glib gtk3 epoxy libyaml ];
nativeBuildInputs = nativeBuildInputs =
[ [

View File

@@ -0,0 +1,20 @@
{ lib, stdenv, src }: stdenv.mkDerivation
{
name = "win11os-kde";
inherit src;
installPhase =
''
mkdir -p $out/share/aurorae/themes
cp -r $src/aurorae/* $out/share/aurorae/themes
mkdir -p $out/share/color-schemes
cp -r $src/color-schemes/*.colors $out/share/color-schemes
mkdir -p $out/share/Kvantum
cp -r $src/Kvantum/* $out/share/Kvantum
mkdir -p $out/share/plasma/desktoptheme
cp -r $src/plasma/desktoptheme/* $out/share/plasma/desktoptheme
mkdir -p $out/share/plasma/look-and-feel
cp -r $src/plasma/look-and-feel/* $out/share/plasma/look-and-feel
mkdir -p $out/share/wallpapers
cp -r $src/wallpaper/* $out/share/wallpapers
'';
}

View File

@@ -1,14 +1,7 @@
{ stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { stdenv, src }: stdenv.mkDerivation
{ {
pname = "zpp-bits"; inherit src;
version = "4.4.19"; name = "zpp-bits";
src = fetchFromGitHub
{
owner = "eyalz800";
repo = "zpp_bits";
rev = "v${version}";
sha256 = "ejIwrvCFALuBQbQhTfzjBb11oMR/akKnboB60GWbjlQ=";
};
phases = [ "installPhase" ]; phases = [ "installPhase" ];
installPhase = installPhase =
'' ''

View File

@@ -79,6 +79,8 @@ inputs:
}; };
firefox.programs.firefox.enable = inputs.lib.mkForce false; firefox.programs.firefox.enable = inputs.lib.mkForce false;
power.boot.kernelParams = [ "cpufreq.default_governor=powersave" ]; power.boot.kernelParams = [ "cpufreq.default_governor=powersave" ];
backlight.boot.kernelParams = [ "nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1" ];
amdpstate.boot.kernelParams = [ "amd_pstate=active" ];
}; };
in in
{ {

View File

@@ -37,6 +37,7 @@ inputs:
# needed by mirism # needed by mirism
nghttp2-2305 = nghttp2-2305 =
inputs.pkgs.callPackage "${inputs.topInputs.nixpkgs-2305}/pkgs/development/libraries/nghttp2" {}; inputs.pkgs.callPackage "${inputs.topInputs.nixpkgs-2305}/pkgs/development/libraries/nghttp2" {};
firefox-addons = (import "${topInputs.rycee}" { inherit (prev) pkgs; }).firefox-addons;
}) })
]; ];
home-manager.sharedModules = home-manager.sharedModules =

View File

@@ -1,6 +1,6 @@
inputs: inputs:
{ {
imports = inputs.localLib.mkModules [ ./legion.nix ]; imports = inputs.localLib.mkModules [ ./gpu.nix ./legion.nix ];
options.nixos.hardware = let inherit (inputs.lib) mkOption types; in options.nixos.hardware = let inherit (inputs.lib) mkOption types; in
{ {
bluetooth.enable = mkOption { type = types.bool; default = false; }; bluetooth.enable = mkOption { type = types.bool; default = false; };
@@ -8,14 +8,6 @@ inputs:
printer.enable = mkOption { type = types.bool; default = false; }; printer.enable = mkOption { type = types.bool; default = false; };
sound.enable = mkOption { type = types.bool; default = false; }; sound.enable = mkOption { type = types.bool; default = false; };
cpus = mkOption { type = types.listOf (types.enum [ "intel" "amd" ]); default = []; }; cpus = mkOption { type = types.listOf (types.enum [ "intel" "amd" ]); default = []; };
gpus = mkOption { type = types.listOf (types.enum [ "intel" "nvidia" "amd" ]); default = []; };
prime =
{
enable = mkOption { type = types.bool; default = false; };
mode = mkOption { type = types.enum [ "offload" "sync" ]; default = "offload"; };
busId = mkOption { type = types.attrsOf types.str; default = {}; };
};
gamemode.drmDevice = mkOption { type = types.int; default = 0; };
halo-keyboard.enable = mkOption { type = types.bool; default = false; }; halo-keyboard.enable = mkOption { type = types.bool; default = false; };
}; };
config = config =
@@ -82,77 +74,6 @@ inputs:
concatLists (map (cpu: modules.${cpu}) hardware.cpus); concatLists (map (cpu: modules.${cpu}) hardware.cpus);
} }
) )
# gpus
(
mkIf (hardware.gpus != [])
{
boot.initrd.availableKernelModules =
let
modules =
{
intel = [ "i915" ];
nvidia = [ "nvidia" "nvidia_drm" "nvidia_modeset" "nvidia_uvm" ];
amd = [ "amdgpu" ];
};
in
concatLists (map (gpu: modules.${gpu}) hardware.gpus);
hardware =
{
opengl =
{
enable = true;
driSupport = true;
extraPackages =
with inputs.pkgs;
let
packages =
{
intel = [ intel-compute-runtime intel-media-driver libvdpau-va-gl ]; # intel-vaapi-driver
nvidia = [ vaapiVdpau ];
amd = [];
};
in
concatLists (map (gpu: packages.${gpu}) hardware.gpus);
driSupport32Bit = true;
};
nvidia = mkIf (builtins.elem "nvidia" hardware.gpus)
{
modesetting.enable = true;
nvidiaSettings = true;
};
};
}
)
(mkIf (builtins.elem "intel" hardware.gpus) { services.xserver.deviceSection = ''Driver "modesetting"''; })
# prime
(
mkIf hardware.prime.enable
{
hardware.nvidia = mkMerge
[
(
mkIf (hardware.prime.mode == "offload")
{
prime.offload = { enable = true; enableOffloadCmd = true; };
powerManagement = { finegrained = true; enable = true; };
}
)
(
mkIf (hardware.prime.mode == "sync")
{
prime = { sync.enable = true; };
# prime.forceFullCompositionPipeline = true;
}
)
{
prime = listToAttrs
(map (gpu: { inherit (gpu) value; name = "${gpu.name}BusId"; }) (attrsToList hardware.prime.busId));
}
];
}
)
{ programs.gamemode.settings.gpu.gpu_device = "${toString hardware.gamemode.drmDevice}"; }
# halo-keyboard # halo-keyboard
(mkIf hardware.halo-keyboard.enable (mkIf hardware.halo-keyboard.enable
( (

80
modules/hardware/gpu.nix Normal file
View File

@@ -0,0 +1,80 @@
inputs:
{
options.nixos.hardware.gpu = let inherit (inputs.lib) mkOption types; in
{
type = mkOption
{
type = types.nullOr (types.enum
[
# single gpu
"intel" "nvidia" "amd"
# hibrid gpu: use nvidia prime offload mode
"intel+nvidia" "amd+nvidia"
]);
default = null;
};
prime.busId = mkOption { type = types.attrsOf types.nonEmptyStr; default = {}; };
};
config = let inherit (inputs.config.nixos.hardware) gpu; in inputs.lib.mkIf (gpu.type != null) (inputs.lib.mkMerge
[
# generic settings
(
let gpus = inputs.lib.strings.splitString "+" gpu.type; in
{
boot.initrd.availableKernelModules =
let modules =
{
intel = [ "i915" ];
nvidia = [ "nvidia" "nvidia_drm" "nvidia_modeset" "nvidia_uvm" ];
amd = [ "amdgpu" ];
};
in builtins.concatLists (builtins.map (gpu: modules.${gpu}) gpus);
hardware =
{
opengl =
{
enable = true;
driSupport = true;
driSupport32Bit = true;
extraPackages =
let packages = with inputs.pkgs;
{
intel = [ intel-vaapi-driver libvdpau-va-gl intel-media-driver ];
nvidia = [ vaapiVdpau ];
amd = [ amdvlk rocmPackages.clr rocmPackages.clr.icd ];
};
in builtins.concatLists (builtins.map (gpu: packages.${gpu}) gpus);
extraPackages32 =
let packages = { intel = []; nvidia = []; amd = [ inputs.pkgs.driversi686Linux.amdvlk ]; };
in builtins.concatLists (builtins.map (gpu: packages.${gpu}) gpus);
};
nvidia = inputs.lib.mkIf (builtins.elem "nvidia" gpus)
{
modesetting.enable = true;
powerManagement.enable = true;
dynamicBoost.enable = true;
nvidiaSettings = true;
# package = inputs.config.boot.kernelPackages.nvidiaPackages.production;
};
};
boot.kernelParams = inputs.lib.mkIf (builtins.elem "amd" gpus)
[ "radeon.cik_support=0" "amdgpu.cik_support=1" "radeon.si_support=0" "amdgpu.si_support=1" "iommu=pt" ];
environment.variables.VDPAU_DRIVER = inputs.lib.mkIf (builtins.elem "intel" gpus) "va_gl";
services.xserver.videoDrivers =
let driver = { intel = "modesetting"; amd = "amdgpu"; nvidia = "nvidia"; };
in builtins.map (gpu: driver.${gpu}) gpus;
}
)
# nvidia prime offload
(
inputs.lib.mkIf (inputs.lib.strings.hasSuffix "+nvidia" gpu.type) { hardware.nvidia =
{
prime = { offload = { enable = true; enableOffloadCmd = true; }; }
// builtins.listToAttrs (builtins.map
(gpu: { name = "${if gpu.name == "amd" then "amdgpu" else gpu.name}BusId"; value = "PCI:${gpu.value}"; })
(inputs.localLib.attrsToList gpu.prime.busId));
powerManagement.finegrained = true;
};}
)
]);
}

View File

@@ -17,7 +17,7 @@ inputs:
_packages = _packages =
[ [
# system management # system management
etcher btrfs-assistant snapper-gui libsForQt5.qtstyleplugin-kvantum etcher btrfs-assistant snapper-gui libsForQt5.qtstyleplugin-kvantum ventoy-full
# password and key management # password and key management
yubikey-manager yubikey-manager-qt yubikey-personalization yubikey-personalization-gui bitwarden yubikey-manager yubikey-manager-qt yubikey-personalization yubikey-personalization-gui bitwarden
# download # download
@@ -25,7 +25,8 @@ inputs:
# development # development
scrcpy weston cage openbox krita scrcpy weston cage openbox krita
# media # media
spotify yesplaymusic simplescreenrecorder imagemagick gimp netease-cloud-music-gtk vlc spotify yesplaymusic simplescreenrecorder imagemagick gimp netease-cloud-music-gtk vlc obs-studio
waifu2x-converter-cpp inkscape blender
# editor # editor
localPackages.typora localPackages.typora
# themes # themes
@@ -33,13 +34,17 @@ inputs:
# news # news
fluent-reader fluent-reader
# nix tools # nix tools
deploy-rs.deploy-rs nixpkgs-fmt deploy-rs.deploy-rs nixpkgs-fmt appimage-run nixd nix-serve node2nix nix-prefetch-github prefetch-npm-deps
nix-prefetch-docker
# instant messager # instant messager
element-desktop telegram-desktop discord fluffychat element-desktop telegram-desktop discord fluffychat zoom-us signal-desktop slack nur-linyinfeng.wemeet
# browser # browser
google-chrome google-chrome
# office # office
crow-translate zotero pandoc ydict crow-translate zotero pandoc ydict libreoffice-qt texstudio poppler_utils pdftk gnuplot pdfchain hdfview
(texlive.combine { inherit (texlive) scheme-full; inherit (localPackages) citation-style-language; })
# math, physics and chemistry
octaveFull root ovito localPackages.vesta localPackages.vaspkit localPackages.v-sim
] ++ (with inputs.lib; filter isDerivation (attrValues plasma5Packages.kdeGear)); ] ++ (with inputs.lib; filter isDerivation (attrValues plasma5Packages.kdeGear));
}; };
}; };

View File

@@ -1,6 +1,6 @@
inputs: inputs:
{ {
imports = inputs.localLib.mkModules [ ./vscode.nix ]; imports = inputs.localLib.mkModules [ ./vscode.nix ./firefox.nix ];
config = config =
let let
inherit (inputs.lib) mkIf; inherit (inputs.lib) mkIf;
@@ -11,36 +11,46 @@ inputs:
packages._packages = with inputs.pkgs; packages._packages = with inputs.pkgs;
[ [
# system management # system management
gparted wl-clipboard-x11 kio-fuse gparted kio-fuse wayland-utils clinfo glxinfo vulkan-tools dracut
wayland-utils clinfo glxinfo vulkan-tools dracut (
writeShellScriptBin "xclip"
''
#!${bash}/bin/bash
if [ "$XDG_SESSION_TYPE" = "x11" ]; then
exec ${xclip}/bin/xclip "$@"
else
exec ${wl-clipboard-x11}/bin/xclip "$@"
fi
''
)
# color management
argyllcms xcalib
# networking # networking
remmina putty mtr-gui remmina putty mtr-gui
# media # media
mpv nomacs mpv nomacs
# themes # themes
tela-circle-icon-theme tela-circle-icon-theme localPackages.win11os-kde localPackages.fluent-kde localPackages.blurred-wallpaper
firefoxpwa localPackages.slate utterly-nord-plasma
]; ];
users.sharedModules = users.sharedModules =
[{ [(homeInputs: {
config.home.file.".config/baloofilerc".text = config.home.file = mkIf (!homeInputs.config.programs.plasma.enable)
'' {
[Basic Settings] ".config/baloofilerc".text =
Indexing-Enabled=false ''
''; [Basic Settings]
}]; Indexing-Enabled=false
'';
};
})];
}; };
programs = programs =
{ {
adb.enable = true; adb.enable = true;
wireshark = { enable = true; package = inputs.pkgs.wireshark; }; wireshark = { enable = true; package = inputs.pkgs.wireshark; };
firefox =
{
enable = true;
languagePacks = [ "zh-CN" "en-US" ];
nativeMessagingHosts.packages = [ inputs.pkgs.firefoxpwa ];
};
vim.package = inputs.pkgs.vim-full; vim.package = inputs.pkgs.vim-full;
yubikey-touch-detector.enable = true;
}; };
nixpkgs.config.packageOverrides = pkgs: nixpkgs.config.packageOverrides = pkgs:
{ {

View File

@@ -0,0 +1,58 @@
inputs:
{
config = inputs.lib.mkIf (builtins.elem "desktop" inputs.config.nixos.packages._packageSets)
{
nixos.users.sharedModules = [{ config =
{
programs.firefox =
{
enable = true;
# TODO: switch to 24.05
# nativeMessagingHosts = [ inputs.pkgs.plasma-browser-integration ];
package = inputs.pkgs.firefox.override { nativeMessagingHosts = [ inputs.pkgs.plasma-browser-integration ]; };
policies.DefaultDownloadDirectory = "\${home}/Downloads";
profiles.default =
{
extensions = with inputs.pkgs.firefox-addons;
[
immersive-translate tampermonkey bitwarden cookies-txt dualsub firefox-color i-dont-care-about-cookies
metamask pakkujs switchyomega rsshub-radar rsspreview tabliss tree-style-tab ublock-origin wallabagger
wappalyzer grammarly
(
buildFirefoxXpiAddon
{
pname = "zotero-connector";
version = "5.0.114";
addonId = "zotero@chnm.gmu.edu";
url = "https://download.zotero.org/connector/firefox/release/Zotero_Connector-5.0.114.xpi";
sha256 = "1g9d991m4vfj5x6r86sw754bx7r4qi8g5ddlqp7rcw6wrgydhrhw";
meta = {};
}
)
];
search = { default = "Google"; force = true; };
userChrome = builtins.concatStringsSep "\n" (builtins.map
(file: builtins.readFile "${inputs.topInputs.cascade}/chrome/includes/cascade-${file}.css")
[ "config-mouse" "colours" "layout" "responsive" "floating-panel" "nav-bar" "tabs" ]);
settings =
{
# general
"browser.search.region" = "CN";
"intl.locale.requested" = "zh-CN,en-US";
"browser.aboutConfig.showWarning" = false;
"browser.bookmarks.showMobileBookmarks" = true;
"browser.download.panel.shown" = true;
"browser.download.useDownloadDir" = true;
"browser.newtab.extensionControlled" = true;
"browser.toolbars.bookmarks.visibility" = "never";
# allow to apply userChrome.css
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
};
};
home.file.".mozilla/firefox/profiles.ini".force = true;
};}];
# still enable global firefox, to install language packs
programs.firefox = { enable = true; languagePacks = [ "zh-CN" "en-US" ]; };
};
}

View File

@@ -17,7 +17,7 @@ inputs:
{ {
packages = with inputs.pkgs; packages = with inputs.pkgs;
{ {
_packages = _packages =
[ [
# shell # shell
ksh ksh
@@ -25,7 +25,7 @@ inputs:
beep dos2unix gnugrep pv tmux screen parallel tldr cowsay jq zellij neofetch ipfetch localPackages.pslist beep dos2unix gnugrep pv tmux screen parallel tldr cowsay jq zellij neofetch ipfetch localPackages.pslist
fastfetch reptyr fastfetch reptyr
# lsxx # lsxx
pciutils usbutils lshw util-linux lsof pciutils usbutils lshw util-linux lsof dmidecode
# top # top
iotop iftop htop btop powertop s-tui iotop iftop htop btop powertop s-tui
# editor # editor
@@ -51,6 +51,11 @@ inputs:
# development # development
gdb try inputs.topInputs.plasma-manager.packages.x86_64-linux.rc2nix hexo-cli gdb try inputs.topInputs.plasma-manager.packages.x86_64-linux.rc2nix hexo-cli
] ++ (with inputs.config.boot.kernelPackages; [ cpupower usbip ]); ] ++ (with inputs.config.boot.kernelPackages; [ cpupower usbip ]);
_pythonPackages = [(pythonPackages: with pythonPackages;
[
openai python-telegram-bot fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2
certifi charset-normalizer idna orjson psycopg2 inquirerpy requests tqdm
])];
}; };
users.sharedModules = [(home-inputs: users.sharedModules = [(home-inputs:
{ {

View File

@@ -41,6 +41,11 @@ inputs:
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAoMu0HEaFQsnlJL0L6isnkNZdRq0OiDXyaX3+fl3NjT"; ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAoMu0HEaFQsnlJL0L6isnkNZdRq0OiDXyaX3+fl3NjT";
hostnames = [ "initrd.nas.chn.moe" "[office.chn.moe]:5440" "192.168.1.185" ]; hostnames = [ "initrd.nas.chn.moe" "[office.chn.moe]:5440" "192.168.1.185" ];
}; };
surface =
{
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFdm3DcfHdcLP0oSpVrWwIZ/b9lZuakBSPwCFz2BdTJ7";
hostnames = [ "192.168.1.166" ];
};
pc = pc =
{ {
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSfREi19OSwQnhdsE8wiNwGSFFJwNGN0M5gN+sdrrLJ"; ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSfREi19OSwQnhdsE8wiNwGSFFJwNGN0M5gN+sdrrLJ";
@@ -161,6 +166,7 @@ inputs:
// { // {
xmupc1 = { host = "xmupc1"; hostname = "office.chn.moe"; port = 6007; }; xmupc1 = { host = "xmupc1"; hostname = "office.chn.moe"; port = 6007; };
nas = { host = "nas"; hostname = "office.chn.moe"; port = 5440; }; nas = { host = "nas"; hostname = "office.chn.moe"; port = 5440; };
surface = { host = "surface"; hostname = "192.168.1.166"; };
gitea = { host = "gitea"; hostname = "ssh.git.chn.moe"; }; gitea = { host = "gitea"; hostname = "ssh.git.chn.moe"; };
}; };
}; };

View File

@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDJAyDl52UVGFPTV/rXFERrXAMY5qZ3g+tpg9HOGdw86G4Nr8Xp/cTxZjF4kSfIkSrGblAV9Lm4US0fW3pGOQu5qQrSAENxqHxdlEyzt7izyF2CklDUeTjs3KHOIZMvSli4z014NPcswBbjwB9Lyrw0fCQ9P1vYkrUHEzL2SMxdack1EQPcMF4MxblDqc+eQhdMCkKE8T1Cb1ZqxeLVMPn9CwjG18JoxL+/xs+MjcsSXYWcoqYTfgfhguMbh0D4Eo32MHS/IzRSxnOHJxhG5xYePcyBlb/CxQuYA+RTqKNE85j7GcL2oEmeZ1b++/9qFT9grwVh+UOBRO2xiMzKDF24nXPJ+eLyd6Z/3swGT4rTVDnrXV5eZUkWLHN093IdLJCTtPVrKV9OxEKr5sU2W0edpirNrlGq7/MYkJX9EbQctDFA69XfQkZlGK9xGutqSgEaVlY54fS0Due+NDrNBPfMKJ9MTmFDOY+NYn05El2rMD39OKbGbCR5ASwSSBlcQeE=

View File

@@ -14,27 +14,21 @@ inputs:
# password and key management # password and key management
electrum jabref electrum jabref
# system management # system management
wl-mirror ventoy-full wl-mirror
# nix tools # nix tools
nix-template appimage-run nil nixd nix-alien nix-serve node2nix nix-prefetch-github prefetch-npm-deps nix-template nil nix-alien pnpm-lock-export bundix
nix-prefetch-docker pnpm-lock-export bundix
# instant messager # instant messager
zoom-us signal-desktop qq nur-xddxdd.wechat-uos slack nur-linyinfeng.wemeet qq nur-xddxdd.wechat-uos cinny-desktop nheko
cinny-desktop nheko
# office
libreoffice-qt texstudio poppler_utils pdftk gnuplot pdfchain hdfview
(texlive.combine { inherit (texlive) scheme-full; inherit (localPackages) citation-style-language; })
# development # development
jetbrains.clion android-studio dbeaver cling clang-tools_16 ccls fprettify aircrack-ng jetbrains.clion android-studio dbeaver cling clang-tools_16 ccls fprettify aircrack-ng
# media # media
nur-xddxdd.svp obs-studio waifu2x-converter-cpp inkscape blender nur-xddxdd.svp
# virtualization # virtualization
wineWowPackages.stagingFull virt-viewer bottles # wine64 wineWowPackages.stagingFull virt-viewer bottles # wine64
# text editor # text editor
appflowy notion-app-enhanced joplin-desktop standardnotes logseq appflowy notion-app-enhanced joplin-desktop standardnotes logseq
# math, physics and chemistry # math, physics and chemistry
mathematica octaveFull root ovito paraview localPackages.vesta # qchem.quantum-espresso mathematica paraview localPackages.vasp jmol # qchem.quantum-espresso
localPackages.vasp localPackages.vaspkit jmol localPackages.v_sim
# encryption and password management # encryption and password management
john crunch hashcat john crunch hashcat
# container and vm # container and vm
@@ -43,13 +37,11 @@ inputs:
microsoft-edge microsoft-edge
# news # news
rssguard newsflash newsboat rssguard newsflash newsboat
yuzu-early-access
]; ];
_pythonPackages = [(pythonPackages: with pythonPackages; _pythonPackages = [(pythonPackages: with pythonPackages;
[ [
phonopy tensorflow keras openai scipy scikit-learn jupyterlab autograd phonopy tensorflow keras scipy scikit-learn jupyterlab autograd # localPackages.pix2tex
# localPackages.pix2tex
inquirerpy requests python-telegram-bot tqdm fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2
certifi charset-normalizer idna orjson psycopg2 localPackages.eigengdb
])]; ])];
_prebuildPackages = _prebuildPackages =
[ [
@@ -76,29 +68,7 @@ inputs:
anime-game-launcher = { enable = true; package = inputs.pkgs.anime-game-launcher; }; anime-game-launcher = { enable = true; package = inputs.pkgs.anime-game-launcher; };
honkers-railway-launcher = { enable = true; package = inputs.pkgs.honkers-railway-launcher; }; honkers-railway-launcher = { enable = true; package = inputs.pkgs.honkers-railway-launcher; };
nix-ld.enable = true; nix-ld.enable = true;
gamemode = chromium = { enable = true; extraOpts.PasswordManagerEnabled = false; };
{
enable = true;
settings =
{
general.renice = 10;
gpu =
{
apply_gpu_optimisations = "accept-responsibility";
nv_powermizer_mode = 1;
};
custom = let notify-send = "${inputs.pkgs.libnotify}/bin/notify-send"; in
{
start = "${notify-send} 'GameMode started'";
end = "${notify-send} 'GameMode ended'";
};
};
};
chromium =
{
enable = true;
extraOpts.PasswordManagerEnabled = false;
};
}; };
}; };
} }

View File

@@ -8,8 +8,14 @@ inputs:
type = types.attrsOf (types.oneOf type = types.attrsOf (types.oneOf
[ [
types.nonEmptyStr types.nonEmptyStr
(types.submodule { options = (types.submodule
{ device = mkOption { type = types.nonEmptyStr; }; hashTableSizeMB = mkOption { type = types.int; }; };}) {
options =
{
device = mkOption { type = types.nonEmptyStr; };
hashTableSizeMB = mkOption { type = types.ints.unsigned; default = 1024; };
threads = mkOption { type = types.ints.unsigned; default = 1; };
};})
]); ]);
default = {}; default = {};
}; };
@@ -30,7 +36,7 @@ inputs:
{ {
spec = instance.value.device or instance.value; spec = instance.value.device or instance.value;
hashTableSizeMB = instance.value.hashTableSizeMB or 1024; hashTableSizeMB = instance.value.hashTableSizeMB or 1024;
extraOptions = [ "--thread-count" "1" "--scan-mode" "3" ]; extraOptions = [ "--thread-count" "${toString instance.value.threads or 1}" "--scan-mode" "3" ];
}; };
}) })
(attrsToList beesd.instances)); (attrsToList beesd.instances));

View File

@@ -40,6 +40,7 @@ inputs:
./fail2ban.nix ./fail2ban.nix
./wireguard.nix ./wireguard.nix
./akkoma.nix ./akkoma.nix
./gamemode.nix
]; ];
options.nixos.services = let inherit (inputs.lib) mkOption types; in options.nixos.services = let inherit (inputs.lib) mkOption types; in
{ {

View File

@@ -23,5 +23,6 @@ inputs:
serif = [ "Noto Serif CJK SC" "Source Han Serif SC" "DejaVu Serif" ]; serif = [ "Noto Serif CJK SC" "Source Han Serif SC" "DejaVu Serif" ];
}; };
}; };
nixos.users.sharedModules = [{ config.xdg.configFile."fontconfig/conf.d/10-hm-fonts.conf".force = true; }];
}; };
} }

View File

@@ -0,0 +1,30 @@
inputs:
{
options.nixos.services.gamemode = let inherit (inputs.lib) mkOption types; in
{
enable = mkOption { type = types.bool; default = false; };
drmDevice = mkOption { type = types.int; };
};
config = let inherit (inputs.config.nixos.services) gamemode; in inputs.lib.mkIf gamemode.enable
{
programs.gamemode =
{
enable = true;
settings =
{
general.renice = 10;
gpu =
{
apply_gpu_optimisations = "accept-responsibility";
nv_powermizer_mode = 1;
gpu_device = builtins.toString gamemode.drmDevice;
};
custom = let notify-send = "${inputs.pkgs.libnotify}/bin/notify-send"; in
{
start = "${notify-send} 'GameMode started'";
end = "${notify-send} 'GameMode ended'";
};
};
};
};
}

View File

@@ -3,45 +3,88 @@ inputs:
options.nixos.services.wireguard = let inherit (inputs.lib) mkOption types; in options.nixos.services.wireguard = let inherit (inputs.lib) mkOption types; in
{ {
enable = mkOption { type = types.bool; default = false; }; enable = mkOption { type = types.bool; default = false; };
peers = mkOption { type = types.nonEmptyListOf types.nonEmptyStr; default = []; };
# wg genkey | wg pubkey # wg genkey | wg pubkey
publicKey = mkOption { type = types.nonEmptyStr; }; publicKey = mkOption { type = types.nonEmptyStr; };
wireguardIp = mkOption { type = types.nonEmptyStr; };
externalIp = mkOption { type = types.nullOr types.nonEmptyStr; default = null; };
lighthouse = mkOption { type = types.bool; default = false; }; lighthouse = mkOption { type = types.bool; default = false; };
behindNat = mkOption
{
type = types.bool;
default = inputs.config.nixos.services.xray.client.enable;
};
listenIp = mkOption { type = types.nullOr types.nonEmptyStr; default = null; };
# if the host is behind xray, it should listen on another port, to make xray succeffully listen on 51820
listenPort = mkOption
{
type = types.ints.unsigned;
default = if inputs.config.nixos.services.wireguard.behindNat then 51821 else 51820;
};
wireguardIp = mkOption { type = types.nonEmptyStr; };
peers = mkOption { type = types.nonEmptyListOf types.nonEmptyStr; default = []; };
}; };
config = config =
let let
inherit (inputs.lib) mkIf; inherit (inputs.lib) mkIf mkMerge;
inherit (inputs.config.nixos.services) wireguard; inherit (inputs.config.nixos.services) wireguard;
inherit (builtins) map toString; inherit (builtins) map toString listToAttrs filter;
in mkIf wireguard.enable in mkMerge
{ [
networking = {
let assertions =
# if the host is behind xray, it should listen on another port, to make xray succeffully listen on 51820 [{
port = 51820 + (if inputs.config.nixos.services.xrayClient.enable then 1 else 0); assertion = !wireguard.behindNat -> wireguard.listenIp != null;
in message = "wireguard.listenIp should be not null when behindNat is false.";
}];
}
(
mkIf wireguard.enable
{ {
firewall = { allowedUDPPorts = [ port ]; trustedInterfaces = [ "wireguard" ]; }; networking =
wireguard.interfaces.wireguard =
{ {
ips = [ "${wireguard.wireguardIp}/24" ]; firewall = { allowedUDPPorts = [ wireguard.listenPort ]; trustedInterfaces = [ "wireguard" ]; };
listenPort = port; wireguard.interfaces.wireguard =
privateKeyFile = inputs.config.sops.secrets."wireguard/privateKey".path; {
peers = map ips = [ "${wireguard.wireguardIp}/24" ];
inherit (wireguard) listenPort;
privateKeyFile = inputs.config.sops.secrets."wireguard/privateKey".path;
peers = map
(peer:
{
publicKey = peer.publicKey;
allowedIPs = [ (if peer.lighthouse then "192.168.83.0/24" else "${peer.wireguardIp}/32") ];
endpoint = mkIf (!peer.behindNat) "${peer.listenIp}:${builtins.toString peer.listenPort}";
persistentKeepalive = 3;
})
(map
(peer: inputs.topInputs.self.nixosConfigurations.${peer}.config.nixos.services.wireguard)
wireguard.peers);
};
};
sops.secrets."wireguard/privateKey" = {};
# somehow fix wireguard connection
systemd.services = mkIf wireguard.behindNat (listToAttrs (map
(peer:
{
name = "wireguard-ping-${peer.name}";
value =
{
description = "ping ${peer.name}";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig =
{
ExecStart = "${inputs.pkgs.iputils}/bin/ping -i 3 ${peer.value.wireguardIp}";
Restart = "always";
};
};
})
(filter (peer: !peer.value.behindNat) (map
(peer: (peer:
{ {
publicKey = peer.publicKey; name = peer;
allowedIPs = [ (if peer.lighthouse then "192.168.83.0/24" else "${peer.wireguardIp}/32") ]; value = inputs.topInputs.self.nixosConfigurations.${peer}.config.nixos.services.wireguard;
endpoint = mkIf (peer.externalIp != null) "${peer.externalIp}:51820";
persistentKeepalive = 3;
}) })
(map wireguard.peers))));
(peer: inputs.topInputs.self.nixosConfigurations.${peer}.config.nixos.services.wireguard) }
wireguard.peers); )
}; ];
};
sops.secrets."wireguard/privateKey" = {};
};
} }

View File

@@ -1,8 +1,8 @@
inputs: inputs:
{ {
options.nixos.services = let inherit (inputs.lib) mkOption types; in options.nixos.services.xray = let inherit (inputs.lib) mkOption types; in
{ {
xrayClient = client =
{ {
enable = mkOption { type = types.bool; default = false; }; enable = mkOption { type = types.bool; default = false; };
serverAddress = mkOption { type = types.nonEmptyStr; }; serverAddress = mkOption { type = types.nonEmptyStr; };
@@ -13,7 +13,7 @@ inputs:
extraInterfaces = mkOption { type = types.listOf types.nonEmptyStr; default = []; }; extraInterfaces = mkOption { type = types.listOf types.nonEmptyStr; default = []; };
}; }; }; }; }; };
}; };
xrayServer = server =
{ {
enable = mkOption { type = types.bool; default = false; }; enable = mkOption { type = types.bool; default = false; };
serverName = mkOption { type = types.nonEmptyStr; }; serverName = mkOption { type = types.nonEmptyStr; };
@@ -23,12 +23,19 @@ inputs:
let let
inherit (inputs.lib) mkMerge mkIf; inherit (inputs.lib) mkMerge mkIf;
inherit (inputs.localLib) stripeTabs attrsToList; inherit (inputs.localLib) stripeTabs attrsToList;
inherit (inputs.config.nixos.services) xrayClient xrayServer; inherit (inputs.config.nixos.services) xray;
inherit (builtins) map listToAttrs toString genList length concatStringsSep; inherit (builtins) map listToAttrs toString genList length concatStringsSep;
in mkMerge in mkMerge
[ [
{
assertions =
[{
assertion = !(xray.client.enable && xray.server.enable);
message = "Currenty xray.client and xray.server could not be simutaniusly enabled.";
}];
}
( (
mkIf xrayClient.enable mkIf xray.client.enable
{ {
services = services =
{ {
@@ -40,14 +47,10 @@ inputs:
no-poll = true; no-poll = true;
log-queries = true; log-queries = true;
server = [ "127.0.0.1#10853" ]; server = [ "127.0.0.1#10853" ];
interface = xrayClient.dns.extraInterfaces ++ [ "lo" ]; interface = xray.client.dns.extraInterfaces ++ [ "lo" ];
bind-dynamic = true; bind-dynamic = true;
ipset = ipset = [ "/yuanshen.com/noproxy_net" ];
[ address = map (host: "/${host.name}/${host.value}") (attrsToList xray.client.dns.hosts);
"/developer.download.nvidia.com/noproxy_net"
"/yuanshen.com/noproxy_net"
];
address = map (host: "/${host.name}/${host.value}") (attrsToList xrayClient.dns.hosts);
}; };
}; };
xray = { enable = true; settingsFile = inputs.config.sops.templates."xray-client.json".path; }; xray = { enable = true; settingsFile = inputs.config.sops.templates."xray-client.json".path; };
@@ -130,7 +133,7 @@ inputs:
protocol = "vless"; protocol = "vless";
settings.vnext = settings.vnext =
[{ [{
address = xrayClient.serverAddress; address = xray.client.serverAddress;
port = 443; port = 443;
users = users =
[{ [{
@@ -145,7 +148,7 @@ inputs:
security = "reality"; security = "reality";
realitySettings = realitySettings =
{ {
serverName = xrayClient.serverName; serverName = xray.client.serverName;
publicKey = "Nl0eVZoDF9d71_3dVsZGJl3UWR9LCv3B14gu7G6vhjk"; publicKey = "Nl0eVZoDF9d71_3dVsZGJl3UWR9LCv3B14gu7G6vhjk";
fingerprint = "firefox"; fingerprint = "firefox";
}; };
@@ -308,7 +311,7 @@ inputs:
} }
) )
( (
mkIf xrayServer.enable (let userList = genList (n: n) 30; in mkIf xray.server.enable (let userList = genList (n: n) 30; in
{ {
services.xray = { enable = true; settingsFile = inputs.config.sops.templates."xray-server.json".path; }; services.xray = { enable = true; settingsFile = inputs.config.sops.templates."xray-server.json".path; };
sops = sops =
@@ -351,7 +354,7 @@ inputs:
realitySettings = realitySettings =
{ {
dest = "127.0.0.1:${fallbackPort}"; dest = "127.0.0.1:${fallbackPort}";
serverNames = [ xrayServer.serverName ]; serverNames = [ xray.server.serverName ];
privateKey = inputs.config.sops.placeholder."xray-server/private-key"; privateKey = inputs.config.sops.placeholder."xray-server/private-key";
minClientVer = "1.8.0"; minClientVer = "1.8.0";
shortIds = [ "" ]; shortIds = [ "" ];
@@ -493,12 +496,12 @@ inputs:
}; };
nixos.services = nixos.services =
{ {
acme = { enable = true; cert.${xrayServer.serverName}.group = inputs.config.users.users.nginx.group; }; acme = { enable = true; cert.${xray.server.serverName}.group = inputs.config.users.users.nginx.group; };
nginx = nginx =
{ {
enable = true; enable = true;
transparentProxy.map."${xrayServer.serverName}" = 4726; transparentProxy.map."${xray.server.serverName}" = 4726;
https."${xrayServer.serverName}" = https."${xray.server.serverName}" =
{ {
listen.main = { proxyProtocol = false; addToTransparentProxy = false; }; listen.main = { proxyProtocol = false; addToTransparentProxy = false; };
location."/".return.return = "400"; location."/".return.return = "400";

View File

@@ -16,6 +16,7 @@ inputs:
./sops.nix ./sops.nix
./user.nix ./user.nix
./sysctl.nix ./sysctl.nix
./envfs.nix
]; ];
config = config =
{ {
@@ -24,7 +25,7 @@ inputs:
boot = boot =
{ {
supportedFilesystems = [ "ntfs" ]; supportedFilesystems = [ "ntfs" ];
consoleLogLevel = 7; # consoleLogLevel = 7;
}; };
hardware.enableAllFirmware = true; hardware.enableAllFirmware = true;
environment.sessionVariables = rec environment.sessionVariables = rec

12
modules/system/envfs.nix Normal file
View File

@@ -0,0 +1,12 @@
inputs:
{
options.nixos.system.envfs = let inherit (inputs.lib) mkOption types; in
{
enable = mkOption { type = types.bool; default = true; };
};
config = inputs.lib.mkMerge
[
(builtins.elemAt inputs.topInputs.envfs.nixosModules.envfs.imports 0 inputs)
{ environment.variables.ENVFS_RESOLVE_ALWAYS = "1"; }
];
}

View File

@@ -7,44 +7,78 @@ inputs:
# "efi" using efi, "efiRemovable" using efi with install grub removable, or dev path like "/dev/sda" using bios # "efi" using efi, "efiRemovable" using efi with install grub removable, or dev path like "/dev/sda" using bios
installDevice = mkOption { type = types.str; }; installDevice = mkOption { type = types.str; };
}; };
config = config = let inherit (inputs.config.nixos.system) grub; in inputs.lib.mkMerge
let [
inherit (inputs.lib) mkIf; # general settings
inherit (inputs.localLib) mkConditional attrsToList stripeTabs; { boot.loader.grub = { enable = true; useOSProber = false; }; }
inherit (inputs.config.nixos.system) grub; # grub timeout
inherit (builtins) concatStringsSep map; { boot.loader.timeout = grub.timeout; }
in { boot.loader = # grub install
{ {
timeout = grub.timeout; boot.loader =
grub =
{ {
enable = true; grub =
useOSProber = false; {
extraEntries = concatStringsSep "\n" (map device = if builtins.elem grub.installDevice [ "efi" "efiRemovable" ] then "nodev" else grub.installDevice;
(system: efiSupport = builtins.elem grub.installDevice [ "efi" "efiRemovable" ];
'' efiInstallAsRemovable = grub.installDevice == "efiRemovable";
menuentry "${system.value}" { };
insmod part_gpt efi =
insmod fat {
insmod search_fs_uuid canTouchEfiVariables = grub.installDevice == "efi";
insmod chain efiSysMountPoint = inputs.lib.mkIf (builtins.elem grub.installDevice [ "efi" "efiRemovable" ]) "/boot/efi";
search --fs-uuid --set=root ${system.name} };
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
'')
(attrsToList grub.windowsEntries));
device =
if grub.installDevice == "efi" || grub.installDevice == "efiRemovable" then "nodev"
else grub.installDevice;
efiSupport = grub.installDevice == "efi" || grub.installDevice == "efiRemovable";
efiInstallAsRemovable = grub.installDevice == "efiRemovable";
}; };
efi = }
# extra grub entries
{
boot.loader.grub =
{ {
canTouchEfiVariables = grub.installDevice == "efi"; memtest86.enable = true;
efiSysMountPoint = extraFiles = inputs.lib.mkIf (builtins.elem grub.installDevice [ "efi" "efiRemovable" ])
if grub.installDevice == "efi" || grub.installDevice == "efiRemovable" then "/boot/efi" { "shell.efi" = "${inputs.pkgs.edk2-uefi-shell}/shell.efi"; };
else inputs.options.boot.loader.efi.efiSysMountPoint.default; extraEntries = inputs.lib.mkMerge (builtins.concatLists
[
(builtins.map
(system:
''
menuentry "${system.value}" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --set=root ${system.name}
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
'')
(inputs.localLib.attrsToList grub.windowsEntries))
[
''
menuentry "System shutdown" {
echo "System shutting down..."
halt
}
menuentry "System restart" {
echo "System rebooting..."
reboot
}
''
(
inputs.lib.optionalString (builtins.elem grub.installDevice [ "efi" "efiRemovable" ])
''
menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' {
fwsetup
}
menuentry "UEFI Shell" {
insmod fat
insmod chain
chainloader @bootRoot@/shell.efi
}
''
)
]
]);
}; };
};}; }
];
} }

View File

@@ -19,7 +19,6 @@ inputs:
enable = true; enable = true;
displayManager = { sddm.enable = true; defaultSession = "plasmawayland"; }; displayManager = { sddm.enable = true; defaultSession = "plasmawayland"; };
desktopManager.plasma5.enable = true; desktopManager.plasma5.enable = true;
videoDrivers = inputs.config.nixos.hardware.gpus;
}; };
systemd.services.display-manager = { after = [ "network-online.target" ]; enable = gui.autoStart; }; systemd.services.display-manager = { after = [ "network-online.target" ]; enable = gui.autoStart; };
environment = environment =

View File

@@ -2,7 +2,7 @@ inputs:
{ {
options.nixos.system.impermanence = let inherit (inputs.lib) mkOption types; in options.nixos.system.impermanence = let inherit (inputs.lib) mkOption types; in
{ {
enable = mkOption { type = types.bool; default = false; }; enable = mkOption { type = types.bool; default = true; };
persistence = mkOption { type = types.nonEmptyStr; default = "/nix/persistent"; }; persistence = mkOption { type = types.nonEmptyStr; default = "/nix/persistent"; };
root = mkOption { type = types.nonEmptyStr; default = "/nix/rootfs/current"; }; root = mkOption { type = types.nonEmptyStr; default = "/nix/rootfs/current"; };
nodatacow = mkOption { type = types.nullOr types.nonEmptyStr; default = "/nix/nodatacow"; }; nodatacow = mkOption { type = types.nullOr types.nonEmptyStr; default = "/nix/nodatacow"; };
@@ -56,7 +56,7 @@ inputs:
{ {
users.chn = users.chn =
{ {
directories = [ ".cache" ]; directories = [ ".cache" ".config/fontconfig" ];
}; };
} else {}); } else {});
"${impermanence.nodatacow}" = "${impermanence.nodatacow}" =

View File

@@ -32,14 +32,15 @@ inputs:
]; ];
extraModulePackages = (with inputs.config.boot.kernelPackages; [ v4l2loopback ]) ++ kernel.modules.install; extraModulePackages = (with inputs.config.boot.kernelPackages; [ v4l2loopback ]) ++ kernel.modules.install;
extraModprobeConfig = builtins.concatStringsSep "\n" kernel.modules.modprobeConfig; extraModprobeConfig = builtins.concatStringsSep "\n" kernel.modules.modprobeConfig;
kernelParams = [ "delayacct" "acpi_osi=Linux" ]; kernelParams = [ "delayacct" "acpi_osi=Linux" "acpi.ec_no_wakeup=1" ];
kernelPackages = inputs.pkgs.linuxPackages_xanmod_latest; kernelPackages = inputs.pkgs.linuxPackages_xanmod_latest;
kernelPatches = kernelPatches =
let let
patches = patches =
{ {
cjktty = cjktty =
{ [{
name = "cjktty";
patch = patch =
let let
version = builtins.splitVersion inputs.config.boot.kernelPackages.kernel.version; version = builtins.splitVersion inputs.config.boot.kernelPackages.kernel.version;
@@ -54,15 +55,16 @@ inputs:
hashes = hashes =
{ {
"6.1" = "11ddiammvjxx2m9v32p25l1ai759a1d6xhdpszgnihv7g2fzigf5"; "6.1" = "11ddiammvjxx2m9v32p25l1ai759a1d6xhdpszgnihv7g2fzigf5";
"6.6" = "19ib0syj3207ifr315gdrnpv6nhh435fmgl05c7k715nng40i827"; "6.7" = "1yfsmc0873xiwlirir0xfp9zyrpd09q1srgr3z4rl7i7lxzaqls8";
}; };
in hashes."${major}.${minor}"; in hashes."${major}.${minor}";
}; };
extraStructuredConfig = extraStructuredConfig =
{ FONT_CJK_16x16 = inputs.lib.kernel.yes; FONT_CJK_32x32 = inputs.lib.kernel.yes; }; { FONT_CJK_16x16 = inputs.lib.kernel.yes; FONT_CJK_32x32 = inputs.lib.kernel.yes; };
}; }];
lantian = lantian =
{ [{
name = "lantian";
patch = null; patch = null;
# pick from xddxdd/nur-packages dce93a # pick from xddxdd/nur-packages dce93a
extraStructuredConfig = with inputs.lib.kernel; extraStructuredConfig = with inputs.lib.kernel;
@@ -79,9 +81,47 @@ inputs:
HZ_250 = inputs.lib.mkForce no; HZ_250 = inputs.lib.mkForce no;
HZ = inputs.lib.mkForce (freeform "1000"); HZ = inputs.lib.mkForce (freeform "1000");
}; };
}; }];
surface =
let
version =
let versionArray = builtins.splitVersion inputs.config.boot.kernelPackages.kernel.version;
in "${builtins.elemAt versionArray 0}.${builtins.elemAt versionArray 1}";
kernelPatches = builtins.map
(file:
{
name = "surface-${file.name}";
patch = "${inputs.topInputs.linux-surface}/patches/${version}/${file.name}";
})
(builtins.filter
(file: file.value == "regular")
(inputs.localLib.attrsToList (builtins.readDir
"${inputs.topInputs.linux-surface}/patches/${version}")));
kernelConfig = builtins.removeAttrs
(builtins.listToAttrs (builtins.concatLists (builtins.map
(configString:
if builtins.match "CONFIG_.*=." configString == [] then
(
let match = builtins.match "CONFIG_(.*)=(.)" configString; in with inputs.lib.kernel;
[{
name = builtins.elemAt match 0;
value = { m = module; y = yes; }.${builtins.elemAt match 1};
}]
)
else if builtins.match "# CONFIG_.* is not set" configString == [] then
[{
name = builtins.elemAt (builtins.match "# CONFIG_(.*) is not set" configString) 0;
value = inputs.lib.kernel.unset;
}]
else if builtins.match "#.*" configString == [] then []
else if configString == "" then []
else throw "could not parse: ${configString}"
)
(inputs.lib.strings.splitString "\n"
(builtins.readFile "${inputs.topInputs.linux-surface}/configs/surface-${version}.config")))))
[ "VIDEO_IPU3_IMGU" ];
in kernelPatches ++ [{ name = "surface-config"; patch = null; extraStructuredConfig = kernelConfig; }];
}; };
in in builtins.concatLists (builtins.map (name: patches.${name}) kernel.patches);
builtins.map (name: { inherit name; } // patches.${name}) kernel.patches;
};}; };};
} }

View File

@@ -4,61 +4,82 @@ inputs:
{ {
# marches allowed to be compiled on this machine # marches allowed to be compiled on this machine
marches = mkOption { type = types.nullOr (types.listOf types.nonEmptyStr); default = null; }; marches = mkOption { type = types.nullOr (types.listOf types.nonEmptyStr); default = null; };
keepOutputs = mkOption { type = types.bool; default = false; }; includeBuildDependencies = mkOption { type = types.bool; default = inputs.topInputs.self.config.archive; };
substituters = mkOption { type = types.nullOr (types.listOf types.nonEmptyStr); default = null; }; substituters = mkOption { type = types.nullOr (types.listOf types.nonEmptyStr); default = null; };
autoOptimiseStore = mkOption { type = types.bool; default = true; }; autoOptimiseStore = mkOption { type = types.bool; default = false; };
}; };
config = config = let inherit (inputs.config.nixos.system) nix; in inputs.lib.mkMerge
let [
inherit (inputs.config.nixos.system) nix; # general nix config
in {
nix.settings =
{ {
nix = system-features = [ "big-parallel" "nixos-test" "benchmark" ];
experimental-features = [ "nix-command" "flakes" ];
keep-failed = true;
max-substitution-jobs = 1;
trusted-public-keys = [ "chn:Cc+nowW1LIpe1kyXOZmNaznFDiH1glXmpb4A+WD/DTE=" ];
show-trace = true;
max-jobs = 1;
cores = 0;
keep-going = true;
};
systemd.services.nix-daemon = { serviceConfig.CacheDirectory = "nix"; environment.TMPDIR = "/var/cache/nix"; };
}
# nix daemon use lower io/cpu priority
{
nix = { daemonIOSchedClass = "idle"; daemonCPUSchedPolicy = "idle"; };
systemd.services.nix-daemon.serviceConfig = { Slice = "-.slice"; Nice = "19"; };
}
# nix channel & nix flake registry
{
nix =
{
registry =
{ {
settings = nixpkgs.flake = inputs.topInputs.nixpkgs;
{ nixpkgs-unstable.flake = inputs.topInputs.nixpkgs-unstable;
system-features = [ "big-parallel" "nixos-test" "benchmark" ] ++ (map nixos.flake = inputs.topInputs.self;
(march: "gccarch-${march}")
(
if nix.marches == null then
(with inputs.config.nixos.system.nixpkgs; if march == null then [] else [ march ])
else nix.marches
));
experimental-features = [ "nix-command" "flakes" ];
keep-outputs = nix.keepOutputs;
keep-failed = true;
auto-optimise-store = nix.autoOptimiseStore;
substituters = if nix.substituters == null then [ "https://cache.nixos.org/" ] else nix.substituters;
trusted-public-keys = [ "chn:Cc+nowW1LIpe1kyXOZmNaznFDiH1glXmpb4A+WD/DTE=" ];
show-trace = true;
max-jobs = 2;
cores = 0;
keep-going = true;
};
daemonIOSchedClass = "idle";
daemonCPUSchedPolicy = "idle";
registry =
{
nixpkgs.flake = inputs.topInputs.nixpkgs;
nixpkgs-unstable.flake = inputs.topInputs.nixpkgs-unstable;
nixos.flake = inputs.topInputs.self;
};
nixPath = [ "nixpkgs=${inputs.topInputs.nixpkgs}" ];
}; };
systemd.services.nix-daemon = nixPath = [ "nixpkgs=${inputs.topInputs.nixpkgs}" ];
{ };
serviceConfig = { CacheDirectory = "nix"; Slice = "-.slice"; Nice = "19"; }; environment =
environment = { TMPDIR = "/var/cache/nix"; }; {
}; etc =
environment.etc =
{ {
"channels/nixpkgs".source = inputs.topInputs.nixpkgs.outPath; "channels/nixpkgs".source = inputs.topInputs.nixpkgs.outPath;
"channels/nixpkgs-unstable".source = inputs.topInputs.nixpkgs-unstable.outPath; "channels/nixpkgs-unstable".source = inputs.topInputs.nixpkgs-unstable.outPath;
"nixos".source = inputs.topInputs.self.outPath; "nixos".source = inputs.topInputs.self.outPath;
}; };
# environment.pathsToLink = [ "/include" ]; variables.COMMA_NIXPKGS_FLAKE = "nixpkgs-unstable";
# environment.variables.CPATH = "/run/current-system/sw/include";
# environment.variables.LIBRARY_PATH = "/run/current-system/sw/lib";
# gui.enable
}; };
}
# marches
{
nix.settings.system-features = map
(march: "gccarch-${march}")
(
if nix.marches == null then
(with inputs.config.nixos.system.nixpkgs; if march == null then [] else [ march ])
else nix.marches
);
}
# includeBuildDependencies
{
nix.settings.keep-outputs = nix.includeBuildDependencies;
system.includeBuildDependencies = nix.includeBuildDependencies;
}
# substituters
{
nix.settings.substituters = if nix.substituters == null then [ "https://cache.nixos.org/" ] else nix.substituters;
}
# autoOptimiseStore
{
nix.settings.auto-optimise-store = nix.autoOptimiseStore;
}
# c++ include path
# environment.pathsToLink = [ "/include" ];
# environment.variables.CPATH = "/run/current-system/sw/include";
# environment.variables.LIBRARY_PATH = "/run/current-system/sw/lib";
];
} }

View File

@@ -24,7 +24,7 @@ inputs:
nixpkgs = nixpkgs =
let let
permittedInsecurePackages = permittedInsecurePackages =
[ "openssl_1_1" "electron_19" "python2" "electron_12" "electron_24" "zotero" ]; [ "openssl_1_1" "electron_19" "python2" "electron_12" "electron_24" "zotero" "electron_25" ];
hostPlatform = mkConditional (nixpkgs.march != null) hostPlatform = mkConditional (nixpkgs.march != null)
{ system = "x86_64-linux"; gcc = { arch = nixpkgs.march; tune = nixpkgs.march; }; } { system = "x86_64-linux"; gcc = { arch = nixpkgs.march; tune = nixpkgs.march; }; }
"x86_64-linux"; "x86_64-linux";

View File

@@ -1,6 +1,6 @@
inputs: inputs:
{ {
# imports = inputs.localLib.mkModules [ ./plasma.nix ]; imports = inputs.localLib.mkModules [ ./plasma ];
config = config =
let let
inherit (inputs.lib) mkIf; inherit (inputs.lib) mkIf;

View File

@@ -1,853 +0,0 @@
{
config.home-manager.users.chn.config.programs.plasma =
{
enable = true;
shortcuts =
{
# crow translate
"io.crow_translate.CrowTranslate.desktop"."TranslateSelectedText" = "Ctrl+Alt+E";
# display
"kded5"."display" = [ "Display" "Meta+P" ];
"kwin"."view_actual_size" = "Meta+0";
"kwin"."view_zoom_in" = ["Meta++" "Meta+="];
"kwin"."view_zoom_out" = "Meta+-";
"org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down";
"org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up";
# volume
"kmix" =
{
"decrease_volume" = "Volume Down";
"increase_volume" = "Volume Up";
"mic_mute" = [ "Meta+Volume Mute" ];
"mute" = "Volume Mute";
};
# session
"ksmserver" =
{
"Lock Session" = [ "Meta+L" "Screensaver" ];
"Log Out" = "Ctrl+Alt+Del";
};
"org_kde_powerdevil"."Turn Off Screen" = "Meta+Ctrl+L";
# mouse
"kwin"."MoveMouseToCenter" = "Meta+F6";
# window
"kwin"."Overview" = "Meta+Tab";
"kwin"."Show Desktop" = "Meta+D";
"kwin"."Suspend Compositing" = "Alt+Shift+F12";
"kwin"."Walk Through Windows" = "Alt+Tab";
"kwin"."Walk Through Windows (Reverse)" = "Alt+Shift+Backtab";
"kwin"."Window Above Other Windows" = "Meta+Shift+PgUp";
"kwin"."Window Below Other Windows" = "Meta+Shift+PgDown";
"kwin"."Window Close" = "Alt+F4";
"kwin"."Window Maximize" = "Meta+PgUp";
"kwin"."Window Minimize" = "Meta+PgDown";
"kwin"."Window Operations Menu" = "Alt+F3";
"kwin"."Window Quick Tile Bottom" = "Meta+Down";
"kwin"."Window Quick Tile Left" = "Meta+Left";
"kwin"."Window Quick Tile Right" = "Meta+Right";
"kwin"."Window Quick Tile Top" = "Meta+Up";
# virtual desktop
"kwin"."Switch One Desktop Down" = "Meta+Ctrl+Down";
"kwin"."Switch One Desktop Up" = "Meta+Ctrl+Up";
"kwin"."Switch One Desktop to the Left" = "Meta+Ctrl+Left";
"kwin"."Switch One Desktop to the Right" = "Meta+Ctrl+Right";
"kwin"."Window One Desktop Down" = "Meta+Ctrl+Shift+Down";
"kwin"."Window One Desktop Up" = "Meta+Ctrl+Shift+Up";
"kwin"."Window One Desktop to the Left" = "Meta+Ctrl+Shift+Left";
"kwin"."Window One Desktop to the Right" = "Meta+Ctrl+Shift+Right";
# media
"mediacontrol"."nextmedia" = "Media Next";
"mediacontrol"."pausemedia" = "Media Pause";
"mediacontrol"."playpausemedia" = [ "Pause" "Media Play" ];
"mediacontrol"."previousmedia" = "Media Previous";
"mediacontrol"."stopmedia" = "Media Stop";
# dolphin
"org.kde.dolphin.desktop"."_launch" = "Meta+E";
# konsole
"org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T";
# krunner
"org.kde.krunner.desktop"."_launch" = "Alt+Space";
# screenshot
"org.kde.spectacle.desktop"."ActiveWindowScreenShot" = "Meta+Print";
"org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = [ ];
"org.kde.spectacle.desktop"."FullScreenScreenShot" = "Shift+Print";
"org.kde.spectacle.desktop"."OpenWithoutScreenshot" = [ ];
"org.kde.spectacle.desktop"."RectangularRegionScreenShot" = "Meta+Shift+Print";
"org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = "Meta+Ctrl+Print";
"org.kde.spectacle.desktop"."_launch" = "Print";
# settings
"systemsettings.desktop"."_launch" = "Meta+I";
# yakuake
"yakuake"."toggle-window-state" = "Meta+Space";
};
configFile =
{
# baloo
# "baloofilerc"."Basic Settings"."Indexing-Enabled" = false;
# dolphin
"dolphinrc"."General"."ShowFullPath" = true;
"dolphinrc"."PreviewSettings"."Plugins" = "blenderthumbnail,comicbookthumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,marble_thumbnail_geojson,marble_thumbnail_gpx,jpegthumbnail,marble_thumbnail_kmz,marble_thumbnail_kml,kraorathumbnail,windowsimagethumbnail,windowsexethumbnail,mltpreview,mobithumbnail,opendocumentthumbnail,marble_thumbnail_osm,palathumbcreator,gsthumbnail,rawthumbnail,svgthumbnail,imagethumbnail,fontthumbnail,directorythumbnail,textthumbnail,webarchivethumbnail,ffmpegthumbs,audiothumbnail";
"kactivitymanagerdrc"."activities"."f305b694-8f87-46ec-a9b1-4425c55a077e" = "Default";
"kactivitymanagerdrc"."activities-icons"."242e672c-3145-4b8f-acc4-7663d17dabcc" = "activities";
"kactivitymanagerdrc"."main"."currentActivity" = "f305b694-8f87-46ec-a9b1-4425c55a077e";
"kactivitymanagerdrc"."main"."runningActivities" = "f305b694-8f87-46ec-a9b1-4425c55a077e";
"kactivitymanagerdrc"."main"."stoppedActivities" = "";
"kcminputrc"."ButtonRebinds.Mouse"."ExtraButton1" = "Key,PgDown";
"kcminputrc"."ButtonRebinds.Mouse"."ExtraButton2" = "Key,PgUp";
"kcminputrc"."Libinput.2321.21128.HTIX5288:00 0911:5288 Touchpad"."ClickMethod" = 2;
"kcminputrc"."Libinput.2321.21128.HTIX5288:00 0911:5288 Touchpad"."MiddleButtonEmulation" = true;
"kcminputrc"."Libinput.2321.21128.HTIX5288:00 0911:5288 Touchpad"."TapToClick" = true;
"kcminputrc"."Mouse"."X11LibInputXAccelProfileFlat" = false;
"kcminputrc"."Mouse"."XLbInptAccelProfileFlat" = true;
"kcminputrc"."Mouse"."XLbInptPointerAcceleration" = 0.6;
"kcminputrc"."Mouse"."cursorTheme" = "breeze_cursors";
"kcminputrc"."Tmp"."update_info" = "delete_cursor_old_default_size.upd:DeleteCursorOldDefaultSize";
"kded5rc"."Module-browserintegrationreminder"."autoload" = false;
"kded5rc"."Module-device_automounter"."autoload" = false;
"kded5rc"."PlasmaBrowserIntegration"."shownCount" = 4;
"kdeglobals"."DirSelect Dialog"."DirSelectDialog Size" = "1920,1050";
"kdeglobals"."General"."AllowKDEAppsToRememberWindowPositions" = true;
"kdeglobals"."General"."BrowserApplication" = "firefox.desktop";
"kdeglobals"."General"."LastUsedCustomAccentColor" = "61,212,37";
"kdeglobals"."General"."XftAntialias" = true;
"kdeglobals"."General"."XftHintStyle" = "hintslight";
"kdeglobals"."General"."XftSubPixel" = "rgb";
"kdeglobals"."KDE"."SingleClick" = true;
"kdeglobals"."KDE"."widgetStyle" = "kvantum";
"kdeglobals"."KFileDialog Settings"."Allow Expansion" = true;
"kdeglobals"."KFileDialog Settings"."Automatically select filename extension" = true;
"kdeglobals"."KFileDialog Settings"."Breadcrumb Navigation" = false;
"kdeglobals"."KFileDialog Settings"."Decoration position" = 2;
"kdeglobals"."KFileDialog Settings"."LocationCombo Completionmode" = 5;
"kdeglobals"."KFileDialog Settings"."PathCombo Completionmode" = 5;
"kdeglobals"."KFileDialog Settings"."Preview Width" = 688;
"kdeglobals"."KFileDialog Settings"."Show Bookmarks" = true;
"kdeglobals"."KFileDialog Settings"."Show Full Path" = true;
"kdeglobals"."KFileDialog Settings"."Show Inline Previews" = false;
"kdeglobals"."KFileDialog Settings"."Show Preview" = false;
"kdeglobals"."KFileDialog Settings"."Show Speedbar" = true;
"kdeglobals"."KFileDialog Settings"."Show hidden files" = true;
"kdeglobals"."KFileDialog Settings"."Sort by" = "Name";
"kdeglobals"."KFileDialog Settings"."Sort directories first" = true;
"kdeglobals"."KFileDialog Settings"."Sort hidden files last" = false;
"kdeglobals"."KFileDialog Settings"."Sort reversed" = false;
"kdeglobals"."KFileDialog Settings"."Speedbar Width" = 89;
"kdeglobals"."KFileDialog Settings"."View Style" = "DetailTree";
"kdeglobals"."KScreen"."ScreenScaleFactors" = "eDP-1=1;DP-1=1;";
"kdeglobals"."KShortcutsDialog Settings"."Dialog Size" = "600,480";
"kdeglobals"."PreviewSettings"."MaximumRemoteSize" = 0;
"kdeglobals"."WM"."activeBackground" = "247,247,247";
"kdeglobals"."WM"."activeBlend" = "153,153,153";
"kdeglobals"."WM"."activeForeground" = "120,120,120";
"kdeglobals"."WM"."inactiveBackground" = "242,242,242";
"kdeglobals"."WM"."inactiveBlend" = "221,221,221";
"kdeglobals"."WM"."inactiveForeground" = "170,170,170";
"kgammarc"."ConfigFile"."use" = "kgammarc";
"kglobalshortcutsrc"."ActivityManager"."_k_friendly_name" = "";
"kglobalshortcutsrc"."KDE Keyboard Layout Switcher"."_k_friendly_name" = "";
"kglobalshortcutsrc"."io.crow_translate.CrowTranslate.desktop"."_k_friendly_name" = "Crow Translate";
"kglobalshortcutsrc"."juk"."_k_friendly_name" = "JuK";
"kglobalshortcutsrc"."kaccess"."_k_friendly_name" = "";
"kglobalshortcutsrc"."kcm_touchpad"."_k_friendly_name" = "";
"kglobalshortcutsrc"."kded5"."_k_friendly_name" = "KDE Daemon";
"kglobalshortcutsrc"."khotkeys"."_k_friendly_name" = "Custom Shortcuts Service";
"kglobalshortcutsrc"."kmix"."_k_friendly_name" = "";
"kglobalshortcutsrc"."ksmserver"."_k_friendly_name" = "";
"kglobalshortcutsrc"."kwin"."_k_friendly_name" = "KWin";
"kglobalshortcutsrc"."mediacontrol"."_k_friendly_name" = "";
"kglobalshortcutsrc"."org.kde.dolphin.desktop"."_k_friendly_name" = "Dolphin";
"kglobalshortcutsrc"."org.kde.kcalc.desktop"."_k_friendly_name" = "KCalc";
"kglobalshortcutsrc"."org.kde.konsole.desktop"."_k_friendly_name" = "Konsole";
"kglobalshortcutsrc"."org.kde.krunner.desktop"."_k_friendly_name" = "KRunner";
"kglobalshortcutsrc"."org.kde.plasma.emojier.desktop"."_k_friendly_name" = "Emoji Selector";
"kglobalshortcutsrc"."org.kde.spectacle.desktop"."_k_friendly_name" = "Spectacle ";
"kglobalshortcutsrc"."org_kde_powerdevil"."_k_friendly_name" = "";
"kglobalshortcutsrc"."plasmashell"."_k_friendly_name" = "Plasma";
"kglobalshortcutsrc"."systemsettings.desktop"."_k_friendly_name" = "System Settings";
"kglobalshortcutsrc"."yakuake"."_k_friendly_name" = "Yakuake";
"khotkeysrc"."Data"."DataCount" = 3;
"khotkeysrc"."Data_1"."Comment" = "KMenuEdit Global Shortcuts";
"khotkeysrc"."Data_1"."DataCount" = 1;
"khotkeysrc"."Data_1"."Enabled" = true;
"khotkeysrc"."Data_1"."Name" = "KMenuEdit";
"khotkeysrc"."Data_1"."SystemGroup" = 1;
"khotkeysrc"."Data_1"."Type" = "ACTION_DATA_GROUP";
"khotkeysrc"."Data_1Conditions"."Comment" = "";
"khotkeysrc"."Data_1Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_1_1"."Comment" = "Comment";
"khotkeysrc"."Data_1_1"."Enabled" = true;
"khotkeysrc"."Data_1_1"."Name" = "Search";
"khotkeysrc"."Data_1_1"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_1_1Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_1_1Actions0"."CommandURL" = "http://google.com";
"khotkeysrc"."Data_1_1Actions0"."Type" = "COMMAND_URL";
"khotkeysrc"."Data_1_1Conditions"."Comment" = "";
"khotkeysrc"."Data_1_1Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_1_1Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_1_1Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_1_1Triggers0"."Key" = "";
"khotkeysrc"."Data_1_1Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_1_1Triggers0"."Uuid" = "{d03619b6-9b3c-48cc-9d9c-a2aadb485550}";
"khotkeysrc"."Data_2"."Comment" = "This group contains various examples demonstrating most of the features of KHotkeys. (Note that this group and all its actions are disabled by default.)";
"khotkeysrc"."Data_2"."DataCount" = 8;
"khotkeysrc"."Data_2"."Enabled" = false;
"khotkeysrc"."Data_2"."ImportId" = "kde32b1";
"khotkeysrc"."Data_2"."Name" = "Examples";
"khotkeysrc"."Data_2"."SystemGroup" = 0;
"khotkeysrc"."Data_2"."Type" = "ACTION_DATA_GROUP";
"khotkeysrc"."Data_2Conditions"."Comment" = "";
"khotkeysrc"."Data_2Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_1"."Comment" = "After pressing Ctrl+Alt+I, the KSIRC window will be activated, if it exists. Simple.";
"khotkeysrc"."Data_2_1"."Enabled" = false;
"khotkeysrc"."Data_2_1"."Name" = "Activate KSIRC Window";
"khotkeysrc"."Data_2_1"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_1Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_1Actions0"."Type" = "ACTIVATE_WINDOW";
"khotkeysrc"."Data_2_1Actions0Window"."Comment" = "KSIRC window";
"khotkeysrc"."Data_2_1Actions0Window"."WindowsCount" = 1;
"khotkeysrc"."Data_2_1Actions0Window0"."Class" = "ksirc";
"khotkeysrc"."Data_2_1Actions0Window0"."ClassType" = 1;
"khotkeysrc"."Data_2_1Actions0Window0"."Comment" = "KSIRC";
"khotkeysrc"."Data_2_1Actions0Window0"."Role" = "";
"khotkeysrc"."Data_2_1Actions0Window0"."RoleType" = 0;
"khotkeysrc"."Data_2_1Actions0Window0"."Title" = "";
"khotkeysrc"."Data_2_1Actions0Window0"."TitleType" = 0;
"khotkeysrc"."Data_2_1Actions0Window0"."Type" = "SIMPLE";
"khotkeysrc"."Data_2_1Actions0Window0"."WindowTypes" = 33;
"khotkeysrc"."Data_2_1Conditions"."Comment" = "";
"khotkeysrc"."Data_2_1Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_1Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_2_1Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_1Triggers0"."Key" = "Ctrl+Alt+I";
"khotkeysrc"."Data_2_1Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_1Triggers0"."Uuid" = "{24dd86db-8cad-4cfe-90c1-4dc99fd82b3c}";
"khotkeysrc"."Data_2_2"."Comment" = "After pressing Alt+Ctrl+H the input of 'Hello' will be simulated, as if you typed it. This is especially useful if you have call to frequently type a word (for instance, 'unsigned'). Every keypress in the input is separated by a colon ':'. Note that the keypresses literally mean keypresses, so you have to write what you would press on the keyboard. In the table below, the left column shows the input and the right column shows what to type.\n\n\"enter\" (i.e. new line) Enter or Return\na (i.e. small a) A\nA (i.e. capital a) Shift+A\n: (colon) Shift+;\n' ' (space) Space";
"khotkeysrc"."Data_2_2"."Enabled" = false;
"khotkeysrc"."Data_2_2"."Name" = "Type 'Hello'";
"khotkeysrc"."Data_2_2"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_2Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_2Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_2_2Actions0"."Input" = "Shift+H:E:L:L:O\n";
"khotkeysrc"."Data_2_2Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_2Conditions"."Comment" = "";
"khotkeysrc"."Data_2_2Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_2Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_2_2Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_2Triggers0"."Key" = "Ctrl+Alt+H";
"khotkeysrc"."Data_2_2Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_2Triggers0"."Uuid" = "{9a310197-d2b6-4ef8-a227-072d734024ab}";
"khotkeysrc"."Data_2_3"."Comment" = "This action runs Konsole, after pressing Ctrl+Alt+T.";
"khotkeysrc"."Data_2_3"."Enabled" = false;
"khotkeysrc"."Data_2_3"."Name" = "Run Konsole";
"khotkeysrc"."Data_2_3"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_3Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_3Actions0"."CommandURL" = "konsole";
"khotkeysrc"."Data_2_3Actions0"."Type" = "COMMAND_URL";
"khotkeysrc"."Data_2_3Conditions"."Comment" = "";
"khotkeysrc"."Data_2_3Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_3Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_2_3Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_3Triggers0"."Key" = "Ctrl+Alt+T";
"khotkeysrc"."Data_2_3Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_3Triggers0"."Uuid" = "{a07e67fe-65e3-4ea3-a533-9cbb1e14b221}";
"khotkeysrc"."Data_2_4"."Comment" = "Read the comment on the \"Type 'Hello'\" action first.\n\nQt Designer uses Ctrl+F4 for closing windows. In KDE, however, Ctrl+F4 is the shortcut for going to virtual desktop 4, so this shortcut does not work in Qt Designer. Further, Qt Designer does not use KDE's standard Ctrl+W for closing the window.\n\nThis problem can be solved by remapping Ctrl+W to Ctrl+F4 when the active window is Qt Designer. When Qt Designer is active, every time Ctrl+W is pressed, Ctrl+F4 will be sent to Qt Designer instead. In other applications, the effect of Ctrl+W is unchanged.\n\nWe now need to specify three things: A new shortcut trigger on 'Ctrl+W', a new keyboard input action sending Ctrl+F4, and a new condition that the active window is Qt Designer.\nQt Designer seems to always have title 'Qt Designer by Trolltech', so the condition will check for the active window having that title.";
"khotkeysrc"."Data_2_4"."Enabled" = false;
"khotkeysrc"."Data_2_4"."Name" = "Remap Ctrl+W to Ctrl+F4 in Qt Designer";
"khotkeysrc"."Data_2_4"."Type" = "GENERIC_ACTION_DATA";
"khotkeysrc"."Data_2_4Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_4Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_2_4Actions0"."Input" = "Ctrl+F4";
"khotkeysrc"."Data_2_4Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_4Conditions"."Comment" = "";
"khotkeysrc"."Data_2_4Conditions"."ConditionsCount" = 1;
"khotkeysrc"."Data_2_4Conditions0"."Type" = "ACTIVE_WINDOW";
"khotkeysrc"."Data_2_4Conditions0Window"."Comment" = "Qt Designer";
"khotkeysrc"."Data_2_4Conditions0Window"."WindowsCount" = 1;
"khotkeysrc"."Data_2_4Conditions0Window0"."Class" = "";
"khotkeysrc"."Data_2_4Conditions0Window0"."ClassType" = 0;
"khotkeysrc"."Data_2_4Conditions0Window0"."Comment" = "";
"khotkeysrc"."Data_2_4Conditions0Window0"."Role" = "";
"khotkeysrc"."Data_2_4Conditions0Window0"."RoleType" = 0;
"khotkeysrc"."Data_2_4Conditions0Window0"."Title" = "Qt Designer by Trolltech";
"khotkeysrc"."Data_2_4Conditions0Window0"."TitleType" = 2;
"khotkeysrc"."Data_2_4Conditions0Window0"."Type" = "SIMPLE";
"khotkeysrc"."Data_2_4Conditions0Window0"."WindowTypes" = 33;
"khotkeysrc"."Data_2_4Triggers"."Comment" = "";
"khotkeysrc"."Data_2_4Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_4Triggers0"."Key" = "Ctrl+W";
"khotkeysrc"."Data_2_4Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_4Triggers0"."Uuid" = "{bb31801d-1f7e-497a-acdd-d6ac4dc651b9}";
"khotkeysrc"."Data_2_5"."Comment" = "By pressing Alt+Ctrl+W a D-Bus call will be performed that will show the minicli. You can use any kind of D-Bus call, just like using the command line 'qdbus' tool.";
"khotkeysrc"."Data_2_5"."Enabled" = false;
"khotkeysrc"."Data_2_5"."Name" = "Perform D-Bus call 'qdbus org.kde.krunner /App display'";
"khotkeysrc"."Data_2_5"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_5Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_5Actions0"."Arguments" = "";
"khotkeysrc"."Data_2_5Actions0"."Call" = "popupExecuteCommand";
"khotkeysrc"."Data_2_5Actions0"."RemoteApp" = "org.kde.krunner";
"khotkeysrc"."Data_2_5Actions0"."RemoteObj" = "/App";
"khotkeysrc"."Data_2_5Actions0"."Type" = "DBUS";
"khotkeysrc"."Data_2_5Conditions"."Comment" = "";
"khotkeysrc"."Data_2_5Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_5Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_2_5Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_5Triggers0"."Key" = "Ctrl+Alt+W";
"khotkeysrc"."Data_2_5Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_5Triggers0"."Uuid" = "{811d3453-4611-4e42-864b-e7325b45969b}";
"khotkeysrc"."Data_2_6"."Comment" = "Read the comment on the \"Type 'Hello'\" action first.\n\nJust like the \"Type 'Hello'\" action, this one simulates keyboard input, specifically, after pressing Ctrl+Alt+B, it sends B to XMMS (B in XMMS jumps to the next song). The 'Send to specific window' checkbox is checked and a window with its class containing 'XMMS_Player' is specified; this will make the input always be sent to this window. This way, you can control XMMS even if, for instance, it is on a different virtual desktop.\n\n(Run 'xprop' and click on the XMMS window and search for WM_CLASS to see 'XMMS_Player').";
"khotkeysrc"."Data_2_6"."Enabled" = false;
"khotkeysrc"."Data_2_6"."Name" = "Next in XMMS";
"khotkeysrc"."Data_2_6"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_6Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_6Actions0"."DestinationWindow" = 1;
"khotkeysrc"."Data_2_6Actions0"."Input" = "B";
"khotkeysrc"."Data_2_6Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_6Actions0DestinationWindow"."Comment" = "XMMS window";
"khotkeysrc"."Data_2_6Actions0DestinationWindow"."WindowsCount" = 1;
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Class" = "XMMS_Player";
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."ClassType" = 1;
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Comment" = "XMMS Player window";
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Role" = "";
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."RoleType" = 0;
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Title" = "";
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."TitleType" = 0;
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Type" = "SIMPLE";
"khotkeysrc"."Data_2_6Actions0DestinationWindow0"."WindowTypes" = 33;
"khotkeysrc"."Data_2_6Conditions"."Comment" = "";
"khotkeysrc"."Data_2_6Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_6Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_2_6Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_6Triggers0"."Key" = "Ctrl+Alt+B";
"khotkeysrc"."Data_2_6Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_6Triggers0"."Uuid" = "{14de0367-f2e2-4535-a8b0-3a4aa9acc58b}";
"khotkeysrc"."Data_2_7"."Comment" = "Konqueror in KDE3.1 has tabs, and now you can also have gestures.\n\nJust press the middle mouse button and start drawing one of the gestures, and after you are finished, release the mouse button. If you only need to paste the selection, it still works, just click the middle mouse button. (You can change the mouse button to use in the global settings).\n\nRight now, there are the following gestures available:\nmove right and back left - Forward (Alt+Right)\nmove left and back right - Back (Alt+Left)\nmove up and back down - Up (Alt+Up)\ncircle counterclockwise - Reload (F5)\n\nThe gesture shapes can be entered by performing them in the configuration dialog. You can also look at your numeric pad to help you: gestures are recognized like a 3x3 grid of fields, numbered 1 to 9.\n\nNote that you must perform exactly the gesture to trigger the action. Because of this, it is possible to enter more gestures for the action. You should try to avoid complicated gestures where you change the direction of mouse movement more than once. For instance, 45654 or 74123 are simple to perform, but 1236987 may be already quite difficult.\n\nThe conditions for all gestures are defined in this group. All these gestures are active only if the active window is Konqueror (class contains 'konqueror').";
"khotkeysrc"."Data_2_7"."DataCount" = 4;
"khotkeysrc"."Data_2_7"."Enabled" = false;
"khotkeysrc"."Data_2_7"."Name" = "Konqi Gestures";
"khotkeysrc"."Data_2_7"."SystemGroup" = 0;
"khotkeysrc"."Data_2_7"."Type" = "ACTION_DATA_GROUP";
"khotkeysrc"."Data_2_7Conditions"."Comment" = "Konqueror window";
"khotkeysrc"."Data_2_7Conditions"."ConditionsCount" = 1;
"khotkeysrc"."Data_2_7Conditions0"."Type" = "ACTIVE_WINDOW";
"khotkeysrc"."Data_2_7Conditions0Window"."Comment" = "Konqueror";
"khotkeysrc"."Data_2_7Conditions0Window"."WindowsCount" = 1;
"khotkeysrc"."Data_2_7Conditions0Window0"."Class" = "konqueror";
"khotkeysrc"."Data_2_7Conditions0Window0"."ClassType" = 1;
"khotkeysrc"."Data_2_7Conditions0Window0"."Comment" = "Konqueror";
"khotkeysrc"."Data_2_7Conditions0Window0"."Role" = "";
"khotkeysrc"."Data_2_7Conditions0Window0"."RoleType" = 0;
"khotkeysrc"."Data_2_7Conditions0Window0"."Title" = "";
"khotkeysrc"."Data_2_7Conditions0Window0"."TitleType" = 0;
"khotkeysrc"."Data_2_7Conditions0Window0"."Type" = "SIMPLE";
"khotkeysrc"."Data_2_7Conditions0Window0"."WindowTypes" = 33;
"khotkeysrc"."Data_2_7_1"."Comment" = "";
"khotkeysrc"."Data_2_7_1"."Enabled" = false;
"khotkeysrc"."Data_2_7_1"."Name" = "Back";
"khotkeysrc"."Data_2_7_1"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_7_1Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_7_1Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_2_7_1Actions0"."Input" = "Alt+Left";
"khotkeysrc"."Data_2_7_1Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_7_1Conditions"."Comment" = "";
"khotkeysrc"."Data_2_7_1Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_7_1Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_2_7_1Triggers"."TriggersCount" = 3;
"khotkeysrc"."Data_2_7_1Triggers0"."GesturePointData" = "0,0.0625,1,1,0.5,0.0625,0.0625,1,0.875,0.5,0.125,0.0625,1,0.75,0.5,0.1875,0.0625,1,0.625,0.5,0.25,0.0625,1,0.5,0.5,0.3125,0.0625,1,0.375,0.5,0.375,0.0625,1,0.25,0.5,0.4375,0.0625,1,0.125,0.5,0.5,0.0625,0,0,0.5,0.5625,0.0625,0,0.125,0.5,0.625,0.0625,0,0.25,0.5,0.6875,0.0625,0,0.375,0.5,0.75,0.0625,0,0.5,0.5,0.8125,0.0625,0,0.625,0.5,0.875,0.0625,0,0.75,0.5,0.9375,0.0625,0,0.875,0.5,1,0,0,1,0.5";
"khotkeysrc"."Data_2_7_1Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_1Triggers1"."GesturePointData" = "0,0.0833333,1,0.5,0.5,0.0833333,0.0833333,1,0.375,0.5,0.166667,0.0833333,1,0.25,0.5,0.25,0.0833333,1,0.125,0.5,0.333333,0.0833333,0,0,0.5,0.416667,0.0833333,0,0.125,0.5,0.5,0.0833333,0,0.25,0.5,0.583333,0.0833333,0,0.375,0.5,0.666667,0.0833333,0,0.5,0.5,0.75,0.0833333,0,0.625,0.5,0.833333,0.0833333,0,0.75,0.5,0.916667,0.0833333,0,0.875,0.5,1,0,0,1,0.5";
"khotkeysrc"."Data_2_7_1Triggers1"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_1Triggers2"."GesturePointData" = "0,0.0833333,1,1,0.5,0.0833333,0.0833333,1,0.875,0.5,0.166667,0.0833333,1,0.75,0.5,0.25,0.0833333,1,0.625,0.5,0.333333,0.0833333,1,0.5,0.5,0.416667,0.0833333,1,0.375,0.5,0.5,0.0833333,1,0.25,0.5,0.583333,0.0833333,1,0.125,0.5,0.666667,0.0833333,0,0,0.5,0.75,0.0833333,0,0.125,0.5,0.833333,0.0833333,0,0.25,0.5,0.916667,0.0833333,0,0.375,0.5,1,0,0,0.5,0.5";
"khotkeysrc"."Data_2_7_1Triggers2"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_2"."Comment" = "";
"khotkeysrc"."Data_2_7_2"."Enabled" = false;
"khotkeysrc"."Data_2_7_2"."Name" = "Forward";
"khotkeysrc"."Data_2_7_2"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_7_2Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_7_2Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_2_7_2Actions0"."Input" = "Alt+Right";
"khotkeysrc"."Data_2_7_2Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_7_2Conditions"."Comment" = "";
"khotkeysrc"."Data_2_7_2Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_7_2Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_2_7_2Triggers"."TriggersCount" = 3;
"khotkeysrc"."Data_2_7_2Triggers0"."GesturePointData" = "0,0.0625,0,0,0.5,0.0625,0.0625,0,0.125,0.5,0.125,0.0625,0,0.25,0.5,0.1875,0.0625,0,0.375,0.5,0.25,0.0625,0,0.5,0.5,0.3125,0.0625,0,0.625,0.5,0.375,0.0625,0,0.75,0.5,0.4375,0.0625,0,0.875,0.5,0.5,0.0625,1,1,0.5,0.5625,0.0625,1,0.875,0.5,0.625,0.0625,1,0.75,0.5,0.6875,0.0625,1,0.625,0.5,0.75,0.0625,1,0.5,0.5,0.8125,0.0625,1,0.375,0.5,0.875,0.0625,1,0.25,0.5,0.9375,0.0625,1,0.125,0.5,1,0,0,0,0.5";
"khotkeysrc"."Data_2_7_2Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_2Triggers1"."GesturePointData" = "0,0.0833333,0,0.5,0.5,0.0833333,0.0833333,0,0.625,0.5,0.166667,0.0833333,0,0.75,0.5,0.25,0.0833333,0,0.875,0.5,0.333333,0.0833333,1,1,0.5,0.416667,0.0833333,1,0.875,0.5,0.5,0.0833333,1,0.75,0.5,0.583333,0.0833333,1,0.625,0.5,0.666667,0.0833333,1,0.5,0.5,0.75,0.0833333,1,0.375,0.5,0.833333,0.0833333,1,0.25,0.5,0.916667,0.0833333,1,0.125,0.5,1,0,0,0,0.5";
"khotkeysrc"."Data_2_7_2Triggers1"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_2Triggers2"."GesturePointData" = "0,0.0833333,0,0,0.5,0.0833333,0.0833333,0,0.125,0.5,0.166667,0.0833333,0,0.25,0.5,0.25,0.0833333,0,0.375,0.5,0.333333,0.0833333,0,0.5,0.5,0.416667,0.0833333,0,0.625,0.5,0.5,0.0833333,0,0.75,0.5,0.583333,0.0833333,0,0.875,0.5,0.666667,0.0833333,1,1,0.5,0.75,0.0833333,1,0.875,0.5,0.833333,0.0833333,1,0.75,0.5,0.916667,0.0833333,1,0.625,0.5,1,0,0,0.5,0.5";
"khotkeysrc"."Data_2_7_2Triggers2"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_3"."Comment" = "";
"khotkeysrc"."Data_2_7_3"."Enabled" = false;
"khotkeysrc"."Data_2_7_3"."Name" = "Up";
"khotkeysrc"."Data_2_7_3"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_7_3Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_7_3Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_2_7_3Actions0"."Input" = "Alt+Up";
"khotkeysrc"."Data_2_7_3Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_7_3Conditions"."Comment" = "";
"khotkeysrc"."Data_2_7_3Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_7_3Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_2_7_3Triggers"."TriggersCount" = 3;
"khotkeysrc"."Data_2_7_3Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1";
"khotkeysrc"."Data_2_7_3Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_3Triggers1"."GesturePointData" = "0,0.0833333,-0.5,0.5,1,0.0833333,0.0833333,-0.5,0.5,0.875,0.166667,0.0833333,-0.5,0.5,0.75,0.25,0.0833333,-0.5,0.5,0.625,0.333333,0.0833333,-0.5,0.5,0.5,0.416667,0.0833333,-0.5,0.5,0.375,0.5,0.0833333,-0.5,0.5,0.25,0.583333,0.0833333,-0.5,0.5,0.125,0.666667,0.0833333,0.5,0.5,0,0.75,0.0833333,0.5,0.5,0.125,0.833333,0.0833333,0.5,0.5,0.25,0.916667,0.0833333,0.5,0.5,0.375,1,0,0,0.5,0.5";
"khotkeysrc"."Data_2_7_3Triggers1"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_3Triggers2"."GesturePointData" = "0,0.0833333,-0.5,0.5,0.5,0.0833333,0.0833333,-0.5,0.5,0.375,0.166667,0.0833333,-0.5,0.5,0.25,0.25,0.0833333,-0.5,0.5,0.125,0.333333,0.0833333,0.5,0.5,0,0.416667,0.0833333,0.5,0.5,0.125,0.5,0.0833333,0.5,0.5,0.25,0.583333,0.0833333,0.5,0.5,0.375,0.666667,0.0833333,0.5,0.5,0.5,0.75,0.0833333,0.5,0.5,0.625,0.833333,0.0833333,0.5,0.5,0.75,0.916667,0.0833333,0.5,0.5,0.875,1,0,0,0.5,1";
"khotkeysrc"."Data_2_7_3Triggers2"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_4"."Comment" = "";
"khotkeysrc"."Data_2_7_4"."Enabled" = false;
"khotkeysrc"."Data_2_7_4"."Name" = "Reload";
"khotkeysrc"."Data_2_7_4"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_7_4Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_7_4Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_2_7_4Actions0"."Input" = "F5";
"khotkeysrc"."Data_2_7_4Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_2_7_4Conditions"."Comment" = "";
"khotkeysrc"."Data_2_7_4Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_7_4Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_2_7_4Triggers"."TriggersCount" = 3;
"khotkeysrc"."Data_2_7_4Triggers0"."GesturePointData" = "0,0.03125,0,0,1,0.03125,0.03125,0,0.125,1,0.0625,0.03125,0,0.25,1,0.09375,0.03125,0,0.375,1,0.125,0.03125,0,0.5,1,0.15625,0.03125,0,0.625,1,0.1875,0.03125,0,0.75,1,0.21875,0.03125,0,0.875,1,0.25,0.03125,-0.5,1,1,0.28125,0.03125,-0.5,1,0.875,0.3125,0.03125,-0.5,1,0.75,0.34375,0.03125,-0.5,1,0.625,0.375,0.03125,-0.5,1,0.5,0.40625,0.03125,-0.5,1,0.375,0.4375,0.03125,-0.5,1,0.25,0.46875,0.03125,-0.5,1,0.125,0.5,0.03125,1,1,0,0.53125,0.03125,1,0.875,0,0.5625,0.03125,1,0.75,0,0.59375,0.03125,1,0.625,0,0.625,0.03125,1,0.5,0,0.65625,0.03125,1,0.375,0,0.6875,0.03125,1,0.25,0,0.71875,0.03125,1,0.125,0,0.75,0.03125,0.5,0,0,0.78125,0.03125,0.5,0,0.125,0.8125,0.03125,0.5,0,0.25,0.84375,0.03125,0.5,0,0.375,0.875,0.03125,0.5,0,0.5,0.90625,0.03125,0.5,0,0.625,0.9375,0.03125,0.5,0,0.75,0.96875,0.03125,0.5,0,0.875,1,0,0,0,1";
"khotkeysrc"."Data_2_7_4Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_4Triggers1"."GesturePointData" = "0,0.0277778,0,0,1,0.0277778,0.0277778,0,0.125,1,0.0555556,0.0277778,0,0.25,1,0.0833333,0.0277778,0,0.375,1,0.111111,0.0277778,0,0.5,1,0.138889,0.0277778,0,0.625,1,0.166667,0.0277778,0,0.75,1,0.194444,0.0277778,0,0.875,1,0.222222,0.0277778,-0.5,1,1,0.25,0.0277778,-0.5,1,0.875,0.277778,0.0277778,-0.5,1,0.75,0.305556,0.0277778,-0.5,1,0.625,0.333333,0.0277778,-0.5,1,0.5,0.361111,0.0277778,-0.5,1,0.375,0.388889,0.0277778,-0.5,1,0.25,0.416667,0.0277778,-0.5,1,0.125,0.444444,0.0277778,1,1,0,0.472222,0.0277778,1,0.875,0,0.5,0.0277778,1,0.75,0,0.527778,0.0277778,1,0.625,0,0.555556,0.0277778,1,0.5,0,0.583333,0.0277778,1,0.375,0,0.611111,0.0277778,1,0.25,0,0.638889,0.0277778,1,0.125,0,0.666667,0.0277778,0.5,0,0,0.694444,0.0277778,0.5,0,0.125,0.722222,0.0277778,0.5,0,0.25,0.75,0.0277778,0.5,0,0.375,0.777778,0.0277778,0.5,0,0.5,0.805556,0.0277778,0.5,0,0.625,0.833333,0.0277778,0.5,0,0.75,0.861111,0.0277778,0.5,0,0.875,0.888889,0.0277778,0,0,1,0.916667,0.0277778,0,0.125,1,0.944444,0.0277778,0,0.25,1,0.972222,0.0277778,0,0.375,1,1,0,0,0.5,1";
"khotkeysrc"."Data_2_7_4Triggers1"."Type" = "GESTURE";
"khotkeysrc"."Data_2_7_4Triggers2"."GesturePointData" = "0,0.0277778,0.5,0,0.5,0.0277778,0.0277778,0.5,0,0.625,0.0555556,0.0277778,0.5,0,0.75,0.0833333,0.0277778,0.5,0,0.875,0.111111,0.0277778,0,0,1,0.138889,0.0277778,0,0.125,1,0.166667,0.0277778,0,0.25,1,0.194444,0.0277778,0,0.375,1,0.222222,0.0277778,0,0.5,1,0.25,0.0277778,0,0.625,1,0.277778,0.0277778,0,0.75,1,0.305556,0.0277778,0,0.875,1,0.333333,0.0277778,-0.5,1,1,0.361111,0.0277778,-0.5,1,0.875,0.388889,0.0277778,-0.5,1,0.75,0.416667,0.0277778,-0.5,1,0.625,0.444444,0.0277778,-0.5,1,0.5,0.472222,0.0277778,-0.5,1,0.375,0.5,0.0277778,-0.5,1,0.25,0.527778,0.0277778,-0.5,1,0.125,0.555556,0.0277778,1,1,0,0.583333,0.0277778,1,0.875,0,0.611111,0.0277778,1,0.75,0,0.638889,0.0277778,1,0.625,0,0.666667,0.0277778,1,0.5,0,0.694444,0.0277778,1,0.375,0,0.722222,0.0277778,1,0.25,0,0.75,0.0277778,1,0.125,0,0.777778,0.0277778,0.5,0,0,0.805556,0.0277778,0.5,0,0.125,0.833333,0.0277778,0.5,0,0.25,0.861111,0.0277778,0.5,0,0.375,0.888889,0.0277778,0.5,0,0.5,0.916667,0.0277778,0.5,0,0.625,0.944444,0.0277778,0.5,0,0.75,0.972222,0.0277778,0.5,0,0.875,1,0,0,0,1";
"khotkeysrc"."Data_2_7_4Triggers2"."Type" = "GESTURE";
"khotkeysrc"."Data_2_8"."Comment" = "After pressing Win+E (Tux+E) a WWW browser will be launched, and it will open http://www.kde.org . You may run all kind of commands you can run in minicli (Alt+F2).";
"khotkeysrc"."Data_2_8"."Enabled" = false;
"khotkeysrc"."Data_2_8"."Name" = "Go to KDE Website";
"khotkeysrc"."Data_2_8"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_2_8Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_2_8Actions0"."CommandURL" = "http://www.kde.org";
"khotkeysrc"."Data_2_8Actions0"."Type" = "COMMAND_URL";
"khotkeysrc"."Data_2_8Conditions"."Comment" = "";
"khotkeysrc"."Data_2_8Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_2_8Triggers"."Comment" = "Simple_action";
"khotkeysrc"."Data_2_8Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_2_8Triggers0"."Key" = "Meta+E";
"khotkeysrc"."Data_2_8Triggers0"."Type" = "SHORTCUT";
"khotkeysrc"."Data_2_8Triggers0"."Uuid" = "{01088b4f-cb8e-4f32-9b6e-fc5c20408aa1}";
"khotkeysrc"."Data_3"."Comment" = "Basic Konqueror gestures.";
"khotkeysrc"."Data_3"."DataCount" = 14;
"khotkeysrc"."Data_3"."Enabled" = true;
"khotkeysrc"."Data_3"."ImportId" = "konqueror_gestures_kde321";
"khotkeysrc"."Data_3"."Name" = "Konqueror Gestures";
"khotkeysrc"."Data_3"."SystemGroup" = 0;
"khotkeysrc"."Data_3"."Type" = "ACTION_DATA_GROUP";
"khotkeysrc"."Data_3Conditions"."Comment" = "Konqueror window";
"khotkeysrc"."Data_3Conditions"."ConditionsCount" = 1;
"khotkeysrc"."Data_3Conditions0"."Type" = "ACTIVE_WINDOW";
"khotkeysrc"."Data_3Conditions0Window"."Comment" = "Konqueror";
"khotkeysrc"."Data_3Conditions0Window"."WindowsCount" = 1;
"khotkeysrc"."Data_3Conditions0Window0"."Class" = "^konqueror\s";
"khotkeysrc"."Data_3Conditions0Window0"."ClassType" = 3;
"khotkeysrc"."Data_3Conditions0Window0"."Comment" = "Konqueror";
"khotkeysrc"."Data_3Conditions0Window0"."Role" = "konqueror-mainwindow#1";
"khotkeysrc"."Data_3Conditions0Window0"."RoleType" = 0;
"khotkeysrc"."Data_3Conditions0Window0"."Title" = "file:/ - Konqueror";
"khotkeysrc"."Data_3Conditions0Window0"."TitleType" = 0;
"khotkeysrc"."Data_3Conditions0Window0"."Type" = "SIMPLE";
"khotkeysrc"."Data_3Conditions0Window0"."WindowTypes" = 1;
"khotkeysrc"."Data_3_1"."Comment" = "Press, move left, release.";
"khotkeysrc"."Data_3_1"."Enabled" = true;
"khotkeysrc"."Data_3_1"."Name" = "Back";
"khotkeysrc"."Data_3_1"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_10"."Comment" = "Opera-style: Press, move up, release.\nNOTE: Conflicts with 'New Tab', and as such is disabled by default.";
"khotkeysrc"."Data_3_10"."Enabled" = false;
"khotkeysrc"."Data_3_10"."Name" = "Stop Loading";
"khotkeysrc"."Data_3_10"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_10Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_10Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_10Actions0"."Input" = "Escape\n";
"khotkeysrc"."Data_3_10Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_10Conditions"."Comment" = "";
"khotkeysrc"."Data_3_10Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_10Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_10Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_10Triggers0"."GesturePointData" = "0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0";
"khotkeysrc"."Data_3_10Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_11"."Comment" = "Going up in URL/directory structure.\nMozilla-style: Press, move up, move left, move up, release.";
"khotkeysrc"."Data_3_11"."Enabled" = true;
"khotkeysrc"."Data_3_11"."Name" = "Up";
"khotkeysrc"."Data_3_11"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_11Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_11Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_11Actions0"."Input" = "Alt+Up";
"khotkeysrc"."Data_3_11Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_11Conditions"."Comment" = "";
"khotkeysrc"."Data_3_11Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_11Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_11Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_11Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,1,1,0.5,0.3125,0.0625,1,0.875,0.5,0.375,0.0625,1,0.75,0.5,0.4375,0.0625,1,0.625,0.5,0.5,0.0625,1,0.5,0.5,0.5625,0.0625,1,0.375,0.5,0.625,0.0625,1,0.25,0.5,0.6875,0.0625,1,0.125,0.5,0.75,0.0625,-0.5,0,0.5,0.8125,0.0625,-0.5,0,0.375,0.875,0.0625,-0.5,0,0.25,0.9375,0.0625,-0.5,0,0.125,1,0,0,0,0";
"khotkeysrc"."Data_3_11Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_12"."Comment" = "Going up in URL/directory structure.\nOpera-style: Press, move up, move left, move up, release.\nNOTE: Conflicts with \"Activate Previous Tab\", and as such is disabled by default.";
"khotkeysrc"."Data_3_12"."Enabled" = false;
"khotkeysrc"."Data_3_12"."Name" = "Up #2";
"khotkeysrc"."Data_3_12"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_12Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_12Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_12Actions0"."Input" = "Alt+Up\n";
"khotkeysrc"."Data_3_12Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_12Conditions"."Comment" = "";
"khotkeysrc"."Data_3_12Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_12Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_12Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_12Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0";
"khotkeysrc"."Data_3_12Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_13"."Comment" = "Press, move up, move right, release.";
"khotkeysrc"."Data_3_13"."Enabled" = true;
"khotkeysrc"."Data_3_13"."Name" = "Activate Next Tab";
"khotkeysrc"."Data_3_13"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_13Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_13Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_13Actions0"."Input" = "Ctrl+.\n";
"khotkeysrc"."Data_3_13Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_13Conditions"."Comment" = "";
"khotkeysrc"."Data_3_13Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_13Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_13Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_13Triggers0"."GesturePointData" = "0,0.0625,-0.5,0,1,0.0625,0.0625,-0.5,0,0.875,0.125,0.0625,-0.5,0,0.75,0.1875,0.0625,-0.5,0,0.625,0.25,0.0625,-0.5,0,0.5,0.3125,0.0625,-0.5,0,0.375,0.375,0.0625,-0.5,0,0.25,0.4375,0.0625,-0.5,0,0.125,0.5,0.0625,0,0,0,0.5625,0.0625,0,0.125,0,0.625,0.0625,0,0.25,0,0.6875,0.0625,0,0.375,0,0.75,0.0625,0,0.5,0,0.8125,0.0625,0,0.625,0,0.875,0.0625,0,0.75,0,0.9375,0.0625,0,0.875,0,1,0,0,1,0";
"khotkeysrc"."Data_3_13Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_14"."Comment" = "Press, move up, move left, release.";
"khotkeysrc"."Data_3_14"."Enabled" = true;
"khotkeysrc"."Data_3_14"."Name" = "Activate Previous Tab";
"khotkeysrc"."Data_3_14"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_14Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_14Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_14Actions0"."Input" = "Ctrl+,";
"khotkeysrc"."Data_3_14Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_14Conditions"."Comment" = "";
"khotkeysrc"."Data_3_14Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_14Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_14Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_14Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0";
"khotkeysrc"."Data_3_14Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_1Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_1Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_1Actions0"."Input" = "Alt+Left";
"khotkeysrc"."Data_3_1Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_1Conditions"."Comment" = "";
"khotkeysrc"."Data_3_1Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_1Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_1Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_1Triggers0"."GesturePointData" = "0,0.125,1,1,0.5,0.125,0.125,1,0.875,0.5,0.25,0.125,1,0.75,0.5,0.375,0.125,1,0.625,0.5,0.5,0.125,1,0.5,0.5,0.625,0.125,1,0.375,0.5,0.75,0.125,1,0.25,0.5,0.875,0.125,1,0.125,0.5,1,0,0,0,0.5";
"khotkeysrc"."Data_3_1Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_2"."Comment" = "Press, move down, move up, move down, release.";
"khotkeysrc"."Data_3_2"."Enabled" = true;
"khotkeysrc"."Data_3_2"."Name" = "Duplicate Tab";
"khotkeysrc"."Data_3_2"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_2Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_2Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_2Actions0"."Input" = "Ctrl+Shift+D\n";
"khotkeysrc"."Data_3_2Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_2Conditions"."Comment" = "";
"khotkeysrc"."Data_3_2Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_2Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_2Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_2Triggers0"."GesturePointData" = "0,0.0416667,0.5,0.5,0,0.0416667,0.0416667,0.5,0.5,0.125,0.0833333,0.0416667,0.5,0.5,0.25,0.125,0.0416667,0.5,0.5,0.375,0.166667,0.0416667,0.5,0.5,0.5,0.208333,0.0416667,0.5,0.5,0.625,0.25,0.0416667,0.5,0.5,0.75,0.291667,0.0416667,0.5,0.5,0.875,0.333333,0.0416667,-0.5,0.5,1,0.375,0.0416667,-0.5,0.5,0.875,0.416667,0.0416667,-0.5,0.5,0.75,0.458333,0.0416667,-0.5,0.5,0.625,0.5,0.0416667,-0.5,0.5,0.5,0.541667,0.0416667,-0.5,0.5,0.375,0.583333,0.0416667,-0.5,0.5,0.25,0.625,0.0416667,-0.5,0.5,0.125,0.666667,0.0416667,0.5,0.5,0,0.708333,0.0416667,0.5,0.5,0.125,0.75,0.0416667,0.5,0.5,0.25,0.791667,0.0416667,0.5,0.5,0.375,0.833333,0.0416667,0.5,0.5,0.5,0.875,0.0416667,0.5,0.5,0.625,0.916667,0.0416667,0.5,0.5,0.75,0.958333,0.0416667,0.5,0.5,0.875,1,0,0,0.5,1";
"khotkeysrc"."Data_3_2Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_3"."Comment" = "Press, move down, move up, release.";
"khotkeysrc"."Data_3_3"."Enabled" = true;
"khotkeysrc"."Data_3_3"."Name" = "Duplicate Window";
"khotkeysrc"."Data_3_3"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_3Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_3Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_3Actions0"."Input" = "Ctrl+D\n";
"khotkeysrc"."Data_3_3Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_3Conditions"."Comment" = "";
"khotkeysrc"."Data_3_3Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_3Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_3Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_3Triggers0"."GesturePointData" = "0,0.0625,0.5,0.5,0,0.0625,0.0625,0.5,0.5,0.125,0.125,0.0625,0.5,0.5,0.25,0.1875,0.0625,0.5,0.5,0.375,0.25,0.0625,0.5,0.5,0.5,0.3125,0.0625,0.5,0.5,0.625,0.375,0.0625,0.5,0.5,0.75,0.4375,0.0625,0.5,0.5,0.875,0.5,0.0625,-0.5,0.5,1,0.5625,0.0625,-0.5,0.5,0.875,0.625,0.0625,-0.5,0.5,0.75,0.6875,0.0625,-0.5,0.5,0.625,0.75,0.0625,-0.5,0.5,0.5,0.8125,0.0625,-0.5,0.5,0.375,0.875,0.0625,-0.5,0.5,0.25,0.9375,0.0625,-0.5,0.5,0.125,1,0,0,0.5,0";
"khotkeysrc"."Data_3_3Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_4"."Comment" = "Press, move right, release.";
"khotkeysrc"."Data_3_4"."Enabled" = true;
"khotkeysrc"."Data_3_4"."Name" = "Forward";
"khotkeysrc"."Data_3_4"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_4Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_4Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_4Actions0"."Input" = "Alt+Right";
"khotkeysrc"."Data_3_4Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_4Conditions"."Comment" = "";
"khotkeysrc"."Data_3_4Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_4Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_4Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_4Triggers0"."GesturePointData" = "0,0.125,0,0,0.5,0.125,0.125,0,0.125,0.5,0.25,0.125,0,0.25,0.5,0.375,0.125,0,0.375,0.5,0.5,0.125,0,0.5,0.5,0.625,0.125,0,0.625,0.5,0.75,0.125,0,0.75,0.5,0.875,0.125,0,0.875,0.5,1,0,0,1,0.5";
"khotkeysrc"."Data_3_4Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_5"."Comment" = "Press, move down, move half up, move right, move down, release.\n(Drawing a lowercase 'h'.)";
"khotkeysrc"."Data_3_5"."Enabled" = true;
"khotkeysrc"."Data_3_5"."Name" = "Home";
"khotkeysrc"."Data_3_5"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_5Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_5Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_5Actions0"."Input" = "Alt+Home\n";
"khotkeysrc"."Data_3_5Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_5Conditions"."Comment" = "";
"khotkeysrc"."Data_3_5Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_5Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_5Triggers"."TriggersCount" = 2;
"khotkeysrc"."Data_3_5Triggers0"."GesturePointData" = "0,0.0461748,0.5,0,0,0.0461748,0.0461748,0.5,0,0.125,0.0923495,0.0461748,0.5,0,0.25,0.138524,0.0461748,0.5,0,0.375,0.184699,0.0461748,0.5,0,0.5,0.230874,0.0461748,0.5,0,0.625,0.277049,0.0461748,0.5,0,0.75,0.323223,0.0461748,0.5,0,0.875,0.369398,0.065301,-0.25,0,1,0.434699,0.065301,-0.25,0.125,0.875,0.5,0.065301,-0.25,0.25,0.75,0.565301,0.065301,-0.25,0.375,0.625,0.630602,0.0461748,0,0.5,0.5,0.676777,0.0461748,0,0.625,0.5,0.722951,0.0461748,0,0.75,0.5,0.769126,0.0461748,0,0.875,0.5,0.815301,0.0461748,0.5,1,0.5,0.861476,0.0461748,0.5,1,0.625,0.90765,0.0461748,0.5,1,0.75,0.953825,0.0461748,0.5,1,0.875,1,0,0,1,1";
"khotkeysrc"."Data_3_5Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_5Triggers1"."GesturePointData" = "0,0.0416667,0.5,0,0,0.0416667,0.0416667,0.5,0,0.125,0.0833333,0.0416667,0.5,0,0.25,0.125,0.0416667,0.5,0,0.375,0.166667,0.0416667,0.5,0,0.5,0.208333,0.0416667,0.5,0,0.625,0.25,0.0416667,0.5,0,0.75,0.291667,0.0416667,0.5,0,0.875,0.333333,0.0416667,-0.5,0,1,0.375,0.0416667,-0.5,0,0.875,0.416667,0.0416667,-0.5,0,0.75,0.458333,0.0416667,-0.5,0,0.625,0.5,0.0416667,0,0,0.5,0.541667,0.0416667,0,0.125,0.5,0.583333,0.0416667,0,0.25,0.5,0.625,0.0416667,0,0.375,0.5,0.666667,0.0416667,0,0.5,0.5,0.708333,0.0416667,0,0.625,0.5,0.75,0.0416667,0,0.75,0.5,0.791667,0.0416667,0,0.875,0.5,0.833333,0.0416667,0.5,1,0.5,0.875,0.0416667,0.5,1,0.625,0.916667,0.0416667,0.5,1,0.75,0.958333,0.0416667,0.5,1,0.875,1,0,0,1,1";
"khotkeysrc"."Data_3_5Triggers1"."Type" = "GESTURE";
"khotkeysrc"."Data_3_6"."Comment" = "Press, move right, move down, move right, release.\nMozilla-style: Press, move down, move right, release.";
"khotkeysrc"."Data_3_6"."Enabled" = true;
"khotkeysrc"."Data_3_6"."Name" = "Close Tab";
"khotkeysrc"."Data_3_6"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_6Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_6Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_6Actions0"."Input" = "Ctrl+W\n";
"khotkeysrc"."Data_3_6Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_6Conditions"."Comment" = "";
"khotkeysrc"."Data_3_6Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_6Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_6Triggers"."TriggersCount" = 2;
"khotkeysrc"."Data_3_6Triggers0"."GesturePointData" = "0,0.0625,0,0,0,0.0625,0.0625,0,0.125,0,0.125,0.0625,0,0.25,0,0.1875,0.0625,0,0.375,0,0.25,0.0625,0.5,0.5,0,0.3125,0.0625,0.5,0.5,0.125,0.375,0.0625,0.5,0.5,0.25,0.4375,0.0625,0.5,0.5,0.375,0.5,0.0625,0.5,0.5,0.5,0.5625,0.0625,0.5,0.5,0.625,0.625,0.0625,0.5,0.5,0.75,0.6875,0.0625,0.5,0.5,0.875,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1";
"khotkeysrc"."Data_3_6Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_6Triggers1"."GesturePointData" = "0,0.0625,0.5,0,0,0.0625,0.0625,0.5,0,0.125,0.125,0.0625,0.5,0,0.25,0.1875,0.0625,0.5,0,0.375,0.25,0.0625,0.5,0,0.5,0.3125,0.0625,0.5,0,0.625,0.375,0.0625,0.5,0,0.75,0.4375,0.0625,0.5,0,0.875,0.5,0.0625,0,0,1,0.5625,0.0625,0,0.125,1,0.625,0.0625,0,0.25,1,0.6875,0.0625,0,0.375,1,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1";
"khotkeysrc"."Data_3_6Triggers1"."Type" = "GESTURE";
"khotkeysrc"."Data_3_7"."Comment" = "Press, move up, release.\nConflicts with Opera-style 'Up #2', which is disabled by default.";
"khotkeysrc"."Data_3_7"."Enabled" = true;
"khotkeysrc"."Data_3_7"."Name" = "New Tab";
"khotkeysrc"."Data_3_7"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_7Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_7Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_7Actions0"."Input" = "Ctrl+Shift+N";
"khotkeysrc"."Data_3_7Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_7Conditions"."Comment" = "";
"khotkeysrc"."Data_3_7Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_7Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_7Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_7Triggers0"."GesturePointData" = "0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0";
"khotkeysrc"."Data_3_7Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_8"."Comment" = "Press, move down, release.";
"khotkeysrc"."Data_3_8"."Enabled" = true;
"khotkeysrc"."Data_3_8"."Name" = "New Window";
"khotkeysrc"."Data_3_8"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_8Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_8Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_8Actions0"."Input" = "Ctrl+N\n";
"khotkeysrc"."Data_3_8Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_8Conditions"."Comment" = "";
"khotkeysrc"."Data_3_8Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_8Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_8Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_8Triggers0"."GesturePointData" = "0,0.125,0.5,0.5,0,0.125,0.125,0.5,0.5,0.125,0.25,0.125,0.5,0.5,0.25,0.375,0.125,0.5,0.5,0.375,0.5,0.125,0.5,0.5,0.5,0.625,0.125,0.5,0.5,0.625,0.75,0.125,0.5,0.5,0.75,0.875,0.125,0.5,0.5,0.875,1,0,0,0.5,1";
"khotkeysrc"."Data_3_8Triggers0"."Type" = "GESTURE";
"khotkeysrc"."Data_3_9"."Comment" = "Press, move up, move down, release.";
"khotkeysrc"."Data_3_9"."Enabled" = true;
"khotkeysrc"."Data_3_9"."Name" = "Reload";
"khotkeysrc"."Data_3_9"."Type" = "SIMPLE_ACTION_DATA";
"khotkeysrc"."Data_3_9Actions"."ActionsCount" = 1;
"khotkeysrc"."Data_3_9Actions0"."DestinationWindow" = 2;
"khotkeysrc"."Data_3_9Actions0"."Input" = "F5";
"khotkeysrc"."Data_3_9Actions0"."Type" = "KEYBOARD_INPUT";
"khotkeysrc"."Data_3_9Conditions"."Comment" = "";
"khotkeysrc"."Data_3_9Conditions"."ConditionsCount" = 0;
"khotkeysrc"."Data_3_9Triggers"."Comment" = "Gesture_triggers";
"khotkeysrc"."Data_3_9Triggers"."TriggersCount" = 1;
"khotkeysrc"."Data_3_9Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1";
"khotkeysrc"."Data_3_9Triggers0"."Type" = "GESTURE";
"khotkeysrc"."DirSelect Dialog"."DirSelectDialog Size[$d]" = "";
"khotkeysrc"."General"."AccentColor[$d]" = "";
"khotkeysrc"."General"."AllowKDEAppsToRememberWindowPositions[$d]" = "";
"khotkeysrc"."General"."BrowserApplication[$d]" = "";
"khotkeysrc"."General"."ColorSchemeHash[$d]" = "";
"khotkeysrc"."General"."ColorScheme[$d]" = "";
"khotkeysrc"."General"."LastUsedCustomAccentColor[$d]" = "";
"khotkeysrc"."General"."XftAntialias[$d]" = "";
"khotkeysrc"."General"."XftHintStyle[$d]" = "";
"khotkeysrc"."General"."XftSubPixel[$d]" = "";
"khotkeysrc"."General"."accentColorFromWallpaper[$d]" = "";
"khotkeysrc"."Gestures"."Disabled" = true;
"khotkeysrc"."Gestures"."MouseButton" = 2;
"khotkeysrc"."Gestures"."Timeout" = 300;
"khotkeysrc"."GesturesExclude"."Comment" = "";
"khotkeysrc"."GesturesExclude"."WindowsCount" = 0;
"khotkeysrc"."Icons"."Theme[$d]" = "";
"khotkeysrc"."KDE"."LookAndFeelPackage[$d]" = "";
"khotkeysrc"."KDE"."SingleClick[$d]" = "";
"khotkeysrc"."KDE"."widgetStyle[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Allow Expansion[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Automatically select filename extension[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Breadcrumb Navigation[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Decoration position[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."LocationCombo Completionmode[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."PathCombo Completionmode[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Preview Width[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Show Bookmarks[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Show Full Path[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Show Inline Previews[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Show Preview[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Show Speedbar[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Show hidden files[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Sort by[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Sort directories first[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Sort hidden files last[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Sort reversed[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."Speedbar Width[$d]" = "";
"khotkeysrc"."KFileDialog Settings"."View Style[$d]" = "";
"khotkeysrc"."KScreen"."ScreenScaleFactors[$d]" = "";
"khotkeysrc"."KShortcutsDialog Settings"."Dialog Size[$d]" = "";
"khotkeysrc"."Main"."AlreadyImported" = "defaults,kde32b1,konqueror_gestures_kde321";
"khotkeysrc"."Main"."Disabled" = false;
"khotkeysrc"."PreviewSettings"."MaximumRemoteSize[$d]" = "";
"khotkeysrc"."Voice"."Shortcut" = "";
"khotkeysrc"."WM"."activeBackground[$d]" = "";
"khotkeysrc"."WM"."activeBlend[$d]" = "";
"khotkeysrc"."WM"."activeForeground[$d]" = "";
"khotkeysrc"."WM"."inactiveBackground[$d]" = "";
"khotkeysrc"."WM"."inactiveBlend[$d]" = "";
"khotkeysrc"."WM"."inactiveForeground[$d]" = "";
"kiorc"."Confirmations"."ConfirmDelete" = true;
"kiorc"."Confirmations"."ConfirmEmptyTrash" = true;
"kiorc"."Confirmations"."ConfirmTrash" = false;
"kiorc"."Executable scripts"."behaviourOnLaunch" = "alwaysAsk";
"klipperrc"."General"."IgnoreImages" = false;
"klipperrc"."General"."MaxClipItems" = 100;
"kmixrc"."Global"."AllowDocking" = false;
"kmixrc"."Global"."AutoStart" = false;
"kmixrc"."Global"."ConfigVersion" = 3;
"kmixrc"."Global"."MasterMixer" = "PulseAudio::Playback_Devices:1";
"kmixrc"."Global"."MasterMixerDevice" = "auto_null";
"kmixrc"."Global"."MixerIgnoreExpression" = "Modem";
"kmixrc"."Global"."Size" = "0,0";
"kmixrc"."Global"."Visible" = false;
"kmixrc"."Profiles"."PulseAudio::Capture_Devices:1" = "PulseAudio..1.default";
"kmixrc"."Profiles"."PulseAudio::Capture_Streams:1" = "PulseAudio..1.default";
"kmixrc"."Profiles"."PulseAudio::Playback_Devices:1" = "PulseAudio..1.default";
"kmixrc"."Profiles"."PulseAudio::Playback_Streams:1" = "PulseAudio..1.default";
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Capture_Devices:1.alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_6__source"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Capture_Devices:1.alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__source"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Playback_Streams:1.restore:sink-input-by-media-role:event"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Playback_Devices:1.alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Playback_Devices:1.alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Playback_Devices:1.alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_5__sink"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Playback_Devices:1.alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"."Split" = false;
"kmixrc"."View.PulseAudio..1.default.PulseAudio::Playback_Devices:1.auto_null"."Split" = false;
"kmixrc".""."Height 1600" = 455;
"kmixrc".""."Width 2560" = 554;
"krunnerrc"."General"."FreeFloating" = true;
"krunnerrc"."Plugins"."baloosearchEnabled" = false;
"kscreenlockerrc"."Daemon"."Autolock" = false;
"kscreenlockerrc"."Greeter.Wallpaper.org.kde.image.General"."Image" = "/home/chn/Desktop/./HlszomyrfyxKLtpkVixEtikq_x4_chop.png";
"kscreenlockerrc"."Greeter.Wallpaper.org.kde.image.General"."PreviewImage" = "/home/chn/Desktop/./HlszomyrfyxKLtpkVixEtikq_x4_chop.png";
"ksmserverrc"."General"."loginMode" = "emptySession";
"ksmserverrc"."SubSession: 3435a388-a8b3-4d1d-9794-b8c30162ce16"."count" = 0;
"ksmserverrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."count" = 0;
"kwalletrc"."Wallet"."First Use" = false;
"kwinrc"."Compositing"."AllowTearing" = false;
"kwinrc"."Desktops"."Id_1" = "59c97a39-ae86-42a2-a6a2-e355b275189a";
"kwinrc"."Desktops"."Id_2" = "46153339-1363-403c-9622-35430b0557e5";
"kwinrc"."Desktops"."Id_3" = "d1990814-e34a-4d65-b29d-9869aa390130";
"kwinrc"."Desktops"."Id_4" = "55b646ba-2f52-4af6-84ad-6e83b93c0669";
"kwinrc"."Desktops"."Number" = 4;
"kwinrc"."Desktops"."Rows" = 2;
"kwinrc"."Effect-blur"."BlurStrength" = 10;
"kwinrc"."Effect-kwin4_effect_translucency"."MoveResize" = 75;
"kwinrc"."Effect-wobblywindows"."AdvancedMode" = true;
"kwinrc"."Effect-wobblywindows"."Drag" = 85;
"kwinrc"."Effect-wobblywindows"."Stiffness" = 10;
"kwinrc"."Effect-wobblywindows"."WobblynessLevel" = 1;
"kwinrc"."Plugins"."blurEnabled" = true;
"kwinrc"."Plugins"."contrastEnabled" = false;
"kwinrc"."Plugins"."kwin4_effect_dimscreenEnabled" = true;
"kwinrc"."Plugins"."kwin4_effect_translucencyEnabled" = true;
"kwinrc"."Plugins"."padding" = 4;
"kwinrc"."Plugins"."wobblywindowsEnabled" = true;
"kwinrc"."SubSession: 3435a388-a8b3-4d1d-9794-b8c30162ce16"."active" = "-1";
"kwinrc"."SubSession: 3435a388-a8b3-4d1d-9794-b8c30162ce16"."count" = 0;
"kwinrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."active" = "-1";
"kwinrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."count" = 0;
"kwinrc"."Tiling"."padding" = 4;
"kwinrc"."Tiling.0d3998b5-12fb-5e5d-9844-298a9a2f96a3"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.213a9620-187e-58a6-b80b-85d8fb95dfce"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.285712a6-31d1-5e3a-95e8-b6f4629caf9f"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.2aa85c1b-f9f4-51c2-831e-dbbd6aea2576"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.3e6a13d3-7d29-5922-82c3-84e8bdf10429"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.40fb0ae6-4d25-5480-b243-0f4924570b92"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.41dbdd7d-3355-5b44-a3d8-6b9d76bd8f49"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.4c85f5bb-4dcb-5bec-8433-5c0e6860d679"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.5b7a5ba4-43cc-5910-8e98-f358f9d54b43"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.68ef4fec-9971-5899-9f5a-9bafaac6d016"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.7b033d70-7be4-564a-8cb5-131fc76f4517"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.8abeadb8-e20c-502f-a422-649967e677bd"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.930227d2-176d-55ae-b42d-99afaeafa61d"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.94554398-f51f-5d08-8909-838a65d2021f"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.9ce2bb81-955c-5eca-bf8f-a2b96c1bd574"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.9fff9751-4241-5809-b520-d1e4f7ee6716"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.a0d5ed6f-d993-5652-af90-8090aaea58f1"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.af1f9f4e-7675-5e65-b3ad-cab439cd3ed4"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.b08bfea5-80c9-53b4-a9ac-29c5c722ee85"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.b31b477c-d7e2-5305-b59d-f5c58bb123c5"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.c9dcef5c-605f-5b87-bbbf-1a493981abea"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.ed4b5b12-e8f0-5571-a0dd-1bf2e3d208f2"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Tiling.fe059470-320a-5189-aef7-d3a016f73584"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Wayland"."InputMethod[$e]" = "/run/current-system/sw/share/applications/org.fcitx.Fcitx5.desktop";
"kwinrc"."Windows"."RollOverDesktops" = true;
"kwinrc"."Xwayland"."Scale" = 1;
"kwinrc"."Xwayland"."XwaylandEavesdrops" = "Combinations";
"kwinrc"."org.kde.kdecoration2"."ButtonsOnLeft" = "M";
"kwinrc"."org.kde.kdecoration2"."ButtonsOnRight" = "BFIAX";
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."Description" = "org.kde.kruler ";
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."above" = true;
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."aboverule" = 2;
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."skipswitcher" = true;
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."skipswitcherrule" = 2;
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."wmclass" = "org.kde.kruler";
"kwinrulesrc"."06734e18-08f2-47f9-a6dc-9085d95fe9b0"."wmclassmatch" = 1;
"kwinrulesrc"."1"."Description" = "element ";
"kwinrulesrc"."1"."activity" = "00000000-0000-0000-0000-000000000000";
"kwinrulesrc"."1"."activityrule" = 2;
"kwinrulesrc"."1"."wmclass" = "element";
"kwinrulesrc"."1"."wmclassmatch" = 1;
"kwinrulesrc"."2"."Description" = "org.telegram.desktop ";
"kwinrulesrc"."2"."activity" = "00000000-0000-0000-0000-000000000000";
"kwinrulesrc"."2"."activityrule" = 2;
"kwinrulesrc"."2"."wmclass" = "org.telegram.desktop";
"kwinrulesrc"."2"."wmclassmatch" = 1;
"kwinrulesrc"."3"."Description" = "org.kde.kruler ";
"kwinrulesrc"."3"."above" = true;
"kwinrulesrc"."3"."aboverule" = 2;
"kwinrulesrc"."3"."skipswitcher" = true;
"kwinrulesrc"."3"."skipswitcherrule" = 2;
"kwinrulesrc"."3"."wmclass" = "org.kde.kruler";
"kwinrulesrc"."3"."wmclassmatch" = 1;
"kwinrulesrc"."8c1ccf0b-abf4-4d24-a848-522a76a2440d"."Description" = "element ";
"kwinrulesrc"."8c1ccf0b-abf4-4d24-a848-522a76a2440d"."activity" = "00000000-0000-0000-0000-000000000000";
"kwinrulesrc"."8c1ccf0b-abf4-4d24-a848-522a76a2440d"."activityrule" = 2;
"kwinrulesrc"."8c1ccf0b-abf4-4d24-a848-522a76a2440d"."wmclass" = "element";
"kwinrulesrc"."8c1ccf0b-abf4-4d24-a848-522a76a2440d"."wmclassmatch" = 1;
"kwinrulesrc"."General"."count" = 3;
"kwinrulesrc"."General"."rules" = "1,2,3";
"kwinrulesrc"."e75e010c-c094-4e6c-a98e-fe011e563466"."Description" = "org.telegram.desktop ";
"kwinrulesrc"."e75e010c-c094-4e6c-a98e-fe011e563466"."activity" = "00000000-0000-0000-0000-000000000000";
"kwinrulesrc"."e75e010c-c094-4e6c-a98e-fe011e563466"."activityrule" = 2;
"kwinrulesrc"."e75e010c-c094-4e6c-a98e-fe011e563466"."wmclass" = "org.telegram.desktop";
"kwinrulesrc"."e75e010c-c094-4e6c-a98e-fe011e563466"."wmclassmatch" = 1;
"kxkbrc"."Layout"."DisplayNames" = "";
"kxkbrc"."Layout"."LayoutList" = "us";
"kxkbrc"."Layout"."Use" = true;
"kxkbrc"."Layout"."VariantList" = "";
"plasma-localerc"."Formats"."LANG" = "en_US.UTF-8";
"plasma-localerc"."Translations"."LANGUAGE" = "zh_CN";
"plasmanotifyrc"."Notifications"."PopupPosition" = "BottomRight";
"plasmarc"."Wallpapers"."usersWallpapers" = "/home/chn/Desktop/./twin_96734339_x2.png,/home/chn/Desktop/./E_yCTfDUUAgykjX_x8.jpeg,/home/chn/Desktop/./102692178_p0_[L1][x2.00].png,/home/chn/Desktop/./111392869_p0.png,/home/chn/Desktop/./HlszomyrfyxKLtpkVixEtikq_x4_chop.png";
"systemsettingsrc"."KFileDialog Settings"."detailViewIconSize" = 16;
};
};
}

View File

@@ -0,0 +1,63 @@
inputs:
{
config = inputs.lib.mkIf inputs.config.nixos.system.gui.enable
{
home-manager.users.chn.config.home.file =
let
programs =
{
nheko =
let
drv = inputs.pkgs.writeTextDir "nheko.desktop" (builtins.replaceStrings
[ "Exec=nheko %u" ] [ "Exec=bash -c 'sleep 5 && nheko'" ]
(builtins.readFile "${inputs.pkgs.nheko}/share/applications/nheko.desktop"));
in "${drv}/nheko.desktop";
kclockd = "${inputs.pkgs.plasma5Packages.kdeGear.kclock}/etc/xdg/autostart/org.kde.kclockd-autostart.desktop";
yakuake = "${inputs.pkgs.yakuake}/share/applications/org.kde.yakuake.desktop";
telegram =
let
drv = inputs.pkgs.writeTextDir "org.telegram.desktop.desktop" (builtins.replaceStrings
[ "Exec=telegram-desktop -- %u" ] [ "Exec=bash -c 'sleep 5 && telegram-desktop -autostart'" ]
(builtins.readFile "${inputs.pkgs.telegram-desktop}/share/applications/org.telegram.desktop.desktop"));
in "${drv}/org.telegram.desktop.desktop";
element =
let
drv = inputs.pkgs.writeTextDir "element-desktop.desktop" (builtins.replaceStrings
[ "Exec=element-desktop %u" ] [ "Exec=element-desktop --hidden" ]
(builtins.readFile
"${inputs.pkgs.element-desktop.desktopItem}/share/applications/element-desktop.desktop"));
in "${drv}/element-desktop.desktop";
# kmail =
# let
# drv = inputs.pkgs.writeTextDir "org.kde.kmail2.desktop" (builtins.replaceStrings
# [ "Exec=kmail -qwindowtitle %c %u" ] [ "Exec=bash -c 'sleep 5 && kmail -qwindowtitle'" ]
# (builtins.readFile "${inputs.pkgs.kmail}/share/applications/org.kde.kmail2.desktop"));
# in "${drv}/org.kde.kmail2.desktop";
kmail = "${inputs.pkgs.kmail}/share/applications/org.kde.kmail2.desktop";
discord =
let
drv = inputs.pkgs.writeTextDir "discord.desktop" (builtins.replaceStrings
[ "Exec=Discord" ] [ "Exec=Discord --start-minimized" ]
(builtins.readFile "${inputs.pkgs.discord.desktopItem}/share/applications/discord.desktop"));
in "${drv}/discord.desktop";
};
devices =
{
pc = [ "nheko" "kclockd" "yakuake" "telegram" "element" "kmail" "discord" ];
surface = [ "kclockd" "yakuake" "telegram" "element" ];
};
in builtins.listToAttrs (builtins.map
(file:
{
name = ".config/autostart/${builtins.baseNameOf (builtins.unsafeDiscardStringContext programs.${file})}";
value.source = programs.${file};
})
(devices.${inputs.config.nixos.system.networking.hostname} or []));
environment.persistence =
let impermanence = inputs.config.nixos.system.impermanence;
in inputs.lib.mkIf impermanence.enable
{
"${impermanence.root}".users.chn.directories = [ ".config/autostart" ];
};
};
}

View File

@@ -0,0 +1,17 @@
[Desktop Entry]
Name=Telegram Desktop
Comment=Official desktop version of Telegram messaging app
TryExec=telegram-desktop
Exec=bash -c "sleep 5 && telegram-desktop -autostart"
Icon=telegram
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
Actions=quit;
DBusActivatable=true
SingleMainWindow=true
X-GNOME-UsesNotifications=true
X-GNOME-SingleWindow=true

View File

@@ -0,0 +1,94 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./autostart ./wallpaper ./konsole.nix ./shortcuts.nix ./theme.nix ];
config = inputs.lib.mkIf inputs.config.nixos.system.gui.enable
{
home-manager.users.chn.config.programs.plasma = inputs.lib.mkMerge
[
# TODO: autostart, panel, discard user changed settings
# general
{
enable = true;
configFile.plasma-localerc = { Formats.LANG = "en_US.UTF-8"; Translations.LANGUAGE = "zh_CN"; };
}
# kwin
{
kwin.titlebarButtons.right = [ "help" "keep-below-windows" "keep-above-windows" "minimize" "maximize" "close" ];
windows.allowWindowsToRememberPositions = false;
configFile =
{
plasmanotifyrc.Notifications.PopupPosition = "BottomRight";
kwinrc =
{
Tiling.padding = 4;
Wayland."InputMethod[$e]" = "/run/current-system/sw/share/applications/org.fcitx.Fcitx5.desktop";
Windows.RollOverDesktops = true;
Compositing = { AllowTearing = false; WindowsBlockCompositing = false; };
};
};
}
# baloo
{ configFile.baloofilerc."Basic Settings".Indexing-Enabled = false; }
# dolphin and file chooser
{
configFile =
{
dolphinrc =
{
General = { ShowFullPath = true; FilterBar = true; RememberOpenedTabs = false; };
PreviewSettings.Plugins = builtins.concatStringsSep ","
[
"blenderthumbnail"
"comicbookthumbnail"
"djvuthumbnail"
"ebookthumbnail"
"exrthumbnail"
"marble_thumbnail_geojson"
"marble_thumbnail_gpx"
"jpegthumbnail"
"marble_thumbnail_kmz"
"marble_thumbnail_kml"
"kraorathumbnail"
"windowsimagethumbnail"
"windowsexethumbnail"
"mltpreview"
"mobithumbnail"
"opendocumentthumbnail"
"marble_thumbnail_osm"
"palathumbcreator"
"gsthumbnail"
"rawthumbnail"
"svgthumbnail"
"imagethumbnail"
"fontthumbnail"
"directorythumbnail"
"textthumbnail"
"webarchivethumbnail"
"ffmpegthumbs"
"audiothumbnail"
];
};
kdeglobals."KFileDialog Settings" =
{
"Allow Expansion" = true;
"Automatically select filename extension" = true;
"Show Bookmarks" = true;
"Show Full Path" = true;
"Show Inline Previews" = true;
"Show Preview" = true;
"Show Speedbar" = true;
"Show hidden files" = true;
"Sort by" = "Name";
"Sort directories first" = true;
"Sort hidden files last" = true;
"View Style" = "DetailTree";
};
};
}
# krunner
{ configFile.krunnerrc = { General.FreeFloating = true; Plugins.baloosearchEnabled = false; }; }
# lock screen
{ configFile.kscreenlockerrc.Daemon.Autolock = false; }
];
};
}

View File

@@ -0,0 +1,81 @@
inputs:
{
config = inputs.lib.mkIf inputs.config.nixos.system.gui.enable
{
home-manager.users.chn.config =
{
programs.plasma =
{
overrideConfig = true;
overrideConfigFiles = [ "konsolerc" "yakuakerc" ];
configFile =
{
yakuakerc =
{
Appearance =
{
HideSkinBorders = true;
Skin = "Slate";
Translucency = true;
};
"Desktop Entry".DefaultProfile = "plasma-manager.profile";
Dialogs.FirstRun = false;
Window =
{
KeepOpen = false;
KeepOpenAfterLastSessionCloses = true;
ShowSystrayIcon = false;
};
};
konsolerc =
{
"Desktop Entry".DefaultProfile = "plasma-manager.profile";
"MainWindow.Toolbar sessionToolbar".ToolButtonStyle = "IconOnly";
};
};
dataFile."konsole/plasma-manager.profile" =
{
Appearance =
{
AntiAliasFonts = true;
BoldIntense = true;
ColorScheme = "Breeze";
Font = "FiraCode Nerd Font Mono,10,-1,5,50,0,0,0,0,0";
UseFontLineChararacters = true;
WordModeAttr = false;
};
"Cursor Options".CursorShape = 1;
General =
{
Name = "plasma-manager";
Parent = "FALLBACK/";
TerminalCenter = true;
TerminalMargin = 1;
};
"Interaction Options" =
{
AutoCopySelectedText = true;
TrimLeadingSpacesInSelectedText = true;
TrimTrailingSpacesInSelectedText = true;
UnderlineFilesEnabled = true;
};
Scrolling =
{
HistoryMode = 2;
ReflowLines = false;
};
"Terminal Features".BlinkingCursorEnabled = true;
};
};
home.file.".local/share/konsole/Breeze.colorscheme".text = builtins.replaceStrings
[ "Opacity=1" ] [ "Opacity=0.9\nBlur=true" ]
(builtins.readFile "${inputs.pkgs.konsole}/share/konsole/Breeze.colorscheme");
};
environment.persistence =
let impermanence = inputs.config.nixos.system.impermanence;
in inputs.lib.mkIf impermanence.enable
{
"${impermanence.root}".users.chn.directories = [ ".local/share/konsole" ".local/share/yakuake" ];
};
};
}

View File

@@ -0,0 +1,102 @@
inputs:
{
config = inputs.lib.mkIf inputs.config.nixos.system.gui.enable
{
home-manager.users.chn.config.programs.plasma =
{
spectacle.shortcuts.captureRectangularRegion = "Print";
shortcuts = inputs.lib.mkMerge
[
# firefox
{ "firefox.desktop"._launch = "Meta+B"; }
# crow translate
{ "io.crow_translate.CrowTranslate.desktop".TranslateSelectedText = "Ctrl+Alt+E"; }
# display
{
kded5.display = [ "Display" "Meta+P" ];
kwin = { view_actual_size = "Meta+0"; view_zoom_in = [ "Meta++" "Meta+=" ]; view_zoom_out = "Meta+-"; };
org_kde_powerdevil =
{
"Decrease Screen Brightness" = "Monitor Brightness Down";
"Increase Screen Brightness" = "Monitor Brightness Up";
};
}
# volume
{
kmix =
{
decrease_volume = "Volume Down";
increase_volume = "Volume Up";
mic_mute = [ "Meta+Volume Mute" ];
mute = "Volume Mute";
};
}
# session
{
ksmserver = { "Lock Session" = [ "Meta+L" "Screensaver" ]; "Log Out" = "Ctrl+Alt+Del"; };
org_kde_powerdevil."Turn Off Screen" = "Meta+Ctrl+L";
}
# window
{
kwin =
{
ExposeAll = "Meta+Tab";
"Show Desktop" = "Meta+D";
"Suspend Compositing" = "Alt+Shift+F12";
"Walk Through Windows" = "Alt+Tab";
"Walk Through Windows (Reverse)" = "Alt+Shift+Backtab";
"Window Above Other Windows" = "Meta+Shift+PgUp";
"Window Below Other Windows" = "Meta+Shift+PgDown";
"Window Close" = "Alt+F4";
"Window Maximize" = "Meta+PgUp";
"Window Minimize" = "Meta+PgDown";
"Window Operations Menu" = "Alt+F3";
"Window Quick Tile Bottom" = "Meta+Down";
"Window Quick Tile Left" = "Meta+Left";
"Window Quick Tile Right" = "Meta+Right";
"Window Quick Tile Top" = "Meta+Up";
};
}
# virtual desktop
{
kwin =
{
"Switch One Desktop Down" = "Meta+Ctrl+Down";
"Switch One Desktop Up" = "Meta+Ctrl+Up";
"Switch One Desktop to the Left" = "Meta+Ctrl+Left";
"Switch One Desktop to the Right" = "Meta+Ctrl+Right";
"Window One Desktop Down" = "Meta+Ctrl+Shift+Down";
"Window One Desktop Up" = "Meta+Ctrl+Shift+Up";
"Window One Desktop to the Left" = "Meta+Ctrl+Shift+Left";
"Window One Desktop to the Right" = "Meta+Ctrl+Shift+Right";
};
}
# media
{
mediacontrol =
{
nextmedia = "Media Next";
pausemedia = "Media Pause";
playpausemedia = [ "Pause" "Media Play" ];
previousmedia = "Media Previous";
stopmedia = "Media Stop";
};
}
# dolphin
{ "org.kde.dolphin.desktop"._launch = "Meta+E"; }
# konsole
{ "org.kde.konsole.desktop"._launch = "Ctrl+Alt+T"; }
# krunner
{ "org.kde.krunner.desktop"._launch = "Alt+Space"; }
# settings
{ "systemsettings.desktop"._launch = "Meta+I"; }
# yakuake
{ yakuake.toggle-window-state = "Meta+Space"; }
# virt-manager
{ "virt-manager.desktop"._launch = "Meta+V"; }
# system monitor
{ "org.kde.plasma-systemmonitor.desktop"._launch = "Meta+Esc"; }
];
};
};
}

View File

@@ -0,0 +1,36 @@
inputs:
{
config = inputs.lib.mkIf inputs.config.nixos.system.gui.enable
{
home-manager.users.chn.config.programs.plasma =
{
workspace =
{
theme = "Fluent-round-light";
colorScheme = "FluentLight";
cursorTheme = "Breeze_Snow";
lookAndFeel = "com.github.vinceliuice.Fluent-round-light";
iconTheme = "Tela-circle";
};
configFile =
{
kdeglobals.KDE.widgetStyle = "kvantum";
"Kvantum/kvantum.kvconfig".General.theme = "Fluent-round";
kwinrc =
{
Effect-blur.BlurStrength = 10;
Effect-kwin4_effect_translucency.MoveResize = 75;
Effect-wobblywindows = { AdvancedMode = true; Drag = 85; Stiffness = 10; WobblynessLevel = 1; };
Plugins =
{
blurEnabled = true;
kwin4_effect_dimscreenEnabled = true;
kwin4_effect_translucencyEnabled = true;
padding = 4;
wobblywindowsEnabled = true;
};
};
};
};
};
}

View File

@@ -0,0 +1,13 @@
inputs:
{
config.home-manager.users.chn.config.programs.plasma.configFile =
let wallpaper = "${./pixiv-96734339-x2.png}"; in
{
"plasma-org.kde.plasma.desktop-appletsrc" =
{
"Containments.1".wallpaperplugin = "a2n.blur";
"Containments.1.Wallpaper.a2n\\.blur.General".Image = wallpaper;
};
kscreenlockerrc."Greeter.Wallpaper.org\\.kde\\.image.General" = { Image = wallpaper; PreviewImage = wallpaper; };
};
}

Binary file not shown.

View File

@@ -2,6 +2,13 @@ inputs:
{ {
options.nixos.virtualization = let inherit (inputs.lib) mkOption types; in options.nixos.virtualization = let inherit (inputs.lib) mkOption types; in
{ {
# /var/lib/waydroid/waydroid_base.prop
# default:
# ro.hardware.gralloc=gbm
# ro.hardware.egl=mesa
# nvidia:
# ro.hardware.gralloc=default
# ro.hardware.egl=swiftshader
waydroid.enable = mkOption { default = false; type = types.bool; }; waydroid.enable = mkOption { default = false; type = types.bool; };
docker.enable = mkOption { default = false; type = types.bool; }; docker.enable = mkOption { default = false; type = types.bool; };
kvmHost = kvmHost =
@@ -30,7 +37,7 @@ inputs:
setSocketVariable = true; setSocketVariable = true;
daemon.settings = { features.buildkit = true; dns = [ "1.1.1.1" ]; storage-driver = "overlay2"; }; daemon.settings = { features.buildkit = true; dns = [ "1.1.1.1" ]; storage-driver = "overlay2"; };
}; };
enableNvidia = builtins.elem "nvidia" inputs.config.nixos.hardware.gpus; enableNvidia = inputs.lib.strings.hasInfix "nvidia" inputs.config.nixos.hardware.gpu.type;
storageDriver = "overlay2"; storageDriver = "overlay2";
}; };
nixos.services.firewall.trustedInterfaces = [ "docker0" ]; nixos.services.firewall.trustedInterfaces = [ "docker0" ];

View File

@@ -1,5 +1,5 @@
xray-client: xray-client:
uuid: ENC[AES256_GCM,data:WQUDaTeOsY61st6HQKjGKuVoQIy6Gpf0dMzJeIqMUV/4sihj,iv:R6IZzIAmn7rknxD5HWGRE618pdUyEWB0F2tO9+EfunI=,tag:u+50NAK8LwzyUNt0GVyabw==,type:str] uuid: ENC[AES256_GCM,data:WEBAH3PQM5ahNpH/kvTtcjcJ2GllmmRlBR2oclG6AimGenSg,iv:TMp0WTOe9fuELSZoVGenl5XSZUFoiYUBEMWMn4NFv1g=,tag:GJTE0EELcZkrnGAKLYer1g==,type:str]
sops: sops:
kms: [] kms: []
gcp_kms: [] gcp_kms: []
@@ -9,23 +9,23 @@ sops:
- recipient: age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m - recipient: age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaTmlZdld6eWtrZzVTR1Fs YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzV1pvWkVGSFg5TVAvRlhu
RXhTczRsOVNrMWIyWm9ud1lzYVJUbGJnc2drCmVKTHlVNXFZUTh5bmlncHA1MmlE TnFnMEszcDRWWHlQanAyRkRpQWdqQkdhTzFvCjBqUG4xNFBiRnlSeTNQSmdkVkdD
UnovM0tONHBHTkY4TS9FRmRkRFkrcjgKLS0tIGxxbzV4Z09CdWkyY3d1MFBNL2dO UlVCQjRFVExuZHdrSnViajZGZ3c2dWsKLS0tIHlQYU5VeGpEQzllMmxLSnJZZzZx
MGFMaGM3WW5LRXd1T2ZPTkpBdWRTR00Ktnuqblw4rS9fXb2CTzY7BjpDK6K1wx97 N1R3Mkhxa0dOVlJiU0V2OEZVVzZVMFkKae3c1axl22uxh9wMygAHs6q1WA5ImOS8
tV1FeuKcEXpp8AMKOdbKTOznnolI4sTnz2l0iP1m7bk6f9PGNjyQhw== uzKSthWSqtC7DMqgUFaaSjBYM2TN3l402syx71xVFyyAmCcGZbbJcg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1qrea4twxdhd7fnvlq5v45528c90qy6hp2wa55kghsxzgut6n6fxs7w6u42 - recipient: age1ck5vzs0xqx0jplmuksrkh45xwmkm2t05m2wyq5k2w2mnkmn79fxs6tvl3l
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaQkxFc1U2R2RndVRHcisv YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCSHJVRGIwQUFpVER5SWxq
ZGg0VXhDYnpsQVV0Q3habXRiSHhTVTVUOUZ3CkFMUTMzL3NFcHpwaklZZStIYktW YjJOT0lXN3dFOFpjMFlWV3JCbmZFN0hnNEJBClpQUEczK2RWTGlVTmJRbVZaUC8y
WUpwWi9xQ3MyNXl1aVREcC9KeFlsWE0KLS0tIEJVR1VFRHNBSVVaVlJsNFJtWXAv bEFrL1RjTTNlYVNnRVRBZlRjaTlnUEEKLS0tIE5GM01pTGFFcWVVSWEvUHE3Z08r
YmphYnp4YTQyV0VrT0h4RlNSRVptbkEKao+OYKlwgLcbMe75+RcdlxmYtvgheqp2 a2xybTRFUFZZN20zajZJTVNwVEpGcEEKglmFMk7z1q5IlZ+lZf9M0HtknmvcYt/P
SwEhhlV8QNWylkOU+S38C3+oiQqlPZQkwOyBMfB5eoTUM8xCLjf1og== 2/z5e8wLN1Hy0Zsbv0yIL/NmqwxAOGJOdzz7ElJszk/Y4kUr9aRasg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2023-08-20T18:23:21Z" lastmodified: "2024-01-17T08:21:40Z"
mac: ENC[AES256_GCM,data:Dn2yxA/8GjPpmI5oWybiv0JNiiHDbleTtYZaM7GTMStP15N4Yo1tzVqlfzy6QWdLvcyZtoodamnry9yj+A7dP1sj0Fgkiq2FnzIp+JuJXkKH7AYWKugOmzKz7Kky2SEDU2r1UoucIbW9SRbgyukXPLpGRUGqIZNLR6OZ3w0atTA=,iv:sKyg1opbnQsQs/ZteTjEyarFU/HgmSSe+Frmvwfpylk=,tag:Sc6z4SnXOxICQ+TN7C6ZVA==,type:str] mac: ENC[AES256_GCM,data:8+nUsgM47gMZmCQwPgqzM95UuYgF3UStE+XiOPPaed/VIk9e2fNLu9vR+wEgb04pR29BQTWV0qx7xqF/IzFbMYLfujgfDQoOf5pTFi5E6WTFp/MDlq8DSwxJqegEvshoAcRMt2Ur8VKbEZ/ya+yZipEZBPyGHkvi0kS8AOULbb8=,iv:txSZzGGtMVMwi1ogcAJdNqm0bb8so0RVJvkbu0QMHT4=,tag:6TQ7LYfoOrCTPMBAPQqwyg==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.7.3 version: 3.8.1

View File

@@ -10,8 +10,7 @@ xray-server:
user1: ENC[AES256_GCM,data:S3IHO9FcVHTJOsRxjSohM9MgnrEwLdDpFU+efLkQaXT2jNJG,iv:KOesvPzjDfm1EDLFiegbk0wgjp7di5mUwUuuY2hwvOQ=,tag:ZsYyUyyEhO5S3weCw/gPMw==,type:str] user1: ENC[AES256_GCM,data:S3IHO9FcVHTJOsRxjSohM9MgnrEwLdDpFU+efLkQaXT2jNJG,iv:KOesvPzjDfm1EDLFiegbk0wgjp7di5mUwUuuY2hwvOQ=,tag:ZsYyUyyEhO5S3weCw/gPMw==,type:str]
#ENC[AES256_GCM,data:OQOPobpbbhajgA==,iv:4jG3bHKzWcR+JnvSlJsc0Qlv5kywqVN5UE96J31CP7Q=,tag:P+jJkRxPu99tLXyO5k6dRA==,type:comment] #ENC[AES256_GCM,data:OQOPobpbbhajgA==,iv:4jG3bHKzWcR+JnvSlJsc0Qlv5kywqVN5UE96J31CP7Q=,tag:P+jJkRxPu99tLXyO5k6dRA==,type:comment]
user2: ENC[AES256_GCM,data:e7ITe2ZouKr8dXT7SYATyzbzHaVeu6AKt1OcQKk3U0nsQgoa,iv:UbOOuojy6OAFEH8lGhKe5Hs+2K6FX5MZ8Br9AB007gs=,tag:5XeB4YngzTcHZvCpXe/ZXA==,type:str] user2: ENC[AES256_GCM,data:e7ITe2ZouKr8dXT7SYATyzbzHaVeu6AKt1OcQKk3U0nsQgoa,iv:UbOOuojy6OAFEH8lGhKe5Hs+2K6FX5MZ8Br9AB007gs=,tag:5XeB4YngzTcHZvCpXe/ZXA==,type:str]
#ENC[AES256_GCM,data:vEit6GESM5G+Xw==,iv:A7uisdmzB2qiPeYkut6k8D3xxpVIBy/JE9cctC/cDQQ=,tag:ZY7Ttu5AUqjIxB4BIHEucQ==,type:comment] user3: ENC[AES256_GCM,data:r+6jXaIj4HJoYLnJcnjJB+WEZlGaoSy/ktc1Aw77hFtNrrGp,iv:P+YUKns1yaOZokH5WkDB0jssGyHg3ncc54tF1PyA7Oc=,tag:/pxMEr7l4ye5EDAOsllxJA==,type:str]
user3: ENC[AES256_GCM,data:Q3GlAiELNXurVN3nv5k8Zt1/zqctYb3gvHZ4KnXApCRdShHT,iv:ihJ76k4NcwitdYCS0y4/UlH4K63vwmAY63bCWSi9dkk=,tag:XaH97gpAdaFkUiUTb50aLw==,type:str]
#ENC[AES256_GCM,data:4gqZh391hg==,iv:No22DrD6EBs2FA4/qH8msWEjs20fc+ZpEeZep+HIv+c=,tag:aHrYNbI83POI4PRj1nd+Yw==,type:comment] #ENC[AES256_GCM,data:4gqZh391hg==,iv:No22DrD6EBs2FA4/qH8msWEjs20fc+ZpEeZep+HIv+c=,tag:aHrYNbI83POI4PRj1nd+Yw==,type:comment]
user4: ENC[AES256_GCM,data:ujiml/r4aFiKOkSJkaD/KE8rKuBtLSnpZREBH3vRJUzDT0QM,iv:a3VFlXpMLNFihvFa7gloANtHmBLg4szTL5LTm8E2kNs=,tag:W9KZ1GAVx9IBKfda7Zedng==,type:str] user4: ENC[AES256_GCM,data:ujiml/r4aFiKOkSJkaD/KE8rKuBtLSnpZREBH3vRJUzDT0QM,iv:a3VFlXpMLNFihvFa7gloANtHmBLg4szTL5LTm8E2kNs=,tag:W9KZ1GAVx9IBKfda7Zedng==,type:str]
#ENC[AES256_GCM,data:bnnxo/I=,iv:8jOo0P+8gk05O1vnxOiyGhaeD4wyuaaA3CCr8/DbzII=,tag:J6VSJZoko3EiWyn0ATcmqA==,type:comment] #ENC[AES256_GCM,data:bnnxo/I=,iv:8jOo0P+8gk05O1vnxOiyGhaeD4wyuaaA3CCr8/DbzII=,tag:J6VSJZoko3EiWyn0ATcmqA==,type:comment]
@@ -101,8 +100,8 @@ sops:
ZXFTU3ZCaW1pTVh0RUJzdDdGdHlPYTgK2mlgcX2kEc8+2UDdBnhUm6IIuh8V6agW ZXFTU3ZCaW1pTVh0RUJzdDdGdHlPYTgK2mlgcX2kEc8+2UDdBnhUm6IIuh8V6agW
ooxH9OEPXUVI/4JcDo4v8ZUhAyU1ehLH0Ef7PJCChOZe2KZmWSNbhA== ooxH9OEPXUVI/4JcDo4v8ZUhAyU1ehLH0Ef7PJCChOZe2KZmWSNbhA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2023-12-08T08:32:56Z" lastmodified: "2024-01-15T11:39:07Z"
mac: ENC[AES256_GCM,data:mE2I5XIv+xcbaaZmnXfxCYmb5BMGc+D4AqdmFeYDrUPLZgtaSZvJkP0pVDhJcRy7L5VooGgBaI/OFWrQMLgP0Oz2s092AwiDmCV8jLQQrXs1X+ABdHLXTLvjhnOMTk8ZV0KizWJLEuCFgZ0lS6mjVHQNDW1d2TNxAhM7JvTyOVw=,iv:BZw32WlqgQzz6j5gxS1U4l10K8C5YBZAvYotilBXPA0=,tag:oc4EqeWQK9kkPgiIHfiLjQ==,type:str] mac: ENC[AES256_GCM,data:cjP8ZDujb+RhdK5fa51if+mlx2EpfA4TTmlRbExfIDnahM8deF7qmXhOXeRIF7TrdK7HrxxOsNm2F300sbtEV0CJBsu0Wf9V3JuCuf2deEhABVSEh5f44ZCg4fLCFKCidn6GZPGjk+nEbFd+U5elcDHaqbdhdMeu3iMIf/xncac=,iv:uTv//gOvqdOKWWFvDsvdix66UiHmKzf2Dz2FuJYCfcY=,tag:qzXfKyyltjZVN8sux5mElA==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.8.1 version: 3.8.1