Skip to content

Instantly share code, notes, and snippets.

@elliottminns
Last active July 3, 2025 08:53
Show Gist options
  • Save elliottminns/211ef645ebd484eb9a5228570bb60ec3 to your computer and use it in GitHub Desktop.
Save elliottminns/211ef645ebd484eb9a5228570bb60ec3 to your computer and use it in GitHub Desktop.
system.activationScripts.applications.text = let
env = pkgs.buildEnv {
name = "system-applications";
paths = config.environment.systemPackages;
pathsToLink = "/Applications";
};
in
pkgs.lib.mkForce ''
# Set up applications.
echo "setting up /Applications..." >&2
rm -rf /Applications/Nix\ Apps
mkdir -p /Applications/Nix\ Apps
find ${env}/Applications -maxdepth 1 -type l -exec readlink '{}' + |
while read -r src; do
app_name=$(basename "$src")
echo "copying $src" >&2
${pkgs.mkalias}/bin/mkalias "$src" "/Applications/Nix Apps/$app_name"
done
'';
@shaoyanji
Copy link

I used the activation script in my config, but alacritty is still not visible in spotlight :/

it does have to be an environment system package for it to be read.

this script works for kitty for example, but doesn't for wezterm because i have it as a home manager module. the creature comfort with spotlight isn't great because aliases are a little lower than a websearch. i use raycast as a spotlight replacement through homebrew.

but what is great about this script is that it gives you an opening to adapt it to add home manager aliases, just replace /Applications/Nix\ Apps to ~/Applications/Home\ Manager (i'm not a fan of bash).

@ricardogaspar2
Copy link

Just a suggestion, I've used this utility on my flake.nix and it worked like a charm. No need to define an activation script
https://github.com/hraban/mac-app-util
Credits to the developer @hraban

Thanks for the video tutorial, it really helped.

@waseemhnyc
Copy link

+1 ☝️ to using @hraban https://github.com/hraban/mac-app-util

Worked like a charm

@frarredondo
Copy link

++1 ☝🏽using https://github.com/hraban/mac-app-util

Worked perfectly and was super easy to add to my config file.

@tylercritchlow
Copy link

++1 ☝🏽using https://github.com/hraban/mac-app-util

Worked perfectly and was super easy to add to my config file.

Do you mind sharing your flake.nix with mac-app-util? I tried it, and it doesn't work for me.

@frarredondo
Copy link

@tylercritchlow Sure! I've uploaded a copy here: https://gist.github.com/frarredondo/192930a454c992f306143bfc4eefc948

I will say that after posting my comment above i very quickly learned that very few packages were actually available for aarch64-darwin and found that i needed to install everything via homebrew so i didn't see the point in using nix at least on apple silicon atm and uninstalled it and went back to using homebrew for package management.

@snajahi
Copy link

snajahi commented May 30, 2025

@ricardogaspar2 Great suggestion, works like a charm 🤝

@Kapi2910
Copy link

@frarredondo Thanks for the snippet.

when I try to run the flake, I get this warning:

warning: /Applications/Nix Apps is not owned by nix-darwin, skipping App linking...

Any idea how to fix this?

@frarredondo
Copy link

@Kapi2910 - You could try to remove (or rename) the old directory, then re-run your rebuild so nix-darwin can create its symlink.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment