It is possible to have derivation that builds some file for system directory in your ~/.config/nixpkgs/overrides
. It is more complicated than managing user personal files, but still major improvement over manual editing.
For example, I can build /var/service/user
service directory for system-wide runit
installation with following command:
$ nix-build '<nixpkgs>' -A system.sv-user -o /tmp/sv-user
After that I move generated link to intended location in system directory, like following:
$ doas cp -vf /tmp/sv-user /var/service/user
Next, it is necessary to register final destination as Nix garbage collection root, otherwise the link will become dangling after garbage collection, which can be triggered by unprivileged user.
$ nix-store --add-root /var/service/user -r --indirect
When you update derivation for system-wide file, these three steps must to be performed again.
It can be noted that this poor-man implementation of what nixos-rebuild
in NixOS does. Unfortunately, NixOS depends on systemd heavily, and my experience suggests that it is much simplier to add missing feature to sound base system than eradicate bloatware specially designed to make it almost impossible.