2026-02-08 01:22:56 -05:00

2.3 KiB

Initial Setup

Mount /home/deck/nix to /nix

The default /nix is too small and it could be modified by OS releases. We want to use something in our home folder since that will be untouched in upgrades.

Create /etc/systemd/system/nix-directory.service

  [Unit]
  Description=Create a `/nix` directory to be used for bind mounting
  #PropagatesStopTo=nix-daemon.service
  PropagatesStopTo=nix.mount
  DefaultDependencies=no

  [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

Create /etc/systemd/system/nix.mount

  [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
  #RequiredBy=nix-daemon.service
  #RequiredBy=nix-daemon.socket

  [Mount]
  What=/home/nix
  Where=/nix
  Type=none
  DirectoryMode=0755
  Options=bind

Create /etc/systemd/system/ensure-symlinked-units-resolve.service

  [Unit]
  Description=Ensure Nix related units which are symlinked resolve
  After=nix.mount
  Requires=nix-directory.service
  Requires=nix.mount
  DefaultDependencies=no

  [Service]
  Type=oneshot
  RemainAfterExit=yes
  ExecStart=/usr/bin/systemctl daemon-reload
  #ExecStart=/usr/bin/systemctl restart --no-block nix-daemon.socket

  [Install]
  WantedBy=sysinit.target

Enable the mount by running

  sudo systemctl enable --now ensure-symlinked-units-resolve.service

Install nix

  sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon