Compare commits

...

117 Commits

Author SHA1 Message Date
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
chn
8ef28b9de5 hardware.legion: init 2024-01-14 14:55:39 +08:00
chn
c8e0c74535 hardware: fix nvidia modesetting 2024-01-14 12:42:30 +08:00
chn
d5a3a6b05a fix afdko 2024-01-14 12:42:19 +08:00
chn
00901f5cb5 packages.workstation: remove quantum-espresso 2024-01-14 12:21:27 +08:00
chn
c83505da53 pc: switch to znver4 2024-01-13 22:29:51 +08:00
chn
30c18790f9 fix numpy pandas eventlet 2024-01-12 12:24:24 +08:00
chn
216117a30a yoga->surface 2024-01-11 21:28:06 +08:00
chn
c4af4de4ea packages.workstation: update wemeet 2024-01-10 20:04:22 +08:00
chn
daa824943f services.mirism: fix 2024-01-09 11:37:36 +08:00
chn
bcd64f2fe7 packages.desktop.vscode: add vasp support 2024-01-08 19:47:40 +08:00
60 changed files with 1884 additions and 1788 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:

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

@@ -0,0 +1,99 @@
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";
};
hardware = { cpus = [ "intel" ]; gpus = [ "intel" ]; };
packages.packageSet = "server";
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; };
xray.client =
{
enable = true;
serverAddress = "74.211.99.69";
serverName = "vps6.xserver.chn.moe";
dns.extraInterfaces = [ "docker0" ];
};
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.

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

@@ -0,0 +1,148 @@
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" ];
gpus = [ "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" ]; };
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";
};
};
bugs = [ "xmunet" "backlight" "amdpstate" ];
};
# use plasma-x11 as default, instead of plasma-wayland
services.xserver.displayManager =
{
defaultSession = inputs.lib.mkForce "plasma";
setupCommands = "${inputs.pkgs.xcalib}/bin/xcalib -d :0 ${./color/TPLCD_161B_Default.icm}";
};
virtualisation.virtualbox.host = { enable = true; enableExtensionPack = true; };
hardware.nvidia.forceFullCompositionPipeline = true;
};
}

View File

@@ -0,0 +1,81 @@
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" ];
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; 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" ];
};
boot.kernelPackages =
let
originalKernel = inputs.pkgs.linuxPackages_xanmod_latest.kernel;
version = originalKernel.version;
majorVersion =
let versionArray = builtins.splitVersion version;
in "${builtins.elemAt versionArray 0}.${builtins.elemAt versionArray 1}";
repoFile = "${inputs.topInputs.nixos-hardware}/microsoft/surface/common/kernel/linux-package.nix";
inherit (inputs.pkgs.callPackage repoFile {}) repos;
patchDir = repos.linux-surface + "/patches/${majorVersion}";
patchFile = "${inputs.topInputs.nixos-hardware}/microsoft/surface/common/kernel/linux-6.6.x/patches.nix";
kernelPatches = inputs.pkgs.callPackage patchFile { inherit (inputs.lib) kernel; inherit version patchDir; };
in
inputs.lib.mkForce (inputs.pkgs.linuxPackagesFor (originalKernel.override
(prev: { kernelPatches = prev.kernelPatches ++ kernelPatches; })));
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;
};
};
};
};
}

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

@@ -0,0 +1,76 @@
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";
};
packages.packageSet = "server";
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; };
};
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" ];
};
};
}

780
flake.lock generated

File diff suppressed because it is too large Load Diff

