Agent skill

Nix Config Desktop

by ryan4yin in ryan4yin/nix-config

A skill your agent uses when changing what the desktop shows or runs: Niri/Noctalia config, a window that is the wrong size, garbled, or missing after a reboot, autostart, fcitx5 or vinput input…

MITAuto-check passedFrontend & Design

Install Nix Config Desktop

skills CLI
$ npx skills add ryan4yin/nix-config --skill nix-config-desktop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ryan4yin/nix-config nix-config-desktop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ryan4yin/nix-config.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/nix-config-desktop .claude/skills/nix-config-desktop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
nix-config-desktop
GitHub stars
2.1k
Token cost
~1.8k tokens
SKILL.md length
876 words
Files
1
Skills in repo
9
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when changing what the desktop shows or runs: Niri/Noctalia config, a window that is the wrong size, garbled, or missing after a reboot, autostart, fcitx5 or vinput input…

  • Works in 4 steps: Pick the layer → Edit and validate → Verify on screen → …
  • Changing what the desktop shows
  • SKILL.md covers Core rules, 1. Pick the layer, 2. Edit and validate and 3. Verify on screen, plus 1 more section
  • Calls just and git

What it does

Nix Config Desktop is an agent skill from ryan4yin/nix-config. Use when changing what the desktop shows or runs: Niri/Noctalia config, a window that is the wrong size, garbled, or missing after a reboot, autostart, fcitx5 or vinput input, theming and fonts, interface names a widget reads, or $HOME state that must survive a tmpfs root.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Theming and dark mode. It works with Linux. The repository describes itself as: ❄️ My nix config for both desktops(NixOS+macOS) and homelab servers(NixOS). The licence is MIT.

When your agent uses it

  • Changing what the desktop shows
  • Runs: Niri/Noctalia config
  • A window that is the wrong size
  • Missing after a reboot

Example prompts

  • “/nix-config-desktop”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Pick the layer
  2. Edit and validate
  3. Verify on screen
  4. Land and roll back

What it can do on your machine

Read from SKILL.md and the folder at commit 9d69832. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • just
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Nix Config Desktop loads about 1.8k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 876 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~74
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ryan4yin/nix-config at commit 9d69832, republished under its MIT licence (© ryan4yin). 876 words, ~1,771 tokens.

