Manzil started from similar goals, but its current shape is intentionally narrower and more explicit. This guide focuses on the practical deltas you will hit while moving a configuration over.
# old
hjem.users.alice.files.".zshrc".text = "...";
# new
manzil.users.alice.files.".zshrc".text = "...";Likewise:
hjem.clobberByDefault ->
manzil.clobberByDefaulthjem.extraModules ->
manzil.extraModuleshjem.specialArgs ->
manzil.specialArgshjem.linker -> manzil.linkerhjem.linkerOptions ->
manzil.linkerOptions# old
inputs.hjem.nixosModules.default
inputs.hjem.darwinModules.default
# new
inputs.manzil.nixosModules.default
inputs.manzil.darwinModules.defaultThe default manifest linker is Manzil's bundled Rust binary,
manzil. It is built and shipped from this repository.
Linux still supports manzil.linker = null for
systemd-tmpfiles mode, but that mode is deliberately
narrower:
symlink entriesIf you relied on a custom smfh package before, start by
trying the bundled linker first.
Generated v3 manifests include:
contracts.target_rootcontracts.source_rootsThese are validated by the bundled linker when loading the manifest and again against resolved runtime paths during activation. If you previously depended on writing outside the managed home root, or on linking from arbitrary mutable source trees, adjust the configuration first.
Manzil keeps the file surface intentionally explicit:
type = "symlink" | "copy" | "delete" | "directory" | "modify"source / text /
generator for source-like entriescopy / delete /
directory / modify. or ..That stricter validation usually catches mistakes earlier during evaluation.
On NixOS, generated user units still land under
~/.config/systemd/user. Manzil additionally reacts to
restartTriggers and reloadTriggers during
manifest activation, so changed trigger payloads can restart or reload
units automatically.
environment.sessionVariables and generated
environment.loadEnv remain available. Manzil still does not
source environment.loadEnv for you.
hjem to
manzil.manzil.nixosModules.default or
manzil.darwinModules.default.A minimal NixOS and nix-darwin example is available under
examples/ in this repository.