l-dotfiles-install
Installing a machine from this repo (owner, generic, WSL), how the unattended boot chain runs, and adding another login on an installed machine.
Skill by lsck0
Chalk Labs
Need help deploying l-dotfiles-install?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/lsck0-l-dotfiles-install
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/l-dotfiles-install
What's inside
- Skill name
l-dotfiles-install- Description
- Installing a machine from this repo (owner, generic, WSL), how the unattended boot chain runs, and adding another login on an installed machine. Load when setting up or reinstalling a machine or user.
- License
- MIT
- Instructions
- 102 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- files: referenced but missing: scripts/lib/iso-install.nu, scripts/lib/bootstrap/questions.nuon
Files (1)
- SKILL.md
SKILL.md (first lines)
# install
Three stages: `bootstrap.sh` (nushell, a verified checkout, then `dot internal bootstrap`: keyboard, disk, base system,
user, root copy, arms the chain), then `dot internal stage` runs `dot apply --packages` and `dot apply` on their own
boots, unattended, and retires itself and its sudo drop-in at the end, or stops disarmed (Check the chain).
## Install
1. Arch Linux-LSCK0 iso, https://mirror.lsck0.dev/iso/archlinux-lsck0-latest-x86_64.iso (check `.sha256`, and `.sig`
against `configs/base/pacman/archrepo.asc`, signer `HOMELAB.mirror.isoSigner` in `platforms/homelab.nu`,
`88042EFBF5F141C2ACF4697ADD84D7C4053DD354`; `dot test run` checks both), written raw to a stick. Its stub autologins on tty1, waits for internet (cable, else the answer file's `wifi` or a
picker; never offline), clones master, checks HEAD against the iso's signing key and runs that `bootstrap.sh` with
`LSCK0_INSTALL=1`, which starts `dot internal iso-install` (`scripts/lib/iso-install.nu`).
- Answer file: `lsck0.nuon` or `lsck0.<name>.nuon` on a FAT32 partition labelled `LSCK0` (and other places), keys
in `mirror/iso/lsck0.example.nuon`; `lsck0.*` boot parameters map to `BOOTSTRAP_*`. An answered key is not asked.
- One answer file found: a 10 s yes/no, then it is used (an unattended boot goes on by itself); several: a menu of
them plus "no answer file", which takes the first after 10 s only when that one says `unattended: true`. Each
file is found once (by path and content); one that does not parse is listed as ignored, never offered. Only the
pick's `source` files are staged, into a dir of its own; a missing one stops the install. No answer file means
every question is asked; the second stage does not search again, and a picked file it cannot parse stops it.
An older stub connects with the first `lsck0.nuon`'s wifi, then switches to master's stub, which asks.
- `unattended: true` skips the summary, asks each `"ask"` password once up front, logs to `/tmp/lsck0-install.log`
(copied to `/var/log/lsck0-install.log`).
- Unattended, a disk whose ESP holds `/boot/dotfiles-stage-in-progress` (a chain still running) is refused unless
`reinstall: true` (`BOOTSTRAP_REINSTALL=1`, or the one-boot `lsck0.reinstall=1`).
- `efibootmgr --bootnext` points at the new ESP before the reboot; each stage reboot sets BootNext to its own entry.
- The answer file's `source` (an unverified tree over master, the vm test's) is used only with `lsck0.insecure=1`,
in a VM, or after a yes on the console.
- Frozen on the stick: the stub up to its newer-stub switch (network, clone, signature check) and the trust anchor
from `bootstrap.sh`. Everything else comes from master at install time; only a change to the frozen part needs a
reburn. A newer verified stub on master replaces the stick's.
2. From the official Arch ISO: `curl -fsSL https://install-linux.lsck0.dev | sh`.
Build the iso: `dot internal iso` (root, mkarchiso).
- `bootstrap.sh` (bash, runs only on the Arch ISO or WSL) installs nushell (grows the overlay if needed), clones master
and refuses unless HEAD is signed by `SIGNING_KEY_FINGERPRINT` (`BOOTSTRAP_INSECURE=1` skips). From an existing
checkout it skips the clone.
- Questions: `scripts/lib/bootstrap/questions.nuon`, in ask order (id = answer-file key, kind, title, text, options,
default, `BOOTSTRAP_*` env, `when`; code steps are entries with `step`). Top-level `answers` holds answer-file-only
keys; `messages` and `summary` every other text. The iso's second stage reads its keys and types from it. Wording,
order or a new question is an edit there; `bootstrap.nu` only walks the list.
- Order: keyboard, profile, machine, home network (`server` and `custom` add their questions here), then disk,
encryption, login name, passwords, summary. Nothing is written before the summary's `install`.
- Login name, profile and machine are independent; nothing derives from the login name.
- Profile: `profiles/<name>.nuon` (luca) or `custom` (default, no file, no capabilities); copied to
`~/.config/dotfiles/profile.nuon`.
- Machine: `server` (not on WSL), `custom`, then each `platforms/<name>.nuon` by `label` (WSL: only `wsl`; `vm` hidden,
the vm test names it). A named pick goes to `/etc/dotfiles/platform`. `server` and `custom` ask hostname, an ssh key
for `~/.ssh/authorized_keys` (empty: console only), off WSL timezone, locale and secure boot (`own`, `microsoft`
default, `off`), and write `/etc/dotfiles/platform.nuon` (and `.options.nuon`). `server` is base plus docker;
`custom` asks the groups.
- Every machine asks for disk encryption (LUKS2, default yes).
- Prompts stay short: one question, the options, at most one line of context for a risky choice.
## WSL
The same line in a fresh Arch distro's root shell. No disk, bootloader or chain: keyring, upgrade, wheel user,
`wsl.conf` (systemd, default user, hostname, no Windows PATH), verified repo, `~/.local/bin/dot` and a minimal
`~/.zshenv`/`~/.zshrc` (the first apply takes both over). Machine `wsl`: groups base, core, programming, no homelab;
firewall, vpn and tor modules off. Hardware modules skip themselves, so sudo is password only; `core/locale` sets
`en_US.UTF-8`. No YubiKey without USB passthrough: `dot secrets unlock --identity <age file>` (fetches the submodule
via `gh auth` or the ssh key).
Test on Windows (WSL 2.x):
1. `wsl --update`, `wsl --install archlinux`.
2. `curl -fsSL https://raw.githubusercontent.com/lsck0/arch-dotfiles/master/bootstrap.sh | bash`; machine `wsl`,
profile `custom` or `luca`, user, password.
3. `wsl --terminate archlinux`, `wsl -d archlinux`; `systemctl is-system-running` says running or degraded.
4. `dot sync --no-push` (long first run).
5. `dot status --brief`, `systemctl --user list-timers`, `cat /etc/wsl.conf`.
6. Profile `luca`: `gh auth login`, then `dot secrets unlock --identity <age file>` (or usbipd-win and
`dot secrets unlock`).
## Unattended
No tty or `BOOTSTRAP_ASSUME_YES=1`: answers from env. `BOOTSTRAP_{USERNAME,DISK,PASSWORD,USER_PASSWORD,ROOT_PASSWORD,
KEYMAP}` (keymap default de-latin1, loaded at once; `BOOTSTRAP_KEYMAP_DEFAULT` only preselects; no username default),
`BOOTSTRAP_PROFILE` (default custom), `BOOTSTRAP_PLATFORM=<host>|server|custom` (default custom; the `bootstrap.sh`
argument wins), `BOOTSTRAP_HOME_NETWORK=0|1`, `BOOTSTRAP_ENCRYPT=0|1` (default 1); server or custom also
`BOOTSTRAP_{HOSTNAME,GROUPS,TIMEZONE,LOCALE,SSH_KEY}` and `BOOTSTRAP_SECURE_BOOT`. `BOOTSTRAP_SERVER=1` turns custom
into server. Each question's `env` and `default` is the reference. `dot test run` drives this through an answer file
(`--profile`, default luca; `report` makes the stages beacon and upload logs, skill `l-dotfiles-vm-test`).
## Check the chain
1. `/var/lib/dotfiles-stage/log`: one `<stage>: ok` per stage.
2. `install.log`, `config.log`, `FAILURES.install`, `FAILURES.config` in the checkout; `/var/log/lsck0-install.log`.
3. The install stage goes on by `/var/lib/dotfiles/install-pass`, not by dot's exit code (`stage-next` in
`scripts/lib/stage.nu`). Pass written: config, even after a partial pass; modules whose packages are missing stay
pending (exit 3, `dot status`). No pass: a reboot retries after a backoff, 3 attempts in all.
4. Third attempt without a pass: the chain stops before config and disarms. The stage LUKS key slot, its keyfile and
initramfs drop-in go, then `next`, the unit and the passwordless sudoers drop-in; a `stopped` marker stays. The disk
asks for its passphrase again, sudo for the password, nothing retries by itself. The login banner
(`/etc/issue.d/dotfiles-stage.issue`) names what failed, the way online on a fail-closed network
(`dot set --machine base/networkmanager.untrusted_policy firewall-only && dot apply --system`) and the resume.
5. Resume: `dot internal stage` at a terminal. sudo asks once, the drop-in, unit and install stage are armed again, the
install runs; the key is not re-added, so each later boot of the chain asks for the disk passphrase. Without a tty it
refuses and names the command.
## Updating
Everyone runs `dot sync`: pull `origin/master` (the submodule only with `secrets`), migrate, install, apply, every
module's `update` verb. Only the machine holding the `SIGNING_KEY_FINGERPRINT` secret key backs up, commits and pushes;
elsewhere it stops after the apply. A non-wheel login converges its user layer only. Local edits are autostashed; a
conflict stops the run; a checkout off `master` refuses.
## Another login
`adduser-dotfiles <name> [--profile luca|custom]` (root-owned sh wrapper, runs `adduser` through sudo): creates the user
(never wheel), its checkout, profile and user layer (one `dot apply --packages --user` in a login session through
`systemd-run`). Without `--profile` it asks on a tty, else `custom`. Rerun-safe; an existing `profile.nuon` is kept. A
`secrets` profile adds the login to `/var/lib/dotfiles/owners`, from which `configs/secrets/yubikey` maps their YubiKey
in `/etc/u2f_mappings` on the next system run (without the submodule, sudo takes the password).From lsck0/arch-dotfiles, MIT.
More from lsck0/arch-dotfiles
- 0.606score
l-agent-task-db
lsck0
Shared taskwarrior/timewarrior conventions for the task-mode skills: db layout, tasks/context/ folder, stage/human-in-the-loop tag vocabulary, scaffolding.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
l-multi-agent-task-mode
lsck0
Self-poll a per-project taskwarrior db and spawn persona workers (Herdr/Hermes under HERDR_ENV, else Claude Code Agent tool) to advance multiple +agent-task…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-gui-testing
lsck0
The one procedure for launching an app, game, editor or viewer only to screenshot or check it, on a headless Hyprland output of the agent's own, with muted…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles
lsck0
Layout and conventions of Luca's arch-dotfiles repo (~/projects/arch-dotfiles), the source of truth for his system configuration: configs, platforms, install…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-apparmor-profile
lsck0
Writing or adjusting an AppArmor profile or local/ drop-in in configs/base/apparmor, loading it, reading denials, apparmor.test.nu, and the enforce vs…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-multi-agent-mode
lsck0
Live orchestrator for one idea worked now, no task db: task-planner plans, orchestrator spawns/drives workers (Herdr/Hermes under HERDR_ENV, else Claude Code…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-auto-memory
lsck0
Keep a project's agent knowledge current: a per-project skills/ folder of project-specific workflows (how to use the project, develop on it, use its tools…
SkillAFreshness: A★ 3Claude Code +9 - 0.600score
l-dotfiles-streaming
lsck0
The OBS setup in configs/creating/obs (the Streaming, VirtualCam and Bare collections, profiles, websocket on 4455, obs-mcp, the bar's obs widget, the…
SkillAFreshness: A★ 3Claude Code +9 - 0.598score
l-persona-auditor-general
lsck0
Passive general audit: best practices, style, maintainability.
SkillAFreshness: A★ 3Claude Code +9 - 0.597score
l-dotfiles-quickshell-dev
lsck0
Editing the quickshell shell (bar, launcher, lock, notifications, OSD) in configs/desktop/quickshell, live reload, logs, IPC calls and screenshots of its…
SkillAFreshness: A★ 3Claude Code +9 - 0.597score
l-dotfiles-theming
lsck0
How a wallpaper or theme switch recolors the system (wallust templates, theme verbs, themes/*.json, dot theme), adding a template or generator, and testing it…
SkillAFreshness: A★ 3Claude Code +9 - 0.597score
l-dotfiles-platform-facts
lsck0
Machine facts in platforms/<name>.nuon versus user capabilities in profiles/<name>.nuon versus per-module options, which to use, and adding a fact.
SkillAFreshness: A★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Oct 21, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/lsck0/arch-dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from lsck0
- 0.606score
l-agent-task-db
lsck0
Shared taskwarrior/timewarrior conventions for the task-mode skills: db layout, tasks/context/ folder, stage/human-in-the-loop tag vocabulary, scaffolding.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
l-multi-agent-task-mode
lsck0
Self-poll a per-project taskwarrior db and spawn persona workers (Herdr/Hermes under HERDR_ENV, else Claude Code Agent tool) to advance multiple +agent-task…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-multi-agent-mode
lsck0
Live orchestrator for one idea worked now, no task db: task-planner plans, orchestrator spawns/drives workers (Herdr/Hermes under HERDR_ENV, else Claude Code…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-apparmor-profile
lsck0
Writing or adjusting an AppArmor profile or local/ drop-in in configs/base/apparmor, loading it, reading denials, apparmor.test.nu, and the enforce vs…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles
lsck0
Layout and conventions of Luca's arch-dotfiles repo (~/projects/arch-dotfiles), the source of truth for his system configuration: configs, platforms, install…
SkillAFreshness: A★ 3Claude Code +9 - 0.601score
l-dotfiles-gui-testing
lsck0
The one procedure for launching an app, game, editor or viewer only to screenshot or check it, on a headless Hyprland output of the agent's own, with muted…
SkillAFreshness: A★ 3Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get l-dotfiles-install running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
l-dotfiles-install skill. Agent Mart. https://agentmart.dev/skills/lsck0-l-dotfiles-install (last updated 2026-10-24)