Compare commits
295 Commits
5c8e50aa9f
...
nod
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e73b7333fc | ||
|
|
fcfc125373 | ||
|
|
3418cfd8f3 | ||
|
|
2585c76039 | ||
|
|
04f10a4afd | ||
|
|
651458875c | ||
|
|
9d04a09de8 | ||
|
|
0eaa052cd5 | ||
|
|
64a54b2cd6 | ||
|
|
55a22804c5 | ||
|
|
d85386bf9c | ||
|
|
1698d0f851 | ||
|
|
18d93e6b0c | ||
|
|
91020c0072 | ||
|
|
e6c5cd5ead | ||
|
|
068fd19353 | ||
|
|
6f7449839d | ||
|
|
9e2eb410ab | ||
|
|
fb974329e7 | ||
|
|
7a70d7dae3 | ||
|
|
e7c1c255bc | ||
|
|
52fe355b0a | ||
|
|
29a917ed37 | ||
|
|
7655e7b3bd | ||
|
|
858a8b77ec | ||
|
|
ba199f9568 | ||
|
|
5f3a3a6f30 | ||
|
|
9472550aaa | ||
|
|
1b7fe7f7ca | ||
|
|
b64abba7e5 | ||
|
|
df06425803 | ||
|
|
6befb22a59 | ||
|
|
b4cd70b5f6 | ||
|
|
78975da970 | ||
|
|
90c093fcef | ||
|
|
40eefbf948 | ||
|
|
042e8c7ee7 | ||
|
|
685a34fcbb | ||
|
|
812555c467 | ||
|
|
ffddb4773b | ||
|
|
98c0a26209 | ||
|
|
e25ad7891d | ||
|
|
470922dce2 | ||
|
|
b0cb61f05e | ||
|
|
e8373d6293 | ||
|
|
ff5de39a19 | ||
|
|
1fc8b2a7cb | ||
|
|
e19ed3ece1 | ||
|
|
4c178e57fa | ||
|
|
f7de7f740d | ||
|
|
6809a6494f | ||
|
|
21fee7056a | ||
|
|
d581209fdf | ||
|
|
67c1f6fb25 | ||
|
|
c1ca5b2cf5 | ||
|
|
3818645825 | ||
|
|
8e84355efd | ||
|
|
f11db2239e | ||
|
|
ebfd72baa8 | ||
|
|
6804f98b99 | ||
|
|
418dcad22c | ||
|
|
31925a5074 | ||
|
|
d3a407f1a5 | ||
|
|
122a4c6cd8 | ||
|
|
5fda879078 | ||
|
|
7b3d4e5dfd | ||
|
|
61984aecf9 | ||
|
|
e422234758 | ||
|
|
b7eb065442 | ||
|
|
60b4066e9b | ||
|
|
cea416b457 | ||
|
|
9d28a08cd4 | ||
|
|
6a4f270959 | ||
|
|
a4d6b98b4b | ||
|
|
ea3d4937ff | ||
|
|
aa6962cb0d | ||
|
|
fa168f01a6 | ||
|
|
511dac22a8 | ||
|
|
74fd62d6dc | ||
|
|
d8704de501 | ||
|
|
9f49dbbd98 | ||
|
|
caf48a81dd | ||
|
|
9399657469 | ||
|
|
10a50773e1 | ||
|
|
d81aa406a4 | ||
|
|
0f17b0c56e | ||
|
|
9b999bae90 | ||
|
|
1da06c73d1 | ||
|
|
84f7003bb6 | ||
|
|
4a83be441b | ||
|
|
e98cc3f4c5 | ||
|
|
07c637749a | ||
|
|
579887e825 | ||
|
|
a2003bc5aa | ||
|
|
d0964c01a7 | ||
|
|
04b2b7da33 | ||
|
|
f4f9e36b16 | ||
|
|
99b534a6a5 | ||
|
|
03131c8a65 | ||
|
|
7565b3163a | ||
|
|
960e786ee5 | ||
|
|
75904231c5 | ||
|
|
1085acc0f5 | ||
|
|
cd25a1a569 | ||
|
|
d009d109a9 | ||
|
|
b4b7378afa | ||
|
|
01deb843e4 | ||
|
|
efe96374de | ||
|
|
35c5760f50 | ||
|
|
fb17f37662 | ||
|
|
e81d82ad6e | ||
|
|
2c6e0f0b73 | ||
|
|
432c1e18f8 | ||
|
|
482b96d0ae | ||
|
|
208d1ed7b4 | ||
|
|
0162b27d79 | ||
|
|
1191019cf8 | ||
|
|
880b3abd60 | ||
|
|
5c9d924606 | ||
|
|
151f61d31e | ||
|
|
eba7f91576 | ||
|
|
eed5c14a25 | ||
|
|
8982916aee | ||
|
|
87ec047d20 | ||
|
|
8be6a841d0 | ||
|
|
bfc57081b8 | ||
|
|
edb394c95c | ||
|
|
5d3491ecec | ||
|
|
871a270a21 | ||
|
|
f222c3b595 | ||
|
|
de8e26e6e3 | ||
|
|
83af085bd6 | ||
|
|
9d84b4bcf0 | ||
|
|
69090a5aa2 | ||
|
|
a62a2113ca | ||
|
|
647830080a | ||
|
|
f22ef9939c | ||
|
|
42a4a2fe0e | ||
|
|
0340fbfacd | ||
|
|
dee4b516b0 | ||
|
|
0821124f4f | ||
|
|
395c676fc6 | ||
|
|
f67d54c66b | ||
|
|
baa8a43692 | ||
|
|
b6b6115b4e | ||
|
|
167f3936dc | ||
|
|
4ef43805ae | ||
|
|
bb773f0dee | ||
|
|
35ad7c04e9 | ||
|
|
31ef18fc34 | ||
|
|
9cb47d96d9 | ||
|
|
9ade97edb9 | ||
|
|
872082819b | ||
|
|
cf66ef2ea9 | ||
|
|
9368c387dc | ||
|
|
da268cd46a | ||
|
|
dd3b850221 | ||
|
|
2ecb7486bb | ||
|
|
bbe16598ad | ||
|
|
c64ade92b7 | ||
|
|
82c2d4c85c | ||
|
|
66f543b966 | ||
|
|
000d37ebed | ||
|
|
17bd864d5c | ||
|
|
0d1a9d0554 | ||
|
|
f3b953e87b | ||
|
|
1ee84d5dd8 | ||
|
|
1b530779aa | ||
|
|
7978dc1987 | ||
|
|
2384158d1c | ||
|
|
58d0b12e1f | ||
|
|
ba66d8bbef | ||
|
|
0f95741b5a | ||
|
|
88eadf2d64 | ||
|
|
46bdbb10f9 | ||
|
|
381489b567 | ||
|
|
0929c6287d | ||
|
|
950ffac450 | ||
|
|
3bc47393b3 | ||
|
|
9d9b2cf84d | ||
|
|
c1710f928f | ||
|
|
9c0094949e | ||
|
|
8e3ec6c603 | ||
|
|
78f6fb64d0 | ||
|
|
244e40a746 | ||
|
|
7b9f009a27 | ||
|
|
4fdc4becf0 | ||
|
|
6d2f90486f | ||
|
|
d6d4a1f3b5 | ||
|
|
04dcba2d3f | ||
|
|
d2d1ce7830 | ||
|
|
fbd045d53e | ||
|
|
027dee164d | ||
|
|
e651b39126 | ||
|
|
5a242c60a5 | ||
|
|
be9f5c23e8 | ||
|
|
c5a0f61faa | ||
|
|
786648990f | ||
|
|
30f5ee6a3a | ||
|
|
7544b0dbac | ||
|
|
68eb400210 | ||
|
|
7952492672 | ||
|
|
fa3348c5c2 | ||
|
|
8a47706856 | ||
|
|
cc9026297e | ||
|
|
bf30ac72d1 | ||
|
|
10344ce639 | ||
|
|
a76fe844c6 | ||
|
|
feb6d269de | ||
|
|
76e83f6498 | ||
|
|
46ad89fe0d | ||
|
|
c186666394 | ||
|
|
6b8d1d277b | ||
|
|
2c358380e4 | ||
|
|
935beadb3b | ||
|
|
5775bc88d6 | ||
|
|
3285d23223 | ||
|
|
a8629627ea | ||
|
|
68c749474e | ||
|
|
e0b43bcbe5 | ||
|
|
10e1941c5a | ||
|
|
2d697c079d | ||
|
|
ed18e8bd51 | ||
|
|
a9670b5896 | ||
|
|
b5e66bbf43 | ||
|
|
e1f74665c1 | ||
|
|
c8903a6b56 | ||
|
|
b1258be64b | ||
|
|
7b08304f78 | ||
|
|
d439996d0c | ||
|
|
c566e4f40a | ||
|
|
272ae1cd55 | ||
|
|
c4052ec34d | ||
|
|
f4f80ffbde | ||
|
|
2de110149f | ||
|
|
b0ab87bbab | ||
|
|
edde9bd52b | ||
|
|
bf56cc88bf | ||
|
|
393d7f4fc4 | ||
|
|
2ecb4ce65a | ||
|
|
88e73a3ea8 | ||
|
|
8be84ff0a9 | ||
|
|
9d3418bec2 | ||
|
|
68cb4377b7 | ||
|
|
ce140cf4f2 | ||
|
|
a60e90ab8f | ||
|
|
89adbab83b | ||
|
|
09837534ea | ||
|
|
a769f9eb1f | ||
|
|
031215cb4f | ||
|
|
b36e420e89 | ||
|
|
0a52deb024 | ||
|
|
d3b5bb0d60 | ||
|
|
5a1c9eeacb | ||
|
|
b9d8a339d2 | ||
|
|
9fe46133da | ||
|
|
f35172fde1 | ||
|
|
6b79aca0be | ||
|
|
9788b83d82 | ||
|
|
366644f5d2 | ||
|
|
3891119804 | ||
|
|
e8284be564 | ||
|
|
6c6dd819a8 | ||
|
|
014fca20a9 | ||
|
|
2b51508030 | ||
|
|
7e8f5f6751 | ||
|
|
61a788961d | ||
|
|
8a8780ff71 | ||
|
|
921f8fc6a7 | ||
|
|
977837f81e | ||
|
|
17bbc58503 | ||
|
|
61fa0dd7fd | ||
|
|
f08777fdab | ||
|
|
7a6f6aac82 | ||
|
|
86ce0ac9d4 | ||
|
|
e08b0e8184 | ||
|
|
02c48e8eaa | ||
|
|
0876ec355e | ||
|
|
28dd018961 | ||
|
|
ce363cafe1 | ||
|
|
67202e47e3 | ||
|
|
d7d9b8e39c | ||
|
|
1a52cafa66 | ||
|
|
b3a419de26 | ||
|
|
0b3931ff86 | ||
|
|
2b854183ac | ||
|
|
18013b83df | ||
|
|
6b4a76dd4a | ||
|
|
c15bf8c58e | ||
|
|
60a839663a | ||
|
|
ee72de3539 | ||
|
|
73281b62d9 | ||
|
|
e5e7164a93 | ||
|
|
3ed506a924 | ||
|
|
33503c4485 |
15
.ignore
Normal file
15
.ignore
Normal file
@@ -0,0 +1,15 @@
|
||||
flake.lock
|
||||
*.remmina
|
||||
*.pem
|
||||
*.env
|
||||
*.key
|
||||
*.ovpn
|
||||
sops-secrets.yaml
|
||||
*.png
|
||||
*.jpg
|
||||
*.webp
|
||||
*.gif
|
||||
*.mp3
|
||||
*.mp4
|
||||
|
||||
|
||||
10
.sops.yaml
10
.sops.yaml
@@ -1,7 +1,10 @@
|
||||
keys:
|
||||
- &users:
|
||||
- &nx2backup age1sgzc2jh8af30a3cp6g7l4hyzusqrn3x3xw7frghc4akvjaplwa3stfemxc
|
||||
- &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634
|
||||
- &nx2_key_13 age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq
|
||||
- &xps-home age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k
|
||||
- &ace-home age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05
|
||||
- &north-home age1jr72q042ccgxpdgdaaev0arzc0vh3r02etv2tzhhsejl0mfaxs3q9hhlaz
|
||||
- &hosts:
|
||||
- &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e
|
||||
- &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6
|
||||
@@ -13,6 +16,9 @@ creation_rules:
|
||||
- *north
|
||||
- *xps
|
||||
- *ace
|
||||
- *nx2backup
|
||||
- *nx2_key_13
|
||||
- *xps-home
|
||||
- *ace-home
|
||||
- *north-home
|
||||
pgp:
|
||||
- *nx2
|
||||
|
||||
@@ -1,143 +1,73 @@
|
||||
{ pkgs, inputs, host, ... }:
|
||||
{
|
||||
imports = ([
|
||||
{ ... }@all: with all; {
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
./system-modules/adb.nix
|
||||
./system-modules/auto-mount.nix
|
||||
./system-modules/tz.nix
|
||||
./system-modules/bluetooth.nix
|
||||
./system-modules/boot.nix
|
||||
./system-modules/cache.nix
|
||||
./system-modules/calendar.nix
|
||||
./system-modules/hardware-configuration.nix
|
||||
./system-modules/fuse.nix
|
||||
./system-modules/games.nix
|
||||
./system-modules/nvidia.nix
|
||||
./system-modules/users.nix
|
||||
./system-modules/sound.nix
|
||||
./system-modules/fonts.nix
|
||||
./system-modules/boot.nix
|
||||
./system-modules/gc.nix
|
||||
./system-modules/boot.nix
|
||||
./system-modules/dm.nix
|
||||
./system-modules/docker.nix
|
||||
./system-modules/fcitx5.nix
|
||||
./system-modules/fonts.nix
|
||||
./system-modules/fuse.nix
|
||||
./system-modules/games.nix
|
||||
./system-modules/gc.nix
|
||||
./system-modules/gpg.nix
|
||||
./system-modules/hardware-configuration.nix
|
||||
./system-modules/health_reminder.nix
|
||||
./system-modules/hsmw.nix
|
||||
./system-modules/kanata.nix
|
||||
./system-modules/terminal.nix
|
||||
./system-modules/kodi.nix
|
||||
./system-modules/networking.nix
|
||||
./system-modules/nixd.nix
|
||||
./system-modules/nvidia.nix
|
||||
./system-modules/obs.nix
|
||||
./system-modules/ollama.nix
|
||||
./system-modules/qmk.nix
|
||||
./system-modules/scanning.nix
|
||||
./system-modules/sops.nix
|
||||
./system-modules/sound.nix
|
||||
./system-modules/sshd.nix
|
||||
./system-modules/input.nix
|
||||
./system-modules/syncthing.nix
|
||||
./system-modules/tuda.nix
|
||||
./system-modules/gui.nix
|
||||
./system-modules/editor.nix
|
||||
./system-modules/printing.nix
|
||||
./system-modules/security.nix
|
||||
./system-modules/users.nix
|
||||
./system-modules/virtualisation.nix
|
||||
./system-modules/ydotool.nix
|
||||
]) ++ (if (host == "NxACE") then [
|
||||
] ++ (if (hyper.host == "NxACE") then [
|
||||
./system-modules/nx2site.nix
|
||||
./system-modules/hugo.nix
|
||||
./system-modules/postgres.nix
|
||||
./system-modules/nx2site/proxy.nix
|
||||
./system-modules/nx2site/audiobookshelf.nix
|
||||
./system-modules/nx2site/copyparty.nix
|
||||
./system-modules/nx2site/gitea.nix
|
||||
./system-modules/nx2site/open-web-calendar.nix
|
||||
./system-modules/nx2site/radicale.nix
|
||||
# ./system-modules/nx2site/nextcloud.nix
|
||||
./system-modules/nx2site/vaultwarden.nix
|
||||
./system-modules/nx2site/paperless.nix
|
||||
|
||||
./system-modules/calendar-publish.nix
|
||||
./system-modules/calendar-lec.nix
|
||||
./system-modules/calendar-dicos.nix
|
||||
] else []);
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console.font = "Lat2-Terminus16";
|
||||
console.keyMap = "de";
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
xkb = {
|
||||
layout = "de";
|
||||
options = "eurosign:e,caps:escape";
|
||||
};
|
||||
# lightdm in lightdm.nix
|
||||
};
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# rtkit is optional but recommended
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
services.libinput.enable = true;
|
||||
hardware.uinput.enable = true;
|
||||
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
package = pkgs.bluez5-experimental;
|
||||
settings.Policy.AutoEnable = "true";
|
||||
settings.General.Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; ([
|
||||
git
|
||||
git-crypt
|
||||
lazygit # home-manager module is bugged
|
||||
wget
|
||||
curlHTTP3
|
||||
zip
|
||||
unzip
|
||||
p7zip
|
||||
unar
|
||||
nano
|
||||
htop
|
||||
direnv
|
||||
openssl
|
||||
blueman
|
||||
dmidecode
|
||||
file
|
||||
parallel
|
||||
# ]) ++ (with pkgs-unstable; [
|
||||
# # sendme
|
||||
./system-modules/calendar/publish.nix
|
||||
./system-modules/calendar/lec.nix
|
||||
./system-modules/calendar/lr.nix
|
||||
./system-modules/calendar/dicos.nix
|
||||
] else [
|
||||
]);
|
||||
|
||||
environment.variables = {
|
||||
EDITOR = "hx";
|
||||
VISUAL = "hx";
|
||||
};
|
||||
|
||||
|
||||
programs.hyprland = {
|
||||
# config is done with home-manager
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
|
||||
|
||||
systemd.extraConfig = "DefaultLimitNOFILE=2048";
|
||||
boot.tmp.useTmpfs = false;
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
system.stateVersion = hyper.pkgs-version;
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
programs.bash.shellInit = ''
|
||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
if [[ "$USER" == "${hyper.user}" ]]; then
|
||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
fi
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
|
||||
{
|
||||
unfree = [
|
||||
"cursor"
|
||||
"discord"
|
||||
"spotify"
|
||||
"obsidian"
|
||||
"steam"
|
||||
"steam-unwrapped"
|
||||
"zoom-us"
|
||||
"zoom"
|
||||
|
||||
@@ -35,6 +38,8 @@
|
||||
"libnvjitlink"
|
||||
"libcusparse"
|
||||
"libnpp"
|
||||
|
||||
"vscode-extension-mhutchie-git-graph"
|
||||
];
|
||||
|
||||
inecure = [
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"base": {
|
||||
"foreground": "#dddddd",
|
||||
"background": "#000000"
|
||||
"foreground": "#eddbef",
|
||||
"background": "#100711"
|
||||
},
|
||||
"to_alter": {
|
||||
"accent": "#8888ff",
|
||||
"secondary": "#4444ff",
|
||||
"tertiary": "#44ff88",
|
||||
"special": "#ff6666",
|
||||
"weird": "#ff66ff"
|
||||
"accent": "#ba71c0",
|
||||
"secondary": "#3266ff",
|
||||
"tertiary": "#4bb6e6",
|
||||
"special": "#76c071",
|
||||
"weird": "#c08571"
|
||||
}
|
||||
}
|
||||
@@ -7,13 +7,27 @@ pkgs: rec {
|
||||
gap-size = 5;
|
||||
border-width = 2;
|
||||
color = let
|
||||
dark = (-0.5);
|
||||
bright = (0.5);
|
||||
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
||||
alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
||||
dark = (-0.4);
|
||||
darker = (-0.6);
|
||||
bright = 0.4;
|
||||
brighter = 0.7;
|
||||
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: {
|
||||
base = color-value;
|
||||
dark = f color-value dark;
|
||||
darker = f color-value darker;
|
||||
bright = f color-value bright;
|
||||
brighter = f color-value brighter;
|
||||
};
|
||||
alter = let f = lib.alter-luminace-hex; in color-value: {
|
||||
base = color-value;
|
||||
dark = f color-value dark;
|
||||
darker = f color-value darker;
|
||||
bright = f color-value bright;
|
||||
brighter = f color-value brighter;
|
||||
};
|
||||
# ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json));
|
||||
ccolor = builtins.mapAttrs alter-set {
|
||||
black = "#111111"; # "#111111" "#001100";
|
||||
black = "#040404"; # "#111111" "#001100";
|
||||
white = "#dddddd"; # "#dddddd" "#66dd66";
|
||||
blue = "#4444dd"; # "#3333dd" "#003300";
|
||||
cyan = "#44dddd"; # "#11dddd" "#00dd55";
|
||||
@@ -26,13 +40,14 @@ pkgs: rec {
|
||||
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
|
||||
fcolor = facolor // fbcolor;
|
||||
xcolor = with ccolor; with fcolor; {
|
||||
background = "#000000";
|
||||
# background = "#000000";
|
||||
# foreground = "#dddddd";
|
||||
# accent = blue;
|
||||
# secondary = cyan;
|
||||
# tertiary = magenta;
|
||||
# special = yellow;
|
||||
# weird = green;
|
||||
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
|
||||
positive = alter "#00dd00";
|
||||
negative = alter "#dd0000";
|
||||
border = accent.base;
|
||||
@@ -40,17 +55,16 @@ pkgs: rec {
|
||||
};
|
||||
in ccolor // fcolor // xcolor;
|
||||
font = {
|
||||
code = {
|
||||
code = rec {
|
||||
name = "JetBrainsMono Nerd Font";
|
||||
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
|
||||
# name = "CascadiaCove-NF";
|
||||
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
|
||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
|
||||
};
|
||||
base = {
|
||||
# name = "NewComputerModern08";
|
||||
# package = pkgs.newcomputermodern;
|
||||
name = "Atkinson Hyperlegible";
|
||||
package = pkgs.atkinson-hyperlegible;
|
||||
package = pkgs.atkinson-hyperlegible-next;
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
|
||||
942
flake.lock
generated
942
flake.lock
generated
File diff suppressed because it is too large
Load Diff
189
flake.nix
189
flake.nix
@@ -2,71 +2,140 @@
|
||||
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
||||
|
||||
inputs = {
|
||||
nixpkgs = { url = "nixpkgs/nixos-24.11"; };
|
||||
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; };
|
||||
nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; };
|
||||
home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
|
||||
nixpkgs.url = "nixpkgs/nixos-25.05";
|
||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||
nixpkgs-latest.url = "github:nixos/nixpkgs?ref=master";
|
||||
nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||
|
||||
hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; };
|
||||
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
|
||||
Hyprspace = { url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; };
|
||||
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
|
||||
|
||||
yazi.url = "github:sxyazi/yazi";
|
||||
yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
zen-browser.url = "github:MarceColl/zen-browser-flake";
|
||||
ghostty.url = "github:ghostty-org/ghostty";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let
|
||||
system = "x86_64-linux";
|
||||
user = "nx2";
|
||||
domain = "nx2.site";
|
||||
|
||||
config = { allowUnfree = true; allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
|
||||
|
||||
pkgs = import nixpkgs { inherit system config; };
|
||||
pkgs-unstable = import nixpkgs-unstable { inherit system config; };
|
||||
pkgs-latest = import nixpkgs-latest { inherit system config; };
|
||||
|
||||
nvidia-set = import ./flake-modules/nvidia.nix;
|
||||
secrets = import ./git-crypt/secrets.nix;
|
||||
rice = import ./flake-modules/rice.nix pkgs;
|
||||
in {
|
||||
nixosConfigurations = let
|
||||
make-nixos-system = host: nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
modules = [ ./configuration.nix ];
|
||||
specialArgs = let
|
||||
nvidia = nvidia-set // {
|
||||
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false;
|
||||
prime = if (host == "NxXPS") then true else false;
|
||||
};
|
||||
in { inherit inputs user host domain pkgs-unstable pkgs-latest secrets rice nvidia; };
|
||||
};
|
||||
in {
|
||||
NxXPS = make-nixos-system "NxXPS";
|
||||
NxNORTH = make-nixos-system "NxNORTH";
|
||||
NxACE = make-nixos-system "NxACE";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
home-manager24 ={
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs24";
|
||||
};
|
||||
|
||||
homeConfigurations = let
|
||||
make-home-configuration = host: user: home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = let
|
||||
nvidia = nvidia-set // {
|
||||
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false;
|
||||
prime = if (host == "NxXPS") then true else false;
|
||||
};
|
||||
in { inherit inputs system user host domain pkgs-unstable pkgs-latest rice secrets nvidia; };
|
||||
nix-on-droid = {
|
||||
url = "github:nix-community/nix-on-droid/release-24.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs24";
|
||||
inputs.home-manager.follows = "home-manager24";
|
||||
};
|
||||
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
|
||||
sops-nix ={
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
||||
|
||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
yazi.url = "github:sxyazi/yazi";
|
||||
|
||||
copyparty.url = "github:9001/copyparty";
|
||||
};
|
||||
|
||||
outputs = { ... }@inputs: with inputs; let
|
||||
|
||||
system = "x86_64-linux";
|
||||
simple-pkgs = import nixpkgs { inherit system; };
|
||||
config = { allowUnfreePredicate = pkg: builtins.elem (simple-pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
|
||||
|
||||
hyper-base = rec {
|
||||
system = "x86_64-linux";
|
||||
user = "nx2";
|
||||
domain = "nx2.site";
|
||||
home = "/home/${user}";
|
||||
webroot = "/var/lib/hugo/nx2site/public";
|
||||
};
|
||||
|
||||
get-pkgs = { host, system?system, nixpkgs?inputs.nixpkgs, version?"25.05" }: import nixpkgs {
|
||||
inherit system config;
|
||||
overlays = [(final: prev: {
|
||||
unstable = import nixpkgs-unstable { inherit system config; };
|
||||
latest = import nixpkgs-latest { inherit system config; };
|
||||
inherit version;
|
||||
})] ++ (if host == "NxACE" then [
|
||||
copyparty.overlays.default
|
||||
] else []);
|
||||
};
|
||||
|
||||
nvidia-base = import ./flake-modules/nvidia.nix;
|
||||
secrets = import ./git-crypt/secrets.nix;
|
||||
rice = import ./flake-modules/rice.nix simple-pkgs;
|
||||
in {
|
||||
nixosConfigurations = let
|
||||
make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
|
||||
pkgs = get-pkgs { inherit host; };
|
||||
modules = [ ./configuration.nix ];
|
||||
specialArgs = let
|
||||
hyper = hyper-base // { inherit host; nvidia = (nvidia-base // nvidia-settings); };
|
||||
in { inherit inputs hyper rice secrets; };
|
||||
};
|
||||
make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
|
||||
pkgs = get-pkgs { inherit host; };
|
||||
modules = [ ./wsl.nix ];
|
||||
specialArgs = let
|
||||
hyper = hyper-base // { inherit host; };
|
||||
rice = import ./flake-modules/rice.nix pkgs;
|
||||
in { inherit inputs hyper rice; };
|
||||
};
|
||||
in {
|
||||
"${user}@NxXPS" = make-home-configuration "NxXPS" user;
|
||||
"${user}@NxNORTH" = make-home-configuration "NxNORTH" user;
|
||||
"${user}@NxACE" = make-home-configuration "NxACE" user;
|
||||
NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
|
||||
NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
|
||||
NxACE = make-nixos-system "NxACE" { enable = false; };
|
||||
NxDCS = make-nixos-wsl-system "NxDCS";
|
||||
};
|
||||
|
||||
nixOnDroidConfigurations = let
|
||||
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
|
||||
pkgs = let
|
||||
options = { inherit host; system = "aarch64-linux"; };
|
||||
in (get-pkgs options) //
|
||||
(get-pkgs (options // { version = "24.05"; nixpkgs = nixpkgs24; } )
|
||||
);
|
||||
modules = [ ./nod.nix ];
|
||||
home-manager-path = home-manager24.outPath;
|
||||
extraSpecialArgs = let
|
||||
hyper = hyper-base // {
|
||||
inherit host;
|
||||
system = "aarch64-linux";
|
||||
user = "nix-on-droid";
|
||||
home = "/data/data/com.termux.nix/files/home";
|
||||
};
|
||||
rice = import ./flake-modules/rice.nix pkgs;
|
||||
in { inherit inputs hyper rice; };
|
||||
};
|
||||
in { NxS23U = makeNODConfiguration "NxS23U"; };
|
||||
|
||||
homeConfigurations = let
|
||||
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = get-pkgs { inherit host; };
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = let
|
||||
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
|
||||
in { inherit inputs hyper rice secrets; };
|
||||
};
|
||||
make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = get-pkgs { inherit host; };
|
||||
modules = [ ./shell-only.nix ];
|
||||
extraSpecialArgs = let
|
||||
hyper = hyper-base // { inherit host; };
|
||||
in { inherit inputs hyper rice secrets; };
|
||||
};
|
||||
in {
|
||||
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
|
||||
"${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
|
||||
"${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
|
||||
|
||||
"${hyper-base.user}@NxDCS" = make-shell-configuration "NxDCS" hyper-base.user;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Binary file not shown.
819
home-modules/assets/nx2.flf
Normal file
819
home-modules/assets/nx2.flf
Normal file
@@ -0,0 +1,819 @@
|
||||
flf2a$ 8 8 17 -1 2
|
||||
nx2.flf by nx2
|
||||
July 10. 2025
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@@
|
||||
db$@
|
||||
88$@
|
||||
88$@
|
||||
°°$@
|
||||
..$@
|
||||
YP$@
|
||||
$@
|
||||
$@@
|
||||
.o. .o.$@
|
||||
'8' '8'$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db db $@
|
||||
C88888D$@
|
||||
88 88 $@
|
||||
C88888D$@
|
||||
YP YP $@
|
||||
$@
|
||||
$@@
|
||||
8 $@
|
||||
.d888b.$@
|
||||
88 8 °°$@
|
||||
'Y888b.$@
|
||||
.. 8 8D$@
|
||||
'Y888P'$@
|
||||
8 $@
|
||||
$@@
|
||||
d8b dD$@
|
||||
°8° d8'$@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8'.8.$@
|
||||
d8' Y8P$@
|
||||
$@
|
||||
$@@
|
||||
.d888b. $@
|
||||
8P 8D $@
|
||||
'Vb d8' $@
|
||||
d88C dD$@
|
||||
C8' d8D $@
|
||||
'888P Yb$@
|
||||
$@
|
||||
$@@
|
||||
Cb$@
|
||||
'D$@
|
||||
'$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
dD$@
|
||||
d8' $@
|
||||
d8 $@
|
||||
88 $@
|
||||
V8 $@
|
||||
V8. $@
|
||||
VD$@
|
||||
$@@
|
||||
Cb. $@
|
||||
'8b $@
|
||||
8b$@
|
||||
88$@
|
||||
8P$@
|
||||
.8P $@
|
||||
CP' $@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
d.8.b $@
|
||||
X8K $@
|
||||
Y'8'P $@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db $@
|
||||
88 $@
|
||||
C888888D$@
|
||||
88 $@
|
||||
VP $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
db$@
|
||||
Y8$@
|
||||
.V$@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
C8888D$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
db$@
|
||||
VP$@
|
||||
$@
|
||||
$@@
|
||||
dD$@
|
||||
d8'$@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8' $@
|
||||
C8' $@
|
||||
$@
|
||||
$@@
|
||||
.d88b. $@
|
||||
.8P 88.$@
|
||||
88 d'88$@
|
||||
88 d' 88$@
|
||||
'88' d8'$@
|
||||
'Y88P' $@
|
||||
$@
|
||||
$@@
|
||||
d8b $@
|
||||
dP88 $@
|
||||
dP'88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
Y8888P$@
|
||||
$@
|
||||
$@@
|
||||
.d888b.$@
|
||||
VP '8D$@
|
||||
odD'$@
|
||||
.88' $@
|
||||
j88. $@
|
||||
888888D$@
|
||||
$@
|
||||
$@@
|
||||
.d888b.$@
|
||||
VP '8D$@
|
||||
oooY'$@
|
||||
°°Yb.$@
|
||||
db 8D$@
|
||||
'Y888P'$@
|
||||
$@
|
||||
$@@
|
||||
j8b $@
|
||||
j888 $@
|
||||
j8'88 $@
|
||||
j8' 88 $@
|
||||
V88888D$@
|
||||
VP $@
|
||||
$@
|
||||
$@@
|
||||
d88888b$@
|
||||
8D $@
|
||||
Y888bo.$@
|
||||
'88$@
|
||||
do. .88$@
|
||||
'Y888P'$@
|
||||
$@
|
||||
$@@
|
||||
dD $@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8888b.$@
|
||||
88' '8D$@
|
||||
'8888P $@
|
||||
$@
|
||||
$@@
|
||||
d88888b$@
|
||||
VP d8'$@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8' $@
|
||||
$@
|
||||
$@@
|
||||
.d888b.$@
|
||||
88 8D$@
|
||||
'VoooY'$@
|
||||
.d°°°b.$@
|
||||
88 8D$@
|
||||
'Y888P'$@
|
||||
$@
|
||||
$@@
|
||||
.d888b.$@
|
||||
88' '8D$@
|
||||
'V8o88'$@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8' $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db$@
|
||||
VP$@
|
||||
$@
|
||||
db$@
|
||||
VP$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db$@
|
||||
VP$@
|
||||
$@
|
||||
db$@
|
||||
V8$@
|
||||
P$@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
.d9$@
|
||||
.dP' $@
|
||||
'Yb. $@
|
||||
'Yb$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
C8888D$@
|
||||
$@
|
||||
C8888D$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
0b. $@
|
||||
'Yb.$@
|
||||
.dP'$@
|
||||
0Y' $@
|
||||
$@
|
||||
$@@
|
||||
.d888b.$@
|
||||
VP '8D$@
|
||||
odD'$@
|
||||
8P' $@
|
||||
.. $@
|
||||
VP $@
|
||||
$@
|
||||
$@@
|
||||
.o888bo. $@
|
||||
d8°' '°Y8 $@
|
||||
d8' .o88b 88$@
|
||||
8P dP d8 8P$@
|
||||
8b 'V88P'8P $@
|
||||
Yo. ...$@
|
||||
'°Y8888P°' $@
|
||||
$@@
|
||||
d8b $@
|
||||
dP'Yb $@
|
||||
d8. .8b $@
|
||||
d8888888b $@
|
||||
d8' '8b$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
d8888b.$@
|
||||
88 '8D$@
|
||||
88oooY'$@
|
||||
88°°Yb.$@
|
||||
88 8D$@
|
||||
Y8888P'$@
|
||||
$@
|
||||
$@@
|
||||
.od88bo. $@
|
||||
.8P°' '°YD$@
|
||||
88 $@
|
||||
88 $@
|
||||
'8b. .dD$@
|
||||
'°Y88P°' $@
|
||||
$@
|
||||
$@@
|
||||
d8888bo. $@
|
||||
88 '8b$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
88 .8P$@
|
||||
Y8888P°' $@
|
||||
$@
|
||||
$@@
|
||||
d888888b$@
|
||||
88' $@
|
||||
88oooo. $@
|
||||
88°°°°' $@
|
||||
88. $@
|
||||
Y888888P$@
|
||||
$@
|
||||
$@@
|
||||
d888888b$@
|
||||
88' $@
|
||||
88oooo. $@
|
||||
88°°°°' $@
|
||||
88 $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
.od88bo. $@
|
||||
.8P°' '°YD$@
|
||||
88 $@
|
||||
88 d88b$@
|
||||
'8b. .8D$@
|
||||
'°Y88P°'V$@
|
||||
$@
|
||||
$@@
|
||||
db db$@
|
||||
88 88$@
|
||||
88ooo88$@
|
||||
88°°°88$@
|
||||
88 88$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
d8888b$@
|
||||
'88' $@
|
||||
88 $@
|
||||
88 $@
|
||||
.88. $@
|
||||
Y8888P$@
|
||||
$@
|
||||
$@@
|
||||
d88b$@
|
||||
'8P'$@
|
||||
88 $@
|
||||
88 $@
|
||||
db..88 $@
|
||||
'Y88P' $@
|
||||
$@
|
||||
$@@
|
||||
db dD$@
|
||||
88 .8P'$@
|
||||
88o8P $@
|
||||
88°8b $@
|
||||
88 '88.$@
|
||||
YP YD$@
|
||||
$@
|
||||
$@@
|
||||
db $@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
88....$@
|
||||
Y8888D$@
|
||||
$@
|
||||
$@@
|
||||
d8b d8b$@
|
||||
88Y8bd8P88$@
|
||||
88 'YP' 88$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
d8b db$@
|
||||
888b 88$@
|
||||
88Y8b 88$@
|
||||
88 Y8b88$@
|
||||
88 Y888$@
|
||||
YP Y8P$@
|
||||
$@
|
||||
$@@
|
||||
.od88bo. $@
|
||||
.8P' 'Y8.$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
'8b. .d8'$@
|
||||
'°Y88P°' $@
|
||||
$@
|
||||
$@@
|
||||
d88888b.$@
|
||||
88' '8b$@
|
||||
88. .8P$@
|
||||
888888P'$@
|
||||
88 $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
.od88bo. $@
|
||||
.8P' 'Y8.$@
|
||||
88 88$@
|
||||
88 '8o 88$@
|
||||
'8b. '8dP'$@
|
||||
'°Y88P°8o $@
|
||||
$@
|
||||
$@@
|
||||
d88888b.$@
|
||||
88' '8b$@
|
||||
88. .8P$@
|
||||
888888P'$@
|
||||
88 Y8b $@
|
||||
YP Y8b$@
|
||||
$@
|
||||
$@@
|
||||
.d8888.$@
|
||||
88' YP$@
|
||||
'8bo. $@
|
||||
'Y8b.$@
|
||||
db 8D$@
|
||||
'8888Y'$@
|
||||
$@
|
||||
$@@
|
||||
d888888b$@
|
||||
'°°88°°'$@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
db db$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
Y8. .8P$@
|
||||
°8888° $@
|
||||
$@
|
||||
$@@
|
||||
db db$@
|
||||
88 88$@
|
||||
Y8 8P$@
|
||||
'8b d8'$@
|
||||
'8bd8' $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
db db$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
Y8 db 8P$@
|
||||
'8bd88bd8'$@
|
||||
'8P°°8P' $@
|
||||
$@
|
||||
$@@
|
||||
db db$@
|
||||
'8b d8'$@
|
||||
'8bd8' $@
|
||||
.dPYb. $@
|
||||
.8P Y8.$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
db db$@
|
||||
'8b d8'$@
|
||||
'8bd8' $@
|
||||
88 $@
|
||||
88 $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
d88888D$@
|
||||
YP d8'$@
|
||||
d8' $@
|
||||
d8' $@
|
||||
d8' db$@
|
||||
d88888P$@
|
||||
$@
|
||||
$@@
|
||||
d88D$@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
L88D$@
|
||||
$@@
|
||||
Cb $@
|
||||
'8b $@
|
||||
'8b $@
|
||||
'8b $@
|
||||
'8b $@
|
||||
'8D$@
|
||||
$@
|
||||
$@@
|
||||
C88D$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
C888$@
|
||||
$@@
|
||||
db $@
|
||||
.dPVb. $@
|
||||
dP' 'Vb$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
C88888D$@
|
||||
$@
|
||||
$@@
|
||||
dD$@
|
||||
C'$@
|
||||
'$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.d8888bd8$@
|
||||
d8°' '°88$@
|
||||
88 88$@
|
||||
88o. .o88$@
|
||||
'Y8888P'8$@
|
||||
$@
|
||||
$@@
|
||||
db $@
|
||||
88od888b. $@
|
||||
88°' '°88$@
|
||||
88 88$@
|
||||
88o. .o88$@
|
||||
Y'Y8888P' $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.od88bo.$@
|
||||
.8P' 'YP$@
|
||||
88 $@
|
||||
'8b. .db$@
|
||||
'°Y88P°'$@
|
||||
$@
|
||||
$@@
|
||||
db$@
|
||||
.d888bo88$@
|
||||
d8°' '°88$@
|
||||
88 88$@
|
||||
88o. .o88$@
|
||||
'Y8888P'V$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.od88bo.$@
|
||||
.8P' '88$@
|
||||
88'°°°°°'$@
|
||||
'8b. .oo$@
|
||||
'°Y88P°'$@
|
||||
$@
|
||||
$@@
|
||||
.d888b.$@
|
||||
d8' '8b$@
|
||||
888b $@
|
||||
88 $@
|
||||
d8 $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.d8888bd0$@
|
||||
d8°' '°88$@
|
||||
88 88$@
|
||||
88o. .o88$@
|
||||
'Y8888P'8$@
|
||||
do. .oP$@
|
||||
'Y8888P' $@@
|
||||
db $@
|
||||
88od888b. $@
|
||||
88°' '°88$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
** $@
|
||||
ooo $@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
088D$@
|
||||
$@
|
||||
$@@
|
||||
**$@
|
||||
ooo$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
8D$@
|
||||
.88$@
|
||||
d8P $@@
|
||||
db $@
|
||||
88 .oo$@
|
||||
88.d8' $@
|
||||
888K $@
|
||||
88'Y8. $@
|
||||
YP 'YD$@
|
||||
$@
|
||||
$@@
|
||||
db $@
|
||||
88 $@
|
||||
88 $@
|
||||
88 $@
|
||||
88..$@
|
||||
'Y8D$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
8.d8b.d8b.$@
|
||||
88 '88 '88$@
|
||||
88 88 88$@
|
||||
88 88 88$@
|
||||
YP YP YP$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
8bod888b. $@
|
||||
88°' '°88$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.d8888b. $@
|
||||
d8°' '°8b$@
|
||||
88 88$@
|
||||
Y8o. .o8P$@
|
||||
'Y8888P' $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.d8888b. $@
|
||||
d8°' '°88$@
|
||||
88 88$@
|
||||
88o. .o88$@
|
||||
88'8888P' $@
|
||||
88 $@
|
||||
YP $@@
|
||||
$@
|
||||
.d8888b. $@
|
||||
d8°' '°88$@
|
||||
88 88$@
|
||||
Y8o. .o88$@
|
||||
'Y8888'88$@
|
||||
88$@
|
||||
YP$@@
|
||||
$@
|
||||
8.d88D$@
|
||||
88' $@
|
||||
88 $@
|
||||
88 $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
.d888b.$@
|
||||
88 °°$@
|
||||
'Y888b.$@
|
||||
.. 8D$@
|
||||
'Y888P'$@
|
||||
$@
|
||||
$@@
|
||||
db $@
|
||||
88oo$@
|
||||
88''$@
|
||||
88 $@
|
||||
88..$@
|
||||
'Y8D$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db db$@
|
||||
88 88$@
|
||||
88 88$@
|
||||
Y8o. .o88$@
|
||||
'Y8888P'8$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db db$@
|
||||
Y8 8P$@
|
||||
'8b d8'$@
|
||||
'8bd8' $@
|
||||
YP $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db db$@
|
||||
88 88$@
|
||||
Y8 db 8P$@
|
||||
'8bd88bd8'$@
|
||||
'8P°°8P' $@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
db db$@
|
||||
'Y8..8P'$@
|
||||
)88( $@
|
||||
.8P''Y8.$@
|
||||
YP YP$@
|
||||
$@
|
||||
$@@
|
||||
$@
|
||||
88 88$@
|
||||
d8 88$@
|
||||
88 88$@
|
||||
Y8o. .o88$@
|
||||
'Y8888'88$@
|
||||
do. .oP$@
|
||||
'Y8888P' $@@
|
||||
$@
|
||||
d88888D$@
|
||||
YP .8P'$@
|
||||
.8P' $@
|
||||
.8P db$@
|
||||
d88888P$@
|
||||
$@
|
||||
$@@
|
||||
.o8P$@
|
||||
8' $@
|
||||
.dP $@
|
||||
C8K $@
|
||||
'Yb $@
|
||||
8. $@
|
||||
'°8b$@
|
||||
$@@
|
||||
db$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
88$@
|
||||
YP$@
|
||||
$@@
|
||||
88o. $@
|
||||
'8 $@
|
||||
Vb. $@
|
||||
X8D$@
|
||||
dP' $@
|
||||
.8 $@
|
||||
C8°' $@
|
||||
$@@
|
||||
$@
|
||||
$@
|
||||
.d8b. .db$@
|
||||
dP' 'Y8P' $@
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
9
home-modules/bar.nix
Normal file
9
home-modules/bar.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ ... }: {
|
||||
imports = [
|
||||
# ./bar/submap-indicator.nix
|
||||
./bar/cclock.nix
|
||||
./bar/caldav-event.nix
|
||||
# ./bar/waybar.nix
|
||||
./bar/hyprpanel.nix
|
||||
];
|
||||
}
|
||||
126
home-modules/bar/caldav-event.nix
Normal file
126
home-modules/bar/caldav-event.nix
Normal file
@@ -0,0 +1,126 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
sops.secrets = {
|
||||
"nx2site/radicale/password" = { };
|
||||
};
|
||||
home.packages = [
|
||||
(pkgs.writers.writePython3Bin "caldav_event" {
|
||||
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
|
||||
} /* python */ ''
|
||||
import os
|
||||
import json
|
||||
from caldav import DAVClient
|
||||
from datetime import datetime, timezone
|
||||
from ics import Calendar
|
||||
from pytz import UTC
|
||||
|
||||
def get_password(password_file):
|
||||
with open(password_file, "r") as file:
|
||||
return file.read().strip()
|
||||
|
||||
def datetime_converter(obj):
|
||||
if isinstance(obj, datetime):
|
||||
return obj.isoformat()
|
||||
return obj
|
||||
|
||||
def datetime_parser(dct):
|
||||
for key, value in dct.items():
|
||||
if isinstance(value, str):
|
||||
try:
|
||||
dct[key] = datetime.fromisoformat(value)
|
||||
except ValueError:
|
||||
pass
|
||||
return dct
|
||||
|
||||
def load_cache(cache_file):
|
||||
if os.path.exists(cache_file):
|
||||
with open(cache_file, "r") as file:
|
||||
return json.load(file, object_hook=datetime_parser)
|
||||
return None
|
||||
|
||||
def save_cache(cache_file, data):
|
||||
with open(cache_file, "w") as file:
|
||||
json.dump(data, file, default=datetime_converter, indent=4)
|
||||
|
||||
|
||||
def get_ongoing_or_next_event(url, username, password):
|
||||
now = datetime.now(timezone.utc)
|
||||
|
||||
try:
|
||||
client = DAVClient(url, username=username, password=password)
|
||||
principal = client.principal()
|
||||
calendars = principal.calendars()
|
||||
|
||||
next_event_dict = {
|
||||
'event_name': "fake",
|
||||
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
|
||||
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
|
||||
}
|
||||
|
||||
for calendar in calendars:
|
||||
for event in calendar.search(start=now):
|
||||
calendar_parsed = Calendar(event.data)
|
||||
for ics_event in calendar_parsed.events:
|
||||
event_dict = {}
|
||||
event_dict['event_name'] = ics_event.name or "(No Title)"
|
||||
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
|
||||
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
|
||||
|
||||
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
|
||||
return event_dict
|
||||
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
|
||||
next_event_dict = event_dict
|
||||
return next_event_dict
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error accessing {url}: {e}")
|
||||
return None
|
||||
|
||||
def is_expired(event_dict: dict):
|
||||
now = datetime.now(timezone.utc).timestamp()
|
||||
event_end = event_dict['event_end'].timestamp()
|
||||
return not (now <= event_end)
|
||||
|
||||
if __name__ == "__main__":
|
||||
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
||||
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||
url = "https://dav.${hyper.domain}/"
|
||||
username = "nx2"
|
||||
password = get_password(password_file)
|
||||
now = datetime.now(timezone.utc).timestamp()
|
||||
|
||||
event_dict = load_cache(cache_file)
|
||||
|
||||
if (event_dict is None) or (is_expired(event_dict)):
|
||||
event_dict = get_ongoing_or_next_event(url, username, password)
|
||||
save_cache(cache_file, event_dict)
|
||||
|
||||
if event_dict is None: # none were found
|
||||
print("* zen *")
|
||||
exit(0)
|
||||
|
||||
event_start = event_dict['event_begin'].timestamp()
|
||||
event_end = event_dict['event_end'].timestamp()
|
||||
|
||||
if event_start <= now <= event_end: # is currently ongoing
|
||||
action_string = "ends"
|
||||
t = event_end - now # time_remaining
|
||||
else: # is in the future
|
||||
action_string = "starts"
|
||||
t = event_start - now # time_remaining
|
||||
|
||||
hours, rem = divmod(int(t), 3600)
|
||||
minutes, _ = divmod(rem, 60)
|
||||
hour_string = f"{hours} hour{'s ' if hours != 1 else ' '}" if hours > 0 else ""
|
||||
minu_string = f"{minutes} minute{'s ' if minutes != 1 else ' '}" if minutes > 0 else ""
|
||||
if hour_string == "" and minu_string == "":
|
||||
time_string = "now"
|
||||
elif hour_string == "" or minu_string == "":
|
||||
time_string = "in " + hour_string + minu_string
|
||||
else:
|
||||
time_string = "in " + hour_string + "and " + minu_string
|
||||
|
||||
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}")
|
||||
'')
|
||||
];
|
||||
}
|
||||
14
home-modules/bar/cclock.nix
Normal file
14
home-modules/bar/cclock.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ pkgs, ... }: let
|
||||
sep = " ";
|
||||
in {
|
||||
home.packages = [
|
||||
(pkgs.writeShellApplication { name = "cclock"; text = /* bash */ ''
|
||||
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
||||
elif [ "$1" = "--no-icons" ]; then
|
||||
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
||||
fi
|
||||
'';})
|
||||
];
|
||||
}
|
||||
515
home-modules/bar/hyprpanel.nix
Normal file
515
home-modules/bar/hyprpanel.nix
Normal file
@@ -0,0 +1,515 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
xdg.configFile = {
|
||||
"hyprpanel/modules.scss".text = with rice.color; /* scss */ ''
|
||||
@include styleModule('cmodule-cclock', (
|
||||
'text-color': ${accent.base},
|
||||
/* 'icon-color': , */
|
||||
/* 'icon-background': , */
|
||||
/* 'label-background': #242438, */
|
||||
/* 'inner-spacing': 0.5em, */
|
||||
/* 'border-enabled': false, */
|
||||
/* 'border-color': #cba6f7, */
|
||||
/* 'icon-size': 1.2em */
|
||||
));
|
||||
@include styleModule('cmodule-caldav_event', (
|
||||
'text-color': ${accent.base},
|
||||
));
|
||||
'';
|
||||
"hyprpanel/modules.json".text = builtins.toJSON {
|
||||
"custom/cclock" = {
|
||||
execute = "cclock";
|
||||
executeOnAction = "";
|
||||
label = "{}";
|
||||
interval = 60000;
|
||||
hideOnEmpty = true;
|
||||
actions.onLeftClick = "menu:calendar";
|
||||
};
|
||||
"custom/caldav_event" = {
|
||||
execute = "caldav_event";
|
||||
label = " {}";
|
||||
interval = 60000;
|
||||
hideOnEmpty = false;
|
||||
actions = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.hyprpanel = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.hyprpanel;
|
||||
settings = with rice.color; let
|
||||
t = builtins.toString (builtins.ceil (rice.transparency * 100));
|
||||
in {
|
||||
"bar.layouts" = {
|
||||
"*" = {
|
||||
"left" = [
|
||||
"volume"
|
||||
# "microphone"
|
||||
# "cpu"
|
||||
# "cputemp"
|
||||
# "ram"
|
||||
(pkgs.lib.mkIf (hyper.host == "NxXPS") "battery")
|
||||
# "bluetooth"
|
||||
"network"
|
||||
"windowtitle"
|
||||
"media"
|
||||
];
|
||||
"middle" = [ "workspaces" ];
|
||||
"right" = [
|
||||
"submap"
|
||||
"custom/caldav_event"
|
||||
"custom/cclock"
|
||||
"notifications"
|
||||
"systray"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
"bar.bluetooth.label" = true;
|
||||
|
||||
"bar.customModules.submap.disabledIcon" = "";
|
||||
"bar.customModules.submap.disabledText" = "";
|
||||
"bar.customModules.submap.enabledIcon" = "";
|
||||
"bar.customModules.submap.enabledText" = "[SUBMAP]";
|
||||
"bar.customModules.submap.icon" = false;
|
||||
"bar.customModules.submap.label" = true;
|
||||
"bar.customModules.submap.showSubmapIcon" = false;
|
||||
"bar.customModules.submap.showSubmapName" = false;
|
||||
|
||||
"bar.workspaces.applicationIconEmptyWorkspace" = "";
|
||||
"bar.workspaces.applicationIconOncePerWorkspace" = false;
|
||||
"bar.workspaces.numbered_active_indicator" = "color";
|
||||
"bar.workspaces.scroll_speed" = 1;
|
||||
"bar.workspaces.showAllActive" = false;
|
||||
"bar.workspaces.showApplicationIcons" = true;
|
||||
"bar.workspaces.show_icons" = false;
|
||||
"bar.workspaces.show_numbered" = false;
|
||||
"bar.workspaces.showWsIcons" = true;
|
||||
"bar.workspaces.spacing" = 1;
|
||||
"bar.workspaces.workspaceMask" = true;
|
||||
"bar.workspaces.workspaces" = 5;
|
||||
|
||||
"theme.bar.background" = background;
|
||||
"theme.bar.border.color" = accent.base;
|
||||
"theme.bar.border_radius" = "0.2em";
|
||||
|
||||
"theme.bar.buttons.background" = background;
|
||||
"theme.bar.buttons.background_opacity" = 0;
|
||||
"theme.bar.buttons.spacing" = "0em";
|
||||
"theme.bar.buttons.padding_x" = "0.5rem";
|
||||
|
||||
"theme.bar.buttons.battery.background" = background;
|
||||
"theme.bar.buttons.battery.border" = accent.base;
|
||||
"theme.bar.buttons.battery.icon_background" = background;
|
||||
"theme.bar.buttons.battery.icon" = accent.base;
|
||||
"theme.bar.buttons.battery.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.bluetooth.background" = background;
|
||||
"theme.bar.buttons.bluetooth.border" = accent.base;
|
||||
"theme.bar.buttons.bluetooth.icon_background" = background;
|
||||
"theme.bar.buttons.bluetooth.icon" = accent.base;
|
||||
"theme.bar.buttons.bluetooth.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.borderColor" = accent.base;
|
||||
|
||||
"theme.bar.buttons.clock.background" = background;
|
||||
"theme.bar.buttons.clock.border" = accent.base;
|
||||
"theme.bar.buttons.clock.icon_background" = background;
|
||||
"theme.bar.buttons.clock.icon" = accent.base;
|
||||
"theme.bar.buttons.clock.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.dashboard.background" = background;
|
||||
"theme.bar.buttons.dashboard.border" = accent.base;
|
||||
"theme.bar.buttons.dashboard.icon" = accent.base;
|
||||
"theme.bar.buttons.icon_background" = background;
|
||||
|
||||
"theme.bar.buttons.icon" = accent.base;
|
||||
|
||||
"theme.bar.buttons.media.background" = background;
|
||||
"theme.bar.buttons.media.border" = accent.base;
|
||||
"theme.bar.buttons.media.icon_background" = background;
|
||||
"theme.bar.buttons.media.icon" = accent.base;
|
||||
"theme.bar.buttons.media.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.cava.background" = background;
|
||||
"theme.bar.buttons.modules.cava.border" = accent.base;
|
||||
"theme.bar.buttons.modules.cava.icon_background" = background;
|
||||
"theme.bar.buttons.modules.cava.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.cava.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.cpu.background" = background;
|
||||
"theme.bar.buttons.modules.cpu.border" = accent.base;
|
||||
"theme.bar.buttons.modules.cpu.icon_background" = background;
|
||||
"theme.bar.buttons.modules.cpu.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.cpu.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.cpuTemp.background" = background;
|
||||
"theme.bar.buttons.modules.cpuTemp.border" = accent.base;
|
||||
"theme.bar.buttons.modules.cpuTemp.icon_background" = background;
|
||||
"theme.bar.buttons.modules.cpuTemp.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.cpuTemp.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.hypridle.background" = background;
|
||||
"theme.bar.buttons.modules.hypridle.border" = accent.base;
|
||||
"theme.bar.buttons.modules.hypridle.icon_background" = background;
|
||||
"theme.bar.buttons.modules.hypridle.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.hypridle.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.hyprsunset.background" = background;
|
||||
"theme.bar.buttons.modules.hyprsunset.border" = accent.base;
|
||||
"theme.bar.buttons.modules.hyprsunset.icon_background" = background;
|
||||
"theme.bar.buttons.modules.hyprsunset.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.hyprsunset.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.kbLayout.background" = background;
|
||||
"theme.bar.buttons.modules.kbLayout.border" = accent.base;
|
||||
"theme.bar.buttons.modules.kbLayout.icon_background" = background;
|
||||
"theme.bar.buttons.modules.kbLayout.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.kbLayout.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.microphone.background" = background;
|
||||
"theme.bar.buttons.modules.microphone.border" = accent.base;
|
||||
"theme.bar.buttons.modules.microphone.icon_background" = background;
|
||||
"theme.bar.buttons.modules.microphone.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.microphone.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.netstat.background" = background;
|
||||
"theme.bar.buttons.modules.netstat.border" = accent.base;
|
||||
"theme.bar.buttons.modules.netstat.icon_background" = background;
|
||||
"theme.bar.buttons.modules.netstat.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.netstat.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.power.background" = background;
|
||||
"theme.bar.buttons.modules.power.border" = accent.base;
|
||||
"theme.bar.buttons.modules.power.icon_background" = background;
|
||||
"theme.bar.buttons.modules.power.icon" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.ram.background" = background;
|
||||
"theme.bar.buttons.modules.ram.border" = accent.base;
|
||||
"theme.bar.buttons.modules.ram.icon_background" = background;
|
||||
"theme.bar.buttons.modules.ram.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.ram.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.storage.background" = background;
|
||||
"theme.bar.buttons.modules.storage.border" = accent.base;
|
||||
"theme.bar.buttons.modules.storage.icon_background" = background;
|
||||
"theme.bar.buttons.modules.storage.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.storage.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.submap.background" = background;
|
||||
"theme.bar.buttons.modules.submap.border" = accent.base;
|
||||
"theme.bar.buttons.modules.submap.icon_background" = background;
|
||||
"theme.bar.buttons.modules.submap.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.submap.text" = special.base;
|
||||
|
||||
"theme.bar.buttons.modules.updates.background" = background;
|
||||
"theme.bar.buttons.modules.updates.border" = accent.base;
|
||||
"theme.bar.buttons.modules.updates.icon_background" = background;
|
||||
"theme.bar.buttons.modules.updates.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.updates.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.weather.background" = background;
|
||||
"theme.bar.buttons.modules.weather.border" = accent.base;
|
||||
"theme.bar.buttons.modules.weather.icon_background" = background;
|
||||
"theme.bar.buttons.modules.weather.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.weather.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.modules.worldclock.background" = background;
|
||||
"theme.bar.buttons.modules.worldclock.border" = accent.base;
|
||||
"theme.bar.buttons.modules.worldclock.icon_background" = background;
|
||||
"theme.bar.buttons.modules.worldclock.icon" = accent.base;
|
||||
"theme.bar.buttons.modules.worldclock.text" = accent.base;
|
||||
"theme.bar.buttons.monochrome" = false;
|
||||
|
||||
"theme.bar.buttons.network.background" = background;
|
||||
"theme.bar.buttons.network.border" = accent.base;
|
||||
"theme.bar.buttons.network.icon_background" = background;
|
||||
"theme.bar.buttons.network.icon" = accent.base;
|
||||
"theme.bar.buttons.network.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.notifications.background" = background;
|
||||
"theme.bar.buttons.notifications.border" = accent.base;
|
||||
"theme.bar.buttons.notifications.icon_background" = background;
|
||||
"theme.bar.buttons.notifications.icon" = accent.base;
|
||||
"theme.bar.buttons.notifications.total" = accent.base;
|
||||
|
||||
"theme.bar.buttons.opacity" = t;
|
||||
|
||||
"theme.bar.buttons.separator.color" = accent.base;
|
||||
|
||||
"theme.bar.buttons.style" = "default";
|
||||
|
||||
"theme.bar.buttons.systray.background" = background;
|
||||
"theme.bar.buttons.systray.border" = accent.base;
|
||||
"theme.bar.buttons.systray.customIcon" = accent.base;
|
||||
|
||||
"theme.bar.buttons.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.volume.background" = background;
|
||||
"theme.bar.buttons.volume.border" = accent.base;
|
||||
"theme.bar.buttons.volume.icon_background" = background;
|
||||
"theme.bar.buttons.volume.icon" = accent.base;
|
||||
"theme.bar.buttons.volume.text" = accent.base;
|
||||
|
||||
"theme.bar.buttons.windowtitle.background" = background;
|
||||
"theme.bar.buttons.windowtitle.border" = secondary.base;
|
||||
"theme.bar.buttons.windowtitle.icon_background" = background;
|
||||
"theme.bar.buttons.windowtitle.icon" = secondary.base;
|
||||
"theme.bar.buttons.windowtitle.text" = secondary.base;
|
||||
|
||||
"theme.bar.buttons.workspaces.active" = accent.bright;
|
||||
"theme.bar.buttons.workspaces.available" = accent.base;
|
||||
"theme.bar.buttons.workspaces.background" = background;
|
||||
"theme.bar.buttons.workspaces.border" = accent.base;
|
||||
"theme.bar.buttons.workspaces.hover" = foreground;
|
||||
"theme.bar.buttons.workspaces.numbered_active_highlighted" = accent.base;
|
||||
"theme.bar.buttons.workspaces.numbered_active_highlighted_text_color" = accent.dark;
|
||||
"theme.bar.buttons.workspaces.numbered_active_highlight_padding" = "0.4em";
|
||||
"theme.bar.buttons.workspaces.numbered_active_underline_color" = accent.bright;
|
||||
"theme.bar.buttons.workspaces.numbered_inactive_padding" = "0.4em";
|
||||
"theme.bar.buttons.workspaces.occupied" = secondary.base;
|
||||
"theme.bar.buttons.workspaces.pill.width" = "4em";
|
||||
"theme.bar.buttons.workspaces.smartHighlight" = true;
|
||||
"theme.bar.buttons.y_margins" = "0em";
|
||||
|
||||
"theme.bar.location" = "bottom";
|
||||
|
||||
"theme.bar.menus.menu.battery.background.color" = background;
|
||||
"theme.bar.menus.menu.battery.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.battery.card.color" = accent.dark;
|
||||
"theme.bar.menus.menu.battery.icons.active" = accent.base;
|
||||
"theme.bar.menus.menu.battery.icons.passive" = accent.base;
|
||||
"theme.bar.menus.menu.battery.label.color" = accent.base;
|
||||
"theme.bar.menus.menu.battery.listitems.active" = accent.base;
|
||||
"theme.bar.menus.menu.battery.listitems.passive" = accent.base;
|
||||
"theme.bar.menus.menu.battery.slider.background" = background;
|
||||
"theme.bar.menus.menu.battery.slider.backgroundhover" = background;
|
||||
"theme.bar.menus.menu.battery.slider.primary" = accent.base;
|
||||
"theme.bar.menus.menu.battery.slider.puck" = accent.base;
|
||||
"theme.bar.menus.menu.battery.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.bluetooth.background.color" = background;
|
||||
"theme.bar.menus.menu.bluetooth.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.card.color" = accent.dark;
|
||||
"theme.bar.menus.menu.bluetooth.iconbutton.active" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.iconbutton.passive" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.icons.active" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.icons.passive" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.label.color" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.listitems.active" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.listitems.passive" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.scroller.color" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.status" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.switch.disabled" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.switch_divider" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.switch.enabled" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.switch.puck" = accent.base;
|
||||
"theme.bar.menus.menu.bluetooth.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.clock.background.color" = background;
|
||||
"theme.bar.menus.menu.clock.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.clock.calendar.contextdays" = foreground;
|
||||
"theme.bar.menus.menu.clock.calendar.currentday" = accent.base;
|
||||
"theme.bar.menus.menu.clock.calendar.days" = accent.base;
|
||||
"theme.bar.menus.menu.clock.calendar.paginator" = accent.base;
|
||||
"theme.bar.menus.menu.clock.calendar.weekdays" = accent.base;
|
||||
"theme.bar.menus.menu.clock.calendar.yearmonth" = accent.base;
|
||||
"theme.bar.menus.menu.clock.card.color" = accent.dark;
|
||||
"theme.bar.menus.menu.clock.text" = foreground;
|
||||
"theme.bar.menus.menu.clock.time.time" = accent.base;
|
||||
"theme.bar.menus.menu.clock.time.timeperiod" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.hourly.icon" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.hourly.temperature" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.hourly.time" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.icon" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.stats" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.status" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.temperature" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.thermometer.cold" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.thermometer.extremelycold" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.thermometer.extremelyhot" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.thermometer.hot" = accent.base;
|
||||
"theme.bar.menus.menu.clock.weather.thermometer.moderate" = accent.base;
|
||||
|
||||
"theme.bar.menus.menu.dashboard.background.color" = background;
|
||||
"theme.bar.menus.menu.dashboard.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.card.color" = accent.dark;
|
||||
|
||||
"theme.bar.menus.menu.dashboard.controls.bluetooth.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.controls.bluetooth.text" = foreground;
|
||||
"theme.bar.menus.menu.dashboard.controls.disabled" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.controls.input.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.controls.input.text" = foreground;
|
||||
"theme.bar.menus.menu.dashboard.controls.notifications.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.controls.notifications.text" = foreground;
|
||||
"theme.bar.menus.menu.dashboard.controls.volume.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.controls.volume.text" = foreground;
|
||||
"theme.bar.menus.menu.dashboard.controls.wifi.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.controls.wifi.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.dashboard.directories.left.bottom.color" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.directories.left.middle.color" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.directories.left.top.color" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.directories.right.bottom.color" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.directories.right.middle.color" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.directories.right.top.color" = accent.base;
|
||||
|
||||
"theme.bar.menus.menu.dashboard.monitors.bar_background" = background;
|
||||
"theme.bar.menus.menu.dashboard.monitors.cpu.bar" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.cpu.icon" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.cpu.label" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.disk.bar" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.disk.icon" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.disk.label" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.gpu.bar" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.gpu.icon" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.gpu.label" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.ram.bar" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.ram.icon" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.monitors.ram.label" = accent.base;
|
||||
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.body" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.border" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.button_text" = foreground;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.card" = accent.dark;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.confirm" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.deny" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.confirmation.label" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.logout" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.restart" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.shutdown" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.powermenu.sleep" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.profile.name" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.shortcuts.background" = background;
|
||||
"theme.bar.menus.menu.dashboard.shortcuts.recording" = accent.base;
|
||||
"theme.bar.menus.menu.dashboard.shortcuts.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.media.album" = accent.base;
|
||||
"theme.bar.menus.menu.media.artist" = accent.base;
|
||||
"theme.bar.menus.menu.media.background.color" = "#000000";
|
||||
"theme.bar.menus.menu.media.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.media.buttons.background" = background;
|
||||
"theme.bar.menus.menu.media.buttons.enabled" = accent.base;
|
||||
"theme.bar.menus.menu.media.buttons.inactive" = accent.base;
|
||||
"theme.bar.menus.menu.media.buttons.text" = foreground;
|
||||
"theme.bar.menus.menu.media.card.color" = accent.dark;
|
||||
"theme.bar.menus.menu.media.card.tint" = accent.dark;
|
||||
"theme.bar.menus.menu.media.slider.background" = accent.dark;
|
||||
"theme.bar.menus.menu.media.slider.backgroundhover" = secondary.dark;
|
||||
"theme.bar.menus.menu.media.slider.primary" = accent.base;
|
||||
"theme.bar.menus.menu.media.slider.puck" = accent.bright;
|
||||
"theme.bar.menus.menu.media.song" = accent.base;
|
||||
"theme.bar.menus.menu.media.timestamp" = accent.base;
|
||||
|
||||
"theme.bar.menus.menu.network.background.color" = background;
|
||||
"theme.bar.menus.menu.network.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.network.card.color" = accent.dark;
|
||||
"theme.bar.menus.menu.network.iconbuttons.active" = accent.base;
|
||||
"theme.bar.menus.menu.network.iconbuttons.passive" = accent.base;
|
||||
"theme.bar.menus.menu.network.icons.active" = accent.base;
|
||||
"theme.bar.menus.menu.network.icons.passive" = accent.base;
|
||||
"theme.bar.menus.menu.network.label.color" = accent.base;
|
||||
"theme.bar.menus.menu.network.listitems.active" = accent.base;
|
||||
"theme.bar.menus.menu.network.listitems.passive" = accent.base;
|
||||
"theme.bar.menus.menu.network.scroller.color" = accent.base;
|
||||
"theme.bar.menus.menu.network.status.color" = accent.base;
|
||||
"theme.bar.menus.menu.network.switch.disabled" = accent.base;
|
||||
"theme.bar.menus.menu.network.switch.enabled" = accent.base;
|
||||
"theme.bar.menus.menu.network.switch.puck" = accent.base;
|
||||
"theme.bar.menus.menu.network.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.notifications.background" = background;
|
||||
"theme.bar.menus.menu.notifications.border" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.card" = accent.dark;
|
||||
"theme.bar.menus.menu.notifications.clear" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.label" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.no_notifications_label" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.pager.background" = background;
|
||||
"theme.bar.menus.menu.notifications.pager.button" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.pager.label" = accent.bright;
|
||||
"theme.bar.menus.menu.notifications.scrollbar.color" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.switch.disabled" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.switch_divider" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.switch.enabled" = accent.base;
|
||||
"theme.bar.menus.menu.notifications.switch.puck" = accent.base;
|
||||
|
||||
|
||||
"theme.bar.menus.menu.power.background.color" = background;
|
||||
"theme.bar.menus.menu.power.border.color" = accent.base;
|
||||
|
||||
"theme.bar.menus.menu.power.buttons.logout.background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.logout.icon_background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.logout.icon" = accent.base;
|
||||
"theme.bar.menus.menu.power.buttons.logout.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.power.buttons.restart.background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.restart.icon_background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.restart.icon" = accent.base;
|
||||
"theme.bar.menus.menu.power.buttons.restart.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.power.buttons.shutdown.background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.shutdown.icon_background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.shutdown.icon" = accent.base;
|
||||
"theme.bar.menus.menu.power.buttons.shutdown.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.power.buttons.sleep.background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.sleep.icon_background" = background;
|
||||
"theme.bar.menus.menu.power.buttons.sleep.icon" = accent.base;
|
||||
"theme.bar.menus.menu.power.buttons.sleep.text" = foreground;
|
||||
|
||||
|
||||
"theme.bar.menus.menu.systray.dropdownmenu.background" = background;
|
||||
"theme.bar.menus.menu.systray.dropdownmenu.divider" = accent.base;
|
||||
"theme.bar.menus.menu.systray.dropdownmenu.text" = foreground;
|
||||
|
||||
"theme.bar.menus.menu.volume.audio_slider.background" = background;
|
||||
"theme.bar.menus.menu.volume.audio_slider.backgroundhover" = background;
|
||||
"theme.bar.menus.menu.volume.audio_slider.primary" = accent.base;
|
||||
"theme.bar.menus.menu.volume.audio_slider.puck" = accent.base;
|
||||
"theme.bar.menus.menu.volume.background.color" = background;
|
||||
"theme.bar.menus.menu.volume.border.color" = accent.base;
|
||||
"theme.bar.menus.menu.volume.card.color" = accent.dark;
|
||||
"theme.bar.menus.menu.volume.iconbutton.active" = accent.base;
|
||||
"theme.bar.menus.menu.volume.iconbutton.passive" = accent.base;
|
||||
"theme.bar.menus.menu.volume.input_slider.background" = background;
|
||||
"theme.bar.menus.menu.volume.input_slider.backgroundhover" = background;
|
||||
"theme.bar.menus.menu.volume.input_slider.primary" = accent.base;
|
||||
"theme.bar.menus.menu.volume.input_slider.puck" = accent.base;
|
||||
"theme.bar.menus.menu.volume.label.color" = accent.base;
|
||||
"theme.bar.menus.menu.volume.listitems.active" = accent.base;
|
||||
"theme.bar.menus.menu.volume.listitems.passive" = accent.base;
|
||||
"theme.bar.menus.menu.volume.text" = foreground;
|
||||
|
||||
"theme.bar.menus.monochrome" = false;
|
||||
|
||||
"theme.bar.opacity" = t;
|
||||
"theme.bar.outer_spacing" = "0em";
|
||||
"theme.bar.transparent" = false;
|
||||
|
||||
"theme.font.name" = rice.font.code.name;
|
||||
"theme.font.size" = "12px";
|
||||
|
||||
"theme.notification.actions.background" = background;
|
||||
"theme.notification.actions.text" = foreground;
|
||||
"theme.notification.background" = background;
|
||||
"theme.notification.border" = border;
|
||||
"theme.notification.close_button.background" = accent.dark;
|
||||
"theme.notification.close_button.label" = accent.base;
|
||||
"theme.notification.label" = accent.bright;
|
||||
"theme.notification.labelicon" = accent.base;
|
||||
"theme.notification.opacity" = 100;
|
||||
"theme.notification.text" = foreground;
|
||||
"theme.notification.time" = accent.base;
|
||||
|
||||
"theme.osd.bar_color" = accent.base;
|
||||
"theme.osd.bar_container" = accent.dark;
|
||||
"theme.osd.bar_empty_color" = accent.dark;
|
||||
"theme.osd.bar_overflow_color" = accent.base;
|
||||
"theme.osd.border.color" = border;
|
||||
"theme.osd.icon_container" = secondary.dark;
|
||||
"theme.osd.icon" = secondary.bright;
|
||||
"theme.osd.label" = accent.bright;
|
||||
"theme.osd.opacity" = t;
|
||||
};
|
||||
};
|
||||
}
|
||||
37
home-modules/bar/submap-indicator.nix
Normal file
37
home-modules/bar/submap-indicator.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = [
|
||||
(pkgs.writeShellApplication { name = "submap_indicator"; text = /*bash*/ ''
|
||||
print_help() {
|
||||
echo "Usage: submap_indicator {set <string>|unset}"
|
||||
}
|
||||
if [ $# -lt 1 ]; then
|
||||
print_help; exit 1;
|
||||
fi
|
||||
case "$1" in
|
||||
set)
|
||||
# Check if there is a second argument for the 'set' operation
|
||||
if [ $# -eq 2 ]; then
|
||||
echo "$2" > /tmp/submap-indictor
|
||||
pkill -RTMIN+8 waybar
|
||||
pkill -RTMIN+8 hyprpanel
|
||||
else
|
||||
echo "Error: 'set' operation requires exactly one string argument."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
unset)
|
||||
echo "" > /tmp/submap-indictor
|
||||
pkill -RTMIN+8 waybar
|
||||
pkill -RTMIN+8 hyprpanel
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown command '$1'"
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
'';})
|
||||
];
|
||||
}
|
||||
165
home-modules/bar/waybar.nix
Normal file
165
home-modules/bar/waybar.nix
Normal file
@@ -0,0 +1,165 @@
|
||||
{ pkgs, ... }@all: with all; let
|
||||
sep = " ";
|
||||
in {
|
||||
programs.waybar = {
|
||||
enable = false;
|
||||
package = pkgs.waybar;
|
||||
settings = {
|
||||
bar = {
|
||||
# height = 20;
|
||||
layer = "top";
|
||||
position = "bottom";
|
||||
margin-top = 0;
|
||||
# margin-left = rice.gap-size;
|
||||
# margin-bottom = rice.gap-size;
|
||||
# margin-right = rice.gap-size;
|
||||
margin-left = 0;
|
||||
margin-bottom = 0;
|
||||
margin-right = 0;
|
||||
spacing = 10;
|
||||
fixed-center = true;
|
||||
modules-left = [
|
||||
# "cpu"
|
||||
# "memory"
|
||||
"wireplumber"
|
||||
"backlight"
|
||||
"battery"
|
||||
"network"
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
modules-right = [
|
||||
"custom/mode"
|
||||
"custom/caldav_event"
|
||||
"custom/cclock"
|
||||
"tray"
|
||||
];
|
||||
"hyprland/workspaces" = {
|
||||
on-click = "activate";
|
||||
format = "{name}";
|
||||
all-outputs = false;
|
||||
active-only = false;
|
||||
};
|
||||
"hyprland/window" = {
|
||||
# format = "${sep}{}";
|
||||
format = "{}";
|
||||
separate-outputs = true;
|
||||
};
|
||||
"custom/cclock" = {
|
||||
exec = "cclock";
|
||||
restart-interval = 60;
|
||||
};
|
||||
"custom/caldav_event" = {
|
||||
format = "${sep}{}";
|
||||
exec = "caldav_event";
|
||||
restart-interval = 60;
|
||||
max-width = 60;
|
||||
};
|
||||
"custom/mode" = {
|
||||
exec = "cat /tmp/submap-indictor";
|
||||
interval = "once";
|
||||
signal = 8;
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 1;
|
||||
format = "${sep}{}%";
|
||||
max-length = 10;
|
||||
};
|
||||
memory = {
|
||||
interval = 5;
|
||||
format = "${sep}{avail:.0f}G free";
|
||||
};
|
||||
battery = {
|
||||
interval = 60;
|
||||
tooltip = false;
|
||||
format = "{icon}${sep}{capacity}%";
|
||||
states = {
|
||||
warning = 15;
|
||||
critical = 5;
|
||||
};
|
||||
format-icons = [ " " " " " " " " " " ];
|
||||
format-charging = "{icon}${sep}+{capacity}%";
|
||||
format-plugged = "{icon}${sep}P{capacity}%";
|
||||
format-full = "{icon}${sep}F{capacity}%";
|
||||
};
|
||||
backlight = {
|
||||
device = "eDP-1";
|
||||
format = "{icon}${sep}{percent}%";
|
||||
format-icons = [ "" "" "" "" "" "" "" "" "" ];
|
||||
};
|
||||
network = {
|
||||
format-wifi = "${sep}{essid}";
|
||||
format-ethernet = "${sep}Wired";
|
||||
format-disconnected = "${sep}Disconnected";
|
||||
};
|
||||
wireplumber = {
|
||||
format = "${sep}{volume}%";
|
||||
format-muted = "${sep}--%";
|
||||
};
|
||||
};
|
||||
};
|
||||
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in /* css */ ''
|
||||
* {
|
||||
font-family: ${rice.font.code.name};
|
||||
font-size: 1em;
|
||||
min-height: 0px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(${f background},${builtins.toString rice.transparency});
|
||||
}
|
||||
|
||||
#clock,
|
||||
#custom-cclock,
|
||||
#custom-mode,
|
||||
#custom-caldav-event,
|
||||
#battery,
|
||||
#cpu,
|
||||
#tray,
|
||||
#disk,
|
||||
#backlight,
|
||||
#network,
|
||||
#wireplumber,
|
||||
#memory,
|
||||
#window,
|
||||
#workspaces {
|
||||
padding: 0px 3px;
|
||||
margin-top: 0.3em;
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
color: rgb(${f accent.bright});
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: rgb(${f accent.base});
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
#workspaces button.active { color: rgb(${f background}); background-color: rgb(${f accent.base}); }
|
||||
#workspaces button:hover { color: rgb(${f tertiary.bright}); }
|
||||
#workspaces button.urgent { background-color: rgba(${f magenta.base},${builtins.toString rice.transparency}); }
|
||||
|
||||
#window, #custom-caldav_event {
|
||||
font-family: ${rice.font.base.name}, ${rice.font.code.name};
|
||||
color: rgb(${f tertiary.bright});
|
||||
}
|
||||
|
||||
#wireplumber.muted { color: rgb(${f tertiary.bright}); }
|
||||
#wireplumber { padding-left: 10px; }
|
||||
|
||||
#battery.warning:not(.charging) { color: rgb(${f green.base});; }
|
||||
#battery.charging { color: rgb(${f green.base}); }
|
||||
#battery.critical {
|
||||
background: rgb(${f negative.base});
|
||||
color: rgb(${f foreground});
|
||||
}
|
||||
|
||||
#custom-mode { color: rgb(${f red.base}); }
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.bash = {
|
||||
programs.bash = let
|
||||
init = /* bash */ ''
|
||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
'';
|
||||
in {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
ll = "ls -l";
|
||||
@@ -15,5 +19,10 @@
|
||||
"checkjobs"
|
||||
];
|
||||
enableCompletion = false;
|
||||
|
||||
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
|
||||
shellInit = init;
|
||||
} // pkgs.lib.mkIf (pkgs.version != "25.05") {
|
||||
profileExtra = init;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,33 +1,6 @@
|
||||
{ config, pkgs, lib, host, secrets, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
bitwarden
|
||||
bitwarden-cli
|
||||
];
|
||||
|
||||
# home.file.".config/Bitwarden CLI/data.json".text = ''
|
||||
# {
|
||||
# "stateVersion": 9,
|
||||
# "global": {
|
||||
# "theme": "system",
|
||||
# "window": {},
|
||||
# "environmentUrls": {
|
||||
# "base": "https://pw.nx2.site",
|
||||
# "api": null,
|
||||
# "identity": null,
|
||||
# "webVault": null,
|
||||
# "icons": null,
|
||||
# "notifications": null,
|
||||
# "events": null,
|
||||
# "keyConnector": null
|
||||
# },
|
||||
# "region": "Self-hosted",
|
||||
# "installedVersion": "2023.12.0"
|
||||
# }
|
||||
# }
|
||||
# '';
|
||||
|
||||
# home.sessionVariables.BW_SESSION = secrets.bitwarden.env.bw-session;
|
||||
|
||||
}
|
||||
|
||||
57
home-modules/calendar-campuszeit-fix.nix
Normal file
57
home-modules/calendar-campuszeit-fix.nix
Normal file
@@ -0,0 +1,57 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = let
|
||||
u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" {
|
||||
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||
} /* python */ ''
|
||||
import os
|
||||
import sys
|
||||
|
||||
def replace_campus_timezone(directory):
|
||||
if not os.path.isdir(directory):
|
||||
print(f"Error: {directory} is not a valid directory.")
|
||||
return
|
||||
|
||||
for filename in os.listdir(directory):
|
||||
filepath = os.path.join(directory, filename)
|
||||
if not os.path.isfile(filepath):
|
||||
continue
|
||||
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
start_idx = content.find('BEGIN:VTIMEZONE')
|
||||
end_idx = content.find('END:VTIMEZONE', start_idx)
|
||||
if start_idx != -1 and end_idx != -1:
|
||||
content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):]
|
||||
|
||||
# Replace all TZID references
|
||||
content = content.replace('TZID:CampusNetZeit', 'TZID:Europe/Berlin')
|
||||
content = content.replace('TZID=CampusNetZeit', 'TZID=Europe/Berlin')
|
||||
content = content.replace('TZID:"CampusNetZeit"', 'TZID:"Europe/Berlin"')
|
||||
content = content.replace('TZID="CampusNetZeit"', 'TZID="Europe/Berlin"')
|
||||
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
print(f"Updated time zone in: {filename}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: python replace_timezone.py <directory>")
|
||||
else:
|
||||
replace_campus_timezone(sys.argv[1])
|
||||
'';
|
||||
in [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "nx_fix_campuszeit";
|
||||
text = /*bash*/ ''
|
||||
echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY
|
||||
read -r -p "Continue?"
|
||||
sudo chown -R ${hyper.user} "$1"
|
||||
${u}/bin/nx_fix_campuszeit_python "$1"
|
||||
sudo chown -R radicale "$1"
|
||||
'';
|
||||
})
|
||||
];
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, lib, user, secrets, domain, ... }: let
|
||||
calendars = [
|
||||
{ pkgs, ... }@all: with all; let
|
||||
calendars = with hyper; [
|
||||
{
|
||||
name = "Preservation";
|
||||
primary = true;
|
||||
@@ -41,9 +41,23 @@
|
||||
type = "ics";
|
||||
}
|
||||
{
|
||||
name = "Handball Männer";
|
||||
url = "http://i.cal.to/ical/108/dhb/handball-nationalmannschaft/c687e97f.bc7c3eb6-11a0e356.ics";
|
||||
color = "#880023";
|
||||
name = "LR";
|
||||
url = "https://${domain}/lr.ics";
|
||||
color = "#005040";
|
||||
read-only = true;
|
||||
type = "ics";
|
||||
}
|
||||
{
|
||||
name = "Worlds";
|
||||
url = "https://zlypher.github.io/lol-events/cal/league-of-legends-world-championship.ical";
|
||||
color = "#A4C3DE";
|
||||
read-only = true;
|
||||
type = "ics";
|
||||
}
|
||||
{
|
||||
name = "Feiertage Hessen";
|
||||
url = "https://ics.tools/Feiertage/hessen.ics";
|
||||
color = "#303030";
|
||||
read-only = true;
|
||||
type = "ics";
|
||||
}
|
||||
@@ -68,7 +82,7 @@ in {
|
||||
inherit primary;
|
||||
remote = {
|
||||
inherit url name;
|
||||
userName = user; # my globally set username
|
||||
userName = hyper.user; # my globally set username
|
||||
};
|
||||
};
|
||||
in lib.attrsets.mergeAttrsList (
|
||||
@@ -88,7 +102,7 @@ in {
|
||||
"calendar.registry.${to_safe_name calendar.name}.name" = name;
|
||||
"calendar.registry.${to_safe_name calendar.name}.type" = type;
|
||||
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
|
||||
"calendar.registry.${to_safe_name calendar.name}.username" = user;
|
||||
"calendar.registry.${to_safe_name calendar.name}.username" = hyper.user;
|
||||
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
||||
}) calendars
|
||||
) // {
|
||||
|
||||
@@ -1,30 +1,34 @@
|
||||
{ pkgs, rice, secrets, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
let
|
||||
channels = [
|
||||
"Caedrel"
|
||||
"agurin"
|
||||
"asmongold"
|
||||
# "agurin"
|
||||
# "asmongold"
|
||||
# "Caedrel"
|
||||
"EintrachtSpandau"
|
||||
"GamesDoneQuick"
|
||||
# "EintrachtSpandau"
|
||||
# "GamesDoneQuick"
|
||||
"Odoamne"
|
||||
"iwdominate"
|
||||
"imls"
|
||||
"gdolphn"
|
||||
"GRONKH"
|
||||
"handofblood"
|
||||
"HisWattson"
|
||||
"Jankos"
|
||||
"KuruHS"
|
||||
# "KuruHS"
|
||||
"LEC"
|
||||
"lol_nemesis"
|
||||
"NASA"
|
||||
"NNOPrime"
|
||||
# "NASA"
|
||||
"NoWay4u_Sir"
|
||||
"OfficialMikeShinoda"
|
||||
# "OfficialMikeShinoda"
|
||||
"Rekkles"
|
||||
"riotgames"
|
||||
"thebausffs"
|
||||
"ThePrimeagen"
|
||||
"Tolkin"
|
||||
"TSM_ImperialHal"
|
||||
"Xisuma"
|
||||
"imperialhal__"
|
||||
"velja_lol"
|
||||
# "Xisuma"
|
||||
"zackrawrr"
|
||||
];
|
||||
tabber = channel-name: {
|
||||
@@ -42,8 +46,14 @@ let
|
||||
};
|
||||
};
|
||||
in {
|
||||
# sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [ chatterino2 ];
|
||||
packages = with pkgs; [
|
||||
chatterino2
|
||||
streamlink
|
||||
# mpv
|
||||
];
|
||||
file = {
|
||||
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
|
||||
{
|
||||
@@ -67,20 +77,27 @@ in {
|
||||
"separateMessages": true,
|
||||
"showTimestamps": false,
|
||||
"timestampFormat": "h =mm",
|
||||
"usernameDisplayMode": 1
|
||||
"usernameDisplayMode": 1,
|
||||
"findAllUsernames": true
|
||||
},
|
||||
"showReplyButton": false,
|
||||
"showTabCloseButton": false,
|
||||
"showTabLiveButton": false,
|
||||
"splitheader": {
|
||||
"showGame": true,
|
||||
"showTitle": true,
|
||||
"showUptime": true,
|
||||
"showViewerCount": true
|
||||
},
|
||||
"tabVisibility": 1,
|
||||
"theme": {
|
||||
"name": "nxtheme.json"
|
||||
}
|
||||
"tabStyle": "compact",
|
||||
"tabVisibility": 0,
|
||||
"theme": { "name": "nxtheme.json" }
|
||||
},
|
||||
"behaviour": {
|
||||
"autocopletion": {
|
||||
"ShowUsernameCompeltionMenu": false,
|
||||
"userCompletinOnlyWithAt": true
|
||||
},
|
||||
"pauseOnHoverDuration": 5.0,
|
||||
"showJoins": false,
|
||||
"usernameRightClickBehavior": 0,
|
||||
@@ -92,615 +109,89 @@ in {
|
||||
},
|
||||
"highlighting": {
|
||||
"badges": [
|
||||
{
|
||||
"alert": false,
|
||||
"color": "#7f7f3f49",
|
||||
"displayName": "Broadcaster",
|
||||
"name": "broadcaster",
|
||||
"showInMentions": false,
|
||||
"sound": false,
|
||||
"soundUrl": ""
|
||||
},
|
||||
{
|
||||
"alert": false,
|
||||
"color": "#7f7f3f49",
|
||||
"displayName": "Admin",
|
||||
"name": "admin",
|
||||
"showInMentions": false,
|
||||
"sound": false,
|
||||
"soundUrl": ""
|
||||
},
|
||||
{
|
||||
"alert": false,
|
||||
"color": "#7f7f3f49",
|
||||
"displayName": "Staff",
|
||||
"name": "staff",
|
||||
"showInMentions": false,
|
||||
"sound": false,
|
||||
"soundUrl": ""
|
||||
},
|
||||
{
|
||||
"alert": false,
|
||||
"displayName": "Moderator",
|
||||
"name": "moderator",
|
||||
"showInMentions": false,
|
||||
"sound": false,
|
||||
"soundUrl": ""
|
||||
},
|
||||
{
|
||||
"alert": false,
|
||||
"color": "#7f7f3578",
|
||||
"displayName": "VIP",
|
||||
"name": "vip",
|
||||
"showInMentions": false,
|
||||
"sound": false,
|
||||
"soundUrl": ""
|
||||
}
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||
{ "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
|
||||
],
|
||||
"selfMessageHighlight": {
|
||||
"color": "#73008cff",
|
||||
"enabled": true
|
||||
}
|
||||
"selfMessageHighlight": { "color": "#73008cff", "enabled": true }
|
||||
},
|
||||
"hotkeys": {
|
||||
"addedDefaults": [
|
||||
"change channel",
|
||||
"close popup window",
|
||||
"create clip",
|
||||
"delete",
|
||||
"emote picker",
|
||||
"focus down",
|
||||
"focus left",
|
||||
"focus right",
|
||||
"focus up",
|
||||
"go to end of input",
|
||||
"go to end of input with selection",
|
||||
"go to start of input",
|
||||
"go to start of input with selection",
|
||||
"new popup window",
|
||||
"new popup window from tab",
|
||||
"new split",
|
||||
"new tab",
|
||||
"next message",
|
||||
"open debug popup",
|
||||
"open quick switcher",
|
||||
"open settings",
|
||||
"popup accept",
|
||||
"popup focus search box",
|
||||
"popup reject",
|
||||
"popup scroll down",
|
||||
"popup scroll up",
|
||||
"popup select last tab",
|
||||
"popup select next tab",
|
||||
"popup select previous tab",
|
||||
"popup select tab #1",
|
||||
"popup select tab #2",
|
||||
"popup select tab #3",
|
||||
"popup select tab #4",
|
||||
"popup select tab #5",
|
||||
"popup select tab #6",
|
||||
"popup select tab #7",
|
||||
"popup select tab #8",
|
||||
"previous message",
|
||||
"reconnect",
|
||||
"reload emotes",
|
||||
"remove tab",
|
||||
"reopen split",
|
||||
"scroll page down",
|
||||
"scroll page up",
|
||||
"scroll to bottom",
|
||||
"scroll to top",
|
||||
"select last tab",
|
||||
"select next tab",
|
||||
"select previous tab",
|
||||
"select tab #1",
|
||||
"select tab #2",
|
||||
"select tab #3",
|
||||
"select tab #4",
|
||||
"select tab #5",
|
||||
"select tab #6",
|
||||
"select tab #7",
|
||||
"select tab #8",
|
||||
"send message",
|
||||
"send message and keep text",
|
||||
"show global search",
|
||||
"show search",
|
||||
"toggle live tabs only",
|
||||
"toggle local r9k",
|
||||
"toggle tab visibility",
|
||||
"zoom in",
|
||||
"zoom out",
|
||||
"zoom reset"
|
||||
],
|
||||
"change channel": {
|
||||
"action": "changeChannel",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+R"
|
||||
},
|
||||
"close popup window": {
|
||||
"action": "delete",
|
||||
"arguments": [],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Esc"
|
||||
},
|
||||
"create clip": {
|
||||
"action": "createClip",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Alt+X"
|
||||
},
|
||||
"delete": {
|
||||
"action": "delete",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+W"
|
||||
},
|
||||
"emote picker": {
|
||||
"action": "openEmotesPopup",
|
||||
"arguments": [],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Ctrl+E"
|
||||
},
|
||||
"focus down": {
|
||||
"action": "focus",
|
||||
"arguments": [
|
||||
"down"
|
||||
],
|
||||
"category": "split",
|
||||
"keySequence": "Alt+Down"
|
||||
},
|
||||
"focus left": {
|
||||
"action": "focus",
|
||||
"arguments": [
|
||||
"left"
|
||||
],
|
||||
"category": "split",
|
||||
"keySequence": "Alt+Left"
|
||||
},
|
||||
"focus right": {
|
||||
"action": "focus",
|
||||
"arguments": [
|
||||
"right"
|
||||
],
|
||||
"category": "split",
|
||||
"keySequence": "Alt+Right"
|
||||
},
|
||||
"focus up": {
|
||||
"action": "focus",
|
||||
"arguments": [
|
||||
"up"
|
||||
],
|
||||
"category": "split",
|
||||
"keySequence": "Alt+Up"
|
||||
},
|
||||
"go to end of input": {
|
||||
"action": "cursorToEnd",
|
||||
"arguments": [
|
||||
"withoutSelection"
|
||||
],
|
||||
"category": "splitInput",
|
||||
"keySequence": "End"
|
||||
},
|
||||
"go to end of input with selection": {
|
||||
"action": "cursorToEnd",
|
||||
"arguments": [
|
||||
"withSelection"
|
||||
],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Shift+End"
|
||||
},
|
||||
"go to start of input": {
|
||||
"action": "cursorToStart",
|
||||
"arguments": [
|
||||
"withoutSelection"
|
||||
],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Home"
|
||||
},
|
||||
"go to start of input with selection": {
|
||||
"action": "cursorToStart",
|
||||
"arguments": [
|
||||
"withSelection"
|
||||
],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Shift+Home"
|
||||
},
|
||||
"new popup window": {
|
||||
"action": "popup",
|
||||
"arguments": [
|
||||
"split"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+N"
|
||||
},
|
||||
"new popup window from tab": {
|
||||
"action": "popup",
|
||||
"arguments": [
|
||||
"window"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+Shift+N"
|
||||
},
|
||||
"new split": {
|
||||
"action": "newSplit",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+T"
|
||||
},
|
||||
"new tab": {
|
||||
"action": "newTab",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+Shift+T"
|
||||
},
|
||||
"next message": {
|
||||
"action": "nextMessage",
|
||||
"arguments": [],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Down"
|
||||
},
|
||||
"open debug popup": {
|
||||
"action": "debug",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "F10"
|
||||
},
|
||||
"open quick switcher": {
|
||||
"action": "openQuickSwitcher",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+K"
|
||||
},
|
||||
"open settings": {
|
||||
"action": "openSettings",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+P"
|
||||
},
|
||||
"popup accept": {
|
||||
"action": "accept",
|
||||
"arguments": [],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Return"
|
||||
},
|
||||
"popup focus search box": {
|
||||
"action": "search",
|
||||
"arguments": [],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+F"
|
||||
},
|
||||
"popup reject": {
|
||||
"action": "reject",
|
||||
"arguments": [],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Esc"
|
||||
},
|
||||
"popup scroll down": {
|
||||
"action": "scrollPage",
|
||||
"arguments": [
|
||||
"down"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "PgDown"
|
||||
},
|
||||
"popup scroll up": {
|
||||
"action": "scrollPage",
|
||||
"arguments": [
|
||||
"up"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "PgUp"
|
||||
},
|
||||
"popup select last tab": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"last"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+9"
|
||||
},
|
||||
"popup select next tab": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"next"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+Tab"
|
||||
},
|
||||
"popup select previous tab": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"previous"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+Shift+Tab"
|
||||
},
|
||||
"popup select tab #1": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"0"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+1"
|
||||
},
|
||||
"popup select tab #2": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"1"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+2"
|
||||
},
|
||||
"popup select tab #3": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"2"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+3"
|
||||
},
|
||||
"popup select tab #4": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"3"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+4"
|
||||
},
|
||||
"popup select tab #5": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"4"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+5"
|
||||
},
|
||||
"popup select tab #6": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"5"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+6"
|
||||
},
|
||||
"popup select tab #7": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"6"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+7"
|
||||
},
|
||||
"popup select tab #8": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"7"
|
||||
],
|
||||
"category": "popupWindow",
|
||||
"keySequence": "Ctrl+8"
|
||||
},
|
||||
"previous message": {
|
||||
"action": "previousMessage",
|
||||
"arguments": [],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Up"
|
||||
},
|
||||
"reconnect": {
|
||||
"action": "reconnect",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+F5"
|
||||
},
|
||||
"reload emotes": {
|
||||
"action": "reloadEmotes",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "F5"
|
||||
},
|
||||
"remove tab": {
|
||||
"action": "removeTab",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+Shift+W"
|
||||
},
|
||||
"reopen split": {
|
||||
"action": "reopenSplit",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+G"
|
||||
},
|
||||
"scroll page down": {
|
||||
"action": "scrollPage",
|
||||
"arguments": [
|
||||
"down"
|
||||
],
|
||||
"category": "split",
|
||||
"keySequence": "PgDown"
|
||||
},
|
||||
"scroll page up": {
|
||||
"action": "scrollPage",
|
||||
"arguments": [
|
||||
"up"
|
||||
],
|
||||
"category": "split",
|
||||
"keySequence": "PgUp"
|
||||
},
|
||||
"scroll to bottom": {
|
||||
"action": "scrollToBottom",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+End"
|
||||
},
|
||||
"scroll to top": {
|
||||
"action": "scrollToTop",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+Home"
|
||||
},
|
||||
"select last tab": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"last"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+9"
|
||||
},
|
||||
"select next tab": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"next"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+Tab"
|
||||
},
|
||||
"select previous tab": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"previous"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+Shift+Tab"
|
||||
},
|
||||
"select tab #1": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"0"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+1"
|
||||
},
|
||||
"select tab #2": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"1"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+2"
|
||||
},
|
||||
"select tab #3": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"2"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+3"
|
||||
},
|
||||
"select tab #4": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"3"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+4"
|
||||
},
|
||||
"select tab #5": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"4"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+5"
|
||||
},
|
||||
"select tab #6": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"5"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+6"
|
||||
},
|
||||
"select tab #7": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"6"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+7"
|
||||
},
|
||||
"select tab #8": {
|
||||
"action": "openTab",
|
||||
"arguments": [
|
||||
"7"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+8"
|
||||
},
|
||||
"send message": {
|
||||
"action": "sendMessage",
|
||||
"arguments": [],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Return"
|
||||
},
|
||||
"send message and keep text": {
|
||||
"action": "sendMessage",
|
||||
"arguments": [
|
||||
"keepInput"
|
||||
],
|
||||
"category": "splitInput",
|
||||
"keySequence": "Ctrl+Return"
|
||||
},
|
||||
"show global search": {
|
||||
"action": "showGlobalSearch",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+Shift+F"
|
||||
},
|
||||
"show search": {
|
||||
"action": "showSearch",
|
||||
"arguments": [],
|
||||
"category": "split",
|
||||
"keySequence": "Ctrl+F"
|
||||
},
|
||||
"toggle live tabs only": {
|
||||
"action": "setTabVisibility",
|
||||
"arguments": [
|
||||
"toggleLiveOnly"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+Shift+L"
|
||||
},
|
||||
"toggle local r9k": {
|
||||
"action": "toggleLocalR9K",
|
||||
"arguments": [],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+H"
|
||||
},
|
||||
"toggle tab visibility": {
|
||||
"action": "setTabVisibility",
|
||||
"arguments": [
|
||||
"toggle"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+U"
|
||||
},
|
||||
"zoom in": {
|
||||
"action": "zoom",
|
||||
"arguments": [
|
||||
"in"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl++"
|
||||
},
|
||||
"zoom out": {
|
||||
"action": "zoom",
|
||||
"arguments": [
|
||||
"out"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+-"
|
||||
},
|
||||
"zoom reset": {
|
||||
"action": "zoom",
|
||||
"arguments": [
|
||||
"reset"
|
||||
],
|
||||
"category": "window",
|
||||
"keySequence": "Ctrl+0"
|
||||
}
|
||||
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open overlay", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle overlay click-through", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
|
||||
|
||||
"change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
|
||||
"close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
||||
"create clip": { "action": "createClip", "arguments": [], "category": "split", "keySequence": "Alt+X" },
|
||||
"delete": { "action": "delete", "arguments": [], "category": "split", "keySequence": "Ctrl+W" },
|
||||
"emote picker": { "action": "openEmotesPopup", "arguments": [], "category": "splitInput", "keySequence": "Ctrl+E" },
|
||||
"focus down": { "action": "focus", "arguments": [ "down" ], "category": "split", "keySequence": "Alt+Down" },
|
||||
"focus left": { "action": "focus", "arguments": [ "left" ], "category": "split", "keySequence": "Alt+Left" },
|
||||
"focus right": { "action": "focus", "arguments": [ "right" ], "category": "split", "keySequence": "Alt+Right" },
|
||||
"focus up": { "action": "focus", "arguments": [ "up" ], "category": "split", "keySequence": "Alt+Up" },
|
||||
"go to end of input": { "action": "cursorToEnd", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "End" },
|
||||
"go to end of input with selection": { "action": "cursorToEnd", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+End" },
|
||||
"go to start of input": { "action": "cursorToStart", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "Home" },
|
||||
"go to start of input with selection": { "action": "cursorToStart", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+Home" },
|
||||
"new popup window": { "action": "popup", "arguments": [ "split" ], "category": "window", "keySequence": "Ctrl+N" },
|
||||
"new popup window from tab": { "action": "popup", "arguments": [ "window" ], "category": "window", "keySequence": "Ctrl+Shift+N" },
|
||||
"new split": { "action": "newSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+T" },
|
||||
"new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
|
||||
"next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
|
||||
"open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
|
||||
"open overlay": { "action": "popupOverlay", "arguments": [], "category": "split", "keySequence": "Ctrl+Alt+N" },
|
||||
"open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
|
||||
"open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
|
||||
"popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
|
||||
"popup focus search box": { "action": "search", "arguments": [], "category": "popupWindow", "keySequence": "Ctrl+F" },
|
||||
"popup reject": { "action": "reject", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
||||
"popup scroll down": { "action": "scrollPage", "arguments": [ "down" ], "category": "popupWindow", "keySequence": "PgDown" },
|
||||
"popup scroll up": { "action": "scrollPage", "arguments": [ "up" ], "category": "popupWindow", "keySequence": "PgUp" },
|
||||
"popup select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "popupWindow", "keySequence": "Ctrl+9" },
|
||||
"popup select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "popupWindow", "keySequence": "Ctrl+Tab" },
|
||||
"popup select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "popupWindow", "keySequence": "Ctrl+Shift+Tab" },
|
||||
"popup select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "popupWindow", "keySequence": "Ctrl+1" },
|
||||
"popup select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "popupWindow", "keySequence": "Ctrl+2" },
|
||||
"popup select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "popupWindow", "keySequence": "Ctrl+3" },
|
||||
"popup select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "popupWindow", "keySequence": "Ctrl+4" },
|
||||
"popup select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "popupWindow", "keySequence": "Ctrl+5" },
|
||||
"popup select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "popupWindow", "keySequence": "Ctrl+6" },
|
||||
"popup select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "popupWindow", "keySequence": "Ctrl+7" },
|
||||
"popup select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "popupWindow", "keySequence": "Ctrl+8" },
|
||||
"previous message": { "action": "previousMessage", "arguments": [], "category": "splitInput", "keySequence": "Up" },
|
||||
"reconnect": { "action": "reconnect", "arguments": [], "category": "split", "keySequence": "Ctrl+F5" },
|
||||
"reload emotes": { "action": "reloadEmotes", "arguments": [], "category": "split", "keySequence": "F5" },
|
||||
"remove tab": { "action": "removeTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+W" },
|
||||
"reopen split": { "action": "reopenSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+G" },
|
||||
"scroll page down": { "action": "scrollPage", "arguments": [ "down" ], "category": "split", "keySequence": "PgDown" },
|
||||
"scroll page up": { "action": "scrollPage", "arguments": [ "up" ], "category": "split", "keySequence": "PgUp" },
|
||||
"scroll to bottom": { "action": "scrollToBottom", "arguments": [], "category": "split", "keySequence": "Ctrl+End" },
|
||||
"scroll to top": { "action": "scrollToTop", "arguments": [], "category": "split", "keySequence": "Ctrl+Home" },
|
||||
"select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "window", "keySequence": "Ctrl+9" },
|
||||
"select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "window", "keySequence": "Ctrl+Tab" },
|
||||
"select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "window", "keySequence": "Ctrl+Shift+Tab" },
|
||||
"select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "window", "keySequence": "Ctrl+1" },
|
||||
"select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "window", "keySequence": "Ctrl+2" },
|
||||
"select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "window", "keySequence": "Ctrl+3" },
|
||||
"select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "window", "keySequence": "Ctrl+4" },
|
||||
"select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "window", "keySequence": "Ctrl+5" },
|
||||
"select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "window", "keySequence": "Ctrl+6" },
|
||||
"select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "window", "keySequence": "Ctrl+7" },
|
||||
"select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "window", "keySequence": "Ctrl+8" },
|
||||
"send message": { "action": "sendMessage", "arguments": [], "category": "splitInput", "keySequence": "Return" },
|
||||
"send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
|
||||
"show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
|
||||
"show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
|
||||
"toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
|
||||
"toggle overlay click-through": { "action": "toggleOverlayInertia", "arguments": [ "all" ], "category": "split", "keySequence": "Ctrl+Shift+U" },
|
||||
"toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
|
||||
"zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
|
||||
"zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
|
||||
"zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
|
||||
},
|
||||
"misc": {
|
||||
"currentVersion": "2.5.1",
|
||||
"askOnTabVisibilityToggle": false,
|
||||
"currentVersion": "2.5.3",
|
||||
"lockNotebookLayout": false
|
||||
},
|
||||
"similarity": {
|
||||
@@ -712,6 +203,12 @@ in {
|
||||
"ui": {
|
||||
"lastSelectChannelTab": 0,
|
||||
"lastSelectIrcConn": -1
|
||||
},
|
||||
"external": {
|
||||
"streamlink": {
|
||||
"quality": "",
|
||||
"options": "--config ${hyper.home}/.config/streamlink/config"
|
||||
}
|
||||
}
|
||||
}
|
||||
'';
|
||||
@@ -731,7 +228,7 @@ in {
|
||||
}];
|
||||
};
|
||||
".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let
|
||||
tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
|
||||
# tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
|
||||
nh = rice.lib.nohash;
|
||||
in /* json */ ''
|
||||
{
|
||||
@@ -821,6 +318,23 @@ in {
|
||||
}
|
||||
}
|
||||
'';
|
||||
".local/share/chatterino/Settings/commands.json".text = ''
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"name": "/sl",
|
||||
"func": "/streamlink",
|
||||
"showInMsgContextMenu": false
|
||||
}
|
||||
]
|
||||
}
|
||||
'';
|
||||
".config/streamlink/config".text = /* ini */ ''
|
||||
twitch-api-header=Authorization=OAuth ${secrets.streamlink.twitch-oauth}
|
||||
player=mpv
|
||||
twitch-low-latency
|
||||
default-stream=best
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
7
home-modules/clipboard.nix
Normal file
7
home-modules/clipboard.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
services.clipman = {
|
||||
package = pkgs.clipman;
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
@@ -3,20 +3,30 @@
|
||||
home.file.".config/color-pallete.html".text = with rice.color; let
|
||||
cb = color-set: color-name: size: /* html */ ''
|
||||
<div class="color-container" style="border-color: ${color-set.base}">
|
||||
<div class="color-box" style="background: ${color-set.darker}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.bright}"> ${color-name}.darker </p>
|
||||
<p sktyle="color: ${color-set.bright}"> ${color-set.darker} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.bright}"> ${color-name}.dark </p>
|
||||
<p style="color: ${color-set.bright}"> ${color-set.dark} </p>
|
||||
<p style="color: ${color-set.brighter}"> ${color-name}.dark </p>
|
||||
<p style="color: ${color-set.brighter}"> ${color-set.dark} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
|
||||
<p class="dynamic-text"> ${color-name}.base </p>
|
||||
<p class="dynamic-text"> ${color-set.base} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.dark}"> ${color-name}.bright </p>
|
||||
<p style="color: ${color-set.dark}"> ${color-set.bright} </p>
|
||||
<p style="color: ${color-set.darker}"> ${color-name}.bright </p>
|
||||
<p style="color: ${color-set.darker}"> ${color-set.bright} </p>
|
||||
</div>
|
||||
<div class="color-box" style="background: ${color-set.brighter}; height: ${builtins.toString size}px;">
|
||||
<p style="color: ${color-set.dark}"> ${color-name}.brighter </p>
|
||||
<p style="color: ${color-set.dark}"> ${color-set.brighter} </p>
|
||||
</div>
|
||||
</div>
|
||||
'';
|
||||
rgb = rice.lib.hex-to-rgb-comma-string;
|
||||
s = builtins.toString;
|
||||
in /* html */ ''
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
@@ -30,27 +40,26 @@
|
||||
padding: 0px;
|
||||
}
|
||||
html {
|
||||
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||
padding: auto;
|
||||
background: transparent;
|
||||
}
|
||||
body {
|
||||
font-family: ${rice.font.base.name};
|
||||
color: ${foreground};
|
||||
width: fit-content;
|
||||
margin: 10px auto 10px auto;
|
||||
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||
border: ${builtins.toString rice.border-width}px solid ${border};
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
padding: ${builtins.toString rice.gap-size}px;
|
||||
background: rgba(${rgb background},${s rice.transparency});
|
||||
border: ${s rice.border-width}px solid ${border};
|
||||
border-radius: ${s rice.rounding}px;
|
||||
padding: ${s rice.gap-size}px;
|
||||
}
|
||||
h1 {
|
||||
margin: ${builtins.toString rice.gap-size}px;
|
||||
margin: ${s rice.gap-size}px;
|
||||
}
|
||||
.color-container {
|
||||
font-family: ${rice.font.code.name};
|
||||
display: flex;
|
||||
gap: ${builtins.toString rice.gap-size}px;
|
||||
margin: ${builtins.toString rice.gap-size}px;
|
||||
gap: ${s rice.gap-size}px;
|
||||
margin: ${s rice.gap-size}px;
|
||||
}
|
||||
.color-box {
|
||||
width: 200px;
|
||||
@@ -58,7 +67,7 @@
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
border-radius: ${s rice.rounding}px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
@@ -67,8 +76,9 @@
|
||||
${cb accent "accent" 100}
|
||||
${cb secondary "secondary" 100}
|
||||
${cb tertiary "tertiary" 100}
|
||||
${cb weird "weird" 100}
|
||||
${cb special "special" 100}
|
||||
${cb weird "weird" 80}
|
||||
${cb special "special" 80}
|
||||
${cb subtle "subtle" 80}
|
||||
<br>
|
||||
${cb positive "positive" 70}
|
||||
${cb negative "negative" 70}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ lib, user, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
programs = {
|
||||
direnv = {
|
||||
|
||||
@@ -1,199 +1,200 @@
|
||||
{ pkgs, lib, host, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
vesktop
|
||||
# discord
|
||||
];
|
||||
|
||||
file.".config/vesktop/settings/settings.json".text = let
|
||||
settingsSyncVersion = "1729179678715";
|
||||
in /* json */ ''{
|
||||
"notifyAboutUpdates": true,
|
||||
"autoUpdate": false,
|
||||
"autoUpdateNotification": true,
|
||||
"useQuickCss": true,
|
||||
"themeLinks": [
|
||||
"https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
|
||||
],
|
||||
"enabledThemes": [],
|
||||
"enableReactDevtools": false,
|
||||
"frameless": false,
|
||||
"transparent": true,
|
||||
"winCtrlQ": false,
|
||||
"macosTranslucency": false,
|
||||
"disableMinSize": false,
|
||||
"winNativeTitleBar": false,
|
||||
"plugins": {
|
||||
"BadgeAPI": { "enabled": true },
|
||||
"CommandsAPI": { "enabled": true },
|
||||
"ContextMenuAPI": { "enabled": true },
|
||||
"MemberListDecoratorsAPI": { "enabled": false },
|
||||
"MessageAccessoriesAPI": { "enabled": false },
|
||||
"MessageDecorationsAPI": { "enabled": false },
|
||||
"MessageEventsAPI": { "enabled": false },
|
||||
"MessagePopoverAPI": { "enabled": false },
|
||||
"NoticesAPI": { "enabled": true },
|
||||
"ServerListAPI": { "enabled": false },
|
||||
"NoTrack": { "enabled": true },
|
||||
"Settings": {
|
||||
"enabled": true,
|
||||
"settingsLocation": "aboveActivity"
|
||||
},
|
||||
"SupportHelper": { "enabled": true },
|
||||
"ChatInputButtonAPI": { "enabled": false },
|
||||
"AlwaysAnimate": { "enabled": true },
|
||||
"AlwaysTrust": { "enabled": true },
|
||||
"AnonymiseFileNames": { "enabled": false },
|
||||
"WebRichPresence (arRPC)": { "enabled": false },
|
||||
"BANger": { "enabled": false },
|
||||
"BetterFolders": { "enabled": false },
|
||||
"BetterGifAltText": { "enabled": false },
|
||||
"BetterGifPicker": { "enabled": false },
|
||||
"BetterNotesBox": { "enabled": false },
|
||||
"BetterRoleDot": { "enabled": false },
|
||||
"BetterUploadButton": { "enabled": false },
|
||||
"BiggerStreamPreview": { "enabled": false },
|
||||
"BlurNSFW": { "enabled": false },
|
||||
"CallTimer": { "enabled": false },
|
||||
"ClearURLs": { "enabled": false },
|
||||
"ClientTheme": { "enabled": false },
|
||||
"ColorSighted": { "enabled": false },
|
||||
"ConsoleShortcuts": { "enabled": false },
|
||||
"CopyUserURLs": { "enabled": false },
|
||||
"CrashHandler": { "enabled": true },
|
||||
"CustomRPC": { "enabled": false },
|
||||
"Dearrow": { "enabled": false },
|
||||
"Decor": { "enabled": false },
|
||||
"DisableCallIdle": { "enabled": false },
|
||||
"EmoteCloner": { "enabled": false },
|
||||
"Experiments": { "enabled": false },
|
||||
"F8Break": { "enabled": false },
|
||||
"FakeNitro": { "enabled": false },
|
||||
"FakeProfileThemes": { "enabled": true },
|
||||
"FavoriteEmojiFirst": { "enabled": false },
|
||||
"FavoriteGifSearch": { "enabled": false },
|
||||
"FixCodeblockGap": { "enabled": false },
|
||||
"FixSpotifyEmbeds": { "enabled": false },
|
||||
"FixYoutubeEmbeds": { "enabled": false },
|
||||
"ForceOwnerCrown": { "enabled": false },
|
||||
"FriendInvites": { "enabled": false },
|
||||
"GameActivityToggle": { "enabled": false },
|
||||
"GifPaste": { "enabled": false },
|
||||
"GreetStickerPicker": { "enabled": false },
|
||||
"HideAttachments": { "enabled": false },
|
||||
"iLoveSpam": { "enabled": false },
|
||||
"IgnoreActivities": { "enabled": false },
|
||||
"ImageZoom": { "enabled": false },
|
||||
"InvisibleChat": { "enabled": false },
|
||||
"KeepCurrentChannel": { "enabled": false },
|
||||
"LastFMRichPresence": { "enabled": false },
|
||||
"LoadingQuotes": { "enabled": false },
|
||||
"MemberCount": { "enabled": false },
|
||||
"MessageClickActions": { "enabled": false },
|
||||
"MessageLinkEmbeds": { "enabled": false },
|
||||
"MessageLogger": { "enabled": false },
|
||||
"MessageTags": { "enabled": false },
|
||||
"MoreCommands": { "enabled": false },
|
||||
"MoreKaomoji": { "enabled": false },
|
||||
"MoreUserTags": { "enabled": false },
|
||||
"Moyai": { "enabled": false },
|
||||
"MutualGroupDMs": { "enabled": false },
|
||||
"NewGuildSettings": { "enabled": false },
|
||||
"NoBlockedMessages": { "enabled": false },
|
||||
"NoDevtoolsWarning": { "enabled": false },
|
||||
"NoF1": { "enabled": false },
|
||||
"NoMosaic": { "enabled": false },
|
||||
"NoPendingCount": { "enabled": false },
|
||||
"NoProfileThemes": { "enabled": false },
|
||||
"NoReplyMention": { "enabled": false },
|
||||
"NoScreensharePreview": { "enabled": false },
|
||||
"NoTypingAnimation": { "enabled": false },
|
||||
"NoUnblockToJump": { "enabled": false },
|
||||
"NormalizeMessageLinks": { "enabled": false },
|
||||
"NotificationVolume": { "enabled": false },
|
||||
"NSFWGateBypass": { "enabled": false },
|
||||
"OnePingPerDM": { "enabled": false },
|
||||
"oneko": { "enabled": false },
|
||||
"OpenInApp": { "enabled": false },
|
||||
"Party mode 🎉": { "enabled": false },
|
||||
"PermissionFreeWill": { "enabled": false },
|
||||
"PermissionsViewer": { "enabled": false },
|
||||
"petpet": { "enabled": false },
|
||||
"PictureInPicture": { "enabled": false },
|
||||
"PinDMs": { "enabled": false },
|
||||
"PlainFolderIcon": { "enabled": false },
|
||||
"PlatformIndicators": { "enabled": false },
|
||||
"PreviewMessage": { "enabled": false },
|
||||
"PronounDB": { "enabled": false },
|
||||
"QuickMention": { "enabled": false },
|
||||
"QuickReply": { "enabled": false },
|
||||
"ReactErrorDecoder": { "enabled": false },
|
||||
"ReadAllNotificationsButton": { "enabled": false },
|
||||
"RelationshipNotifier": { "enabled": false },
|
||||
"RevealAllSpoilers": { "enabled": false },
|
||||
"ReverseImageSearch": { "enabled": false },
|
||||
"ReviewDB": { "enabled": false },
|
||||
"RoleColorEverywhere": { "enabled": true },
|
||||
"SearchReply": { "enabled": false },
|
||||
"SecretRingToneEnabler": { "enabled": false },
|
||||
"SendTimestamps": { "enabled": false },
|
||||
"ServerListIndicators": { "enabled": false },
|
||||
"ServerProfile": { "enabled": false },
|
||||
"ShikiCodeblocks": { "enabled": false },
|
||||
"ShowAllMessageButtons": { "enabled": false },
|
||||
"ShowConnections": { "enabled": false },
|
||||
"ShowHiddenChannels": { "enabled": false },
|
||||
"ShowMeYourName": { "enabled": false },
|
||||
"ShowTimeouts": { "enabled": false },
|
||||
"SilentMessageToggle": { "enabled": false },
|
||||
"SilentTyping": { "enabled": false },
|
||||
"SortFriendRequests": { "enabled": false },
|
||||
"SpotifyControls": { "enabled": false },
|
||||
"SpotifyCrack": { "enabled": false },
|
||||
"SpotifyShareCommands": { "enabled": false },
|
||||
"StartupTimings": { "enabled": false },
|
||||
"SuperReactionTweaks": { "enabled": false },
|
||||
"TextReplace": { "enabled": false },
|
||||
"ThemeAttributes": { "enabled": false },
|
||||
"TimeBarAllActivities": { "enabled": false },
|
||||
"Translate": { "enabled": false },
|
||||
"TypingIndicator": { "enabled": false },
|
||||
"TypingTweaks": { "enabled": false },
|
||||
"Unindent": { "enabled": false },
|
||||
"UnsuppressEmbeds": { "enabled": false },
|
||||
"UrbanDictionary": { "enabled": false },
|
||||
"UserVoiceShow": { "enabled": false },
|
||||
"USRBG": { "enabled": false },
|
||||
"ValidUser": { "enabled": false },
|
||||
"VoiceChatDoubleClick": { "enabled": false },
|
||||
"VcNarrator": { "enabled": false },
|
||||
"VencordToolbox": { "enabled": false },
|
||||
"ViewIcons": { "enabled": false },
|
||||
"ViewRaw": { "enabled": false },
|
||||
"VoiceMessages": { "enabled": false },
|
||||
"WebContextMenus": {
|
||||
"enabled": true,
|
||||
"addBack": true },
|
||||
"WebKeybinds": { "enabled": true },
|
||||
"WhoReacted": { "enabled": false },
|
||||
"Wikisearch": { "enabled": false },
|
||||
"XSOverlay": { "enabled": false }
|
||||
},
|
||||
"notifications": {
|
||||
"timeout": 5000,
|
||||
"position": "bottom-right",
|
||||
"useNative": "not-focused",
|
||||
"logLimit": 50
|
||||
},
|
||||
"cloud": {
|
||||
"authenticated": false,
|
||||
"url": "https://api.vencord.dev/",
|
||||
"settingsSync": false,
|
||||
"settingsSyncVersion": ${settingsSyncVersion}
|
||||
}
|
||||
}
|
||||
'';
|
||||
# file.".config/vesktop/settings/settings.json".text = let
|
||||
# settingsSyncVersion = "1729179678715";
|
||||
# in /* json */ ''{
|
||||
# "notifyAboutUpdates": true,
|
||||
# "autoUpdate": false,
|
||||
# "autoUpdateNotification": true,
|
||||
# "useQuickCss": true,
|
||||
# "themeLinks": [
|
||||
# "https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
|
||||
# ],
|
||||
# "enabledThemes": [],
|
||||
# "enableReactDevtools": false,
|
||||
# "frameless": false,
|
||||
# "transparent": true,
|
||||
# "winCtrlQ": false,
|
||||
# "macosTranslucency": false,
|
||||
# "disableMinSize": false,
|
||||
# "winNativeTitleBar": false,
|
||||
# "plugins": {
|
||||
# "BadgeAPI": { "enabled": true },
|
||||
# "CommandsAPI": { "enabled": true },
|
||||
# "ContextMenuAPI": { "enabled": true },
|
||||
# "MemberListDecoratorsAPI": { "enabled": false },
|
||||
# "MessageAccessoriesAPI": { "enabled": false },
|
||||
# "MessageDecorationsAPI": { "enabled": false },
|
||||
# "MessageEventsAPI": { "enabled": false },
|
||||
# "MessagePopoverAPI": { "enabled": false },
|
||||
# "NoticesAPI": { "enabled": true },
|
||||
# "ServerListAPI": { "enabled": false },
|
||||
# "NoTrack": { "enabled": true },
|
||||
# "Settings": {
|
||||
# "enabled": true,
|
||||
# "settingsLocation": "aboveActivity"
|
||||
# },
|
||||
# "SupportHelper": { "enabled": true },
|
||||
# "ChatInputButtonAPI": { "enabled": false },
|
||||
# "AlwaysAnimate": { "enabled": true },
|
||||
# "AlwaysTrust": { "enabled": true },
|
||||
# "AnonymiseFileNames": { "enabled": false },
|
||||
# "WebRichPresence (arRPC)": { "enabled": false },
|
||||
# "BANger": { "enabled": false },
|
||||
# "BetterFolders": { "enabled": false },
|
||||
# "BetterGifAltText": { "enabled": false },
|
||||
# "BetterGifPicker": { "enabled": false },
|
||||
# "BetterNotesBox": { "enabled": false },
|
||||
# "BetterRoleDot": { "enabled": false },
|
||||
# "BetterUploadButton": { "enabled": false },
|
||||
# "BiggerStreamPreview": { "enabled": false },
|
||||
# "BlurNSFW": { "enabled": false },
|
||||
# "CallTimer": { "enabled": false },
|
||||
# "ClearURLs": { "enabled": false },
|
||||
# "ClientTheme": { "enabled": false },
|
||||
# "ColorSighted": { "enabled": false },
|
||||
# "ConsoleShortcuts": { "enabled": false },
|
||||
# "CopyUserURLs": { "enabled": false },
|
||||
# "CrashHandler": { "enabled": true },
|
||||
# "CustomRPC": { "enabled": false },
|
||||
# "Dearrow": { "enabled": false },
|
||||
# "Decor": { "enabled": false },
|
||||
# "DisableCallIdle": { "enabled": false },
|
||||
# "EmoteCloner": { "enabled": false },
|
||||
# "Experiments": { "enabled": false },
|
||||
# "F8Break": { "enabled": false },
|
||||
# "FakeNitro": { "enabled": false },
|
||||
# "FakeProfileThemes": { "enabled": true },
|
||||
# "FavoriteEmojiFirst": { "enabled": false },
|
||||
# "FavoriteGifSearch": { "enabled": false },
|
||||
# "FixCodeblockGap": { "enabled": false },
|
||||
# "FixSpotifyEmbeds": { "enabled": false },
|
||||
# "FixYoutubeEmbeds": { "enabled": false },
|
||||
# "ForceOwnerCrown": { "enabled": false },
|
||||
# "FriendInvites": { "enabled": false },
|
||||
# "GameActivityToggle": { "enabled": false },
|
||||
# "GifPaste": { "enabled": false },
|
||||
# "GreetStickerPicker": { "enabled": false },
|
||||
# "HideAttachments": { "enabled": false },
|
||||
# "iLoveSpam": { "enabled": false },
|
||||
# "IgnoreActivities": { "enabled": false },
|
||||
# "ImageZoom": { "enabled": false },
|
||||
# "InvisibleChat": { "enabled": false },
|
||||
# "KeepCurrentChannel": { "enabled": false },
|
||||
# "LastFMRichPresence": { "enabled": false },
|
||||
# "LoadingQuotes": { "enabled": false },
|
||||
# "MemberCount": { "enabled": false },
|
||||
# "MessageClickActions": { "enabled": false },
|
||||
# "MessageLinkEmbeds": { "enabled": false },
|
||||
# "MessageLogger": { "enabled": false },
|
||||
# "MessageTags": { "enabled": false },
|
||||
# "MoreCommands": { "enabled": false },
|
||||
# "MoreKaomoji": { "enabled": false },
|
||||
# "MoreUserTags": { "enabled": false },
|
||||
# "Moyai": { "enabled": false },
|
||||
# "MutualGroupDMs": { "enabled": false },
|
||||
# "NewGuildSettings": { "enabled": false },
|
||||
# "NoBlockedMessages": { "enabled": false },
|
||||
# "NoDevtoolsWarning": { "enabled": false },
|
||||
# "NoF1": { "enabled": false },
|
||||
# "NoMosaic": { "enabled": false },
|
||||
# "NoPendingCount": { "enabled": false },
|
||||
# "NoProfileThemes": { "enabled": false },
|
||||
# "NoReplyMention": { "enabled": false },
|
||||
# "NoScreensharePreview": { "enabled": false },
|
||||
# "NoTypingAnimation": { "enabled": false },
|
||||
# "NoUnblockToJump": { "enabled": false },
|
||||
# "NormalizeMessageLinks": { "enabled": false },
|
||||
# "NotificationVolume": { "enabled": false },
|
||||
# "NSFWGateBypass": { "enabled": false },
|
||||
# "OnePingPerDM": { "enabled": false },
|
||||
# "oneko": { "enabled": false },
|
||||
# "OpenInApp": { "enabled": false },
|
||||
# "Party mode 🎉": { "enabled": false },
|
||||
# "PermissionFreeWill": { "enabled": false },
|
||||
# "PermissionsViewer": { "enabled": false },
|
||||
# "petpet": { "enabled": false },
|
||||
# "PictureInPicture": { "enabled": false },
|
||||
# "PinDMs": { "enabled": false },
|
||||
# "PlainFolderIcon": { "enabled": false },
|
||||
# "PlatformIndicators": { "enabled": false },
|
||||
# "PreviewMessage": { "enabled": false },
|
||||
# "PronounDB": { "enabled": false },
|
||||
# "QuickMention": { "enabled": false },
|
||||
# "QuickReply": { "enabled": false },
|
||||
# "ReactErrorDecoder": { "enabled": false },
|
||||
# "ReadAllNotificationsButton": { "enabled": false },
|
||||
# "RelationshipNotifier": { "enabled": false },
|
||||
# "RevealAllSpoilers": { "enabled": false },
|
||||
# "ReverseImageSearch": { "enabled": false },
|
||||
# "ReviewDB": { "enabled": false },
|
||||
# "RoleColorEverywhere": { "enabled": true },
|
||||
# "SearchReply": { "enabled": false },
|
||||
# "SecretRingToneEnabler": { "enabled": false },
|
||||
# "SendTimestamps": { "enabled": false },
|
||||
# "ServerListIndicators": { "enabled": false },
|
||||
# "ServerProfile": { "enabled": false },
|
||||
# "ShikiCodeblocks": { "enabled": false },
|
||||
# "ShowAllMessageButtons": { "enabled": false },
|
||||
# "ShowConnections": { "enabled": false },
|
||||
# "ShowHiddenChannels": { "enabled": false },
|
||||
# "ShowMeYourName": { "enabled": false },
|
||||
# "ShowTimeouts": { "enabled": false },
|
||||
# "SilentMessageToggle": { "enabled": false },
|
||||
# "SilentTyping": { "enabled": false },
|
||||
# "SortFriendRequests": { "enabled": false },
|
||||
# "SpotifyControls": { "enabled": false },
|
||||
# "SpotifyCrack": { "enabled": false },
|
||||
# "SpotifyShareCommands": { "enabled": false },
|
||||
# "StartupTimings": { "enabled": false },
|
||||
# "SuperReactionTweaks": { "enabled": false },
|
||||
# "TextReplace": { "enabled": false },
|
||||
# "ThemeAttributes": { "enabled": false },
|
||||
# "TimeBarAllActivities": { "enabled": false },
|
||||
# "Translate": { "enabled": false },
|
||||
# "TypingIndicator": { "enabled": false },
|
||||
# "TypingTweaks": { "enabled": false },
|
||||
# "Unindent": { "enabled": false },
|
||||
# "UnsuppressEmbeds": { "enabled": false },
|
||||
# "UrbanDictionary": { "enabled": false },
|
||||
# "UserVoiceShow": { "enabled": false },
|
||||
# "USRBG": { "enabled": false },
|
||||
# "ValidUser": { "enabled": false },
|
||||
# "VoiceChatDoubleClick": { "enabled": false },
|
||||
# "VcNarrator": { "enabled": false },
|
||||
# "VencordToolbox": { "enabled": false },
|
||||
# "ViewIcons": { "enabled": false },
|
||||
# "ViewRaw": { "enabled": false },
|
||||
# "VoiceMessages": { "enabled": false },
|
||||
# "WebContextMenus": {
|
||||
# "enabled": true,
|
||||
# "addBack": true },
|
||||
# "WebKeybinds": { "enabled": true },
|
||||
# "WhoReacted": { "enabled": false },
|
||||
# "Wikisearch": { "enabled": false },
|
||||
# "XSOverlay": { "enabled": false }
|
||||
# },
|
||||
# "notifications": {
|
||||
# "timeout": 5000,
|
||||
# "position": "bottom-right",
|
||||
# "useNative": "not-focused",
|
||||
# "logLimit": 50
|
||||
# },
|
||||
# "cloud": {
|
||||
# "authenticated": false,
|
||||
# "url": "https://api.vencord.dev/",
|
||||
# "settingsSync": false,
|
||||
# "settingsSyncVersion": ${settingsSyncVersion}
|
||||
# }
|
||||
# }
|
||||
# '';
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, lib, host, user, rice, secrets, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
thunderbird
|
||||
@@ -13,7 +13,7 @@ lib.mkIf (host != "NxACE")
|
||||
in {
|
||||
enable = true;
|
||||
profiles = {
|
||||
"${user}" = {
|
||||
"${hyper.user}" = {
|
||||
isDefault = true;
|
||||
settings = with rice.color; {
|
||||
"calendar.alarms.showmissed" = false;
|
||||
@@ -137,37 +137,37 @@ lib.mkIf (host != "NxACE")
|
||||
};
|
||||
};
|
||||
|
||||
hsmw = with secrets.email.hsmw; {
|
||||
address = "${un}@hs-mittweida.de";
|
||||
userName = "${un}@hs-mittweida.de";
|
||||
realName = "Lennart J. Kurzweg";
|
||||
imap = {
|
||||
port = 993;
|
||||
host = "xc.hs-mittweida.de";
|
||||
};
|
||||
smtp = {
|
||||
port = 587;
|
||||
host = "xc.hs-mittweida.de";
|
||||
tls.useStartTls = true;
|
||||
};
|
||||
signature = {
|
||||
text = ''
|
||||
MatNr: ${mnr}
|
||||
SemGr: ${semgr}
|
||||
About Me: https://nx2.site/about-me
|
||||
Contact: https://nx2.site/contact
|
||||
GPG: https://nx2.site/gpg
|
||||
'';
|
||||
showSignature = "append";
|
||||
};
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
profiles = [ "nx2" ];
|
||||
settings = id: {
|
||||
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||
};
|
||||
};
|
||||
};
|
||||
# hsmw = with secrets.email.hsmw; {
|
||||
# address = "${un}@hs-mittweida.de";
|
||||
# userName = "${un}@hs-mittweida.de";
|
||||
# realName = "Lennart J. Kurzweg";
|
||||
# imap = {
|
||||
# port = 993;
|
||||
# host = "xc.hs-mittweida.de";
|
||||
# };
|
||||
# smtp = {
|
||||
# port = 587;
|
||||
# host = "xc.hs-mittweida.de";
|
||||
# tls.useStartTls = true;
|
||||
# };
|
||||
# signature = {
|
||||
# text = ''
|
||||
# MatNr: ${mnr}
|
||||
# SemGr: ${semgr}
|
||||
# About Me: https://nx2.site/about-me
|
||||
# Contact: https://nx2.site/contact
|
||||
# GPG: https://nx2.site/gpg
|
||||
# '';
|
||||
# showSignature = "append";
|
||||
# };
|
||||
# thunderbird = {
|
||||
# enable = true;
|
||||
# profiles = [ "nx2" ];
|
||||
# settings = id: {
|
||||
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
tuda = with secrets.email.tuda; {
|
||||
address = "${un}@stud.tu-darmstadt.de";
|
||||
userName = tuid;
|
||||
|
||||
12
home-modules/figlet.nix
Normal file
12
home-modules/figlet.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ pkgs, hyper, ... }:
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
figlet
|
||||
(pkgs.writeShellScriptBin "fgl" ''
|
||||
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
|
||||
'')
|
||||
];
|
||||
file.".local/share/figlet/nx2.flf".text = builtins.readFile ./assets/nx2.flf;
|
||||
};
|
||||
}
|
||||
@@ -1,258 +1,16 @@
|
||||
# { pkgs-unstable, secrets, user, system, inputs, ...}:
|
||||
{ rice, user, ... }:
|
||||
# browser.tabs.allow_transparent_browser
|
||||
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||
{
|
||||
home.file = with rice.color; let
|
||||
blur = builtins.toString 20;
|
||||
in {
|
||||
".mozilla/firefox/${user}/chrome/userChrome.css".text = /* css */ ''
|
||||
:root{
|
||||
/* Popup panels */
|
||||
--arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--arrowpanel-border-color : ${border} !important;
|
||||
--arrowpanel-color : ${secondary.base} !important;
|
||||
--arrowpanel-dimmed : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
|
||||
--arrowpanel-dimmed-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.6) !important;
|
||||
--arrowpanel-dimmed-even-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.8) !important;
|
||||
|
||||
/* Autocomplete */
|
||||
--autocomplete-popup-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--autocomplete-popup-color : ${foreground} !important;
|
||||
--autocomplete-popup-highlight-background: ${accent.base} !important;
|
||||
--autocomplete-popup-highlight-color : ${foreground} !important;
|
||||
|
||||
/* Toolbar background */
|
||||
--toolbar-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
|
||||
--toolbar-non-lwt-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-non-lwt-bgimage : none !important;
|
||||
--toolbar-color : ${foreground} !important;
|
||||
|
||||
/* Tabs */
|
||||
--tab-selected-bgcolor : ${accent.base} !important;
|
||||
--tabs-border-color : ${border} !important;
|
||||
--tab-line-color : ${accent.base} !important;
|
||||
--tab-loader-size : 16px !important;
|
||||
|
||||
/* Sidebar */
|
||||
--lwt-sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--lwt-sidebar-text-color : ${foreground} !important;
|
||||
--sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--sidebar-text-color : ${foreground} !important;
|
||||
--sidebar-border-color : ${border} !important;
|
||||
|
||||
/* URL bar */
|
||||
--urlbar-popup-url-color : ${foreground} !important;
|
||||
--urlbar-popup-action-color : ${secondary.base} !important;
|
||||
--toolbar-field-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-field-focus-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-field-color : ${accent.base} !important;
|
||||
--toolbar-field-focus-color : ${foreground} !important;
|
||||
--toolbar-field-focus-border-color : ${accent.base} !important;
|
||||
|
||||
/* Buttons */
|
||||
--toolbarbutton-icon-fill : ${foreground} !important;
|
||||
--toolbarbutton-hover-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.2) !important;
|
||||
--toolbarbutton-active-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.4) !important;
|
||||
|
||||
/* Notification and panel */
|
||||
--panel-disabled-color : rgba(${rice.lib.hex-to-rgb-comma-string foreground},0.3) !important;
|
||||
--panel-separator-color : ${border} !important;
|
||||
|
||||
/* New tab page */
|
||||
--newtab-background-color : ${background} !important;
|
||||
--newtab-background-color-secondary : ${background} !important;
|
||||
--newtab-text-primary-color : ${foreground} !important;
|
||||
--newtab-text-secondary-color : ${secondary.base} !important;
|
||||
--newtab-search-icon-color : ${accent.base} !important;
|
||||
|
||||
--tabpanel-background-color : transparent !important;
|
||||
background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
}
|
||||
.tabbrowser-tab[selected="true"] {
|
||||
color: ${background} !important;
|
||||
}
|
||||
|
||||
#appcontent {
|
||||
background: transparent !important;
|
||||
}
|
||||
#navigator-toolbox {
|
||||
--tabs-border-color: transparent !important;
|
||||
}
|
||||
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
|
||||
background-color: transparent !important;
|
||||
-moz-appearance: none !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
|
||||
window, #nav-bar{
|
||||
background-color: transparent !important;
|
||||
-moz-appearance: none !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
'';
|
||||
|
||||
".mozilla/firefox/${user}/chrome/userContent.css".text = /* css */ ''
|
||||
/* Removes the white loading page */
|
||||
/* url(about:newtab), url(about:home) */
|
||||
@-moz-document url(about:blank) {
|
||||
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
|
||||
background: ${background} !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sets up minimal incognito scrollbar */
|
||||
@-moz-document url(about:privatebrowsing) {
|
||||
:root{
|
||||
scrollbar-width: thin !important;
|
||||
scrollbar-color: rgb(161, 161, 161) transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* new-tab */
|
||||
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
|
||||
:root{
|
||||
--newtab-background-color-secondary: ${background} !important;
|
||||
}
|
||||
body, html {
|
||||
background: transparent !important;
|
||||
}
|
||||
.tile, .search-handoff-button {
|
||||
border: ${builtins.toString rice.border-width}px solid ${border} !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(reddit.com) {
|
||||
header {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||
backdrop-filter: blur(${blur}px);
|
||||
}
|
||||
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(reddit.com) {
|
||||
header {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||
}
|
||||
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(google.com) {
|
||||
.sfbg {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||
backdrop-filter: blur(${blur}px);
|
||||
}
|
||||
body, html, div#search > * {
|
||||
background-color: transparent !important;
|
||||
border: ${builtins.toString rice.border-width} solid ${border};
|
||||
}
|
||||
.g, .appbar {
|
||||
background-color: transparent !important;
|
||||
border: ${builtins.toString rice.border-width} solid ${border};
|
||||
}
|
||||
div#rso {
|
||||
* {
|
||||
background-color: transparent !important;
|
||||
border: ${builtins.toString rice.border-width} solid ${border};
|
||||
}
|
||||
}
|
||||
div#cnt > div {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root .theme-system {
|
||||
--color-bg: transtparent !important;
|
||||
--color-text: ${rice.color.foreground}
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(developer.mozilla.org) {
|
||||
html, body {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.top-navigation, .article-actions-container {
|
||||
background-color: rgba(0,0,0,1) !important;
|
||||
backdrop-filter: blur(100px);
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(github.com) {
|
||||
body, html, header, #repository-container-header, .bgColor-muted, section {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(mynixos.com) {
|
||||
body, html {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
header, footer {
|
||||
background-color: rgba(0,0,0,1) !important;
|
||||
backdrop-filter: blur(100px);
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
|
||||
body, html , .main-inner, .main-inner * {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.bg-primary {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.5) !important!
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document url-prefix("https://nx2.site/") {
|
||||
html {
|
||||
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||
background-repeat: repeat !important;
|
||||
background-size: 2vmin 2vmin !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document url-prefix("pw.nx2.site") {
|
||||
html {
|
||||
background: black;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document url-prefix("pw.nx2.site") {
|
||||
html {
|
||||
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||
background-repeat: repeat !important;
|
||||
background-size: 2vmin 2vmin !important;
|
||||
}
|
||||
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.modal-open, .modal-header, form.modal-content, .modal-footer {
|
||||
background-color: rgba(0,0,0,0.8) !important;
|
||||
backdrop-filter: blur(5px);
|
||||
}
|
||||
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
|
||||
background-color: rgba(0,0,0,0.8) !important;
|
||||
border-radius: 10px !important;
|
||||
border: ${toString rice.border-width}px solid ${border} !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(chatgpt.com) {
|
||||
body, html , .bg-token-sidebar-surface-primary {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.bg-token-main-surface-primary {
|
||||
background-color: rgba(0,0,0,1) !important;
|
||||
backdrop-filter: blur(100px) !important;
|
||||
border-radius: ${builtins.toString rice.rounding}px !important;
|
||||
}
|
||||
}
|
||||
'';
|
||||
{ pkgs, ... }@all: with all; {
|
||||
programs.firefox.profiles."{hyper.user}".settings = {
|
||||
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||
};
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
firefox
|
||||
];
|
||||
file = {
|
||||
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
|
||||
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice;
|
||||
};
|
||||
};
|
||||
}
|
||||
# browser.tabs.allow_transparent_browser
|
||||
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||
|
||||
19
home-modules/firefox/firefox.nix
Normal file
19
home-modules/firefox/firefox.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
# browser.tabs.allow_transparent_browser
|
||||
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||
{
|
||||
programs.firefox.profiles."{hyper.user}".settings = {
|
||||
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||
};
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
firefox
|
||||
];
|
||||
file = with rice.color; let
|
||||
blur = builtins.toString 20;
|
||||
f = rice.lib.hex-to-rgb-comma-string;
|
||||
in {
|
||||
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
|
||||
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; };
|
||||
};
|
||||
}
|
||||
92
home-modules/firefox/userChrome.nix
Normal file
92
home-modules/firefox/userChrome.nix
Normal file
@@ -0,0 +1,92 @@
|
||||
rice: with rice.color; let
|
||||
f = rice.lib.hex-to-rgb-comma-string;
|
||||
# blur = builtins.toString 20;
|
||||
in /* css */ ''
|
||||
:root{
|
||||
/* Popup panels */
|
||||
--arrowpanel-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--arrowpanel-border-color : ${border} !important;
|
||||
--arrowpanel-color : ${secondary.base} !important;
|
||||
--arrowpanel-dimmed : rgba(${f background},0.4) !important;
|
||||
--arrowpanel-dimmed-further : rgba(${f background},0.6) !important;
|
||||
--arrowpanel-dimmed-even-further : rgba(${f background},0.8) !important;
|
||||
|
||||
/* Autocomplete */
|
||||
--autocomplete-popup-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--autocomplete-popup-color : ${foreground} !important;
|
||||
--autocomplete-popup-highlight-background: ${accent.base} !important;
|
||||
--autocomplete-popup-highlight-color : ${foreground} !important;
|
||||
|
||||
/* Toolbar background */
|
||||
--toolbar-bgcolor : transparent !important;
|
||||
--toolbar-non-lwt-bgcolor : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-non-lwt-bgimage : none !important;
|
||||
--toolbar-color : ${foreground} !important;
|
||||
|
||||
/* Tabs */
|
||||
--tab-selected-bgcolor : ${accent.base} !important;
|
||||
--tabs-border-color : ${border} !important;
|
||||
--tab-line-color : ${accent.base} !important;
|
||||
--tab-loader-size : 16px !important;
|
||||
|
||||
/* Sidebar */
|
||||
--lwt-sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--lwt-sidebar-text-color : ${foreground} !important;
|
||||
--sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--sidebar-text-color : ${foreground} !important;
|
||||
--sidebar-border-color : ${border} !important;
|
||||
|
||||
/* URL bar */
|
||||
--urlbar-popup-url-color : ${foreground} !important;
|
||||
--urlbar-popup-action-color : ${secondary.base} !important;
|
||||
--toolbar-field-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-field-focus-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
|
||||
--toolbar-field-color : ${accent.base} !important;
|
||||
--toolbar-field-focus-color : ${foreground} !important;
|
||||
--toolbar-field-focus-border-color : ${accent.base} !important;
|
||||
|
||||
/* Buttons */
|
||||
--toolbarbutton-icon-fill : ${foreground} !important;
|
||||
--toolbarbutton-hover-background : rgba(${f accent.base}, 0.2) !important;
|
||||
--toolbarbutton-active-background : rgba(${f accent.base}, 0.4) !important;
|
||||
|
||||
/* Notification and panel */
|
||||
--panel-disabled-color : rgba(${f foreground},0.3) !important;
|
||||
--panel-separator-color : ${border} !important;
|
||||
|
||||
/* New tab page */
|
||||
--newtab-background-color : transparent !important;
|
||||
--newtab-background-color-secondary : ${secondary.dark} !important;
|
||||
--newtab-text-primary-color : ${foreground} !important;
|
||||
--newtab-text-secondary-color : ${secondary.base} !important;
|
||||
--newtab-search-icon-color : ${accent.base} !important;
|
||||
--newtab-background-card : ${accent.dark} !important;
|
||||
--tabpanel-background-color : transparent !important;
|
||||
|
||||
background : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important;
|
||||
}
|
||||
.tabbrowser-tab[selected="true"] {
|
||||
color: ${background} !important;
|
||||
}
|
||||
hbox#browser {
|
||||
backround-color: transparent: !important;
|
||||
}
|
||||
|
||||
#appcontent {
|
||||
background: transparent !important;
|
||||
}
|
||||
#navigator-toolbox {
|
||||
--tabs-border-color: transparent !important;
|
||||
}
|
||||
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
|
||||
background-color: transparent !important;
|
||||
-moz-appearance: none !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
|
||||
window, #nav-bar{
|
||||
background-color: transparent !important;
|
||||
-moz-appearance: none !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
''
|
||||
226
home-modules/firefox/userContent.nix
Normal file
226
home-modules/firefox/userContent.nix
Normal file
@@ -0,0 +1,226 @@
|
||||
rice: with rice.color; let
|
||||
f = rice.lib.hex-to-rgb-comma-string;
|
||||
blur = builtins.toString 20;
|
||||
in /* css */ ''
|
||||
/* Removes the white loading page */
|
||||
/* url(about:newtab), url(about:home) */
|
||||
@-moz-document url(about:blank) {
|
||||
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
|
||||
background: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sets up minimal incognito scrollbar */
|
||||
@-moz-document url(about:privatebrowsing) {
|
||||
:root{
|
||||
scrollbar-width: thin !important;
|
||||
scrollbar-color: rgb(161, 161, 161) transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* new-tab */
|
||||
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
|
||||
:root{
|
||||
--newtab-background-color-secondary: rgba(${f background},0.5) !important;
|
||||
}
|
||||
body, html {
|
||||
background: transparent !important;
|
||||
}
|
||||
.tile, .search-handoff-button {
|
||||
border: ${builtins.toString rice.border-width}px solid ${border} !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(reddit.com) {
|
||||
header {
|
||||
background-color: rgba(${f background},${builtins.toString rice.transparency}) !important;
|
||||
backdrop-filter: blur(${blur}px);
|
||||
}
|
||||
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree, #flex-left-nav-container {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
#main-content {
|
||||
background-color: rgba(${f background},0.5)!important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-moz-document domain(reddit.com) {
|
||||
header {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||
}
|
||||
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(google.com) {
|
||||
.sfbg {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||
backdrop-filter: blur(${blur}px);
|
||||
}
|
||||
body, html, div#search > * {
|
||||
background-color: transparent !important;
|
||||
border: ${builtins.toString rice.border-width} solid ${border};
|
||||
}
|
||||
.g, .appbar {
|
||||
background-color: transparent !important;
|
||||
border: ${builtins.toString rice.border-width} solid ${border};
|
||||
}
|
||||
div#rso {
|
||||
* {
|
||||
background-color: transparent !important;
|
||||
border: ${builtins.toString rice.border-width} solid ${border};
|
||||
}
|
||||
}
|
||||
div#cnt > div {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root .theme-system {
|
||||
--color-bg: transtparent !important;
|
||||
--color-text: ${rice.color.foreground}
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(developer.mozilla.org) {
|
||||
html, body {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.top-navigation, .article-actions-container {
|
||||
background-color: rgba(0,0,0,1) !important;
|
||||
backdrop-filter: blur(100px);
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(github.com) {
|
||||
body, html, header, #repository-container-header, .bgColor-muted, section {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
}
|
||||
@-moz-document domain(youtube.com) {
|
||||
body, html, div#content, ytd-app, #frosted-glass.with-chipbar.ytd-app, ytd-shorts[is-dark] #cinematic-shorts-scrim.ytd-shorts {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
#background.ytd-masthead, div#background {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
backdrop-filter: blur(100px);
|
||||
}
|
||||
* {
|
||||
--yt-spec-base-background: transparent;
|
||||
--yt-spec-raised-background: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
||||
--yt-spec-menu-background: rgba(${rice.lib.hex-to-rgb-comma-string accent.dark}, ${builtins.toString rice.transparency}) !important;
|
||||
--yt-spec-inverted-background: rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(mynixos.com) {
|
||||
body, html {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
header, footer {
|
||||
background-color: rgba(0,0,0,1) !important;
|
||||
backdrop-filter: blur(100px);
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
|
||||
body, html , .main-inner, .main-inner * {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.bg-primary {
|
||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5) !important;
|
||||
}
|
||||
}
|
||||
@-moz-document domain(wikipedia.org) {
|
||||
body, html, div.mw-page-container, .vector-header, .mw-header {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
:root {
|
||||
--color-base: ${foreground} !important;
|
||||
--color-base--hover: ${accent.bright} !important;
|
||||
--color-emphasized: ${accent.base} !important;
|
||||
--color-progressive: ${accent.base} !important;
|
||||
--color-progressive--hover: ${accent.brighter} !important;
|
||||
--color-progressive--active: ${secondary.bright} !important;
|
||||
--color-destructive: ${negative.base} !important;
|
||||
--color-destructive--hover: ${negative.brighter} !important;
|
||||
--color-destructive--active: ${negative.bright} !important;
|
||||
--color-visited: ${secondary.base} !important;
|
||||
--color-visited--hover: ${secondary.brighter} !important;
|
||||
--color-visited--active: ${secondary.bright} !important;
|
||||
--color-error: ${negative.base} !important;
|
||||
--color-error--hover: ${negative.bright} !important;
|
||||
--color-error--active: ${negative.bright} !important;
|
||||
--color-warning: ${weird.base} !important;
|
||||
--color-success: ${positive.base} !important;
|
||||
--color-notice: ${special.base} !important;
|
||||
--color-content-added: ${positive.base} !important;
|
||||
--color-content-removed: ${negative.base} !important;
|
||||
--color-base--subtle: ${accent.dark} !important;
|
||||
--box-shadow-color-base: ${black.base} !important;
|
||||
--background-color-base: transparent !important;
|
||||
--background-color-neutral: transparent !important;
|
||||
--background-color-neutral-subtle: transparent !important;
|
||||
--background-color-interactive: ${accent.darker} !important;
|
||||
--background-color-interactive--hover: ${accent.dark} !important;
|
||||
--background-color-interactive--active: ${secondary.dark} !important;
|
||||
--background-color-interactive-subtle: ${subtle.darker} !important;
|
||||
--background-color-interactive-subtle--hover: ${subtle.dark} !important;
|
||||
--background-color-interactive-subtle--active: ${subtle.base} !important;
|
||||
--border-color-base: ${border} !important;
|
||||
--border-color-emphasized: ${border2} !important;
|
||||
--border-color-subtle: ${subtle.base} !important;
|
||||
--border-color-muted: ${subtle.dark} !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@-moz-document url-prefix("https://nx2.site/") {
|
||||
html {
|
||||
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||
background-repeat: repeat !important;
|
||||
background-size: 2vmin 2vmin !important;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document url-prefix("pw.nx2.site") {
|
||||
html {
|
||||
background: black;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-document url-prefix("pw.nx2.site") {
|
||||
html {
|
||||
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||
background-repeat: repeat !important;
|
||||
background-size: 2vmin 2vmin !important;
|
||||
}
|
||||
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.modal-open, .modal-header, form.modal-content, .modal-footer {
|
||||
background-color: rgba(0,0,0,0.8) !important;
|
||||
backdrop-filter: blur(5px);
|
||||
}
|
||||
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
|
||||
background-color: rgba(0,0,0,0.8) !important;
|
||||
border-radius: 10px !important;
|
||||
border: ${toString rice.border-width}px solid ${border} !important;
|
||||
}
|
||||
}
|
||||
''
|
||||
# @-moz-document domain(chatgpt.com) {
|
||||
# body, html , .bg-token-sidebar-surface-primary {
|
||||
# background-color: transparent !important;
|
||||
# }
|
||||
# .bg-token-main-surface-primary {
|
||||
# background-color: rgba(0,0,0,1) !important;
|
||||
# backdrop-filter: blur(100px) !important;
|
||||
# border-radius: ${builtins.toString rice.rounding}px !important;
|
||||
# }
|
||||
# }
|
||||
@@ -1,36 +1,37 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
fish
|
||||
any-nix-shell
|
||||
|
||||
(writeShellScriptBin "nxfetch" ''
|
||||
(writeShellScriptBin "nxfetch" /* bash */ ''
|
||||
logo=$(echo -e "
|
||||
|
||||
⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS
|
||||
⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM
|
||||
⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM
|
||||
⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL
|
||||
⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL
|
||||
⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL
|
||||
⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR
|
||||
⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM
|
||||
⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT
|
||||
⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS
|
||||
⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM
|
||||
⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM
|
||||
⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL
|
||||
⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL
|
||||
⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL
|
||||
⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR
|
||||
⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM
|
||||
⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT
|
||||
|
||||
" | lolcat --force)
|
||||
" | lolcat --force 2> /dev/null)
|
||||
|
||||
msg="
|
||||
$(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
|
||||
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
|
||||
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
||||
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
|
||||
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
|
||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r)
|
||||
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
|
||||
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
|
||||
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
|
||||
"
|
||||
echo -e "$msg"
|
||||
release_line=$(cat /etc/*-release 2> /dev/null || echo 'PRETTY_NAME="[No Release]"')
|
||||
|
||||
msg="
|
||||
$(echo -e "$logo" | sed -n 3p): $(echo "$release_line" | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
|
||||
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
|
||||
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
||||
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
|
||||
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
|
||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g')
|
||||
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
|
||||
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
|
||||
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
|
||||
"
|
||||
echo -e "$msg"
|
||||
'')
|
||||
];
|
||||
|
||||
@@ -38,14 +39,18 @@
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
ls = "eza --icons --git --smart-group --group-directories-first";
|
||||
ll = "eza --icons --git --smart-group --group-directories-first --long";
|
||||
la = "eza --icons --git --smart-group --group-directories-first --all";
|
||||
lla = "eza --icons --git --smart-group --group-directories-first --all --long";
|
||||
lt = "eza --icons --git --smart-group --group-directories-first --long --tree";
|
||||
ltd = "eza --icons --git --smart-group --group-directories-first --long --tree -D";
|
||||
lt2 = "eza --icons --git --smart-group --group-directories-first --long --tree -L 2";
|
||||
package = pkgs.fish;
|
||||
shellAliases = let
|
||||
base-eza = "eza --icons --git --smart-group --group-directories-first";
|
||||
in {
|
||||
ls = "${base-eza}";
|
||||
ll = "${base-eza} --long";
|
||||
lg = "${base-eza} --group --long";
|
||||
la = "${base-eza} --all";
|
||||
lla = "${base-eza} --all --long";
|
||||
lt = "${base-eza} --long --tree";
|
||||
ltd = "${base-eza} --long --tree -D";
|
||||
lt2 = "${base-eza} --long --tree -L 2";
|
||||
sr = "sudo reboot";
|
||||
nf = "neofetch";
|
||||
nxf = "nxfetch";
|
||||
@@ -77,9 +82,12 @@
|
||||
gsw = "git switch";
|
||||
gft = "git fetch";
|
||||
ns = "nix-shell";
|
||||
nd = "nix develop -c fish";
|
||||
lzd = "lazydocker";
|
||||
d = "docker";
|
||||
dcmp = "docker compose";
|
||||
stui = "sudo systemctl-tui";
|
||||
wlc = "wl-copy";
|
||||
# nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
|
||||
|
||||
# ya = "yazi"; # function
|
||||
@@ -97,6 +105,7 @@
|
||||
rm -f -- "$tmp"
|
||||
end
|
||||
nxfetch
|
||||
set -e SESSION_FROM_DE
|
||||
end
|
||||
'';
|
||||
functions = {
|
||||
@@ -104,6 +113,12 @@
|
||||
mkdir $argv
|
||||
cd $argv
|
||||
'';
|
||||
nx_backup = let
|
||||
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
|
||||
in pkgs.lib.mkIf (hyper.host == "NxXPS" || hyper.host == "NxNORTH") ''
|
||||
set RPATH (curl -s https://${hyper.domain}/latest-backup)
|
||||
rsync -avz --info=progress2 -e "ssh -p ${builtins.toString secrets.ssh.port}" ${hyper.user}@ssh.${hyper.domain}:"$RPATH" ${destination}
|
||||
'';
|
||||
# gpg = '';
|
||||
# set bold \e[1m
|
||||
# set green \e[32m
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
{ pkgs-unstable, pkgs, lib, host, ... }:
|
||||
lib.mkIf (host == "NxNORTH" || host == "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host == "NxNORTH")
|
||||
{
|
||||
home = {
|
||||
packages = (with pkgs-unstable; [
|
||||
protonup
|
||||
packages = (with pkgs.unstable; [
|
||||
protonup-ng
|
||||
mangohud
|
||||
|
||||
prismlauncher
|
||||
|
||||
# heroic
|
||||
|
||||
mindustry-wayland
|
||||
# mindustry-wayland
|
||||
]) ++ [ pkgs.heroic ];
|
||||
sessionVariables = {
|
||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, lib, host, ... }:
|
||||
lib.mkIf (host == "NxXPS")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host == "NxXPS")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
libinput-gestures
|
||||
|
||||
@@ -1,54 +1,48 @@
|
||||
{ config, rice, inputs, system, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = [ inputs.ghostty.packages.${system}.default ];
|
||||
file."${config.xdg.configHome}/ghostty/config".text = with rice.color; /* ini */ ''
|
||||
font-family="${rice.font.code.name}"
|
||||
clipboard-read=allow
|
||||
# clipboard-write=allow
|
||||
# clipboard-read=deny
|
||||
# clipboard-write=deny
|
||||
clipboard-trim-trailing-spaces=true
|
||||
clipboard-paste-protection=false
|
||||
|
||||
window-decoration=false
|
||||
confirm-close-surface=false
|
||||
|
||||
window-padding-x=5
|
||||
window-padding-y=5
|
||||
|
||||
keybind=ctrl+comma=reload_config
|
||||
keybind=ctrl+equal=increase_font_size:1
|
||||
keybind=ctrl+minus=decrease_font_size:1
|
||||
keybind=ctrl+shift+v=paste_from_clipboard
|
||||
|
||||
background=${background}
|
||||
foreground=${foreground}
|
||||
|
||||
background-opacity=${builtins.toString rice.transparency}
|
||||
|
||||
cursor-color=${special.bright}
|
||||
cursor-opacity=0.8
|
||||
|
||||
palette=0=${black.base}
|
||||
palette=8=${black.bright}
|
||||
palette=1=${red.base}
|
||||
palette=9=${red.bright}
|
||||
palette=2=${green.base}
|
||||
palette=10=${green.bright}
|
||||
palette=3=${yellow.base}
|
||||
palette=11=${yellow.bright}
|
||||
palette=4=${blue.base}
|
||||
palette=12=${blue.bright}
|
||||
palette=5=${magenta.base}
|
||||
palette=13=${magenta.bright}
|
||||
palette=6=${cyan.base}
|
||||
palette=14=${cyan.bright}
|
||||
palette=7=${white.base}
|
||||
palette=15=${white.bright}
|
||||
|
||||
selection-background=${accent.base}
|
||||
selection-foreground=${background}
|
||||
'';
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
package = pkgs.ghostty;
|
||||
settings = with rice.color; {
|
||||
background = background;
|
||||
background-opacity = builtins.toString rice.transparency;
|
||||
clipboard-paste-protection = false;
|
||||
clipboard-read = "allow";
|
||||
clipboard-trim-trailing-spaces = true;
|
||||
confirm-close-surface = false;
|
||||
cursor-color = special.bright;
|
||||
cursor-opacity = 0.8;
|
||||
font-family = "${rice.font.code.name}";
|
||||
foreground = foreground;
|
||||
keybind = [
|
||||
"ctrl+comma=reload_config"
|
||||
"ctrl+equal=increase_font_size:1"
|
||||
"ctrl+minus=decrease_font_size:1"
|
||||
"ctrl+shift+v=paste_from_clipboard"
|
||||
];
|
||||
palette = with rice; [
|
||||
"0=${black.base}"
|
||||
"8=${black.bright}"
|
||||
"1=${red.base}"
|
||||
"9=${red.bright}"
|
||||
"2=${green.base}"
|
||||
"10=${green.bright}"
|
||||
"3=${yellow.base}"
|
||||
"11=${yellow.bright}"
|
||||
"4=${blue.base}"
|
||||
"12=${blue.bright}"
|
||||
"5=${magenta.base}"
|
||||
"13=${magenta.bright}"
|
||||
"6=${cyan.base}"
|
||||
"14=${cyan.bright}"
|
||||
"7=${white.base}"
|
||||
"15=${white.bright}"
|
||||
];
|
||||
selection-background = accent.base;
|
||||
selection-foreground = background;
|
||||
window-decoration = false;
|
||||
window-padding-x = 5;
|
||||
window-padding-y = 5;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
{ pkgs, lib, host, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(gimp-with-plugins.override {
|
||||
plugins = with gimpPlugins; [ bimp ];
|
||||
})
|
||||
# (gimp-with-plugins.override {
|
||||
# plugins = with gimpPlugins; [ bimp ];
|
||||
# })
|
||||
gimp
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,42 +1,15 @@
|
||||
{ pkgs, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
git
|
||||
delta
|
||||
|
||||
(pkgs.writeShellScriptBin "git_monitor" ''
|
||||
#!/bin/bash
|
||||
|
||||
# List of directories to check
|
||||
directories=(
|
||||
"$HOME/nix-dots"
|
||||
"$HOME/obsidian-vault"
|
||||
"$HOME/Pictures/wallpapers"
|
||||
)
|
||||
echo ""
|
||||
for dir in "''${directories[@]}"; do
|
||||
if [ -d "$dir" ]; then
|
||||
cd "$dir" || { echo "Cannot change directory to $dir"; exit 1; }
|
||||
echo "$(echo $dir | rev | cut -f 1 -d'/' | rev):"
|
||||
if [[ $* == *--fetch* ]]; then
|
||||
git fetch
|
||||
fi
|
||||
gst
|
||||
echo ""
|
||||
cd - > /dev/null || { echo "Cannot change back to the original directory"; exit 1; }
|
||||
else
|
||||
echo "Directory $dir does not exist."
|
||||
fi
|
||||
done
|
||||
'')
|
||||
|
||||
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
||||
];
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitFull;
|
||||
userName = ''Lennart J. Kurzweg (Nx2)'';
|
||||
userEmail = "git@nx2.site";
|
||||
userEmail = "git@${hyper.domain}";
|
||||
delta = {
|
||||
enable = true;
|
||||
options = {
|
||||
@@ -46,9 +19,19 @@
|
||||
whitespace-error-style = "22 reverse";
|
||||
};
|
||||
};
|
||||
extraConfig = {
|
||||
credential = {
|
||||
"https://git.da.dicos.de".username = lib.mkIf (hyper.host =="NxDCS") "lkurzweg";
|
||||
"https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxDCS") "Test";
|
||||
};
|
||||
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxDCS") "https://git.da.dicos.de/";
|
||||
url."ssh://git@github.com/".insteadOf = "https://github.com/";
|
||||
pull.rebase = false; # true
|
||||
};
|
||||
};
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
package = pkgs.lazygit;
|
||||
settings = {
|
||||
windowSize = "normal";
|
||||
gui.theme = with rice.color; {
|
||||
|
||||
@@ -1,18 +1,36 @@
|
||||
{ pkgs, pkgs-unstable, ... }:
|
||||
{
|
||||
# there also is a system module
|
||||
home.packages = (with pkgs; [
|
||||
gnupg
|
||||
gpg-tui
|
||||
]) ++ ( with pkgs-unstable; [
|
||||
pinentry-all
|
||||
]);
|
||||
|
||||
# services.pcscd.enable = true;
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [ pinentry-all ];
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
package = pkgs.gnupg;
|
||||
homedir = "${hyper.home}/vault/gnupg";
|
||||
settings = {
|
||||
armor = true;
|
||||
cert-digest-algo = "SHA512";
|
||||
charset = "utf-8";
|
||||
default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
|
||||
keyid-format = "0xlong";
|
||||
list-options = "show-uid-validity";
|
||||
no-comments = true;
|
||||
no-emit-version = true;
|
||||
no-greeting = true;
|
||||
no-symkey-cache = true;
|
||||
personal-cipher-preferences = "AES256 AES192 AES";
|
||||
personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
|
||||
personal-digest-preferences = "SHA512 SHA384 SHA256";
|
||||
pinentry-mode = "loopback";
|
||||
require-cross-certification = true;
|
||||
s2k-cipher-algo = "AES256";
|
||||
s2k-digest-algo = "SHA512";
|
||||
use-agent = true;
|
||||
verify-options = "show-uid-validity";
|
||||
with-fingerprint = true;
|
||||
};
|
||||
};
|
||||
services.gpg-agent = let
|
||||
min2sec = min: (min * 60);
|
||||
in {
|
||||
enable = true;
|
||||
enable = false;
|
||||
verbose = true;
|
||||
sshKeys = [
|
||||
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
|
||||
@@ -21,48 +39,8 @@
|
||||
enableFishIntegration = true;
|
||||
defaultCacheTtlSsh = min2sec 60;
|
||||
defaultCacheTtl = min2sec 30;
|
||||
# pinentryPackage = pkgs.pinentry-curses;
|
||||
extraConfig = ''
|
||||
allow-loopback-pinentry
|
||||
'';
|
||||
};
|
||||
|
||||
home.file.".gnupg/gpg.conf".text = ''
|
||||
# Use AES256, 192, or 128 as cipher
|
||||
personal-cipher-preferences AES256 AES192 AES
|
||||
# Use SHA512, 384, or 256 as digest
|
||||
personal-digest-preferences SHA512 SHA384 SHA256
|
||||
# Use ZLIB, BZIP2, ZIP, or no compression
|
||||
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
|
||||
# Default preferences for new keys
|
||||
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
|
||||
# SHA512 as digest to sign keys
|
||||
cert-digest-algo SHA512
|
||||
# SHA512 as digest for symmetric ops
|
||||
s2k-digest-algo SHA512
|
||||
# AES256 as cipher for symmetric ops
|
||||
s2k-cipher-algo AES256
|
||||
# UTF-8 support for compatibility
|
||||
charset utf-8
|
||||
# No comments in messages
|
||||
no-comments
|
||||
# No version in output
|
||||
no-emit-version
|
||||
# Disable banner
|
||||
no-greeting
|
||||
# Long key id format
|
||||
keyid-format 0xlong
|
||||
# Display UID validity
|
||||
list-options show-uid-validity
|
||||
verify-options show-uid-validity
|
||||
# Display all keys and their fingerprints
|
||||
with-fingerprint
|
||||
# Display key origins and updates
|
||||
#with-key-origin
|
||||
# Cross-certify subkeys are present and valid
|
||||
require-cross-certification
|
||||
# Disable caching of passphrase for symmetrical ops
|
||||
no-symkey-cache
|
||||
# Output ASCII instead of binary
|
||||
armor
|
||||
# Enable smartcard
|
||||
# use-agent
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
let
|
||||
# theme-name = "Colloid-Pink-Dark-Compact";
|
||||
# theme-package = pkgs.colloid-gtk-theme.override {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{ pkgs, pkgs-unstable, lib, rice, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
# nixfmt-classic # nix formater
|
||||
@@ -7,20 +6,15 @@
|
||||
# nixd # specified in nixd.nix
|
||||
gopls
|
||||
delve
|
||||
python311Packages.python-lsp-server
|
||||
jdt-language-server
|
||||
ruff
|
||||
ruff-lsp
|
||||
pyright
|
||||
lldb # debugger for llvm stuff
|
||||
yaml-language-server # yaml
|
||||
marksman # markdown
|
||||
vale-ls # style-checker lsp (needs vale)
|
||||
ltex-ls # Ltex (language tool)
|
||||
] ++ (with pkgs-unstable; [
|
||||
vscode-langservers-extracted
|
||||
bash-language-server
|
||||
helix
|
||||
]);
|
||||
];
|
||||
sessionVariables = {
|
||||
EDITOR = "hx";
|
||||
VISUAL = "hx";
|
||||
@@ -29,7 +23,7 @@
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
package = pkgs-unstable.helix;
|
||||
package = pkgs.unstable.helix;
|
||||
settings = {
|
||||
# theme = "base16_terminal";
|
||||
theme = "base16";
|
||||
@@ -52,7 +46,7 @@
|
||||
preview-completion-insert = true;
|
||||
completion-trigger-len = 1;
|
||||
auto-info = true;
|
||||
true-color = false; # is detected automatically if set to false
|
||||
true-color = true; # is detected automatically if set to false
|
||||
undercurl = false; # is detected automatically if set to false
|
||||
rulers = [];
|
||||
bufferline = "always";
|
||||
@@ -183,19 +177,20 @@
|
||||
};
|
||||
smart-tab = {
|
||||
enable = false;
|
||||
supersend-menu = false;
|
||||
supersede-menu = false;
|
||||
};
|
||||
inline-diagnostics = {
|
||||
cursor-line = "warning";
|
||||
other-lines = "disable";
|
||||
prefix-len = 1;
|
||||
# max-wrap = set above
|
||||
max-diagnostics = 20;
|
||||
};
|
||||
# inline-diagnostics = {
|
||||
# cursor-line = "hint";
|
||||
# other-lines = "disable";
|
||||
# prefix-len = 1;
|
||||
# # max-wrap = set above
|
||||
# max-diagnostics = 20;
|
||||
# };
|
||||
};
|
||||
keys = {
|
||||
normal = {
|
||||
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
||||
"C-i" = [ ":pipe fgl" "toggle_comments" ];
|
||||
"A-`" = [ "no_op" ];
|
||||
"`" = [ "no_op" ];
|
||||
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||
@@ -209,18 +204,18 @@
|
||||
language = [
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = [
|
||||
"nixd"
|
||||
# "llm"
|
||||
];
|
||||
language-servers = [ "nixd" ];
|
||||
}
|
||||
{
|
||||
name = "latex";
|
||||
language-servers = [ "texlab" "language-tool" ];
|
||||
}
|
||||
{
|
||||
name = "typst";
|
||||
language-servers = [ "language-tool" "tinymist" ];
|
||||
}
|
||||
{
|
||||
name = "markdown";
|
||||
# language-servers = [ "marksman" "style-check" "language-tool" ];
|
||||
language-servers = [ "language-tool" "marksman" ];
|
||||
file-types = [ "md" "MD" ];
|
||||
scope = "text.<name>";
|
||||
@@ -303,8 +298,8 @@
|
||||
base16 = with rice.color; {
|
||||
"attributes" = foreground;
|
||||
"comment" = {
|
||||
"fg" = black.bright;
|
||||
"modifiers" = [ "italic" ];
|
||||
fg = black.bright;
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"constant" = accent.bright;
|
||||
"constant.character.escape" = special.bright;
|
||||
@@ -320,6 +315,7 @@
|
||||
"hint" = tertiary.bright;
|
||||
"info" = foreground;
|
||||
"keyword" = special.base;
|
||||
"keyword.modifiers" = [ "italic" ];
|
||||
"label" = foreground;
|
||||
"namespace" = weird.bright;
|
||||
"operator" = foreground;
|
||||
@@ -332,131 +328,127 @@
|
||||
|
||||
"markup.heading" = accent.base;
|
||||
"markup.bold" = {
|
||||
"fg" = tertiary.bright;
|
||||
"modifiers" = [ "bold" ];
|
||||
fg = tertiary.bright;
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"italic" = {
|
||||
"fg" = secondary.bright;
|
||||
"modifiers" = [ "italic" ];
|
||||
fg = secondary.bright;
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"markup.linktext" = accent.base;
|
||||
"markup.linkurl" = {
|
||||
"fg" = tertiary.dark;
|
||||
"modifiers" = [ "underlined" ];
|
||||
fg = tertiary.dark;
|
||||
modifiers = [ "underlined" ];
|
||||
};
|
||||
"markup.list" = accent.bright;
|
||||
"markup.quote" = weird.bright;
|
||||
"markup.raw" = special.bright;
|
||||
"markup.strikethrough" = {
|
||||
"modifiers" = [ "crossed_out" ];
|
||||
};
|
||||
"markup.strikethrough".modifiers = [ "crossed_out" ];
|
||||
|
||||
"diagnostic.hint" = {
|
||||
"underline" = { style = "curl"; };
|
||||
};
|
||||
"diagnostic.info" = {
|
||||
"underline" = { style = "curl"; };
|
||||
};
|
||||
"diagnostic.warning" = {
|
||||
"underline" = { style = "curl"; };
|
||||
};
|
||||
"diagnostic.error" = {
|
||||
"underline" = { style = "curl"; };
|
||||
};
|
||||
"diagnostic.hint".underline.style = "curl";
|
||||
"diagnostic.info".underline.style = "curl";
|
||||
"diagnostic.warning".underline.style = "curl";
|
||||
"diagnostic.error".underline.style = "curl";
|
||||
|
||||
"ui.background" = { # general background of the editor window
|
||||
# "bg" = background;
|
||||
# bg = background;
|
||||
};
|
||||
"ui.bufferline" = { # the top line ("tab"-line)
|
||||
"fg" = accent.base;
|
||||
"bg" = black.base;
|
||||
fg = accent.base;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.bufferline.active" = { # the active "tab"
|
||||
"fg" = background;
|
||||
"bg" = accent.base;
|
||||
"modifiers" = [ "bold" ];
|
||||
fg = background;
|
||||
bg = accent.base;
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.cursor" = { # the cursor in Normal mode
|
||||
"fg" = foreground;
|
||||
"modifiers" = [ "reversed" ];
|
||||
fg = foreground;
|
||||
modifiers = [ "reversed" ];
|
||||
};
|
||||
"ui.cursorline.primary" = { # the line on which the cursor is on
|
||||
"bg" = black.base;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.cursor.match" = { # Matching bracket etc.
|
||||
"bg" = green.dark;
|
||||
"modifiers" = [ ];
|
||||
bg = green.dark;
|
||||
modifiers = [ ];
|
||||
};
|
||||
"ui.gutter" = {
|
||||
"bg" = black.base;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.help" = {
|
||||
"fg" = green.base;
|
||||
"bg" = black.base;
|
||||
fg = green.base;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.linenr" = {
|
||||
"fg" = white.dark;
|
||||
"bg" = black.base;
|
||||
fg = white.dark;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.linenr.selected" = {
|
||||
"fg" = accent.bright;
|
||||
"modifiers" = [ "bold" ];
|
||||
fg = accent.bright;
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.menu" = {
|
||||
"fg" = accent.base;
|
||||
"bg" = black.base;
|
||||
fg = accent.base;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.menu.scroll" = {
|
||||
"fg" = yellow.dark;
|
||||
"bg" = background;
|
||||
fg = yellow.dark;
|
||||
bg = background;
|
||||
};
|
||||
"ui.menu.selected" = {
|
||||
"fg" = red.base;
|
||||
"bg" = blue.dark;
|
||||
fg = red.base;
|
||||
bg = blue.dark;
|
||||
};
|
||||
"ui.popup" = {
|
||||
"bg" = black.base;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.selection" = {
|
||||
"bg" = white.dark;
|
||||
bg = white.dark;
|
||||
};
|
||||
"ui.selection.primary" = {
|
||||
"bg" = black.bright;
|
||||
bg = black.bright;
|
||||
};
|
||||
"ui.statusline" = {
|
||||
"fg" = blue.bright;
|
||||
"bg" = black.base;
|
||||
fg = blue.bright;
|
||||
bg = black.base;
|
||||
};
|
||||
"ui.statusline.inactive" = {
|
||||
"fg" = red.bright;
|
||||
"bg" = red.dark;
|
||||
fg = red.bright;
|
||||
bg = red.dark;
|
||||
};
|
||||
"ui.statusline.insert" = {
|
||||
"fg" = green.bright;
|
||||
"bg" = green.dark;
|
||||
fg = green.bright;
|
||||
bg = green.dark;
|
||||
};
|
||||
"ui.statusline.normal" = {
|
||||
"fg" = yellow.bright;
|
||||
"bg" = yellow.dark;
|
||||
fg = yellow.bright;
|
||||
bg = yellow.dark;
|
||||
};
|
||||
"ui.statusline.select" = {
|
||||
"fg" = cyan.bright;
|
||||
"bg" = cyan.dark;
|
||||
fg = cyan.bright;
|
||||
bg = cyan.dark;
|
||||
};
|
||||
"ui.text" = foreground;
|
||||
"ui.text.focus" = accent.base;
|
||||
"ui.virtual.indent-guide" = {
|
||||
"fg" = black.bright;
|
||||
fg = black.bright;
|
||||
};
|
||||
"ui.virtual.inlay-hint" = {
|
||||
"fg" = weird.dark;
|
||||
"bg" = weird.base;
|
||||
fg = subtle.base;
|
||||
bg = subtle.dark;
|
||||
};
|
||||
"ui.virtual.ruler" = {
|
||||
"bg" = background;
|
||||
bg = background;
|
||||
};
|
||||
"ui.virtual.jump-label" = {
|
||||
fg = special.base;
|
||||
underline = {
|
||||
style = "dotted";
|
||||
};
|
||||
};
|
||||
"ui.window" = {
|
||||
"bg" = black.base;
|
||||
bg = black.base;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [ hyprland-autoname-workspaces ];
|
||||
@@ -10,6 +10,7 @@
|
||||
"blueman-manager" = ""
|
||||
"chatterino" = ""
|
||||
"Chromium" = ""
|
||||
"chromium-browser" = ""
|
||||
"code" = ""
|
||||
"code-oss" = ""
|
||||
"codium" = ""
|
||||
@@ -22,7 +23,8 @@
|
||||
".*.exe" = ""
|
||||
"firefox" = ""
|
||||
"galaxyclient.exe" = ""
|
||||
"Gimp-.*" = ""
|
||||
"\\.?[gG]imp-.*" = ""
|
||||
"F?imv.*" = ""
|
||||
"KiCad" = ""
|
||||
"kitty" = ""
|
||||
"libreoffice-calc" = ""
|
||||
@@ -32,6 +34,7 @@
|
||||
"obsidian" = ""
|
||||
"org.inkscape.Inkscape" = ""
|
||||
"org.remmina.Remmina" = ""
|
||||
"org.prismlauncher.*" = ""
|
||||
"pavucontrol" = ""
|
||||
"pcbnew" = ""
|
||||
"Signal" = ""
|
||||
@@ -39,7 +42,7 @@
|
||||
"Spotify" = ""
|
||||
"steam" = ""
|
||||
"thunar" = ""
|
||||
"thunderbird" = ""
|
||||
"thunderbird" = ""
|
||||
"Tor Browser" = ""
|
||||
"vesktop" = ""
|
||||
"virt-manager" = ""
|
||||
|
||||
@@ -1,70 +1,33 @@
|
||||
{config, pkgs, pkgs-unstable, inputs, host, user, nvidia, rice, lib, ... }:
|
||||
let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
animation-speed = "5";
|
||||
transparency = builtins.toString rice.transparency;
|
||||
terminal = "ghostty";
|
||||
terminal-exec = "ghostty --command=";
|
||||
monitors = {
|
||||
xps = {
|
||||
main = {
|
||||
name = "eDP-1";
|
||||
resolution = "1920x1200";
|
||||
position = "0x1080";
|
||||
scale = "1.0";
|
||||
};
|
||||
second = {
|
||||
name = "DP-1";
|
||||
resolution = "1920x1080";
|
||||
position = "0x0";
|
||||
scale = "1.0";
|
||||
};
|
||||
main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1080"; scale = "1.0"; };
|
||||
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; };
|
||||
third = { name = "DP-6"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||
};
|
||||
north = {
|
||||
main = {
|
||||
name = "DP-4";
|
||||
resolution = "2560x1440";
|
||||
position = "1920x150";
|
||||
scale = "1.0";
|
||||
};
|
||||
left = {
|
||||
name = "HDMI-A-2";
|
||||
resolution = "1920x1080";
|
||||
position = "0x0";
|
||||
scale = "1.0";
|
||||
};
|
||||
# right = {
|
||||
# name = "HDMI-A-2";
|
||||
# resolution = "1920x1080";
|
||||
# position = "4480x360";
|
||||
# scale = "1.0";
|
||||
# };
|
||||
};
|
||||
ace = {
|
||||
main = {
|
||||
name = "HDMI-A-1";
|
||||
resolution = "3840x2160";
|
||||
position = "0x0";
|
||||
scale = "2.0";
|
||||
};
|
||||
main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x0"; scale = "1.0"; };
|
||||
left = { name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||
# right = { name = "HDMI-A-2"; resolution = "1920x1080"; position = "4480x360"; scale = "1.0"; };
|
||||
};
|
||||
ace.main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; };
|
||||
};
|
||||
in {
|
||||
home.packages = (with pkgs; [
|
||||
# hyprland itself is a system package
|
||||
home.packages = with pkgs; [
|
||||
xdg-desktop-portal-hyprland
|
||||
hyprland-protocols
|
||||
hyprlock
|
||||
hypridle
|
||||
hyprshot
|
||||
hyprpicker
|
||||
hyprcursor
|
||||
|
||||
grim
|
||||
slurp
|
||||
|
||||
# ]) ++ (with pkgs-unstable; [
|
||||
|
||||
]) ++ (with inputs; [
|
||||
hyprswitch.packages.x86_64-linux.default
|
||||
]);
|
||||
];
|
||||
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
@@ -78,15 +41,17 @@ in {
|
||||
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo
|
||||
# inputs.hyprfocus.packages.${pkgs.system}.hyprfocus
|
||||
# inputs.hycov.packages.${pkgs.system}.hycov
|
||||
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
|
||||
# pkgs.hyprlandPlugins.hyprspace
|
||||
# inputs.hyprspace.packages.${pkgs.system}.Hyprspace
|
||||
];
|
||||
|
||||
settings = {
|
||||
monitor =
|
||||
if host == "NxXPS" then (with monitors.xps; [
|
||||
if hyper.host == "NxXPS" then (with monitors.xps; [
|
||||
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
|
||||
"${second.name}, ${second.resolution}, ${second.position}, ${second.scale}"
|
||||
]) else (if host == "NxNORTH" then (with monitors.north; [
|
||||
"${third.name}, ${third.resolution}, ${third.position}, ${third.scale}"
|
||||
]) else (if hyper.host == "NxNORTH" then (with monitors.north; [
|
||||
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
|
||||
"${left.name}, ${left.resolution}, ${left.position}, ${left.scale}"
|
||||
# "${right.name}, ${right.resolution}, ${right.position}, ${right.scale}"
|
||||
@@ -95,10 +60,10 @@ in {
|
||||
]));
|
||||
|
||||
workspace = let
|
||||
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
d2 = if host == "NxXPS" then monitors.xps.second.name else (if host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
||||
d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
||||
d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
||||
d3 = if hyper.host == "NxXPS" then monitors.xps.third.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||
# d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
||||
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
|
||||
in [
|
||||
"11, monitor:${d1}, default:true"
|
||||
@@ -121,8 +86,8 @@ in {
|
||||
"27, monitor:${d2}"
|
||||
"28, monitor:${d2}"
|
||||
"29, monitor:${d2}"
|
||||
"20, monitor:${d2}"
|
||||
"31, monitor:${d3}, default:${let x = if host == "NxNORTH" then "true" else "false"; in x}"
|
||||
"20, monitor:${d2}, ${compact}"
|
||||
"31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}, ${compact}"
|
||||
"32, monitor:${d3}"
|
||||
"33, monitor:${d3}"
|
||||
"34, monitor:${d3}"
|
||||
@@ -143,7 +108,7 @@ in {
|
||||
# };
|
||||
|
||||
|
||||
env = if nvidia.enable == true then [
|
||||
env = if hyper.nvidia.enable == true then [
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"GBM_BACKEND,nvidia-drm"
|
||||
@@ -196,7 +161,7 @@ in {
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = "3";
|
||||
size = "10";
|
||||
passes = "2";
|
||||
xray = false;
|
||||
vibrancy = 0.5;
|
||||
@@ -206,10 +171,11 @@ in {
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
# bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
|
||||
bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
|
||||
# bezier = "myBezier, 0.83, 0, 0.17, 1"; # io
|
||||
bezier = "myBezier, 0.33, 1, 0.68, 1";
|
||||
animation = let direction = if host == "NxXPS" then "slide" else "slidevert"; in [
|
||||
# bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
# bezier = "myBezier, 0.33, 1, 0.68, 1";
|
||||
animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [
|
||||
"windows, 1, ${animation-speed}, myBezier, slide"
|
||||
"border, 1, ${animation-speed}, myBezier"
|
||||
"fade, 1, ${animation-speed}, myBezier"
|
||||
@@ -251,7 +217,6 @@ in {
|
||||
"/usr/lib/polkit-kde-authentication-agent-1 "
|
||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
"syncthing -no-browser"
|
||||
"mako"
|
||||
"fcitx5"
|
||||
# "ibus engine xkb:de::deu"
|
||||
"libinput-gestures"
|
||||
@@ -259,75 +224,69 @@ in {
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
|
||||
"bordercolor rgba(${rice.lib.nohash rice.color.special.bright}ff), pinned:1"
|
||||
|
||||
"noanim, class:^(presenter)$" # sent
|
||||
"float, class:^(presenter)$" # sent
|
||||
|
||||
"noanim, class:^(imv)$"
|
||||
"float, class:^(imv)$"
|
||||
"fullscreen, class:^(imv)$"
|
||||
|
||||
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
|
||||
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
|
||||
"float,class:^(thunderbird)$"
|
||||
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
|
||||
# "float,class:^(thunderbird)$,title:^About(.*)$"
|
||||
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
|
||||
|
||||
"center 1,class:^(gimp)$"
|
||||
] ++ [
|
||||
"bordersize 0, floating:0, onworkspace:w[tv1]"
|
||||
"rounding 0, floating:0, onworkspace:w[tv1]"
|
||||
"bordersize 0, floating:0, onworkspace:f[1]"
|
||||
"rounding 0, floating:0, onworkspace:f[1]"
|
||||
];
|
||||
] ++ [
|
||||
"center 1,class:^(gimp)$"
|
||||
|
||||
windowrule = [
|
||||
# "opacity ${transparency}, firefox"
|
||||
"opacity ${transparency}, code-oss"
|
||||
"opacity ${transparency}, VSCodium"
|
||||
"opacity ${transparency}, Code"
|
||||
# "opacity ${transparency}, sent"
|
||||
"opacity ${transparency}, neovide"
|
||||
"opacity ${transparency}, obsidian"
|
||||
# "opacity ${transparency}, zathura"
|
||||
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
|
||||
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}"
|
||||
"opacity ${transparency}, discord"
|
||||
"opacity ${transparency}, vesktop"
|
||||
"opacity ${transparency}, Element"
|
||||
"opacity ${transparency}, lutris"
|
||||
"opacity ${transparency}, element"
|
||||
# "opacity ${transparency}, ^([sS]potify)$"
|
||||
# "opacity ${transparency}, virt-manager"
|
||||
# "opacity ${transparency}, thunar"
|
||||
"float, class:^(ibus-ui.*)$"
|
||||
"float, class:^(ibus-ui-gtk3)$"
|
||||
"float, class:^(imv)$"
|
||||
"float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||
"float, class:^(presenter)$" # sent
|
||||
"float, class:^(thunderbird)$"
|
||||
"float, title:^(Compact folders)$"
|
||||
"float, title:^(Ibus-ui.*)$"
|
||||
"float, title:^(Ibus-ui-gtk3)$"
|
||||
"float, title:^(Page Info — .*)$"
|
||||
"float, title:^(Picture-in-Picture)$"
|
||||
"float, title:^(wlogout)$"
|
||||
|
||||
"fullscreen, class:^(imv)$"
|
||||
"fullscreen, class:^(sent)$"
|
||||
"fullscreen, class:^(wlogout)$"
|
||||
|
||||
"noanim, class:^(imv)$"
|
||||
"noanim, class:^(presenter)$" # sent
|
||||
|
||||
"opacity ${transparency}, class:^(Code)$"
|
||||
"opacity ${transparency}, class:^(code-oss)$"
|
||||
"opacity ${transparency}, class:^(discord)$"
|
||||
# "opacity ${transparency}, class:^(vesktop)$"
|
||||
# "opacity ${transparency}, class:^(Element)$"
|
||||
"opacity ${transparency}, class:^(lutris)$"
|
||||
"opacity ${transparency}, class:^(neovide)$"
|
||||
# "opacity ${transparency}, class:^(obsidian)$"
|
||||
"opacity ${transparency}, class:^(VSCodium)$"
|
||||
"opacity ${transparency}, title:^(wlogout)$"
|
||||
"opaque, title:^(GNU Image Manipulation Program)$"
|
||||
"float, title:^(Picture-in-Picture)$"
|
||||
"float, title:^(Ibus-ui.*)$"
|
||||
"float, ^(ibus-ui.*)$"
|
||||
"float, ^(ibus-ui-gtk3)$"
|
||||
"float, title:^(Ibus-ui-gtk3)$"
|
||||
"opaque, fullscreen:1"
|
||||
|
||||
"pin, title:^(Picture-in-Picture)$"
|
||||
"float, org.kde.polkit-kde-authentication-agent-1"
|
||||
"float, title:^(wlogout)$"
|
||||
"float, imv"
|
||||
"float, title:^(Page Info — .*)$"
|
||||
"float, title:^(Compact folders)$"
|
||||
"tile, sent"
|
||||
"fullscreen, wlogout"
|
||||
"fullscreen, sent"
|
||||
"workspace 14, lutris"
|
||||
"workspace 100, title:^(Apex Legends)$"
|
||||
"workspace 100, ^(cyberpunk2077.exe)$"
|
||||
"workspace 100, title:^(No Man.s Sky)$"
|
||||
"workspace 100, gamescope"
|
||||
|
||||
"tile, class:^(sent)$"
|
||||
|
||||
"workspace 100, class:^(gamescope)$"
|
||||
|
||||
"float, title:^(terminal-file-picker)$"
|
||||
"dimaround, title:^(terminal-file-picker)$"
|
||||
"center, title:^(terminal-file-picker)$"
|
||||
"size 80% 80%, title:^(terminal-file-picker)$"
|
||||
"size: 30% 30%, initialTitle:^(Select Calendar)$"
|
||||
];
|
||||
|
||||
|
||||
layerrule = [
|
||||
"blur,waybar"
|
||||
"blur,bar-0" # hyprpanel
|
||||
"blur,bar-1"
|
||||
"blur,bar-2"
|
||||
"blur,bar-3"
|
||||
"blur,bar-4"
|
||||
"dimaround,rofi"
|
||||
"blur,rofi"
|
||||
"xray,rofi"
|
||||
@@ -344,18 +303,17 @@ in {
|
||||
###########################################################################
|
||||
## ROW 0:
|
||||
bind = [
|
||||
"SUPER SHIFT, Escape, exit, "
|
||||
"SUPER, F1, workspace, 100"
|
||||
"SUPER SHIFT, F1, movetoworkspace, 100"
|
||||
# "SUPER, F2,"
|
||||
# "SUPER, F3, toggleopaque"
|
||||
# "SUPER, F4,"
|
||||
"SUPER, F5, exec, nx_gcal_event force-lookup"
|
||||
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
||||
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'NxCaldavEvent' 'Cleared saved event cache!' ''"
|
||||
# "SUPER, F5, exec, nx_gcal_event force-lookup"
|
||||
# "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
||||
"SUPER, F6, exec, ${terminal-exec}'htop'"
|
||||
"SUPER, F7, exec, ${terminal-exec}'nmtui'"
|
||||
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
|
||||
"SUPER, F9, execr, waybar_mode set ' '"
|
||||
"SUPER, F9, execr, submap_indicator set ' '"
|
||||
"SUPER, F9, submap, color"
|
||||
# "SUPER, F10, hyprload,update"
|
||||
"SUPER, F11, exec, waybar"
|
||||
@@ -395,27 +353,26 @@ in {
|
||||
###########################################################################
|
||||
## ROW 2:
|
||||
|
||||
#bind = SUPER, TAB, hycov:toggleoverview
|
||||
# "SUPER, TAB, overview:toggle"
|
||||
# "SUPER, TAB, hycov:toggleoverview"
|
||||
"SUPER, TAB, overview:toggle"
|
||||
# "SUPER, TAB, hyprexpo:expo, toggle"
|
||||
"ALT, TAB, focuscurrentorlast"
|
||||
# "SUPER, TAB, exec, hyprswitch --daemon"
|
||||
"SUPER, Q, killactive"
|
||||
"SUPER, W, exec, waybar_mode set ' '"
|
||||
"SUPER, W, exec, submap_indicator set ' '"
|
||||
"SUPER, W, submap, browserSM "
|
||||
"SUPER, E, exec, element-desktop"
|
||||
# "SUPER, E, exec, element-desktop"
|
||||
"SUPER, R, exec, rofi -show drun"
|
||||
# "SUPER, T, exec, alacritty"
|
||||
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
|
||||
"SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
|
||||
"SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
|
||||
"SUPER, Z, exec, waybar_mode set ' '"
|
||||
"SUPER, Z, submap, tuda"
|
||||
"SUPER, Z, exec, zathura"
|
||||
"SUPER, U, exec, [tile] thunderbird "
|
||||
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
|
||||
"SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
|
||||
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
|
||||
"SUPER, O, exec, obsidian "
|
||||
# "SUPER, O, exec, obsidian "
|
||||
"SUPER, P, pin "
|
||||
# "SUPER, Ü,"
|
||||
# "SUPER, +,"
|
||||
@@ -425,10 +382,11 @@ in {
|
||||
###########################################################################
|
||||
## ROW 3:
|
||||
|
||||
"SUPER, A, execr, waybar_mode set ' '"
|
||||
"SUPER, A, execr, submap_indicator set ' '"
|
||||
"SUPER, A, submap, scrL"
|
||||
"SUPER, S, exec, spotify"
|
||||
"SUPER, D, exec, vesktop"
|
||||
# "SUPER, D, exec, discord"
|
||||
"SUPER, F, fullscreen"
|
||||
# "SUPER, G,"
|
||||
"SUPER, H, movefocus, l"
|
||||
@@ -443,14 +401,14 @@ in {
|
||||
## ROW 4:
|
||||
|
||||
# "SUPER, <, overview:toggle"
|
||||
"SUPER, Y, execr, waybar_mode set ' '"
|
||||
"SUPER, Y, execr, submap_indicator set ' '"
|
||||
"SUPER, Y, submap, scrR"
|
||||
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
|
||||
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
|
||||
"SUPER, C, exec, chatterino"
|
||||
"SUPER SHIFT, C, exec, hyprpicker -n -a"
|
||||
"SUPER, V, togglefloating, "
|
||||
"SUPER, B, exec, bitwarden"
|
||||
# "SUPER, B, exec, bitwarden"
|
||||
"SUPER, N, togglesplit"
|
||||
# "SUPER, M, exec, /home/nx2/scripts/meme-full-screen/meme-full-screen.sh "
|
||||
# "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
|
||||
@@ -462,7 +420,7 @@ in {
|
||||
|
||||
# bindr = SUPER, Ctrl, exec, # ??
|
||||
# bindr = SUPERALT, Alt_L, exec,
|
||||
"SUPER, Space, cyclenext"
|
||||
# "SUPER, Space, cyclenext"
|
||||
"SUPER SHIFT, Space, swapnext"
|
||||
# "SUPER, , "
|
||||
# "SUPER, , "
|
||||
@@ -482,7 +440,9 @@ in {
|
||||
###########################################################################
|
||||
## MEGA KEYS:
|
||||
|
||||
'' , Print, exec, grim -g "$(slurp)"''
|
||||
", Print, execr, submap_indicator set ' '"
|
||||
", Print, submap, screenshot"
|
||||
|
||||
# "SUPER, Next, resizeactive, 5% 5%" # binde
|
||||
# "SUPER, Prior, resizeactive, -5% -5%" # binde
|
||||
|
||||
@@ -519,6 +479,39 @@ in {
|
||||
"SUPER, Next, resizeactive, 10% 10%"
|
||||
"SUPER, Prior, resizeactive, -10% -10%"
|
||||
];
|
||||
plugin = {
|
||||
overview = {
|
||||
# panelHeight =
|
||||
# panelBorderWidth =
|
||||
onBottom = false; # whether if panel should be on bottom instead of top
|
||||
# workspaceMargin = # spacing of workspaces with eachother and the edge of the panel
|
||||
# reservedArea = # padding on top of the panel, for Macbook camera notch
|
||||
workspaceBorderSize = rice.border-width; #
|
||||
centerAligned = true; # whether if workspaces should be aligned at the center (KDE / macOS style) or at the left (Windows style)
|
||||
hideBackgroundLayers = true; # do not draw background and bottom layers in overview
|
||||
hideTopLayers = false; # do not draw top layers in overview
|
||||
hideOverlayLayers = false; # do not draw overlay layers in overview
|
||||
hideRealLayers = false; # whether to hide layers in actual workspace
|
||||
drawActiveWorkspace = true; # draw the active workspace in overview as-is
|
||||
overrideGaps = false; # whether if overview should override the layout gaps in the current workspace using the following values
|
||||
# gapsIn = #
|
||||
# gapsOut = #
|
||||
affectStrut = false; # whether the panel should push window aside, disabling this option also
|
||||
|
||||
dots_center = true;
|
||||
autoDrag = true; # mouse click always drags window when overview is open
|
||||
autoScroll = true; # mouse scroll on active workspace area always switch workspace
|
||||
exitOnClick = true; # mouse click without dragging exits overview
|
||||
switchOnDrop = true; # switch to the workspace when a window is droppped into it
|
||||
exitOnSwitch = true; # overview exits when overview is switched by clicking on workspace view or by switchOnDrop
|
||||
showNewWorkspace = false; # add a new empty workspace at the end of workspaces view
|
||||
showEmptyWorkspace = false; # show empty workspaces that are inbetween non-empty workspaces
|
||||
showSpecialWorkspace = false; # defaults to false
|
||||
disableGestures = true;
|
||||
reverseSwipe = true; # reverses the direction of swipe gesture, for macOS peeps?
|
||||
exitKey = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -531,18 +524,18 @@ in {
|
||||
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
|
||||
extraConfig = let
|
||||
action_simple = { mods ? "", key, cmd }: ''
|
||||
bind=${mods},${key},execr,waybar_mode unset
|
||||
bind=${mods},${key},execr,submap_indicator unset
|
||||
bind=${mods},${key},${cmd}
|
||||
bind=${mods},${key},submap,reset
|
||||
'';
|
||||
extra_workspace = { key, wsnumber }: ''
|
||||
bind=,${key},execr,waybar_mode unset
|
||||
bind=,${key},execr,submap_indicator unset
|
||||
bind=,${key},workspace,${wsnumber}
|
||||
bind=,${key},submap,reset
|
||||
bind=SUPER,${key},execr,waybar_mode unset
|
||||
bind=SUPER,${key},execr,submap_indicator unset
|
||||
bind=SUPER,${key},workspace,${wsnumber}
|
||||
bind=SUPER,${key},submap,reset
|
||||
bind=SUPER SHIFT,${key},execr, waybar_mode unset
|
||||
bind=SUPER SHIFT,${key},execr, submap_indicator unset
|
||||
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
|
||||
bind=SUPER SHIFT,${key},submap,reset
|
||||
'';
|
||||
@@ -564,32 +557,36 @@ in {
|
||||
${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}}
|
||||
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
|
||||
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||
bind = , Escape, exec, waybar_mode unset
|
||||
bind = , Escape, submap, reset
|
||||
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||
bind=,Z,exec,submap_indicator set ' '
|
||||
bind=,Z,submap,tuda
|
||||
bind=,Z,submap,reset
|
||||
bind=,Escape,exec,submap_indicator unset
|
||||
bind=,Escape,submap,reset
|
||||
submap = reset
|
||||
|
||||
|
||||
submap = scrL
|
||||
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||
bind = , A, execr, waybar_mode unset
|
||||
bind = , A, execr, submap_indicator unset
|
||||
bind = , A, submap, reset
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
submap = scrR
|
||||
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||
bind = , Y, execr, waybar_mode unset
|
||||
bind = , Y, execr, submap_indicator unset
|
||||
bind = , Y, submap, reset
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
submap = color
|
||||
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }}
|
||||
${action_simple { key = "D"; cmd = ''exec,firefox /home/${user}/.config/color-pallete.html''; }}
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'NxTheme' 'change_colors_json img successfull' ''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'NxTheme' 'change_colors_json manual successfull' ''; }}
|
||||
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
@@ -597,16 +594,23 @@ in {
|
||||
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
|
||||
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
|
||||
bind = , Escape, execr, waybar_mode unset
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
submap = screenshot
|
||||
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
|
||||
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
|
||||
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
|
||||
bind = , Escape, execr, submap_indicator unset
|
||||
bind = , Escape, submap, reset
|
||||
submap = reset
|
||||
|
||||
'';
|
||||
};
|
||||
|
||||
home.file = let
|
||||
m = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
|
||||
m = if hyper.host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
|
||||
in {
|
||||
".config/hypr/hyprlock.conf".text = ''
|
||||
background {
|
||||
@@ -678,7 +682,7 @@ in {
|
||||
valign = bottom
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ config, pkgs, lib, host, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
texlab # LSP
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
{ pkgs, rice, ... }:
|
||||
{
|
||||
{ config, pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [ libnotify ];
|
||||
services.mako = with rice; {
|
||||
enable = true;
|
||||
defaultTimeout = 10000; # in ms
|
||||
backgroundColor = color.background;
|
||||
textColor = color.foreground;
|
||||
borderColor = color.border;
|
||||
borderSize = border-width;
|
||||
font = font.code.name;
|
||||
borderRadius = rounding;
|
||||
anchor = "top-right";
|
||||
margin = builtins.toString (gap-size * 2) ;
|
||||
enable = if config.programs.hyprpanel.enable then false else true;
|
||||
settings = {
|
||||
default-timeout = 5000; # in ms
|
||||
background-color = color.background;
|
||||
text-color = color.foreground;
|
||||
font = font.code.name;
|
||||
border-size = border-width;
|
||||
border-radius = rounding;
|
||||
border-color = color.border;
|
||||
anchor = "top-right";
|
||||
margin = builtins.toString (gap-size * 2) ;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, host, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# cinny-desktop
|
||||
@@ -79,7 +79,7 @@
|
||||
nx2site.ssl_verify = on
|
||||
nx2site.username = "nx2"
|
||||
nx2site.password = "''${sec.data.matrix_nx2site_password}"
|
||||
nx2site.device_name = "Weechat@${host}"
|
||||
nx2site.device_name = "Weechat@${hyper.host}"
|
||||
nx2site.autoreconnect_delay = 10
|
||||
nx2site.sso_helper_listening_port = 0
|
||||
'';
|
||||
|
||||
80
home-modules/mpv.nix
Normal file
80
home-modules/mpv.nix
Normal file
@@ -0,0 +1,80 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
programs.mpv = {
|
||||
enable = true;
|
||||
package = pkgs.mpv;
|
||||
config = {
|
||||
# osc = false; # Disables the on-screen controller (seekbar, volume, etc.)
|
||||
# osd-bar = false; # Disables the on-screen display progress bar
|
||||
demuxer-max-back-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking backwards
|
||||
demuxer-max-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking forwards
|
||||
interpolation = true; # Enables frame interpolation for smoother playback
|
||||
video-sync = "display-resample"; # Synchronizes video playback to the display's refresh rate
|
||||
sub-visibility = true; # Hides subtitles by default
|
||||
sub-auto = "fuzzy"; # Automatically loads subtitles if their filename is similar to the video file
|
||||
sub-font = rice.font.base.name;
|
||||
# sub-blur = 10; # this blurs the whole thing, text aswell
|
||||
sub-color = rice.color.accent.bright;
|
||||
sub-back-color = "${rice.color.background}${rice.lib.float-to-drune 0.8}"; # does not seem to work
|
||||
# sub-border-size = 0;
|
||||
sub-border-style = "opaque-box";
|
||||
background-color = "${rice.color.background}"; # transparency breaks blur on hyprland sometimes, so just rgb
|
||||
alang = "en,eng,de,ger"; # Sets preferred audio languages in order
|
||||
slang = "en,eng,de,ger"; # Sets preferred subtitle languages in order
|
||||
vlang = "en,eng,de,ger"; # Sets preferred video languages in order
|
||||
save-position-on-quit = true; # Saves the playback position when quitting
|
||||
ignore-path-in-watch-later-config = true; # Ignores the path in the watch-later configuration
|
||||
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best"; # Sets the format for downloading YouTube videos
|
||||
vo = pkgs.lib.mkIf hyper.nvidia.enable "gpu";
|
||||
hwdec = if hyper.nvidia.enable then "no" else "no"; # bugged
|
||||
};
|
||||
scripts = with pkgs.mpvScripts; [
|
||||
mpris # use media keys
|
||||
thumbfast # thumbnails on timeline hover
|
||||
# uosc # custom ui
|
||||
sponsorblock
|
||||
];
|
||||
bindings = {
|
||||
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
|
||||
# "tab" = ''script-binding uosc/toggle-ui'';
|
||||
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
|
||||
# "right" = ''seek 5'';
|
||||
# "left" = ''seek -5'';
|
||||
# "shift+right" = ''seek 30; script-binding uosc/flash-timeline'';
|
||||
# "shift+left" = ''seek -30; script-binding uosc/flash-timeline'';
|
||||
# "m" = ''no-osd cycle mute; script-binding uosc/flash-volume'';
|
||||
# "up" = ''no-osd add volume 10; script-binding uosc/flash-volume'';
|
||||
# "down" = ''no-osd add volume -10; script-binding uosc/flash-volume'';
|
||||
# "[" = ''no-osd add speed -0.25; script-binding uosc/flash-speed'';
|
||||
# "]" = ''no-osd add speed 0.25; script-binding uosc/flash-speed'';
|
||||
# "\\" = ''no-osd set speed 1; script-binding uosc/flash-speed'';
|
||||
# ">" = ''script-binding uosc/next; script-message-to uosc flash-elements top_bar,timeline'';
|
||||
# "<" = ''script-binding uosc/prev; script-message-to uosc flash-elements top_bar,timeline>'';
|
||||
};
|
||||
scriptOpts = {
|
||||
thumbfast = {
|
||||
spawn_first = true;
|
||||
network = true;
|
||||
hwdec = true;
|
||||
};
|
||||
uosc = {
|
||||
timeline_size = 25;
|
||||
timeline_persistency = "paused,audio";
|
||||
progress = "always";
|
||||
progress_size = 4;
|
||||
progress_line_width = 4;
|
||||
controls = "subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality";
|
||||
top_bar = "never";
|
||||
refine = "text_width";
|
||||
};
|
||||
};
|
||||
};
|
||||
xdg.configFile."mpv/shaders/invert.glsl".text = /* glsl */ ''
|
||||
//!HOOK LUMA
|
||||
//!BIND HOOKED
|
||||
vec4 hook()
|
||||
{
|
||||
float luma = LUMA_texOff(0).x;
|
||||
return vec4(1.0 - luma);
|
||||
}
|
||||
'';
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
{ config, pkgs-unstable, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs-unstable; [
|
||||
packages = with pkgs; [
|
||||
nh
|
||||
nix-output-monitor
|
||||
nvd
|
||||
];
|
||||
sessionVariables = {
|
||||
FLAKE = "${config.home.homeDirectory}/nix-dots";
|
||||
NH_FLAKE = "${hyper.home}/nix-dots";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nixd
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, lib, nvidia, ... }:
|
||||
lib.mkIf (nvidia.enable == true)
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.nvidia.enable == true)
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, secrets, ... }: let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
sep = " ";
|
||||
in {
|
||||
home = {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "nx_backup";
|
||||
runtimeInputs = [ ];
|
||||
text = let
|
||||
web-root = "/var/nginx/webroot";
|
||||
web-root = hyper.webroot;
|
||||
gitea-backup = "/var/backup/gitea";
|
||||
postgres-backup = "/var/backup/postgresql";
|
||||
in /* bash */ ''
|
||||
@@ -59,8 +59,7 @@
|
||||
echo "Backup and encryption complete: $DESTINATION"
|
||||
|
||||
echo "Space remaining:"
|
||||
df -h | head -n 1
|
||||
df -h | grep -P "^/dev.+? "
|
||||
dysk
|
||||
'';
|
||||
})
|
||||
];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
ghostscript
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{ pkgs, lib, host, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
# home.packages = with pkgs; [
|
||||
# obs-studio
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, lib, user, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
libreoffice
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
ollama
|
||||
(writers.writePython3Bin "ooo" {
|
||||
libraries = [ pkgs.python3Packages.ollama ];
|
||||
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ];
|
||||
@@ -15,10 +16,10 @@ if len(sys.argv) < 2:
|
||||
system_message = sys.argv[1]
|
||||
input_text = sys.stdin.read()
|
||||
try:
|
||||
response = ollama.chat(model='llama3.1:8b', messages=[
|
||||
response = ollama.chat(model='gemma3:4b', messages=[
|
||||
{
|
||||
'role': 'system',
|
||||
'content': "You are a text transformer. Follow the folling instruction:\n\n" + system_message + "\n\nOnly output the transformed text. Do not add any addidional conversation around the output. Just the result.",
|
||||
'content': system_message,
|
||||
},
|
||||
{
|
||||
'role': 'user',
|
||||
|
||||
29
home-modules/opencode.nix
Normal file
29
home-modules/opencode.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
opencode
|
||||
];
|
||||
file.".config/opencode/opencode.json".text = let
|
||||
model = "qwen2.5-coder:7b";
|
||||
in builtins.toJSON {
|
||||
"$schema" = "https://opencode.ai/config.json";
|
||||
model = "ollama/${model}";
|
||||
theme = "matrix";
|
||||
provider = {
|
||||
ollama = {
|
||||
name = "Ollama (local)";
|
||||
npm = "@ai-sdk/openai-compatible";
|
||||
options = {
|
||||
baseURL = "http://localhost:11434/v1";
|
||||
};
|
||||
models = {
|
||||
"${model}" = {
|
||||
tools = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
pandoc
|
||||
|
||||
18
home-modules/pkgs-list/desktop.nix
Normal file
18
home-modules/pkgs-list/desktop.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
xdg-desktop-portal
|
||||
brightnessctl
|
||||
blueman
|
||||
fontpreview
|
||||
gtk3
|
||||
gsettings-desktop-schemas
|
||||
imv
|
||||
pavucontrol
|
||||
playerctl
|
||||
swww
|
||||
wev
|
||||
wl-clipboard
|
||||
xclip
|
||||
wlr-randr
|
||||
];
|
||||
}
|
||||
20
home-modules/pkgs-list/programs.nix
Normal file
20
home-modules/pkgs-list/programs.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ pkgs, hyper, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
chromium
|
||||
gnome-clocks
|
||||
gnome-calculator
|
||||
gnome-characters
|
||||
gnome-2048
|
||||
element-desktop
|
||||
qbittorrent
|
||||
wl-clipboard
|
||||
xfce.thunar
|
||||
] ++ (if (hyper.host != "NxACE") then [
|
||||
signal-desktop
|
||||
unstable.code-cursor-fhs
|
||||
obsidian
|
||||
zoom-us
|
||||
inkscape
|
||||
audacity
|
||||
] else []);
|
||||
}
|
||||
40
home-modules/pkgs-list/shell.nix
Normal file
40
home-modules/pkgs-list/shell.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
cmake
|
||||
cmatrix
|
||||
dig
|
||||
du-dust
|
||||
dysk
|
||||
exiftool
|
||||
eza
|
||||
ffmpeg
|
||||
figlet
|
||||
fzf
|
||||
gh
|
||||
glib
|
||||
glow
|
||||
gnumake
|
||||
htop
|
||||
imagemagick
|
||||
jq
|
||||
lolcat
|
||||
lynx
|
||||
mediainfo
|
||||
neofetch
|
||||
pastel
|
||||
pdfgrep
|
||||
pipes
|
||||
pv
|
||||
reflex
|
||||
ripgrep
|
||||
screen
|
||||
speedtest-go
|
||||
sssnake
|
||||
systemctl-tui
|
||||
tldr
|
||||
w3m
|
||||
which
|
||||
yt-dlp
|
||||
];
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{ pkgs, lib, host, secrets, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.remmina
|
||||
@@ -7,7 +7,7 @@ lib.mkIf (host != "NxACE")
|
||||
|
||||
(pkgs.writeShellScriptBin "connect_to_pnx" ''
|
||||
pushd ~/.vpn/
|
||||
sudo openvpn --config /home/nx2/.vpn/ljk-pnx.ovpn --auth-user-pass ~/.vpn/ljk-pnx-pass.txt #gets put there by home-manager
|
||||
sudo openvpn --config ${hyper.home}/.vpn/ljk-pnx.ovpn --auth-user-pass ~/.vpn/ljk-pnx-pass.txt #gets put there by home-manager
|
||||
popd
|
||||
'')
|
||||
|
||||
|
||||
12
home-modules/programming.nix
Normal file
12
home-modules/programming.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ ... }: {
|
||||
imports = [
|
||||
./programming/c.nix
|
||||
./programming/gleam.nix
|
||||
./programming/glsl.nix
|
||||
./programming/go.nix
|
||||
./programming/java.nix
|
||||
./programming/js.nix
|
||||
./programming/python.nix
|
||||
./programming/rust.nix
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
{ pkgs, pkgs-unstable, lib, host, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
erlang
|
||||
rebar3
|
||||
] ++ (with pkgs-unstable; [
|
||||
gleam
|
||||
]);
|
||||
];
|
||||
}
|
||||
|
||||
8
home-modules/programming/glsl.nix
Normal file
8
home-modules/programming/glsl.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
glsl_analyzer
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
go
|
||||
];
|
||||
{ pkgs, ... }@all: with all; {
|
||||
programs.go = {
|
||||
enable = true;
|
||||
package = pkgs.go;
|
||||
goPath = "${config.xdg.dataHome}/go";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ pkgs, lib, host, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nodejs
|
||||
typescript-language-server
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = let
|
||||
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
||||
ipython
|
||||
pipdeptree
|
||||
requests
|
||||
google google-api-python-client google-auth-httplib2 google-auth-oauthlib
|
||||
debugpy
|
||||
black
|
||||
]);
|
||||
in {
|
||||
packages = [
|
||||
python-with-packages
|
||||
];
|
||||
] ++ (with pkgs; [
|
||||
python311Packages.python-lsp-server
|
||||
ruff
|
||||
pyright
|
||||
]);
|
||||
sessionVariables = {
|
||||
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
|
||||
};
|
||||
|
||||
11
home-modules/programming/rust.nix
Normal file
11
home-modules/programming/rust.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
cargo
|
||||
clippy
|
||||
rustc
|
||||
rustfmt
|
||||
rust-analyzer
|
||||
];
|
||||
};
|
||||
}
|
||||
31
home-modules/rclone.nix
Normal file
31
home-modules/rclone.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [ rclone ];
|
||||
sops.secrets."nx2site/copyparty/user-password/${hyper.user}".path = "%r/secrets/copyparty/user-password/${hyper.user}";
|
||||
programs.rclone = {
|
||||
enable = true;
|
||||
package = pkgs.rclone;
|
||||
remotes = {
|
||||
"file.${hyper.domain}" = {
|
||||
config = {
|
||||
type = "webdav";
|
||||
vendor = "owncloud"; # copyparty
|
||||
url = "https://file.${hyper.domain}/";
|
||||
user = hyper.user;
|
||||
pacer_min_sleep = "0.01ms";
|
||||
};
|
||||
mounts = {
|
||||
"" = {
|
||||
enable = true;
|
||||
mountPoint = "${hyper.home}/file.nx2.site/";
|
||||
options = {
|
||||
vfs-cache-mode = "writes";
|
||||
dir-cache-time = "5s";
|
||||
};
|
||||
};
|
||||
};
|
||||
secrets.pass = "/run/user/1000/secrets/copyparty/user-password/${hyper.user}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{ pkgs, rice, ... }: {
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
rofi-wayland
|
||||
];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
xsane
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
{ pkgs, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
let
|
||||
my-sent = pkgs.sent.override {
|
||||
patches = [
|
||||
./sent.patch
|
||||
# /home/${user}/.local/share/sent.patch
|
||||
# (builtins.toFile "/home/${user}/
|
||||
];
|
||||
};
|
||||
in
|
||||
|
||||
@@ -1,23 +1,7 @@
|
||||
{ user, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
];
|
||||
|
||||
{ pkgs, ... }@all: with all; {
|
||||
imports = [ inputs.sops-nix.homeManagerModules.sops ];
|
||||
sops = {
|
||||
# age.keyFile = "/home/${user}/.config/sops/age/keys.txt";
|
||||
gnupg.home = "/home/${user}/.gnupg";
|
||||
age.keyFile = "${hyper.home}/vault/age/sopsnix-${hyper.host}-home.key";
|
||||
defaultSopsFile = ../sops-secrets.yaml;
|
||||
|
||||
# %r is $XDG_RUNTIME_DIR
|
||||
secrets = {
|
||||
"example" = {
|
||||
path = "%r/secrets/example";
|
||||
};
|
||||
# "sops-age-private-key" = { # Bootstrapping doens't work
|
||||
# mode = "0400";
|
||||
# path = "/home/${user}/.config/sops/age/keys.txt";
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
56
home-modules/spotify.nix
Normal file
56
home-modules/spotify.nix
Normal file
@@ -0,0 +1,56 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
unstable.spotify
|
||||
];
|
||||
services.librespot = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.librespot;
|
||||
};
|
||||
sops.secrets."spotify/spotiy-player-clinet-id" = { path = "%r/secrets/spotify/spotiy-player-clinet-id"; };
|
||||
programs.spotify-player = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.spotify-player;
|
||||
settings = {
|
||||
border_type = "Rounded";
|
||||
client_id_command = "cat $XDG_RUNTIME_DIR/secrets/spotify/spotiy-player-clinet-id";
|
||||
copy_command.command = "wl-copy";
|
||||
cover_img_length = 20;
|
||||
cover_img_scale = 1; # if this is not 1 it doesnt fit in the box (for me)
|
||||
cover_img_width = 9; # this ratio depends on your terminal font
|
||||
device.normalization = true;
|
||||
genre_num = 32; # all of them
|
||||
liked_icon = "";
|
||||
name = "spotify-player-${hyper.host}";
|
||||
pause_icon = "";
|
||||
playback_window_position = "Bottom";
|
||||
play_icon = "";
|
||||
progress_bar_position = "Right"; # "Bottom"
|
||||
progress_bar_type = "Rectangle"; # "Line"
|
||||
theme = "${hyper.user}";
|
||||
};
|
||||
themes = [{
|
||||
name = "${hyper.user}";
|
||||
component_style = with rice.color; {
|
||||
block_title = { fg = accent.bright; };
|
||||
border = { fg = border; };
|
||||
current_playing = { fg = special.base; bg = special.darker; modifiers = ["Italic"]; };
|
||||
like = { fg = positive.base; };
|
||||
lyrics_played = { fg = subtle.base; };
|
||||
lyrics_playing = { fg = special.base; };
|
||||
page_desc = { fg = secondary.base; };
|
||||
playback_album = { fg = secondary.base; };
|
||||
playback_artists = { fg = secondary.base; };
|
||||
playback_genres = { fg = subtle.base; };
|
||||
playback_metadata = { fg = accent.base; bg = background; };
|
||||
playback_progress_bar = { fg = accent.brighter; bg = accent.dark; modifiers = ["Bold"]; };
|
||||
playback_status = { fg = accent.bright; };
|
||||
playback_track = { fg = accent.bright; modifiers = ["Bold"]; };
|
||||
secondary_row = { fg = secondary.base; };
|
||||
selection = { bg = accent.dark; };
|
||||
table_header = { fg = tertiary.bright; };
|
||||
# playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = "";
|
||||
};
|
||||
}];
|
||||
};
|
||||
}
|
||||
@@ -1,27 +1,37 @@
|
||||
{ pkgs, domain, ... }:
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [ sshfs ];
|
||||
file.".ssh/config".text = ''
|
||||
HOST nxace
|
||||
HostName ssh.${domain}
|
||||
User nx2
|
||||
Port 50022
|
||||
|
||||
HOST nxacel
|
||||
HostName 192.168.178.32
|
||||
User nx2
|
||||
Port 50022
|
||||
|
||||
HOST nxrpil
|
||||
HostName 192.168.178.31
|
||||
User nx2
|
||||
Port 22
|
||||
|
||||
HOST nxgit
|
||||
HostName ssh.${domain}
|
||||
User git
|
||||
Port 50022
|
||||
'';
|
||||
{ pkgs, ... }@all: with all; {
|
||||
home.packages = with pkgs; [ sshfs ];
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
package = pkgs.openssh;
|
||||
addKeysToAgent = "yes";
|
||||
matchBlocks = let
|
||||
nxace = name: {
|
||||
host = name;
|
||||
hostname = "ssh.${hyper.domain}";
|
||||
user = "nx2";
|
||||
port = 50022;
|
||||
identityFile = "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}";
|
||||
};
|
||||
in {
|
||||
"*".identityFile = [
|
||||
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
|
||||
"${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}"
|
||||
"${hyper.home}/vault/ssh/tg-dm-informatik-tuda"
|
||||
];
|
||||
"github.com".identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ];
|
||||
"nxace" = nxace "nxace";
|
||||
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
|
||||
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
|
||||
"nxgit" = (nxace "nxgit") // {
|
||||
user = "git";
|
||||
identityFile = "${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}";
|
||||
# addKeysToAgent = "1h";
|
||||
};
|
||||
};
|
||||
};
|
||||
services.ssh-agent = {
|
||||
enable = true;
|
||||
# socket = "ssh-agent"; # suffix to $XDG_RUNTIME_DIR
|
||||
# package = pkgs.openssh;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{ lib, rice, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
package = pkgs.starship;
|
||||
# enableBashIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
settings = with rice.color; {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{ pkgs, lib, user, ... }:
|
||||
lib.mkIf (user != "tv")
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication {
|
||||
|
||||
8
home-modules/typst.nix
Normal file
8
home-modules/typst.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
typst
|
||||
tinymist
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }: let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
vws = pkgs.vale.withStyles (s: [ s.alex s.google ]);
|
||||
in {
|
||||
home = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{ config, pkgs, lib, host, ... }:
|
||||
lib.mkIf (host == "NxNORTH")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host == "NxNORTH")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
virt-manager
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, pkgs, lib, user, host, rice, allowed, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
config = lib.mkIf (host != "NxACE") {
|
||||
config = lib.mkIf (hyper.host != "NxACE") {
|
||||
home.packages = [
|
||||
pkgs.vscodium
|
||||
pkgs.nixpkgs-fmt
|
||||
@@ -8,108 +8,97 @@
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
jnoortheen.nix-ide
|
||||
ms-python.python
|
||||
ms-python.black-formatter
|
||||
redhat.vscode-yaml
|
||||
redhat.vscode-xml
|
||||
ms-python.python
|
||||
mhutchie.git-graph
|
||||
github.vscode-pull-request-github
|
||||
esbenp.prettier-vscode
|
||||
gencer.html-slim-scss-css-class-completion
|
||||
donjayamanne.githistory
|
||||
mads-hartmann.bash-ide-vscode
|
||||
bungcip.better-toml
|
||||
arrterian.nix-env-selector
|
||||
# ms-vscode-remote.remote-ssh
|
||||
profiles.default ={
|
||||
userSettings = {
|
||||
workbench.colorTheme = "Just Black";
|
||||
editor.fontFamily = "'${rice.font.code.name}', 'monospace', monospace";
|
||||
remote.SSH.useLocalServer = false;
|
||||
};
|
||||
keybindings = [
|
||||
{
|
||||
key = "ctrl+d";
|
||||
command = "editor.action.deleteLines";
|
||||
when = "textInputFocus";
|
||||
}
|
||||
{
|
||||
key = "ctrl+shift+d";
|
||||
command = "editor.action.duplicateSelection";
|
||||
when = "textInputFocus";
|
||||
}
|
||||
{
|
||||
# unset so that ctrl d is not set twice
|
||||
key = "";
|
||||
command = "editor.action.addSelectionToNextFindMatch";
|
||||
when = "editorFocus";
|
||||
}
|
||||
{
|
||||
# unset so that ctrl shift d is not set twice
|
||||
key = "";
|
||||
command = "workbench.view.debug";
|
||||
}
|
||||
];
|
||||
|
||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "just-black";
|
||||
publisher = "nur";
|
||||
version = "3.1.1";
|
||||
sha256 = "sha256-fatJZquCDsLDFGVzBol2D6LIZUbZ6GzqcVEFAwLodW0=";
|
||||
}
|
||||
{
|
||||
name = "vscode-sshfs";
|
||||
publisher = "Kelvin";
|
||||
version = "1.26.1";
|
||||
sha256 = "sha256-WO9vYELNvwmuNeI05sUBE969KAiKYtrJ1fRfdZx3OYU=";
|
||||
}
|
||||
{
|
||||
name = "color-highlight";
|
||||
publisher = "naumovs";
|
||||
version = "2.8.0";
|
||||
sha256 = "sha256-mT2P1lEdW66YkDRN6fi0rmmvvyBfXiJjAUHns8a8ipE=";
|
||||
}
|
||||
{
|
||||
name = "dancehelix";
|
||||
publisher = "silverquark";
|
||||
version = "0.5.16";
|
||||
sha256 = "sha256-oHwtlbB18ctEnfStDOpJ+2/Kq41JZog8FVhTa1/s7m0=";
|
||||
}
|
||||
# {
|
||||
# name = "remote-ssh-edit";
|
||||
# publisher = "ms-vscode-remote";
|
||||
# version = "0.86.0";
|
||||
# sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
|
||||
# }
|
||||
# {
|
||||
# name = "remote-ssh";
|
||||
# publisher = "ms-vscode-remote";
|
||||
# version = "0.110.2024030715";
|
||||
# sha256 = "sha256-gkxrBwPRDdLFaxc1/vYFBsv4Z0JOhDzb8LrLhkToC/g=";
|
||||
# }
|
||||
];
|
||||
userSettings = {
|
||||
workbench.colorTheme = "Just Black";
|
||||
editor.fontFamily = "'${rice.font.code.name}', 'monospace', monospace";
|
||||
remote.SSH.useLocalServer = false;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
jnoortheen.nix-ide
|
||||
ms-python.python
|
||||
ms-python.black-formatter
|
||||
redhat.vscode-yaml
|
||||
redhat.vscode-xml
|
||||
ms-python.python
|
||||
mhutchie.git-graph
|
||||
github.vscode-pull-request-github
|
||||
esbenp.prettier-vscode
|
||||
gencer.html-slim-scss-css-class-completion
|
||||
donjayamanne.githistory
|
||||
mads-hartmann.bash-ide-vscode
|
||||
bungcip.better-toml
|
||||
arrterian.nix-env-selector
|
||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "just-black";
|
||||
publisher = "nur";
|
||||
version = "3.1.1";
|
||||
sha256 = "sha256-fatJZquCDsLDFGVzBol2D6LIZUbZ6GzqcVEFAwLodW0=";
|
||||
}
|
||||
{
|
||||
name = "vscode-sshfs";
|
||||
publisher = "Kelvin";
|
||||
version = "1.26.1";
|
||||
sha256 = "sha256-WO9vYELNvwmuNeI05sUBE969KAiKYtrJ1fRfdZx3OYU=";
|
||||
}
|
||||
{
|
||||
name = "color-highlight";
|
||||
publisher = "naumovs";
|
||||
version = "2.8.0";
|
||||
sha256 = "sha256-mT2P1lEdW66YkDRN6fi0rmmvvyBfXiJjAUHns8a8ipE=";
|
||||
}
|
||||
{
|
||||
name = "dancehelix";
|
||||
publisher = "silverquark";
|
||||
version = "0.5.16";
|
||||
sha256 = "sha256-oHwtlbB18ctEnfStDOpJ+2/Kq41JZog8FVhTa1/s7m0=";
|
||||
}
|
||||
];
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
};
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
keybindings = [
|
||||
{
|
||||
key = "ctrl+d";
|
||||
command = "editor.action.deleteLines";
|
||||
when = "textInputFocus";
|
||||
}
|
||||
{
|
||||
key = "ctrl+shift+d";
|
||||
command = "editor.action.duplicateSelection";
|
||||
when = "textInputFocus";
|
||||
}
|
||||
{
|
||||
# unset so that ctrl d is not set twice
|
||||
key = "";
|
||||
command = "editor.action.addSelectionToNextFindMatch";
|
||||
when = "editorFocus";
|
||||
}
|
||||
{
|
||||
# unset so that ctrl shift d is not set twice
|
||||
key = "";
|
||||
command = "workbench.view.debug";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
imports = if host != "NxACE" then [
|
||||
# Make vscode settings writable
|
||||
(import
|
||||
(builtins.fetchurl {
|
||||
url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
|
||||
sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
|
||||
})
|
||||
{ inherit config lib; })
|
||||
# imports = if hyper.host != "NxACE" then [
|
||||
# # Make vscode settings writable
|
||||
# (import
|
||||
# (builtins.fetchurl {
|
||||
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
|
||||
# sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
|
||||
# })
|
||||
# { inherit config pkgs; lib = lib; })
|
||||
|
||||
(import
|
||||
(builtins.fetchurl {
|
||||
url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
|
||||
sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
|
||||
})
|
||||
{ inherit config lib pkgs; })
|
||||
] else [];
|
||||
# (import
|
||||
# (builtins.fetchurl {
|
||||
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
|
||||
# sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
|
||||
# })
|
||||
# { inherit config pkgs; lib = lib; })
|
||||
# ] else [];
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ pkgs-unstable, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home.packages = with pkgs-unstable; [
|
||||
home.packages = with pkgs; [
|
||||
(writers.writePython3Bin "change_colors_json" {
|
||||
libraries = with python3Packages; [ numpy pillow scikit-learn ];
|
||||
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||
@@ -119,7 +119,7 @@
|
||||
return Palette(colors)
|
||||
|
||||
def hyprpicker() -> Color:
|
||||
ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-n", "-f", "rgb"], capture_output=True).stdout)[2:-3]
|
||||
ret = str(subprocess.run(["bash", "-c", "${pkgs.hyprpicker}/bin/hyprpicker -n -f rgb | tail -n 1"], capture_output=True).stdout)[2:-3]
|
||||
return Color([int(c) for c in ret.split(" ")])
|
||||
|
||||
if __name__ == "__main__":
|
||||
@@ -139,7 +139,7 @@
|
||||
weird = alter_hue(ilist=accent, hue=80)
|
||||
special = alter_hue(ilist=accent, hue=180)
|
||||
foreground = alter_l(accent, 0.9)
|
||||
background = alter_l(accent, 0.1)
|
||||
background = alter_l(accent, 0.05)
|
||||
|
||||
d = {
|
||||
"base": {
|
||||
|
||||
@@ -1,357 +0,0 @@
|
||||
{ config, pkgs, rice, domain, user, ... }:
|
||||
let
|
||||
sep = " ";
|
||||
in {
|
||||
sops.secrets = {
|
||||
"nx2site/radicale/password" = { };
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
|
||||
print_help() {
|
||||
echo "Usage: waybar_mode {set <string>|unset}"
|
||||
}
|
||||
if [ $# -lt 1 ]; then
|
||||
print_help; exit 1;
|
||||
fi
|
||||
case "$1" in
|
||||
set)
|
||||
# Check if there is a second argument for the 'set' operation
|
||||
if [ $# -eq 2 ]; then
|
||||
echo "$2" > /tmp/waybar-mode
|
||||
pkill -RTMIN+8 waybar
|
||||
else
|
||||
echo "Error: 'set' operation requires exactly one string argument."
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
unset)
|
||||
echo "" > /tmp/waybar-mode
|
||||
pkill -RTMIN+8 waybar
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown command '$1'"
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
'';})
|
||||
(writeShellApplication { name = "cclock"; text = /*bash*/ ''
|
||||
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
||||
elif [ "$1" = "--no-icons" ]; then
|
||||
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
||||
fi
|
||||
'';})
|
||||
(writers.writePython3Bin "caldav_event" {
|
||||
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||
flakeIgnore = [ "E302" "E305""E501" ];
|
||||
} /* python */ ''
|
||||
import os
|
||||
from caldav import DAVClient
|
||||
from datetime import datetime, timezone
|
||||
import json
|
||||
from ics import Calendar
|
||||
|
||||
def get_password(password_file):
|
||||
with open(password_file, "r") as file:
|
||||
return file.read().strip()
|
||||
|
||||
def load_cache(cache_file):
|
||||
if os.path.exists(cache_file):
|
||||
with open(cache_file, "r") as file:
|
||||
return json.load(file)
|
||||
return None
|
||||
|
||||
def save_cache(cache_file, data):
|
||||
with open(cache_file, "w") as file:
|
||||
json.dump(data, file)
|
||||
|
||||
def get_ongoing_and_next_event(url, username, password):
|
||||
now = datetime.now(timezone.utc)
|
||||
ongoing_events = []
|
||||
upcoming_events = []
|
||||
|
||||
try:
|
||||
client = DAVClient(url, username=username, password=password)
|
||||
principal = client.principal()
|
||||
calendars = principal.calendars()
|
||||
|
||||
for calendar in calendars:
|
||||
events = calendar.events()
|
||||
for event in events:
|
||||
ical_data = event.data
|
||||
calendar_parsed = Calendar(ical_data)
|
||||
|
||||
for event in calendar_parsed.events:
|
||||
event_name = event.name or "(No Title)"
|
||||
start_time = event.begin.astimezone(timezone.utc)
|
||||
end_time = event.end.astimezone(timezone.utc)
|
||||
|
||||
if start_time <= now <= end_time:
|
||||
ongoing_events.append((event_name, start_time.timestamp(), end_time.timestamp()))
|
||||
elif start_time > now:
|
||||
upcoming_events.append((event_name, start_time.timestamp(), end_time.timestamp()))
|
||||
except Exception as e:
|
||||
print(f"Error accessing {url}: {e}")
|
||||
|
||||
upcoming_events.sort(key=lambda x: x[1]) # Sort by start time
|
||||
return ongoing_events, upcoming_events[0] if upcoming_events else None
|
||||
|
||||
if __name__ == "__main__":
|
||||
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
||||
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||
url = "https://dav.${domain}/"
|
||||
username = "${user}"
|
||||
password = get_password(password_file)
|
||||
|
||||
cache = load_cache(cache_file)
|
||||
now = datetime.now(timezone.utc).timestamp()
|
||||
|
||||
if cache and cache.get("next_event_start") and now < cache["next_event_start"]:
|
||||
ongoing_events = cache.get("ongoing_events", [])
|
||||
next_event = (cache["next_event_name"], cache["next_event_start"], cache["next_event_end"]) if "next_event_name" in cache else None
|
||||
else:
|
||||
ongoing_events, next_event = get_ongoing_and_next_event(url, username, password)
|
||||
|
||||
cache_data = {
|
||||
"ongoing_events": ongoing_events,
|
||||
"next_event_name": next_event[0] if next_event else None,
|
||||
"next_event_start": next_event[1] if next_event else None,
|
||||
"next_event_end": next_event[2] if next_event else None
|
||||
}
|
||||
save_cache(cache_file, cache_data)
|
||||
|
||||
if ongoing_events:
|
||||
for event_name, start_time, end_time in ongoing_events:
|
||||
time_remaining = end_time - now
|
||||
hours, rem = divmod(int(time_remaining), 3600)
|
||||
minutes, _ = divmod(rem, 60)
|
||||
|
||||
if hours == 0:
|
||||
print(f"{event_name} {minutes} minute{'s ' if minutes > 1 else ' '}left")
|
||||
else:
|
||||
print(f"{event_name} {hours} hour{'s ' if hours > 1 else ' '}and {minutes} minute{'s ' if minutes > 1 else ' '}left")
|
||||
else:
|
||||
if next_event:
|
||||
event_name, start_time, end_time = next_event
|
||||
time_until_start = start_time - now
|
||||
hours, rem = divmod(int(time_until_start), 3600)
|
||||
minutes, _ = divmod(rem, 60)
|
||||
|
||||
if hours == 0:
|
||||
print(f"'{event_name}' starts in {minutes} minute{'s ' if minutes > 1 else ' '}")
|
||||
else:
|
||||
print(f"'{event_name}' starts in {hours} hour{'s ' if hours > 1 else ' '}and {minutes} minute{'s ' if minutes > 1 else ' '}")
|
||||
else:
|
||||
print("No upcoming events found.")
|
||||
'')
|
||||
];
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
package = pkgs.waybar;
|
||||
settings = {
|
||||
bar = {
|
||||
# height = 20;
|
||||
layer = "top";
|
||||
position = "bottom";
|
||||
margin-top = 0;
|
||||
# margin-left = rice.gap-size;
|
||||
# margin-bottom = rice.gap-size;
|
||||
# margin-right = rice.gap-size;
|
||||
margin-left = 0;
|
||||
margin-bottom = 0;
|
||||
margin-right = 0;
|
||||
spacing = 10;
|
||||
modules-left = [
|
||||
# "cpu"
|
||||
# "memory"
|
||||
"wireplumber"
|
||||
"backlight"
|
||||
"battery"
|
||||
"network"
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
modules-right = [
|
||||
"custom/mode"
|
||||
"custom/caldav_event"
|
||||
"custom/cclock"
|
||||
"tray"
|
||||
];
|
||||
"hyprland/workspaces" = {
|
||||
on-click = "activate";
|
||||
format = "{name}";
|
||||
all-outputs = false;
|
||||
active-only = false;
|
||||
};
|
||||
"hyprland/window" = {
|
||||
# format = "${sep}{}";
|
||||
format = "{}";
|
||||
separate-outputs = true;
|
||||
};
|
||||
"custom/cclock" = {
|
||||
exec = "cclock";
|
||||
restart-interval = 60;
|
||||
};
|
||||
"custom/caldav_event" = {
|
||||
format = "${sep}{}";
|
||||
exec = "caldav_event";
|
||||
restart-interval = 60;
|
||||
};
|
||||
"custom/mode" = {
|
||||
exec = "cat /tmp/waybar-mode";
|
||||
interval = "once";
|
||||
signal = 8;
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 1;
|
||||
format = "${sep}{}%";
|
||||
max-length = 10;
|
||||
};
|
||||
memory = {
|
||||
interval = 5;
|
||||
format = "${sep}{avail:.0f}G free";
|
||||
};
|
||||
battery = {
|
||||
interval = 60;
|
||||
tooltip = false;
|
||||
format = "{icon}${sep}{capacity}%";
|
||||
states = {
|
||||
warning = 15;
|
||||
critical = 5;
|
||||
};
|
||||
format-icons = [
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
format-charging = "{icon}${sep}+{capacity}%";
|
||||
format-plugged = "{icon}${sep}P{capacity}%";
|
||||
format-full = "{icon}${sep}F{capacity}%";
|
||||
};
|
||||
backlight = {
|
||||
device = "eDP-1";
|
||||
format = "{icon}${sep}{percent}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
network = {
|
||||
format-wifi = "${sep}{essid}";
|
||||
format-ethernet = "${sep}Wired";
|
||||
format-disconnected = "${sep}Disconnected";
|
||||
};
|
||||
wireplumber = {
|
||||
format = "${sep}{volume}%";
|
||||
format-muted = "${sep}--%";
|
||||
};
|
||||
};
|
||||
};
|
||||
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
|
||||
* {
|
||||
font-family: ${rice.font.code.name};
|
||||
font-size: 1em;
|
||||
min-height: 0px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(${f background},${builtins.toString rice.transparency});
|
||||
transition-duration: 5s;
|
||||
transition-property: background-color;
|
||||
/* border: ${builtins.toString rice.border-width}px solid rgb(${f border}); */
|
||||
/* margin: ${builtins.toString rice.gap-size}px; */
|
||||
/* border-radius: ${builtins.toString rice.rounding}px; */
|
||||
}
|
||||
|
||||
#clock,
|
||||
#custom-cclock,
|
||||
#custom-mode,
|
||||
#custom-caldav-event,
|
||||
#battery,
|
||||
#cpu,
|
||||
#tray,
|
||||
#disk,
|
||||
#backlight,
|
||||
#network,
|
||||
#wireplumber,
|
||||
#memory,
|
||||
#window,
|
||||
#workspaces {
|
||||
padding: 0px 3px;
|
||||
margin-top: 0.3em;
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
color: rgb(${f accent.bright});
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: rgb(${f accent.base});
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
border-radius: ${builtins.toString rice.rounding}px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: rgb(${f background});
|
||||
background-color: rgb(${f accent.base});
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
color: rgb(${f tertiary.bright});
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: rgba(${f magenta.base},${builtins.toString rice.transparency});
|
||||
}
|
||||
|
||||
#custom-mode {
|
||||
color: rgb(${f red.base});
|
||||
}
|
||||
|
||||
#window, #custom-ctimeremaining {
|
||||
font-family: ${rice.font.base.name}, ${rice.font.code.name};
|
||||
color: rgb(${f tertiary.bright});
|
||||
}
|
||||
|
||||
#wireplumber.muted {
|
||||
color: rgb(${f tertiary.bright});
|
||||
}
|
||||
#wireplumber {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: rgb(${f green.base});;
|
||||
}
|
||||
|
||||
#battery.charging {
|
||||
color: rgb(${f green.base});
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
background: rgb(${f negative.base});
|
||||
color: rgb(${f foreground});
|
||||
}
|
||||
'';
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs, rice,... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [ wlogout ];
|
||||
|
||||
32
home-modules/xdg.nix
Normal file
32
home-modules/xdg.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
xdg = {
|
||||
enable = true;
|
||||
configHome = "${hyper.home}/.config";
|
||||
cacheHome = "${hyper.home}/.cache";
|
||||
dataHome = "${hyper.home}/.local/share";
|
||||
stateHome = "${hyper.home}/.local/state";
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = let
|
||||
browser = "firefox.desktop";
|
||||
image = "imv.desktop";
|
||||
in {
|
||||
"default-web-browser" = [ browser ];
|
||||
"text/html" = [ browser ];
|
||||
"text/htm" = [ browser ];
|
||||
"x-scheme-handler/http" = [ browser ];
|
||||
"x-scheme-handler/https" = [ browser ];
|
||||
"x-scheme-handler/about" = [ browser ];
|
||||
"x-scheme-handler/unknown" = [ browser ];
|
||||
"x-scheme-handler/mailto" = "thunderbird.desktop";
|
||||
"image/png" = image;
|
||||
"image/jpg" = image;
|
||||
"image/jpeg" = image;
|
||||
"image/webp" = image;
|
||||
"image/gif" = image;
|
||||
"application/pdf" = "zathura.desktop";
|
||||
"inode/directory" = "thunar.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,186 +1,187 @@
|
||||
{ pkgs, lib, system, rice, inputs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# yazi
|
||||
# dragon
|
||||
unar
|
||||
];
|
||||
|
||||
{ pkgs, ... }@all: with all; let
|
||||
nox-var = (pkgs.version != "24.05");
|
||||
tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser;
|
||||
in {
|
||||
home.packages = [
|
||||
pkgs.unar
|
||||
tfc
|
||||
];
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
# package = pkgs.yazi;
|
||||
package = inputs.yazi.packages.${system}.default;
|
||||
package = inputs.yazi.packages.${hyper.system}.default;
|
||||
enableFishIntegration = true;
|
||||
shellWrapperName = "ya";
|
||||
plugins = with inputs.yazi-plugins.packages.${system}; {
|
||||
inherit chmod starship;
|
||||
};
|
||||
# initLua = /* lua */ '' '';
|
||||
# initLua = /* lua */ '' ''; # down
|
||||
keymap = {
|
||||
manager.keymap = [
|
||||
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
|
||||
{ on = "q"; run = "quit"; desc = "Exit the process"; }
|
||||
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
|
||||
{ on = "<C-w>"; run = "close"; desc = "Close the current tab, or quit if it is last tab"; }
|
||||
{ on = "<C-z>"; run = "suspend"; desc = "Suspend the process"; }
|
||||
mgr.keymap = [
|
||||
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
|
||||
{ on = "q"; run = "quit"; desc = "Exit the process"; }
|
||||
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
|
||||
{ on = "<C-w>"; run = "close"; desc = "Close the current tab, or quit if it is last tab"; }
|
||||
{ on = "<C-z>"; run = "suspend"; desc = "Suspend the process"; }
|
||||
# Hopping
|
||||
{ on = "k"; run = "arrow -1"; desc = "Move cursor up"; }
|
||||
{ on = "j"; run = "arrow 1"; desc = "Move cursor down"; }
|
||||
{ on = "<Up>"; run = "arrow -1"; desc = "Move cursor up"; }
|
||||
{ on = "<Down>"; run = "arrow 1"; desc = "Move cursor down"; }
|
||||
{ on = "<C-u>"; run = "arrow -50%"; desc = "Move cursor up half page"; }
|
||||
{ on = "<C-d>"; run = "arrow 50%"; desc = "Move cursor down half page"; }
|
||||
{ on = "<C-b>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||
{ on = [ "g" "g" ]; run = "arrow -99999999"; desc = "Move cursor to the top"; }
|
||||
{ on = [ "g" "e" ]; run = "arrow 99999999"; desc = "Move cursor to the end"; }
|
||||
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
|
||||
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
|
||||
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
|
||||
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
|
||||
{ on = "k"; run = "arrow -1"; desc = "Move cursor up"; }
|
||||
{ on = "j"; run = "arrow 1"; desc = "Move cursor down"; }
|
||||
{ on = "<Up>"; run = "arrow -1"; desc = "Move cursor up"; }
|
||||
{ on = "<Down>"; run = "arrow 1"; desc = "Move cursor down"; }
|
||||
{ on = "<C-u>"; run = "arrow -50%"; desc = "Move cursor up half page"; }
|
||||
{ on = "<C-d>"; run = "arrow 50%"; desc = "Move cursor down half page"; }
|
||||
{ on = "<C-b>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
||||
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
|
||||
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
|
||||
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
|
||||
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
|
||||
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
|
||||
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
||||
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
||||
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
|
||||
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
|
||||
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||
# Navigation
|
||||
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
|
||||
{ on = "<Left>"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||
{ on = "<Right>"; run = "enter"; desc = "Enter the child directory"; }
|
||||
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
|
||||
{ on = "<Left>"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||
{ on = "<Right>"; run = "enter"; desc = "Enter the child directory"; }
|
||||
{ on = "H"; run = "back"; desc = "Go back to the previous directory"; }
|
||||
{ on = "L"; run = "forward"; desc = "Go forward to the next directory"; }
|
||||
{ on = "L"; run = "forward"; desc = "Go forward to the next directory"; }
|
||||
# Seeking
|
||||
{ on = "K"; run = "seek -5"; desc = "Seek up 5 units in the preview"; }
|
||||
{ on = "K"; run = "seek -5"; desc = "Seek up 5 units in the preview"; }
|
||||
{ on = "J"; run = "seek 5"; desc = "Seek down 5 units in the preview"; }
|
||||
# Selection
|
||||
{ on = "<Space>"; run = [ "toggle --state=none" "arrow 1" ]; desc = "Toggle the current selection state"; }
|
||||
{ on = "<Space>"; run = [ "toggle --state=none" "arrow 1" ]; desc = "Toggle the current selection state"; }
|
||||
{ on = "v"; run = "visual_mode"; desc = "Enter visual mode (selection mode)"; }
|
||||
{ on = "V"; run = "visual_mode --unset"; desc = "Enter visual mode (unset mode)"; }
|
||||
{ on = "<C-a>"; run = "toggle_all --state=on"; desc = "Select all files"; }
|
||||
{ on = "<C-n>"; run = "toggle_all --state=off"; desc = "Deselect all files"; }
|
||||
{ on = "<C-r>"; run = "toggle_all --state=none"; desc = "Inverse selection of all files"; }
|
||||
{ on = "V"; run = "visual_mode --unset"; desc = "Enter visual mode (unset mode)"; }
|
||||
{ on = "<C-a>"; run = "toggle_all --state=on"; desc = "Select all files"; }
|
||||
{ on = "<C-n>"; run = "toggle_all --state=off"; desc = "Deselect all files"; }
|
||||
{ on = "<C-r>"; run = "toggle_all --state=none"; desc = "Inverse selection of all files"; }
|
||||
# Operation
|
||||
{ on = "o"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
||||
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
||||
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
||||
{ on = "P"; run = "paste --force"; desc = "Paste yanked (overwrite if exists)"; }
|
||||
{ on = "-"; run = "link"; desc = "Symlink the absolute path of yanked files"; }
|
||||
{ on = "_"; run = "link --relative"; desc = "Symlink the relative path of yanked files"; }
|
||||
{ on = "<C-->"; run = "hardlink"; desc = "Hardlink yanked files"; }
|
||||
{ on = "Y"; run = "unyank"; desc = "Cancel the yank status"; }
|
||||
{ on = "X"; run = "unyank"; desc = "Cancel the yank status"; }
|
||||
{ on = "d"; run = "remove"; desc = "Trash selected files"; }
|
||||
{ on = "D"; run = "remove --permanently"; desc = "Permanently delete selected files"; }
|
||||
{ on = "a"; run = "create"; desc = "Create a file (ends with / for directories)"; }
|
||||
{ on = "r"; run = "rename --cursor=before_ext"; desc = "Rename selected file(s)"; }
|
||||
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
|
||||
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
|
||||
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
|
||||
{ on = "s"; run = "search fd"; desc = "Search files by name using fd"; }
|
||||
{ on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; }
|
||||
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
|
||||
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
|
||||
{ on = "o"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||
{ on = "y"; run = [ ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list''
|
||||
"yank" ]; desc = "Yank selected files (copy)"; }
|
||||
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
||||
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
||||
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
||||
{ on = "P"; run = "paste --force"; desc = "Paste yanked (overwrite if exists)"; }
|
||||
{ on = "-"; run = "link"; desc = "Symlink the absolute path of yanked files"; }
|
||||
{ on = "_"; run = "link --relative"; desc = "Symlink the relative path of yanked files"; }
|
||||
{ on = "<C-->"; run = "hardlink"; desc = "Hardlink yanked files"; }
|
||||
{ on = "Y"; run = "unyank"; desc = "Cancel the yank status"; }
|
||||
{ on = "X"; run = "unyank"; desc = "Cancel the yank status"; }
|
||||
{ on = "d"; run = "remove"; desc = "Trash selected files"; }
|
||||
{ on = "D"; run = "remove --permanently"; desc = "Permanently delete selected files"; }
|
||||
{ on = "a"; run = "create"; desc = "Create a file (ends with / for directories)"; }
|
||||
{ on = "r"; run = "rename --cursor=before_ext"; desc = "Rename selected file(s)"; }
|
||||
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
|
||||
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
|
||||
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
|
||||
{ on = "s"; run = "search fd"; desc = "Search files by name using fd"; }
|
||||
{ on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; }
|
||||
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
|
||||
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
|
||||
{ on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; }
|
||||
# Linemode
|
||||
{ on = [ "m" "s" ]; run = "linemode size"; desc = "Set linemode to size"; }
|
||||
{ on = [ "m" "p" ]; run = "linemode permissions"; desc = "Set linemode to permissions"; }
|
||||
{ on = [ "m" "c" ]; run = "linemode ctime"; desc = "Set linemode to ctime"; }
|
||||
{ on = [ "m" "m" ]; run = "linemode mtime"; desc = "Set linemode to mtime"; }
|
||||
{ on = [ "m" "o" ]; run = "linemode owner"; desc = "Set linemode to owner"; }
|
||||
{ on = [ "m" "n" ]; run = "linemode none"; desc = "Set linemode to none"; }
|
||||
{ on = [ "m" "s" ]; run = "linemode size"; desc = "Set linemode to size"; }
|
||||
{ on = [ "m" "p" ]; run = "linemode permissions"; desc = "Set linemode to permissions"; }
|
||||
{ on = [ "m" "c" ]; run = "linemode ctime"; desc = "Set linemode to ctime"; }
|
||||
{ on = [ "m" "m" ]; run = "linemode mtime"; desc = "Set linemode to mtime"; }
|
||||
{ on = [ "m" "o" ]; run = "linemode owner"; desc = "Set linemode to owner"; }
|
||||
{ on = [ "m" "n" ]; run = "linemode none"; desc = "Set linemode to none"; }
|
||||
# Copy
|
||||
{ on = [ "c" "c" ]; run = "copy path"; desc = "Copy the file path"; }
|
||||
{ on = [ "c" "d" ]; run = "copy dirname"; desc = "Copy the directory path"; }
|
||||
{ on = [ "c" "f" ]; run = "copy filename"; desc = "Copy the filename"; }
|
||||
{ on = [ "c" "n" ]; run = "copy name_without_ext"; desc = "Copy the filename without extension"; }
|
||||
{ on = [ "c" "c" ]; run = "copy path"; desc = "Copy the file path"; }
|
||||
{ on = [ "c" "d" ]; run = "copy dirname"; desc = "Copy the directory path"; }
|
||||
{ on = [ "c" "f" ]; run = "copy filename"; desc = "Copy the filename"; }
|
||||
{ on = [ "c" "n" ]; run = "copy name_without_ext"; desc = "Copy the filename without extension"; }
|
||||
# Filter
|
||||
{ on = "f"; run = "filter --smart"; desc = "Filter files"; }
|
||||
# Find
|
||||
{ on = "/"; run = "find --smart"; desc = "Find next file"; }
|
||||
{ on = "?"; run = "find --previous --smart"; desc = "Find previous file"; }
|
||||
{ on = "n"; run = "find_arrow"; desc = "Go to the next found"; }
|
||||
{ on = "/"; run = "find --smart"; desc = "Find next file"; }
|
||||
{ on = "?"; run = "find --previous --smart"; desc = "Find previous file"; }
|
||||
{ on = "n"; run = "find_arrow"; desc = "Go to the next found"; }
|
||||
{ on = "N"; run = "find_arrow --previous"; desc = "Go to the previous found"; }
|
||||
# Sortin
|
||||
{ on = [ "," "m" ]; run = [ "sort modified --reverse=no" "linemode mtime" ]; desc = "Sort by modified time"; }
|
||||
# Sorting
|
||||
{ on = [ "," "m" ]; run = [ "sort modified --reverse=no" "linemode mtime" ]; desc = "Sort by modified time"; }
|
||||
{ on = [ "," "M" ]; run = [ "sort modified --reverse" "linemode mtime" ]; desc = "Sort by modified time (reverse)"; }
|
||||
{ on = [ "," "c" ]; run = [ "sort created --reverse=no" "linemode ctime" ]; desc = "Sort by created time"; }
|
||||
{ on = [ "," "C" ]; run = [ "sort created --reverse" "linemode ctime" ]; desc = "Sort by created time (reverse)"; }
|
||||
{ on = [ "," "e" ]; run = "sort extension --reverse=no"; desc = "Sort by extension"; }
|
||||
{ on = [ "," "E" ]; run = "sort extension --reverse"; desc = "Sort by extension (reverse)"; }
|
||||
{ on = [ "," "a" ]; run = "sort alphabetical --reverse=no"; desc = "Sort alphabetically"; }
|
||||
{ on = [ "," "A" ]; run = "sort alphabetical --reverse"; desc = "Sort alphabetically (reverse)"; }
|
||||
{ on = [ "," "n" ]; run = "sort natural --reverse=no"; desc = "Sort naturally"; }
|
||||
{ on = [ "," "N" ]; run = "sort natural --reverse"; desc = "Sort naturally (reverse)"; }
|
||||
{ on = [ "," "s" ]; run = [ "sort size --reverse=no" "linemode size" ]; desc = "Sort by size"; }
|
||||
{ on = [ "," "S" ]; run = [ "sort size --reverse" "linemode size" ]; desc = "Sort by size (reverse)"; }
|
||||
{ on = [ "," "c" ]; run = [ "sort created --reverse=no" "linemode ctime" ]; desc = "Sort by created time"; }
|
||||
{ on = [ "," "C" ]; run = [ "sort created --reverse" "linemode ctime" ]; desc = "Sort by created time (reverse)"; }
|
||||
{ on = [ "," "e" ]; run = "sort extension --reverse=no"; desc = "Sort by extension"; }
|
||||
{ on = [ "," "E" ]; run = "sort extension --reverse"; desc = "Sort by extension (reverse)"; }
|
||||
{ on = [ "," "a" ]; run = "sort alphabetical --reverse=no"; desc = "Sort alphabetically"; }
|
||||
{ on = [ "," "A" ]; run = "sort alphabetical --reverse"; desc = "Sort alphabetically (reverse)"; }
|
||||
{ on = [ "," "n" ]; run = "sort natural --reverse=no"; desc = "Sort naturally"; }
|
||||
{ on = [ "," "N" ]; run = "sort natural --reverse"; desc = "Sort naturally (reverse)"; }
|
||||
{ on = [ "," "s" ]; run = [ "sort size --reverse=no" "linemode size" ]; desc = "Sort by size"; }
|
||||
{ on = [ "," "S" ]; run = [ "sort size --reverse" "linemode size" ]; desc = "Sort by size (reverse)"; }
|
||||
# Tab
|
||||
{ on = "t"; run = "tab_create --current"; desc = "Create a new tab with CWD"; }
|
||||
{ on = "<C-w>"; run = "close"; desc = "Close the current tab"; }
|
||||
{ on = "1"; run = "tab_switch 0"; desc = "Switch to the first tab"; }
|
||||
{ on = "2"; run = "tab_switch 1"; desc = "Switch to the second tab"; }
|
||||
{ on = "3"; run = "tab_switch 2"; desc = "Switch to the third tab"; }
|
||||
{ on = "4"; run = "tab_switch 3"; desc = "Switch to the fourth tab"; }
|
||||
{ on = "5"; run = "tab_switch 4"; desc = "Switch to the fifth tab"; }
|
||||
{ on = "6"; run = "tab_switch 5"; desc = "Switch to the sixth tab"; }
|
||||
{ on = "7"; run = "tab_switch 6"; desc = "Switch to the seventh tab"; }
|
||||
{ on = "8"; run = "tab_switch 7"; desc = "Switch to the eighth tab"; }
|
||||
{ on = "9"; run = "tab_switch 8"; desc = "Switch to the ninth tab"; }
|
||||
{ on = "<C-1>"; run = "tab_swap 0"; desc = "Swap current tab with the first tab"; }
|
||||
{ on = "<C-2>"; run = "tab_swap 1"; desc = "Swap current tab with the second tab"; }
|
||||
{ on = "<C-3>"; run = "tab_swap 2"; desc = "Swap current tab with the third tab"; }
|
||||
{ on = "<C-4>"; run = "tab_swap 3"; desc = "Swap current tab with the fourth tab"; }
|
||||
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with the fifth tab"; }
|
||||
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with "; }
|
||||
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with the sixth tab"; }
|
||||
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with "; }
|
||||
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with the seventh tab"; }
|
||||
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with tab"; }
|
||||
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with the eighth tab"; }
|
||||
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with b"; }
|
||||
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with the ninth tab"; }
|
||||
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with "; }
|
||||
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to the previous tab"; }
|
||||
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to thtab"; }
|
||||
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch to the next tab"; }
|
||||
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch ttab"; }
|
||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
|
||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; }
|
||||
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
|
||||
{ on = "t"; run = "tab_create --current"; desc = "Create a new tab with CWD"; }
|
||||
{ on = "<C-w>"; run = "close"; desc = "Close the current tab"; }
|
||||
{ on = "1"; run = "tab_switch 0"; desc = "Switch to the first tab"; }
|
||||
{ on = "2"; run = "tab_switch 1"; desc = "Switch to the second tab"; }
|
||||
{ on = "3"; run = "tab_switch 2"; desc = "Switch to the third tab"; }
|
||||
{ on = "4"; run = "tab_switch 3"; desc = "Switch to the fourth tab"; }
|
||||
{ on = "5"; run = "tab_switch 4"; desc = "Switch to the fifth tab"; }
|
||||
{ on = "6"; run = "tab_switch 5"; desc = "Switch to the sixth tab"; }
|
||||
{ on = "7"; run = "tab_switch 6"; desc = "Switch to the seventh tab"; }
|
||||
{ on = "8"; run = "tab_switch 7"; desc = "Switch to the eighth tab"; }
|
||||
{ on = "9"; run = "tab_switch 8"; desc = "Switch to the ninth tab"; }
|
||||
{ on = "<C-1>"; run = "tab_swap 0"; desc = "Swap current tab with the first tab"; }
|
||||
{ on = "<C-2>"; run = "tab_swap 1"; desc = "Swap current tab with the second tab"; }
|
||||
{ on = "<C-3>"; run = "tab_swap 2"; desc = "Swap current tab with the third tab"; }
|
||||
{ on = "<C-4>"; run = "tab_swap 3"; desc = "Swap current tab with the fourth tab"; }
|
||||
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with the fifth tab"; }
|
||||
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with "; }
|
||||
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with the sixth tab"; }
|
||||
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with "; }
|
||||
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with the seventh tab"; }
|
||||
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with tab"; }
|
||||
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with the eighth tab"; }
|
||||
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with b"; }
|
||||
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with the ninth tab"; }
|
||||
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with "; }
|
||||
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to the previous tab"; }
|
||||
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to thtab"; }
|
||||
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch to the next tab"; }
|
||||
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch ttab"; }
|
||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
|
||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; }
|
||||
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
|
||||
# Tasks
|
||||
{ on = "w"; run = "tasks_show"; desc = "Show task manager"; }
|
||||
{ on = "w"; run = "tasks:show"; desc = "Show Task View"; }
|
||||
];
|
||||
tasks.keymap = [
|
||||
# Task
|
||||
{ on = "w"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "q"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
|
||||
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
|
||||
{ on = "j"; run = "arrow -1"; desc = "Up in list"; }
|
||||
{ on = "k"; run = "arrow 1"; desc = "Down in list"; }
|
||||
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
||||
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
||||
{ on = "w"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "q"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
|
||||
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
|
||||
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
|
||||
{ on = "j"; run = "arrow -1"; desc = "Up in list"; }
|
||||
{ on = "k"; run = "arrow 1"; desc = "Down in list"; }
|
||||
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
||||
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
||||
];
|
||||
help = [
|
||||
help.keymap = [
|
||||
# Help
|
||||
{ on = "~"; run = "help"; desc = "Open help"; }
|
||||
{ on = "?"; run = "help"; desc = "Open help"; }
|
||||
{ on = "~"; run = "help"; desc = "Open help"; }
|
||||
{ on = "?"; run = "help"; desc = "Open help"; }
|
||||
{ on = "<F1>"; run = "help"; desc = "Open help"; }
|
||||
];
|
||||
};
|
||||
settings = {
|
||||
manager = {
|
||||
mgr = {
|
||||
layout = [2 3 4];
|
||||
sort_by = "natural";
|
||||
sort_sensitive = true;
|
||||
@@ -193,10 +194,11 @@
|
||||
opener = {
|
||||
"edit" = [
|
||||
{ run = ''hx "$@"''; desc = "helix"; block = true; }
|
||||
{ run = ''codium "$@"''; desc = "helix"; orphan = true; }
|
||||
{ run = ''codium "$@"''; desc = "code"; orphan = true; }
|
||||
];
|
||||
"play" = [
|
||||
{ run = ''mpv "$@"''; }
|
||||
{ run = ''mpv "$@"''; desc = "mpv"; orphan = true; }
|
||||
{ run = ''mpv --vf=negate "$@"''; desc = "mpv inverted"; orphan = true; }
|
||||
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; }
|
||||
];
|
||||
"archive" = [
|
||||
@@ -205,38 +207,38 @@
|
||||
{ run = ''unzip "$1"''; desc = "unzip"; }
|
||||
];
|
||||
"image" = [
|
||||
{ run = ''imv "$@"''; desc = "imv"; }
|
||||
{ run = ''gimp "$@"''; desc = "gimp"; }
|
||||
{ run = ''imv "$@"''; desc = "imv"; orphan = true; }
|
||||
{ run = ''gimp "$@"''; desc = "gimp"; orphan = true; }
|
||||
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; }
|
||||
{ run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; }
|
||||
{ run = ''for f in "$@"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
|
||||
];
|
||||
"svg" = [
|
||||
{ run = ''inkscape "$@"''; desc = "inkscape";}
|
||||
{ run = ''firefox "$@"''; desc = "firefox";}
|
||||
{ run = ''inkscape "$@"''; desc = "inkscape"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||
];
|
||||
"font" = [
|
||||
{ run = ''fontpreview "$@"''; desc = "fontpreview"; }
|
||||
{ run = ''fontforge "$@"''; desc = "fortforge"; }
|
||||
{ run = ''fontpreview "$@"''; desc = "fontpreview"; orphan = true; }
|
||||
{ run = ''fontforge "$@"''; desc = "fortforge"; orphan = true; }
|
||||
];
|
||||
"document" = [
|
||||
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
|
||||
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; }
|
||||
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
|
||||
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
|
||||
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
|
||||
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
|
||||
];
|
||||
"browser" = [
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; }
|
||||
{ run = ''zen "$@"''; desc = "zen"; }
|
||||
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; }
|
||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||
{ run = ''zen "$@"''; desc = "zen"; orphan = true; }
|
||||
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; orphan = true; }
|
||||
{ run = ''w3m "$@"''; desc = "w3m"; }
|
||||
{ run = ''lynx "$@"''; desc = "lynx"; }
|
||||
];
|
||||
"office" = [
|
||||
{ run = ''libreoffice "$@"''; desc = "libreoffice"; }
|
||||
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; }
|
||||
{ run = ''libreoffice "$@"''; desc = "libreoffice"; orphan = true; }
|
||||
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; orphan = true; }
|
||||
];
|
||||
"shell" = [
|
||||
{ run = ''bash -c "$@"''; desc = "bash -c"; }
|
||||
@@ -255,6 +257,7 @@
|
||||
{ mime = "text/htm"; use = [ "edit" "browser" ]; }
|
||||
{ mime = "text/x-python"; use = "python"; }
|
||||
{ mime = "text/*"; use = "edit"; }
|
||||
{ mime = "text"; use = "edit"; }
|
||||
|
||||
{ mine = "inode/x-empty"; use = "edit"; }
|
||||
{ mine = "inode/directory"; use = "edit"; }
|
||||
@@ -266,6 +269,7 @@
|
||||
{ mime = "audio/*"; use = "play"; }
|
||||
|
||||
{ mime = "application/x-httpd-php"; use = [ "edit" "browser" ]; }
|
||||
{ mime = "application/javascript"; use = "edit"; }
|
||||
{ mime = "application/json"; use = "edit"; }
|
||||
{ mime = "application/ld+json"; use = "edit"; }
|
||||
{ mime = "application/pdf"; use = "document"; }
|
||||
@@ -289,7 +293,7 @@
|
||||
];
|
||||
};
|
||||
theme = with rice.color; {
|
||||
manager = {
|
||||
mgr = {
|
||||
cwd = { fg = foreground; bg = background; };
|
||||
hovered = { fg = background; bg = accent.base; };
|
||||
preview_hovered = { underline = false; };
|
||||
@@ -304,6 +308,12 @@
|
||||
border_symbol = "│";
|
||||
border_style = { fg = border; };
|
||||
};
|
||||
tabs = {
|
||||
active = { fg = secondary.dark; bg = secondary.base; };
|
||||
inactive = { fg = secondary.base; bg = secondary.dark; };
|
||||
# sep_inner =
|
||||
# sep_outer =
|
||||
};
|
||||
status = {
|
||||
separator_open = " "; #"";
|
||||
separator_close = " "; #"";
|
||||
@@ -371,5 +381,56 @@
|
||||
];
|
||||
};
|
||||
};
|
||||
} // (if nox-var then {
|
||||
shellWrapperName = "ya";
|
||||
initLua = /* lua */ ''
|
||||
require("zoxide"):setup {
|
||||
update_db = true,
|
||||
}
|
||||
Status:children_add(function()
|
||||
local h = cx.active.current.hovered
|
||||
if not h or ya.target_family() ~= "unix" then
|
||||
return ""
|
||||
end
|
||||
|
||||
return ui.Line {
|
||||
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
||||
":",
|
||||
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
||||
" ",
|
||||
}
|
||||
end, 500, Status.RIGHT)
|
||||
'';
|
||||
plugins = with pkgs; {
|
||||
inherit glow git;
|
||||
};
|
||||
} else {});
|
||||
|
||||
xdg = {
|
||||
configFile."xdg-desktop-portal-termfilechooser/config" = {
|
||||
force = true;
|
||||
text = ''
|
||||
[filechooser]
|
||||
cmd=${tfc}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
|
||||
default_dir=$HOME
|
||||
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||
open_mode=suggested
|
||||
save_mode=last
|
||||
'';
|
||||
};
|
||||
portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
||||
extraPortals = [ tfc ] ++ (with pkgs; [
|
||||
xdg-desktop-portal-hyprland
|
||||
xdg-desktop-portal
|
||||
xdg-desktop-portal-gnome
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-hyprland
|
||||
xdg-desktop-portal-wlr
|
||||
]);
|
||||
};
|
||||
};
|
||||
home.sessionVariables."GTK_USE_PORTAL" = "1";
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
completion-fg = foreground;
|
||||
completion-highlight-bg = background;
|
||||
completion-highlight-fg = accent.base;
|
||||
default-bg = "rgba(${f background},${t})";
|
||||
default-bg = "rgba(${f accent.dark},${t})";
|
||||
default-fg = foreground;
|
||||
highlight-active-color = "rgba(${f accent.base},0.5)";
|
||||
highlight-color = "rgba(${f secondary.base},0.5)";
|
||||
|
||||
136
home.nix
136
home.nix
@@ -1,18 +1,19 @@
|
||||
{ pkgs, pkgs-unstable, lib, host, user, inputs, ... }:
|
||||
{
|
||||
{ pkgs, ... }@all: with all; {
|
||||
imports = [
|
||||
./home-modules/auto-mount.nix
|
||||
./home-modules/bar.nix
|
||||
./home-modules/bash.nix
|
||||
./home-modules/bitwarden.nix
|
||||
./home-modules/calendar.nix
|
||||
./home-modules/chatterino.nix
|
||||
./home-modules/clipboard.nix
|
||||
./home-modules/color-pallete.nix
|
||||
./home-modules/direnv.nix
|
||||
./home-modules/discord.nix
|
||||
./home-modules/email.nix
|
||||
./home-modules/firefox.nix
|
||||
./home-modules/figlet.nix
|
||||
./home-modules/firefox/firefox.nix
|
||||
./home-modules/fish.nix
|
||||
# ./home-modules/foot.nix
|
||||
./home-modules/games.nix
|
||||
./home-modules/gestures.nix
|
||||
./home-modules/ghostty.nix
|
||||
@@ -27,144 +28,49 @@
|
||||
./home-modules/latex.nix
|
||||
./home-modules/mako.nix
|
||||
# ./home-modules/matrix.nix
|
||||
# ./home-modules/nm.nix
|
||||
./home-modules/mpv.nix
|
||||
./home-modules/nh.nix
|
||||
./home-modules/nixd.nix
|
||||
./home-modules/nvidia.nix
|
||||
./home-modules/nxgs.nix
|
||||
# ./home-modules/nx-gcal-event.nix
|
||||
./home-modules/obs.nix
|
||||
./home-modules/office.nix
|
||||
./home-modules/ollama.nix
|
||||
./home-modules/opencode.nix
|
||||
./home-modules/pandoc.nix
|
||||
./home-modules/pkgs-list/desktop.nix
|
||||
./home-modules/pkgs-list/programs.nix
|
||||
./home-modules/pkgs-list/shell.nix
|
||||
./home-modules/pnx.nix
|
||||
./home-modules/programming/c.nix
|
||||
./home-modules/programming/gleam.nix
|
||||
./home-modules/programming/go.nix
|
||||
./home-modules/programming/java.nix
|
||||
./home-modules/programming/js.nix
|
||||
./home-modules/programming/python.nix
|
||||
./home-modules/programming.nix
|
||||
./home-modules/qt.nix
|
||||
./home-modules/rclone.nix
|
||||
./home-modules/rofi.nix
|
||||
./home-modules/scanning.nix
|
||||
./home-modules/sent.nix
|
||||
./home-modules/sops.nix
|
||||
./home-modules/spotify.nix
|
||||
./home-modules/ssh.nix
|
||||
./home-modules/starship.nix
|
||||
./home-modules/tts.nix
|
||||
./home-modules/typst.nix
|
||||
./home-modules/vale.nix
|
||||
./home-modules/virt-manager.nix
|
||||
./home-modules/vscode.nix
|
||||
./home-modules/wallpaper-to-colors.nix
|
||||
./home-modules/waybar.nix
|
||||
./home-modules/wlogout.nix
|
||||
./home-modules/xdg.nix
|
||||
./home-modules/yazi.nix
|
||||
./home-modules/zathura.nix
|
||||
./home-modules/zoxide.nix
|
||||
] ++ (if (host == "NxACE") then [
|
||||
] ++ (if (hyper.host == "NxACE") then [
|
||||
./home-modules/nx2site.nix
|
||||
./home-modules/nx2site-backup.nix
|
||||
./home-modules/calendar-campuszeit-fix.nix
|
||||
] else []);
|
||||
home.username = user;
|
||||
home.homeDirectory = "/home/${user}";
|
||||
home.stateVersion = "24.05";
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
brightnessctl
|
||||
browsh
|
||||
chromium
|
||||
cmake
|
||||
dig
|
||||
du-dust
|
||||
exiftool
|
||||
eza
|
||||
ffmpeg
|
||||
figlet
|
||||
fontpreview
|
||||
fzf
|
||||
glib
|
||||
glow
|
||||
gnumake
|
||||
gsettings-desktop-schemas
|
||||
imagemagick
|
||||
imv
|
||||
jq
|
||||
lolcat
|
||||
lynx
|
||||
mediainfo
|
||||
mpv
|
||||
neofetch
|
||||
pavucontrol
|
||||
pdfgrep
|
||||
piper-tts
|
||||
pipes
|
||||
playerctl
|
||||
pv
|
||||
qbittorrent
|
||||
reflex
|
||||
ripgrep
|
||||
screen
|
||||
speedtest-go
|
||||
spicetify-cli
|
||||
sssnake
|
||||
swww
|
||||
tldr
|
||||
w3m
|
||||
wev
|
||||
wl-clipboard
|
||||
xclip
|
||||
xfce.thunar
|
||||
xournal
|
||||
yt-dlp
|
||||
|
||||
inputs.zen-browser.packages."${system}".default
|
||||
|
||||
] ++ (with pkgs-unstable; [
|
||||
obsidian
|
||||
firefox
|
||||
spotify
|
||||
]) ++ (if host != "NxACE" then (with pkgs; [
|
||||
signal-desktop
|
||||
zoom-us
|
||||
inkscape
|
||||
]) else (with pkgs-unstable; [
|
||||
|
||||
]));
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
configHome = /home/${user}/.config;
|
||||
cacheHome = /home/${user}/.cache;
|
||||
dataHome = /home/${user}/.local/share;
|
||||
stateHome = /home/${user}/.local/state;
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications =
|
||||
let
|
||||
browser = "firefox.desktop";
|
||||
in
|
||||
{
|
||||
"default-web-browser" = [ browser ];
|
||||
"text/html" = [ browser ];
|
||||
"text/htm" = [ browser ];
|
||||
"x-scheme-handler/http" = [ browser ];
|
||||
"x-scheme-handler/https" = [ browser ];
|
||||
"x-scheme-handler/about" = [ browser ];
|
||||
"x-scheme-handler/unknown" = [ browser ];
|
||||
"x-scheme-handler/mailto" = "thunderbird.desktop";
|
||||
"image/png" = "imv.desktop";
|
||||
"image/jpg" = "imv.desktop";
|
||||
"image/jpeg" = "imv.desktop";
|
||||
"image/webp" = "imv.desktop";
|
||||
"image/gif" = "imv.desktop";
|
||||
"application/pdf" = "zathura.desktop";
|
||||
"inode/directory" = "thunar.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
# Wayland, X, etc. support for session vars
|
||||
# systemd.user.sessionVariables = home.sessionVariables;
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
home.username = hyper.user;
|
||||
home.homeDirectory = hyper.home;
|
||||
# home.homeDirectory = "/home/${hyper.user}";
|
||||
home.stateVersion = hyper.pkgs-version;
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
|
||||
32
nod.nix
Normal file
32
nod.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
environment = {
|
||||
packages = import ./system-modules/base-packages.nix pkgs;
|
||||
etcBackupExtension = ".bak";
|
||||
motd = "";
|
||||
};
|
||||
terminal = {
|
||||
font = rice.font.code.regular-path;
|
||||
};
|
||||
android-integration = {
|
||||
termux-setup-storage.enable = true;
|
||||
};
|
||||
system.stateVersion = pkgs.version;
|
||||
nix.extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
user ={
|
||||
shell = "${pkgs.fish}/bin/fish";
|
||||
# userName = pkgs.lib.mkForce hyper.user; if its read-only, whats the point of this option???
|
||||
};
|
||||
|
||||
|
||||
# Set your time zone
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
home-manager = {
|
||||
config = import ./shell-only.nix;
|
||||
useGlobalPkgs = true;
|
||||
backupFileExtension = "backup";
|
||||
extraSpecialArgs = { inherit (all) inputs hyper rice; };
|
||||
};
|
||||
}
|
||||
44
shell-only.nix
Normal file
44
shell-only.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
imports = [
|
||||
./home-modules/bash.nix
|
||||
./home-modules/color-pallete.nix
|
||||
./home-modules/direnv.nix
|
||||
./home-modules/fish.nix
|
||||
./home-modules/git.nix
|
||||
./home-modules/gpg.nix
|
||||
./home-modules/helix.nix
|
||||
./home-modules/latex.nix
|
||||
./home-modules/nh.nix
|
||||
./home-modules/nixd.nix
|
||||
./home-modules/nxgs.nix
|
||||
./home-modules/pandoc.nix
|
||||
# ./home-modules/programming/c.nix
|
||||
./home-modules/programming/gleam.nix
|
||||
./home-modules/programming/go.nix
|
||||
./home-modules/programming/java.nix
|
||||
./home-modules/programming/js.nix
|
||||
./home-modules/programming/python.nix
|
||||
# ./home-modules/sops.nix
|
||||
./home-modules/ssh.nix
|
||||
./home-modules/starship.nix
|
||||
./home-modules/vale.nix
|
||||
./home-modules/yazi.nix
|
||||
./home-modules/zoxide.nix
|
||||
|
||||
./home-modules/pkgs-list/shell.nix
|
||||
];
|
||||
home = {
|
||||
username = hyper.user;
|
||||
homeDirectory = hyper.home;
|
||||
stateVersion = pkgs.version;
|
||||
};
|
||||
xdg = {
|
||||
enable = true;
|
||||
configHome = "${hyper.home}/.config";
|
||||
cacheHome = "${hyper.home}/.cache";
|
||||
dataHome = "${hyper.home}/.local/share";
|
||||
stateHome = "${hyper.home}/.local/state";
|
||||
};
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
{ pkgs, host, lib, ... }:
|
||||
lib.mkIf (host != "NxACE")
|
||||
{ pkgs, ... }@all: with all;
|
||||
lib.mkIf (hyper.host != "NxACE")
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
adbfs-rootless
|
||||
|
||||
18
system-modules/base-packages.nix
Normal file
18
system-modules/base-packages.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
pkgs: with pkgs; [
|
||||
busybox
|
||||
# coreutils-full
|
||||
gitFull
|
||||
git-crypt
|
||||
|
||||
wget
|
||||
curlHTTP3
|
||||
zip
|
||||
unzip
|
||||
p7zip
|
||||
unar
|
||||
vim
|
||||
htop
|
||||
openssl
|
||||
dmidecode
|
||||
file
|
||||
]
|
||||
10
system-modules/bluetooth.nix
Normal file
10
system-modules/bluetooth.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }@all: with all; {
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
package = pkgs.bluez5-experimental;
|
||||
settings.Policy.AutoEnable = "true";
|
||||
settings.General.Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
}
|
||||
@@ -1,124 +1,70 @@
|
||||
{ config, pkgs, pkgs-unstable, lib, host, domain, inputs, ... }:
|
||||
let
|
||||
{ pkgs, ... }@all: with all; let
|
||||
grub-theme-ascii-diana = (pkgs.fetchFromGitea {
|
||||
domain = "git.${domain}";
|
||||
domain = "git.${hyper.domain}";
|
||||
owner = "nx2";
|
||||
repo = "grub-theme-ascii-diana";
|
||||
rev = "0.5.0";
|
||||
hash = "sha256-e+55NYsSsWY6GPbYUtdVEB9krueuCAWT3Ce/Ghops1g=";
|
||||
});
|
||||
in
|
||||
{
|
||||
imports = if host == "NxNORTH" then [
|
||||
device-boot = if hyper.host == "NxNORTH" then {
|
||||
kernelPackages = pkgs.linuxPackages_zen;
|
||||
kernelParams = [
|
||||
"fbcon=margin:1"
|
||||
"fbcon=nodefer"
|
||||
];
|
||||
lanzaboote = {
|
||||
enable = true;
|
||||
pkiBundle = "/var/lib/sbctl";
|
||||
};
|
||||
loader.systemd-boot = {
|
||||
enable = false; # let lanzaboote install systemd-boot
|
||||
consoleMode = "max";
|
||||
configurationLimit = 10;
|
||||
};
|
||||
} else if hyper.host == "NxXPS" then {
|
||||
kernelPackages = pkgs.linuxPackages;
|
||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||
kernelModules = [ "v4l2loopback" ];
|
||||
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 30;
|
||||
device = "nodev";
|
||||
# useOSProber = true;
|
||||
efiSupport = true;
|
||||
theme = grub-theme-ascii-diana;
|
||||
font = "${grub-theme-ascii-diana}/unicode.pf2";
|
||||
fontSize = 50;
|
||||
extraEntries = ''
|
||||
menuentry 'Windows 11' --class windows --class os $menuentry_id_option 'osprober-efi-0A97-7A2D' {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
search --no-floppy --fs-uuid --set=root 0A97-7A2D
|
||||
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
} else if hyper.host == "NxACE" then {
|
||||
kernelPackages = pkgs.linuxPackages_6_12;
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
devices = [];
|
||||
efiSupport = true;
|
||||
};
|
||||
};
|
||||
} else assert 1 == "Unknown host"; {};
|
||||
in {
|
||||
imports = if hyper.host == "NxNORTH" then [
|
||||
inputs.lanzaboote.nixosModules.lanzaboote
|
||||
] else [];
|
||||
config = if host == "NxNORTH" then {
|
||||
# I have to boot with secureboot becasue of the chinese spyware called Vanguard
|
||||
|
||||
environment.systemPackages = with pkgs; [ sbctl ];
|
||||
boot = {
|
||||
lanzaboote = let
|
||||
windows-efi-shell-fs-alias = "HD0a65535a2";
|
||||
in {
|
||||
enable = true;
|
||||
pkiBundle = "/etc/secureboot";
|
||||
package = lib.mkForce (pkgs.writeShellApplication {
|
||||
name = "lzbt";
|
||||
runtimeInputs = [
|
||||
inputs.lanzaboote.packages.x86_64-linux.tool
|
||||
pkgs.coreutils
|
||||
pkgs.sbctl
|
||||
];
|
||||
# https://forum.endeavouros.com/t/tutorial-add-a-systemd-boot-loader-menu-entry-for-a-windows-installation-using-a-separate-esp-partition/37431
|
||||
text = /*bash*/ ''
|
||||
# execute normal lanazboote functionality
|
||||
lzbt "$@"
|
||||
|
||||
# Create windows.nsh file
|
||||
ESP='${config.boot.loader.efi.efiSysMountPoint}'
|
||||
echo "${windows-efi-shell-fs-alias}:EFI\Microsoft\Boot\Bootmgfw.efi" > "$ESP/windows.nsh"
|
||||
|
||||
# cp efi-shell boot file
|
||||
# systemd-boot will automatically add an entry for it
|
||||
cp -f '${pkgs.edk2-uefi-shell.efi}' "$ESP/shellx64.efi"
|
||||
# should exist already
|
||||
mkdir -p "$ESP/loader/entries"
|
||||
# sign shell file
|
||||
sbctl sign -s "$ESP/shellx64.efi"
|
||||
# Create windows.conf boot entry
|
||||
cat << EOF > "$ESP/loader/entries/windows.conf"
|
||||
title Windows-Hack
|
||||
efi /shellx64.efi
|
||||
options -nointerrupt -noconsolein -noconsoleout windows.nsh
|
||||
EOF
|
||||
'';
|
||||
});
|
||||
};
|
||||
loader.systemd-boot = {
|
||||
enable = false; # let lanzaboote install systemd-boot
|
||||
consoleMode = "max";
|
||||
configurationLimit = 10;
|
||||
# extraEntries = {
|
||||
# "Windo7s-11.conf" = ''
|
||||
# Windows eleven
|
||||
# search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
# chainloader (''${root})/EFI/Microsoft/Boot/bootmgfw.efi
|
||||
# '';
|
||||
# "Firmware.conf" = ''
|
||||
# Firmware
|
||||
# fwsetup
|
||||
# '';
|
||||
# "Shutdown.conf" = ''
|
||||
# title Shutdown
|
||||
# halt
|
||||
# '';
|
||||
# };
|
||||
};
|
||||
kernelPackages = pkgs-unstable.linuxPackages_zen;
|
||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||
kernelModules = [ "v4l2loopback" ];
|
||||
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1'';
|
||||
};
|
||||
security.polkit.enable = true;
|
||||
} else if host == "NxXPS" then {
|
||||
boot = {
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 30;
|
||||
device = "nodev";
|
||||
# useOSProber = true;
|
||||
efiSupport = true;
|
||||
theme = grub-theme-ascii-diana;
|
||||
font = "${grub-theme-ascii-diana}/unicode.pf2";
|
||||
fontSize = 50;
|
||||
extraEntries = ''
|
||||
menuentry 'Windows 11' --class windows --class os $menuentry_id_option 'osprober-efi-0A97-7A2D' {
|
||||
insmod part_gpt
|
||||
insmod fat
|
||||
search --no-floppy --fs-uuid --set=root 0A97-7A2D
|
||||
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
kernelPackages = pkgs-unstable.linuxPackages_6_11;
|
||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||
kernelModules = [ "v4l2loopback" ];
|
||||
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
|
||||
};
|
||||
} else { # NxACE
|
||||
boot = {
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
efiSupport = true;
|
||||
};
|
||||
};
|
||||
kernelPackages = pkgs-unstable.linuxPackages_6_11;
|
||||
};
|
||||
config = {
|
||||
environment.systemPackages = with pkgs; lib.mkIf ( host == "NxNORTH" ) [ sbctl ];
|
||||
boot = { tmp.useTmpfs = false; } // device-boot;
|
||||
};
|
||||
}
|
||||
|
||||
11
system-modules/cache.nix
Normal file
11
system-modules/cache.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ ... }: {
|
||||
nix.settings = {
|
||||
substitute = true;
|
||||
substituters = [
|
||||
"https://yazi.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, ... }@all: with all;
|
||||
{
|
||||
systemd.timers."nx_cal_dicos" = {
|
||||
enable = true;
|
||||
wantedBy = [ "timers.target" ];
|
||||
timerConfig = {
|
||||
OnBootSec = "40m";
|
||||
OnUnitActiveSec = "24h";
|
||||
OnUnitActiveSec = "12h";
|
||||
Unit = "nx_cal_dicos.service";
|
||||
};
|
||||
};
|
||||
@@ -13,11 +13,11 @@
|
||||
systemd.services."nx_cal_dicos" = {
|
||||
script = let
|
||||
nx_cal_dicos = (pkgs.writers.writePython3Bin "nx_cal_dicos" {
|
||||
libraries = with pkgs.python3Packages; [
|
||||
ics
|
||||
];
|
||||
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||
} /*python */ ''
|
||||
libraries = with pkgs.python3Packages; [
|
||||
ics
|
||||
];
|
||||
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||
} /* python */ ''
|
||||
import os
|
||||
from glob import glob
|
||||
from ics import Calendar
|
||||
@@ -26,9 +26,9 @@ from ics.event import datetime
|
||||
NETTO_STUNDE = 18.46
|
||||
WEEKLY = 12
|
||||
|
||||
week_dict = {}
|
||||
latest_week = 0
|
||||
latest_goal = WEEKLY
|
||||
# week_dict = {}
|
||||
# latest_week = 0
|
||||
# latest_goal = WEEKLY
|
||||
deficit = 0
|
||||
|
||||
def fraction_to_unicode(frac):
|
||||
@@ -51,36 +51,44 @@ def fraction_to_unicode(frac):
|
||||
|
||||
def modify_event(event):
|
||||
"""Modify the event if it contains 'DICOS' in the SUMMARY."""
|
||||
global week_dict
|
||||
global latest_goal
|
||||
global latest_week
|
||||
global deficit
|
||||
# global week_dict
|
||||
# global latest_goal
|
||||
# global latest_week
|
||||
# global deficit
|
||||
|
||||
if event.name and "DICOS" in event.name:
|
||||
if event.name is not None and "DICOS" in event.name:
|
||||
length = (event.end - event.begin).seconds / 3600
|
||||
money_made = divmod(length * NETTO_STUNDE, 1)
|
||||
|
||||
# Calculate total hours for DICOS events in the same week
|
||||
year, week, _ = event.begin.isocalendar()
|
||||
|
||||
if week != latest_week:
|
||||
try:
|
||||
deficit = latest_goal - week_dict[f"{year}_{latest_week}"]
|
||||
except KeyError:
|
||||
deficit = 0
|
||||
# if week != latest_week:
|
||||
# try:
|
||||
# deficit = latest_goal - week_dict[f"{year}_{latest_week}"]
|
||||
# except KeyError:
|
||||
# deficit = 0
|
||||
|
||||
week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0)
|
||||
# week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0)
|
||||
|
||||
progress = week_dict[f"{year}_{week}"]
|
||||
goal = WEEKLY + deficit
|
||||
# progress = week_dict[f"{year}_{week}"]
|
||||
# goal = WEEKLY + deficit
|
||||
|
||||
if week != latest_week:
|
||||
latest_goal = goal
|
||||
latest_week = week
|
||||
# if week != latest_week:
|
||||
# latest_goal = goal
|
||||
# latest_week = week
|
||||
|
||||
progress_line = f"({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})"
|
||||
try:
|
||||
new_description = [event.description.split("\n")[0]]
|
||||
except AttributeError:
|
||||
new_description = ["::"]
|
||||
new_description.append("")
|
||||
new_description.append(f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€")
|
||||
# new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})")
|
||||
# new_description.append(f"You're {fraction_to_unicode(abs(deficit))}h in the {'plus' if deficit < 0 else 'minus'} this week.")
|
||||
|
||||
event.description = "\n".join(new_description)
|
||||
|
||||
event.description = f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€\nThis weeks porgress: {progress_line}\nThis weeks deficit: {fraction_to_unicode(deficit)}"
|
||||
event.name = f"DICOS {fraction_to_unicode(length)}"
|
||||
return event
|
||||
|
||||
@@ -92,7 +100,7 @@ def process_ics_file(filepath):
|
||||
modified = False
|
||||
|
||||
for event in calendar.events:
|
||||
if 'DICOS' in event.name:
|
||||
if event.name is not None and 'DICOS' in event.name:
|
||||
event = modify_event(event)
|
||||
modified = True
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user