606
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 =
{ {
@@ -38,6 +40,23 @@
inputs = { nixpkgs.follows = "nixpkgs"; home-manager.follows = "home-manager"; }; inputs = { nixpkgs.follows = "nixpkgs"; home-manager.follows = "home-manager"; };
}; };
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"; };
nixos-hardware.url = "github:NixOS/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; };
}; };
outputs = inputs: outputs = inputs:
@@ -50,7 +69,7 @@
default = inputs.nixpkgs.legacyPackages.x86_64-linux.writeText "systems" default = inputs.nixpkgs.legacyPackages.x86_64-linux.writeText "systems"
(builtins.concatStringsSep "\n" (builtins.map (builtins.concatStringsSep "\n" (builtins.map
(system: builtins.toString inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel) (system: builtins.toString inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel)
[ "pc" "vps6" "vps7" "nas" "yoga" ])); [ "pc" "vps6" "vps7" "nas" "surface" ]));
} }
// ( // (
builtins.listToAttrs (builtins.map builtins.listToAttrs (builtins.map
@@ -59,570 +78,32 @@
name = system; name = system;
value = inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel; value = inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel;
}) })
[ "pc" "vps6" "vps7" "nas" "yoga" "xmupc1" ]) [ "pc" "vps6" "vps7" "nas" "surface" "xmupc1" ])
); );
# 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 =
{
windowsEntries = { "7317-1DB6" = "Windows"; "7321-FA9C" = "Windows for malware"; };
installDevice = "efi";
};
nix =
{
marches =
[
"alderlake"
# CX16
"sandybridge"
# CX16 SAHF FXSR
"silvermont"
# RDSEED MWAITX SHA CLZERO CX16 SSE4A ABM CLFLUSHOPT WBNOINVD
"znver2" "znver3"
# CX16 SAHF FXSR HLE RDSEED
"broadwell"
"znver4"
];
keepOutputs = true;
};
nixpkgs =
{ march = "alderlake"; cuda = { enable = true; capabilities = [ "8.6" ]; forwardCompat = false; }; };
kernel.patches = [ "cjktty" "lantian" ];
impermanence.enable = true;
networking.hostname = "pc";
sysctl.laptop-mode = 5;
};
hardware =
{
cpus = [ "intel" ];
gpus = [ "intel" "nvidia" ];
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
prime = { enable = true; mode = "offload"; busId = { intel = "PCI:0:2:0"; nvidia = "PCI:1:0:0"; }; };
gamemode.drmDevice = 1;
};
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 =
[
"suspend-hibernate-no-platform" "hibernate-iwlwifi" "suspend-lid-no-wakeup" "xmunet"
"suspend-hibernate-waydroid" "power"
];
};
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" ];
};
yoga =
{
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 = "silvermont";
grub.installDevice = "efi";
nix.substituters = [ "https://cache.nixos.org/" "https://nix-store.chn.moe" ];
kernel.patches = [ "cjktty" ];
impermanence.enable = true;
networking.hostname = "yoga";
};
hardware =
{
cpus = [ "intel" ];
gpus = [ "intel" ];
bluetooth.enable = true;
joystick.enable = true;
printer.enable = true;
sound.enable = true;
halo-keyboard.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
@@ -658,10 +139,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,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,28 +18,28 @@
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 {};

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

@@ -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

@@ -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

@@ -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

@@ -31,6 +31,7 @@ inputs:
{ {
nix-vscode-extensions = topInputs.nix-vscode-extensions.extensions."${prev.system}"; nix-vscode-extensions = topInputs.nix-vscode-extensions.extensions."${prev.system}";
nur-xddxdd = topInputs.nur-xddxdd.overlays.default final prev; nur-xddxdd = topInputs.nur-xddxdd.overlays.default final prev;
nur-linyinfeng = (topInputs.nur-linyinfeng.overlays.default final prev).linyinfeng;
deploy-rs = deploy-rs =
{ inherit (prev) deploy-rs; inherit ((topInputs.deploy-rs.overlay final prev).deploy-rs) lib; }; { inherit (prev) deploy-rs; inherit ((topInputs.deploy-rs.overlay final prev).deploy-rs) lib; };
# needed by mirism # needed by mirism

View File

@@ -1,5 +1,6 @@
inputs: inputs:
{ {
imports = inputs.localLib.mkModules [ ./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; };
@@ -108,17 +109,25 @@ inputs:
{ {
intel = [ intel-compute-runtime intel-media-driver libvdpau-va-gl ]; # intel-vaapi-driver intel = [ intel-compute-runtime intel-media-driver libvdpau-va-gl ]; # intel-vaapi-driver
nvidia = [ vaapiVdpau ]; nvidia = [ vaapiVdpau ];
amd = []; amd = [ amdvlk rocmPackages.clr rocmPackages.clr.icd ];
}; };
in in
concatLists (map (gpu: packages.${gpu}) hardware.gpus); concatLists (map (gpu: packages.${gpu}) hardware.gpus);
driSupport32Bit = true; driSupport32Bit = true;
}; };
nvidia.nvidiaSettings = builtins.elem "nvidia" hardware.gpus; nvidia = mkIf (builtins.elem "nvidia" hardware.gpus)
{
modesetting.enable = true;
powerManagement.enable = true;
dynamicBoost.enable = true;
nvidiaSettings = true;
package = inputs.config.boot.kernelPackages.nvidiaPackages.production;
};
}; };
} }
) )
(mkIf (builtins.elem "intel" hardware.gpus) { services.xserver.deviceSection = ''Driver "modesetting"''; }) (mkIf (builtins.elem "intel" hardware.gpus) { services.xserver.videoDrivers = [ "modesetting" ]; })
(mkIf (builtins.elem "amd" hardware.gpus) { services.xserver.videoDrivers = [ "modesetting" ]; })
# prime # prime
( (
mkIf hardware.prime.enable mkIf hardware.prime.enable
@@ -143,7 +152,6 @@ inputs:
prime = listToAttrs prime = listToAttrs
(map (gpu: { inherit (gpu) value; name = "${gpu.name}BusId"; }) (attrsToList hardware.prime.busId)); (map (gpu: { inherit (gpu) value; name = "${gpu.name}BusId"; }) (attrsToList hardware.prime.busId));
} }
]; ];
} }
) )

