Fix module layering: packages should not depend on git #4

Closed
opened 2026-03-29 10:48:20 +03:00 by luc_ren · 2 comments
Owner

Description:
Сейчас nixosModules.packages из modules/settings/packages/default.nix импортирует nixosModules.git из modules/features/git/default.nix.

Это смешивает два разных уровня ответственности:

  • modules/settings/packages/default.nix должен отвечать только за базовый набор системных пакетов;
  • modules/features/git/default.nix должен отвечать только за настройку Git и создание tree-git.

Из-за этого базовый модуль начинает зависеть от feature-модуля, что делает архитектуру менее чистой и хуже масштабируемой. Также это усложняет повторное использование модулей и создаёт лишнюю связанность между слоями конфигурации.

Expected behavior:
modules/settings/packages/default.nix не должен импортировать modules/features/git/default.nix. Импорт Git-модуля должен происходить на уровне host/system configuration, а не внутри модуля базовых пакетов.

Suggestion:
Разнести модули по назначению:

  • modules/settings/packages/default.nix — только общие системные пакеты;
  • modules/features/git/default.nix — только Git и tree-git;
  • подключать оба модуля отдельно в конфигурации хоста.

Description:
Currently, nixosModules.packages from modules/settings/packages/default.nix imports nixosModules.git from modules/features/git/default.nix.

This mixes two different responsibility layers:

  • modules/settings/packages/default.nix should only define a base set of system packages;
  • modules/features/git/default.nix should only handle Git configuration and tree-git creation.

Because of this, a base settings module now depends on a feature module, which makes the architecture less clean and harder to scale. It also reduces module reusability and introduces unnecessary coupling between configuration layers.

Expected behavior:
modules/settings/packages/default.nix should not import modules/features/git/default.nix. The Git module should be imported at the host/system configuration level, not inside the base packages module.

Suggestion:
Separate responsibilities:

  • modules/settings/packages/default.nix — only common system packages;
  • modules/features/git/default.nix — only Git and tree-git;
  • import both modules independently from the host configuration.
**Description:** Сейчас `nixosModules.packages` из `modules/settings/packages/default.nix` импортирует `nixosModules.git` из `modules/features/git/default.nix`. Это смешивает два разных уровня ответственности: * `modules/settings/packages/default.nix` должен отвечать только за базовый набор системных пакетов; * `modules/features/git/default.nix` должен отвечать только за настройку Git и создание `tree-git`. Из-за этого базовый модуль начинает зависеть от feature-модуля, что делает архитектуру менее чистой и хуже масштабируемой. Также это усложняет повторное использование модулей и создаёт лишнюю связанность между слоями конфигурации. **Expected behavior:** `modules/settings/packages/default.nix` не должен импортировать `modules/features/git/default.nix`. Импорт Git-модуля должен происходить на уровне host/system configuration, а не внутри модуля базовых пакетов. **Suggestion:** Разнести модули по назначению: * `modules/settings/packages/default.nix` — только общие системные пакеты; * `modules/features/git/default.nix` — только Git и `tree-git`; * подключать оба модуля отдельно в конфигурации хоста. --- **Description:** Currently, `nixosModules.packages` from `modules/settings/packages/default.nix` imports `nixosModules.git` from `modules/features/git/default.nix`. This mixes two different responsibility layers: * `modules/settings/packages/default.nix` should only define a base set of system packages; * `modules/features/git/default.nix` should only handle Git configuration and `tree-git` creation. Because of this, a base settings module now depends on a feature module, which makes the architecture less clean and harder to scale. It also reduces module reusability and introduces unnecessary coupling between configuration layers. **Expected behavior:** `modules/settings/packages/default.nix` should not import `modules/features/git/default.nix`. The Git module should be imported at the host/system configuration level, not inside the base packages module. **Suggestion:** Separate responsibilities: * `modules/settings/packages/default.nix` — only common system packages; * `modules/features/git/default.nix` — only Git and `tree-git`; * import both modules independently from the host configuration.
luc_ren self-assigned this 2026-03-29 10:48:20 +03:00
Owner

image

![image](/attachments/f92826ae-0149-4b40-b1a1-ac67809c517c)
210 KiB
Author
Owner

@IN5-AR wrote in #4 (comment):

image

Я конечно же всё понимаю

Но что это ???

@IN5-AR wrote in https://git.uuve.org/UUVE/treeflake/issues/4#issuecomment-58: > [![image](/attachments/f92826ae-0149-4b40-b1a1-ac67809c517c)](/UUVE/treeflake/attachments/f92826ae-0149-4b40-b1a1-ac67809c517c) Я конечно же всё понимаю Но что это ???
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
UUVE/treeflake#4
No description provided.