Releases: DeterminateSystems/nix-installer
v0.5.0
This release includes some more work towards supporting installing over existing installations (see #126 for more information on our curing effort). Specifically, an existing /etc/nix/nix.conf
file will no longer be a hard error1 and will instead be merged with the settings that we desire.
It also fixes a few bugs, like a typo in a permissions check (checking a file had a mode of 664
instead of 644
), a macOS installation bug that affected some setups (see #295 and #298 for more information), and explicitly erroring on WSL1 as unsupported.
If you rely on us as a library, the change that will impact you the most is that we made all of our error enum
s #[non_exhaustive]
, so that adding new variants in the future won't require a new major version.
The diagnostics report also saw a slight rework to be somewhat more useful in actually diagnosing issues. A diagnostic report now looks like this:
{
"version": "0.5.0",
"planner": "linux",
"configured_settings": [
"modify_profile"
],
"os_name": "Ubuntu",
"os_version": "22.04.1 LTS (Jammy Jellyfish)",
"triple": "x86_64-unknown-linux-musl",
"is_ci": false,
"action": "Install",
"status": "Failure",
"failure_chain": [
"Action(\"configure_nix\")",
"Child(\"place_nix_configuration\")",
"Child(\"create_directory\")",
"CreateDirectory(\"/etc/nix\")"
]
}
What's Changed
- Describe Diagnostics by @grahamc in #276
- Use 0o644 for files, not 0o664 by @cole-h in #278
- Update default nix_package_url to Nix 2.13.3 by @cole-h in #279
- Add newline to end of plan json output by @cole-h in #283
- Use
launchctl load -w
on macOS by @cole-h in #298 - Detect WSL1 and error by @cole-h in #297
- Make errors non-exhaustive by @cole-h in #299
- Add more failure context / Improve error structure by @Hoverbear in #296
- Update some dependencies by @Hoverbear in #303
- Integrate nix-config-parser by @cole-h in #263
Full Changelog: v0.4.0...v0.5.0
-
Currently, only
experimental-features
will be merged (please file an issue if you would like to see other options supported!); any other conflict between our desired settings and an existingnix.conf
will still cause an error. In other words, if the setting is not one that we are trying to set (see the list here: https://github.com/DeterminateSystems/nix-installer/blob/v0.5.0/src/action/common/place_nix_configuration.rs#L32-L45), it will be seamlessly merged into the resultingnix.conf
file. ↩
v0.4.0
With 0.4.0, we're feeling like the Determinate Nix Installer is ready for general usage.
It's pretty exciting and we invite you to enjoy a cupcake to celebrate with us! 🧁
As part of this step up in stability, we managed to re-enable deleting users on Macs. We originally disabled this feature because our test Macs were giving strange errors. Turns out, it's because we weren't logged in graphically, so even though our user had a secure token, they still couldn't remove users! For more details, check out #33.
We also got feedback from some users (thanks!) that the permission mode checking we added last version was too strict and in some places just plain wrong. Those should be fixed up and the errors related to them greatly improved.
This release also includes a diagnostic reporting tool, allowing adopters to report back the status of installs. This is handy if you're deploying Nix across an organization and want to catch problems with deployments. The reporter is configurable and can write small reports to files or URLs that look like this:
{
"version": "0.4.0",
"planner": "linux",
"configured_settings": [ "modify_profile" ],
"os_name": "Ubuntu",
"os_version": "22.04.1 LTS (Jammy Jellyfish)",
"triple": "x86_64-unknown-linux-gnu",
"action": "Install",
"status": "Failure",
"failure_variant": "Symlink"
}
If your organization starts using them, please let us know! We'd like to know more about how to make them useful. The default options of the installer drop a diagnostic to us to help us root out problems. Diagnostic reporting can always be disabled by adding --diagnostic-endpoint=
to the end of the install command.
We also fixed an issue with nix-shell -p
not working when it should have! We now add extra-nix-path = nixpkgs=flake:nixpkgs
to the nix.conf
.
Lastly, this release includes a number of minor "curing" functionality, meaning things like a /nix
folder already existing won't immediately cause an error. These items will still cleanly get removed on uninstall. It's intended that this functionality helps repair existing partial installs (from any source).
What's Next
Next release we plan to focus more on "curing". It's our hope we can offer users the ability to repair existing installs, complete previous partial install attempts, and offer users a chance to uninstall an existing (non nix-installer
created) install. As part of that we've been hacking on nix-config-parser
and it's been a lot of fun!
What's Changed
- Mac support note by @Hoverbear in #251
- Remove some bad merge code by @Hoverbear in #252
- Improve error message guidance by @Hoverbear in #258
- Don't specify chmod on synthetic.conf by @Hoverbear in #259
- Don't parallelize user creation by @Hoverbear in #260
- Add suggestion on --no-confirm flag by @lucperkins in #261
- Set the correct permissions on the zshenv by @Hoverbear in #257
- Enable deleting users and groups on Mac by @Hoverbear in #253
- Improve permissions checking when dealing with existing files by @cole-h in #267
- README: upgrade MacOS stability and note by @cole-h in #269
- Add diagnostics reporting by @Hoverbear in #264
- gitignore: ignore Nix result directories by @cole-h in #272
- Use extra-nix-path to resolve nix-shell -p not working by @Hoverbear in #270
- Prelease tidy and add is_ci to Diagnostics by @Hoverbear in #271
- Repair is_ci handling, sudo was erasing the variables by @Hoverbear in #274
Full Changelog: v0.3.0...v0.4.0
v0.3.0
This release includes some fixes for issues users were experiencing on the Steam Deck, as well as some improved error messages. Several actions can now recognize existing partial installs and transparently take ownership of them.
We decided on the phrasing "The Determinate Nix Installer" when regarding this project and not wanting to use the binary name. We also adopted an increased software maturity stance.
We also noted that the planners felt awkwardly named given that linux-multi
was able to install the root
only mode. We renamed them from linux-multi
to linux
, and darwin-multi
to macos
. (steam-deck
is unchanged) You may need to adjust your scripts to compensate for this.
Bug fixes
- Attempt to minimize steam deck display manager restart risk by @Hoverbear in #237
What's Changed
- Add 32 bit support by @Hoverbear in #229
- Bump Nix to 2.13.2 by @Hoverbear in #236
- Better support users/groups existing before install by @Hoverbear in #238
- Better support existing files with CreateFile and CreateorInsertIntoFile by @Hoverbear in #239
- It's the Determinate Nix Installer by @Hoverbear in #242
- Rename some of the planners by @Hoverbear in #243
- Make systemd unit start detect already running unit by @Hoverbear in #240
- Offer users better error if fstab entries exist by @Hoverbear in #241
- Workaround some Mac issues in CI by @Hoverbear in #247
- Clarify stability by @Hoverbear in #244
- Repair some tests by @Hoverbear in #248
- How about a CI API call reduction? by @Hoverbear in #245
- Release v0.3.0 by @Hoverbear in #249
Full Changelog: v0.2.0...v0.3.0
v0.2.0
This release includes some fixes users reported on Macs (notably #212) and introduces a new init-less option for Linux.
Using --init none
lets users enjoy Nix in places where an init system is not present. Since the darwin-multi
and the steam-deck
planners require the init system for mounting /nix
, they did not receive a similar option. --init none
permits use cases such as WSL2 (without Systemd) or inside running Docker containers.
Users of the linux-multi
planner can also try --no-start-daemon
which allows for Nix to be installed during a docker build
command.
Bugfixes
- Use a UUID instead of volume name for fstab on Mac by @Hoverbear in #215
What's Changed
- Add a friendly top comment about
nix-installer.sh
by @Hoverbear in #216 - Verify the apfs volume doesn't already exist before trying to create it by @Hoverbear in #217
- Add plist use to the CreateFstabEntry action by @Hoverbear in #221
- Use 30k range not 3k range for UIDs on Linux and 30k for a GID on all by @Hoverbear in #222
- init-less install by @Hoverbear in #188
Full Changelog: v0.1.0...v0.2.0
v0.1.0
We opted to cut a 0.1.0 for a marker of maturity more than a version breakage.
There was a minor API change if you were using the NIX_INSTALLER_NO_MODIFY_PROFILE
env as it got renamed to NIX_INSTALLER_MODIFY_PROFILE
.
What's Changed
- Improve Mac explain output by @Hoverbear in #205
- Correct --no-modify-profile by @Hoverbear in #206
Full Changelog: v0.0.2...v0.1.0
v0.0.2
Since v0.0.1
we moved our Github Action to https://github.com/DeterminateSystems/nix-installer-action. If you were using the action from this repository previously, please use the new one. This change was #185.
Bugfixes
- CreateDirectory now properly prunes when it should by @Hoverbear in #181
- CreateOrInsertIntoFile was not reverting by @Hoverbear in #180
What's Changed
- Action extra conf can be lacking newline by @Hoverbear in #175
- Allow users to answer e at prompts by @Hoverbear in #183
- Trim irrelevant mac warning by @Hoverbear in #186
- Add
(nix:$name)
as a prefix to the bash prompt by @grahamc in #191 - README: recommend safer curl options by @cole-h in #197
- Pass SHELL through self-escalation by @Hoverbear in #195
Full Changelog: v0.0.1...v0.0.2
v0.0.1
An initial release of nix-installer
.
This is mostly for testing our release process, a 0.1.0 will be the first announced release.
Milestone: https://github.com/DeterminateSystems/nix-installer/milestone/2?closed=1