Boot faster by disabling udev-settle and nm wait-online

My computer booted really slow with a message a start job is running for udev wait for complete device initialization .
After some research, I ran systemd-analyze blame and found out the problem was that systemd-udev-settle took about 6 seconds and NetworkManager-wait-online 2 seconds.

Searching around I found some related issues:

However, they don’t offer a solution that works for me. After some trying, I came up with this config:

systemd.services.systemd-udev-settle.enable = false;
systemd.services.NetworkManager-wait-online.enable = false;

and now my nixos system boots amazing fast!

Hope this will help someone else!

3 Likes

The first PR addresses an different issue - telling some units not to pull in systemd-udev-settle so if it’s still firing for you, it’s because something else is pulling it in and ideally we find out what that is and remove it.

Being explicit about disabling it is obviously fine too.

1 Like

Most likely “networking.dhcpcd.enable” is the thing that pulls in systemd-udev-settle. Any idea if it’s safe to remove that one?

I think so, it was added to fix a race condition with the interface renaming but it’s now solved.

https://github.com/NixOS/nixpkgs/pull/107382

2 Likes