diff --git a/colors.sh b/colors.sh
index d7ccfdc..1b71fdb 100644
--- a/colors.sh
+++ b/colors.sh
@@ -79,3 +79,99 @@ printf "\033]4;14;#74C7EC\007"
 # FFFFFF # White                  15
 printf "\033]4;15;#FFFFFF\007"
 
+
+# NEW COLORS 20241101
+#
+# Nr #   R   G   B   H   S   B # Name
+# FG # 250 250 250   0   0  98 # Daisy (White)
+printf "\033]10;#FAFAFA\007"
+# BG #  19  19  19   0   0   7 # -
+printf "\033]11;#131313\007"
+
+# Regular colors (0-7)
+
+# Nr #   R   G   B   H   S   B # Name
+#  0 #  61  61  61   0   0  24 # - (Black)
+printf "\033]4;0;#3D3D3D\007"
+#  1 # 186  19  61 345  90  73 # - (Red)
+printf "\033]4;1;#BA133D\007"
+#  2 #  61 186  19 105  90  73 # - (Green)
+printf "\033]4;2;#3DBA13\007"
+#  3 # 186 144  19  45  90  73 # - (Yellow)
+printf "\033]4;3;#BA9013\007"
+#  4 #  19  61 186 225  90  73 # - (Blue)
+printf "\033]4;4;#133DBA\007"
+#  5 # 144  19 186 285  90  73 # - (Magenta)
+printf "\033]4;5;#9013BA\007"
+#  6 #  19 186 144 165  90  73 # - (Cyan)
+printf "\033]4;6;#13BA90\007"
+#  7 # 186 186 186   0   0  73 # - (White)
+printf "\033]4;7;#BABABA\007"
+
+# Bright colors (8-15)
+
+# Nr #   R   G   B   H   S   B # Name
+#  8 # 122 122 122   0   0  48 # - (Black)
+printf "\033]4;8;#363636\007"
+#  9 # 250  25  81 345  90  98 # - (Red)
+printf "\033]4;9;#FA1951\007"
+# 10 #  81 250  25 105  90  98 # - (Green)
+printf "\033]4;10;#51FA19\007"
+# 11 # 250 194  25  45  90  98 # - (Yellow)
+printf "\033]4;11;#FAC219\007"
+# 12 #  25  81 250 225  90  98 # - (Blue)
+printf "\033]4;12;#1951FA\007"
+# 13 # 194  25 250 285  90  98 # - (Magenta)
+printf "\033]4;13;#C219FA\007"
+# 14 #  25 259 194 165  90  98 # - (Cyan)
+printf "\033]4;14;#19FAC2\007"
+# 15 # 250 250 250   0   0  98 # - (White)
+printf "\033]4;15;#FAFAFA\007"
+
+# BRIGHTER
+#
+# Nr #   R   G   B   H   S   B # Name
+# FG # 250 250 250   0   0  98 # Daisy (White)
+printf "\033]11;#FAFAFA\007"
+# BG #  19  19  19   0   0   7 # -
+printf "\033]10;#131313\007"
+
+# Regular colors (0-7)
+
+# Nr #   R   G   B   H   S   B # Name
+#  0 #  61  61  61   0   0  24 # - (Black)
+printf "\033]4;0;#3D3D3D\007"
+#  1 # 186  19  61 345  90  73 # - (Red)
+printf "\033]4;1;#E62E4D\007"
+#  2 #  61 186  19 105  90  73 # - (Green)
+printf "\033]4;2;#4DE62E\007"
+#  3 # 186 144  19  45  90  73 # - (Yellow)
+printf "\033]4;3;#E6C72E\007"
+#  4 #  19  61 186 225  90  73 # - (Blue)
+printf "\033]4;4;#2E4CE6\007"
+#  5 # 144  19 186 285  90  73 # - (Magenta)
+printf "\033]4;5;#C52DE3\007"
+#  6 #  19 186 144 165  90  73 # - (Cyan)
+printf "\033]4;6;#2EE6C7\007"
+#  7 # 186 186 186   0   0  73 # - (White)
+printf "\033]4;7;#BABABA\007"
+
+# Bright colors (8-15)
+
+# Nr #   R   G   B   H   S   B # Name
+#  8 # 122 122 122   0   0  48 # - (Black)
+printf "\033]4;8;#7A7A7A\007"
+#  9 # 250  25  81 345  90  98 # - (Red)
+printf "\033]4;9;#FF002B\007"
+# 10 #  81 250  25 105  90  98 # - (Green)
+printf "\033]4;10;#2BFF00\007"
+# 11 # 250 194  25  45  90  98 # - (Yellow)
+printf "\033]4;11;#FFd500\007"
+# 12 #  25  81 250 225  90  98 # - (Blue)
+printf "\033]4;12;#002AFF\007"
+# 13 # 194  25 250 285  90  98 # - (Magenta)
+printf "\033]4;13;#D400FF\007"
+# 14 #  25 259 194 165  90  98 # - (Cyan)
+printf "\033]4;14;#00FFC0\007"
+# 15 # 250 250 250   0   0  98 # - (White)
+printf "\033]4;15;#FAFAFA\007"
diff --git a/nixos/flake.lock b/nixos/flake.lock
index 91147eb..1a1cf80 100644
--- a/nixos/flake.lock
+++ b/nixos/flake.lock
@@ -1,54 +1,15 @@
 {
   "nodes": {
-    "devshell": {
-      "inputs": {
-        "flake-utils": "flake-utils",
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1713532798,
-        "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
-        "owner": "numtide",
-        "repo": "devshell",
-        "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "devshell",
-        "type": "github"
-      }
-    },
     "flake-utils": {
       "inputs": {
         "systems": "systems"
       },
       "locked": {
-        "lastModified": 1701680307,
-        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+        "lastModified": 1726560853,
+        "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_2": {
-      "inputs": {
-        "systems": "systems_2"
-      },
-      "locked": {
-        "lastModified": 1710146030,
-        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+        "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
         "type": "github"
       },
       "original": {
@@ -64,11 +25,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1716736833,
-        "narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=",
+        "lastModified": 1726989464,
+        "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6",
+        "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
         "type": "github"
       },
       "original": {
@@ -86,11 +47,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1701208414,
-        "narHash": "sha256-xrQ0FyhwTZK6BwKhahIkUVZhMNk21IEI1nUcWSONtpo=",
+        "lastModified": 1720066371,
+        "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=",
         "owner": "nix-community",
         "repo": "nix-github-actions",
-        "rev": "93e39cc1a087d65bcf7a132e75a650c44dd2b734",
+        "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820",
         "type": "github"
       },
       "original": {
@@ -101,11 +62,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1717144377,
-        "narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=",
+        "lastModified": 1730883749,
+        "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "805a384895c696f802a9bf5bf4720f37385df547",
+        "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
         "type": "github"
       },
       "original": {
@@ -116,27 +77,27 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1717265169,
-        "narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=",
+        "lastModified": 1730602179,
+        "narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc",
+        "rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c",
         "type": "github"
       },
       "original": {
         "owner": "NixOS",
-        "ref": "release-23.11",
+        "ref": "release-24.05",
         "repo": "nixpkgs",
         "type": "github"
       }
     },
     "nixpkgs-unstable": {
       "locked": {
-        "lastModified": 1716948383,
-        "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=",
+        "lastModified": 1730785428,
+        "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "ad57eef4ef0659193044870c731987a6df5cf56b",
+        "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
         "type": "github"
       },
       "original": {
@@ -155,15 +116,15 @@
           "nixpkgs"
         ],
         "poetry2nix": "poetry2nix",
-        "systems": "systems_3",
+        "systems": "systems_2",
         "treefmt-nix": "treefmt-nix"
       },
       "locked": {
-        "lastModified": 1701455376,
-        "narHash": "sha256-FMLrMdi6JY7ZfqV5XnNj64jnDcGKznKZLn7O6OMO3u0=",
+        "lastModified": 1724283233,
+        "narHash": "sha256-XMPn6YHwFOJCGLE9M5F3AEFKA0u+maf8CpIEWmvaQTQ=",
         "owner": "ThinkChaos",
         "repo": "openconnect-sso",
-        "rev": "20c0015c4264c72cc19ac272de0dc534309bd21b",
+        "rev": "94f1ddfef1662d56ede0a093bcfc3d23156bc1a1",
         "type": "github"
       },
       "original": {
@@ -197,11 +158,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1701105783,
-        "narHash": "sha256-5IOI0xXGbhAkUZNNcPId48V78Q+/JlW0hzlif0zxRmM=",
+        "lastModified": 1721039874,
+        "narHash": "sha256-XANsG9GYHip8pxZpbqKf/YGv8tIa0xTh289Y+WNBNfw=",
         "owner": "nix-community",
         "repo": "poetry2nix",
-        "rev": "0b2bff39e9bd4e6db3208e09c276ca83a063b370",
+        "rev": "d11c01e58587e5f21037ed6477465a7f26a32e27",
         "type": "github"
       },
       "original": {
@@ -212,8 +173,7 @@
     },
     "root": {
       "inputs": {
-        "devshell": "devshell",
-        "flake-utils": "flake-utils_2",
+        "flake-utils": "flake-utils",
         "home-manager": "home-manager",
         "nixpkgs": "nixpkgs",
         "nixpkgs-unstable": "nixpkgs-unstable",
@@ -230,11 +190,11 @@
         "nixpkgs-stable": "nixpkgs-stable"
       },
       "locked": {
-        "lastModified": 1717297459,
-        "narHash": "sha256-cZC2f68w5UrJ1f+2NWGV9Gx0dEYmxwomWN2B0lx0QRA=",
+        "lastModified": 1730883027,
+        "narHash": "sha256-pvXMOJIqRW0trsW+FzRMl6d5PbsM4rWfD5lcKCOrrwI=",
         "owner": "Mic92",
         "repo": "sops-nix",
-        "rev": "ab2a43b0d21d1d37d4d5726a892f714eaeb4b075",
+        "rev": "c5ae1e214ff935f2d3593187a131becb289ea639",
         "type": "github"
       },
       "original": {
@@ -273,21 +233,6 @@
         "type": "github"
       }
     },
-    "systems_3": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
-    },
     "treefmt-nix": {
       "inputs": {
         "nixpkgs": [
@@ -296,11 +241,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1699786194,
-        "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=",
+        "lastModified": 1721769617,
+        "narHash": "sha256-6Pqa0bi5nV74IZcENKYRToRNM5obo1EQ+3ihtunJ014=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1",
+        "rev": "8db8970be1fb8be9c845af7ebec53b699fe7e009",
         "type": "github"
       },
       "original": {
@@ -316,11 +261,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1715533576,
-        "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
+        "lastModified": 1722363685,
+        "narHash": "sha256-XCf2PIAT6lH7BwytgioPmVf/wkzXjSKScC4KzcZgb64=",
         "owner": "gytis-ivaskevicius",
         "repo": "flake-utils-plus",
-        "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
+        "rev": "6b10f51ff73a66bb29f3bc8151a59d217713f496",
         "type": "github"
       },
       "original": {
diff --git a/nixos/flake.nix b/nixos/flake.nix
index 95ac77c..8c51697 100644
--- a/nixos/flake.nix
+++ b/nixos/flake.nix
@@ -2,20 +2,16 @@
   description = "System configuration of my machines using flakes";
 
   inputs = {
-    nixpkgs.url = "nixpkgs/nixos-24.11";
+    nixpkgs.url = "nixpkgs/nixos-24.05";
     nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
 
-    devshell = {
-      url = "github:numtide/devshell";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
     flake-utils.url = "github:numtide/flake-utils";
     home-manager = {
-      url = "github:nix-community/home-manager/release-24.11";
+      url = "github:nix-community/home-manager/release-24.05";
       inputs.nixpkgs.follows = "nixpkgs";
     };
     openconnect-sso = {
-      url = github:ThinkChaos/openconnect-sso/fix/nix-flake;
+      url = "github:ThinkChaos/openconnect-sso/fix/nix-flake";
       inputs = {
         flake-utils.follows = "utils";
         nixpkgs.follows = "nixpkgs";
@@ -33,7 +29,7 @@
 
   outputs = inputs@{
     self, nixpkgs, nixpkgs-unstable,
-    devshell, flake-utils, home-manager, openconnect-sso, sops-nix, utils,
+    flake-utils, home-manager, openconnect-sso, sops-nix, utils,
     ... }:
     let
       system = "x86_64-linux";
@@ -41,9 +37,9 @@
       unfreePackages = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
         "corefonts"
         "nvidia-settings" "nvidia-x11" "nvidia-persistenced"
-        "Oracle_VirtualBox_Extension_Pack"
+        "Oracle_VM_VirtualBox_Extension_Pack"
         "spotify"
-        "steam" "steam-unwrapped" "steam-run"
+        "steam" "steam-original" "steam-run"
         "vista-fonts"
         "nvidia-persistenced" # Docker
       ];
diff --git a/nixos/hosts/Tibo-NixFat/default.nix b/nixos/hosts/Tibo-NixFat/default.nix
index 6f0e53c..e295e2e 100644
--- a/nixos/hosts/Tibo-NixFat/default.nix
+++ b/nixos/hosts/Tibo-NixFat/default.nix
@@ -19,7 +19,7 @@
 
     networking = {
       networkmanager.enable = true;
-      # openconnect-sso.enable = true;
+      openconnect-sso.enable = true;
     };
 
     nix = {
@@ -80,6 +80,7 @@
 
   programs = {
     zsh.enable = true;
+    steam.enable = true;
   };
 
   hardware.bluetooth = {
@@ -87,7 +88,10 @@
     powerOnBoot = false;
   };
   
-  networking.hostName = "Tibo-NixFat";
+  networking = {
+    hostName = "Tibo-NixFat";
+    networkmanager.wifi.powersave = true;
+  };
 
   services = {
     # Handle the laptop lid switch as follows:
@@ -105,6 +109,8 @@
 
     # Touchpad
     libinput.enable = true;
+
+    thermald.enable = true;
   };
 
   system.stateVersion = "24.05";
diff --git a/nixos/modules/desktop/sway/default.nix b/nixos/modules/desktop/sway/default.nix
index 055bfb0..15d3087 100644
--- a/nixos/modules/desktop/sway/default.nix
+++ b/nixos/modules/desktop/sway/default.nix
@@ -101,11 +101,15 @@ in {
       dejavu_fonts
       font-awesome
       noto-fonts
-      noto-fonts-cjk-sans
-      noto-fonts-cjk-serif
+      noto-fonts-cjk
       noto-fonts-emoji
+      source-han-sans
+      source-han-sans-japanese
+      source-han-serif-japanese
     ];
 
+    hardware.opengl.enable = true;
+
     security.polkit.enable = true;
   
     services = {
@@ -140,9 +144,14 @@ in {
       extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
     };
   
-    programs.sway = {
-      enable = true;
-      wrapperFeatures.gtk = true;
+    programs = {
+      sway = {
+        enable = true;
+        package = pkgs.swayfx;
+        wrapperFeatures.gtk = true;
+      };
+
+      waybar.enable = true;
     };
 
     sisyphus.users.wantedGroups = [
diff --git a/nixos/modules/hardware/nvidia/default.nix b/nixos/modules/hardware/nvidia/default.nix
index 2b811fc..f4a0248 100644
--- a/nixos/modules/hardware/nvidia/default.nix
+++ b/nixos/modules/hardware/nvidia/default.nix
@@ -37,8 +37,9 @@ in {
 #    };
 
     hardware = {
-      graphics = {
+      opengl = {
         enable = true;
+        driSupport = true;
         driSupport32Bit = true;
       };
 
diff --git a/nixos/modules/hardware/yubikey/default.nix b/nixos/modules/hardware/yubikey/default.nix
index 708b9c1..2134c87 100644
--- a/nixos/modules/hardware/yubikey/default.nix
+++ b/nixos/modules/hardware/yubikey/default.nix
@@ -25,11 +25,17 @@ in {
     ];
 
     # Send a notification if the YubiKey is waiting for touch.
-    systemd.user.services.yubikey-touch-detector = {
+    systemd.services.yubikey-touch-detector = {
       enable = true;
       description = "Detects when your YubiKey is waiting for a touch";
-      path = with pkgs; [ yubikey-touch-detector ];
-      script = ''exec yubikey-touch-detector --notify'';
+      path = with pkgs; [
+        gnupg
+        yubikey-touch-detector
+      ];
+      wantedBy = [
+        "graphical-session.target"
+      ];
+      script = ''exec yubikey-touch-detector --libnotify'';
       environment.YUBIKEY_TOUCH_DETECTOR_LIBNOTIFY = "true";
     };
   };
diff --git a/nixos/modules/nix/flakes/default.nix b/nixos/modules/nix/flakes/default.nix
index aeaf3c1..3c5d892 100644
--- a/nixos/modules/nix/flakes/default.nix
+++ b/nixos/modules/nix/flakes/default.nix
@@ -9,6 +9,6 @@ in {
     extraOptions = ''
       experimental-features = nix-command flakes
     '';
-    package = pkgs.nixVersions.stable;
+    package = pkgs.nixFlakes;
   };
 }
diff --git a/nixos/modules/services/pipewire/default.nix b/nixos/modules/services/pipewire/default.nix
index b83eedc..09393f0 100644
--- a/nixos/modules/services/pipewire/default.nix
+++ b/nixos/modules/services/pipewire/default.nix
@@ -6,6 +6,8 @@ in {
   options.sisyphus.services.pipewire.enable = lib.mkEnableOption "Pipewire";
 
   config = lib.mkIf cfg.enable {
+    sound.enable = true;
+    hardware.pulseaudio.enable = false;
     security.rtkit.enable = true;
     services.pipewire = {
       enable = true;
@@ -18,26 +20,6 @@ in {
       # use the example session manager (no others are packaged yet so this is enabled by default,
       # no need to redefine it in your config for now)
       #media-session.enable = true;
-
-      wireplumber = {
-        enable = true;
-        # Fix pops after silence
-        extraConfig."99-disable-suspend" = {
-          "monitor.alsa.rules" = [
-            {
-              matches = [
-                # Headphone jack on laptop
-                { "node.name" = "alsa_output.pci-0000_00_1f.3.analog-stereo"; }
-              ];
-              actions = {
-                update-props = {
-                  "session.suspend-timeout-seconds" = 0;
-                };
-              };
-            }
-          ];
-        };
-      };
     };
   };
 }
diff --git a/nixos/modules/virtualisation/docker/default.nix b/nixos/modules/virtualisation/docker/default.nix
index b48ae5e..51b9319 100644
--- a/nixos/modules/virtualisation/docker/default.nix
+++ b/nixos/modules/virtualisation/docker/default.nix
@@ -10,8 +10,6 @@ in {
       enable = true;
       # Because these are made for development purposes and not for servers
       enableOnBoot = false;
-
-      daemon.settings.features.cdi = true;
     };
 
     # Updated version of deprecated enableNvidia.
diff --git a/nixos/secrets/HomeLab.yaml b/nixos/secrets/HomeLab.yaml
index 9678afb..f749611 100644
--- a/nixos/secrets/HomeLab.yaml
+++ b/nixos/secrets/HomeLab.yaml
@@ -1,4 +1,6 @@
 HomeLab:
+    Gitea:
+        ssh: ENC[AES256_GCM,data:+H9qhfOg5WlTB7pihvbJ9omY/zLTAADe8KzI4fbdZ7NuaM0auC95AIQqhwNNCZNglg9UGOVL662pY7dNhbQ/2iCLPHSPgFFXf3fx1moRRcYYQzoJxsgxp19FZQeGNJ0qfRf72xYbZQZKslyHQmcqDieoVTyhaLqTfgC8MQ/UZofw/ortmgME7z51rGV5sXXMjxpJpHz9JxiPwQEL0ABWDAeCqBVBzlqqwdmfKEdkcR4l3USHfH1iNF5XQ5V26I+UGDOyoixt1c/BXzD9xzKI7MUDoRz+qfC6C62LIlEgqZY5tWg+tVZnqobakxwH6d8pXtQ7vaIREEP0LqQMkrNcK8X+cDRteToQ1fcxtN1V+JfZSa9pVC+iGgvmSZ00q4bnOgTmgO9IZ80TvOR4bHpRhjM5l4JMbLBv2jqY1zeUx/5L3WNuYIm9sL5mWXkV/RAD8WCemNSWdKbGsvByEUeiFcxczL/vQ6y3fi+ntmXUgeXVy5zVNkNlYbqd+DemBmwZQb9D1T5T97i2ChciYb3/ON1NObja/bt0PTQa,iv:hIbwsPcDSfgDItlvFFy0vCjuQWvgoQHBH60v8nTVTNg=,tag:1T/TdTEy98TfgMzYAxfHKA==,type:str]
     Hugo:
         ssh: ENC[AES256_GCM,data:Tfuba25e4hJ8Ovl1IdVtDvg0L0sCc9sYTXstRg89IAUzwv/1u8mxdj9ka6ZKaSQr2QUaNWs0BoPV36O4bI2hTwoqhUarhXXZNnJKHtd8xBu/+kfMSOMGa5qD9V9m3L5OFdt+gdwhJxemeQNkvN0Vhsu4DJFPZRPmGflJ2HVRYaRW4AsI+JPqiWSEeKz40f3PQPJ2h26gF+pADmPwtEfcUGZdGnJXUsiYMC0aBEWWxyAgBgj5W+Nbe+OCopEX1qyRcR8qO+LONjuC0b5hcGeOXjWj/d1FnBfxDHeoxRGhNCo8TUk0ap1mpSAttdr55/C51duQfeV09Iow4nzUR2H0jmzojUAjKXXCkBsK6yjIKxW+4+4OKCC9ERz5mDmu5Z+4aFM7CpSquCAnDVFw1Uq9MJqAnSz6AGh29J4LUwMnVNtf+gQwzGyl/C9wE/Svm0UAwP19h6hLcM1rp6bV4xjfSXNDspUkz4Xr3RdPpTI1PemtMZIq8fP64q0FlFZeV62ctl9hCtDVRDo3fG3FUM08fa0OfJpVYjSEAOfC,iv:T8z+P5++cES9Co9d/2tcU0PbxZZM/5x63tcxIjBeQ0I=,tag:AjsulFme64/xEPjgZQFtow==,type:str]
     Nextcloud:
@@ -18,8 +20,8 @@ sops:
             aDNUbFlhWWVoOWpjVlV1VTVJejlSMjQK6wCeCRdHY5oyTX6/R1U5AOGJyp0exi1A
             dWPUMfkKBBBkrR+G6ougd8o3FwFf+yfb5RhaTxxqjit6p2RyMjR64w==
             -----END AGE ENCRYPTED FILE-----
-    lastmodified: "2024-10-19T12:24:34Z"
-    mac: ENC[AES256_GCM,data:Bh/vHdsFCzk+YaRcZe/Eiq4xfLSDX1tSV4Jg8lFgzPqXCBwCgohDREZ8LSZPuQtStIugzyRNyPcnWrZcDwDiaS9klM5sIxjeGIF7ZDS81sQnQVNRyX/m9vl6AgVtP9KHgOpJwGObzuvNBE7XnOZ3q03/ah1LXRowJUn63wB4Qxk=,iv:GVLQUjm0bMHusD0F8gJ5DlZvqdDHPsT0VwxLhHh9ozE=,tag:cffv8wKTQ9UYrCPx+3zTMw==,type:str]
+    lastmodified: "2024-10-20T07:58:57Z"
+    mac: ENC[AES256_GCM,data:mmFgjE7rp7fXmPOnETGamHR3kUAguFCNNTQcEnD+uM4xeSp3QcB2g8tkKYaJAjkWWqKRSm9/Iu1NWOr9GWyu4O1h7ppWSvpKawWki6cHpqBl8JOwbx/SZi5bzU1lBtoJyT6hD1aCu9ENOMUkpPY3rKcYwbsRMJpKYsbXymPikcQ=,iv:kPB6ds8c4yc/w7Ny1d3DTyztQF4yTr0NyKgIHEzIKAg=,tag:VTpXRb5HaWDjVB52K7mByw==,type:str]
     pgp: []
     unencrypted_suffix: _unencrypted
     version: 3.8.1
diff --git a/nixos/shells/c/default.nix b/nixos/shells/c/default.nix
new file mode 100644
index 0000000..09a7f1d
--- /dev/null
+++ b/nixos/shells/c/default.nix
@@ -0,0 +1,30 @@
+{
+  description = "C Flake";
+
+  inputs = {
+    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+    flake-utils.url = "github:numtide/flake-utils";
+  };
+
+  outputs = { self, flake-utils, nixpkgs }:
+  flake-utils.lib.eachDefaultSystem (system:
+  let
+    lib = import lib;
+    pkgs = import nixpkgs {
+      inherit system;
+      config.allowUnfree = true;
+    };
+  in {
+    devShells.default = pkgs.mkShell {
+      packages = with pkgs; [
+        cmake
+        gcc
+        gnumake
+        valgrind
+
+        # You might want to use your own IDE.
+        (jetbrains.plugins.addPlugins jetbrains.clion [ "github-copilot" ])
+      ];
+    };
+  });
+}
diff --git a/nixos/shells/java/default.nix b/nixos/shells/java/default.nix
new file mode 100644
index 0000000..676c946
--- /dev/null
+++ b/nixos/shells/java/default.nix
@@ -0,0 +1,26 @@
+{
+  description = "Java Flake";
+
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+  inputs.flake-utils.url = "github:numtide/flake-utils";
+
+  outputs = { self, nixpkgs, flake-utils }:
+  flake-utils.lib.eachDefaultSystem
+  ( system:
+  let
+    pkgs = import nixpkgs {
+      inherit system;
+      config.allowUnfree = true;
+    };
+  in {
+    devShells.default = pkgs.mkShell {
+      packages = with pkgs; [
+        jdk8
+        openjdk17
+
+        # You might want to use your own IDE.
+        (jetbrains.plugins.addPlugins jetbrains.idea-ultimate [ "github-copilot" ])
+      ];
+    };
+  });
+}
diff --git a/nixos/shells/latex/default.nix b/nixos/shells/latex/default.nix
new file mode 100644
index 0000000..e2cb799
--- /dev/null
+++ b/nixos/shells/latex/default.nix
@@ -0,0 +1,24 @@
+{
+  description = "LaTeX Flake";
+
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+  inputs.flake-utils.url = "github:numtide/flake-utils";
+
+  outputs = { self, nixpkgs, flake-utils}:
+    flake-utils.lib.eachDefaultSystem
+    (system:
+      let
+        pkgs = import nixpkgs {
+          inherit system;
+        };
+      in {
+        devShells.default = pkgs.mkShell {
+          packages = with pkgs; [ 
+            texlive.combined.scheme-full
+            pgfplots
+            biber
+          ];
+        };
+      }
+    );
+}
diff --git a/nixos/users/tdpeuter/default.nix b/nixos/users/tdpeuter/default.nix
index 6c1fcf3..899086f 100644
--- a/nixos/users/tdpeuter/default.nix
+++ b/nixos/users/tdpeuter/default.nix
@@ -39,10 +39,8 @@ in {
       corefonts              # Calibri for Uni
       font-awesome           # Dependency of Vifm & zsh config
       letter                 # Personal font
-      noto-fonts-cjk-sans    # Dependency of Zellij config
-      noto-fonts-cjk-serif   # Dependency of Zellij config
+      noto-fonts-cjk         # Dependency of Zellij config
       noto-fonts             # Dependency of Zellij config
-      noto-fonts-emoji       # Dependency of Zellij config
       noto-fonts-color-emoji # Emoji's!
       vistafonts             # Microsoft fonts
     ];
@@ -138,6 +136,14 @@ in {
         cursorTheme = cursor;
       };
 
+      services.syncthing = {
+        enable = true;
+        extraOptions = [
+          "--no-default-folder"
+        ];
+        tray.enable = true;
+      };
+
       xdg = {
         desktopEntries.spotify = {
           name = "Spotify";
diff --git a/nixos/users/tdpeuter/dotfiles.nix b/nixos/users/tdpeuter/dotfiles.nix
index 9766b08..dd30c05 100644
--- a/nixos/users/tdpeuter/dotfiles.nix
+++ b/nixos/users/tdpeuter/dotfiles.nix
@@ -72,14 +72,14 @@ in {
             ".config/zellij" = {
               source = ../../../stow/zellij/.config/zellij;
             };
-            ".oh-my-zsh" = {
-              enable = config.users.users.tdpeuter.shell == pkgs.zsh;
-              source = "${pkgs.oh-my-zsh}/share/oh-my-zsh";
+            ".gnupg" = {
+              inherit (config.programs.gnupg.agent) enable;
+              source = ../../../stow/gnupg/.gnupg;
               recursive = true;
-            };
-            ".oh-my-zsh/themes/tdpeuter.zsh-theme" = {
-              enable = config.users.users.tdpeuter.shell == pkgs.zsh;
-              source = ../../../stow/zsh/.oh-my-zsh/themes/tdpeuter.zsh-theme;
+#              onChange = ''
+#                chmod 700 /home/tdpeuter/.gnupg
+#                chmod 600 /home/tdpeuter/.gnupg/*
+#              '';
             };
             ".ssh/config" = lib.mkIf config.sisyphus.programs.ssh.enable {
               inherit (config.sisyphus.programs.ssh) enable;
@@ -97,6 +97,15 @@ in {
             };
           }
           (lib.mkIf (config.users.users.tdpeuter.shell == pkgs.zsh) {
+            ".oh-my-zsh" = {
+              enable = config.users.users.tdpeuter.shell == pkgs.zsh;
+              source = "${pkgs.oh-my-zsh}/share/oh-my-zsh";
+              recursive = true;
+            };
+            ".oh-my-zsh/themes/tdpeuter.zsh-theme" = {
+              enable = config.users.users.tdpeuter.shell == pkgs.zsh;
+              source = ../../../stow/zsh/.oh-my-zsh/themes/tdpeuter.zsh-theme;
+            };
             ".zshrc" = {
               source = ../../../stow/zsh/.zshrc;
             };
diff --git a/nixos/users/tdpeuter/secrets.nix b/nixos/users/tdpeuter/secrets.nix
index 75939f3..e37b277 100644
--- a/nixos/users/tdpeuter/secrets.nix
+++ b/nixos/users/tdpeuter/secrets.nix
@@ -32,6 +32,7 @@ in {
         "UGent/SubGit/ssh" = UGent;
 
         # HomeLab
+        "HomeLab/Gitea/ssh" = HomeLab;
         "HomeLab/Hugo/ssh" = HomeLab;
         "HomeLab/Nextcloud/ssh" = HomeLab;
       });
diff --git a/scripts/notify.sh b/scripts/notify.sh
index 698993e..a9453d5 100755
--- a/scripts/notify.sh
+++ b/scripts/notify.sh
@@ -22,15 +22,15 @@ while getopts ":bvt:p:" options; do
 			;;
 		v)
             # Get volume (don't use pamixer because that is way slower)
-            value=$( pactl get-sink-volume @DEFAULT_SINK@ \
-                | grep -o '[0-9]*%' \
-                | tr -d '%' \
-                | head -n1 )
+            value=$( amixer sget 'Master' \
+                | grep -o '\[[0-9]*%\]' \
+                | tr -d '][%' \
+	        | head -n1 )
             title="Volume: ${value}%"
             category='sysinfo'
 
             # If audio disabled, set value to zero.
-            if [ "$( pactl get-sink-mute @DEFAULT_SINK@ | grep -o '\(yes\|no\)' | head -n1 )" == 'yes' ] ; then 
+	    if [ "$( amixer sget 'Master' | grep -o '\[\(on\|off\)\]' | head -n1 )" == "[off]" ] ; then 
                 title="Volume: ${value}% (Disabled)"
                 value=0
             fi
diff --git a/scripts/toggle-light-dark.sh b/scripts/toggle-light-dark.sh
index 80e4d0d..37817e6 100755
--- a/scripts/toggle-light-dark.sh
+++ b/scripts/toggle-light-dark.sh
@@ -55,11 +55,11 @@ while getopts ":m:g" option; do
             current_state="$(cat "${STATE_FILE}")"
             next_state="${theme_next[${current_state}]}"
             if [ "${current_state}" == "${THEME_DARK}" ]; then
-                class='activated'
+                class="activated"
                 percentage=100
             fi
             printf '{"text": "%s", "alt": "%s", "tooltip": "Set theme to %s", "percentage": %d, "class": "%s"}' \
-                "${icon[${current_state}]}" "${gsettings_alt[${next_state}]}" "${next_state}" "${percentage:=0}" "${class:="none"}"
+                "${icon[${next_state}]}" "${gsettings_alt[${next_state}]}" "${next_state}" "${percentage:=0}" "${class:="none"}"
             exit 0
             ;;
         *)
@@ -123,12 +123,8 @@ fi
 # Sway
 if [ "$(command -v swaybg)" ]; then
     bg_path="${BG_DIR}/${wallpaper[${theme}]}"
-    /run/current-system/sw/bin/cp "${bg_path}" "${STATE_DIR}/bg"
-    if [ "$(command -v swaymsg)" ]; then
-        pkill swaybg && swaymsg exec "swaybg -m fill -i ${STATE_DIR}/bg" &
-    elif [ "$(command -v hyprctl)" ]; then
-        pkill swaybg && hyprctl keyword exec "swaybg -m fill -i ${STATE_DIR}/bg" &
-    fi
+    /run/current-system/sw/bin/cp "${bg_path}" "${STATE_DIR}/bg" && swaymsg reload &
+    # pkill --signal 13 "waybar" &
 fi
 
 # Vifm
diff --git a/stow/ssh/.ssh/config b/stow/ssh/.ssh/config
index d3f6834..55c6397 100644
--- a/stow/ssh/.ssh/config
+++ b/stow/ssh/.ssh/config
@@ -31,6 +31,12 @@ Host subgit.ugent.be
     CanonicalizeHostname yes # Ignore capitalization
 
 # HomeLab
+Host Gitea
+    User admin
+    HostName 192.168.0.24
+    IdentitiesOnly yes
+    IdentityFile /run/secrets/HomeLab/Gitea/ssh
+
 Host Hugo
     User admin
     HostName 192.168.0.11
diff --git a/stow/sway/.config/sway/modes b/stow/sway/.config/sway/modes
index 074dab5..d62608f 100644
--- a/stow/sway/.config/sway/modes
+++ b/stow/sway/.config/sway/modes
@@ -7,40 +7,49 @@ set $default "default"
 # Resizing
 set $mode_resize "Resize"
 bindsym $flag+r mode $mode_resize
-mode $mode_resize bindsym {
-    $right       resize grow   width  10 px or 10 ppt
-    $up          resize grow   height 10 px or 10 ppt
-    $left        resize shrink width  10 px or 10 ppt
-    $down        resize shrink height 10 px or 10 ppt
+mode $mode_resize {
+    bindsym {
+        $right       resize grow   width  10 px or 10 ppt
+        $up          resize grow   height 10 px or 10 ppt
+        $left        resize shrink width  10 px or 10 ppt
+        $down        resize shrink height 10 px or 10 ppt
 
-    Right        resize grow   width  10 px or 10 ppt
-    Up           resize grow   height 10 px or 10 ppt
-    Left         resize shrink width  10 px or 10 ppt
-    Down         resize shrink height 10 px or 10 ppt
+        Right        resize grow   width  10 px or 10 ppt
+        Up           resize grow   height 10 px or 10 ppt
+        Left         resize shrink width  10 px or 10 ppt
+        Down         resize shrink height 10 px or 10 ppt
 
-    Shift+$right resize grow   width  50 px or 50 ppt
-    Shift+$up    resize grow   height 50 px or 50 ppt
-    Shift+$left  resize shrink width  50 px or 50 ppt
-    Shift+$down  resize shrink height 50 px or 50 ppt
+        Shift+$right resize grow   width  50 px or 50 ppt
+        Shift+$up    resize grow   height 50 px or 50 ppt
+        Shift+$left  resize shrink width  50 px or 50 ppt
+        Shift+$down  resize shrink height 50 px or 50 ppt
 
-    Shift+Right  resize grow   width  50 px or 50 ppt
-    Shift+Up     resize grow   height 50 px or 50 ppt
-    Shift+Left   resize shrink width  50 px or 50 ppt
-    Shift+Down   resize shrink height 50 px or 50 ppt
+        Shift+Right  resize grow   width  50 px or 50 ppt
+        Shift+Up     resize grow   height 50 px or 50 ppt
+        Shift+Left   resize shrink width  50 px or 50 ppt
+        Shift+Down   resize shrink height 50 px or 50 ppt
 
-    $flag+$right move right
-    $flag+$up    move up
-    $flag+$left  move left
-    $flag+$down  move down
+        $flag+$right move right
+        $flag+$up    move up
+        $flag+$left  move left
+        $flag+$down  move down
 
-    $flag+Right  move right
-    $flag+Up     move up
-    $flag+Left   move left
-    $flag+Down   move down
+        $flag+Right  move right
+        $flag+Up     move up
+        $flag+Left   move left
+        $flag+Down   move down
 
-    $flag+r      mode $default
-    Escape       mode $default
-    Return       mode $default
+        $flag+r      mode $default
+        Escape       mode $default
+        Return       mode $default
+    }
+
+    bindgesture {
+        swipe:2:right resize grow   width  10 px or 10 ppt
+        swipe:2:down  resize grow   height 10 px or 10 ppt
+        swipe:2:left  resize shrink width  10 px or 10 ppt
+        swipe:2:up    resize shrink height 10 px or 10 ppt
+    }
 }
 
 # System actions
@@ -94,8 +103,8 @@ mode $mode_screenshot bindsym {
 set $mode_launcher "Launch (f)irefox, (s)potify or (t)hunderbird."
 bindsym $flag+o mode $mode_launcher
 mode $mode_launcher bindsym {
-    f   exec firefox
-    t   exec thunderbird
+    f   exec firefox,     mode $default
+    t   exec thunderbird, mode $default
 
     $flag+o mode $default
     Escape  mode $default
diff --git a/stow/waybar/.config/waybar/config b/stow/waybar/.config/waybar/config
index 3b1a053..93f4b60 100644
--- a/stow/waybar/.config/waybar/config
+++ b/stow/waybar/.config/waybar/config
@@ -19,9 +19,9 @@
 
     "include": [
         // Import modules (!)
-        "~/.config/waybar/modules.json", 
-//      "~/.config/waybar/default.json"
-        "~/.config/waybar/left.json"
+        "./modules.json", 
+//      "./default.json"
+        "./left.json"
     ],
 
 }, 
@@ -36,7 +36,7 @@
 
     "include": [
         // Import modules (!)
-        "~/.config/waybar/modules.json"
+        "./modules.json"
     ],
 }]
 
diff --git a/stow/waybar/.config/waybar/left.json b/stow/waybar/.config/waybar/left.json
index 8ab0639..86b9a00 100644
--- a/stow/waybar/.config/waybar/left.json
+++ b/stow/waybar/.config/waybar/left.json
@@ -2,16 +2,15 @@
     "modules-left": [
         "sway/workspaces",
         "custom/scratchpad-indicator",
-        "mpris",
         "group/system"
     ],
     "modules-right": [
-        "group/hardware",
+        "tray",
+        "sway/language",
         "bluetooth",
         "network",
         "pulseaudio",
         "group/battery",
-        "custom/sep",
-        "tray"
+        "mpris"
     ]
 }
diff --git a/stow/waybar/.config/waybar/modern.css b/stow/waybar/.config/waybar/modern.css
new file mode 100644
index 0000000..35ce570
--- /dev/null
+++ b/stow/waybar/.config/waybar/modern.css
@@ -0,0 +1,80 @@
+@define-color foreground rgb(202, 202, 202);
+@define-color background rgb(  3,   3,   3);
+
+@define-color highlight-background alpha(@foreground, 0.4);
+
+@define-color accent #00897b;
+@define-color white #ecf0f1;
+@define-color warning-red #eb4d4b;
+
+* {
+    font-family: letter, "Font Awesome 6 Free", font-awesome, monospace;
+    font-size: 13px;
+    font-weight: 600;
+}
+
+window#waybar {
+    border: none;
+    color: @white;
+
+    transition-property: background-color;
+    transition-duration: .5s;
+}
+
+window#waybar.keep {
+    background-color: @transparent;
+}
+
+window#waybar.toggle {
+    background-color: alpha(@foreground, 0.4);
+}
+
+tooltip {
+  background: alpha(@background, 0.8);
+}
+tooltip label {
+  color: @white;
+}
+
+#workspaces button {
+    border: none;
+    padding: 0 8px;
+    border-radius: 5px;
+    animation: ws_normal 20s ease-in-out 1;
+}
+
+#mode,
+#workspaces button.focused {
+    background-color: alpha(@background, 0.2);
+}
+
+#workspaces button:hover {
+    background-color: alpha(@background, 0.2);
+}
+
+#battery,
+#disk,
+#bluetooth,
+#clock,
+#custom-browser,
+#custom-scratchpad-indicator,
+#custom-system-hibernate, #custom-system-lock, #custom-system-reboot, #custom-system-shutdown, #custom-system-sleep,
+#custom-toggle-light-dark,
+#custom-toggle-night-light,
+#custom-toggle-notifications,
+#cpu,
+#idle_inhibitor,
+#keyboard-state,
+#memory,
+#mpris,
+#network,
+#sway-language,
+#sway-window,
+#power-profiles-daemon,
+#privacy,
+#pulseaudio,
+#temperature,
+#tray {
+    color: @white;
+}
+
diff --git a/stow/waybar/.config/waybar/modules.json b/stow/waybar/.config/waybar/modules.json
index 026ad07..03d10d6 100644
--- a/stow/waybar/.config/waybar/modules.json
+++ b/stow/waybar/.config/waybar/modules.json
@@ -20,13 +20,14 @@
     },
 
     "bluetooth": {
+        /* bluetooth-b */
         "format-disabled": "\uf294",
         "format-off": "\uf294",
         "format-on": "\uf294",
         "format-connected": "\uf294c",
         "max-length": 10.3,
         "on-click": "bluetoothctl power $( bluetoothctl show | sed -n 's/\\s*Powered: \\(yes\\|no\\)/\\1/p' | sed 's/yes/off/;s/no/on/' )",
-        "on-click-right": "kitty -e bluetoothctl",
+        "on-click-right": "foot -e bluetoothctl",
         "tooltip-format": "{status}",
         "tooltip-format-on": "{status}, no devices connected",
         "tooltip-format-connected": "{status} ({num_connections}):\n{device_enumerate}", 
@@ -36,9 +37,20 @@
     
     "clock": {
         "format": "{:%H:%M}",
-        "format-alt": "{:%d/%m/%Y %H:%M}",
+        "format-alt": "{:%a %b %d, %Y  %R}",
         "timezone": "Europe/Brussels",
-        "tooltip-format": "{:%Y %B}\n{calendar}"
+        "tooltip-format": "{:%Y %B}\n{calendar}",
+        "calendar": {
+            "mode-mon-col": 3,
+            "on-scroll": 1,
+            "format": {
+                /* Highlight today's date. */
+                "today": "{}"
+            }
+        },
+        "actions": {
+            "on-click": "mode"
+        }
     },
 
     "custom/browser": {
@@ -47,39 +59,11 @@
         "tooltip-format": "Launch an application"
     },
 
-    "custom/light-dark-toggle": {
-        "exec": "bash ${SCRIPT_DIR}/toggle-light-dark.sh -g",
-        "exec-on-event": true,
-        "on-click": "bash ${SCRIPT_DIR}/toggle-light-dark.sh",
-        // "format": "\uf042 ",
-        "format": "{icon}",
-        "format-icons": [
-            "\uf185",
-            "\uf111"
-        ],
-        "tooltip": true,
-        "tooltip-format": "Toggle between light and dark mode"
-    },
-
-    "custom/keyboard-switch": {
-        "format": "\uf11c",
-        "on-click": "swaymsg input type:keyboard xkb_switch_layout next",
-        "tooltip-format": "Toggle keyboard layouts",
-        "tooltip": true
-    },
-
-    "custom/night-light-toggle": {
-        "on-click": "bash ${SCRIPT_DIR}/sunset.sh",
-        "format": "\uf0eb ",
-        "tooltip": true,
-        "tooltip-format": "Toggle night-light on or off"
-    },
-
     "custom/scratchpad-indicator": {
         "interval": 3,
         "return-type": "json",
         "exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '(recurse(.nodes[]) | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [..  | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | if ($scratch_nodes|length) > 0 then { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") } else empty end'",
-        "format": "{} \uf2d2",
+        "format": "\uf2d2 {}",
         "on-click": "exec swaymsg 'scratchpad show'",
         "on-click-right": "exec swaymsg 'move scratchpad'"
     },
@@ -119,6 +103,23 @@
         "on-click": "systemctl poweroff -i"
     },
 
+    "custom/toggle-light-dark": {
+        "exec": "bash ${SCRIPT_DIR}/toggle-light-dark.sh -g",
+        "signal": 13,
+        "return-type": "json",
+        "on-click": "bash ${SCRIPT_DIR}/toggle-light-dark.sh",
+        // "format": "\uf042 ",
+        "format": "{}",
+        "tooltip": true
+    },
+
+    "custom/toggle-night-light": {
+        "on-click": "bash ${SCRIPT_DIR}/sunset.sh",
+        "format": "\uf0eb ",
+        "tooltip": true,
+        "tooltip-format": "Toggle night-light on or off"
+    },
+
     "custom/toggle-notifications": {
         "on-click": "bash ${SCRIPT_DIR}/do-not-disturb.sh",
         "tooltip-format": "Toggle notifications",
@@ -127,8 +128,9 @@
     },
    
     "cpu": {
+        "interval": 10,
         "format": "{usage}% \uf2db",
-        "on-click": "foot -e htop",
+        "on-click": "foot -e top",
         "tooltip": true
     },
 
@@ -136,6 +138,11 @@
         "orientation": "inherit",
         "modules": [
             "battery",
+            "custom/sep",
+            "memory",
+            "cpu",
+            "temperature",
+            "custom/sep",
             "custom/system-shutdown",
             "custom/system-reboot",
             "custom/system-hibernate",
@@ -143,22 +150,6 @@
             "custom/system-lock",
             "custom/sep",
             "power-profiles-daemon",
-            "custom/sep"
-        ],
-        "drawer": {
-            "transition-duration": 500,
-            "transition-left-to-right": false,
-            "children-class": "drawer-child"
-        }
-    },
-
-    "group/hardware": {
-        "orientation": "inherit",
-        "modules": [
-            "custom/sep",
-            "memory",
-            "cpu",
-            "temperature"
         ],
         "drawer": {
             "transition-duration": 500,
@@ -173,7 +164,6 @@
             "idle_inhibitor",
             "custom/light-dark-toggle",
             "custom/night-light-toggle",
-            "custom/keyboard-switch",
             "custom/toggle-notifications"
         ],
         "drawer": {
@@ -227,20 +217,27 @@
             "title",
             "artist"
         ],
-        "dynamic-len": 40,
+        "dynamic-len": 40
     },
 
     "network": {
         "format-disconnected": "\uf127", 
-        "format-ethernet": "\uf6ff {ifname}: {ipadds}/{cidr}",
-        "format-wifi": "\uf1eb",
+        "format-ethernet": "\uf6ff {ifname}: {ipadds}/{cidr}", /* network-wired */
+        "format-wifi": "\uf1eb", /* wifi */
         "interval": 5,
-        "on-click-right": "kitty -e nmtui",
+        "on-click-right": "foot -e nmtui",
         "tooltip-format": "{ifname}: {ipaddr}",
         "tooltip-format-disconnected": "Disconnected",
         "tooltip-format-wifi": "{essid} ({signalStrength}%)\n{ifname}: {ipaddr}"
     },
 
+    "sway/language": {
+        "format": "{short}",
+        "on-click": "swaymsg input type:keyboard xkb_switch_layout next",
+        "tooltip-format": "Switch keyboard layouts",
+        "tooltip": true
+    },
+
     "sway/window": {
         "max-length": 85
     },
@@ -250,7 +247,9 @@
         "disable-scroll": true,
         "format": "{icon}{name}", 
         "format-icons": {
-            "default": "", // Prevent showing workspace name literal.
+            //"default": "\uf111",
+            "default": "",
+            //"focused": "\uf192",
             "urgent": "\uf071 "
         },
         // "persistent_workspaces": {
@@ -264,9 +263,9 @@
         "tooltip": true,
         "format-icons": {
             "default": "",
-            "performance": "",
+            "performance": "\uf135",
             "balanced": "",
-            "power-saver": ""
+            "power-saver": "\uf06c"
         }
     },
 
@@ -290,19 +289,23 @@
 
     "pulseaudio": {
         "format": "{volume}% {icon}{format_source}",
-        "format-muted": "\uf6a9{format_source}",
+        "format-muted": "\uf6a9{format_source}", /* volume-xmark */
         "format-bluetooth": "{volume}% {icon}\uf294{format_source}",
         "format-bluetooth-muted": "\uf6a9 {icon}\uf294{format_source}",
         "format-source": " {volume}% \uf130",
         "format-source-muted": "",
         "format-icons": {
-            "headphone": "\uf58f",
-            "hands-free": "\uf590",
-            "headset": "\uf590",
-            "phone": "\uf3ce",
-            "portable": "\uf3ce",
-            "car": "\uf1b9",
-            "default": ["\uf026", "\uf027", "\uf028 "]
+            "headphone": "\uf58f", /*  headphones-simple */
+            "hands-free": "\uf590", /*  headset */
+            "headset": "\uf590", /*  headset */
+            "phone": "\uf3ce", /* mobile */
+            "portable": "\uf3ce", /* mobile */
+            "car": "\uf1b9", /* car */
+            "default": [
+                "\uf026", /*  volume-off */
+                "\uf027", /*  volume-low */
+                "\uf028"  /*  volume-high */
+            ]
         },
         "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
         "on-click-right": "pavucontrol",
@@ -310,12 +313,19 @@
     },
 
     "temperature": {
-        "critical-threshold": 70,
+        "critical-threshold": 75,
         "format": "{temperatureC}°C {icon}",
-        "format-icons": ["\uf2cb", "\uf2c9", "\uf2c7"]
+        "format-icons": [
+            "\uf2cb", /*  temperature-empty */
+            "\uf2ca", /*  temperature-quarter */
+            "\uf2c9", /*  temperature-half */
+            "\uf2c8", /*  temperature-three-quarters */
+            "\uf2c7" /*  temperature-full */
+        ]
     }, 
 
     "tray": {
+        "show-passive-items": true,
         "spacing": 10
     }
 }
diff --git a/stow/waybar/.config/waybar/style-dark.css b/stow/waybar/.config/waybar/style-dark.css
new file mode 100644
index 0000000..49d4f87
--- /dev/null
+++ b/stow/waybar/.config/waybar/style-dark.css
@@ -0,0 +1,10 @@
+@define-color foreground rgb(  3,   3,   3);
+@define-color background rgb(202, 202, 202);
+
+@define-color highlight-background alpha(@foreground, 0.4);
+
+* {
+    color: @foreground;
+    font-family: letter, "Font Awesome 6 Free", font-awesome, monospace;
+}
+
diff --git a/stow/waybar/.config/waybar/style-light.css b/stow/waybar/.config/waybar/style-light.css
new file mode 100644
index 0000000..2b875b5
--- /dev/null
+++ b/stow/waybar/.config/waybar/style-light.css
@@ -0,0 +1,10 @@
+@define-color foreground rgb(202, 202, 202);
+@define-color background rgb(  3,   3,   3);
+
+@define-color highlight-background alpha(@foreground, 0.4);
+
+* {
+    color: @foreground;
+    background-color: red;
+}
+
diff --git a/stow/waybar/.config/waybar/style.css b/stow/waybar/.config/waybar/style.css
index f9fe080..957cb40 100644
--- a/stow/waybar/.config/waybar/style.css
+++ b/stow/waybar/.config/waybar/style.css
@@ -9,72 +9,41 @@
  * - round.css
  */
 
-@define-color transparent-black rgba(23, 23, 23, 0.9); 
-@define-color white #ecf0f1;
-@define-color warning-red #eb4d4b;
-@define-color accent #00897b;
+@import "modern.css";
 
-window#waybar {
-    font-family: letter, "Font Awesome 6 Free", font-awesome, monospace;
-    font-size: 13px;
-    -webkit-font-smoothing: antialiased;
-    transition-property: background-color;
-    transition-duration: .5s;
-}
-
-#window, #workspaces {
-    margin: 0 5px;
-}
-
-#workspaces button {
-    border: none;
-    border-radius: 0;
-    min-width: 30px; 
-    padding: 0 5px;
-}
-
-#workspaces button.focused {
-    background-color: transparent;
-    color: @white;
-}
-
-#workspaces button:hover {
-    background-color: transparent;
-    color: @transparent-black;
-}
-
-#workspaces button.urgent {
-    color: @white; 
-    background-color: @warning-red;
-}
-
-/* All modules individually. */
-#backlight,
-#battery,
+#disk,
 #bluetooth,
 #clock,
