Skip to content

A repository for learning the purely functional Nix programming language

Notifications You must be signed in to change notification settings

SpitfireGG/learning-Nix-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learn Nix Programming

*A comprehensive, beginner-friendly guide to learning the Nix language form the ground up down to last details *

Nix Version License PRs Welcome


🚀 Getting Started

This repository is intended to give beginners and intermediate programmers familirity to Nix programming in indepth way, documentation is heavily packed explaining every single steps

Core fundamentals & Advanced concepts

Getting Started

  • Writing first program, Hello world (covered in ch00)

Core Concepts

  • Data types (covered in ch01)

Data Structures

  • Sets (covered in ch02)
  • Lists (covered in ch03)

Functional Programming

  • Functions - Extended (covered in ch04)

Lazy & Strict evaluations

  • Lazy Evaluation (covered in ch05)

Advanced Features

  • Set attribute selection, inheritance and merging (covered in ch06)
  • Working with files & paths (covered in ch07)
  • Debugging & Tracing (covered in ch08)

Ecosystem Integration

  • Working with common libraries (covered in ch09)
  • Working with Module system utilities (covered in ch10)
  • Understanding function signatures (covered in ch11)

🛠 Practical Usage

  • File System Operations
  • Lazy Evaluation Patterns
  • Debugging Techniques
Future Content Preview
  • Derivation Patterns
  • Working with Nix flakes
  • NixOS Module System
  • Advanced Package Composition
  • Performance Optimization
  • Real-world Project Templates

💡 Why This Guide?

Learning Path

focuses on practical understanding over theoretical perfection:

  • Learn essential concepts with clear examples
  • Build skills progressively
  • Avoid common pitfalls
  • Learn what you'll actually use
# official docs & other resources 
recursive_learning = throw "confusion";

# this repo focuses on 
learning_path = lib.foldl (acc: x -> acc + x) 0 [
  "clarity"
  "examples"
  "practicality"
];

You can contibute to the repo for beginners and intermediates to learn actively, you'r contributions matter: If you: Found a bug? Open an Issue Got an idea? Suggest Content Fixed a typo? Submit PR

🔧 Under Active Development - New content daily
⭐ Star to Show Support - Helps others find this resource

About

A repository for learning the purely functional Nix programming language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published