forked from lix-project/lix-installer
Linus Heckemann
f2606d3127
* 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
661 lines
20 KiB
JSON
661 lines
20 KiB
JSON
{
|
|
"version": "0.0.0-unreleased",
|
|
"actions": [
|
|
{
|
|
"action": {
|
|
"action": "create_directory",
|
|
"path": "/home/nix",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": true
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"action": "create_file",
|
|
"path": "/etc/systemd/system/nix-directory.service",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 420,
|
|
"buf": "[Unit]\nDescription=Create a `/nix` directory to be used for bind mounting\nPropagatesStopTo=nix-daemon.service\nPropagatesStopTo=nix.mount\nDefaultDependencies=no\nAfter=grub-recordfail.service\nAfter=steamos-finish-oobe-migration.service\n\n[Service]\nType=oneshot\nExecStart=steamos-readonly disable\nExecStart=mkdir -vp /nix\nExecStart=chmod -v 0755 /nix\nExecStart=chown -v root /nix\nExecStart=chgrp -v root /nix\nExecStart=steamos-readonly enable\nExecStop=steamos-readonly disable\nExecStop=rmdir /nix\nExecStop=steamos-readonly enable\nRemainAfterExit=true\n",
|
|
"force": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"action": "create_file",
|
|
"path": "/etc/systemd/system/nix.mount",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 420,
|
|
"buf": "[Unit]\nDescription=Mount `/home/nix` on `/nix`\nPropagatesStopTo=nix-daemon.service\nPropagatesStopTo=nix-directory.service\nAfter=nix-directory.service\nRequires=nix-directory.service\nConditionPathIsDirectory=/nix\nDefaultDependencies=no\n\n[Mount]\nWhat=/home/nix\nWhere=/nix\nType=none\nDirectoryMode=0755\nOptions=bind\n",
|
|
"force": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"action": "create_file",
|
|
"path": "/etc/systemd/system/ensure-symlinked-units-resolve.service",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 420,
|
|
"buf": "[Unit]\nDescription=Ensure Nix related units which are symlinked resolve\nAfter=nix.mount\nRequires=nix-directory.service\nRequires=nix.mount\nPropagatesStopTo=nix-directory.service\nPropagatesStopTo=nix.mount\nDefaultDependencies=no\n\n[Service]\nType=oneshot\nRemainAfterExit=yes\nExecStart=/usr/bin/systemctl daemon-reload\nExecStart=/usr/bin/systemctl restart --no-block sockets.target timers.target multi-user.target\n\n[Install]\nWantedBy=sysinit.target\n",
|
|
"force": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"action": "start_systemd_unit",
|
|
"unit": "ensure-symlinked-units-resolve.service"
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"action": "provision_nix",
|
|
"fetch_nix": {
|
|
"action": {
|
|
"url": "https://releases.nixos.org/nix/nix-2.12.0/nix-2.12.0-x86_64-linux.tar.xz",
|
|
"dest": "/nix/temp-install-dir"
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"create_users_and_group": {
|
|
"action": {
|
|
"daemon_user_count": 32,
|
|
"nix_build_group_name": "nixbld",
|
|
"nix_build_group_id": 3000,
|
|
"nix_build_user_prefix": "nixbld",
|
|
"nix_build_user_id_base": 3000,
|
|
"create_group": {
|
|
"action": {
|
|
"name": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"create_users": [
|
|
{
|
|
"action": {
|
|
"name": "nixbld0",
|
|
"uid": 3000,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld1",
|
|
"uid": 3001,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld2",
|
|
"uid": 3002,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld3",
|
|
"uid": 3003,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld4",
|
|
"uid": 3004,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld5",
|
|
"uid": 3005,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld6",
|
|
"uid": 3006,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld7",
|
|
"uid": 3007,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld8",
|
|
"uid": 3008,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld9",
|
|
"uid": 3009,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld10",
|
|
"uid": 3010,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld11",
|
|
"uid": 3011,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld12",
|
|
"uid": 3012,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld13",
|
|
"uid": 3013,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld14",
|
|
"uid": 3014,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld15",
|
|
"uid": 3015,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld16",
|
|
"uid": 3016,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld17",
|
|
"uid": 3017,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld18",
|
|
"uid": 3018,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld19",
|
|
"uid": 3019,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld20",
|
|
"uid": 3020,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld21",
|
|
"uid": 3021,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld22",
|
|
"uid": 3022,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld23",
|
|
"uid": 3023,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld24",
|
|
"uid": 3024,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld25",
|
|
"uid": 3025,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld26",
|
|
"uid": 3026,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld27",
|
|
"uid": 3027,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld28",
|
|
"uid": 3028,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld29",
|
|
"uid": 3029,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld30",
|
|
"uid": 3030,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"name": "nixbld31",
|
|
"uid": 3031,
|
|
"groupname": "nixbld",
|
|
"gid": 3000
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
]
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"create_nix_tree": {
|
|
"action": {
|
|
"create_directories": [
|
|
{
|
|
"action": {
|
|
"path": "/nix/var",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/log",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/log/nix",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/log/nix/drvs",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/db",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/gcroots",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/gcroots/per-user",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/profiles",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/profiles/per-user",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/temproots",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/userpool",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/nix/var/nix/daemon-socket",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
]
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"move_unpacked_nix": {
|
|
"action": {
|
|
"src": "/nix/temp-install-dir"
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"action": "configure_nix",
|
|
"setup_default_profile": {
|
|
"action": {
|
|
"channels": [
|
|
"nixpkgs"
|
|
]
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"configure_shell_profile": {
|
|
"action": {
|
|
"create_directories": [],
|
|
"create_or_insert_into_files": [
|
|
{
|
|
"action": {
|
|
"path": "/etc/bashrc",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"buf": "\n# Nix\nif [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then\n . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'\nfi\n# End Nix\n\n \n",
|
|
"position": "Beginning"
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/etc/profile.d/nix.sh",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"buf": "\n# Nix\nif [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then\n . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'\nfi\n# End Nix\n\n \n",
|
|
"position": "Beginning"
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/etc/zshenv",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"buf": "\n# Nix\nif [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then\n . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'\nfi\n# End Nix\n\n \n",
|
|
"position": "Beginning"
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
{
|
|
"action": {
|
|
"path": "/etc/bash.bashrc",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"buf": "\n# Nix\nif [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then\n . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'\nfi\n# End Nix\n\n \n",
|
|
"position": "Beginning"
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
]
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"place_channel_configuration": {
|
|
"action": {
|
|
"channels": [
|
|
[
|
|
"nixpkgs",
|
|
"https://nixos.org/channels/nixpkgs-unstable"
|
|
]
|
|
],
|
|
"create_file": {
|
|
"action": {
|
|
"path": "/root/.nix-channels",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 436,
|
|
"buf": "https://nixos.org/channels/nixpkgs-unstable nixpkgs",
|
|
"force": false
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"place_nix_configuration": {
|
|
"action": {
|
|
"create_directory": {
|
|
"action": {
|
|
"path": "/etc/nix",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 493,
|
|
"force_prune_on_revert": false
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"create_file": {
|
|
"action": {
|
|
"path": "/etc/nix/nix.conf",
|
|
"user": null,
|
|
"group": null,
|
|
"mode": 436,
|
|
"buf": "\n\nbuild-users-group = nixbld\n\nexperimental-features = nix-command flakes\n\nauto-optimise-store = true\n",
|
|
"force": false
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
},
|
|
"state": "Uncompleted"
|
|
},
|
|
"configure_nix_daemon_service": {
|
|
"action": {},
|
|
"state": "Uncompleted"
|
|
}
|
|
},
|
|
"state": "Uncompleted"
|
|
}
|
|
],
|
|
"planner": {
|
|
"planner": "steam-deck",
|
|
"persistence": "/home/nix",
|
|
"settings": {
|
|
"channels": [
|
|
[
|
|
"nixpkgs",
|
|
"https://nixos.org/channels/nixpkgs-unstable"
|
|
]
|
|
],
|
|
"modify_profile": true,
|
|
"daemon_user_count": 32,
|
|
"nix_build_group_name": "nixbld",
|
|
"nix_build_group_id": 3000,
|
|
"nix_build_user_prefix": "nixbld",
|
|
"nix_build_user_id_base": 3000,
|
|
"nix_package_url": "https://releases.nixos.org/nix/nix-2.12.0/nix-2.12.0-x86_64-linux.tar.xz",
|
|
"extra_conf": [],
|
|
"force": false
|
|
}
|
|
}
|
|
} |