darwin.linux-builder
هشدار
بهطور پیشفرض،
darwin.linux-builderاز یک کلید هاست SSH خصوصی که بهطور عمومی شناختهشده است استفاده میکندextra-trusted-users = <your username goes here>برای راهاندازی سازنده راه دور، فلیک زیر را اجرا کنید:
$ nix run nixpkgs#darwin.linux-builderبا این کار از شما خواسته میشود رمز عبور
sudoخود را وارد کنید:+ sudo --reset-timestamp /nix/store/…-install-credentials.sh ./keys Password:… تا بتواند کلید خصوصی مورد استفاده برای
sshبه سرور ساخت را نصب کند. پس از آن، اسکریپت ماشین مجازی را راهاندازی کرده و بهطور خودکار شما را به عنوان کاربرbuilderوارد میکند:<<< Welcome to NixOS 22.11.20220901.1bd8d11 (aarch64) - ttyAMA0 >>> Run 'nixos-help' for the NixOS manual. nixos login: builder (automatic login) [builder@nixos:~]$نکته: هرگاه نیاز به متوقف کردن ماشین مجازی (VM) داشتید،
shutdown nowرا با کاربرbuilderاجرا کنید.برای واگذاری ساختها به سازنده راه دور، گزینههای زیر را به فایل
nix.confخود اضافه کنید:# - Replace ${ARCH} with either aarch64 or x86_64 to match your host machine # - Replace ${MAX_JOBS} with the maximum number of builds (pick 4 if you're not sure) builders = ssh-ng://builder@linux-builder ${ARCH}-linux /etc/nix/builder_ed25519 ${MAX_JOBS} - - - c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUpCV2N4Yi9CbGFxdDFhdU90RStGOFFVV3JVb3RpQzVxQkorVXVFV2RWQ2Igcm9vdEBuaXhvcwo= # Not strictly necessary, but this will reduce your disk utilization builders-use-substitutes = trueبرای اینکه به Nix اجازه دهید به سازنده راه دور پیشفرض، که روی پورت 22 اجرا نمیشود، متصل شود، همچنین باید یک فایل جدید در
/etc/ssh/ssh_config.d/100-linux-builder.confایجاد کنید:Host linux-builder Hostname localhost HostKeyAlias linux-builder Port 31022 User builder IdentityFile /etc/nix/builder_ed25519… و سپس daemon Nix خود را راهاندازی مجدد کنید تا تغییر اعمال شود:
$ sudo launchctl kickstart -k system/org.nixos.nix-daemonتوجه داشته باشید که اگر سازنده در حال اجرا باشد و فایل پیکربندی SSH بالا را ایجاد کرده باشید، میتوانید با
sudo ssh builder@linux-builderبه سازنده SSH وصل شوید.نمونه استفاده از فلیک
{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-22.11-darwin"; darwin.url = "github:nix-darwin/nix-darwin/master"; darwin.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, darwin, nixpkgs, ... }@inputs: let inherit (darwin.lib) darwinSystem; system = "aarch64-darwin"; pkgs = nixpkgs.legacyPackages."${system}"; linuxSystem = builtins.replaceStrings [ "darwin" ] [ "linux" ] system; darwin-builder = nixpkgs.lib.nixosSystem { system = linuxSystem; modules = [ "${nixpkgs}/nixos/modules/profiles/nix-builder-vm.nix" { virtualisation = { host.pkgs = pkgs; darwin-builder.workingDirectory = "/var/lib/darwin-builder"; darwin-builder.hostPort = 22; }; } ]; }; in { darwinConfigurations = { machine1 = darwinSystem { inherit system; modules = [ { nix.distributedBuilds = true; nix.buildMachines = [ { hostName = "localhost"; sshUser = "builder"; sshKey = "/etc/nix/builder_ed25519"; system = linuxSystem; maxJobs = 4; supportedFeatures = [ "kvm" "benchmark" "big-parallel" ]; } ]; launchd.daemons.darwin-builder = { command = "${darwin-builder.config.system.build.macos-builder-installer}/bin/create-builder"; serviceConfig = { KeepAlive = true; RunAtLoad = true; StandardOutPath = "/var/log/darwin-builder.log"; StandardErrorPath = "/var/log/darwin-builder.log"; }; }; } ]; }; }; }; }پیکربندی مجدد سازنده راه دور
در ابتدا نباید پیکربندی سازنده راه دور را تغییر دهید، در غیر این صورت قادر به استفاده از کش باینری نخواهید بود. با این حال، پس از اینکه سازنده راه دور را به صورت محلی در حال اجرا داشتید، میتوانید از آن برای ساخت یک سازنده راه دور تغییریافته با فضای ذخیرهسازی یا حافظهٔ اضافی استفاده کنید.
برای انجام این کار، کافی است پارامترهای
virtualisation.darwin-builder.*را مشابه مثال زیر تنظیم کرده و ساخت مجدد را انجام دهید.
{ darwin-builder = nixpkgs.lib.nixosSystem { system = linuxSystem; modules = [ "${nixpkgs}/nixos/modules/profiles/nix-builder-vm.nix" { virtualisation.host.pkgs = pkgs; virtualisation.darwin-builder.diskSize = 5120; virtualisation.darwin-builder.memorySize = 1024; virtualisation.darwin-builder.hostPort = 33022; virtualisation.darwin-builder.workingDirectory = "/var/lib/darwin-builder"; } ]; }; }شما میتوانید هر تغییر دیگری را روی ماشین مجازی (VM) خود در این مجموعه ویژگی اعمال کنید. به عنوان مثال، میتوانید Docker یا بازارسال X11 به هاست Darwin خود را فعال کنید.
عیبیابی پیکربندی ایجادشده
بسته
linux-builderصفاتnixosConfigوnixos$ nix repl --file ~/src/nixpkgs --argstr system aarch64-darwin nix-repl> darwin.linux-builder.nixosConfig.nix.package «derivation /nix/store/...-nix-2.17.0.drv» nix-repl> :p darwin.linux-builder.nixosOptions.virtualisation.memorySize.definitionsWithLocations [ { file = "/home/user/src/nixpkgs/nixos/modules/profiles/nix-builder-vm.nix"; value = 3072; } ]