From 1b530779aa1ac5de08725f1d1274c416f03fe47b Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Wed, 16 Jul 2025 09:37:17 +0000 Subject: [PATCH 01/34] only hits inline dignostics helix --- home-modules/helix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-modules/helix.nix b/home-modules/helix.nix index 06656a3..61b6f62 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -184,7 +184,7 @@ supersend-menu = false; }; inline-diagnostics = { - cursor-line = "hint"; + cursor-line = "warning"; other-lines = "disable"; prefix-len = 1; # max-wrap = set above From 1ee84d5dd86bc0cf2f5dc00156abb9e313c1c480 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Wed, 16 Jul 2025 09:37:22 +0000 Subject: [PATCH 02/34] dos2unix --- home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home.nix b/home.nix index f971c86..db99921 100644 --- a/home.nix +++ b/home.nix @@ -88,6 +88,7 @@ gsettings-desktop-schemas imagemagick imv + dos2unix jq lolcat lynx From f3b953e87bf09a6b9dc584106ce7ffbd5a5c9ad0 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Wed, 16 Jul 2025 09:37:35 +0000 Subject: [PATCH 03/34] cache yazi on wsl --- nixos-wsl.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/nixos-wsl.nix b/nixos-wsl.nix index c4f003d..1790eac 100644 --- a/nixos-wsl.nix +++ b/nixos-wsl.nix @@ -18,5 +18,18 @@ defaultUser = hyper.user; enable = true; }; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix = { + settings = { + experimental-features = [ "nix-command" "flakes" ]; + substitute = true; + substituters = [ + "https://yazi.cachix.org" + ]; + trusted-public-keys = [ + "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" + ]; + }; + }; + + nixpkgs.hostPlatform = hyper.system; } From 17bd864d5c9991c043186c985bb7a10b6f85aa1b Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 19 Jul 2025 21:28:26 +0200 Subject: [PATCH 04/34] opencode --- home-modules/opencode.nix | 30 ++++++++++++++++++++++++++++++ home-modules/pkgs-list/shell.nix | 1 + home.nix | 1 + 3 files changed, 32 insertions(+) create mode 100644 home-modules/opencode.nix diff --git a/home-modules/opencode.nix b/home-modules/opencode.nix new file mode 100644 index 0000000..2d1655e --- /dev/null +++ b/home-modules/opencode.nix @@ -0,0 +1,30 @@ +{ pkgs, ... }@all: with all; { + home = { + packages = with pkgs; [ + unstable.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 = { + apiKey = "KEY"; + disabled = false; + npm = "@ai-sdk/openai-compatible"; + options = { + baseURL = "http://localhost:11434/v1"; + }; + models = { + "${model}" = { + tools = true; + }; + }; + }; + }; + }; + }; +} + diff --git a/home-modules/pkgs-list/shell.nix b/home-modules/pkgs-list/shell.nix index 2e3bb5b..6bcd6b9 100644 --- a/home-modules/pkgs-list/shell.nix +++ b/home-modules/pkgs-list/shell.nix @@ -10,6 +10,7 @@ ffmpeg figlet fzf + gh glib glow gnumake diff --git a/home.nix b/home.nix index 4bd499d..18bdf01 100644 --- a/home.nix +++ b/home.nix @@ -34,6 +34,7 @@ ./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 From 000d37ebedd39ecb838eb8806551b5ad9ef3d198 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 19 Jul 2025 21:28:37 +0200 Subject: [PATCH 05/34] flake bump --- flake.lock | 112 ++++++++++++++++++++++++++--------------------------- home.nix | 3 +- 2 files changed, 57 insertions(+), 58 deletions(-) diff --git a/flake.lock b/flake.lock index afde90a..eba3c62 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1750372185, - "narHash": "sha256-lVBKxd9dsZOH1fA6kSE5WNnt8e+09fN+NL/Q3BjTWHY=", + "lastModified": 1751740947, + "narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "7cef49d261cbbe537e8cb662485e76d29ac4cbca", + "rev": "dfc1db15a08c4cd234288f66e1199c653495301f", "type": "github" }, "original": { @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1749154018, - "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=", + "lastModified": 1752544374, + "narHash": "sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus=", "owner": "nix-community", "repo": "home-manager", - "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111", + "rev": "2e00ed310c218127e02ffcf28ddd4e0f669fde3e", "type": "github" }, "original": { @@ -245,11 +245,11 @@ ] }, "locked": { - "lastModified": 1750371717, - "narHash": "sha256-cNP+bVq8m5x2Rl6MTjwfQLCdwbVmKvTH7yqVc1SpiJM=", + "lastModified": 1751808145, + "narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "15c6f8f3a567fec9a0f732cd310a7ff456deef88", + "rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f", "type": "github" }, "original": { @@ -274,11 +274,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1750589353, - "narHash": "sha256-ESfhPjQ6E/JUdFknr+HTHqZU5ZcwlTODemMTxApg1D0=", + "lastModified": 1752611080, + "narHash": "sha256-KSilz1CULyQlhEYIuGuEqSO9tbMxSsSAHEEWZxvF6jg=", "ref": "refs/heads/main", - "rev": "dd33128c2f127f39c30cca72addb1970b8936d07", - "revCount": 6213, + "rev": "8453fbf4eb0af2e3265fd34a693b7d0e9167f4d2", + "revCount": 6276, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -306,11 +306,11 @@ ] }, "locked": { - "lastModified": 1750503578, - "narHash": "sha256-/qnR7/GvGP1cGtOOm4OGJRtkVejn75/jsvJpiqE1ZDk=", + "lastModified": 1752254688, + "narHash": "sha256-XJJ+frO4NOxVkoSGc1Mag8ESumzx2FmVRspOgFlMqF8=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "8b4405ab46cafc471d5b09ff7258676dc9aaca59", + "rev": "d723e5b153b7990d36e62a425bda3768c41dd9eb", "type": "github" }, "original": { @@ -449,11 +449,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1747531250, - "narHash": "sha256-uDhXNURTJgQSpiaCgzqAizbblpcEWEB1WGWEqtCnLLM=", + "lastModified": 1751272032, + "narHash": "sha256-493llKN7yyLkKlz8uYVAyvXH261IpDzuVA+TnewFIAg=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "511d399120bdcafb43e57ca5ff35167c2bba6db8", + "rev": "847a770436e1ecebdbe5ed006a93db7666937ff2", "type": "github" }, "original": { @@ -474,11 +474,11 @@ ] }, "locked": { - "lastModified": 1750371096, - "narHash": "sha256-JB1IeJ41y7kWc/dPGV6RMcCUM0Xj2NEK26A2Ap7EM9c=", + "lastModified": 1751888065, + "narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "38f3a211657ce82a1123bf19402199b67a410f08", + "rev": "a8229739cf36d159001cfc203871917b83fdf917", "type": "github" }, "original": { @@ -499,11 +499,11 @@ ] }, "locked": { - "lastModified": 1750371869, - "narHash": "sha256-lGk4gLjgZQ/rndUkzmPYcgbHr8gKU5u71vyrjnwfpB4=", + "lastModified": 1751881472, + "narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "aa38edd6e3e277ae6a97ea83a69261a5c3aab9fd", + "rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120", "type": "github" }, "original": { @@ -542,11 +542,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1749574455, - "narHash": "sha256-fm2/8KPOYvvIAnNVtjDlTt/My00lIbZQ+LMrfQIWVzs=", + "lastModified": 1752199438, + "narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=", "owner": "nix-community", "repo": "NixOS-WSL", - "rev": "917af390377c573932d84b5e31dd9f2c1b5c0f09", + "rev": "d34d9412556d3a896e294534ccd25f53b6822e80", "type": "github" }, "original": { @@ -558,11 +558,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750365781, - "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "type": "github" }, "original": { @@ -574,11 +574,11 @@ }, "nixpkgs-latest": { "locked": { - "lastModified": 1750591067, - "narHash": "sha256-E1cW8nG5JceZnbgd8mVAvIEa/PQpAEN7/FknHNUQBn0=", + "lastModified": 1752614774, + "narHash": "sha256-HD5CuswJyMHtnu3qfy+ZXL31UiUv1He/P3PkcCFKsGE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "38e5187aeea047f16faa4f03a110c69e353b8396", + "rev": "bcf19e8298233816810cefc84c95b1616c531ade", "type": "github" }, "original": { @@ -606,11 +606,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1750365781, - "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", + "lastModified": 1752480373, + "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", + "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", "type": "github" }, "original": { @@ -637,27 +637,27 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1749173751, - "narHash": "sha256-ENY3y3v6S9ZmLDDLI3LUT8MXmfXg/fSt2eA4GCnMVCE=", + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ed29f002b6d6e5e7e32590deb065c34a31dc3e91", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.11", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_4": { "locked": { - "lastModified": 1750400657, - "narHash": "sha256-3vkjFnxCOP6vm5Pm13wC/Zy6/VYgei/I/2DWgW4RFeA=", + "lastModified": 1752436162, + "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b2485d56967598da068b5a6946dadda8bfcbcd37", + "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", "type": "github" }, "original": { @@ -692,11 +692,11 @@ ] }, "locked": { - "lastModified": 1749636823, - "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "623c56286de5a3193aa38891a6991b28f9bab056", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -796,11 +796,11 @@ ] }, "locked": { - "lastModified": 1750119275, - "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", + "lastModified": 1752544651, + "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", + "rev": "2c8def626f54708a9c38a5861866660395bb3461", "type": "github" }, "original": { @@ -882,11 +882,11 @@ ] }, "locked": { - "lastModified": 1750372504, - "narHash": "sha256-VBeZb1oqZM1cqCAZnFz/WyYhO8aF/ImagI7WWg/Z3Og=", + "lastModified": 1751300244, + "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "400308fc4f9d12e0a93e483c2e7a649e12af1a92", + "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a", "type": "github" }, "original": { @@ -902,11 +902,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1750515839, - "narHash": "sha256-I3FdBExb2eaLVD76Vkl9TFy/snKrE+od0x6vtTMcqXc=", + "lastModified": 1752505691, + "narHash": "sha256-kc52obJrTpkXIjT/r0f4Be78gy0QqbrzX7sTyrETirk=", "owner": "sxyazi", "repo": "yazi", - "rev": "3a9591a3d9d8f4c9fb990274e967bdef89177d14", + "rev": "60a2382087f2327e4e48f662b71a862886a06423", "type": "github" }, "original": { diff --git a/home.nix b/home.nix index 18bdf01..766daa0 100644 --- a/home.nix +++ b/home.nix @@ -10,8 +10,8 @@ ./home-modules/direnv.nix ./home-modules/discord.nix ./home-modules/email.nix - ./home-modules/firefox.nix ./home-modules/figlet.nix + ./home-modules/firefox.nix ./home-modules/fish.nix ./home-modules/games.nix ./home-modules/gestures.nix @@ -39,7 +39,6 @@ ./home-modules/pkgs-list/desktop.nix ./home-modules/pkgs-list/programs.nix ./home-modules/pkgs-list/shell.nix - ./home-modules/pkgs-list/fonts.nix ./home-modules/pnx.nix ./home-modules/programming/c.nix ./home-modules/programming/gleam.nix From 66f543b96636371c4e1ed19a36d9795be444773c Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 19 Jul 2025 21:28:44 +0200 Subject: [PATCH 06/34] pastel --- home-modules/pkgs-list/shell.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-modules/pkgs-list/shell.nix b/home-modules/pkgs-list/shell.nix index 6bcd6b9..90a8f6b 100644 --- a/home-modules/pkgs-list/shell.nix +++ b/home-modules/pkgs-list/shell.nix @@ -22,6 +22,7 @@ mediainfo mpv neofetch + pastel pdfgrep pipes pv From c64ade92b7cda5135389a3ff8ca43b863d3a4e24 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:05:45 +0200 Subject: [PATCH 07/34] chatterino token --- git-crypt/secrets.nix | Bin 3490 -> 3490 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/git-crypt/secrets.nix b/git-crypt/secrets.nix index f3566385b815465f0a0a481dabbc9ef12ca3a20a..d5fa26728ba957023af352b21af41d75b3458d16 100644 GIT binary patch literal 3490 zcmZQ@_Y83kiVO&0=vi=b@`{?1_j_+#ShQ0ya?|FRd%ubvZme@}?^!9sfAR%Om+_BR zyx-37v)DIY)p>8moLx5Ud&lX$F&_lHcc&=y6pIA)|M=@J-+d>ht|I*Dx(yqpJ8k;5 zn*5#_!kf`GUH4k>k+j8I?r>aWU*GkO+gtgq}BG7@g^(NcDpEp)Xt6n%cEqRaO;m@AMr*1slqs#5!W6}1v z>EL$}&ZmKU5|^6hI3#zW6!zwEfQvvB$o)eSN1-}aYU>6M;}Q|U@vvCyqlN}zgf$A#VY zzxuDfJTgVg=;UYCGu5Rtw=2AInpLq?`oD9-TQ31s9=*OZSM_i8pR_sf_~Utn6)f#L zy^N18-7H{WB=z&UtGe>()MKK%`g%o7(qAes{Cz>ySNPwbq${2MvjjuC&d%DZDa14* zK7dnJ;DWuahKsdEp__MDOtrSJxm&Hujr&rM_2MVGtA|+&B_Hy8a8r*(H1Fl}(>Dxt zSVYbnUvAZSxL~euSDmiRo<)aK{l&Nv1w%z5C)yvYPI9_AHR{m>BbFb=D=**m5tdL? z@z~r@lJ(SJV&W+o=Qjmc6;cHc__dZl;(p3LN5=lED2ECY@1Y|zFBBNM1=!iYb2ZZ! z+HE!Ws*&>d-5UkUA1D=_?APMD`I~RXBl%*jSSN>P3(RC^*gg^3mKn(8o@>+T7e04> z>bo^*U*t|J$)A+@^YidxGmoqmS+7@Sk*{X`JtZ6~=Ks#C)!HVbV&N69ilm1t8bju{^7lKgYci5z&|I>c zdAg{XncVyS;Rgimf z;=Pq%^S85;&a%C*&RsIS>D7mizquC79y?9+QzFF0{vy7rmtk+QD>ngios@-CCC z(QBCTqBkk*%ch3Sw-)4h&GC;9vtbQ6rN8!{Y{Hz&HT&PLx^w<0@6$!6)er8o;C6hm z#YaB#vVst6xt-l&4z3PO3oTcHe_I;nnanR#TpU?v=~uzGb!y%66URPB-}CGJ*2&2UN19GP>3FC6%-h~}-6O&O zWmPw|zvMTmdHeH`*Oa4|Yxce>WKUP(Vc)3azs@gvJKNsV_l*92b}P|8U%b_8lIXFS zNlBVM-(Re>3pvN8o4hLfsQ#Sdq!7;8#iFYt{VUwAesQ?{aoL$k#_LZyUzdtt-!QH8 zwtfi1`+FOj7c70T*Cc1^noU>C%jV{V&2d?O>#?uWSw@+84nHJw@7HhMwol>^PM+Cuv~~KPU9Gz#IctL+-~VtB0qfog+PJGvg|5;5g z>pH);ZmmDqlJO>)OD#z_EvUYF=GR5}(o73aEce?hwrRJ%!K(m?Lsznj8Q7Xnt@!QS zbb897*Om>OQ!gBz=cvWzYjNz0_l=LMrEHoqg-R{y(N-r5ie)&$W*0blRtKV`qS;ng9%gAzOL z&9h;ca{u?=owt?#Oz_z3tKX;jBweIv%f6~h$L-($lk`pBlVv(Eo$s-v`Nah3@@klMggb^ySoHXF9c@$oxg;8@DF$2J<8N88`lVy$JkV z@5GVv?ns03vtIK*{0>?-)PG(wa}9GlVY@w0^7C4iTNkt6K5C9S8KJH$;_&aI{qG%# z9G4FCywv2r`o(06)m_%`_gZo>QgSnXq8r`|ED{owIE%{mk4w4mEVIbhxdrSrKTXK3(u-;HqH-xjtsw4q$y(a}>@J5PM6=u(dZ zAJQ9npXeD~`MdJ#Vdhsh@AYDCZk({M;@QkCH-1Lm6`1u>CdR5%`(oCiriMx8b1g0& zlTG9oZI^l5v_`1UJ7&+qKW%;O`q3>b7}s#8&$}dR-JACK(7!|Ftm-;?b^JT`N9}xe ztK(Lj&Yc~PnRRxQSFPLEl^g!f>(~Co+eb`)Jhjrlr8HIfuBG=Co~*-utIB03zW*=z z{<93vR}_1Agr(_MCP`KiFNsX%?GOw{Vng=StyzKCq_3nIy2qaP~})_ z9FynVUkd^^UNW(d6V+;OUb<&(Mx^O?HodkTUuPT&3rkm*U-swUiDOnKtm@~M zku0$i6RwDD4+@>ted1%*jhAl}E^_HhK3X$zUxVOj%{@sU#B;v=jLb2=9sexY?#<2h z-0~k%>{>Ff3g^$=>L3-`J+GufrR(mZAJLzlzI=SgMsi11*WVjm$;!`*Gv;qld=#>;VQt-<1JHJ(nC>&hbiZne?vHce!tV?a66N1+G=a$ZM8Zwg+W1`*7@v z4!+j$V#BTEBYImF`l!4!D7eaJH|dBIzjyGoY5Y3{(_Z`xo2uf?{NhQ@We2Aki}fu= zskeXj2u@B?YgV}vCU5j7Dd^X8?`)pQOk$j}KQk8@zke^u;=BK46zB71wudYlff_tE zCO;iwI~nh@EN+ooI;ZH9gN1&c+H7rA@LWL>4uczm)==xxx>*V>{|9S_9_@{q)i+)Fj1zvTYIqRB$vQp5q8-{$#m*z1P znyOXy6>I7>iiEH>y{Ref>RQ`d;Kh}YsZgeUwap{&#UqbL{wrq(OML(Oc5&OTjT3J- zOmhkkwfXRIcArvCMwzvv&-0sCdbj>isK3q7p#Ad7xlYZ+VeVJ2C{LX7by{`xy|+>s z-r1Iii|X$`-=7m4%*&y$Ab8IAjY=*vet(^Ep?sry+0LcG-`>kV6x^7zB5UuuoRjx6 zp85-ZbJq+#$F!H_MY}+yjs6``=KnK!)2tH?ukB=V&w9tPDZTy3NsU?Y&nuj^$NpK` zryaDnb8gAzE!x_mA5F{I{(g_U_Bu1#Ek!YN*M<3I)4nct+*(og;B}SZxd#^Y2RPpK zZnz;fz2$C1`L;=$R~9@fd@syT0Yw)g&6 z{OFY4iph-+xZW9xo9pcPb?a;Q6viv_uc+_%F{kP`w@L5Mw5jiQtlg?*J%3V=_Y%_? zKIYgsuX?t@ zjSjz8hc&heJQd(cwpz-#WZ{>oq4HJ|%zRa+9L0C8xvz4MXTirM^+vyit##FlysMjJ uC$7)A8z*4$J9Njo=slY@Kel}PBEe-!a+KMum5o<^*T?Zp(`&R0z5oF4xW&c* literal 3490 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 Date: Sun, 20 Jul 2025 01:06:22 +0200 Subject: [PATCH 08/34] less systemwide python pkgs --- home-modules/programming/python.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/home-modules/programming/python.nix b/home-modules/programming/python.nix index 0254d79..f3a2867 100644 --- a/home-modules/programming/python.nix +++ b/home-modules/programming/python.nix @@ -3,9 +3,7 @@ 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 ]); From 2ecb7486bb59d3750436d52d16e51a19f83f630d Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:06:27 +0200 Subject: [PATCH 09/34] no msi --- home-modules/calendar.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/home-modules/calendar.nix b/home-modules/calendar.nix index c39131d..0ae3cd7 100644 --- a/home-modules/calendar.nix +++ b/home-modules/calendar.nix @@ -47,13 +47,6 @@ read-only = true; type = "ics"; } - { - name = "MSI"; - url = "https://zlypher.github.io/lol-events/cal/league-of-legends-mid-invitational.ical"; - color = "#dd6000"; - read-only = true; - type = "ics"; - } { name = "Feiertage Hessen"; url = "https://ics.tools/Feiertage/hessen.ics"; From dd3b850221544470303af538837bb03bb68517e3 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:07:26 +0200 Subject: [PATCH 10/34] vesktop --- home-modules/discord.nix | 380 +++++++++++++++++++------------------- home-modules/hyprland.nix | 4 +- 2 files changed, 192 insertions(+), 192 deletions(-) diff --git a/home-modules/discord.nix b/home-modules/discord.nix index a7a98b9..b102221 100644 --- a/home-modules/discord.nix +++ b/home-modules/discord.nix @@ -3,198 +3,198 @@ lib.mkIf (hyper.host != "NxACE") { home = { packages = with pkgs; [ - # vesktop - discord + 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} + } + } + ''; }; } diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index 3dd6023..76fec0f 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -427,8 +427,8 @@ in { "SUPER, A, execr, waybar_mode set '๏  ๓ฐน‘ '" "SUPER, A, submap, scrL" "SUPER, S, exec, spotify" - # "SUPER, D, exec, vesktop --disable-gpu-compositing" - "SUPER, D, exec, discord" + "SUPER, D, exec, vesktop" + # "SUPER, D, exec, discord" "SUPER, F, fullscreen" # "SUPER, G," "SUPER, H, movefocus, l" From da268cd46a31307b27a4cc0cd540e11e34e21480 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:08:57 +0200 Subject: [PATCH 11/34] yazi file picker --- home-modules/firefox.nix | 3 +++ home-modules/hyprland.nix | 16 ++++++-------- home-modules/yazi.nix | 46 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 10 deletions(-) diff --git a/home-modules/firefox.nix b/home-modules/firefox.nix index bfe0ca2..d72b9d0 100644 --- a/home-modules/firefox.nix +++ b/home-modules/firefox.nix @@ -2,6 +2,9 @@ # 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 diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index 76fec0f..19e49d3 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -63,23 +63,16 @@ let }; }; in { - home.packages = (with pkgs; [ - # hyprland itself is a system package + home.packages = with pkgs; [ hyprland-protocols hyprlock hypridle hyprshot hyprpicker hyprcursor - grim slurp - - # ]) ++ (with pkgs-unstable; [ - - # ]) ++ (with inputs; [ - # hyprswitch.packages.x86_64-linux.default - ]); + ]; wayland.windowManager.hyprland = { @@ -324,6 +317,11 @@ in { "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)$" ]; diff --git a/home-modules/yazi.nix b/home-modules/yazi.nix index ffd8872..5afc36f 100644 --- a/home-modules/yazi.nix +++ b/home-modules/yazi.nix @@ -10,7 +10,27 @@ package = inputs.yazi.packages.${hyper.system}.default; enableFishIntegration = true; shellWrapperName = "ya"; - # plugins = with inputs.yazi-plugins.packages.${hyper.system}; { }; + 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; + }; # initLua = /* lua */ '' ''; keymap = { mgr.keymap = [ @@ -69,6 +89,8 @@ { on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; } { on = ""; run = "open"; desc = "Open selected files"; } { on = ""; 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 "; } @@ -373,4 +395,26 @@ }; }; }; + xdg = { + configFile."xdg-desktop-portal-termfilechooser/config".text = lib.mkIf config.programs.yazi.enable '' + [filechooser] + cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + env=TERMCMD=ghostty --title="terminal-file-picker -e" + default_dir=$HOME + open_mode=suggested + save_mode=last + ''; + portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-termfilechooser ]; + config = { + common = { + "org.freedesktop.impl.portal.FileChooser" = "termfilechooser"; + }; + }; + }; + }; + home.sessionVariables = { + GTK_USE_PORTAL = "1"; + }; } From 9368c387dc19d91158632fb483d47662cecfebd6 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:09:06 +0200 Subject: [PATCH 12/34] typst --- home-modules/typst.nix | 8 ++++++++ home.nix | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 home-modules/typst.nix diff --git a/home-modules/typst.nix b/home-modules/typst.nix new file mode 100644 index 0000000..dd13a65 --- /dev/null +++ b/home-modules/typst.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }@all: with all; +lib.mkIf (hyper.host != "NxACE") +{ + home.packages = with pkgs; [ + typst + tinymist + ]; +} diff --git a/home.nix b/home.nix index a4f9eb1..c02ce6e 100644 --- a/home.nix +++ b/home.nix @@ -10,8 +10,8 @@ ./home-modules/direnv.nix ./home-modules/discord.nix ./home-modules/email.nix - ./home-modules/firefox.nix ./home-modules/figlet.nix + ./home-modules/firefox.nix ./home-modules/fish.nix ./home-modules/games.nix ./home-modules/gestures.nix @@ -53,6 +53,7 @@ ./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 From cf66ef2ea988f6d588641395f207a832ff66f194 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:09:36 +0200 Subject: [PATCH 13/34] monitors --- home-modules/hyprland.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index 19e49d3..a4f5f13 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -33,15 +33,18 @@ let }; north = { main = { - name = "DP-1"; + # name = "DP-1"; + name = "desc:Iiyama North America PL3270Q na"; # name = "DP-4"; + # name = "DP-3"; resolution = "2560x1440"; position = "1920x150"; scale = "1.0"; }; left = { # name = "HDMI-A-2"; - name = "HDMI-A-1"; + name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; + # name = "HDMI-A-1"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; From 872082819b08cc5812ee0cf8b1d5b039dc586006 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sun, 20 Jul 2025 01:09:47 +0200 Subject: [PATCH 14/34] enable caldav_event --- home-modules/waybar.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home-modules/waybar.nix b/home-modules/waybar.nix index 6b95b1d..23f2427 100644 --- a/home-modules/waybar.nix +++ b/home-modules/waybar.nix @@ -99,7 +99,7 @@ def get_ongoing_or_next_event(url, username, password): } for calendar in calendars: - for event in calendar.events(): + for event in calendar.search(start=now): calendar_parsed = Calendar(event.data) for ics_event in calendar_parsed.events: event_dict = {} @@ -189,7 +189,7 @@ if __name__ == "__main__": ]; modules-right = [ "custom/mode" - # "custom/caldav_event" + "custom/caldav_event" "custom/cclock" "tray" ]; From 9cb47d96d909443ebef422c6f8337da38a6584b8 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Mon, 21 Jul 2025 00:02:28 +0200 Subject: [PATCH 15/34] move python to python --- home-modules/helix.nix | 3 --- home-modules/programming/python.nix | 6 +++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/home-modules/helix.nix b/home-modules/helix.nix index 9bec5bc..e5950f4 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -7,10 +7,7 @@ # nixd # specified in nixd.nix gopls delve - python311Packages.python-lsp-server jdt-language-server - ruff - pyright lldb # debugger for llvm stuff yaml-language-server # yaml marksman # markdown diff --git a/home-modules/programming/python.nix b/home-modules/programming/python.nix index f3a2867..0fd3677 100644 --- a/home-modules/programming/python.nix +++ b/home-modules/programming/python.nix @@ -10,7 +10,11 @@ in { packages = [ python-with-packages - ]; + ] ++ (with pkgs; [ + python311Packages.python-lsp-server + ruff + pyright + ]); sessionVariables = { PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}"; }; From 31ef18fc34a57422625d2cd97044be4306c72310 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Mon, 21 Jul 2025 00:02:36 +0200 Subject: [PATCH 16/34] opencode latest --- home-modules/opencode.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-modules/opencode.nix b/home-modules/opencode.nix index 2d1655e..3a57c32 100644 --- a/home-modules/opencode.nix +++ b/home-modules/opencode.nix @@ -1,7 +1,7 @@ { pkgs, ... }@all: with all; { home = { packages = with pkgs; [ - unstable.opencode + latest.opencode ]; file.".config/opencode/opencode.json".text = let model = "qwen2.5-coder:7b"; From 35ad7c04e9738d00a1463a72abaebdfeb147d6c3 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Mon, 21 Jul 2025 00:03:17 +0200 Subject: [PATCH 17/34] caldav_event fix --- home-modules/waybar.nix | 76 ++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/home-modules/waybar.nix b/home-modules/waybar.nix index 23f2427..506b082 100644 --- a/home-modules/waybar.nix +++ b/home-modules/waybar.nix @@ -4,8 +4,8 @@ in { sops.secrets = { "nx2site/radicale/password" = { }; }; - home.packages = with pkgs; [ - (writeShellApplication { name = "waybar_mode"; text = /*bash*/ '' + home.packages = [ + (pkgs.writeShellApplication { name = "waybar_mode"; text = /*bash*/ '' print_help() { echo "Usage: waybar_mode {set |unset}" } @@ -36,7 +36,7 @@ in { esac exit 0 '';}) - (writeShellApplication { name = "cclock"; text = /*bash*/ '' + (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')" @@ -44,9 +44,9 @@ in { echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')" fi '';}) - (writers.writePython3Bin "caldav_event" { + (pkgs.writers.writePython3Bin "caldav_event" { libraries = with pkgs.python3Packages; [ caldav ics pytz ]; - flakeIgnore = [ "E302" "E305""E501" "E261" ]; + flakeIgnore = [ "E302" "E305" "E501" "E261" ]; } /* python */ '' import os import json @@ -81,7 +81,7 @@ def load_cache(cache_file): def save_cache(cache_file, data): with open(cache_file, "w") as file: - json.dump(data, file, default=datetime_converter) + json.dump(data, file, default=datetime_converter, indent=4) def get_ongoing_or_next_event(url, username, password): @@ -117,44 +117,50 @@ def get_ongoing_or_next_event(url, username, password): print(f"Error accessing {url}: {e}") return None +def is_expired(event_dict: dict): + now = datetime.now(timezone.utc).timestamp() + event_start = event_dict['event_begin'].timestamp() + event_end = event_dict['event_end'].timestamp() + return not (event_start <= now <= event_end) + if __name__ == "__main__": - password_file = "/home/nx2/.config/sops-nix/secrets/nx2site/radicale/password" # Path to password file + 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 = "${hyper.user}" + username = "nx2" password = get_password(password_file) - - event_dict = load_cache(cache_file) now = datetime.now(timezone.utc).timestamp() - if event_dict is None or event_dict['event_begin'].timestamp() <= now and now < event_dict['event_end'].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) - if event_dict is None: - print("No upcoming events found.") - exit(0) - cache_data = { - "event_name": event_dict['event_name'] if event_dict is not None else None, - "event_begin": event_dict['event_begin'] if event_dict is not None else None, - "event_end": event_dict['event_end'] if event_dict is not None else None - } - save_cache(cache_file, cache_data) + save_cache(cache_file, event_dict) - if event_dict: - event_start = event_dict['event_begin'].timestamp() - event_end = event_dict['event_end'].timestamp() + if event_dict is None: # none were found + print("* zen *") + exit(0) - if event_start <= now <= event_end: - time_remaining = event_end - now - hours, rem = divmod(int(time_remaining), 3600) - minutes, _ = divmod(rem, 60) - print(f"{event_dict['event_name']} ends in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}") - else: - time_until_start = event_start - now - hours, rem = divmod(int(time_until_start), 3600) - minutes, _ = divmod(rem, 60) - print(f"{event_dict['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.") + 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 ' '}and " 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" + else: + time_string = "in " + hour_string + minu_string + + print(f"{event_dict['event_name']} {action_string} {time_string}") '') ]; From bb773f0dee415c27798b844483efad19d243beb9 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Mon, 21 Jul 2025 00:03:36 +0200 Subject: [PATCH 18/34] flake bump --- flake.lock | 98 +++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/flake.lock b/flake.lock index eba3c62..264d59c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1751740947, - "narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=", + "lastModified": 1752743471, + "narHash": "sha256-4izhj1j7J4mE8LgljCXSIUDculqOsxxhdoC81VhqizM=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "dfc1db15a08c4cd234288f66e1199c653495301f", + "rev": "e31b575d19e7cf8a8f4398e2f9cffe27a1332506", "type": "github" }, "original": { @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1752544374, - "narHash": "sha256-ReX0NG6nIAEtQQjLqeu1vUU2jjZuMlpymNtb4VQYeus=", + "lastModified": 1752780124, + "narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=", "owner": "nix-community", "repo": "home-manager", - "rev": "2e00ed310c218127e02ffcf28ddd4e0f669fde3e", + "rev": "c718918222bdb104397762dea67e6b397a7927fe", "type": "github" }, "original": { @@ -245,11 +245,11 @@ ] }, "locked": { - "lastModified": 1751808145, - "narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=", + "lastModified": 1752149140, + "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f", + "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", "type": "github" }, "original": { @@ -274,11 +274,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1752611080, - "narHash": "sha256-KSilz1CULyQlhEYIuGuEqSO9tbMxSsSAHEEWZxvF6jg=", + "lastModified": 1753033360, + "narHash": "sha256-iIiD0KTmJSxo66VvwpL8YbQA/SvGc8DasSfdXOCRXQc=", "ref": "refs/heads/main", - "rev": "8453fbf4eb0af2e3265fd34a693b7d0e9167f4d2", - "revCount": 6276, + "rev": "462729d8655a3a37ba19fe254d8ecb6677963563", + "revCount": 6302, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -306,11 +306,11 @@ ] }, "locked": { - "lastModified": 1752254688, - "narHash": "sha256-XJJ+frO4NOxVkoSGc1Mag8ESumzx2FmVRspOgFlMqF8=", + "lastModified": 1753028264, + "narHash": "sha256-GbfsRZWW5uBAOeddLkmrYV2XmAbI0etVUTBXFH5thcw=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "d723e5b153b7990d36e62a425bda3768c41dd9eb", + "rev": "14f9a444793d6dd78c29033acf9c3c974ded708d", "type": "github" }, "original": { @@ -449,11 +449,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1751272032, - "narHash": "sha256-493llKN7yyLkKlz8uYVAyvXH261IpDzuVA+TnewFIAg=", + "lastModified": 1752663231, + "narHash": "sha256-rTItuAWpzICMREF8Ww8cK4hYgNMRXJ4wjkN0akLlaWE=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "847a770436e1ecebdbe5ed006a93db7666937ff2", + "rev": "0a82e3724f929de8ad8fb04d2b7fa128493f24f7", "type": "github" }, "original": { @@ -474,11 +474,11 @@ ] }, "locked": { - "lastModified": 1751888065, - "narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=", + "lastModified": 1752252310, + "narHash": "sha256-06i1pIh6wb+sDeDmWlzuPwIdaFMxLlj1J9I5B9XqSeo=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "a8229739cf36d159001cfc203871917b83fdf917", + "rev": "bcabcbada90ed2aacb435dc09b91001819a6dc82", "type": "github" }, "original": { @@ -499,11 +499,11 @@ ] }, "locked": { - "lastModified": 1751881472, - "narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=", + "lastModified": 1751897909, + "narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120", + "rev": "fcca0c61f988a9d092cbb33e906775014c61579d", "type": "github" }, "original": { @@ -542,11 +542,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1752199438, - "narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=", + "lastModified": 1752682362, + "narHash": "sha256-ZNIpqCG/CfhmV+TgIeyO/XbhDjSWpwWokHM44j0Mn0w=", "owner": "nix-community", "repo": "NixOS-WSL", - "rev": "d34d9412556d3a896e294534ccd25f53b6822e80", + "rev": "20001f9bf0aaf2b1c307e43a5eec8cf8f800fe14", "type": "github" }, "original": { @@ -558,11 +558,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751792365, - "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", + "lastModified": 1752687322, + "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", + "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", "type": "github" }, "original": { @@ -574,11 +574,11 @@ }, "nixpkgs-latest": { "locked": { - "lastModified": 1752614774, - "narHash": "sha256-HD5CuswJyMHtnu3qfy+ZXL31UiUv1He/P3PkcCFKsGE=", + "lastModified": 1753047113, + "narHash": "sha256-3/8rVDPoYDxi69Ea+m3plWS4d5hdQw3TSWkT8Px/SYQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bcf19e8298233816810cefc84c95b1616c531ade", + "rev": "728cf36ba13356f600ed0dd57cfec21dc9db9c40", "type": "github" }, "original": { @@ -606,11 +606,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1752480373, - "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", + "lastModified": 1752950548, + "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", + "rev": "c87b95e25065c028d31a94f06a62927d18763fdf", "type": "github" }, "original": { @@ -653,11 +653,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1752436162, - "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", + "lastModified": 1752866191, + "narHash": "sha256-NV4S2Lf2hYmZQ3Qf4t/YyyBaJNuxLPyjzvDma0zPp/M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", + "rev": "f01fe91b0108a7aff99c99f2e9abbc45db0adc2a", "type": "github" }, "original": { @@ -668,11 +668,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1747312588, - "narHash": "sha256-MmJvj6mlWzeRwKGLcwmZpKaOPZ5nJb/6al5CXqJsgjo=", + "lastModified": 1752596105, + "narHash": "sha256-lFNVsu/mHLq3q11MuGkMhUUoSXEdQjCHvpReaGP1S2k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b1bebd0fe266bbd1820019612ead889e96a8fa2d", + "rev": "dab3a6e781554f965bde3def0aa2fda4eb8f1708", "type": "github" }, "original": { @@ -776,11 +776,11 @@ ] }, "locked": { - "lastModified": 1747363019, - "narHash": "sha256-N4dwkRBmpOosa4gfFkFf/LTD8oOcNkAyvZ07JvRDEf0=", + "lastModified": 1752633862, + "narHash": "sha256-Bj7ozT1+5P7NmvDcuAXJvj56txcXuAhk3Vd9FdWFQzk=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "0e624f2b1972a34be1a9b35290ed18ea4b419b6f", + "rev": "8668ca94858206ac3db0860a9dec471de0d995f8", "type": "github" }, "original": { @@ -902,11 +902,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1752505691, - "narHash": "sha256-kc52obJrTpkXIjT/r0f4Be78gy0QqbrzX7sTyrETirk=", + "lastModified": 1752991917, + "narHash": "sha256-6lPpUv6Iqb29ir7g1ImWk8MzSEzhyEbHw0k0z6AMQG8=", "owner": "sxyazi", "repo": "yazi", - "rev": "60a2382087f2327e4e48f662b71a862886a06423", + "rev": "74bd98031e04b0455f83bed8b7970967a3ec9a1e", "type": "github" }, "original": { From 4ef43805ae7b6ec267237b2be5a617a8fc1a912b Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:49:10 +0200 Subject: [PATCH 19/34] rice font cleanup --- flake-modules/rice.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/flake-modules/rice.nix b/flake-modules/rice.nix index ebecd75..0503d59 100644 --- a/flake-modules/rice.nix +++ b/flake-modules/rice.nix @@ -43,14 +43,12 @@ pkgs: rec { code = { name = "JetBrainsMono Nerd Font"; package = pkgs.nerd-fonts.jetbrains-mono; - # name = "CascadiaCove-NF"; - # package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; }); }; base = { # name = "NewComputerModern08"; # package = pkgs.newcomputermodern; name = "Atkinson Hyperlegible"; - package = pkgs.atkinson-hyperlegible; + package = pkgs.atkinson-hyperlegible-next; }; }; cursor = { From 167f3936dce785d1e62e44b52154019afb9c395f Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:49:24 +0200 Subject: [PATCH 20/34] chatterino++ --- home-modules/chatterino.nix | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/home-modules/chatterino.nix b/home-modules/chatterino.nix index 7a01b1c..ecdc68b 100644 --- a/home-modules/chatterino.nix +++ b/home-modules/chatterino.nix @@ -7,6 +7,9 @@ let # "Caedrel" # "EintrachtSpandau" "GamesDoneQuick" + "Odoamne" + "iwdominate" + "imls" "gdolphn" "GRONKH" "handofblood" @@ -74,18 +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 }, + "tabStyle": "compact", "tabVisibility": 0, "theme": { "name": "nxtheme.json" } }, "behaviour": { + "autocopletion": { + "ShowUsernameCompeltionMenu": false, + "userCompletinOnlyWithAt": true + }, "pauseOnHoverDuration": 5.0, "showJoins": false, "usernameRightClickBehavior": 0, @@ -100,13 +112,13 @@ in { { "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": "#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 } }, "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" ], + "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" }, @@ -127,6 +139,7 @@ in { "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" }, @@ -169,14 +182,15 @@ in { "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 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": { + "askOnTabVisibilityToggle": false, "currentVersion": "2.5.3", "lockNotebookLayout": false }, From b6b6115b4ef2fa07138a28556bc191b09ba4d5d4 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:49:39 +0200 Subject: [PATCH 21/34] vesktop, no conf --- home-modules/discord.nix | 376 +++++++++++++++++++-------------------- 1 file changed, 188 insertions(+), 188 deletions(-) diff --git a/home-modules/discord.nix b/home-modules/discord.nix index b102221..22b66b0 100644 --- a/home-modules/discord.nix +++ b/home-modules/discord.nix @@ -7,194 +7,194 @@ lib.mkIf (hyper.host != "NxACE") # 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} + # } + # } + # ''; }; } From baa8a436928657970003a1f1dfd6f8b633798143 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:49:48 +0200 Subject: [PATCH 22/34] no hsmw email --- home-modules/email.nix | 62 +++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/home-modules/email.nix b/home-modules/email.nix index edc8737..a5e2b71 100644 --- a/home-modules/email.nix +++ b/home-modules/email.nix @@ -137,37 +137,37 @@ lib.mkIf (hyper.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; From f67d54c66bc437422a07652950992b0a7570d398 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:49:56 +0200 Subject: [PATCH 23/34] no chatgpt css --- home-modules/firefox.nix | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/home-modules/firefox.nix b/home-modules/firefox.nix index d72b9d0..4b89bd2 100644 --- a/home-modules/firefox.nix +++ b/home-modules/firefox.nix @@ -249,17 +249,17 @@ } } - @-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; - } - } ''; + # @-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; + # } + # } }; }; } From 395c676fc67b4c7776e2982be5dc6fb4604ed25a Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:50:06 +0200 Subject: [PATCH 24/34] github ssh redirect --- home-modules/git.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-modules/git.nix b/home-modules/git.nix index 1f96907..eda9977 100644 --- a/home-modules/git.nix +++ b/home-modules/git.nix @@ -25,6 +25,7 @@ "https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxWSL") "Test"; }; url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/"; + url."ssh://git@github.com/".insteadOf = "https://github.com/"; pull.rebase = false; # true }; }; From 0821124f4f11747eb41acf4b34a6ff6a38cb364e Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:50:19 +0200 Subject: [PATCH 25/34] helix typo fix --- home-modules/helix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-modules/helix.nix b/home-modules/helix.nix index e5950f4..a7fbd30 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -178,7 +178,7 @@ }; smart-tab = { enable = false; - supersend-menu = false; + supersede-menu = false; }; inline-diagnostics = { cursor-line = "warning"; From dee4b516b0dbeb87e48f89491927408df2d69169 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:50:39 +0200 Subject: [PATCH 26/34] xps named monitors --- home-modules/hyprland.nix | 65 ++++++--------------------------------- 1 file changed, 9 insertions(+), 56 deletions(-) diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index a4f5f13..2d3e3a8 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -4,65 +4,18 @@ let transparency = builtins.toString rice.transparency; terminal = "ghostty"; terminal-exec = "ghostty --command="; - monitors = let - docked = false; - in { + monitors = { xps = { - main = if docked then { - name = "DP-5"; - resolution = "1920x1080"; - position = "1920x0"; - scale = "1.0"; - } else { - name = "eDP-1"; - resolution = "1920x1200"; - position = "0x1080"; - scale = "1.0"; - }; - second = if docked then { - name = "DP-6"; - resolution = "1920x1080"; - position = "0x0"; - scale = "1.0"; - } else { - name = "DP-3"; - resolution = "1920x1080"; - position = "0x0"; - scale = "1.0"; - }; + main = { name = "eDP-1"; resolution = "1920x1200"; position = "0x1080"; scale = "1.0"; }; + second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; }; }; north = { - main = { - # name = "DP-1"; - name = "desc:Iiyama North America PL3270Q na"; - # name = "DP-4"; - # name = "DP-3"; - resolution = "2560x1440"; - position = "1920x150"; - scale = "1.0"; - }; - left = { - # name = "HDMI-A-2"; - name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; - # name = "HDMI-A-1"; - resolution = "1920x1080"; - position = "0x0"; - scale = "1.0"; - }; - # right = { - # name = "HDMI-A-2"; - # resolution = "1920x1080"; - # position = "4480x360"; - # scale = "1.0"; - # }; + main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x150"; 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"; - }; + main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; }; }; }; in { @@ -308,7 +261,7 @@ in { # "opacity ${transparency}, class:^(Element)$" "opacity ${transparency}, class:^(lutris)$" "opacity ${transparency}, class:^(neovide)$" - "opacity ${transparency}, class:^(obsidian)$" + # "opacity ${transparency}, class:^(obsidian)$" "opacity ${transparency}, class:^(vesktop)$" "opacity ${transparency}, class:^(VSCodium)$" "opacity ${transparency}, title:^(wlogout)$" @@ -725,7 +678,7 @@ in { valign = bottom } ''; - }; + }; } From 0340fbfacd8b3237646d15a15350c22bd7b88acc Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:50:46 +0200 Subject: [PATCH 27/34] mako config fix --- home-modules/mako.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/home-modules/mako.nix b/home-modules/mako.nix index f7eb6d0..8b6c35a 100644 --- a/home-modules/mako.nix +++ b/home-modules/mako.nix @@ -4,13 +4,13 @@ services.mako = with rice; { enable = true; settings = { - defaultTimeout = 10000; # in ms - backgroundColor = color.background; - textColor = color.foreground; - borderColor = color.border; - borderSize = border-width; + default-timeout = 5000; # in ms + background-color = color.background; + text-color = color.foreground; font = font.code.name; - borderRadius = rounding; + border-size = border-width; + border-radius = rounding; + border-color = color.border; anchor = "top-right"; margin = builtins.toString (gap-size * 2) ; }; From 42a4a2fe0e144272798cff9c125a5195da2bf8c9 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 15:51:39 +0200 Subject: [PATCH 28/34] caldav_event 0 minutes fix --- home-modules/waybar.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home-modules/waybar.nix b/home-modules/waybar.nix index 506b082..8c014df 100644 --- a/home-modules/waybar.nix +++ b/home-modules/waybar.nix @@ -153,12 +153,14 @@ if __name__ == "__main__": hours, rem = divmod(int(t), 3600) minutes, _ = divmod(rem, 60) - hour_string = f"{hours} hour{'s ' if hours != 1 else ' '}and " if hours > 0 else "" + 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" - else: + 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}") '') From f22ef9939c4b409ca06351217ee1d99dbb00bac6 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 16:07:35 +0200 Subject: [PATCH 29/34] fix xdg-deskop-portal-termfilechooser yazi-wrapper --- home-modules/yazi.nix | 71 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/home-modules/yazi.nix b/home-modules/yazi.nix index 5afc36f..74af1fa 100644 --- a/home-modules/yazi.nix +++ b/home-modules/yazi.nix @@ -50,8 +50,8 @@ { on = ""; run = "arrow 100%"; desc = "Move cursor down one page"; } { on = ""; run = "arrow -100%"; desc = "Move cursor up one page"; } { on = ""; run = "arrow 100%"; desc = "Move cursor down one page"; } - { on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; } - { on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; } + { 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"; }) @@ -65,6 +65,7 @@ { 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" "" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; } # Navigation @@ -396,17 +397,65 @@ }; }; xdg = { - configFile."xdg-desktop-portal-termfilechooser/config".text = lib.mkIf config.programs.yazi.enable '' - [filechooser] - cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh - env=TERMCMD=ghostty --title="terminal-file-picker -e" - default_dir=$HOME - open_mode=suggested - save_mode=last - ''; + # # https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser/pull/44 + configFile = let + wrapper = pkgs.writeShellApplication { name = "yazi-wrapper.sh"; text = /*bash*/ '' + set -ex + + multiple="$1" + directory="$2" + save="$3" + path="$4" + out="$5" + + cmd="yazi" + termcmd="''${TERMCMD:-kitty --title 'termfilechooser'}" + + if [ "$save" = "1" ]; then + # save a file + set -- --chooser-file="$out" "$path" + elif [ "$directory" = "1" ]; then + # upload files from a directory + set -- --chooser-file="$out" --cwd-file="$out" "$path" + elif [ "$multiple" = "1" ]; then + # upload multiple files + set -- --chooser-file="$out" "$path" + else + # upload only 1 file + set -- --chooser-file="$out" "$path" + fi + + command="$termcmd $cmd" + for arg in "$@"; do + # escape double quotes + escaped=$(printf "%s" "$arg" | sed -E 's/[\"\(\)\{\}\|]//g') + # escape spaces + command="$command \"$escaped\"" + done + + sh -c "$command" + '';}; + in { + "xdg-desktop-portal-termfilechooser/config".text = '' + [filechooser] + cmd=${wrapper}/bin/yazi-wrapper.sh + env=TERMCMD=ghostty --title="terminal-file-picker -e" + default_dir=$HOME + open_mode=suggested + save_mode=last + ''; + # "xdg-desktop-portal-termfilechooser/config".text = '' + # [filechooser] + # cmd=${pkgs.latest.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + # env=TERMCMD=ghostty --title="terminal-file-picker -e" + # default_dir=$HOME + # open_mode=suggested + # save_mode=last + # ''; + }; portal = { enable = true; - extraPortals = [ pkgs.xdg-desktop-portal-termfilechooser ]; + extraPortals = [ pkgs.latest.xdg-desktop-portal-termfilechooser ]; config = { common = { "org.freedesktop.impl.portal.FileChooser" = "termfilechooser"; From 647830080a38394cf5ad6885477b7d399b01f83a Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Tue, 29 Jul 2025 16:07:43 +0200 Subject: [PATCH 30/34] flake bump --- flake.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/flake.lock b/flake.lock index 264d59c..2ab3b71 100644 --- a/flake.lock +++ b/flake.lock @@ -186,11 +186,11 @@ ] }, "locked": { - "lastModified": 1752780124, - "narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=", + "lastModified": 1753592768, + "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", "owner": "nix-community", "repo": "home-manager", - "rev": "c718918222bdb104397762dea67e6b397a7927fe", + "rev": "fc3add429f21450359369af74c2375cb34a2d204", "type": "github" }, "original": { @@ -274,11 +274,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1753033360, - "narHash": "sha256-iIiD0KTmJSxo66VvwpL8YbQA/SvGc8DasSfdXOCRXQc=", + "lastModified": 1753634783, + "narHash": "sha256-Rl/voNjvcQH6E1vi4wNt5AY6CWaYkqfnkpm9GxrqKGg=", "ref": "refs/heads/main", - "rev": "462729d8655a3a37ba19fe254d8ecb6677963563", - "revCount": 6302, + "rev": "c63d0003a1e5155248695f19778f815a8ad34c67", + "revCount": 6317, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -449,11 +449,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1752663231, - "narHash": "sha256-rTItuAWpzICMREF8Ww8cK4hYgNMRXJ4wjkN0akLlaWE=", + "lastModified": 1753590784, + "narHash": "sha256-Q30DFlPwD1ZK52TD4wSnqDO5gk9Kvifr923siI8AdVQ=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "0a82e3724f929de8ad8fb04d2b7fa128493f24f7", + "rev": "a847f1d6a7326395d17fe9b6b4ab63a10eb152eb", "type": "github" }, "original": { @@ -542,11 +542,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1752682362, - "narHash": "sha256-ZNIpqCG/CfhmV+TgIeyO/XbhDjSWpwWokHM44j0Mn0w=", + "lastModified": 1753642709, + "narHash": "sha256-J/xPmOfKRX/4UtBIVa5qkKuwN6FrHQBmo5bIPmcPeck=", "owner": "nix-community", "repo": "NixOS-WSL", - "rev": "20001f9bf0aaf2b1c307e43a5eec8cf8f800fe14", + "rev": "e1e0999d45ba66d2d66ac061c27ce680814d14b1", "type": "github" }, "original": { @@ -574,11 +574,11 @@ }, "nixpkgs-latest": { "locked": { - "lastModified": 1753047113, - "narHash": "sha256-3/8rVDPoYDxi69Ea+m3plWS4d5hdQw3TSWkT8Px/SYQ=", + "lastModified": 1753644334, + "narHash": "sha256-b7OuvvF9XEe5ms/7Uaq3g4fkmbLhQeP2b+weAjnciXE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "728cf36ba13356f600ed0dd57cfec21dc9db9c40", + "rev": "6a56b14976d469a9f943400698244a4c1a4c1608", "type": "github" }, "original": { @@ -606,11 +606,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1752950548, - "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=", + "lastModified": 1753429684, + "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c87b95e25065c028d31a94f06a62927d18763fdf", + "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", "type": "github" }, "original": { @@ -653,11 +653,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1752866191, - "narHash": "sha256-NV4S2Lf2hYmZQ3Qf4t/YyyBaJNuxLPyjzvDma0zPp/M=", + "lastModified": 1753345091, + "narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f01fe91b0108a7aff99c99f2e9abbc45db0adc2a", + "rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", "type": "github" }, "original": { @@ -902,11 +902,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1752991917, - "narHash": "sha256-6lPpUv6Iqb29ir7g1ImWk8MzSEzhyEbHw0k0z6AMQG8=", + "lastModified": 1753610773, + "narHash": "sha256-M5SPkMK1ySSXEXEMJEcSgrHZlaBhIJeYMbFdO6q5IFc=", "owner": "sxyazi", "repo": "yazi", - "rev": "74bd98031e04b0455f83bed8b7970967a3ec9a1e", + "rev": "0e3cd8545c07e79d7cf1f58632c87cc14faa16d6", "type": "github" }, "original": { From a62a2113cae591a3c16c66f2af1a207b99b0bb2e Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Mon, 4 Aug 2025 17:53:25 +0200 Subject: [PATCH 31/34] nd --- home-modules/fish.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home-modules/fish.nix b/home-modules/fish.nix index 266c45c..afbf122 100644 --- a/home-modules/fish.nix +++ b/home-modules/fish.nix @@ -80,6 +80,7 @@ gsw = "git switch"; gft = "git fetch"; ns = "nix-shell"; + nd = "nix develop -c fish"; lzd = "lazydocker"; d = "docker"; dcmp = "docker compose"; @@ -101,6 +102,7 @@ rm -f -- "$tmp" end nxfetch + set -e SESSION_FROM_DE end ''; functions = { From 9d84b4bcf0ab9497d0642fceb9cab9f5279ce5f9 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Fri, 22 Aug 2025 14:32:18 +0200 Subject: [PATCH 32/34] streamlink oauth --- git-crypt/secrets.nix | Bin 3490 -> 3552 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/git-crypt/secrets.nix b/git-crypt/secrets.nix index d5fa26728ba957023af352b21af41d75b3458d16..ef17bb3b8f964d0e4ffafb641be5905a32ba7a7e 100644 GIT binary patch literal 3552 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 Ijs{g<0JXvEga7~l literal 3490 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 From 83af085bd6df8fef90f268ae377a7a9b6e0ebfef Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Fri, 22 Aug 2025 14:33:11 +0200 Subject: [PATCH 33/34] streamlink --- home-modules/chatterino.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/home-modules/chatterino.nix b/home-modules/chatterino.nix index ecdc68b..e0a8915 100644 --- a/home-modules/chatterino.nix +++ b/home-modules/chatterino.nix @@ -207,7 +207,7 @@ in { "external": { "streamlink": { "quality": "", - "options": "--config ${hyper.home}/.config/streamlink/config" + "options": "--config ${hyper.home}.config/streamlink/config" } } } @@ -329,10 +329,9 @@ in { ] } ''; - ".config/streamlink/config".text = '' - twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})' + ".config/streamlink/config".text = /* ini */ '' + twitch-api-header=Authorization=OAuth ${secrets.streamlink.twitch-oauth} player=mpv - player-args='--no-terminal' twitch-low-latency default-stream=best ''; From de8e26e6e3fe51d08245471282ef04577ea75905 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Fri, 22 Aug 2025 14:34:00 +0200 Subject: [PATCH 34/34] hyprbar --- home-modules/bar.nix | 807 ++++++++++++++++++++++ home-modules/hyprland.nix | 54 +- home-modules/mako.nix | 4 +- home-modules/waybar.nix | 379 ---------- home.nix | 2 +- sops-secrets.yaml | 6 +- system-modules/hardware-configuration.nix | 2 + system-modules/health_reminder.nix | 10 +- 8 files changed, 849 insertions(+), 415 deletions(-) create mode 100644 home-modules/bar.nix delete mode 100644 home-modules/waybar.nix diff --git a/home-modules/bar.nix b/home-modules/bar.nix new file mode 100644 index 0000000..f8632bd --- /dev/null +++ b/home-modules/bar.nix @@ -0,0 +1,807 @@ +{ pkgs, hyper, ... }@all: with all; let + sep = " "; +in { + sops.secrets = { + "nx2site/radicale/password" = { }; + }; + home.packages = [ + (pkgs.writeShellApplication { name = "submap_indicator"; text = /*bash*/ '' + print_help() { + echo "Usage: submap_indicator {set |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 + '';}) + (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 + '';}) + + (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}") +'') + ]; + 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}); } + ''; + }; + 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" + "battery" + # "bluetooth" + "network" + "windowtitle" + ]; + "middle" = [ "workspaces" ]; + "right" = [ + "submap" + "custom/caldav_event" + "media" + "custom/cclock" + "notifications" + "systray" + ]; + }; + }; + + "bar.bluetooth.label" = true; + + "bar.customModules.submap.enabledIcon" = "[๓ฐงน]"; + "bar.customModules.submap.showSubmapName" = false; + "bar.customModules.submap.label" = false; + "bar.customModules.submap.icon" = true; + "bar.customModules.submap.disabledIcon" = ""; + + "bar.workspaces.applicationIconOncePerWorkspace" = false; + "bar.workspaces.numbered_active_indicator" = "underline"; + "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_text_color" = accent.base; + "theme.bar.buttons.workspaces.numbered_active_highlight_padding" = "0.2em"; + "theme.bar.buttons.workspaces.numbered_active_underline_color" = accent.bright; + "theme.bar.buttons.workspaces.numbered_inactive_padding" = "0.2em"; + "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.dark; + "theme.bar.menus.menu.notifications.pager.label" = accent.base; + "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" = accent.base; + "theme.notification.close_button.background" = accent.dark; + "theme.notification.close_button.label" = accent.base; + "theme.notification.label" = accent.base; + "theme.notification.labelicon" = accent.base; + "theme.notification.opacity" = 1.0; + "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; + }; + }; + }; +} diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index 2d3e3a8..d123118 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -217,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" @@ -283,6 +282,11 @@ in { 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" @@ -303,13 +307,13 @@ in { "SUPER SHIFT, F1, movetoworkspace, 100" # "SUPER, F2," # "SUPER, F3, toggleopaque" - "SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'Cleared Saved Event!' ''" - "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" @@ -355,7 +359,7 @@ in { "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, R, exec, rofi -show drun" @@ -378,7 +382,7 @@ 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" @@ -397,7 +401,7 @@ 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 " @@ -416,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, , " @@ -436,7 +440,7 @@ in { ########################################################################### ## MEGA KEYS: - ", Print, execr, waybar_mode set '๓ฐ„€ '" + ", Print, execr, submap_indicator set '๓ฐ„€ '" ", Print, submap, screenshot" # "SUPER, Next, resizeactive, 5% 5%" # binde @@ -520,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 ''; @@ -554,35 +558,35 @@ in { ${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}} ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}} ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}} - bind=,Z,exec,waybar_mode set '๏†œ ' + bind=,Z,exec,submap_indicator set '๏†œ ' bind=,Z,submap,tuda bind=,Z,submap,reset - bind=,Escape,exec,waybar_mode unset + 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 = "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, waybar_mode unset + bind = , Escape, execr, submap_indicator unset bind = , Escape, submap, reset submap = reset @@ -590,7 +594,7 @@ 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 @@ -598,7 +602,7 @@ in { ${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, waybar_mode unset + bind = , Escape, execr, submap_indicator unset bind = , Escape, submap, reset submap = reset diff --git a/home-modules/mako.nix b/home-modules/mako.nix index 8b6c35a..6ead07d 100644 --- a/home-modules/mako.nix +++ b/home-modules/mako.nix @@ -1,8 +1,8 @@ -{ pkgs, ... }@all: with all; +{ config, pkgs, ... }@all: with all; { home.packages = with pkgs; [ libnotify ]; services.mako = with rice; { - enable = true; + enable = if config.programs.hyprpanel.enable then false else true; settings = { default-timeout = 5000; # in ms background-color = color.background; diff --git a/home-modules/waybar.nix b/home-modules/waybar.nix deleted file mode 100644 index 8c014df..0000000 --- a/home-modules/waybar.nix +++ /dev/null @@ -1,379 +0,0 @@ -{ pkgs, hyper, ... }@all: with all; let - sep = " "; -in { - sops.secrets = { - "nx2site/radicale/password" = { }; - }; - home.packages = [ - (pkgs.writeShellApplication { name = "waybar_mode"; text = /*bash*/ '' - print_help() { - echo "Usage: waybar_mode {set |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 - '';}) - (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 - '';}) - (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_start = event_dict['event_begin'].timestamp() - event_end = event_dict['event_end'].timestamp() - return not (event_start <= 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}") -'') - ]; - - 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; - 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/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 { - font-family: ${rice.font.code.name}; - } - - #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-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}); - } - ''; - - #battery.critical:not(.charging) { - }; -} diff --git a/home.nix b/home.nix index f602ee6..708878c 100644 --- a/home.nix +++ b/home.nix @@ -1,6 +1,7 @@ { 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 @@ -59,7 +60,6 @@ ./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 diff --git a/sops-secrets.yaml b/sops-secrets.yaml index ea7232d..c170d09 100644 --- a/sops-secrets.yaml +++ b/sops-secrets.yaml @@ -20,7 +20,7 @@ syncthing: weechat: passphrase: ENC[AES256_GCM,data:3NVhMouf3wwMJTZCvIjbi5fjHJHxe25Q+wRo,iv:W8cShdM3iUyEiRCPNupMin3gfF+cqGxslD18CAvUW4c=,tag:DXBATGEhHjhXqy+J9BNVwg==,type:str] streamlink: - twitch-oauth: ENC[AES256_GCM,data:SvV0CBVL6MO0zqiRg2Ns00KNHLDfzgNObse5F69n,iv:h0DFbwIVKfJSoVowgO3voAOdHXIsw1D3O/aweFRVKcI=,tag:PW0gc+gzlfdOUvIoYIkywg==,type:str] + twitch-oauth: ENC[AES256_GCM,data:9ZPbqG+YwxGYcSwdXkcXLFxun2aTorz4OkNf8LSB,iv:Nm3+9Lah/DbV3wsMghDSmM5ewfLzbrZwlZixoNgPBHg=,tag:FMsoXNPjIGW8bxL5vyr39g==,type:str] nx2site: cloudflare: api-token-dns-edit: ENC[AES256_GCM,data:fR4fH6NqwtHI8aebEwjUn5JMoy3q3GXgu/dREe8JK7yRBIOhJ8BKuw==,iv:fQqLRYCN/7zhpHzYxMcn8q1aA7x4qd3qWGgrFWn2E/U=,tag:GJ1muJG755ch/84Sgcf2Vw==,type:str] @@ -86,8 +86,8 @@ sops: YkJWUEMySU50ZHVxUzVudjNnYURXak0KkMn/8sFrrviqb3s8DtS/BAbrdCwJ+jv/ A8rXQkKMjvTqG1f0fq5IlSmRAQy7XFBzkfbKdIUoefhey190WPEHaw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-06-16T08:57:57Z" - mac: ENC[AES256_GCM,data:Qwk39Cv+WhxnW8858qWtGPiCrYb4bje5nRGOkG4OrAC/dZ+wpbMd9DXF134PUM1NB/aI3ivnl4EeVAlcv/E32EjodZJOGkseKme5Hler69+nfL0DJT00XhBDR3aGVf3YMA5Po+XR9ikLKFF1wz4DhV4ylN6RxxMrpLJltba+0NI=,iv:QUulKPfnAujRUNWKBKUsIynOHsd4E09NO8TlaQwzFy0=,tag:N1LNlbvdjkXWarIAI9tkZg==,type:str] + lastmodified: "2025-07-30T16:13:52Z" + mac: ENC[AES256_GCM,data:ceUJtV0XgnP9U8Qf6mtw8Je4kXQjlCQs4KfBtlYZ0MEieDpsLPP0muQr4A4crx5CLJfIveKMRvqlJn3zCOTtyJndyxfW8T/574ithOXVmSFcMORvT79N+trRrhatgPcuD4vL4R/cSOTuSRFYFDkrO+XAr8n5dYdTErGH3UKtQLw=,iv:W5t3ZnsFelJHaJ7G7AMO4/aMmJfJZkqgHoxmj69+rUM=,tag:o9V3jScpextZ5HcpPISckw==,type:str] pgp: - created_at: "2025-06-08T12:35:30Z" enc: |- diff --git a/system-modules/hardware-configuration.nix b/system-modules/hardware-configuration.nix index 57a9a4a..3772a32 100644 --- a/system-modules/hardware-configuration.nix +++ b/system-modules/hardware-configuration.nix @@ -49,4 +49,6 @@ libvdpau-va-gl intel-media-driver ] else []; + + services.upower.enable = true; } diff --git a/system-modules/health_reminder.nix b/system-modules/health_reminder.nix index 68772f4..a91228f 100644 --- a/system-modules/health_reminder.nix +++ b/system-modules/health_reminder.nix @@ -5,8 +5,8 @@ lib.mkIf (hyper.host != "NxACE") enable = true; wantedBy = [ "timers.target" ]; timerConfig = { - OnBootSec = "5m"; - OnUnitActiveSec = "5m"; + OnBootSec = "30m"; + OnUnitActiveSec = "10m"; Unit = "health_reminder.service"; }; }; @@ -34,11 +34,11 @@ lib.mkIf (hyper.host != "NxACE") return action actions = [ - Action(action="look away for %o Seconds!", likelihood=300, options=["10", "15"]), - Action(action="Posture Check!", likelihood=300), + Action(action="look away for %o Seconds!", likelihood=30, options=["10", "15"]), + Action(action="Posture Check!", likelihood=200), Action(action="Strech your upper body!", likelihood=20), Action(action="Strech your core!", likelihood=10), - Action(action="Strech your legs!", likelihood=10), + Action(action="Strech your legs!", likelihood=20), Action(action="Strech your arms/hands!", likelihood=10), Action(action="Make Tea!", likelihood=5), Action(action="่ฏด็Žฐๅœจไธญๆ–‡็š„ๆ—ถ้—ด๏ผ", likelihood=2),