From ff48beff2ce9b8a0538b704c5462c8d42e471a4f Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 5 Apr 2026 18:47:50 -0700 Subject: [PATCH 1/3] feat: add tailscale extension --- configuration.nix | 12 ++++++++++++ home.nix | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/configuration.nix b/configuration.nix index 9e7aded..5029856 100644 --- a/configuration.nix +++ b/configuration.nix @@ -39,6 +39,18 @@ ]; }; + systemd.services.tailscale-set-operator = { + description = "Set Tailscale operator user"; + after = [ "tailscaled.service" ]; + requires = [ "tailscaled.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig.Type = "oneshot"; + path = [ pkgs.tailscale ]; + script = '' + tailscale set --operator=jet + ''; + }; + time.timeZone = "America/Los_Angeles"; i18n.defaultLocale = "en_US.UTF-8"; diff --git a/home.nix b/home.nix index 5e260f4..08f629a 100644 --- a/home.nix +++ b/home.nix @@ -59,6 +59,20 @@ let terminal = false; categories = [ "Network" ]; }; + tailscaleQsExtension = pkgs.stdenvNoCC.mkDerivation { + pname = "tailscale-gnome-qs"; + version = "5"; + src = pkgs.fetchzip { + url = "https://github.com/tailscale-qs/tailscale-gnome-qs/archive/refs/tags/v5.tar.gz"; + sha256 = "0b9jy8pyxvpkxf3adlwq42kii14jn5g7xyxggjzg87pb5jg4zfg2"; + }; + dontBuild = true; + installPhase = '' + mkdir -p "$out/share/gnome-shell/extensions" + cp -r "$src/tailscale-gnome-qs@tailscale-qs.github.io" \ + "$out/share/gnome-shell/extensions/tailscale-gnome-qs@tailscale-qs.github.io" + ''; + }; nasaApodWallpaper = pkgs.writeShellApplication { name = "nasa-apod-wallpaper"; runtimeInputs = [ @@ -290,6 +304,7 @@ in "system-monitor@paradoxxx.zero.gmail.com" "clipboard-indicator@tudmotu.com" "emoji-copy@felipeftn" + "tailscale-gnome-qs@tailscale-qs.github.io" ]; }; }; @@ -747,6 +762,11 @@ in ]; }; + home.file.".local/share/gnome-shell/extensions/tailscale-gnome-qs@tailscale-qs.github.io" = { + source = "${tailscaleQsExtension}/share/gnome-shell/extensions/tailscale-gnome-qs@tailscale-qs.github.io"; + recursive = true; + }; + systemd.user.services.nasa-apod-wallpaper = { Unit = { Description = "Fetch NASA APOD wallpaper"; From 3ed33ed2cb02d2129b30643deca06d002bc1019d Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 5 Apr 2026 20:26:57 -0700 Subject: [PATCH 2/3] fix: use desktop applications for the startup --- home.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/home.nix b/home.nix index 08f629a..0ec4efa 100644 --- a/home.nix +++ b/home.nix @@ -12,8 +12,8 @@ let zenStartup = pkgs.makeDesktopItem { name = "zen-startup"; desktopName = "Zen Startup"; - comment = "Launch Zen in fullscreen"; - exec = "${config.programs.zen-browser.package}/bin/zen --fullscreen"; + comment = "Launch Zen Browser"; + exec = "${config.programs.zen-browser.package}/bin/zen-beta"; terminal = false; categories = [ "Network" ]; }; @@ -753,12 +753,12 @@ in xdg.autostart = { enable = true; entries = [ - zenStartup - kittyZellijStartup - signalStartup - betterbirdStartup - vesktopStartup - zulipStartup + "${zenStartup}/share/applications/zen-startup.desktop" + "${kittyZellijStartup}/share/applications/kitty-zellij-startup.desktop" + "${signalStartup}/share/applications/signal-startup.desktop" + "${betterbirdStartup}/share/applications/betterbird-startup.desktop" + "${vesktopStartup}/share/applications/vesktop-startup.desktop" + "${zulipStartup}/share/applications/zulip-startup.desktop" ]; }; From cf18c87bff4541c1500bd50df23b1fdb162a9c50 Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 5 Apr 2026 20:32:08 -0700 Subject: [PATCH 3/3] feat: make zellij persist --- home.nix | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/home.nix b/home.nix index 0ec4efa..a334e3b 100644 --- a/home.nix +++ b/home.nix @@ -20,8 +20,8 @@ let kittyZellijStartup = pkgs.makeDesktopItem { name = "kitty-zellij-startup"; desktopName = "Kitty Zellij Startup"; - comment = "Open Kitty, pick a directory, and launch Zellij"; - exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijNewTabZoxide}/bin/zellij-new-tab-zoxide"; + comment = "Open Kitty and attach to the main Zellij session"; + exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijPersistentSession}/bin/zellij-persistent-session"; terminal = false; categories = [ "TerminalEmulator" @@ -224,6 +224,15 @@ let exec ${pkgs.zellij}/bin/zellij -l "$layout_file" ''; }; + zellijPersistentSession = pkgs.writeShellApplication { + name = "zellij-persistent-session"; + runtimeInputs = [ pkgs.zellij ]; + text = '' + set -euo pipefail + + exec ${pkgs.zellij}/bin/zellij attach --create main --force-run-commands + ''; + }; zellijSyncTabName = pkgs.writeShellApplication { name = "zellij-sync-tab-name"; runtimeInputs = [ @@ -480,9 +489,11 @@ in show_startup_tips = false; show_release_notes = false; - attach_to_session = false; - on_force_close = "quit"; - session_serialization = false; + attach_to_session = true; + session_name = "main"; + on_force_close = "detach"; + session_serialization = true; + serialize_pane_viewport = true; ui = { pane_frames = { @@ -699,7 +710,7 @@ in xdg.desktopEntries.kitty = { name = "Kitty"; genericName = "Terminal Emulator"; - exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijNewTabZoxide}/bin/zellij-new-tab-zoxide"; + exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijPersistentSession}/bin/zellij-persistent-session"; icon = "kitty"; type = "Application"; categories = [