-#cpu,
 #custom-browser,
-#custom-light-dark-toggle,
-#custom-night-light-toggle,
-#custom-system-lock, #custom-system-sleep, #custom-system-hibernate, #custom-system-reboot, #custom-system-shutdown,
+#custom-scratchpad-indicator,
+#custom-system-hibernate, #custom-system-lock, #custom-system-reboot, #custom-system-shutdown, #custom-system-sleep,
+#custom-toggle-light-dark,
+#custom-toggle-night-light,
 #custom-toggle-notifications,
-#disk,
-#group-hardware,
-#group-system,
+#cpu,
 #idle_inhibitor,
 #keyboard-state,
 #memory,
-#mode,
-#mpd,
 #mpris,
 #network,
+#sway-language,
+#sway-window,
 #power-profiles-daemon,
-#privacy-item.audio-in, #privacy-item.audio-out, #privacy-item.screenshare,
+#privacy,
 #pulseaudio,
 #temperature,
 #tray {
-    padding: 0 5px;
+    padding: 0 4px;
+}
+
+/* FIXME */
+#battery {
+    padding: 0 0 0 4px;
+}
+
+#window,
+#workspaces {
+    margin: 0 4px;
 }
 
 /* If workspaces is the leftmost module, omit left margin */
@@ -87,19 +56,6 @@ window#waybar {
     margin-right: 0;
 }
 
