darwin: Use mkalias to link apps
This commit is contained in:
parent
a09022e129
commit
5f9bbb9891
4 changed files with 62 additions and 2 deletions
21
flake.lock
21
flake.lock
|
@ -313,6 +313,26 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"mkalias": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1678761502,
|
||||||
|
"narHash": "sha256-tL3C/b2BPOGQpV287wECDCDWmKwwPvezAAN3qz7N07M=",
|
||||||
|
"owner": "reckenrode",
|
||||||
|
"repo": "mkalias",
|
||||||
|
"rev": "8a5478cdb646f137ebc53cb9d235f8e5892ea00a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "reckenrode",
|
||||||
|
"repo": "mkalias",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"neovim-flake": {
|
"neovim-flake": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_2",
|
||||||
|
@ -528,6 +548,7 @@
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"flake-root": "flake-root",
|
"flake-root": "flake-root",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"mkalias": "mkalias",
|
||||||
"nifoc-overlay": "nifoc-overlay",
|
"nifoc-overlay": "nifoc-overlay",
|
||||||
"nix-darwin": "nix-darwin",
|
"nix-darwin": "nix-darwin",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
|
|
@ -62,6 +62,11 @@
|
||||||
url = "github:serokell/deploy-rs";
|
url = "github:serokell/deploy-rs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mkalias = {
|
||||||
|
url = "github:reckenrode/mkalias";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{ flake-parts, ... }:
|
outputs = inputs@{ flake-parts, ... }:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
@ -42,6 +42,8 @@
|
||||||
../programs/yt-dlp.nix
|
../programs/yt-dlp.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
disabledModules = [ "targets/darwin/linkapps.nix" ];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
stateVersion = "22.11";
|
stateVersion = "22.11";
|
||||||
|
|
||||||
|
@ -75,5 +77,35 @@
|
||||||
xxHash
|
xxHash
|
||||||
xz
|
xz
|
||||||
];
|
];
|
||||||
|
|
||||||
|
activation.aliasApplications = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin (
|
||||||
|
let
|
||||||
|
apps = pkgs.buildEnv {
|
||||||
|
name = "home-manager-applications";
|
||||||
|
paths = config.home.packages;
|
||||||
|
pathsToLink = "/Applications";
|
||||||
|
};
|
||||||
|
|
||||||
|
lastAppsFile = "${config.xdg.stateHome}/nix/.apps";
|
||||||
|
in
|
||||||
|
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
last_apps=$(cat "${lastAppsFile}" 2>/dev/null || echo "")
|
||||||
|
next_apps=$(readlink -f ${apps}/Applications/* | sort)
|
||||||
|
|
||||||
|
if [ "$last_apps" != "$next_apps" ]; then
|
||||||
|
echo "Apps have changed. Updating macOS aliases..."
|
||||||
|
|
||||||
|
apps_path="$HOME/Applications/Home Manager Apps"
|
||||||
|
$DRY_RUN_CMD mkdir -p "$apps_path"
|
||||||
|
|
||||||
|
$DRY_RUN_CMD ${pkgs.fd}/bin/fd \
|
||||||
|
-t l -d 1 . ${apps}/Applications \
|
||||||
|
-x $DRY_RUN_CMD "${pkgs.mkalias}/bin/mkalias" \
|
||||||
|
-L {} "$apps_path/{/}"
|
||||||
|
|
||||||
|
[ -z "$DRY_RUN_CMD" ] && echo "$next_apps" > "${lastAppsFile}"
|
||||||
|
fi
|
||||||
|
''
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,9 @@ let
|
||||||
default-system = "aarch64-darwin";
|
default-system = "aarch64-darwin";
|
||||||
|
|
||||||
overlay-x86 = _: _: { pkgs-x86 = import nixpkgs { system = "x86_64-darwin"; }; };
|
overlay-x86 = _: _: { pkgs-x86 = import nixpkgs { system = "x86_64-darwin"; }; };
|
||||||
overlay-agenix = inputs.agenix.overlays.default;
|
overlay-agenix = agenix.overlays.default;
|
||||||
overlay-attic = inputs.attic.overlays.default;
|
overlay-attic = inputs.attic.overlays.default;
|
||||||
|
overlay-mkalias = _: _: { inherit (inputs.mkalias.packages.${default-system}) mkalias; };
|
||||||
overlay-nifoc = inputs.nifoc-overlay.overlay;
|
overlay-nifoc = inputs.nifoc-overlay.overlay;
|
||||||
|
|
||||||
nixpkgsConfig = {
|
nixpkgsConfig = {
|
||||||
|
@ -13,6 +14,7 @@ let
|
||||||
overlay-x86
|
overlay-x86
|
||||||
overlay-agenix
|
overlay-agenix
|
||||||
overlay-attic
|
overlay-attic
|
||||||
|
overlay-mkalias
|
||||||
overlay-nifoc
|
overlay-nifoc
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue