Portable test suite for modular services, designed to be usable with
other service managers and use cases, inside Nixpkgs and externally.
Like modular services itself, it's still quite bare-bones. New
features can crystallize around this kind of infrastructure.
Assisted-By: Claude Opus 4.7/4.8 era Claude models
Scope:
- Combination of
- Textual matches of "baseNameOf (toString"
- Redundant toString calls I've found with my latest
"lazy paths" nix branch as they force lazy fetches into
the store. More info and new PR soon.
- Only cases I believe are worthwhile or easily determined
I've determined the validity by
- testing llvmPackages instantiation
- figuring out which types can pass into any particular
toString call - "human fuzzy type checker"
Behavior considerations by type:
- `path`: converted back to a string *without* context
`baseNameOf` does not copy things to the store on its own,
equivalent to its behavior for string inputs
- `null`: converted to `""` -> may be valid input!
ok if "" would not have been acceptable anyway
- `string` itself: passed through identically -> trivial
- `attrset` with `outPath`: same coercion as built into
the `baseNameOf` function -> trivial
- other atomic types: generally not sensible inputs to
`baseNameOf` -> fuzzy but true
This allows the type's return value to be accessed more easily.
Motivating use case:
- Built-in module provides CLI functionality by declaring
an `attrListWith { asAttrs = true; }`, extracting the ordered list
from `valueMeta` for the purpose of creating the `argv`.
- User modules can read the command line's flags directly without
having to parse the list of attrs.
This adds a type for name-value mappings that preserve ordering.
Motivating use case: command line flags for package modules /
wrappers / modular services.
The option value can be transformed into a command line in the
correct order.
Additionally, a convenience readOnly option could be provided
to give easy introspection access to the values in an ad hoc
manner.
Lychee by itself does not have a way to explicitly declare the
intent for the site to be relocatable.
Recent-ish changes in lychee and/or its dependencies have made
it catch the a root reference in all mdbook 404.html pages,
which is quite confusing.
By improving the UX around this aspect of the site, we resolve
at least part of that confusion.
(Though mdbook users should probably exclude the 404 page)
The textual output format changed in the last update, so let's
switch this to JSON, so that it's less likely to be affected by
similar kinds of changes going forward.
`emptyValue` for `types.submodule` was `{ value = { }; }`, i.e. none
of the type-declared options or their defaults.
Previously submodules without defs would simply fail for lack of a default,
but since PR #500104 repurposed `emptyValue` as the fallback when no
definitions exist, submodule options without an explicit `default = { }`
(new additions) silently lost their sub-option defaults
(e.g. `requiredFeatures.devnet` in the nixos-test-driver, #511413).
Main change: `emptyValue`: `{ }` -> `{ value = base.config; }`
Additionally, skip `emptyValue`-based default rendering in docs for
types with submodules, because their sub-options are already documented
individually, and forcing evaluation here can break on modules with
invalid or incomplete definitions.
The nix module uses tmpfiles, not the other way around.
Move definitions so that tmpfiles does not depend on the nix module.
This makes the tmpfiles module usable without loading a nix module.
... and take it from lib. Inconsequential, but it's a good convention
because it has occasional improvements to builtins' intentionally
highly unchanging behavior.
Include the moved-out modular service infrastructure into the set of
files to evaluate during the docs build.
This was previously unnecessary because even the portable parts were
stored inside the nixos tree.
... instead of bundled `cassandra-driver-internal-only-*.zip`.
This way it's more up to date, and follows our best practices.
"internal" plainly confirms that this is better.
Same issue as buildFromCabalSdist: sdistTarball applies patches via
overrideDerivation, but the patches attribute remained, causing
patchPhase to apply them again.
srcOnly applies patches, but the resulting derivation still had the
patches attribute, causing patchPhase to apply them again. Clear
patches after srcOnly to prevent double-application.
This prints the whole host public keys in the same format as cloud-init.
The main benefit is that this allows the direct generation of a known_hosts
file, simplifying client setup.
This commit also provides a new NixOS test that's an alternative to the
currently broken nixos/tests/ec2.nix tests.
Update engage documentation build for mdbook 0.5 compatibility.
Changes:
- Remove deprecated 'multilingual' field from book.toml
- Update git-repository-icon from 'fa-git-square' to 'fab-square-git'
The 'multilingual' field was removed in mdbook 0.5 as it was never used.
The FontAwesome icon name changed from 'fa-git-square' (FA 4) to
'fab-square-git' (FA 5 brand icon) in the version bundled with mdbook 0.5.
Update helix documentation build for mdbook 0.5 compatibility.
Changes:
- Replace deprecated {{#previous}}/{{#next}} helpers with {{#if}} blocks
- Update link references from {{link}} to {{previous.link}}/{{next.link}}
- Escape HTML tags in command descriptions to prevent markdown parsing errors
- Fix book-html path in postInstall (../book-html instead of book-html)
The mdbook 0.5 release changed navigation helpers from block helpers to
simple objects, requiring template syntax updates in index.hbs.
Apply the mdbook 0.5 support patch to devenv's bundled Nix 2.30.4.
The patch is from upstream Nix commit 5cbd7856, which maintains
compatibility with both mdbook 0.4.x and 0.5.x. The doc/manual/package.nix
file is excluded as it doesn't exist in cachix's Nix fork.
https://github.com/NixOS/nix/issues/14628
Apply patches to lix_2_93, lix_2_94, and git versions to support
building documentation with mdbook 0.5.
The patch is from upstream Lix commit 54df89f6, which maintains
compatibility with both mdbook 0.4.x and 0.5.x.
https://git.lix.systems/lix-project/lix/issues/1051
Provide indirection for ExecStart to enable control over systemd
specifier and variable substitution, while escaping process.argv
by default for literal arguments.