Skip to content

FT-nixforge/ft-nixpkgs

Repository files navigation

ft-nixpkgs

Central registry and aggregator for all FT-nixforge flakes.
One flake input — every module, package, and overlay included.


Quick start

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, ... }: { ... };
}

Using modules

All modules at once (recommended)

# NixOS configuration
{
  imports = [ ft-nixpkgs.nixosModules.default ];
}

# Home Manager configuration
{
  imports = [ ft-nixpkgs.homeModules.default ];
}

Individual modules

# Pick only what you need
{
  imports = [
    ft-nixpkgs.nixosModules.nixpalette
    ft-nixpkgs.homeModules.nixprism
  ];
}

Using the overlay

nixpkgs.overlays = [ ft-nixpkgs.overlays.default ];

# Packages are then available as:
#   pkgs.ft-nixpalette
#   pkgs.ft-nixprism
#   pkgs.ft-nixpalette-hyprland

Available flakes

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


Adding a new flake

Automated (recommended)

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 nixbar

The script will:

  1. Fetch outputs.meta from the upstream repo
  2. Create flakes/<folder>/default.nix
  3. Patch flake.nix with the new input
  4. Regenerate registry.json and registry.yaml

Then review, run nix flake update <name>, and commit.

What the upstream repo needs

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";
};

Version history in registry

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 main branch 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";

Manual

  1. Copy flakes/_template to flakes/<name>/
  2. Fill in the meta block including repo, provides, dependencies, etc.
  3. Add the input to flake.nix
  4. Run bash scripts/gen-registry.sh to update the registry and refresh changed upstream metadata

Repository layout

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

Accessing the registry from Nix

# 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

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors