* Handle the APFS volume not existing but the Service and Fstab being present
* Add handling if we need to bootout the service
* Spelling
* Rename enum
* Uninstall shouldn't fail fast
* wip
* wip
* No longer fails fast
* Tidy up error handling
* Touchup post merge
* Refactor nix tests
* Some minor fixes
* Uninstall fail tests
* Fiddle with messaging
* nixfmt
* Tweak display a bit
* fix docs
* Fix Mac
* Revert setting I was testing
* Reflect feedback about a log level
* Update both zshenv and zshrc
* Update only zshrc
* Add troubleshooting section
* Correct diagnostics note in readme
* Quirks!
* Remove a period
* Improve wording
* Tidy readme a bit
* Unforget a period
* Add ssl-cert-file option
* Add reqwest support for ssl cert
* Fix build
* Include in install differences
* Handle weird paths, include ENV setting in instructions
* Add install script cure tests
* Add missing stuff from commit
* Fix installer-test-fedora-v36-install-script-multi-broken-daemon-disabled
* Do some renaming
* Speeling
* Tweak permissions since Mac apparently has no root group
* Make `nix-installer plan invalid-plan` fail
Prior to this change, the `invalid-plan` would unexpectedly be
interpreted as the output path. Now there is a flag to specify where the
plan should be written to.
* use `out-file` and `NIX_INSTALLER_PLAN_OUT_FILE`
* Include user index in the user comment
If they're all called "Nix build user", anywhere that shows up without
the uid / username would make it difficult to diagnose any issues that
may occur.
* Create users 1-32 instead of 0-31
The official install scripts start at 1 as well.
* Update fixtures
Yes, I hand-edited the macos json, sue me.
* fixup: accept a comment, not the index
* fixup: comment, not index
* wip
* Do main editing portion
* Some more curing on fstab entries
* Overwrite fstab instead of append
* Add newline
* Improve --explain output for CreateNixVolume
* Tweak some permissions
* Fixup a few more permissions spots
* Improve encrypted volume handling
* Handle APFS volumes existing already to some degree
* Correct speeling
* More tweaking preparing for bootstrap/kickstart work
* Most of volume curing works
* Make kickstart use domain/service too
* Fixup nits
* Fix a missing format!
* Cure existing systemd units
* ActionError::Exists -> ActionError::DifferentContent
To more accurately reflect its associated error message.
* create_directory: use PathWasNotDir error instead
* check if the service files and an override dir exists in plan and execute
* fixup: target_os guarding
* fixup: check if existing file is a symlink and see if they link to the same place
* abstract systemd unit checking to function
* fixup: logic error
if the link_dest and unit_src were the same, we'd still error that the
file exists
* Curing existing /nix
* Fixup macs
* Suggest an uninstall command if the binary is not present
* Fixup some nits
* Skip a not great suggestion
* Suggest a nice url
* wip: add more context to errors
* Add a bunch fo context
* Repair source handling
* Add remaining contexts
* Add some context, but some of it is not right...
* Tidy up contexts properly
* Get command errors working how I want
* Remove some debug statements
* Repair mac build
* Move typetag to Action
* newtypes!
* Fix doctest
* Detect WSL1 and error
WSL1 is not supported because some things Nix relies on to work are not
available.
* Update linux.rs
* Add link to MS docs on WSL1 -> WSL2 upgrade
* Add newline to end of `plan` json output
This causes some shells (like sh) to continue their prompt right after
the closing brace, which is kinda meh.
* Add newline to end of `receipt.json`
`cat /nix/receipt.json` has the same issue as the previous commit, in
that it will bleed into the prompt for some shells that don't insert an
implicit newline.
* Add newline to end of fixture json documents
* Some pre-release tidy and add is_ci to diagnostics
* Bump locks
* Fixup cargo-audit raised issues
* Remove a spare 'I' which we were saving for later
* rename a field
* failure_variant, not error_variant
* Enable deleting users and groups on Mac
* Scaffold user change
* Add a warning if it doesn't work in situations we expect it to not work
* Scaffold out doing group member ship -- maybe we need an AddGroup action
* AddUserToGroup action
* Update plans
* Improve messaging
* Nit in error message
* Repair some review nits
* Set the correct permissions on the zshenv
* Update error to suggest chmod instead of delete
* Missed a formatting option
* 644, not 755
* Get a bit more specific
* Mac specific permissions
* Better support existing files with CreateFile and CreateorInsertIntoFile
* Skip instead of complete if found
* Fixup some permissions
* Fixup nix version used
* Use unix module instead of linux one
* Use unix module instead of linux one in other spot
* Also cover CreateDirectory
* Add some more tests
* Fixup messaging
* Corect some logic inversions
* Better support users/groups existing before install
* Skip instead of complete if found
* Prod CI
* Add debuging messages
* Mark completed instead of skipped
* wip
* Add dockerfile
* Add readme bits
* Fix logic inversion
* Relax init detection error
* Tidying heuristics
* Fix doc tests
* Mac supports start-daemon false
* Get VM tests working
* Add instructions
* Some target_os flagging
* More target flagging
* Fix lints
* Fixup more mac-only stuff
* cfg flag examples too
* Fix planner wording
* More os specific lint fixing
* More refinement on mac and the README
* Add new CI jobs to test no-daemon
* Use nix-installer-pr to point at branch
* Tests with no-init
* init/no-daemon are linux only
* nix tests support a per-distro all attribute
* Add working podman test
* Expand docker tests
* Add contributing notes
* format
* Support both podman and docker
* Update contributing
* Add Windows WSL test script for Ubuntu
* format nix tests
* More ignores to check-spelling
* Add systemd based wsl test
* We don't have root-only darwin
* Reflect review nits
* Reenable tests
* Restore mac plan
* Flag off os specific tests
* Better cfg flagging
* Remove dead comments
* Rework readme to look better with new sections
* Correct codeblock language
* Remove some warnings
* Add `(nix)` as a prefix to the bash prompt
Make it clearer when you're in the terminal vs. not.
* bash prompt prefix: put the project's name in the terminal
* Blame our installer for the nix.conf
* fixup: adding the version to the nix.conf
* force a space after the prefix
* CreateOrAppendFile: setuid safety
* Apply a sensible default mode if the file didn't already exist
* remove some incorrect docs
* Implement CreateOrInsertFile and use it instead of Append for shell rcs
Ubuntu's bashrc has the following lines in it:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
This means that anything appended to the file will only take effect in
interactive sessions. However, we want noninteractive shells to have
Nix on PATH too, e.g. for remote builds. Therefore, we need to add our
snippet to the beginning of the file, not the end.
* Adjust test fixtures to match new behaviour
* interaction: indicate default for confirm correctly
* CreateOrInsertFile: use randomised temporary filename
* Fix temp file creation
* Apply permissions to temp file, not final file
The final file may not exist, and the temporary file is the one whose
permissions will actually be preserved.
* Use the right ActionError for renaming
* Test the SSH behaviour properly
* cargo fmt
* [DS-574] Write to zshenv instead of zshrc
* CreateOrInsertFile -> CreateOrInsertIntoFile
Also move appending behaviour in here.
* Update Linux fixtures
* update darwin-multi fixture
* fix fixture
* fmt