From 8f453f4828a05b565a6d164c9ff09ed1a32f4bae Mon Sep 17 00:00:00 2001 From: Jet Date: Tue, 12 May 2026 21:25:55 -0700 Subject: [PATCH 01/25] feat: fix printer settings --- configuration.nix | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/configuration.nix b/configuration.nix index 1985f8d..20d9d5d 100644 --- a/configuration.nix +++ b/configuration.nix @@ -43,7 +43,7 @@ }; systemd.services.tailscale-set-operator = { - description = "Set Tailscale operator user"; + description = "Set Tailscale local preferences"; after = [ "tailscaled.service" ]; requires = [ "tailscaled.service" ]; wantedBy = [ "multi-user.target" ]; @@ -52,6 +52,7 @@ path = [ pkgs.tailscale ]; script = '' tailscale set --operator=jet + tailscale set --exit-node-allow-lan-access=true ''; }; @@ -279,8 +280,19 @@ security.polkit.enable = true; programs.gphoto2.enable = true; + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + services.printing.enable = true; + hardware.sane = { + enable = true; + extraBackends = [ pkgs.sane-airscan ]; + }; + services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { @@ -317,6 +329,8 @@ "render" "docker" "camera" + "scanner" + "lp" ]; }; @@ -395,8 +409,11 @@ docker-compose exfatprogs flatpak - wget nh + sane-airscan + sane-backends + simple-scan + wget ]; programs.steam.enable = true; From 0c1907ab2303cb44a60f3ff97d24f8a6f3dac668 Mon Sep 17 00:00:00 2001 From: Jet Date: Tue, 12 May 2026 21:26:51 -0700 Subject: [PATCH 02/25] update: nfu --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 2f1cdc7..fe514ac 100644 --- a/flake.lock +++ b/flake.lock @@ -127,11 +127,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1778477882, - "narHash": "sha256-iOp0UB1x7oYFKUWdJotH/9LESqB31jDq4z2RFVbos50=", + "lastModified": 1778551011, + "narHash": "sha256-woJV7tJwwzjR0xWDNuGpwMENe/OEMAdSGg+nqWs9tUE=", "owner": "helix-editor", "repo": "helix", - "rev": "a8b359b0f3398f42a71a6aade83bba5ef5aa4945", + "rev": "8c41b11607924f7584b77c8a6e6b16439a2f559f", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778503501, - "narHash": "sha256-08L/X4/do7nET4rzidJ76eV/1r+mB7DchVpdPypsghc=", + "lastModified": 1778628724, + "narHash": "sha256-VNG6hJ146VEenXcDrB3t6MVnrMx+gtyCWTCDkzOp9Qs=", "owner": "nix-community", "repo": "home-manager", - "rev": "85ba629c79449badf4338117c27f0ee92b4b9f1a", + "rev": "6a0bbd6b4720da1c9ce7ebf35ff5c41a82db367a", "type": "github" }, "original": { @@ -246,11 +246,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1778143761, - "narHash": "sha256-lkesY6x2X2qxlqLM7CT2iM/0rP2JB7fruPN3h8POXmI=", + "lastModified": 1778593042, + "narHash": "sha256-xYGrSg6354UK2K4WSQd4+TfyvfqmvFbSY+ZtGQUXK0c=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "3bcaa367d4c550d687a17ac792fd5cda214ee871", + "rev": "9bd7c80d43e258aaa607d83b43661df11444d808", "type": "github" }, "original": { @@ -290,11 +290,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1777954456, - "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { @@ -322,11 +322,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1777954456, - "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778530041, - "narHash": "sha256-aIoslL3ptPnlRCmySVQagGR1p0VNb5LwT1US9Md+Mz0=", + "lastModified": 1778645506, + "narHash": "sha256-7FokJ6hpBnJc/c3UsVhs2NiyeNZxLGGZY2qmY96v/78=", "owner": "nix-community", "repo": "NUR", - "rev": "e76cf17c296da4c155cac338b4c4685487028cbd", + "rev": "7e7807470cc4b68c8d9e95dbaa0fce7adb5c782b", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778530945, - "narHash": "sha256-agN68MSFF3MRgo5/G0dsmRaIc8hnrjyZSHiJGG/92Bw=", + "lastModified": 1778646091, + "narHash": "sha256-CRkWq5+WdHaMa7RBEN9C4VtQ0Mr9iyiYMjoGgvGrdZA=", "owner": "anomalyco", "repo": "opencode", - "rev": "9067218b74874bdffd3a53142c6b2d0ff65bb479", + "rev": "67e6408ceff89ec3ed3f56c8e96df539607e8504", "type": "github" }, "original": { @@ -449,11 +449,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1777991278, - "narHash": "sha256-tM0JFurV6BwOdmBcGi96th/dzgN9KQbkK7FKmdsM5Zo=", + "lastModified": 1778598708, + "narHash": "sha256-zEqv3NDSUYY+09VDLupqY96bfN5gkb/OjPbJFp1/vvM=", "owner": "jetpham", "repo": "nix-t3code", - "rev": "47257aeb62d037a0550294ec17698f59c4297444", + "rev": "87ed3952374699b1fb67e7bd7e051d6a48125aff", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1778394798, - "narHash": "sha256-/jR8bModWv0ji305ecMgAB+2eaXLZiYdH+9Z4JIRkuA=", + "lastModified": 1778585655, + "narHash": "sha256-yfxy9aTlIgU2Z36H8cJURgYLgjT4qvFeOzoAC/HXcKM=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "45bc54456044b96492923739bfae633e1a4352e1", + "rev": "42f41abcef13dc81c85407b57aa1fd1bde46e46c", "type": "github" }, "original": { From 6a09fb4832ccd92cddead470203308ceba048e95 Mon Sep 17 00:00:00 2001 From: Jet Date: Wed, 13 May 2026 15:08:41 -0700 Subject: [PATCH 03/25] updat: nfu --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index fe514ac..a08cb97 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1778507667, - "narHash": "sha256-OxYiulGeX6PRtVXRlYvAQliI25X3KgZ5IUVkctuVvIU=", + "lastModified": 1778705014, + "narHash": "sha256-w6IojREyFkGvqW78BPCcz4sg7oEYx7YzJs6xgAN6LWA=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "b0f8276658fbcc75318d2125d40146074a3fc505", + "rev": "b23d567cd89874ffe218036536a2aec52851f34f", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778628724, - "narHash": "sha256-VNG6hJ146VEenXcDrB3t6MVnrMx+gtyCWTCDkzOp9Qs=", + "lastModified": 1778706808, + "narHash": "sha256-ihH1UnI6nYSOkjAg4QsOadg6sp2LxXnWO9urPbo3/hw=", "owner": "nix-community", "repo": "home-manager", - "rev": "6a0bbd6b4720da1c9ce7ebf35ff5c41a82db367a", + "rev": "9760b31dab3016fc6e422ca241cfeac605fb89c9", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778645506, - "narHash": "sha256-7FokJ6hpBnJc/c3UsVhs2NiyeNZxLGGZY2qmY96v/78=", + "lastModified": 1778709436, + "narHash": "sha256-btIl+AOSUihbrdICxJf23mSrj87fpr5VnfFMRJrz2Uo=", "owner": "nix-community", "repo": "NUR", - "rev": "7e7807470cc4b68c8d9e95dbaa0fce7adb5c782b", + "rev": "ce3d54dc7ae49b25f9183feb1ad0b36b21808ccc", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778646091, - "narHash": "sha256-CRkWq5+WdHaMa7RBEN9C4VtQ0Mr9iyiYMjoGgvGrdZA=", + "lastModified": 1778709906, + "narHash": "sha256-hjLkh7EI+sQIkpeNYNm4hBS7HXwuHazCitaYKmUrOt0=", "owner": "anomalyco", "repo": "opencode", - "rev": "67e6408ceff89ec3ed3f56c8e96df539607e8504", + "rev": "44b432c3fde168bd5fb43ee1fc9dd50b29ed71ea", "type": "github" }, "original": { From ec8edc2caa97fae2e0a6035e1fdb5083d6816f77 Mon Sep 17 00:00:00 2001 From: Jet Date: Wed, 13 May 2026 21:30:58 -0700 Subject: [PATCH 04/25] update: nfu --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index a08cb97..ed355a2 100644 --- a/flake.lock +++ b/flake.lock @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778706808, - "narHash": "sha256-ihH1UnI6nYSOkjAg4QsOadg6sp2LxXnWO9urPbo3/hw=", + "lastModified": 1778728372, + "narHash": "sha256-8pArLaovyMHR9VHa6eVk4e5vgvDS+Dg9J8pxPBjAE18=", "owner": "nix-community", "repo": "home-manager", - "rev": "9760b31dab3016fc6e422ca241cfeac605fb89c9", + "rev": "f04b141d1a0d6d7d62aa9678aef602dfb61e8bb1", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778709436, - "narHash": "sha256-btIl+AOSUihbrdICxJf23mSrj87fpr5VnfFMRJrz2Uo=", + "lastModified": 1778731108, + "narHash": "sha256-Po4s1bAWS3LjJts5HxrSR0AXRj84RRAXvzaHH5i6uuQ=", "owner": "nix-community", "repo": "NUR", - "rev": "ce3d54dc7ae49b25f9183feb1ad0b36b21808ccc", + "rev": "e8384938770f2d43425d60ad6d9226285584f102", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778709906, - "narHash": "sha256-hjLkh7EI+sQIkpeNYNm4hBS7HXwuHazCitaYKmUrOt0=", + "lastModified": 1778732732, + "narHash": "sha256-vLapTunH38l5O2KC2w3dK72w2I7nINwFcH2+XaE9SjE=", "owner": "anomalyco", "repo": "opencode", - "rev": "44b432c3fde168bd5fb43ee1fc9dd50b29ed71ea", + "rev": "c2723b5ea070ed7e45cc241ac64c0760d427fc56", "type": "github" }, "original": { From da6441033843ca93b8132590b7cb5afbca838b17 Mon Sep 17 00:00:00 2001 From: Jet Date: Thu, 14 May 2026 13:23:35 -0700 Subject: [PATCH 05/25] update: nfu --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index ed355a2..e30f2f1 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1778705014, - "narHash": "sha256-w6IojREyFkGvqW78BPCcz4sg7oEYx7YzJs6xgAN6LWA=", + "lastModified": 1778783227, + "narHash": "sha256-5FhcEOS+9jKwMjt+67DIKwZvdDZ7gJkd9k4BolwIKek=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "b23d567cd89874ffe218036536a2aec52851f34f", + "rev": "96848d792e0ea2ed87125ee286f50399cac1aa5b", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778728372, - "narHash": "sha256-8pArLaovyMHR9VHa6eVk4e5vgvDS+Dg9J8pxPBjAE18=", + "lastModified": 1778781368, + "narHash": "sha256-t7GW8f4So0b+ATPACjTkCy9UesbSidDW3X9w3utVC1A=", "owner": "nix-community", "repo": "home-manager", - "rev": "f04b141d1a0d6d7d62aa9678aef602dfb61e8bb1", + "rev": "c68d2a24376da3860ef161373d91348b1542356b", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778731108, - "narHash": "sha256-Po4s1bAWS3LjJts5HxrSR0AXRj84RRAXvzaHH5i6uuQ=", + "lastModified": 1778789255, + "narHash": "sha256-32TUBtD7+jDu/yDLdvVXFUZcjykgoGopYM6FjNegi6w=", "owner": "nix-community", "repo": "NUR", - "rev": "e8384938770f2d43425d60ad6d9226285584f102", + "rev": "7f2a804a9db589ee0fd8452a4ecfdeb6a9091d3e", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778732732, - "narHash": "sha256-vLapTunH38l5O2KC2w3dK72w2I7nINwFcH2+XaE9SjE=", + "lastModified": 1778790034, + "narHash": "sha256-d+yR6o2dSaVTh2aykG8gjcTNTWgnuv2PlMKOwr+q2Yk=", "owner": "anomalyco", "repo": "opencode", - "rev": "c2723b5ea070ed7e45cc241ac64c0760d427fc56", + "rev": "83c145f889a8e2949e7595f63e6d0424f2f20d3f", "type": "github" }, "original": { From 3f63ea493422d5022183fb368283e8a28c241e26 Mon Sep 17 00:00:00 2001 From: Jet Date: Thu, 14 May 2026 13:23:35 -0700 Subject: [PATCH 06/25] feat: fix switch-to-workspace keybinds --- home-modules/desktop.nix | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index 32dafd1..0d30de6 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -188,13 +188,21 @@ in "org/gnome/shell/extensions/auto-move-windows" = { application-list = autoMoveApplications; }; + "org/gnome/desktop/wm/keybindings" = { + switch-to-workspace-1 = [ "1" ]; + switch-to-workspace-2 = [ "2" ]; + switch-to-workspace-3 = [ "3" ]; + switch-to-workspace-4 = [ "4" ]; + switch-to-workspace-5 = [ "5" ]; + switch-to-workspace-6 = [ "6" ]; + }; "org/gnome/shell/keybindings" = { - switch-to-application-1 = [ "1" ]; - switch-to-application-2 = [ "2" ]; - switch-to-application-3 = [ "3" ]; - switch-to-application-4 = [ "4" ]; - switch-to-application-5 = [ "5" ]; - switch-to-application-6 = [ "6" ]; + switch-to-application-1 = [ ]; + switch-to-application-2 = [ ]; + switch-to-application-3 = [ ]; + switch-to-application-4 = [ ]; + switch-to-application-5 = [ ]; + switch-to-application-6 = [ ]; }; "org/gtk/gtk4/settings/file-chooser" = { show-hidden = true; From bd7097e1c7d7d550d17f198b3e62c711bac70cc6 Mon Sep 17 00:00:00 2001 From: Jet Date: Thu, 14 May 2026 16:51:23 -0700 Subject: [PATCH 07/25] update: nfu --- configuration.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 20d9d5d..65fef62 100644 --- a/configuration.nix +++ b/configuration.nix @@ -195,7 +195,6 @@ gnome-logs gnome-maps gnome-music - gnome-system-monitor gnome-text-editor gnome-tour gnome-weather From 5a6fb9619be037420cd3fbc8de18abaf88ae3a92 Mon Sep 17 00:00:00 2001 From: Jet Date: Fri, 15 May 2026 13:45:26 -0700 Subject: [PATCH 08/25] update: nfu --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index e30f2f1..a3bd5b4 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1778783227, - "narHash": "sha256-5FhcEOS+9jKwMjt+67DIKwZvdDZ7gJkd9k4BolwIKek=", + "lastModified": 1778817026, + "narHash": "sha256-aedUJjLhkF7ZOLAeYy10hjHuU40Hv1oQa1QLFlpcNoo=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "96848d792e0ea2ed87125ee286f50399cac1aa5b", + "rev": "0071971b577c6ef6396cfe99684b466757bf0ef9", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778781368, - "narHash": "sha256-t7GW8f4So0b+ATPACjTkCy9UesbSidDW3X9w3utVC1A=", + "lastModified": 1778876681, + "narHash": "sha256-9XOIxYLBp+sJsPWNnNyk1aVfYXuuRJZ4Anpplm9Tn8g=", "owner": "nix-community", "repo": "home-manager", - "rev": "c68d2a24376da3860ef161373d91348b1542356b", + "rev": "c7fad8197070948d8aa02cb8922240ee129cab2e", "type": "github" }, "original": { @@ -211,11 +211,11 @@ ] }, "locked": { - "lastModified": 1777594677, - "narHash": "sha256-h90sHwoRJLRvaTpZroTvU2JRHDFj0czUafM8eqLe1RI=", + "lastModified": 1778805320, + "narHash": "sha256-nGFJ01m2CTBKD4ABtcY4vLhHrRN91LKr/pn41PcU78A=", "owner": "nix-community", "repo": "home-manager", - "rev": "899c08a15beae5da51a5cecd6b2b994777a948da", + "rev": "9846abe15e7d0d36b8acbd4d05f2b87461744c92", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778789255, - "narHash": "sha256-32TUBtD7+jDu/yDLdvVXFUZcjykgoGopYM6FjNegi6w=", + "lastModified": 1778877301, + "narHash": "sha256-YK1KmOKZ8/J/9jnSz9dgONpnC8RZ+bfuchNG8TaRlGI=", "owner": "nix-community", "repo": "NUR", - "rev": "7f2a804a9db589ee0fd8452a4ecfdeb6a9091d3e", + "rev": "0990d705a46609c81c6d078f6a967cda3d6628f0", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778790034, - "narHash": "sha256-d+yR6o2dSaVTh2aykG8gjcTNTWgnuv2PlMKOwr+q2Yk=", + "lastModified": 1778877598, + "narHash": "sha256-SSEd0qgcn1H/i1mLbpNDHf5vKYsmrN1RnLCmzAX/Y8o=", "owner": "anomalyco", "repo": "opencode", - "rev": "83c145f889a8e2949e7595f63e6d0424f2f20d3f", + "rev": "f060874b293a0e8880f1968751aff3a1b32aeb58", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1778585655, - "narHash": "sha256-yfxy9aTlIgU2Z36H8cJURgYLgjT4qvFeOzoAC/HXcKM=", + "lastModified": 1778846616, + "narHash": "sha256-cqNwCnEdzUlUgNk9c3bVkXnEfmhzHvHre2Nr2C0sIfo=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "42f41abcef13dc81c85407b57aa1fd1bde46e46c", + "rev": "3e3671b5f0e7c60e8f10bdf8667598603203546a", "type": "github" }, "original": { From 5e10d2d37beee8ea32265282a61255bcddb064ab Mon Sep 17 00:00:00 2001 From: Jet Date: Sat, 16 May 2026 21:24:43 -0700 Subject: [PATCH 09/25] feat: reduce motion gnome extension --- .../reduced-motion-toggle/extension.js | 96 +++++++++++++++++++ .../reduced-motion-toggle/metadata.json | 6 ++ home-modules/desktop.nix | 1 + home-modules/packages.nix | 18 ++++ 4 files changed, 121 insertions(+) create mode 100644 gnome-extensions/reduced-motion-toggle/extension.js create mode 100644 gnome-extensions/reduced-motion-toggle/metadata.json diff --git a/gnome-extensions/reduced-motion-toggle/extension.js b/gnome-extensions/reduced-motion-toggle/extension.js new file mode 100644 index 0000000..8125f19 --- /dev/null +++ b/gnome-extensions/reduced-motion-toggle/extension.js @@ -0,0 +1,96 @@ +import Gio from 'gi://Gio'; +import GObject from 'gi://GObject'; + +import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; +import * as QuickSettings from 'resource:///org/gnome/shell/ui/quickSettings.js'; + +const INTERFACE_SCHEMA = 'org.gnome.desktop.interface'; +const ENABLE_ANIMATIONS_KEY = 'enable-animations'; + +const ReducedMotionToggle = GObject.registerClass( +class ReducedMotionToggle extends QuickSettings.QuickToggle { + constructor() { + super({ + title: 'Reduced Motion', + subtitle: 'Prefer fewer animations', + iconName: 'preferences-desktop-accessibility-symbolic', + toggleMode: true, + }); + + this._settings = new Gio.Settings({schema_id: INTERFACE_SCHEMA}); + this._syncing = false; + this._changedId = this._settings.connect( + `changed::${ENABLE_ANIMATIONS_KEY}`, + () => this._sync() + ); + this._checkedId = this.connect('notify::checked', () => { + if (!this._syncing) + this._settings.set_boolean(ENABLE_ANIMATIONS_KEY, !this.checked); + }); + + this._sync(); + } + + _sync() { + const reducedMotionEnabled = !this._settings.get_boolean(ENABLE_ANIMATIONS_KEY); + + if (this.checked === reducedMotionEnabled) + return; + + this._syncing = true; + this.checked = reducedMotionEnabled; + this._syncing = false; + } + + destroy() { + if (this._changedId) { + this._settings.disconnect(this._changedId); + this._changedId = null; + } + + if (this._checkedId) { + this.disconnect(this._checkedId); + this._checkedId = null; + } + + super.destroy(); + } +}); + +const ReducedMotionIndicator = GObject.registerClass( +class ReducedMotionIndicator extends QuickSettings.SystemIndicator { + constructor() { + super(); + + this._indicator = this._addIndicator(); + this._indicator.icon_name = 'preferences-desktop-accessibility-symbolic'; + + this._toggle = new ReducedMotionToggle(); + this._indicator.visible = this._toggle.checked; + this._toggle.connect('notify::checked', () => { + this._indicator.visible = this._toggle.checked; + }); + + this.quickSettingsItems.push(this._toggle); + } + + destroy() { + this.quickSettingsItems.forEach(item => item.destroy()); + this._toggle = null; + + super.destroy(); + } +}); + +export default class ReducedMotionToggleExtension extends Extension { + enable() { + this._indicator = new ReducedMotionIndicator(); + Main.panel.statusArea.quickSettings.addExternalIndicator(this._indicator); + } + + disable() { + this._indicator.destroy(); + this._indicator = null; + } +} diff --git a/gnome-extensions/reduced-motion-toggle/metadata.json b/gnome-extensions/reduced-motion-toggle/metadata.json new file mode 100644 index 0000000..02bfee0 --- /dev/null +++ b/gnome-extensions/reduced-motion-toggle/metadata.json @@ -0,0 +1,6 @@ +{ + "uuid": "reduced-motion-toggle@jetpham.github.com", + "name": "Reduced Motion Toggle", + "description": "Adds a Quick Settings toggle for GNOME's reduced motion preference.", + "shell-version": ["49"] +} diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index 0d30de6..e84261c 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -182,6 +182,7 @@ in "appindicatorsupport@rgcjonas.gmail.com" "gnome-shell-extension-maximized-by-default@stiggimy.github.com" "no-titlebar-when-maximized@alec.ninja" + "reduced-motion-toggle@jetpham.github.com" ]; favorite-apps = favoriteApps; }; diff --git a/home-modules/packages.nix b/home-modules/packages.nix index e1b2d35..72200c2 100644 --- a/home-modules/packages.nix +++ b/home-modules/packages.nix @@ -5,6 +5,23 @@ ... }: +let + reducedMotionToggleExtension = pkgs.stdenvNoCC.mkDerivation { + pname = "gnome-shell-extension-reduced-motion-toggle"; + version = "1"; + src = ../gnome-extensions/reduced-motion-toggle; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/share/gnome-shell/extensions/reduced-motion-toggle@jetpham.github.com" + cp -r . "$out/share/gnome-shell/extensions/reduced-motion-toggle@jetpham.github.com" + + runHook postInstall + ''; + }; +in + { home.packages = with pkgs; [ bat @@ -88,6 +105,7 @@ gnomeExtensions.system-monitor-next gnomeExtensions.tailscale-qs gnomeExtensions.wifi-qrcode + reducedMotionToggleExtension nerd-fonts.commit-mono ]; From 35d0d6923e5be0e1d570e4ac494ba249e4ef83fb Mon Sep 17 00:00:00 2001 From: Jet Date: Sat, 16 May 2026 21:28:03 -0700 Subject: [PATCH 10/25] update:nfu --- flake.lock | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index a3bd5b4..92c3d12 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1778817026, - "narHash": "sha256-aedUJjLhkF7ZOLAeYy10hjHuU40Hv1oQa1QLFlpcNoo=", + "lastModified": 1778978538, + "narHash": "sha256-jas0VWnSkFk1sPpLav3vMFqHKRW+7Qzne6yQmXJ4dig=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "0071971b577c6ef6396cfe99684b466757bf0ef9", + "rev": "e90b7c9fadadb5b7f936506dfd4f995729093108", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778876681, - "narHash": "sha256-9XOIxYLBp+sJsPWNnNyk1aVfYXuuRJZ4Anpplm9Tn8g=", + "lastModified": 1778954430, + "narHash": "sha256-oaNyOr05lblaQdtbkbN1wO0b2KLIL2O1LkmwDgdQp4I=", "owner": "nix-community", "repo": "home-manager", - "rev": "c7fad8197070948d8aa02cb8922240ee129cab2e", + "rev": "26aaab785b0bab4af60a2c42b22760fa906ef22a", "type": "github" }, "original": { @@ -246,11 +246,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1778593042, - "narHash": "sha256-xYGrSg6354UK2K4WSQd4+TfyvfqmvFbSY+ZtGQUXK0c=", + "lastModified": 1778945272, + "narHash": "sha256-Aipz0UiBhE2a1FYJrNc2y+5vKWo5QVkhmaIJk3/ls+g=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "9bd7c80d43e258aaa607d83b43661df11444d808", + "rev": "379c1f274f0fa354d012f0600806de54e79f29b5", "type": "github" }, "original": { @@ -290,11 +290,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1778443072, - "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", "type": "github" }, "original": { @@ -322,11 +322,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1778443072, - "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778877301, - "narHash": "sha256-YK1KmOKZ8/J/9jnSz9dgONpnC8RZ+bfuchNG8TaRlGI=", + "lastModified": 1778991107, + "narHash": "sha256-Q/x+TiM4CmREXUh7Q7X7OIRr4kmWgMTYpID4QpGWJdE=", "owner": "nix-community", "repo": "NUR", - "rev": "0990d705a46609c81c6d078f6a967cda3d6628f0", + "rev": "41e6be42801d2cbcbb13c1eb0e5705ad3d5cd4c0", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778877598, - "narHash": "sha256-SSEd0qgcn1H/i1mLbpNDHf5vKYsmrN1RnLCmzAX/Y8o=", + "lastModified": 1778952804, + "narHash": "sha256-iC7RV9zdFh1ldxrTf4nuzGNf7TOuQDKsCNcb35j7bTs=", "owner": "anomalyco", "repo": "opencode", - "rev": "f060874b293a0e8880f1968751aff3a1b32aeb58", + "rev": "be6a89a3b89bcdbd359948078360591a84e91f04", "type": "github" }, "original": { @@ -449,11 +449,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1778598708, - "narHash": "sha256-zEqv3NDSUYY+09VDLupqY96bfN5gkb/OjPbJFp1/vvM=", + "lastModified": 1778940218, + "narHash": "sha256-jZ9fPgH9s3+R0uU4s9OhyPXOufo1Seh0Y7wzYz0qAr8=", "owner": "jetpham", "repo": "nix-t3code", - "rev": "87ed3952374699b1fb67e7bd7e051d6a48125aff", + "rev": "b4b106ccd832a15a6f3d89796538555437796e18", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1778846616, - "narHash": "sha256-cqNwCnEdzUlUgNk9c3bVkXnEfmhzHvHre2Nr2C0sIfo=", + "lastModified": 1778919017, + "narHash": "sha256-P2+aRay2sPQGVXzNmiD4yYlhy4ytxqBvT4A2OLOvkoU=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "3e3671b5f0e7c60e8f10bdf8667598603203546a", + "rev": "7c41a80acc12ab012448b84aec90ca9b4bf8b9ac", "type": "github" }, "original": { From d276c2d788c3803d245d54d71c4fca8460d4b6b2 Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 17 May 2026 10:31:37 -0700 Subject: [PATCH 11/25] update: nfu --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 92c3d12..f91eab1 100644 --- a/flake.lock +++ b/flake.lock @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1778954430, - "narHash": "sha256-oaNyOr05lblaQdtbkbN1wO0b2KLIL2O1LkmwDgdQp4I=", + "lastModified": 1779027260, + "narHash": "sha256-ZbgWWFQmSyM3HQ31nAZk2hJ7OSeNr9uRFHL8jCifY9M=", "owner": "nix-community", "repo": "home-manager", - "rev": "26aaab785b0bab4af60a2c42b22760fa906ef22a", + "rev": "bcb774cfc3268120cd61808629f9aa7dad3750a2", "type": "github" }, "original": { @@ -231,11 +231,11 @@ ] }, "locked": { - "lastModified": 1778393439, - "narHash": "sha256-mOtQxUjtKaPHLeoLOY/YEDctmud1X9KwJr4kE1MJ3Wc=", + "lastModified": 1778999127, + "narHash": "sha256-V5GquqJvAqwFTcpN6hxKSQAtwuJFRUEHmyNKbeaTQDg=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "01466c414c7357ae2ce32be4a272a7c69e94ab5f", + "rev": "f680e0d3c1dbefe298c423691662e238496890f2", "type": "github" }, "original": { @@ -246,11 +246,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1778945272, - "narHash": "sha256-Aipz0UiBhE2a1FYJrNc2y+5vKWo5QVkhmaIJk3/ls+g=", + "lastModified": 1779034340, + "narHash": "sha256-zhMjgfsnNPcZtMhhWoeyaUV7JVEJ4rm5YJ0whwTfo8M=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "379c1f274f0fa354d012f0600806de54e79f29b5", + "rev": "88e6bd5c2db9e0b098d8ccb081f35fe33f0f3186", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1778991107, - "narHash": "sha256-Q/x+TiM4CmREXUh7Q7X7OIRr4kmWgMTYpID4QpGWJdE=", + "lastModified": 1779037589, + "narHash": "sha256-2n9opCEGrWci7vByHsM1aQz3P0Kg5JiZo7duGCglHWQ=", "owner": "nix-community", "repo": "NUR", - "rev": "41e6be42801d2cbcbb13c1eb0e5705ad3d5cd4c0", + "rev": "9e1672e2df6286c34b0733c80147bcd54f1a29cc", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1778952804, - "narHash": "sha256-iC7RV9zdFh1ldxrTf4nuzGNf7TOuQDKsCNcb35j7bTs=", + "lastModified": 1779038139, + "narHash": "sha256-iDyGzQMWxvhhAqeii1PkqoM1dYYAnsnhGr5yml/jX2s=", "owner": "anomalyco", "repo": "opencode", - "rev": "be6a89a3b89bcdbd359948078360591a84e91f04", + "rev": "468eb68878974f555ae2a03575d52d716f26e029", "type": "github" }, "original": { From da72bc5483078d1cabab1d956eaf0668dec244cf Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 17 May 2026 10:58:42 -0700 Subject: [PATCH 12/25] feat: set opencode db path explicitly --- configuration.nix | 1 + home-modules/lib.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/configuration.nix b/configuration.nix index 65fef62..18d4bd0 100644 --- a/configuration.nix +++ b/configuration.nix @@ -90,6 +90,7 @@ serviceConfig = { Type = "simple"; User = "jet"; + Environment = [ "OPENCODE_DB=opencode.db" ]; Restart = "always"; RestartSec = 5; TimeoutStartSec = 75; diff --git a/home-modules/lib.nix b/home-modules/lib.nix index a4ef031..89513c2 100644 --- a/home-modules/lib.nix +++ b/home-modules/lib.nix @@ -16,6 +16,7 @@ let nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram "$out/bin/opencode" \ + --set OPENCODE_DB opencode.db \ --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" ''; }; From d6f032e52e91c2722077b8d4acae25f08c24a342 Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 17 May 2026 15:27:14 -0700 Subject: [PATCH 13/25] feat: add evil bit support --- gnome-extensions/evil-bit-toggle/extension.js | 151 ++++++++++++++++++ .../evil-bit-toggle/metadata.json | 6 + home-modules/desktop.nix | 1 + home-modules/packages.nix | 81 ++++++++++ 4 files changed, 239 insertions(+) create mode 100644 gnome-extensions/evil-bit-toggle/extension.js create mode 100644 gnome-extensions/evil-bit-toggle/metadata.json diff --git a/gnome-extensions/evil-bit-toggle/extension.js b/gnome-extensions/evil-bit-toggle/extension.js new file mode 100644 index 0000000..ca2346c --- /dev/null +++ b/gnome-extensions/evil-bit-toggle/extension.js @@ -0,0 +1,151 @@ +import Gio from 'gi://Gio'; +import GLib from 'gi://GLib'; +import GObject from 'gi://GObject'; + +import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; +import * as QuickSettings from 'resource:///org/gnome/shell/ui/quickSettings.js'; + +const EVIL_BIT_CTL = '@evilBitCtl@'; +const PKEXEC = '/run/wrappers/bin/pkexec'; +const STATE_FILE = '/run/evil-bit-toggle/enabled'; +const ICON_NAME = 'dialog-warning-symbolic'; + +const EvilBitToggle = GObject.registerClass( +class EvilBitToggle extends QuickSettings.QuickToggle { + constructor() { + super({ + title: 'Evil Bit', + subtitle: 'RFC 3514: good', + iconName: ICON_NAME, + toggleMode: true, + }); + + this._syncing = false; + this._pending = false; + this._destroyed = false; + this._syncFromState(); + + this._checkedId = this.connect('notify::checked', () => { + if (this._syncing) + return; + + this._setEvilBit(this.checked); + }); + } + + _isEnabled() { + return GLib.file_test(STATE_FILE, GLib.FileTest.EXISTS); + } + + _syncFromState() { + this._syncing = true; + this.checked = this._isEnabled(); + this._syncing = false; + this._syncSubtitle(); + } + + _setEvilBit(enabled) { + if (this._pending) + return; + + this._pending = true; + this.reactive = false; + this.subtitle = 'Applying...'; + + const action = enabled ? 'enable' : 'disable'; + let proc; + + try { + proc = Gio.Subprocess.new( + [PKEXEC, EVIL_BIT_CTL, action], + Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE + ); + } catch (error) { + this._finishSetEvilBit(error); + return; + } + + proc.communicate_utf8_async(null, null, (subprocess, result) => { + try { + const [, , stderr] = subprocess.communicate_utf8_finish(result); + + if (!subprocess.get_successful()) + throw new Error(stderr.trim() || `evil-bitctl ${action} failed`); + + this._finishSetEvilBit(null); + } catch (error) { + this._finishSetEvilBit(error); + } + }); + } + + _finishSetEvilBit(error) { + if (error) + console.warn(`Unable to toggle Evil Bit: ${error.message}`); + + if (this._destroyed) + return; + + this._pending = false; + this.reactive = true; + this._syncFromState(); + } + + _syncSubtitle() { + this.subtitle = this.checked ? 'RFC 3514: evil' : 'RFC 3514: good'; + } + + destroy() { + this._destroyed = true; + + if (this._checkedId) { + this.disconnect(this._checkedId); + this._checkedId = null; + } + + super.destroy(); + } +}); + +const EvilBitIndicator = GObject.registerClass( +class EvilBitIndicator extends QuickSettings.SystemIndicator { + constructor() { + super(); + + this._indicator = this._addIndicator(); + this._indicator.icon_name = ICON_NAME; + + this._toggle = new EvilBitToggle(); + this._indicator.visible = this._toggle.checked; + this._checkedId = this._toggle.connect('notify::checked', () => { + this._indicator.visible = this._toggle.checked; + }); + + this.quickSettingsItems.push(this._toggle); + } + + destroy() { + if (this._checkedId) { + this._toggle.disconnect(this._checkedId); + this._checkedId = null; + } + + this.quickSettingsItems.forEach(item => item.destroy()); + this._toggle = null; + + super.destroy(); + } +}); + +export default class EvilBitToggleExtension extends Extension { + enable() { + this._indicator = new EvilBitIndicator(); + Main.panel.statusArea.quickSettings.addExternalIndicator(this._indicator); + } + + disable() { + this._indicator.destroy(); + this._indicator = null; + } +} diff --git a/gnome-extensions/evil-bit-toggle/metadata.json b/gnome-extensions/evil-bit-toggle/metadata.json new file mode 100644 index 0000000..5b78e56 --- /dev/null +++ b/gnome-extensions/evil-bit-toggle/metadata.json @@ -0,0 +1,6 @@ +{ + "uuid": "evil-bit-toggle@jetpham.github.com", + "name": "Evil Bit Toggle", + "description": "Adds a Quick Settings toggle for the RFC 3514 evil bit.", + "shell-version": ["49"] +} diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index e84261c..5cba10c 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -182,6 +182,7 @@ in "appindicatorsupport@rgcjonas.gmail.com" "gnome-shell-extension-maximized-by-default@stiggimy.github.com" "no-titlebar-when-maximized@alec.ninja" + "evil-bit-toggle@jetpham.github.com" "reduced-motion-toggle@jetpham.github.com" ]; favorite-apps = favoriteApps; diff --git a/home-modules/packages.nix b/home-modules/packages.nix index 72200c2..67a740b 100644 --- a/home-modules/packages.nix +++ b/home-modules/packages.nix @@ -6,6 +6,68 @@ }: let + evilBitCtl = pkgs.writeShellApplication { + name = "evil-bitctl"; + runtimeInputs = [ + pkgs.coreutils + pkgs.nftables + ]; + text = '' + state_dir=/run/evil-bit-toggle + state_file="$state_dir/enabled" + table=evil_bit + chain=output + + usage() { + printf 'Usage: evil-bitctl {enable|disable|status}\n' >&2 + exit 64 + } + + enable() { + nft add table ip "$table" 2>/dev/null || true + + if nft list chain ip "$table" "$chain" >/dev/null 2>&1; then + nft flush chain ip "$table" "$chain" + else + nft add chain ip "$table" "$chain" '{ type route hook output priority mangle; policy accept; }' + fi + + nft add rule ip "$table" "$chain" ip frag-off set ip frag-off '|' 0x8000 + install -d -m 0755 "$state_dir" + touch "$state_file" + } + + disable() { + nft delete table ip "$table" 2>/dev/null || true + rm -f "$state_file" + rmdir "$state_dir" 2>/dev/null || true + } + + status() { + if [ -e "$state_file" ] && nft list table ip "$table" >/dev/null 2>&1; then + printf 'enabled\n' + else + printf 'disabled\n' + fi + } + + case "''${1:-}" in + enable) + enable + ;; + disable) + disable + ;; + status) + status + ;; + *) + usage + ;; + esac + ''; + }; + reducedMotionToggleExtension = pkgs.stdenvNoCC.mkDerivation { pname = "gnome-shell-extension-reduced-motion-toggle"; version = "1"; @@ -20,6 +82,24 @@ let runHook postInstall ''; }; + + evilBitToggleExtension = pkgs.stdenvNoCC.mkDerivation { + pname = "gnome-shell-extension-evil-bit-toggle"; + version = "1"; + src = ../gnome-extensions/evil-bit-toggle; + + installPhase = '' + runHook preInstall + + substituteInPlace extension.js \ + --replace-fail @evilBitCtl@ ${evilBitCtl}/bin/evil-bitctl + + mkdir -p "$out/share/gnome-shell/extensions/evil-bit-toggle@jetpham.github.com" + cp -r . "$out/share/gnome-shell/extensions/evil-bit-toggle@jetpham.github.com" + + runHook postInstall + ''; + }; in { @@ -105,6 +185,7 @@ in gnomeExtensions.system-monitor-next gnomeExtensions.tailscale-qs gnomeExtensions.wifi-qrcode + evilBitToggleExtension reducedMotionToggleExtension nerd-fonts.commit-mono From 30ec487e88b52f7f467bd4aa5496c8409b1e3158 Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 17 May 2026 23:59:40 -0700 Subject: [PATCH 14/25] update: nfu --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index f91eab1..5f2c7e6 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1778978538, - "narHash": "sha256-jas0VWnSkFk1sPpLav3vMFqHKRW+7Qzne6yQmXJ4dig=", + "lastModified": 1779069789, + "narHash": "sha256-ojo+gso45/6CVSuqfSVnlWpQ4d0QeLgwok+v/g3yu0E=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "e90b7c9fadadb5b7f936506dfd4f995729093108", + "rev": "4b7bf0b20e3baf9c1ba10c63f2ad1fd853faea8f", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1779027260, - "narHash": "sha256-ZbgWWFQmSyM3HQ31nAZk2hJ7OSeNr9uRFHL8jCifY9M=", + "lastModified": 1779075347, + "narHash": "sha256-ZqttlFPw0meQMdABi8/vgle14OWQ3FkIqUkb4/Mrc+0=", "owner": "nix-community", "repo": "home-manager", - "rev": "bcb774cfc3268120cd61808629f9aa7dad3750a2", + "rev": "08c9d01457badce151aa4a983c475042d9dec018", "type": "github" }, "original": { From 12102ce4f26b21462c7f1a847c621343e825ea99 Mon Sep 17 00:00:00 2001 From: Jet Date: Tue, 19 May 2026 13:56:18 -0700 Subject: [PATCH 15/25] feat: add baobab --- configuration.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 18d4bd0..1887e99 100644 --- a/configuration.nix +++ b/configuration.nix @@ -180,7 +180,6 @@ # Keep GNOME's shell and file-manager integration while dropping apps replaced elsewhere. environment.gnome.excludePackages = with pkgs; [ - baobab decibels epiphany evince From cdb36293c7e8ca12f9af7a35407a6bacc7865d67 Mon Sep 17 00:00:00 2001 From: Jet Date: Tue, 19 May 2026 13:58:28 -0700 Subject: [PATCH 16/25] update: nfu --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 5f2c7e6..a12604f 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1779069789, - "narHash": "sha256-ojo+gso45/6CVSuqfSVnlWpQ4d0QeLgwok+v/g3yu0E=", + "lastModified": 1779223014, + "narHash": "sha256-Q8B2Pw7WrMGrs2c/XFNN8ZzcIdPOzVYPl31hfhgPONI=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "4b7bf0b20e3baf9c1ba10c63f2ad1fd853faea8f", + "rev": "9bcb30aa119b20833d74d4e32104dafe20bd8203", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1779075347, - "narHash": "sha256-ZqttlFPw0meQMdABi8/vgle14OWQ3FkIqUkb4/Mrc+0=", + "lastModified": 1779213149, + "narHash": "sha256-Cf+p/T4Z3n9Sw0TiR3kQaIwQI+/hfvLJcoTzeq6yS3E=", "owner": "nix-community", "repo": "home-manager", - "rev": "08c9d01457badce151aa4a983c475042d9dec018", + "rev": "bd868f769a69d3b6091a1da68a75cb83a181033c", "type": "github" }, "original": { @@ -246,11 +246,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1779034340, - "narHash": "sha256-zhMjgfsnNPcZtMhhWoeyaUV7JVEJ4rm5YJ0whwTfo8M=", + "lastModified": 1779099457, + "narHash": "sha256-u73aVD/lUmmT3JV+kPDztl7zPwQKd0eobD1AbJltaGs=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "88e6bd5c2db9e0b098d8ccb081f35fe33f0f3186", + "rev": "8792fab9d4a6454a9201675f01326f827ce35ead", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1779037589, - "narHash": "sha256-2n9opCEGrWci7vByHsM1aQz3P0Kg5JiZo7duGCglHWQ=", + "lastModified": 1779218989, + "narHash": "sha256-iAUqjUcf5tVUAe2ID8N0IYg/TF5ipftkbqgm1mwWTvo=", "owner": "nix-community", "repo": "NUR", - "rev": "9e1672e2df6286c34b0733c80147bcd54f1a29cc", + "rev": "ce1e0ad96c4f9c7db45f01e4f484651ac63ab9b1", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1779038139, - "narHash": "sha256-iDyGzQMWxvhhAqeii1PkqoM1dYYAnsnhGr5yml/jX2s=", + "lastModified": 1779223762, + "narHash": "sha256-icip5LezMY5MiGVwbLGTED3CaKq97+/wsFtXOMnmdYs=", "owner": "anomalyco", "repo": "opencode", - "rev": "468eb68878974f555ae2a03575d52d716f26e029", + "rev": "34cae2f3cbc7521421d75eaa919f3e665959fd54", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1778919017, - "narHash": "sha256-P2+aRay2sPQGVXzNmiD4yYlhy4ytxqBvT4A2OLOvkoU=", + "lastModified": 1779093899, + "narHash": "sha256-wzHbwUimm45J5r+d4VOi2rrRWwvYimP6OM8BJBIHbYc=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "7c41a80acc12ab012448b84aec90ca9b4bf8b9ac", + "rev": "d21282d88c6bd4b3dc692566c5d84de39f7a96c0", "type": "github" }, "original": { From c7df1b37f9051ac340a9a1a495976ce1aa430b47 Mon Sep 17 00:00:00 2001 From: Jet Date: Tue, 19 May 2026 15:14:19 -0700 Subject: [PATCH 17/25] fix: patch opencode with previous bun version --- flake.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index d0330c8..468d23e 100644 --- a/flake.nix +++ b/flake.nix @@ -63,8 +63,13 @@ inputs.nur.overlays.default inputs.ghostty.overlays.default inputs.helix.overlays.default - (final: prev: { - opencode = opencode.packages.${prev.stdenv.hostPlatform.system}.opencode; + (_final: prev: { + opencode = opencode.packages.${prev.stdenv.hostPlatform.system}.opencode.overrideAttrs (old: { + postPatch = (old.postPatch or "") + '' + substituteInPlace package.json \ + --replace-fail '"packageManager": "bun@1.3.14"' '"packageManager": "bun@1.3.13"' + ''; + }); }) ]; } From f4e561d28520ac3855f3e69a069e67984e2a2692 Mon Sep 17 00:00:00 2001 From: Jet Date: Wed, 20 May 2026 12:05:25 -0700 Subject: [PATCH 18/25] update: nfu --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index a12604f..a8b43b2 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1779223014, - "narHash": "sha256-Q8B2Pw7WrMGrs2c/XFNN8ZzcIdPOzVYPl31hfhgPONI=", + "lastModified": 1779295097, + "narHash": "sha256-A9ylCu+v45kXFxC0jO7N4bLo7sraDoeV0r9mYvqaH8I=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "9bcb30aa119b20833d74d4e32104dafe20bd8203", + "rev": "46d54ed673a004df09078bee56e809421a82370e", "type": "github" }, "original": { @@ -246,11 +246,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1779099457, - "narHash": "sha256-u73aVD/lUmmT3JV+kPDztl7zPwQKd0eobD1AbJltaGs=", + "lastModified": 1779258371, + "narHash": "sha256-j1iZsLy6oFApqR1oiDmHhvkwxXqcNi0aoSJj643LuwU=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "8792fab9d4a6454a9201675f01326f827ce35ead", + "rev": "c97bc4d15bd3473dd095e8e8ba57330ab1943a77", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1779218989, - "narHash": "sha256-iAUqjUcf5tVUAe2ID8N0IYg/TF5ipftkbqgm1mwWTvo=", + "lastModified": 1779295057, + "narHash": "sha256-f5Fi5arOp96quGbXiqwbIOnePBBYLw/hS0tqjOZMRv0=", "owner": "nix-community", "repo": "NUR", - "rev": "ce1e0ad96c4f9c7db45f01e4f484651ac63ab9b1", + "rev": "9dfb56523219a31511e0d8e59d0270dcdd96bd6f", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1779223762, - "narHash": "sha256-icip5LezMY5MiGVwbLGTED3CaKq97+/wsFtXOMnmdYs=", + "lastModified": 1779301759, + "narHash": "sha256-ic6ksemyTua41wwMcKfQUtvBDT1OWsyEzEloYWF0Hyo=", "owner": "anomalyco", "repo": "opencode", - "rev": "34cae2f3cbc7521421d75eaa919f3e665959fd54", + "rev": "ba803dd89a412019ae656b86116ba8046cdd266c", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1779093899, - "narHash": "sha256-wzHbwUimm45J5r+d4VOi2rrRWwvYimP6OM8BJBIHbYc=", + "lastModified": 1779263007, + "narHash": "sha256-JkwxVCt7EHCrisHkzhMPKhfdaNAhpyyKuIdLoNYGuPI=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "d21282d88c6bd4b3dc692566c5d84de39f7a96c0", + "rev": "6891eb4b5fbac054b9406da94525daeec71646e3", "type": "github" }, "original": { From a2bf0335da9771890d926bc9ea9ee73f227e7db2 Mon Sep 17 00:00:00 2001 From: Jet Date: Wed, 20 May 2026 15:13:49 -0700 Subject: [PATCH 19/25] fix: add blueman --- configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.nix b/configuration.nix index 1887e99..898e1c4 100644 --- a/configuration.nix +++ b/configuration.nix @@ -21,6 +21,7 @@ }; }; }; + services.blueman.enable = true; networking.networkmanager.enable = true; networking.networkmanager.settings = { connection = { From bfbcb5404382799a9721b73bd803d5bafc24b184 Mon Sep 17 00:00:00 2001 From: Jet Date: Wed, 20 May 2026 16:24:44 -0700 Subject: [PATCH 20/25] fix: revert update --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index a8b43b2..75a8de1 100644 --- a/flake.lock +++ b/flake.lock @@ -290,11 +290,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { From b06bea177fafaa81e04714c3c0246e027d2a031e Mon Sep 17 00:00:00 2001 From: Jet Date: Fri, 22 May 2026 11:18:39 -0700 Subject: [PATCH 21/25] feat: add heytea.dev mcp server --- home-modules/opencode.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home-modules/opencode.nix b/home-modules/opencode.nix index 9173ae3..c7fa7f1 100644 --- a/home-modules/opencode.nix +++ b/home-modules/opencode.nix @@ -19,6 +19,11 @@ url = "https://mcp.linear.app/mcp"; enabled = true; }; + mcp.heytea = { + type = "remote"; + url = "https://mcp.heytea.dev/mcp"; + enabled = true; + }; model = "openai/gpt-5.5-fast"; small_model = "openai/gpt-5.4-mini-fast"; provider.openai.models."gpt-5.5-fast".options = { From b90871cf0558a759052fedfbb6917c4a23cdf9e8 Mon Sep 17 00:00:00 2001 From: Jet Date: Sat, 23 May 2026 17:27:34 -0700 Subject: [PATCH 22/25] topbar: declutter GNOME panel --- home-modules/desktop.nix | 7 +++++-- home-modules/packages.nix | 2 -- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index 5cba10c..1112d63 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -176,10 +176,8 @@ in "wifiqrcode@glerro.pm.me" "system-monitor-next@paradoxxx.zero.gmail.com" "clipboard-indicator@tudmotu.com" - "emoji-copy@felipeftn" "tailscale@joaophi.github.com" "auto-move-windows@gnome-shell-extensions.gcampax.github.com" - "appindicatorsupport@rgcjonas.gmail.com" "gnome-shell-extension-maximized-by-default@stiggimy.github.com" "no-titlebar-when-maximized@alec.ninja" "evil-bit-toggle@jetpham.github.com" @@ -190,6 +188,11 @@ in "org/gnome/shell/extensions/auto-move-windows" = { application-list = autoMoveApplications; }; + "org/gnome/shell/extensions/system-monitor-next-applet" = { + center-display = false; + left-display = true; + move-clock = false; + }; "org/gnome/desktop/wm/keybindings" = { switch-to-workspace-1 = [ "1" ]; switch-to-workspace-2 = [ "2" ]; diff --git a/home-modules/packages.nix b/home-modules/packages.nix index 67a740b..fe6a9d5 100644 --- a/home-modules/packages.nix +++ b/home-modules/packages.nix @@ -175,10 +175,8 @@ in xprop xdg-utils - gnomeExtensions.appindicator gnomeExtensions.auto-move-windows gnomeExtensions.clipboard-indicator - gnomeExtensions.emoji-copy gnomeExtensions.hide-top-bar gnomeExtensions.maximized-by-default-actually-reborn gnomeExtensions.no-titlebar-when-maximized From 7ccb5e7d7c1639a7e0d971c2ba221fbf85eb114b Mon Sep 17 00:00:00 2001 From: Jet Date: Sat, 23 May 2026 17:50:40 -0700 Subject: [PATCH 23/25] update: opencode helix ghostty zen-browser --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 75a8de1..f880af6 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1779295097, - "narHash": "sha256-A9ylCu+v45kXFxC0jO7N4bLo7sraDoeV0r9mYvqaH8I=", + "lastModified": 1779573072, + "narHash": "sha256-DgdXilZcUCEQdOcgt2+Aj77+up2OkdBFg5Q6En5PUB0=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "46d54ed673a004df09078bee56e809421a82370e", + "rev": "d5d8cef4d3834cc8999eb9344066b0960b033f2d", "type": "github" }, "original": { @@ -127,11 +127,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1778551011, - "narHash": "sha256-woJV7tJwwzjR0xWDNuGpwMENe/OEMAdSGg+nqWs9tUE=", + "lastModified": 1779426614, + "narHash": "sha256-Ynp7Vq/3ycx53zzLh/Dfvjibdvt+mVhTM50O5LCbdmw=", "owner": "helix-editor", "repo": "helix", - "rev": "8c41b11607924f7584b77c8a6e6b16439a2f559f", + "rev": "a62d374fcb489f83bddd3a775df250ff4b9b34a9", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1779301759, - "narHash": "sha256-ic6ksemyTua41wwMcKfQUtvBDT1OWsyEzEloYWF0Hyo=", + "lastModified": 1779580088, + "narHash": "sha256-oYEtJtyKegw8CO+OistcabbKDmhrRDrVmSbLcXT9mkw=", "owner": "anomalyco", "repo": "opencode", - "rev": "ba803dd89a412019ae656b86116ba8046cdd266c", + "rev": "0b3a1c2fdf8032d7168d1a5103c460c84dfee882", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1779263007, - "narHash": "sha256-JkwxVCt7EHCrisHkzhMPKhfdaNAhpyyKuIdLoNYGuPI=", + "lastModified": 1779455631, + "narHash": "sha256-svU6Ro4xiMxMA1KJGwQ/nfKwz3yXE/SONCw2Z1qTXHA=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "6891eb4b5fbac054b9406da94525daeec71646e3", + "rev": "5bcdfcef664bf62831dcb4b947004d9c5fbf7201", "type": "github" }, "original": { From e00cbc6c484800c3b1c584801bb736309f4f64ca Mon Sep 17 00:00:00 2001 From: Jet Date: Sat, 23 May 2026 18:03:13 -0700 Subject: [PATCH 24/25] feat: enable in overview --- home-modules/desktop.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index 1112d63..f656e82 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -188,6 +188,10 @@ in "org/gnome/shell/extensions/auto-move-windows" = { application-list = autoMoveApplications; }; + "org/gnome/shell/extensions/hidetopbar" = { + enable-intellihide = true; + show-in-overview = true; + }; "org/gnome/shell/extensions/system-monitor-next-applet" = { center-display = false; left-display = true; From 62af141a227cbd235420cbfa1a27d4e7350c5409 Mon Sep 17 00:00:00 2001 From: Jet Date: Sat, 23 May 2026 21:36:23 -0700 Subject: [PATCH 25/25] feat: add chrome mcp and tailscale extrension --- home-modules/opencode.nix | 21 ++++++++++++++++++++- home-modules/packages.nix | 9 ++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/home-modules/opencode.nix b/home-modules/opencode.nix index c7fa7f1..dc37f8f 100644 --- a/home-modules/opencode.nix +++ b/home-modules/opencode.nix @@ -1,4 +1,4 @@ -{ homeLib, ... }: +{ homeLib, pkgs, ... }: { home.file.".agents/skills/check-pr".source = "${homeLib.greptileSkills}/check-pr"; @@ -24,6 +24,25 @@ url = "https://mcp.heytea.dev/mcp"; enabled = true; }; + mcp.chrome-devtools = { + type = "local"; + command = [ + "${pkgs.nodejs_24}/bin/npx" + "-y" + "chrome-devtools-mcp@latest" + "--executable-path=${pkgs.google-chrome}/bin/google-chrome-stable" + "--no-usage-statistics" + "--no-performance-crux" + ]; + enabled = true; + env = { + CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS = "1"; + NO_UPDATE_NOTIFIER = "1"; + NPM_CONFIG_AUDIT = "false"; + NPM_CONFIG_FUND = "false"; + NPM_CONFIG_UPDATE_NOTIFIER = "false"; + }; + }; model = "openai/gpt-5.5-fast"; small_model = "openai/gpt-5.4-mini-fast"; provider.openai.models."gpt-5.5-fast".options = { diff --git a/home-modules/packages.nix b/home-modules/packages.nix index fe6a9d5..ff29bef 100644 --- a/home-modules/packages.nix +++ b/home-modules/packages.nix @@ -6,6 +6,13 @@ }: let + tailscaleQsGnome49 = pkgs.gnomeExtensions.tailscale-qs.overrideAttrs (old: { + postInstall = (old.postInstall or "") + '' + substituteInPlace "$out/share/gnome-shell/extensions/tailscale@joaophi.github.com/metadata.json" \ + --replace-fail '"48"' '"48", "49"' + ''; + }); + evilBitCtl = pkgs.writeShellApplication { name = "evil-bitctl"; runtimeInputs = [ @@ -181,7 +188,7 @@ in gnomeExtensions.maximized-by-default-actually-reborn gnomeExtensions.no-titlebar-when-maximized gnomeExtensions.system-monitor-next - gnomeExtensions.tailscale-qs + tailscaleQsGnome49 gnomeExtensions.wifi-qrcode evilBitToggleExtension reducedMotionToggleExtension