View File

@@ -0,0 +1,16 @@
inputs:
{
options.nixos.hardware.legion = let inherit (inputs.lib) mkOption types; in
{
enable = mkOption { type = types.bool; default = false; };
};
config =
let
inherit (inputs.lib) mkIf;
inherit (inputs.config.nixos.hardware) legion;
in mkIf legion.enable
{
environment.systemPackages = [ inputs.pkgs.lenovo-legion ];
boot.extraModulePackages = [ inputs.config.boot.kernelPackages.lenovo-legion-module ];
};
}

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

@@ -11,15 +11,26 @@ 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
firefoxpwa
]; ];
users.sharedModules = users.sharedModules =
[{ [{
@@ -34,12 +45,7 @@ inputs:
{ {
adb.enable = true; adb.enable = true;
wireshark = { enable = true; package = inputs.pkgs.wireshark; }; wireshark = { enable = true; package = inputs.pkgs.wireshark; };
firefox = firefox = { enable = true; languagePacks = [ "zh-CN" "en-US" ]; };
{
enable = true;
languagePacks = [ "zh-CN" "en-US" ];
nativeMessagingHosts.packages = [ inputs.pkgs.firefoxpwa ];
};
vim.package = inputs.pkgs.vim-full; vim.package = inputs.pkgs.vim-full;
}; };
nixpkgs.config.packageOverrides = pkgs: nixpkgs.config.packageOverrides = pkgs:

View File

@@ -44,6 +44,8 @@ inputs:
lextudio.restructuredtext trond-snekvik.simple-rst lextudio.restructuredtext trond-snekvik.simple-rst
# markdown # markdown
shd101wyy.markdown-preview-enhanced shd101wyy.markdown-preview-enhanced
# vasp
mystery.vasp-support
]; ];
} }
)]; )];

View File

@@ -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

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 inputs.config.nur.repos.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,14 @@ 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 openai scipy scikit-learn jupyterlab autograd
# localPackages.pix2tex # localPackages.pix2tex
inquirerpy requests python-telegram-bot tqdm fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2 inquirerpy requests python-telegram-bot tqdm fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2
certifi charset-normalizer idna orjson psycopg2 localPackages.eigengdb certifi charset-normalizer idna orjson psycopg2
])]; ])];
_prebuildPackages = _prebuildPackages =
[ [

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

@@ -33,6 +33,7 @@ inputs:
Group = inputs.config.users.users.mirism.group; Group = inputs.config.users.users.mirism.group;
ExecStart = "${inputs.pkgs.localPackages.mirism}/bin/${instance}"; ExecStart = "${inputs.pkgs.localPackages.mirism}/bin/${instance}";
RuntimeMaxSec = "1d"; RuntimeMaxSec = "1d";
Restart = "always";
}; };
}; };
}) })

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

@@ -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"; };

View File

