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..a334e3b 100644 --- a/home.nix +++ b/home.nix @@ -12,16 +12,16 @@ 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" ]; }; 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" @@ -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 = [ @@ -210,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 = [ @@ -290,6 +313,7 @@ in "system-monitor@paradoxxx.zero.gmail.com" "clipboard-indicator@tudmotu.com" "emoji-copy@felipeftn" + "tailscale-gnome-qs@tailscale-qs.github.io" ]; }; }; @@ -465,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 = { @@ -684,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 = [ @@ -738,15 +764,20 @@ 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" ]; }; + 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";