steamdeck-utilites/install_nix.sh
Steam Deck User 8a667ce584 init commit
2024-12-14 07:32:58 -08:00

77 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
{
sudo cat << EOF
[Unit]
Description=Create a `/nix` directory to be used for bind mounting
PropagatesStopTo=nix-daemon.service
PropagatesStopTo=nix.mount
DefaultDependencies=no
After=grub-recordfail.service
After=steamos-finish-oobe-migration.service
[Service]
Type=oneshot
ExecStart=steamos-readonly disable
ExecStart=mkdir -vp /nix
ExecStart=chmod -v 0755 /nix
ExecStart=chown -v root /nix
ExecStart=chgrp -v root /nix
ExecStart=steamos-readonly enable
ExecStop=steamos-readonly disable
ExecStop=rmdir /nix
ExecStop=steamos-readonly enable
RemainAfterExit=true
EOF
} > /etc/systemd/system/nix-directory.service
{
sudo cat << EOF
[Unit]
Description=Mount `/home/nix` on `/nix`
PropagatesStopTo=nix-daemon.service
PropagatesStopTo=nix-directory.service
After=nix-directory.service
Requires=nix-directory.service
ConditionPathIsDirectory=/nix
DefaultDependencies=no
[Mount]
What=/home/nix
Where=/nix
Type=none
DirectoryMode=0755
Options=bind
EOF
} > /etc/systemd/system/nix.mount
{
sudo cat << EOF
[Unit]
Description=Ensure Nix related units which are symlinked resolve
After=nix.mount
Requires=nix-directory.service
Requires=nix.mount
PropagatesStopTo=nix-directory.service
PropagatesStopTo=nix.mount
DefaultDependencies=no
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/systemctl daemon-reload
ExecStart=/usr/bin/systemctl restart --no-block sockets.target timers.target multi-user.target
[Install]
WantedBy=sysinit.target
EOF
} > /etc/systemd/system/ensure-symlinked-units-resolve.service
sudo systemctl daemon-reload
sudo systemctl enable --now ensure-symlinked-units-resolve.service
sh <(curl -L https://nixos.org/nix/install) --daemon
sudo echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
echo "export XDG_DATA_DIRS="$HOME/.nix-profile/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" >>