Столкнулся с данной задачей и решил написать статью о том как начать работать с Tuist на своём примере.
Это первый этап на пути модуляризации проекта. Разобравшись с ним будет легче пройти остальные этапы. Наша задача запустить проект при помощи Tuist не потеряв настройки исходного проекта. Но обо всём по порядку.
Основная часть
Миграция состоит из нескольких шагов:
- Подготовка директории проекта 
- Импорт настроек текущего проекта в отдельный файл 
- Конфигурация файла Project.swift 
Подготовка директории проекта
Заходим на официальный сайт, ищем раздел миграции и выбираем Xcode project.
Что нам необходимо сделать?
- Создать два файла в корне проекта (Project.swift и Tuist.swift). 
- Папку с файлом (Tuist -> Package.swift). 
Итогом должна выйти такая структура.

В официальной документации есть код, который надо вставить в каждый файл для старта.
Открываем консоль, заходим в папку проекта и командуем.
tuist editПоявляется привычный нам Xcode с файлами которые мы создавали.

Импорт настроек текущего проекта в отдельный файл
В документации для нас уже подготовили команду по извлечению настроек из проекта, берем ее и подставляем нужные нам значения.
- Создаем папку куда положим настройки. 
- Извлекаем в эту папку настройки. 
На месте MyApp.xcodeproj пишем проект из которого извлекаем. На месте xcconfigs/MyApp-Project.xcconfig пишем путь и название извлекаемого. Все действия выполняем из папки проекта.
mkdir -p xcconfigs/
tuist migration settings-to-xcconfig -p FirstMyApp.xcodeproj -x xcconfigs/MyApp-Project.xcconfigКонфигурация файла Project.swift
Два этапа
- Конфигурация проекта 
- Конфигурация таргета 
Конфигурация проекта
Для удобства заполнения вызвал Project со всеми доступными параметрами.

- name - название проекта, как пример выше "TestAppTuist" 
- 
options - тут интереснее, у меня выбрано два поля, иначе Tuist сгенерирует файлы помощники, которые позволяют безопасно обращаться к ресурсам. Например, картинки. В моем случае, это вызывало ошибку, так как с таким именем уже существовали структуры и менять наименования не хотелось. disableBundleAcessors: true, disableSynthesizedResourceAccessors: true
- 
packages - тут мы указываем зависимости проекта (Project -> Package Dependencies) Если из удаленного репозитория: .remote(url: "https://github.com/ReactiveX/RxSwift/", requirement: .exact("6.8.0")),Если локальный пакет: .local(path: "./Modules/Core"),
- 
settings - это настройки проекта, их мы извлекли в отдельную папку, осталось прописать путь. (Project -> Build Settings) let project = Project( name: "TestAppTuist", organizationName: nil, classPrefix: nil, options: .options( disableBundleAccessors: true, disableSynthesizedResourceAccessors: true ), packages: getPackageProject(), settings: .settings( configurations: [ .debug(name: "Debug", xcconfig: "./xcconfigs/test-app-tuist.xcconfig"), .release(name: "Release", xcconfig: "./xcconfigs/test-app-tuist.xcconfig"), ] ),
- targets - тут указываем все таргеты в приложении. Подробнее будет ниже 
- sсhemes - настраиваются примерно так, раскрыт один параметр - RunAction 
    schemes: [
        .scheme(
            name: "TestAppSheme",
            shared: true,
            hidden: false,
            buildAction: .none,
            testAction: .none,
            runAction:
                    .runAction(
                        configuration: .configuration("Debug"),
                        attachDebugger: true,
                        customLLDBInitFile: "",
                        preActions: [],
                        postActions: [],
                        executable: .target("TestAppTuist"),
                        arguments: .arguments(
                            environmentVariables: ["OS_ACTIVITY_MODE": .environmentVariable(value: "disable", isEnabled: true)],
                            launchArguments: []
                        ),
                        options:
                                .options(
                                    language: nil,
                                    region: nil,
                                    storeKitConfigurationPath: nil,
                                    simulatedLocation: .moscow,
                                    enableGPUFrameCaptureMode: .default
                                ),
                        diagnosticsOptions: .options(),
                        metalOptions: .options(),
                        expandVariableFromTarget: .target("TestAppTuist"),
                        launchStyle: .automatically
                    ),
            archiveAction: .none,
            profileAction: .none,
            analyzeAction: .none
        ),
Конфигурация таргета
Для удобства заполнения вызвал со всеми доступными параметрами.

- name - имя таргета, в нашем случае оно аналогично имени проекта. 
- 
destinations - ios, macOs, tvOS. Тут есть странность, если указать iOS, то в поддерживаемых устройствах будет не только iPhone, если нужен только iPhone указываем так. destinations: [.iPhone],
- product - тут указываем что это, app или test target и др. 
- bundleId - указываем bundleId проекта. 
- deploymentTargets - указываем поддерживаемую версию iOS. 
- infoPlist - тут можно создать по умолчанию, либо указать путь, где лежит ваш infoPlist. 
- sources - это путь к папке с файлами .swift. (Кладем все что тут Build Phases -> Compile Sources). 
- resources - путь к папке с различными ресурсами, (Кладем все что должно оказаться в Build Phases -> Copy Bundle Resources). 
- entitlements - тут указываем путь до файла .entitlements. 
- 
scripts - тут указываем скрипты если в проекте они имеются, выглядит так. Это пример с SwiftLint. scripts: [ .pre( script: """ export PATH="$PATH:/opt/homebrew/bin" if which swiftlint >/dev/null; then swiftlint else echo "error: SwiftLint does not exist, download it from https://github.com/realm/SwiftLint" exit 1 fi """, name: "SwiftLintScript" ) ],
- 
dependencies - тут указываем зависимости, берем из меню ниже. Тут внимательнее, эти зависимости должны быть уже добавлены в настройки Project.packages.  Target dependencies .package(product: "YandexMapsMobile", type: .runtime),
- 
settings - аналогично настройкам проекта, есть настройка таргета, можете извлечь по аналогии с настройкой проекта из начала этой статьи. Команда выглядит так. tuist migration settings-to-xcconfig -p MyApp.xcodeproj -t TargetX -x xcconfigs/TargetX.xcconfig
- coreDataModels - если имеется CoreData, укажите пути к моделям. 
- 
environmentVariables - тут указана одна переменная, которая помогает держать консоль чуть чище. (Можно найти в настройках Scheme -> Arguments). environmentVariables: [ "OS_ACTIVITY_MODE" : "disable" ],Остальные параметры оставлены пустыми или по умолчанию. 
Нам осталось только запустить.
tuist generateЗаключение
Это базовая настройка проекта с использованием Tuist. Благодаря ей можно начать переход к модульной системе. Буду рад советам и комментариям, так как только начинаю этот путь.
 
          