@@ -32,7 +32,7 @@ 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

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";
@@ -138,8 +138,10 @@ inputs:
sandybridge = "MSANDYBRIDGE"; sandybridge = "MSANDYBRIDGE";
silvermont = "MSILVERMONT"; silvermont = "MSILVERMONT";
broadwell = "MBROADWELL"; broadwell = "MBROADWELL";
skylake = "MSKYLAKE";
znver2 = "MZEN2"; znver2 = "MZEN2";
znver3 = "MZEN3"; znver3 = "MZEN3";
znver4 = "MZEN4";
}; };
in { GENERIC_CPU = inputs.lib.kernel.no; ${kernelConfig.${nixpkgs.march}} = inputs.lib.kernel.yes; }; in { GENERIC_CPU = inputs.lib.kernel.no; ${kernelConfig.${nixpkgs.march}} = inputs.lib.kernel.yes; };
}]; }];

View File

@@ -1,762 +1,184 @@
inputs:
{ {
config.home-manager.users.chn.config.programs.plasma = config.home-manager.users.chn.config.programs.plasma =
{ {
enable = true; enable = true;
shortcuts = shortcuts = inputs.lib.mkMerge
{ [
# firefox
{ "firefox.desktop"._launch = "Meta+B"; }
# crow translate # crow translate
"io.crow_translate.CrowTranslate.desktop"."TranslateSelectedText" = "Ctrl+Alt+E"; { "io.crow_translate.CrowTranslate.desktop".TranslateSelectedText = "Ctrl+Alt+E"; }
# display # display
"kded5"."display" = [ "Display" "Meta+P" ]; {
"kwin"."view_actual_size" = "Meta+0"; kded5.display = [ "Display" "Meta+P" ];
"kwin"."view_zoom_in" = ["Meta++" "Meta+="]; kwin = { view_actual_size = "Meta+0"; view_zoom_in = [ "Meta++" "Meta+=" ]; view_zoom_out = "Meta+-"; };
"kwin"."view_zoom_out" = "Meta+-"; org_kde_powerdevil =
"org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down"; {
"org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up"; "Decrease Screen Brightness" = "Monitor Brightness Down";
"Increase Screen Brightness" = "Monitor Brightness Up";
};
}
# volume # volume
"kmix" =
{ {
"decrease_volume" = "Volume Down"; kmix =
"increase_volume" = "Volume Up"; {
"mic_mute" = [ "Meta+Volume Mute" ]; decrease_volume = "Volume Down";
"mute" = "Volume Mute"; increase_volume = "Volume Up";
}; mic_mute = [ "Meta+Volume Mute" ];
mute = "Volume Mute";
};
}
# session # session
"ksmserver" =
{ {
"Lock Session" = [ "Meta+L" "Screensaver" ]; ksmserver = { "Lock Session" = [ "Meta+L" "Screensaver" ]; "Log Out" = "Ctrl+Alt+Del"; };
"Log Out" = "Ctrl+Alt+Del"; org_kde_powerdevil."Turn Off Screen" = "Meta+Ctrl+L";
}; }
"org_kde_powerdevil"."Turn Off Screen" = "Meta+Ctrl+L";
# mouse
"kwin"."MoveMouseToCenter" = "Meta+F6";
# window # window
"kwin"."Overview" = "Meta+Tab"; {
"kwin"."Show Desktop" = "Meta+D"; kwin =
"kwin"."Suspend Compositing" = "Alt+Shift+F12"; {
"kwin"."Walk Through Windows" = "Alt+Tab"; Overview = "Meta+Tab";
"kwin"."Walk Through Windows (Reverse)" = "Alt+Shift+Backtab"; "Show Desktop" = "Meta+D";
"kwin"."Window Above Other Windows" = "Meta+Shift+PgUp"; "Suspend Compositing" = "Alt+Shift+F12";
"kwin"."Window Below Other Windows" = "Meta+Shift+PgDown"; "Walk Through Windows" = "Alt+Tab";
"kwin"."Window Close" = "Alt+F4"; "Walk Through Windows (Reverse)" = "Alt+Shift+Backtab";
"kwin"."Window Maximize" = "Meta+PgUp"; "Window Above Other Windows" = "Meta+Shift+PgUp";
"kwin"."Window Minimize" = "Meta+PgDown"; "Window Below Other Windows" = "Meta+Shift+PgDown";
"kwin"."Window Operations Menu" = "Alt+F3"; "Window Close" = "Alt+F4";
"kwin"."Window Quick Tile Bottom" = "Meta+Down"; "Window Maximize" = "Meta+PgUp";
"kwin"."Window Quick Tile Left" = "Meta+Left"; "Window Minimize" = "Meta+PgDown";
"kwin"."Window Quick Tile Right" = "Meta+Right"; "Window Operations Menu" = "Alt+F3";
"kwin"."Window Quick Tile Top" = "Meta+Up"; "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 # virtual desktop
"kwin"."Switch One Desktop Down" = "Meta+Ctrl+Down"; {
"kwin"."Switch One Desktop Up" = "Meta+Ctrl+Up"; kwin =
"kwin"."Switch One Desktop to the Left" = "Meta+Ctrl+Left"; {
"kwin"."Switch One Desktop to the Right" = "Meta+Ctrl+Right"; "Switch One Desktop Down" = "Meta+Ctrl+Down";
"kwin"."Window One Desktop Down" = "Meta+Ctrl+Shift+Down"; "Switch One Desktop Up" = "Meta+Ctrl+Up";
"kwin"."Window One Desktop Up" = "Meta+Ctrl+Shift+Up"; "Switch One Desktop to the Left" = "Meta+Ctrl+Left";
"kwin"."Window One Desktop to the Left" = "Meta+Ctrl+Shift+Left"; "Switch One Desktop to the Right" = "Meta+Ctrl+Right";
"kwin"."Window One Desktop to the Right" = "Meta+Ctrl+Shift+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 # media
"mediacontrol"."nextmedia" = "Media Next"; {
"mediacontrol"."pausemedia" = "Media Pause"; mediacontrol =
"mediacontrol"."playpausemedia" = [ "Pause" "Media Play" ]; {
"mediacontrol"."previousmedia" = "Media Previous"; nextmedia = "Media Next";
"mediacontrol"."stopmedia" = "Media Stop"; pausemedia = "Media Pause";
playpausemedia = [ "Pause" "Media Play" ];
previousmedia = "Media Previous";
stopmedia = "Media Stop";
};
}
# dolphin # dolphin
"org.kde.dolphin.desktop"."_launch" = "Meta+E"; { "org.kde.dolphin.desktop"._launch = "Meta+E"; }
# konsole # konsole
"org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T"; { "org.kde.konsole.desktop"._launch = "Ctrl+Alt+T"; }
# krunner # krunner
"org.kde.krunner.desktop"."_launch" = "Alt+Space"; { "org.kde.krunner.desktop"._launch = "Alt+Space"; }
# screenshot # screenshot
"org.kde.spectacle.desktop"."ActiveWindowScreenShot" = "Meta+Print"; {
"org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = [ ]; "org.kde.spectacle.desktop" =
"org.kde.spectacle.desktop"."FullScreenScreenShot" = "Shift+Print"; {
"org.kde.spectacle.desktop"."OpenWithoutScreenshot" = [ ]; OpenWithoutScreenshot = "Ctrl+Print";
"org.kde.spectacle.desktop"."RectangularRegionScreenShot" = "Meta+Shift+Print"; RectangularRegionScreenShot = "Print";
"org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = "Meta+Ctrl+Print"; };
"org.kde.spectacle.desktop"."_launch" = "Print"; }
# settings # settings
"systemsettings.desktop"."_launch" = "Meta+I"; { "systemsettings.desktop"._launch = "Meta+I"; }
# yakuake # yakuake
"yakuake"."toggle-window-state" = "Meta+Space"; { yakuake.toggle-window-state = "Meta+Space"; }
}; # virt-manager
configFile = { "virt-manager.desktop"._launch = "Meta+V"; }
{ ];
configFile = inputs.lib.mkMerge
[
# baloo # baloo
# "baloofilerc"."Basic Settings"."Indexing-Enabled" = false; # "baloofilerc"."Basic Settings"."Indexing-Enabled" = false;
# dolphin # 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"; 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"
];
};
}
# theme
{
kcminputrc.Mouse.cursorTheme = "breeze_cursors";
}
]
{
"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"."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"."KDE"."widgetStyle" = "kvantum";
"kdeglobals"."KFileDialog Settings"."Allow Expansion" = true; "kdeglobals"."KFileDialog Settings"."Allow Expansion" = true;
"kdeglobals"."KFileDialog Settings"."Automatically select filename extension" = 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 Bookmarks" = true;
"kdeglobals"."KFileDialog Settings"."Show Full Path" = true; "kdeglobals"."KFileDialog Settings"."Show Full Path" = true;
"kdeglobals"."KFileDialog Settings"."Show Inline Previews" = false; "kdeglobals"."KFileDialog Settings"."Show Inline Previews" = true;
"kdeglobals"."KFileDialog Settings"."Show Preview" = false; "kdeglobals"."KFileDialog Settings"."Show Preview" = true;
"kdeglobals"."KFileDialog Settings"."Show Speedbar" = true; "kdeglobals"."KFileDialog Settings"."Show Speedbar" = true;
"kdeglobals"."KFileDialog Settings"."Show hidden files" = true; "kdeglobals"."KFileDialog Settings"."Show hidden files" = true;
"kdeglobals"."KFileDialog Settings"."Sort by" = "Name"; "kdeglobals"."KFileDialog Settings"."Sort by" = "Name";
"kdeglobals"."KFileDialog Settings"."Sort directories first" = true; "kdeglobals"."KFileDialog Settings"."Sort directories first" = true;
"kdeglobals"."KFileDialog Settings"."Sort hidden files last" = false; "kdeglobals"."KFileDialog Settings"."Sort hidden files last" = true;
"kdeglobals"."KFileDialog Settings"."Sort reversed" = false;
"kdeglobals"."KFileDialog Settings"."Speedbar Width" = 89;
"kdeglobals"."KFileDialog Settings"."View Style" = "DetailTree"; "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"."General"."FreeFloating" = true;
"krunnerrc"."Plugins"."baloosearchEnabled" = false; "krunnerrc"."Plugins"."baloosearchEnabled" = false;
"kscreenlockerrc"."Daemon"."Autolock" = 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"; # https://www.fanbox.cc/@peas0125/posts/5405326
"ksmserverrc"."General"."loginMode" = "emptySession"; "kscreenlockerrc"."Greeter.Wallpaper.org.kde.image.General"."Image" = ./wallpaper/fanbox-5405326-x4-chop.png;
"ksmserverrc"."SubSession: 3435a388-a8b3-4d1d-9794-b8c30162ce16"."count" = 0; "kscreenlockerrc"."Greeter.Wallpaper.org.kde.image.General"."PreviewImage" =
"ksmserverrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."count" = 0; ./wallpaper/fanbox-5405326-x4-chop.png;
"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-blur"."BlurStrength" = 10;
"kwinrc"."Effect-kwin4_effect_translucency"."MoveResize" = 75; "kwinrc"."Effect-kwin4_effect_translucency"."MoveResize" = 75;
"kwinrc"."Effect-wobblywindows"."AdvancedMode" = true; "kwinrc"."Effect-wobblywindows"."AdvancedMode" = true;
@@ -774,29 +196,6 @@
"kwinrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."active" = "-1"; "kwinrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."active" = "-1";
"kwinrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."count" = 0; "kwinrc"."SubSession: 6a473a77-85df-4e49-8c74-bdb06d1f0efd"."count" = 0;
"kwinrc"."Tiling"."padding" = 4; "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"."Wayland"."InputMethod[$e]" = "/run/current-system/sw/share/applications/org.fcitx.Fcitx5.desktop";
"kwinrc"."Windows"."RollOverDesktops" = true; "kwinrc"."Windows"."RollOverDesktops" = true;
"kwinrc"."Xwayland"."Scale" = 1; "kwinrc"."Xwayland"."Scale" = 1;
@@ -847,7 +246,6 @@
"plasma-localerc"."Translations"."LANGUAGE" = "zh_CN"; "plasma-localerc"."Translations"."LANGUAGE" = "zh_CN";
"plasmanotifyrc"."Notifications"."PopupPosition" = "BottomRight"; "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"; "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;
}; };
}; };
} }

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 =

View File

@@ -0,0 +1,31 @@
xray-client:
uuid: ENC[AES256_GCM,data:WEBAH3PQM5ahNpH/kvTtcjcJ2GllmmRlBR2oclG6AimGenSg,iv:TMp0WTOe9fuELSZoVGenl5XSZUFoiYUBEMWMn4NFv1g=,tag:GJTE0EELcZkrnGAKLYer1g==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzV1pvWkVGSFg5TVAvRlhu
TnFnMEszcDRWWHlQanAyRkRpQWdqQkdhTzFvCjBqUG4xNFBiRnlSeTNQSmdkVkdD
UlVCQjRFVExuZHdrSnViajZGZ3c2dWsKLS0tIHlQYU5VeGpEQzllMmxLSnJZZzZx
N1R3Mkhxa0dOVlJiU0V2OEZVVzZVMFkKae3c1axl22uxh9wMygAHs6q1WA5ImOS8
uzKSthWSqtC7DMqgUFaaSjBYM2TN3l402syx71xVFyyAmCcGZbbJcg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1ck5vzs0xqx0jplmuksrkh45xwmkm2t05m2wyq5k2w2mnkmn79fxs6tvl3l
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCSHJVRGIwQUFpVER5SWxq
YjJOT0lXN3dFOFpjMFlWV3JCbmZFN0hnNEJBClpQUEczK2RWTGlVTmJRbVZaUC8y
bEFrL1RjTTNlYVNnRVRBZlRjaTlnUEEKLS0tIE5GM01pTGFFcWVVSWEvUHE3Z08r
a2xybTRFUFZZN20zajZJTVNwVEpGcEEKglmFMk7z1q5IlZ+lZf9M0HtknmvcYt/P
2/z5e8wLN1Hy0Zsbv0yIL/NmqwxAOGJOdzz7ElJszk/Y4kUr9aRasg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-01-17T08:21:40Z"
mac: ENC[AES256_GCM,data:8+nUsgM47gMZmCQwPgqzM95UuYgF3UStE+XiOPPaed/VIk9e2fNLu9vR+wEgb04pR29BQTWV0qx7xqF/IzFbMYLfujgfDQoOf5pTFi5E6WTFp/MDlq8DSwxJqegEvshoAcRMt2Ur8VKbEZ/ya+yZipEZBPyGHkvi0kS8AOULbb8=,iv:txSZzGGtMVMwi1ogcAJdNqm0bb8so0RVJvkbu0QMHT4=,tag:6TQ7LYfoOrCTPMBAPQqwyg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
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

View File

@@ -1,31 +0,0 @@
xray-client:
uuid: ENC[AES256_GCM,data:WQUDaTeOsY61st6HQKjGKuVoQIy6Gpf0dMzJeIqMUV/4sihj,iv:R6IZzIAmn7rknxD5HWGRE618pdUyEWB0F2tO9+EfunI=,tag:u+50NAK8LwzyUNt0GVyabw==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age19ax6vm3pv8rph5tq3mmehd9sy9jk823tw8svsd790r0lkslycquqvlwz9m
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaTmlZdld6eWtrZzVTR1Fs
RXhTczRsOVNrMWIyWm9ud1lzYVJUbGJnc2drCmVKTHlVNXFZUTh5bmlncHA1MmlE
UnovM0tONHBHTkY4TS9FRmRkRFkrcjgKLS0tIGxxbzV4Z09CdWkyY3d1MFBNL2dO
MGFMaGM3WW5LRXd1T2ZPTkpBdWRTR00Ktnuqblw4rS9fXb2CTzY7BjpDK6K1wx97
tV1FeuKcEXpp8AMKOdbKTOznnolI4sTnz2l0iP1m7bk6f9PGNjyQhw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1qrea4twxdhd7fnvlq5v45528c90qy6hp2wa55kghsxzgut6n6fxs7w6u42
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaQkxFc1U2R2RndVRHcisv
ZGg0VXhDYnpsQVV0Q3habXRiSHhTVTVUOUZ3CkFMUTMzL3NFcHpwaklZZStIYktW
WUpwWi9xQ3MyNXl1aVREcC9KeFlsWE0KLS0tIEJVR1VFRHNBSVVaVlJsNFJtWXAv
YmphYnp4YTQyV0VrT0h4RlNSRVptbkEKao+OYKlwgLcbMe75+RcdlxmYtvgheqp2
SwEhhlV8QNWylkOU+S38C3+oiQqlPZQkwOyBMfB5eoTUM8xCLjf1og==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-08-20T18:23:21Z"
mac: ENC[AES256_GCM,data:Dn2yxA/8GjPpmI5oWybiv0JNiiHDbleTtYZaM7GTMStP15N4Yo1tzVqlfzy6QWdLvcyZtoodamnry9yj+A7dP1sj0Fgkiq2FnzIp+JuJXkKH7AYWKugOmzKz7Kky2SEDU2r1UoucIbW9SRbgyukXPLpGRUGqIZNLR6OZ3w0atTA=,iv:sKyg1opbnQsQs/ZteTjEyarFU/HgmSSe+Frmvwfpylk=,tag:Sc6z4SnXOxICQ+TN7C6ZVA==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.7.3