/Weepin

[HEAVILY WIP] A robust nix pinning system akin to niv/npins. [maintainer=@Dich0tomy]

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Note

This is still during development. 0.1.0 hasn't even rolled out yet.

Weepin

A robust declarative (hjson)/interactive (weepin add) nix pinning system akin to niv/npins.

Important

No code is written yet. Look at functional spec

Will it be possible to make weepin able to lazily load flakes? Make a weepin-loader.

TODO:

  • Finish functional spec and technical spec first draft
  • Consider weepin issue
  • weepin version which lists the weepin version with embedded loader and lockfile version
  • Move the generated structure of weepin to functional
  • Change weepin.json5 name to more generic name - manifest
  • Think about channels generated structure
  • Talk with nobbz about why he strongly believes inputs for nix only
  • Refine the name inference spec
  • Decide between hjson and nix, make a draft, ask people
  • Add a definition for the weepin/ folder
  • Redesign syntax. : can be used for resolvables and it would already constitute a pinned version!
  • Get rid of resolvable template tags, they are added complexity for no reason at all, and not very practical
  • Add magic template tags, that is weepin add 'https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-i386-deb8-linux.tar.xz' -t version 8.4.3 should automatically make it a tag with <version>
  • Create hjson2nix
  • (During impl) List differences and similarities between niv and npins (in terms of interface as well!!!) Go back to my message on ghostty discord and list these in functional.md
  • Add CONTRIBUTING.md with my conventions (for example not using pragma once)
  • Impl that shit:
    • ?
  • Create a lua lib/module/stuff?
  • Add nix shell and default for Nix2

Planned features:

  • Implement rate limit protection
  • Progress (see zig and rust bob)