Сборка своего дистрибутива

Буду писать сюда все свои вопросы про сборку своего дистрибутива.

Вопрос 1

Вопрос к знатокам. Не хочу заморачиваться с шаблонами кальки. Собираю дистрибутив на основе CLDX. На диск пихаю свои настройки крысы в папку /etc/skel. Гружусь с двд или усб - все мои настройки присутствуют, то-есть skel съело. Устанавливаю систему на диск. Первый вход юзером - МОИХ настроек нет при установке на диск. В чем прикол.
Понятно что отрабатывают утилиты кальки. НО на каком этапе и какой файл утилит за это отвечает?

Интересующие вас шаблоны лежат тут:
/var/db/repos/calculate/profiles/templates/3.6/6_ac_desktop_profile/2-user/
Конкретно для Xfce настройки поведения и внешнего вида тут:
./2-user/xfce-base/Xfce-4.10/.config/xfce4/

Можно поглядеть в моём оверлее как я кастомизировал настройки: CLDXMkep/profiles/templates/3.6/6_ac_desktop_profile at master · ilya84/CLDXMkep · GitHub
Этот профиль наследует CLDX и все изменения накладываются поверх указаных выше.

Разобрался сам. Тут несколько приколов или так задумано не знаю - вопрос к @Lautre .

Описываю.

Преднастроенный профиль юзера лежит в /etc/skel .
В НЕМ ОБЯЗАТЕЛЬНО должен быть файл ~/.calculate/ini.env c двумя параметрами
[main] update = off
[update] patch = off .
Если это-го файла нет, то мы в пролете - cl_desktop.py его создаст и применит патчи.

Вариант 1
Создаем в пустом хомяке /etc/skel/.calculate/ini.env c двумя параметрами
[main] update = off
[update] patch = off .
Преднастроенный профиль пользователя НЕ БЕРЕТСЯ из /etc/skel. А берется стандартный профиль юзера, но без патчей (похоже частично и как-то криво).
ТУТ ГЛАВНОЕ условие что у нас уже ЕСТЬ пустая папка юзера - например guest (которая создается инсталятором если указать что создаем пользователя).

Вариант 2: (ТО ЧЕГО И ДОБИВАЛСЯ)
Удаляем папку guest ПОЛНОСТЬЮ из /home или не создаем пользователя при установке (что придется делать руками - а это не айс)
ВОТ ТУТ ПОБЕДА - /etc/skel в папку пользователя скопировался.
Все настройки те что нужны.
Но не совсем что хочется видеть в системе - надо все делать руками.
Предлагаю как-то реализовать хотя-бы это при установке на диск

Да отвечают за создание профиля пользователя два файла (вернее один но код в двух)

/usr/lib64/python2.7/site-packages/calculate/desktop/desktop.py
Кусок кода

def syncSkel(self, ur_home_path, uid, gid):
“”"
Скопировать содержимое /etc/skel в каталог пользователя
“”"
try:
rsync_files(’/etc/skel’, ur_home_path,
opts=(RsyncOptions.Archive,
RsyncOptions.Chown(uid, gid),))
except FilesError as e:
raise DesktopError(str(e))
return True

и
/usr/lib64/python2.7/site-packages/calculate/desktop/utils/cl_desktop.py
Куски кода

def need_skel(Get):
home_path = Get(‘ur_home_path’)
if path.exists(home_path):
files = listDirectory(home_path, onlyDir=True)
if len(files) == 1 and “.calculate” in files:
return True
return False
return True

tasks = [
{‘name’: ‘need_skel’,
‘condition’: need_skel
},
# создать домашниюю директорию
{‘name’: ‘create_home’,
‘message’: __(“Creating the home directory for {ur_login}”),
‘method’: ‘Desktop.createUserDir(ur_login,ur_uid,ur_gid,ur_home_path)’,
‘condition’: lambda dv: not path.exists(dv.Get(‘ur_home_path’))
},

   {'name': 'need_skel:sync_skel',
     'message': _("Copying skel data"),
     'method': 'Desktop.syncSkel(ur_home_path,ur_uid,ur_gid)'
     },
    # настроить пользовательских профиль шаблонами
    {'name': 'user_profile',
     'message': __("Setting up the user profile"),
     'method': 'Desktop.applyTemplates(None,False,'
               'False,None)',
     'condition': lambda Get: (Get('cl_desktop_force_setup_set') == 'on' or
                               Get('cl_desktop_update_profile_set') == 'on')
     },

Для себя пока нашел простое и тупое решение. Удалять папку пользователя на диске находясь еще в лайв режиме до перезагрузки системы.