Download SKILL.mdSave it as .claude/skills/nix-config-desktop/SKILL.md (or your agent's skills folder).
name
nix-config-desktop
description
Use when changing what the desktop shows or runs: Niri/Noctalia config, a window that is the wrong size, garbled, or missing after a reboot, autostart, fcitx5 or vinput input, theming and fonts, interface names a widget reads, or `$HOME` state that must survive a tmpfs root.

Changing the desktop

The desktop is a Niri + Noctalia Wayland session, shared by two hosts: ai-niri (hostName ai, x86_64) and shoukei-niri (hostName shoukei, Apple Silicon). Shared config lives in home/linux/gui/**; each host adds hosts/<dir>/niri-hardware.kdl and its own home/hosts/linux/<dir>.nix. Run hostname to know which one you are on.

Most of the config is deployed as out-of-store symlinks, so an edit takes effect live, rolls back with git, and needs no rebuild. Only the store layer needs one.

Core rules

  1. Edit the config layer, not the store. Niri KDL and the Noctalia baseline are symlinked out of store; editing them applies immediately. A rebuild is wasted time and hides the change behind a generation. Scale the caution to the risk: a bar, OSD, notification, or wallpaper tweak is safe to try on the running session and undo with git, but a compositor, keybinding, input, output, idle, or portal change can take the session the user is looking at down with it. Treat that second kind as impactful, and do not experiment on the live desktop with it.
  2. Validate before trusting a reload. A config that fails to parse does not crash the session: Niri keeps the last working config and shows a "Failed to parse the config file" notification. The edit silently does not apply, which is easy to misread as "my edit did nothing".
  3. Look at it. Anything that renders (bar, OSD, notifications, wallpaper, corners) is not done until a screenshot shows it correct. A setting that parses is not a setting that looks right.
  4. Screenshots are the user's screen. Capture as little as proves the change, keep the file out of the user's folders, and delete it afterwards (step 3).
  5. just niri is the user's to run. It activates the machine you are on through nixos-rebuild --sudo and blocks on a password prompt.

1. Pick the layer

Live (out-of-store, applies on save):

  • Niri compositor (binds, layout, window rules): home/linux/gui/niri/conf/*.kdl
  • Niri per-host outputs: hosts/<dir>/niri-hardware.kdl
  • Noctalia shared baseline: home/linux/gui/base/noctalia/config/config.toml
  • Mozc dictionary: home/linux/gui/base/fcitx5/mozc-config1.db
  • Noctalia value saved by the Settings UI: ~/.local/state/noctalia/settings.toml (not in the repo; wins over the rest)

Store (needs the user to run just niri):

  • Noctalia per-host override: home/hosts/linux/<dir>/noctalia.toml (host-<host>.toml)
  • fcitx5 profile and addons: home/linux/gui/base/fcitx5/
  • vinput (voice input): home/linux/gui/base/vinput/ (tag-pinned: the fcitx5-vinput row in WORKAROUNDS.md §Pins)
  • Interface a net-speed widget reads: home/hosts/linux/<dir>/noctalia.toml ([widget.net_rx]/[widget.net_tx] interface)
  • $HOME state that must survive: hosts/<dir>/preservation.nix (tmpfs root; 12kingdoms-shoukei imports hosts/idols-ai/preservation.nix)
  • Theme (catppuccin), fonts: home/base/core/theme.nix, modules/nixos/desktop/fonts.nix
  • Session, portal, and systemd wiring: modules/nixos/desktop/**, home/linux/gui/base/xdg/

Noctalia's merge order and [include] are in home/linux/gui/base/README.md. A per-host difference goes in that host's override file, not in the shared baseline.

2. Edit and validate

bash
niri validate                       # the live config and its whole include graph
noctalia config validate            # the merged config, as the running shell loads it
noctalia config validate ./home/linux/gui/base/noctalia/config/config.toml   # one file

Validate the live Niri config, not the repo copy: config.kdl includes ./niri-hardware.kdl, which only the host module places in ~/.config/niri/, so niri validate -c <repo path> fails on the missing include.

Confirm a file is live before trusting a hot reload:

bash
readlink -f ~/.config/niri/config.kdl      # must end in ~/nix-config/...
readlink -f ~/.config/noctalia/config.toml

~/.config/... points at a store path that is itself a symlink back into the repo. If it resolves to a plain store file, it is not live and the change needs just niri.

If an edit does not show up:

  • niri msg action load-config-file forces a Niri reload.
  • noctalia config export prints the merged config that actually won; diff it against your edit.
  • ~/.local/state/noctalia/settings.toml loads last. A value saved through the Settings UI, or left over from an experiment, silently beats config.toml.
Show full SKILL.md (316 more words)Show less

3. Verify on screen

bash
output="$(mktemp --tmpdir="${TMPDIR:-/tmp}" desktop-check.XXXXXX.png)"
niri msg action screenshot-window --path "$output" -p false   # focused window
# Or, when a full output is needed:
# niri msg action screenshot-screen --path "$output" -p false
  • Prefer screenshot-window when it proves the change. A full-screen capture includes whatever else is open: browser tabs, chats, credentials.
  • --path must be absolute; the mktemp path keeps the file out of ~/Pictures/Screenshots/. -p false drops the pointer.
  • Both actions also replace the user's clipboard with the image. There is no flag to avoid it, so say so when you take one.
  • Inspect the PNG with your image-reading tool, show it to the user only when asked, never upload or share it, and delete it when done: rm -f "$output".

Capture the frame that proves the change: the bar or OSD for a shell edit, borders and corner radius for a layout rule, the specific app for an input-method edit.

What a screenshot cannot show:

  • systemctl --user --failed and journalctl --user -b -p err for a crashed shell or portal unit.
  • journalctl -u home-manager-$USER -b after a store-layer change: Home Manager activates as a system unit here.
  • niri msg outputs for mode, scale, and transform; niri msg workspaces and niri msg windows for layout.
  • fcitx5-remote -n for the active input method.

4. Land and roll back

  • Config layer: the repo file is the live file, and there is no rebuild or generation to roll back to. Commit it only when the task asked for that. To undo a committed change, git revert; for an uncommitted experiment, preserve the diff and ask before discarding it.
  • Store layer: the user runs just niri, then you verify as in step 3. To undo, boot the previous generation (just history lists them).
  • If the session will not start at all, fix the file from a TTY. Niri's recovery only covers a bad reload, not a broken startup.

Do not "test" with commands that act on the session the user is looking at: niri msg action quit, niri msg action power-off-monitors, noctalia msg dpms-off, noctalia msg session lock.

© ryan4yin, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/nix-config-desktop of ryan4yin/nix-config.

Open the folder on GitHubat commit 9d69832

Compare with similar skills

Nix Config Desktop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Nix Config Desktop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nix Config Desktop this skillryan4yin/nix-config2.1k—~1.8kAutomated safety check: PassMIT
UI UX Pro Maxfutureboard/futureboard-studio109—~5.6kAutomated safety check: PassMIT
Impeccablebestofjs/bestofjs3.1k26 repos~2.6kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Tailwindcss Developmentanonaddy/anonaddy4.9k10 repos~865Automated safety check: PassMIT
UI StylingOhh-889/skyroc79513 repos~2.5kAutomated safety check: PassMIT

Similar skills

  • UI UX Pro Max

    futureboard/futureboard-studio

    Comprehensive design guide for web, mobile, and desktop applications.

    109 GitHub stars~5.6k tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 26 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed
  • UI Styling

    Ohh-889/skyroc

    Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.

    795 GitHub starsUsed in 13 repos~2.5k tokens
    Frontend & DesignAuto-check passed
  • MCP Development

    coollabsio/coolify

    A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 1 repo~949 tokens
    Frontend & DesignAuto-check passed

More from ryan4yin/nix-config

All 9 skills in this repo
  • Nix Config Umu Game

    ryan4yin/nix-config

    A skill your agent uses when installing a Windows game launcher (二次元 / gacha or any non-Steam game) on a NixOS desktop via umu-launcher, given an installer URL or an .exe, when such a launcher opens…

    2.1k GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Nix Config Debug

    ryan4yin/nix-config

    A skill your agent uses when something here is broken or stops working: an eval or build error, a failed activation, a dead or restarting unit, a mihomo or DNS outage, an unreachable host or MicroVM…

    2.1k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Nix Config Secrets

    ryan4yin/nix-config

    A skill your agent uses when adding, changing, renaming, or removing an agenix secret, deciding whether a secret belongs to agenix or to the encrypted dotfiles sync, wiring a secret into a host, or…

    2.1k GitHub stars~2.9k tokensUpdated today
    Auto-check: notes
  • Nix Config Update

    ryan4yin/nix-config

    A skill your agent uses when a version changes here: upgrading or updating a package or nixpkgs, bumping or pinning a flake input (a tag or commit, not a branch), or deploying the result to hosts…

    2.1k GitHub stars~2.3k tokensUpdated today
    Auto-check: notes
  • Nixpkgs Patched

    ryan4yin/nix-config

    A skill your agent uses when temporarily carrying an unmerged nixpkgs pull request or commit in the personal ryan4yin/nixpkgs fork, updating the nixos-unstable-patched branch, or consuming that…

    2.1k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Nixpkgs Review

    ryan4yin/nix-config

    A skill your agent uses when reviewing an upstream NixOS/nixpkgs pull request before it is merged -- a PR number or NixOS/nixpkgs123 link -- including its package changes, passthru tests…

    2.1k GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Works with

Questions about Nix Config Desktop

What does Nix Config Desktop do?

A skill your agent uses when changing what the desktop shows or runs: Niri/Noctalia config, a window that is the wrong size, garbled, or missing after a reboot, autostart, fcitx5 or vinput input…. Nix Config Desktop is an agent skill from ryan4yin/nix-config. Use when changing what the desktop shows or runs: Niri/Noctalia config, a window that is the wrong size, garbled, or missing after a reboot, autostart, fcitx5 or vinput input, theming and fonts, interface names a widget reads, or $HOME state that must survive a tmpfs root.

When should I use Nix Config Desktop?

Nix Config Desktop fits situations like: changing what the desktop shows; runs: Niri/Noctalia config; A window that is the wrong size; missing after a reboot.

How do I install Nix Config Desktop in Claude Code?

Run `npx skills add ryan4yin/nix-config --skill nix-config-desktop -a claude-code`. Or copy the skill folder (.agents/skills/nix-config-desktop in ryan4yin/nix-config) into .claude/skills/nix-config-desktop in your project. Claude Code loads it when a task matches its description.

How do I install Nix Config Desktop in Codex?

Run `npx skills add ryan4yin/nix-config --skill nix-config-desktop -a codex`. Or copy the skill folder (.agents/skills/nix-config-desktop in ryan4yin/nix-config) into .agents/skills/nix-config-desktop in your project. Codex loads it when a task matches its description.

Can I use Nix Config Desktop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ryan4yin/nix-config --skill nix-config-desktop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nix-config-desktop, .gemini/skills/nix-config-desktop, .github/skills/nix-config-desktop and .opencode/skills/nix-config-desktop in your project.

What does Nix Config Desktop need to run?

Going by SKILL.md and its folder, Nix Config Desktop needs the command-line tools its instructions call (just and git).

Does Nix Config Desktop access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Nix Config Desktop safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Nix Config Desktop use?

Nix Config Desktop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Nix Config Desktop use?

About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Nix Config Desktop?

Skills that share tags, products or a category with Nix Config Desktop: UI UX Pro Max (futureboard/futureboard-studio, 109 stars), Impeccable (bestofjs/bestofjs, 3.1k stars), Figma Design System Builder (warpdotdev/warp, 65k stars) and Tailwindcss Development (anonaddy/anonaddy, 4.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Nix Config Desktop?

ryan4yin (a GitHub user) maintains it in ryan4yin/nix-config, which has 2,092 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 10, 2026.

Source: ryan4yin/nix-config on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.