-@keyframes blink {
-    to {
-        background-color: #ffffff;
-        color: #000000;
-    }
-}
-
-label:focus {
-    background-color: #000000;
-}
-
-/* Module specific colours */
-
 #battery.charging, #battery.plugged {
     color: #ffffff;
     background-color: #26A65B;
@@ -122,27 +78,32 @@ label:focus {
     opacity: 0.6;
 }
 
+#idle_inhibitor.activated {
+    background-color: #ecf0f1;
+    color: #2d3436;
+}
+
 #mpris {
-    color: #2a5c45;
+    color: #ecf0f1;
     min-width: 100px;
 }
 
 #mpris.spotify {
     background-color: #66cc99;
+    color: #2a5c45;
 }
 
 #mpris.vlc {
     background-color: #ffa000;
 }
 
-#temperature.critical {
-    background-color: #eb4d4b;
+#mpris.Feishin {
+    background: rgb(170,92,195);
+    background: linear-gradient(90deg, rgba(170,92,195,1) 0%, rgba(0,164,220,1) 100%);
 }
 
-#custom_light-dark-toggle.activated,
-#idle_inhibitor.activated {
-    background-color: #ecf0f1;
-    color: #2d3436;
+#temperature.critical {
+    background-color: @warning-red;
 }
 
 #tray > .passive {
@@ -151,15 +112,34 @@ label:focus {
 
 #tray > .needs-attention {
     -gtk-icon-effect: highlight;
-    background-color: #eb4d4b;
+    background-color: @warning-red;
 }
 
-#privacy-item.audio-in,
-#privacy-item.audio-out,
-#privacy-item.screenshare {
-    background-color: #ffaa01;
-    color: #2d3436;
+#workspaces button.focused {
+    box-shadow: none;
 }
 
-@import "sharp.css";
+button {
+    /* Avoid rounded borders under each button name */
+    border: none;
+    border-radius: 0;
+    box-shadow: none;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+    background: inherit;
+    box-shadow: none;
+}
+
+label:focus {
+    background-color: #000000;
+}
+
+@keyframes blink {
+    to {
+        background-color: #ffffff;
+        color: #000000;
+    }
+}