So I’ve only been using nix about a year and only used flakes. I use in two ways.
First, I have my main nix flake. Most everything is controlled from that. It has several outputs from full blown nixos builds per host or some home manager builds for non-nixos systems.
Third-party flakes I use as inputs to my own flake then use the override system to inject them into nixpkgs. Then I just install whatever like normal from nixpkgs. I can either override an existing pkg (neovim nightly replaces regular neovim for me), or you can just add as a new package to nixpkgs by using a different attribute name.
Second way is for projects with their own repo. I’ll add a project flake that has a devshell with direnv so as soon as I enter that directory it sets up a sort of virtual environment just for that project. You can add outputs to it so others can use as a third-party flake.
My main starting point was https://github.com/Misterio77/nix-config for this design.
The work profiles are meh (due to employers, not Graphene). My employer restricts what can be installed in the work profile. So I can’t install sandboxed GPS. Therefore, none of my work apps can run.
I’m sure there are ways to make it work (e.g., shelter). Decided to tell them to provide me a work phone instead.