!lheuhImcToQZYTQTuI:nixos.org

Nix on macOS

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

Load older messages


SenderMessageTime
8 Jan 2026
@k900:0upti.meK900If it's packages breaking, that's less common on stable, yes10:34:19
@markus.lohmayer:matrix.orgmarkus.lohmayerIf others can recommend to move to stable, I am of course interested in diverse opinions.10:34:29
@k900:0upti.meK900If it's module API or such breaking, that's delayed on stable, but generally unavoidable10:34:33
@k900:0upti.meK900And like, assuming you're pinning your inputs, which you should be, you can always rebuild without upgrading10:34:56
@markus.lohmayer:matrix.orgmarkus.lohmayerI will post the last error that made me think that way in a bit when I'm ready.10:35:18
@markus.lohmayer:matrix.orgmarkus.lohmayerI think on unstable, the recent bug that kept me from applying the configuration is "pkgs.buildEnv error: Can't use string ("/Applications") as an ARRAY ref while "strict refs" in use at /nix/store/qcnckfk16sad3j255jpw1hzfdj4ix2ph-builder.pl line 18.", which is probably the same as https://github.com/nix-community/home-manager/issues/835711:15:48
@markus.lohmayer:matrix.orgmarkus.lohmayerWhen it comes to broken packages, I usually managed to work around it by modifying the config such that the broken package comes from stable, but in this case I think it affects everything (or at least home-manager which I use to install a ton of packages).11:16:55
@reckenrode:matrix.orgRandy Eckenrode Finally. I have everything in $lib/lib/swift/${swiftPlatform building in the stdlib package. Now I just need to make Swift use that instead of what it’s using. I’ve managed to avoid installing most of the stdlib, but some of the files are part of other components. They’ll need removed. 12:27:24
@nazarewk:matrix.orgkdn why are the $KEYS in linux-builder fed through the store? 16:16:26
@nazarewk:matrix.orgkdn where do I find SSHD logs on MacOS? is there anyting more than /usr/bin/log show --predicate 'process == "sshd"' --info --debug --last 2m? I'm just seeing this error there: [com.apple.network.libinfo:si_destination_compare] send failed: Invalid argument 20:20:17
@nazarewk:matrix.orgkdn *

where do I find SSHD logs on MacOS? is there anyting more than /usr/bin/log show --predicate 'process == "sshd"' --info --debug --last 2m? I'm just seeing this error there: [com.apple.network.libinfo:si_destination_compare] send failed: Invalid argument

on the client side I get permission denied

20:30:46
@nazarewk:matrix.orgkdnI can login to my primary user, but not to the additional user20:34:54
@nazarewk:matrix.orgkdnI cannot force the password authentication for that user either20:40:17
@nazarewk:matrix.orgkdn

FYI: /usr/sbin/sshd -ddd -p 2222 was quite helpful, turned out SSHD didn't like the /nix/store permissions, I changed it to this copying and referencing static path:

          system.activationScripts.preActivation.text = ''
            cp -a ${pkgs.writeShellScript "cat-nofail" ''/bin/cat "$@" || :''} /etc/ssh/authorized-keys-command
          '';
21:23:12
@nazarewk:matrix.orgkdnis there any way to connect directly to the linux-builder's serial console?22:20:13
@nazarewk:matrix.orgkdn

FYI: I found it:

            virtualisation.qemu.options = [
              # socat - UNIX-CONNECT:/run/org.nixos.linux-builder/qemu-serial.sock
              # minicom -D 'unix#/run/org.nixos.linux-builder/qemu-serial.sock'
              ''-serial unix:"$TMPDIR/qemu-serial.sock",server,nowait''
            ];
23:23:37
9 Jan 2026
@reckenrode:matrix.orgRandy Eckenrode

    [1/2] /nix/store/jk2r3w2q06vh7hkfxrw74ckrlrppm6gz-swiftc-6.2.3/bin/swiftc -j 16 -num-threads 16 -c  -module-name cmTC_a937f -target arm64-apple-macosx14.0  -sdk /nix/store/i6yfk1parrl2f2m>
    FAILED: [code=1] CMakeFiles/cmTC_a937f.dir/main.swift.o
    /nix/store/jk2r3w2q06vh7hkfxrw74ckrlrppm6gz-swiftc-6.2.3/bin/swiftc -j 16 -num-threads 16 -c  -module-name cmTC_a937f -target arm64-apple-macosx14.0  -sdk /nix/store/i6yfk1parrl2f2mhj96x5>
    <unknown>:0: warning: using (deprecated) legacy driver, Swift installation does not contain swift-driver at: '/nix/store/jk2r3w2q06vh7hkfxrw74ckrlrppm6gz-swiftc-6.2.3/bin/swift-driver-new'
    <unknown>:0: warning: option '-incremental' is only supported in swift-driver
    /nix/store/i6yfk1parrl2f2mhj96x565ijc3lg7xv-apple-sdk-26.0/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/swift/Swift.swiftmodule/arm64e-apple-macos.swiftinterface:5:8: error>
        3 | // swift-module-flags: -target arm64e-apple-macosx26.0 -target-variant arm64e-apple-ios26.0-macabi -enable-objc-interop -enable-library-evolution -module-link-name swiftCore -pars>
        4 | // swift-module-flags-ignorable: -enable-lexical-lifetimes=false -enable-ossa-modules -strict-memory-safety -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
        5 | import SwiftShims
          |        `- error: no such module 'SwiftShims'
        6 | @inlinable public func min<T>(_ x: T, _ y: T) -> T where T : Swift.Comparable {
        7 |

    /nix/store/i6yfk1parrl2f2mhj96x565ijc3lg7xv-apple-sdk-26.0/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/swift/Swift.swiftmodule/arm64e-apple-macos.swiftinterface:1:1: error>
        1 | // swift-interface-format-version: 1.0
          | `- error: failed to build module 'Swift'; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.17.14 clang-170>
        2 | // swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.17.14 clang-1700.3.17.1)
        3 | // swift-module-flags: -target arm64e-apple-macosx26.0 -target-variant arm64e-apple-ios26.0-macabi -enable-objc-interop -enable-library-evolution -module-link-name swiftCore -pars>
    ninja: build stopped: subcommand failed.
01:52:13
@reckenrode:matrix.orgRandy EckenrodeThat’s with the separate stdlib. I think I’m going to have to do some patching to make it aware of both the dev and lib outputs in the stdlib package.01:52:46
@reckenrode:matrix.orgRandy EckenrodeYeah. I need to revisit the separate lib patch. I don’t think patching the compiler lookup is the right approach. It’s changing the semantics of the search. I should be augmenting the path.02:27:53
@reckenrode:matrix.orgRandy Eckenrode * Yeah. I need to revisit the separate lib patch. I don’t think patching the compiler lookup is the right approach. It’s changing the semantics of the search. I should be augmenting the paths in updateRuntimeLibraryPaths. 02:28:10
@ivy:fargone.shIvy joined the room.05:49:09
@alexfmpe:matrix.orgalexfmpe

huh what gives?

$ uname -a
Darwin MacBookPro.Home 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:29 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6000 arm64
$ nix-shell -p hello --run 'uname -a'
Darwin MacBookPro.Home 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:29 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6000 arm64 arm Darwin
15:38:30
@alexfmpe:matrix.orgalexfmpe my outer shell is zsh, the nix-shell is bash, but calling bash directly doesn't add whatever that suffix is, so it doesn't look like a shell thing 15:39:31
@alexfmpe:matrix.orgalexfmpethis divergence also doesn't show up on my nixos15:39:49
@alexfmpe:matrix.orgalexfmpeso maybe it's a nix+mac or nix-darwin thing?15:40:01
@ivy:fargone.shIvydiscovered a catastrophic bug in gpg-agent for macos on home-manager16:10:52
@ivy:fargone.shIvygpg-agent has a core problem that goes upstream and means that gpg-agent fundamentally doesnt work on darwin in supervised mode adn the launchd agent is useless16:11:28
@saiko:knifepoint.netKatalin 🔪perhaps MacGPG has patches for this or at least a workaround? that’s what I use and gpg-agent runs automatically there16:16:37
@ivy:fargone.shIvy

one part of it is having a wrapper to get the sockets

// Simple wrapper to activate launchd sockets
// and set them up in the same way systemd would
// so that we can use gpg-agent in --supervised mode

#include <errno.h>
#include <err.h>
#include <unistd.h>
#include <launch.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

int get_launchd_socket(const char *sockName)
{
  // Get our sockets from launchd
  int *fds = NULL;
  size_t count = 0;
  errno = launch_activate_socket(sockName, &fds, &count);

  if (errno != 0 || fds == NULL || count < 1)
  {
    warn("Error getting socket FD from launchd");
    return 0;
  }

  if (count != 1)
  {
    warnx("Expected one FD from launchd, got %zu. Only using first socket.", count);
  }

  // Unset FD_CLOEXEC bit
  fcntl(fds[0], F_SETFD, fcntl(fds[0], F_GETFD, 0) & ~FD_CLOEXEC);

  if (fds)
  {
    free(fds);
  }

  return 1;
}

int main(int argc, char **argv)
{
  // List of sockets we're going to check for
  const char *sockets[] = {
      "ssh",
      "browser",
      "extra",
      "std"};
  int fds = 0;
  char *fdsString = NULL;
  char *fdNames = NULL;
  char *tmpfdNames = NULL;

  // Activate the sockets and count and store names
  for (int i = 0; i < sizeof(sockets) / sizeof(sockets[0]); i++)
  {
    if (get_launchd_socket(sockets[i]))
    {
      fds++;
      asprintf(&fdNames, (tmpfdNames == NULL ? "%s%s" : "%s:%s"), (tmpfdNames == NULL ? "" : tmpfdNames), sockets[i]);
      if (tmpfdNames)
      {
        free(tmpfdNames);
      }
      tmpfdNames = fdNames;
    }
  }

  // Set the ENV var for our PID
  char *pidString = NULL;
  asprintf(&pidString, "%ld", (long)getpid());
  setenv("LISTEN_PID", pidString, 0);
  free(pidString);

  // Set the number of FDs we've opened
  asprintf(&fdsString, "%d", fds);
  setenv("LISTEN_FDS", fdsString, 0);
  free(fdsString);

  // And their names
  setenv("LISTEN_FDNAMES", (fdNames == NULL ? "" : fdNames), 0);
  free(fdNames);

  // Launch the command we were passed
  ++argv;
  if (*argv)
  {
    execvp(*argv, argv);
    err(1, "Error executing command");
  }
  else
  {
    errx(1, "No command specified");
  }
}

16:16:37
@ivy:fargone.shIvyperhaps it does16:16:46

Show newer messages


Back to Room ListRoom Version: 6