I struggled with similar problems. So I have three fixed buckets of time now. First bucket is the job. Second bucket is for one side project. Third bucket is for anything under the sun: Linux kernel, Reactjs, Rust, Android, ML... I call the third bucket as the "fish bucket".