guix

Provide expert guidance for GNU Guix package and service development.

3|1|Updated Jan 29, 2022
One-click install
npx skills add https://github.com/r0man/guix-home --skill guix
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: guix
Source: https://github.com/r0man/guix-home/tree/main/modules/r0man/guix/home/files/claude-code/skills/guix
Command: npx skills add https://github.com/r0man/guix-home --skill guix

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Expert guidance for GNU Guix packaging and service development, including package definitions, system and home services, and development workflows using a Guix repository checkout.

Core Features & Use Cases

  • Package Definitions: Create and maintain Guix packages with proper inputs, sources, and licenses.
  • System & Home Services: Define system services (gnu/services) and home services (gnu/home/services) for reproducible configurations.
  • Repository Workflows: Work with a Guix repository checkout to test, debug, and evolve package definitions.

Quick Start

Use this skill to draft a Guix package snippet and start a local checkout to iterate on package/build definitions.

Frequently Asked Questions about guix

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a new package definition in GNU Guix?

A Guix package definition specifies source origins (url-fetch, git-fetch), inputs, native-inputs, propagated-inputs, build-system, and build-arguments. Start with a basic template, declare dependencies by type, set the source URL and license, then add custom build phases or patches as needed for your package.

What's the difference between inputs, native-inputs, and propagated-inputs in Guix?

Inputs are runtime dependencies, native-inputs are build-time only, and propagated-inputs are runtime dependencies that become inputs to packages that depend on yours. Correct classification ensures reproducible builds and prevents unnecessary dependency bloat.

How do I define system and home services in Guix?

System services use gnu/services modules for OS-level daemons and configurations, while home services use gnu/home/services for user-level environments. Both enable reproducible, declarative service definitions that can be version-controlled and deployed consistently.

Can I test package changes locally before submitting to the main Guix repository?

Yes, work with a local Guix repository checkout to iterate on package definitions, run builds, and debug issues. Test against your build-system configuration and verify patches and phases execute correctly before integrating upstream.

When should I use custom build phases in a Guix package definition?

Use custom build phases when the standard build-system workflow doesn't match your package's requirements. Phases let you modify source, patch dependencies, or adjust compilation flags—implement only the phases needed to override default behavior.

How do I convert between old and new Guix package definition styles?

Migration typically involves updating input field names, adjusting build-system syntax, and modernizing source origin declarations. Expert guidance helps identify deprecated patterns and ensure compatibility with current Guix standards and build infrastructure.