Skip to content

refactor(nix): split flake.nix using flake-parts #1681

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: develop
Choose a base branch
from

Conversation

jfroche
Copy link
Collaborator

@jfroche jfroche commented Jun 30, 2025

This commit introduces a modular Nix flake structure using flake-parts.
The monolithic 1,477-line flake.nix has been split into specialized modules, reducing it to just 40 lines.

Here is an overview of the new directory structure:

    ├── flake.nix                  # Root flake file only referencing modules
    nix/
      ├── apps.nix                   # Application definitions
      ├── checks.nix                 # Build checks and tests
      ├── config.nix                 # Global configuration
      ├── devShells.nix              # Development environment shell
      ├── fmt.nix                    # Code formatting configuration
      ├── hooks.nix                  # Git hooks and pre-commit
      ├── ext/                       # PostgreSQL extensions
      ├── overlays/                  # Nixpkgs overlays
      ├── packages/                  # Custom packages
      └── postgresql/                # PostgreSQL packages

We create a new namespace configuration supabase to centralize the supported postgres versions and the default parameters.

Moving to flake parts also help us to introduce formatting using treefmt and pre commit checks.

jfroche added 2 commits June 30, 2025 15:49
This commit introduces a modular Nix flake structure using flake-parts.
The monolithic flake.nix has been split into specialized modules.

Here is an overview of the new directory structure:

```
├── flake.nix                  # Root flake file only referencing modules
nix/
  ├── apps.nix                   # Application definitions
  ├── checks.nix                 # Build checks and tests
  ├── config.nix                 # Global configuration
  ├── devShells.nix              # Development environment shell
  ├── fmt.nix                    # Code formatting configuration
  ├── hooks.nix                  # Git hooks and pre-commit
  ├── ext/                       # PostgreSQL extensions
  ├── overlays/                  # Nixpkgs overlays
  ├── packages/                  # Custom packages
  └── postgresql/                # PostgreSQL packages
```
The commit moves the overlay configuration from packages/default.nix to a new dedicated overlays/default.nix file for better organization, while keeping the same functionality. This change improves code structure and maintainability.
@jfroche jfroche requested review from a team as code owners June 30, 2025 14:09
jfroche added 6 commits June 30, 2025 16:19
Moves postgresql version definitions and default settings into a centralized config.nix module.
Moves postgresql source and debug package generation into the postgresql module. This reduces duplication by generating packages dynamically based on supported versions.
The changes reorganize the groonga-related packages by moving files to a dedicated directory and cleaning up dependencies. It also removes some unused variables and improves package structure.
Adds pre-commit hooks using git-hooks.nix to run treefmt formatting checks before commits.
@jfroche jfroche force-pushed the chore/nix/split-flake branch from 28ecc0b to 18db2ac Compare June 30, 2025 14:21
jfroche added 4 commits July 1, 2025 11:35
Add MkDocs configuration and assets for generating a documentation site.
This is more readable and provides a structured way to present information about the project.

We don't store the generated site in the repository, but instead use MkDocs to build it on demand.

In a development shell, one can run `mkdocs serve` to quickly preview the site locally.
We document the recommended `.envrc` file in the docs, but we forgot to
add it to the repository.
mkdocs renders the documentation present in the `nix/docs/` directory in HTML
format.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
1 participant