!9IQChSjwSHXPPWTa:lix.systems

Lix

1114 Members
Lix user channel. Feel free to discuss on-topic issues here and give each other help. For matrix.to links to the rest of the Lix channels, see: https://wiki.lix.systems/books/lix-organisation/page/matrix-rooms300 Servers

Load older messages


SenderMessageTime
20 Dec 2025
@piegames:flausch.socialpiegames
In reply to @522_:catgirl.cloud
i don't think npins strictly speaking uses ifd, it just uses builtins fetchers?
IMO builtin fetchers are no different than IFD for all intents and purposes
13:04:47
@piegames:flausch.socialpiegamesMy dream is to have builtin fetchers return a special derivation which would make the IDF part more explicit (and also be part of an IFD as first-class citizen approach)13:05:33
@piegames:flausch.socialpiegamesBut tbh that is not my battle field to work on, so other people may decide differently13:06:11
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔig you could vendor "nixpkgs but just enough to make fetchers work" and then use those fetchers for everything else13:06:37
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔso you're not vendoring All Of Nixpkgs but also not using builtin fetchers13:06:53
@kloenk:kloenk.eukloenkwould that help anything? does still need IFD then, or am I missing something right now?13:08:21
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔuhhhh maybe, but it wouldn't block eval on a network download ig?13:08:46
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔwell actually no if it's just vendored then it's just like any other code in your project13:09:20
@k900:0upti.meK900I want zeroth class IFD13:09:23
@k900:0upti.meK900I want IFD to just be part of the build graph and no one gives a fuck13:09:32
@lotte:chir.rsLotte (it/its)/Cinny (she/her)yeah13:10:14
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔi assume "ifd is slow" isn't fundmental to the concept and is just an implementation thing13:10:33
@lotte:chir.rsLotte (it/its)/Cinny (she/her)yeah13:10:47
@lotte:chir.rsLotte (it/its)/Cinny (she/her)or racconfig uses IFDs to patch inputs13:10:55
@lotte:chir.rsLotte (it/its)/Cinny (she/her)it also used to use them to generate a stylix palette?13:11:11
@k900:0upti.meK900 IFD is only slow because it blocks everything else 13:13:03
@k900:0upti.meK900Which it absolutely does not have to do13:13:07
@piegames:flausch.socialpiegamesYou remind me of https://bartoszmilewski.com/2014/02/26/c17-i-see-a-monad-in-your-future/ :p13:54:32
@cyclopentane:aidoskyneen.eupentane ⭔

yeah I've also already thought about how to model the evaluation/build process of Nix derivarions as a monadic data structure

basically you wanna have a monad like Derivation a, where a is the type of the value produced by the build of the derivation (currently, Nix derivations always produce files or directories, but theoretically nothing speaks against derivations producing strings, integers, etc as their build result too)

Derivation FileOrDirectory would then be equivalent to our current .drv files

14:21:10
@cyclopentane:aidoskyneen.eupentane ⭔ and the monadic bind operation would correspond to IFD 14:21:47
@cyclopentane:aidoskyneen.eupentane ⭔ cause if you e.g. have a derivation returning a lock file by reading it from an archive or something (Derivation LockFile) and a build helper constructing a package out of that lock file (LockFile -> Derivation Package), you can use >>= to get a Derivation Package 14:24:26
@cyclopentane:aidoskyneen.eupentane ⭔ and the monoid operation join :: Derivation Derivation a -> Derivation a would basically be "build this .drv file to obtain another .drv file and build that in turn, and then return the result` 14:25:53
@cyclopentane:aidoskyneen.eupentane ⭔although afaict from a theoretical standpoint, this matches the semantics of dynamic derivations better than IFD14:26:52
@piegames:flausch.socialpiegamesnow that you say all of this, maybe k900 has a point :p14:27:06
@cyclopentane:aidoskyneen.eupentane ⭔yeah I also agree with K90014:27:51
@cyclopentane:aidoskyneen.eupentane ⭔ another missing puzzle piece imo: currently, Nix treats the eval process and the build process as two conceptually separate things. But afaict there's nothing stopping us from treating the evaluation of, say, a flake as a derivation too - that derivation would have the flake source, its dependencies and nix as inputs, and output a .drv file 14:30:22
@cyclopentane:aidoskyneen.eupentane ⭔once you've got it set up that way, IFD and dynamic derivations basically are the same thing14:31:10
@cyclopentane:aidoskyneen.eupentane ⭔ and you get expression language agnosticism for free, since you can then use everything that produces .drv files as an expression language for Nix and not just Nixlang 14:31:59
@cyclopentane:aidoskyneen.eupentane ⭔thank you for coming to my ted talk14:32:04
@piegames:flausch.socialpiegamesBasically from the eval side of things this will be a form of async, where eval halts when it needs the result of a derivation and proceeds once that derivation is built, comparable to waiting for IO14:33:01

Show newer messages


Back to Room ListRoom Version: 10