drakonis has quit [Read error: Connection reset by peer]
MichaelRaskin has left #nixos-dev [#nixos-dev]
orivej has joined #nixos-dev
globin has quit [Remote host closed the connection]
globin has joined #nixos-dev
ris has quit [Ping timeout: 268 seconds]
Jackneill has joined #nixos-dev
page has quit [Quit: leaving]
page has joined #nixos-dev
FRidh has joined #nixos-dev
__Sander__ has joined #nixos-dev
pie__ has joined #nixos-dev
pie_ has quit [Ping timeout: 246 seconds]
globin has quit [Ping timeout: 250 seconds]
domenkozar[m] has joined #nixos-dev
domenkozar[m] has quit [Changing host]
Jackneill has quit [Ping timeout: 250 seconds]
Jackneill has joined #nixos-dev
Jackneill has quit [Read error: Connection reset by peer]
Jackneill has joined #nixos-dev
Synthetica has joined #nixos-dev
cjpbirkbeck has quit [Quit: Quitting now.]
orivej has quit [Ping timeout: 240 seconds]
psyanticy has joined #nixos-dev
globin has joined #nixos-dev
<__Sander__>
sigh
<__Sander__>
trying to process the latest XML specs from the upstream Android repository
<__Sander__>
it's a nightmare. there all kinds of overlapping properties
<__Sander__>
you can't really directly translate it into attribute sets anymore
<__Sander__>
I need some program that processes the data imperatively
<jonge[m]>
hi there. i have a hydra channel here on some jobset that lists a set of packages as available on the channel page. the channel should have many more packages, but somehow the channel doesn't list them. in `$hydra/src/lib/Hydra/Base/Controller/NixChannel.pn` you can see how it filters those packages, but i don't understand what the perl code does. what is the criterion for a package to be selected for the channel package
<jonge[m]>
list?
orivej has joined #nixos-dev
<qyliss>
Profpatsch: could we have a function to generate a C program that execs into an interpreter?
<qyliss>
It would do nothing else, so shouldn't get in the way of debugging
<qyliss>
But would work around this macOS problem
<Profpatsch>
qyliss: haha, yes, I mulled about that in #s6
<Profpatsch>
Sorry for confusion
<Profpatsch>
(let’s continue this there and talk about makeWrapper here if need be)
<FRidh>
qyliss: Profpatsch: I think we could have just a single executable for that, that reads its configuration from a (json) file.
<qyliss>
What configuration would it even have apart from the name of the script to execute?
<qyliss>
A program that reads a config file becomes much more complicated immediately than one that just consists of a single execv().
<FRidh>
env variables like PATH, PYTHONPATH, executable to exec and args
<qyliss>
I don't want to reimplement makeWrapper in C
<Profpatsch>
FRidh: wtf, no need to conjure up evil spirits
<qyliss>
(Profpatcsh mentioned debugging concerns in another channel)
<Profpatsch>
A problem I see is that `wrapProgram` is a bash thing, so we’d have to specialize and compile the C wrapper in the build environment, iff we want to keep the current bash-based interface.
<Profpatsch>
But I’m not really ready to generalize that idea to the existing infrastructure :)
<adisbladis>
Makewrapper could also be it's own (very limited) interpreter
<Profpatsch>
Minix and Linux are apparently the only kernels that support nesting shebangs.
<adisbladis>
Profpatsch: Thanks
<Profpatsch>
Everywhere else, you need a layer of “normal” executables in between, e.g. an ELF binary
<Profpatsch>
The reason this normally doesn’t come up is that on most other systems, scripts start with /usr/bin/env, but stdenv patches those to the storepath.
<Profpatsch>
were /usr/bin/env is a hack in the first place.
<Profpatsch>
To work around differences in binary location
<qyliss>
If we move things to the nix level, does that mean every wrapped derivation would be a symlinkFarm except for executable files?
<qyliss>
That sounds… heavy
<qyliss>
OTOH, a stand-alone makeWrapper program could be nice
<Profpatsch>
In this case it would mean being specific about which binaries exist and creating a specialized makeWrapper program for each binary
<qyliss>
Well, not quite
<qyliss>
You’d have makeWrapper, the program, and then executables generated by makeWrapper
<Profpatsch>
scratch binary, I mean only for things that are already scripts.
<qyliss>
makeWrapper could even be implemented with patchelf if we really wanted
<Profpatsch>
But even finding that out on the nix level is impossible, so either you want magic (which means bash stuff), or you are explicit and fail fast.
<Profpatsch>
stdenv is structured for magic, I tend towards the latter
<Profpatsch>
Maybe that’s also why I prefer static over dynamic languages *thinkingface*
<qyliss>
being specific in this case means listing every program? I don’t think that’s a good trade-off.
<Profpatsch>
Why isn’t it?
<qyliss>
Because nowhere else do we have to have a list of programs in a package
<adisbladis>
I've wanted a stand-alone makeWrapper for a long time anyway
<Profpatsch>
Maybe we *should* have a list of executables in a package.
<qyliss>
And I don’t think there’s anything to be gained by requiring such a list, and also requiring another layer of symlinkFarms
<Profpatsch>
That’s important metadata.
<FRidh>
this is something that we can introduce incrementally, and force for certain core packages
<qyliss>
What would happen if they didn’t match with what was actually generated?
<Profpatsch>
No symlink farms, just specialized makeWrappers at build time.
<qyliss>
so you still have to makeWrapper from bash anyway??
<infinisil>
Yeah I think a list of executables isn't something we should try to have at eval time
<infinisil>
Tools like nix-index are for that
<qyliss>
My proposal, I think, is a makeWrapper replacement that is standalone, generates binaries, and can additionally dump a binary and explain what it does for debugging.
<qyliss>
Being able to dump means you could call it multiple times as well
<adisbladis>
qyliss: I like the discoverability of the current bash-solution though
<adisbladis>
(a wrapper is just human readable text)
<qyliss>
adisbladis: me too, but we just can’t have it. At least on macOS.
<qyliss>
And any other non-Linux
<Profpatsch>
Which doesn’t mean we can’t not have it on Linux.
<qyliss>
That’s true
<qyliss>
Although it’s more code
<qyliss>
Which is already tricky to do right
<qyliss>
The text is already not particularly easy to read anyway
orivej has quit [Ping timeout: 265 seconds]
<adisbladis>
With that said, I'll happily sacrifice that readability to get rid of bash from my closures
<FRidh>
suppose we could use dash for makeWrapper if that size is an issue
<adisbladis>
FRidh: Still wouldn't solve the shebang issue
orivej has joined #nixos-dev
ixxie has joined #nixos-dev
<infinisil>
niksnut: zimbatm: (MichaelRaskin who isn't here): Ping for the call on rfcs#45
<Profpatsch>
But it looks small enough, maybe I can give it a tentative review
<infinisil>
Profpatsch: You mean how lazyAttrsOf works and why it's lazy?
<Profpatsch>
infinisil: I haven’t taken a closer look, maybe it’s obvious.
<infinisil>
Profpatsch: Quick explanation: lazyAttrsOf doesn't filter based on whether the attribute is defined, it just includes all of them. So where attrsOf uses `optionalValue` returning { value = mergedValue; } if it's defined and {} if it's not, lazyAttrsOf uses mergedValue directly (which consequently produces an error when accessed)
<Profpatsch>
infinisil: Hm, doesn’t that mean we lose the type-safety?
<infinisil>
s/when accessed/when accessed if there's no definitions
<infinisil>
Profpatsch: The only thing we lose is described in the manual, namely that if you do `foo.attr = mkIf false "..."`, then evaluate `config.foo ? attr` it returns true, even though it should be false
<Profpatsch>
Well, I guess that’s something that shouldn’t be done in that context anyway.
FRidh2 has joined #nixos-dev
<infinisil>
The idea is of course that there's something more complex than false in the mkIf
<infinisil>
(but false is a simple illustration of the problem)
<infinisil>
So this is why I'm pointing out that lazyAttrsOf should only be used if conditional definitions aren't needed like that
<infinisil>
s/needed/used
<infinisil>
(and consequently why it can be used without worry for _module.args)
drakonis_ has quit [Ping timeout: 276 seconds]
__Sander__ has quit [Quit: Konversation terminated!]
<infinisil>
Profpatsch: I'm not eager to have this merged quickly, as it's very much not an essential type to have, but it seems to have some use cases
<FRidh2>
globin: is it happening at 18:00 CEST?
<globin>
yes
<globin>
I sent a link to "FRidh" in query
<FRidh2>
oh could you sent it to FRidh2 instead
<globin>
sure!
<globin>
worldofpeace: ping?
<gchristensen>
FRidh / FRidh2 we've moved to a different video call provider, see PMs I think
<gchristensen>
worldofpeace: (ping)
<worldofpeace>
gchristensen: wah, I don't think I can attend which sucks. I have a flight and I was unsure of the time today
<gchristensen>
ack! okay, I'm sorry we didn't schedule it in such a way that you can attend
<gchristensen>
worldofpeace: would you like to PM me some information on your disposition?
<worldofpeace>
gchristensen: sure
drakonis_ has joined #nixos-dev
MichaelRaskin has quit [Quit: leaving]
justanotheruser has quit [Ping timeout: 265 seconds]
Synthetica has quit [Quit: Connection closed for inactivity]
justanotheruser has joined #nixos-dev
drakonis has joined #nixos-dev
drakonis_ has quit [Ping timeout: 245 seconds]
drakonis_ has joined #nixos-dev
drakonis has quit [Ping timeout: 245 seconds]
<gchristensen>
I love these RFC meetings!
FRidh2 has quit [Quit: Konversation terminated!]
ajs124 has quit [Quit: Gateway shutdown]
ajs124 has joined #nixos-dev
orivej has quit [Ping timeout: 245 seconds]
<gchristensen>
FRidh, aanderse, globin: I updated that document to include worldofpeace's feedback
<worldofpeace>
All in all gchristensen FRidh2 aaron globin I think we're in good hands and this is what I expect from our bright minds ✨ I'd say this RFC is mission critical too me, so I'm defienetly all for it in any shape or form we mold it too.
<gchristensen>
Mic92: would nix-review be unhappy if the name of some of the ofborg statuses changed?
<gchristensen>
Mic92: also, what would you think about transfering nix-review to nix-community?
orivej has joined #nixos-dev
xwvvvvwx has quit [Ping timeout: 240 seconds]
xwvvvvwx has joined #nixos-dev
xwvvvvwx has quit [Client Quit]
xwvvvvwx- has joined #nixos-dev
xwvvvvwx- has quit [Read error: Connection reset by peer]
xwvvvvwx has joined #nixos-dev
xwvvvvwx has quit [Read error: Connection reset by peer]
xwvvvvwx has joined #nixos-dev
ris has joined #nixos-dev
xwvvvvwx has quit [Client Quit]
xwvvvvwx has joined #nixos-dev
drakonis_ has quit [Ping timeout: 245 seconds]
xwvvvvwx has quit [Read error: Connection reset by peer]
drakonis_ has joined #nixos-dev
xwvvvvwx has joined #nixos-dev
xwvvvvwx has quit [Read error: Connection reset by peer]
xwvvvvwx has joined #nixos-dev
xwvvvvwx has quit [Read error: Connection reset by peer]
xwvvvvwx has joined #nixos-dev
xwvvvvwx has quit [Read error: Connection reset by peer]
xwvvvvwx has joined #nixos-dev
drakonis has joined #nixos-dev
drakonis_ has quit [Ping timeout: 250 seconds]
mjsir911 has quit [Quit: Goodbye, World!]
eraserhd has quit [Quit: WeeChat 2.6]
eraserhd has joined #nixos-dev
psyanticy has quit [Quit: Connection closed for inactivity]
mjsir911 has joined #nixos-dev
drakonis has quit [Ping timeout: 245 seconds]
drakonis has joined #nixos-dev
ixxie has quit [Remote host closed the connection]