From 7409e4e6a0705a2277b1969733488a4404f0d465 Mon Sep 17 00:00:00 2001 From: alexion Date: Fri, 24 Jul 2026 17:48:29 -0400 Subject: [PATCH 1/3] feat(obsidian): install Obsidian as the desktop note-taking vault Add a standalone modules.desktop.obsidian module and enable it on neogaia. Give it a waybar window-rewrite icon so its windows show a recognisable glyph on the workspace indicator. --- hosts/neogaia/default.nix | 1 + modules/desktop/obsidian.nix | 18 ++++++++++++++++++ modules/desktop/waybar.nix | 1 + 3 files changed, 20 insertions(+) create mode 100644 modules/desktop/obsidian.nix diff --git a/hosts/neogaia/default.nix b/hosts/neogaia/default.nix index 568d01a..d7cc9c4 100644 --- a/hosts/neogaia/default.nix +++ b/hosts/neogaia/default.nix @@ -55,6 +55,7 @@ modules.agents.pi.enable = true; modules.desktop.enable = true; + modules.desktop.obsidian.enable = true; time.timeZone = "America/New_York"; i18n.defaultLocale = "en_GB.UTF-8"; diff --git a/modules/desktop/obsidian.nix b/modules/desktop/obsidian.nix new file mode 100644 index 0000000..90fdd52 --- /dev/null +++ b/modules/desktop/obsidian.nix @@ -0,0 +1,18 @@ +{ + config, + lib, + pkgs, + ... +}: +# Obsidian as the desktop note-taking vault. +let + cfg = config.modules.desktop.obsidian; + user = config.user.name; +in +{ + options.modules.desktop.obsidian.enable = lib.mkEnableOption "Obsidian as the desktop note-taking vault"; + + config = lib.mkIf cfg.enable { + home-manager.users.${user}.home.packages = [ pkgs.obsidian ]; + }; +} diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index fc29cf1..7a63306 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -82,6 +82,7 @@ in "class<.*[Ff]irefox.*>" = g "f269"; "class" = g "f268"; "class<[Cc]ode>" = g "f121"; + "class" = g "f02d"; }; }; -- 2.47.3 From 40ae623094a164dddd58d0a4f6180c82bf767bee Mon Sep 17 00:00:00 2001 From: alexion Date: Fri, 24 Jul 2026 17:48:35 -0400 Subject: [PATCH 2/3] feat(hyprland): enable native Wayland for Electron apps Set NIXOS_OZONE_WL in the compositor env so Chromium and Electron wrappers select native Wayland rather than XWayland, which blurs at this DPI. Deliver it through Hyprland's env directive because UWSM starts the session without the shell profile home-manager's sessionVariables rely on. --- modules/desktop/hyprland/hyprland.nix | 33 ++++++++++++++++----------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/modules/desktop/hyprland/hyprland.nix b/modules/desktop/hyprland/hyprland.nix index f616c8d..6709262 100644 --- a/modules/desktop/hyprland/hyprland.nix +++ b/modules/desktop/hyprland/hyprland.nix @@ -63,19 +63,26 @@ in "$mod" = "SUPER"; "$terminal" = "alacritty"; - # Hand the cursor theme to the compositor directly. - # UWSM launches the session without the shell profile that carries the - # pointer-cursor variables, so without this Hyprland never sees a theme - # and falls back to its built-in cursor. - # Bibata ships XCursor only. - # The hyprcursor variables name the same theme, which Hyprland resolves - # through its XCursor fallback. - env = lib.optionals (cursor != null) [ - "XCURSOR_THEME,${cursor.name}" - "XCURSOR_SIZE,${toString cursor.size}" - "HYPRCURSOR_THEME,${cursor.name}" - "HYPRCURSOR_SIZE,${toString cursor.size}" - ]; + # Session variables handed to the compositor directly. + # UWSM launches the session without the shell profile that would carry + # them, so a variable the compositor or its children must see is set + # here rather than through home-manager's sessionVariables. + env = + [ + # Chromium and Electron apps read this to select native Wayland; + # nixpkgs wrappers (Obsidian's included) gate their Wayland flags on + # it, so without it they run under XWayland and blur at this DPI. + "NIXOS_OZONE_WL,1" + ] + # Bibata ships XCursor only. + # The hyprcursor variables name the same theme, which Hyprland + # resolves through its XCursor fallback. + ++ lib.optionals (cursor != null) [ + "XCURSOR_THEME,${cursor.name}" + "XCURSOR_SIZE,${toString cursor.size}" + "HYPRCURSOR_THEME,${cursor.name}" + "HYPRCURSOR_SIZE,${toString cursor.size}" + ]; input = { kb_layout = "us"; -- 2.47.3 From 8885ffae6749810e1db948063f1ae438353e2b56 Mon Sep 17 00:00:00 2001 From: alexion Date: Fri, 24 Jul 2026 20:11:07 -0400 Subject: [PATCH 3/3] feat(agent-skills): install the wiki and consume vault skills Source the wiki and consume skills from the skills flake, placing them globally so they are active in every project. wiki reads the personal Obsidian vault read-only, and consume mines a source into it, pairing with the Obsidian vault this branch installs. --- flake.lock | 8 ++++---- modules/agents/skills.nix | 13 +++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 70da8cb..c21e78d 100644 --- a/flake.lock +++ b/flake.lock @@ -494,11 +494,11 @@ ] }, "locked": { - "lastModified": 1784776947, - "narHash": "sha256-IGVn6Z7dfeArObZvz7cLsGqJD8ipP2VkAZC/bOJgvJI=", + "lastModified": 1784937824, + "narHash": "sha256-ncagIdsvmlcJ2DeFHU6R2wBZoOJFDPGVlsmYU8DfImg=", "ref": "refs/heads/main", - "rev": "1caf18d72dd7cad7304401da0db6a6ba853d8827", - "revCount": 5, + "rev": "8c17f3aeb8a9c9d95a1427018a93f7d2cf081238", + "revCount": 15, "type": "git", "url": "https://git.alexion.dev/alexion/skills" }, diff --git a/modules/agents/skills.nix b/modules/agents/skills.nix index ad50170..108e080 100644 --- a/modules/agents/skills.nix +++ b/modules/agents/skills.nix @@ -1,11 +1,20 @@ -{ config, inputs, ... }: +{ + config, + inputs, + pkgs, + ... +}: # Global agent skills, placed under the skills directory so they are active in # every project. let user = config.user.name; # The skills installed globally, as derivations from the skills flake. - skills = [ ]; + # wiki reads the personal Obsidian vault, and consume mines a source into it. + skills = with inputs.skills.packages.${pkgs.stdenv.hostPlatform.system}; [ + wiki + consume + ]; in { home-manager.sharedModules = [ inputs.skills.homeModules.default ]; -- 2.47.3