-
-
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 | |
''; |
++1 ☝🏽using https://github.com/hraban/mac-app-util
Worked perfectly and was super easy to add to my config file.
++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.
@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.
@ricardogaspar2 Great suggestion, works like a charm 🤝
@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?
@Kapi2910 - You could try to remove (or rename) the old directory, then re-run your rebuild so nix-darwin can create its symlink.
mac-app-util ... This is the way. I had to delete my existing /Applications/Nix Apps and re-run my darwin-rebuild command for the magic to happen.
@mikewebbtech That worked. Thank you so much.
{
description = "Example nix-darwin system flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nix-darwin.url = "github:nix-darwin/nix-darwin/master";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ self, nixpkgs, nix-darwin, ... }:
let
system = "aarch64-darwin";
configuration = { config, pkgs, ... }:
let
env = pkgs.buildEnv {
name = "system-applications";
paths = config.environment.systemPackages;
pathsToLink = "/Applications";
};
in {
environment.systemPackages = with pkgs; [
neovim
];
system.activationScripts.applications.text = pkgs.lib.mkForce ''
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
'';
nix.settings.experimental-features = "nix-command flakes";
system.configurationRevision = self.rev or self.dirtyRev or null;
system.stateVersion = 6;
nixpkgs.hostPlatform = system;
};
in {
darwinConfigurations."mini" = nix-darwin.lib.darwinSystem {
inherit system;
modules = [ configuration ];
};
};
}
This is how I fixed it :)
+1 ☝️ to using @hraban https://github.com/hraban/mac-app-util
Worked like a charm