Установка Nix на Steam Deck

Установка

Многие команды потребуют прав суперпользователя (sudo). Если вы еще не установили пароль для вашего пользователя (речь не про аккаунт в Steam), то сделайте это сейчас, выполнив команду passwd.

Запускаем

  1. Первым делом необходимо отключить режим readonly, в котором по умолчанию работает Steam Deck.
1
steamos-readonly disable
  1. Создаем nix-directory.service.
1
sudo nano /etc/systemd/system/nix-directory.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[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
  1. Создаем nix.mount.
1
sudo nano /etc/systemd/system/nix.mount
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[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
  1. Создаем ensure-symlinked-units-resolve.service.
1
sudo nano /etc/systemd/system/ensure-symlinked-units-resolve.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[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
  1. Запускаем сервис.
1
sudo systemctl enable --now ensure-symlinked-units-resolve.service

Steam Deck перезапустится.

  1. Устанавливаем Nix.
1
sh <(curl -L https://nixos.org/nix/install) --daemon

Использование

Поиск пакета:

1
nix search nixpkgs <packagename>

Установка пакета:

1
nix-env -iA nixpkgs.<packagename>

Так же пакеты можно искать на nixos.org.

Источники