Central registry and aggregator for all FT-nixforge flakes.
One flake input — every module, package, and overlay included.
Add ft-nixpkgs as the only FT-nixforge input you need:
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
ft-nixpkgs.url = "github:FT-nixforge/ft-nixpkgs";
};
outputs = { nixpkgs, home-manager, ft-nixpkgs, ... }: { ... };
}# NixOS configuration
{
imports = [ ft-nixpkgs.nixosModules.default ];
}
# Home Manager configuration
{
imports = [ ft-nixpkgs.homeModules.default ];
}# Pick only what you need
{
imports = [
ft-nixpkgs.nixosModules.nixpalette
ft-nixpkgs.homeModules.nixprism
];
}nixpkgs.overlays = [ ft-nixpkgs.overlays.default ];
# Packages are then available as:
# pkgs.ft-nixpalette
# pkgs.ft-nixprism
# pkgs.ft-nixpalette-hyprland| Name | Type | Description |
|---|---|---|
ft-nixpalette |
library | Base16 color theming engine |
ft-nixlaunch |
module | Modern, polished Rofi application launcher |
Full registry with metadata and dependency graph: registry.yaml
Run the interactive script — it fetches outputs.meta from the upstream repo and wires everything up:
bash scripts/add-flake.sh FT-nixforge/nixbar
# or any public GitHub repo:
bash scripts/add-flake.sh some-org/some-flake
# or just the repo name (assumes FT-nixforge org):
bash scripts/add-flake.sh nixbarThe script will:
- Fetch
outputs.metafrom the upstream repo - Create
flakes/<folder>/default.nix - Patch
flake.nixwith the new input - Regenerate
registry.jsonandregistry.yaml
Then review, run nix flake update <name>, and commit.
The upstream repo must export outputs.meta from its flake.nix:
meta = {
name = "ft-nixbar";
type = "module";
role = "standalone";
description = "Unified status bar for NixOS";
repo = "github:FT-nixforge/ft-nixbar";
provides = [ "packages" "homeModules" ];
dependencies = [ "nixpalette" ];
version = "0.1.0";
};The registry automatically collects all upstream version tags from each flake's repository. This enables:
- Version pinning: Reference exact releases (e.g.,
v1.0.0,v1.0.1) - Release channels: Use floating tags for rolling releases
- Latest tracking: The
mainbranch is included when available
Each flake in registry.json includes a versions array:
{
"name": "ft-nixpalette",
"versions": ["v1.0.1", "v1.0.0", "v0.9.0", "stable", "beta", "main"],
...
}Consumers can pin to:
- An exact version:
inputs.ft-nixpalette.url = "github:FT-nixforge/ft-nixpalette/v1.0.1"; - A release channel:
inputs.ft-nixpalette.url = "github:FT-nixforge/ft-nixpalette/stable"; - The latest development version:
inputs.ft-nixpalette.url = "github:FT-nixforge/ft-nixpalette/main";
- Copy
flakes/_templatetoflakes/<name>/ - Fill in the
metablock includingrepo,provides,dependencies, etc. - Add the input to
flake.nix - Run
bash scripts/gen-registry.shto update the registry and refresh changed upstream metadata
ft-nixpkgs/
├── flake.nix # Entry point; all inputs defined here
├── flakes/ # Per-flake integration configs
│ ├── ft-nixpalette/ # Flake config
│ ├── ft-nixlaunch/ # Flake config
│ └── _template/ # Copy this for new flakes
├── lib/
│ ├── default.nix # Exports all helpers
│ └── mkFlake.nix # Aggregation factory
├── pkgs/default.nix # Aggregated package set (shim)
├── modules/
│ ├── nixos/default.nix # Aggregated NixOS modules (shim)
│ └── home/default.nix # Aggregated Home Manager modules (shim)
├── overlays/default.nix # Combined overlay (shim)
├── registry.json # Generated — do not edit manually
├── registry.yaml # Generated — do not edit manually
├── registry.nix # Reads registry.json; exposes filter helpers
└── scripts/
├── add-flake.sh # Interactive: add a flake from any public GitHub repo
├── gen-registry.sh # Regenerate registry.json + registry.yaml
├── eval-meta.nix # Nix helper used by gen-registry.sh
└── ft-nixpkgs.example.json # Legacy metadata example mirroring outputs.meta
# All registered flakes
ft-nixpkgs.lib.registry.flakes
# Filter by type
ft-nixpkgs.lib.registry.byType "library"
# Dependency graph edges
ft-nixpkgs.lib.registry.dependencyEdges