!lheuhImcToQZYTQTuI:nixos.org

Nix on macOS

1162 Members
“There are still many issues with the Darwin platform but most of it is quite usable.” — http://yves.gnu-darwin.org188 Servers

Load older messages


SenderMessageTime
23 Nov 2025
@bake.monorail:matrix.orgbake.monorailAh, I thought that was doing something different since it says "Unrestricted app location – nix-bundle-macos requires apps to be in /Applications/".11:55:34
@niklaskorz:matrix.orgniklaskorzwell, it does patch all binaries to use rpath11:55:50
@bake.monorail:matrix.orgbake.monorailAh so makes all the binaries "portable"? Like using $ORIGIN on linux, right?11:56:42
@niklaskorz:matrix.orgniklaskorzyup, but the portability is currently restricted to only supporting dynamic libraries in the nix store11:56:56
@niklaskorz:matrix.orgniklaskorzthere is an issue to extend that to arbitrary nix store files11:57:06
@niklaskorz:matrix.orgniklaskorzhttps://codeberg.org/niklaskorz/nix-bundle-darwin/issues/111:57:13
@bake.monorail:matrix.orgbake.monorailI'd avoid run-time hacks tbh11:57:28
@niklaskorz:matrix.orgniklaskorzI'd make it opt in11:57:41
@niklaskorz:matrix.orgniklaskorzbut also it's seldom needed on macOS11:57:46
@bake.monorail:matrix.orgbake.monorailI'm thinking having a nix store in /Applications/MyApp.app is rather acceptable.11:57:47
@niklaskorz:matrix.orgniklaskorzapps are supposed to access app-bundle files using the OS APIs11:57:59
@niklaskorz:matrix.orgniklaskorznot by directly accessing file paths11:58:04
@bake.monorail:matrix.orgbake.monorailThe downside is that the user needs to copy it there, which AFAIU is typical anyway.11:58:06
@niklaskorz:matrix.orgniklaskorzso having a hardcoded nix store path that is not a dynamic library in a macOS app is pretty rare anyway, even for apps in nixpkgs11:58:49
@bake.monorail:matrix.orgbake.monorailWhat do you mean? If you, say, generate a script it's rather easy to have path hardcoded.11:59:42
@bake.monorail:matrix.orgbake.monorail* What do you mean? If you, say, generate a script it's rather easy to have paths hardcoded.11:59:48
@niklaskorz:matrix.orgniklaskorzfor wrapper scripts? that's a special case I definitely want to handle soon-ish12:00:13
@bake.monorail:matrix.orgbake.monorail So, you do the rpath thing, which is kinda nice. I was thinking it should be the default on Linux as well, but the problem is that you can't use $ORIGIN for the loader (i.e., PT_INTERP). I guess on mac you don't have the same problem since you don't distribute the libc. Correct? 12:01:52
@niklaskorz:matrix.orgniklaskorzIndeed, all macOS apps have to use the system libc12:02:18
@niklaskorz:matrix.orgniklaskorzthat's also why we can't do fully static binaries on macOS12:02:26
@bake.monorail:matrix.orgbake.monorailbtw, I appreciate your effort, but this thing was much more easy to understand if it was written in bash :D12:03:37
@bake.monorail:matrix.orgbake.monorail* btw, I appreciate your effort, but this thing would have been much easier to understand if it was written in bash :D12:03:49
@reckenrode:matrix.orgRandy EckenrodeSo if we can figure out the URL, it might be possible to package it?12:04:10
@bake.monorail:matrix.orgbake.monorailmaybe it's just the fact that I'm a rust noob12:04:15
@niklaskorz:matrix.orgniklaskorzI'm not writing a mach parser in bash ⚰️12:04:17
@bake.monorail:matrix.orgbake.monorailllvm-readobj not enough?12:04:39
@niklaskorz:matrix.orgniklaskorz well for this particularly usecase otool -L would have done the job 12:06:01
@niklaskorz:matrix.orgniklaskorzbut also I wouldn't want to port the recursive copy algorithm in bash12:06:14
@niklaskorz:matrix.orgniklaskorzgenerally not being able to read the bash mess that was nix-bundle-macos is the reason I wrote this in Rust in the first place12:06:40
@niklaskorz:matrix.orgniklaskorz* but also I wouldn't want to port the recursive copy algorithm to bash12:06:53

Show newer messages


Back to Room ListRoom Version: 6