Home and system configuration applied by Tjikup. The GitHub repository remains
tijptjik/dotfiles, checked out at ~/code/dotjik. System policy from
Systjik now lives in system/ within this repository.
Tjikup resolves this checkout from DOTJIK_REPO, or ~/code/dotjik by default;
XDG_DATA_HOME does not select the source checkout. When relocating an existing
host, preserve the entire checkout (including .git and local changes), update
the Tjikup config symlink and local session paths, and retain a compatibility
symlink for older installed binaries and open sessions. Move each host before
applying its updated paths; on Si this includes the app-backup source path.
Relocating the checkout does not deploy services or publish bootstrap releases.
Tjikup owns deployment and maintenance for every fleet host. Home configuration
lives in native/home/files/; system policy lives in system/native/. MiniJinja
.j2 templates render natively. dotjik and systjik delegate to the native
configuration commands. Synctjik owns backup and recovery operations.
See workflows and native file ownership and new devices. Release publication and pin updates are currently deferred; the source migration does not update published bootstrap.
fi- Desktop (client)li- Laptop (client)si- Server
Readmes are available in /docs/{topic}.md
batbottomcodexdirenvfishfisher- Plugin manager with automatic updates
fzfglow- GTK
herdr- Hyprland
kittylazygitllmtrimlsdmatugenmicromullvadnotjik— desktop notification setuppythonquickshellrclonesolaarstarship- systemd
Tailscale— Li and Si setup with timed rollbacktintytransmissionuvvividbartjikzapzapzed
The fleet storage atlas explains where files live across Fi, Li, Si, Google and Cloudflare, with device and content icons, backup locations, schedules, and retention.
- Read the atlas and diagram explanation — locations, content types, sync, snapshots, archives, parity and configuration.
- Backup map — current scopes, schedules, retention and coverage boundaries.
- Dotfiles LFS and cross-device restore · Private-file sync and backups · Server application backups · Cloudflare backups
The diagrams describe configured backup routes and schedules. The linked setup guides describe their scope and recovery procedures.
- TODO — Google Photos backup: configure an independent backup and verify restoration; evaluate Immich on Si as a destination. No backup is configured yet.
The new cold-bootstrap path is documented in the device guide.
It installs early Fedora dependencies, clones public sources over HTTPS, enrolls
this hostname with tjikup new device, and unlocks the existing Bitwarden/age
credentials before any file apply. Download and review https://sh.type.hk/init;
the script embeds exact published source revisions. See the guide for release
verification and first-apply instructions.
Existing Fi/Li/Si profiles remain separate from new desktop/laptop/server roles.
New machines do not inherit their disk mounts or backup policies. Recipe
subscriptions are local, explicit, and include required dependencies. Review
tjikup --plan before the first apply.
Tjikup's Tailscale recipe installs Tailscale, enables tailscaled, configures the local
user as its operator, and keeps the daemon outside Mullvad on client hosts.
Tailscale membership is deliberately not versioned: join each Linux device
interactively after running that recipe.
tailscale upInstall the Tailscale Android app and sign in to the same tailnet. On fi, a
subsequent tjikup installs/configures Collie for the local Herdr
session and reserves the tailnet-only Vite route on HTTPS port 8443. Collie is
reachable only while fi is locked; its Hyprlock wrapper brings the node up
after locking and takes it down again on unlock.
Before making any changes, it is recommended to pull the latest version of the dotfiles to avoid conflicts.
tjikup is a configurable runner maintained in tjikOS. This repository supplies the fleet workflow: capture supported live settings, commit those templates, pull/push Dotjik and tjikOS, then apply home and system configuration through the recipe graph. See ownership, migration and validation.
Status rows use the terminal width, align notes on the right, and shorten long text with an ellipsis. Full messages remain in the run report. Child apply commands inherit the terminal width; redirected output defaults to 80 columns.
Run it after changing supported live configuration files:
tjikupUse tjikup --dry-run to print the recipe plan without executing commands.
Zed propagation updates existing scalar settings and preserves template settings absent from the live config, including settings not yet applied to this host. To remove a managed setting, edit its native .j2 template.
On clients, the Tjikup recipe installs or updates codex-lb in ~/.codex-lb/runtime. After an update, run systemctl --user restart codex-lb.service between Codex sessions to activate it; the update script leaves the running proxy alone to avoid interrupting requests.
Use tjikup --skip-conflicts to automatically skip conflicting files during the legacy home Tjikup apply, preserving their local contents while applying other changes. Native file conflicts always stop that file deployment. Other apply errors still fail the command.
Apply stages stream plain output to avoid terminal capability replies leaking from Gum spinners. Interactive prompts remain available.
Use dotjik edit TARGET to open the native source, or dotjik source-path TARGET
to locate it. Edit plain files and .j2 templates under native/home/files/;
file metadata and host selection live in native/home/files.json. New files need
an explicit manifest entry. Captured settings write back to these native sources.
See home file commands and recovery.
Run bash scripts/validate.sh to check Python and non-template shell syntax and
run the isolated Tjikup regression tests. Requires Python 3 with cryptography
and Fish; it does not apply dotfiles, access secrets, install packages, or
synchronize Git.
Native template rendering and host-specific behavior have separate fixture checks.
Minimal encrypted Telegram, Brave, Steam and FirefoxPWA backups are enabled on
Fi and Li. Zen uses its own sync. uv has no separate configuration to archive;
layout uv selects the project's .venv and leaves dependency installation to
an explicit uv sync. Li's Tjikup fstab matches its current disks and mounts.
See the configuration restoration guide for selected files, recovery limits and verification status.
Fi and Li install Temurin JDK 21 and the Android SDK through Tjikup. The
home:android-sdk recipe depends on the RPM phase for Java and installs under
~/.local/share/android-sdk. It verifies Google's pinned command-line tools
22.0 archive by SHA-256 before extracting it, then installs platform-tools,
platforms;android-35, and build-tools;35.0.0. SDK packages, licenses, caches,
and Gradle state remain outside Git. Enabling this installation accepts Google's
SDK license for these packages; home:android-sdk:update refreshes the declared
packages during normal updates. It does not install an emulator or system images.
New Fish shells export ANDROID_HOME and expose SDK commands. From Bash, build
Notjik with explicit paths (the system Java default stays unchanged):
cd ~/code/tjikos/apps/notjik-android
JAVA_HOME=/usr/lib/jvm/temurin-21-jdk \
ANDROID_HOME="$HOME/.local/share/android-sdk" \
./gradlew :app:testDebugUnitTest :app:assembleDebug