For applications, we need to cater to the following:
Application type
System
Profile
Example
Where
Nixpkgs
All
All
VS Code
./modules/home-manager/ or ./modules/common (home manager versus system packages[^1])
Nixpkgs
All
Profile specific
Slack
./profiles/<profile>.nix
Nixpkgs
Linux or macOS
All
iterm2
./modules/darwin/ or ./modules/nixos (home manager versus system packages[^2])
Nixpkgs
Linux or macOS
Profile specific
./profiles/<profile>.nix; since profiles are contextual and (likely) machine-specific, these won't require conditionals.
Brew[^3]
macOS
All
Spotify
./modules/darwin/apps.nix
Brew[^3]
macOS
Profile specific
Notion
./profiles/<profile>.nix
[^1]: Home-manager is for dotfiles or the user environment, whereas system packages are for applications that don't need configuration.
[^2]: For these we might actually want to use home-manager (case in point: iterm2's configuration), but in the current setup in this branch this is not possible.
[^3]: On macOS, some applications are not available through Nixpkgs. For these we need to use Brew, but this is only a last resort.
For applications, we need to cater to the following:
./modules/home-manager/
or./modules/common
(home manager versus system packages[^1])./profiles/<profile>.nix
./modules/darwin/
or./modules/nixos
(home manager versus system packages[^2])./profiles/<profile>.nix
; since profiles are contextual and (likely) machine-specific, these won't require conditionals../modules/darwin/apps.nix
./profiles/<profile>.nix
[^1]: Home-manager is for dotfiles or the user environment, whereas system packages are for applications that don't need configuration. [^2]: For these we might actually want to use home-manager (case in point: iterm2's configuration), but in the current setup in this branch this is not possible. [^3]: On macOS, some applications are not available through Nixpkgs. For these we need to use Brew, but this is only a last resort.