<sphalerite>
samueldr: I haven't gc'd on my laptop since getting it, just because I want the freed figure to be huge when I do x)
<jackdk>
oh good, I thought I was the only one
<pie_>
i guess you guys dont have 20 GHC versions or something
<sphalerite>
no, only 16
Jackneill has joined #nixos-chat
<jackdk>
I had a lot, and ghcjs, and some cross-toolchains, and...
drakonis_ has quit [Remote host closed the connection]
<eyJhb>
tazjin: I see the extra layers :p But generation time is quite long, but that is properly harder to do anything about
<manveru>
freed 60GB yesterday :)
__monty__ has joined #nixos-chat
<eyJhb>
Anybody got any tips/tricks for recovering Facebook account without any added phone number, and no access to email (hotmail)?
<Taneb>
Is it in your real name?
<Taneb>
I've not been in this situation but I imagine there's a route involving providing some form of ID to Facebook support
<eyJhb>
Taneb: yeah it is in the persons real name, and she knows a previous password for the account, but it was "changed" 1 hour ago because she.. Reset it... - I would assume so too! But I can't figure out where on the website they have that
<eyJhb>
As it isn't listed on the forgot password page
<eyJhb>
Taneb: it doesn't seem like any of these options are available
<__monty__>
eyjhb: They wouldn't put it on the site. You'd contact support.
<infinisil>
Oh no, just got a 500 on GitHub again
<eyJhb>
infinisil: Nothing compared to how often DO throws a 500
<infinisil>
I'm worried GitHub's gonna dive again, last time it threw a 500 (a week ago or so?) there was this outage a bit later
<eyJhb>
Ahh, I see :/
<etu>
infinisil: So you say that you may just have caused it to go down ;)
<andi->
oh yeah, DO... still throws 500s when I try to check on my "pending for deletion" bucket… Support ticket has been open for a while now. They managed to send me another invoice for the very same bucket…
<infinisil>
etu: Oh snap!
<eyJhb>
andi-: You love your bucket, right?
<andi->
eyjhb: totally..
<andi->
Biggest mistake in the last 5y... Try to use something from DO
<qyliss>
I was getting default Nginx 502s from GitHub a couple of days ago
<eyJhb>
andi-: Well.... I somewhat like them, but not totally in love with them. Have begun to expect less and less from them from my time working on my project
<andi->
I migrated everything to a bunch of caching webservers and a simple ZFS backed webserver as "master". I am only using it for my private nix binary cache… I have some experimental support for GCS in Nix. Thinking of migrating my cache to google now.
<eyJhb>
Does this regex look horrible? `^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:)?([0-9]{1,5}:)?([0-9]{1,5})?(\/tcp|\/udp)?$` -> used for extracting docker port mappings
<eyJhb>
andi-: Where will you host that?
<andi->
eyjhb: google cloud storage
<andi->
the s3 equivalent
<mgdm>
eyjhb: if the regex engine supports it, I like to enable the option for whitespace not to be part of the pattern, and add comments
<{^_^}>
google/nixery#23 (by tazjin, 5 days ago, open): Cache built derivations to a GCS bucket
<tazjin>
one thing with that is that there's multiple nodes running that each have Nix locally, so if one is asked to build a manifest then another will do it again if the same image is requested
<tazjin>
and it'll only notice that it's already done it after creating all the layers and noticing that they're already in the bucket :)
ajirx_ has quit [Quit: Leaving]
<adisbladis>
andi-: I put my cache in Backblaze B2 for cost reasons
* adisbladis
should open source his backblaze b2 nix proxy
<tazjin>
is there an envvar for configuring binary caches?
<tazjin>
(i.e. not `-option extra-binary-caches` or adding an entry to nix.conf)
mgdm has left #nixos-chat ["WeeChat 1.4"]
<sphalerite>
tazjin: not directly. Nix will search XDG_CONFIG_HOME (or in newer versions XDG_CONFIG_PATH) for nix/nix.conf though, so you could make an extra nix.conf and point it to nix using that
<sphalerite>
tazjin: I'm guessing --extra-binary-caches also isn't an option ;)
<tazjin>
sphalerite: I was hoping I could set the whole thing up by just changing envvars, but it seems like I'll have to actually make code changes :/
<tazjin>
in which case I can also just go for the option
<tazjin>
hm, am I misunderstanding something here? I expected `nix copy --to` to recursively copy things if the store path I specify references other paths
<tazjin>
but it doesn't seem to do that?
<tazjin>
the only flag I see is `--no-recursive`, which is the opposite of what I want (and what it seems to be doing)
<adisbladis>
tazjin: `nix copy` is recursive.
<tazjin>
adisbladis: is it using a different mechanism than the rest of Nix to determine dependencies?
<tazjin>
so concretely, I have built a derivation that is literally a JSON file full of store paths (image layers)
<tazjin>
and using `nix copy --to` on that copies the JSON file itself, and nothing else
<joepie91>
> Two researchers publicly disclosed a zero-day vulnerability for the Steam client after Valve determined that the flaw was "Not Applicable." The company chose not award a bug bounty or give an indication that they would fix it, and told the researchers that they were not allowed to disclose it.
<{^_^}>
error: syntax error, unexpected ',', expecting ')', at (string):256:226
<joepie91>
that's not how this thing works, Valve
<sphalerite>
gj
drakonis has joined #nixos-chat
<manveru>
damn kitty... seems like the dev doesn't like IME and won't support fcitx :(
<adisbladis>
manveru: Isn't that the same crazy dev as Calibre? (who said he'd rather fork python2 and maintain it himself than to port)
<colemickens>
tazjin: oh wow, cool, thanks a bunch!
<aleph->
gchristensen: Ah nice.
<aleph->
gchristensen: To be fair I like my single layer images via nix
<aleph->
Make 'em as small and minimal as possible.
<aleph->
But to each their own, optimizing it is good.
<adisbladis>
If I can change one line of code to get auto-layering you bet I'll change that one line ;)
<aleph->
heh
<Miyu-chan>
My NixOps deployment's UUID ends with 0a0027000000
<Miyu-chan>
should I consider the lottery?
<adisbladis>
Miyu-chan: Successfully mined one block!
<Miyu-chan>
adisbladis: :D
<Miyu-chan>
NixOps PoW. Hmm
<andi->
nin
<andi->
My workstation just went OOM while building a layered image...
<__monty__>
Along the same lines, I got my hands on this latex document I can't render for lack of memory. Used 30+GBs on a machine with 8GB ram before I managed to end the process.
<Miyu-chan>
Eep.
<infinisil>
Ooff
<Miyu-chan>
I wonder what are the chances of that intentionally being malicious.
<__monty__>
Granted, using pandoc, because I don't like pdflatex's output.
<infinisil>
pandoc can render latex?
<__monty__>
Well it uses pdflatex I think. But I don't want pdf output. Html would be way better suited because it's a "hyperbook."
<tazjin>
the basic idea is to split the merging into multiple steps, where one step does a ranking by reference count and the other groups single references with parents
<gchristensen>
gotcha
<gchristensen>
I didn't want to do that because I wanted maximum sharing between images, so those groups could change a lot between. but, perhaps it isn't a big deal and there would be a lot of sharing anyway
<tazjin>
my thinking was that we literally have all the packages available
<tazjin>
so it would be possible to precompute data about this
<tazjin>
before image build time
<tazjin>
and use that as a reference for which things are useful to cache together, because even though they're separate store paths they only appear in isolation
<andi->
I am not sure the sharing really works that well right now. I just build two images with only a few arguments within the Cmd were different. It did not share anything :/
<andi->
(maxLayers = 120)
<tazjin>
it did not share *anything*?
<andi->
nope at least if I can trust the docker load < $path output
<gchristensen>
it never shares on "load"
<gchristensen>
it loads everything every time, even if you load the same image twice
<andi->
ahh, I thought it would show up as shared as it does with build and pull
<gchristensen>
you'll notice the sharing on push or pull
<gchristensen>
I misspoke
<gchristensen>
it does share on load, but it doesn't indicate the load had local sharing, ... probably since it didn't actually fetch anything
<tazjin>
surprise: a massive codebase in a language with no support for abstractions has a lot of copy&paste
<colemickens>
lol I have been flamed multiple times for complaining about how many times I had to copy/paste "contains" in the Azure cloudprovider because "I must not know how to write Go".
<andi->
oh yeah contains.. every project needs a few of those :D
<tazjin>
fwiw Borg is written in C++
<tazjin>
I think Go works only for small (less than 1k lines total or so) tools, it needs massive tooling support on larger codebases
<gchristensen>
good thing Google has sold it as a great tool for building huge projects
<manveru>
tazjin: last Go project i worked on had 25k LoC :P
<manveru>
and no massive tooling
<gchristensen>
erm, I probably shouldn't have said what I said. let's avoid dog-piling on Go and keep things respectful towards people who like go
<manveru>
:)
<manveru>
i maintain that you can write crap in any language
<gchristensen>
for example, github.com/grahamc
<tazjin>
I think the "you can write good/bad code in any language" argument is true and also irrelevant, because the question is not about whether it's possible but whether it's easy to write good code
<tazjin>
if it's hard to write good code AND the tool is popular, you get a lot of bad code
<manveru>
the most popular tools are the ones where you can get instant gratification for little effort, no?
<tazjin>
gchristensen: closure-graph.py says `# IMPORTANT: Making changes?` at the top
<tazjin>
what should I take away from that? :P
<joepie91>
manveru: generally, yeah
<gchristensen>
tazjin: keep reading?
<tazjin>
oh wow, TIL I have a mental "ad filter" for what looks like usage blocks
<gchristensen>
:)
<manveru>
so you get people that are the least skilled using them, leading to general degradation of quality... that doesn't imply the tool promotes bad patterns, it just means nobody ever reads the manual :P
<gchristensen>
btw, one problem with precomputing layer merges is if imageA depends on foo.bin, and buildB depends on foo.bin and foo.dev, and you decide to merge foo.bin and foo.dev, buildA *cannot* access foo.dev for creating a shared merged layer
<joepie91>
manveru: I mean, a good tool is specifically designed to make the wrong things hard and the good things easy
<joepie91>
so to me, people going for instant gratification in a tool and that producing an undesirable result, absolutely implies that the tool promotes bad usage patterns :)
<manveru>
:D
<joepie91>
(and in many cases, that is intentional, for marketing reasons - see also: MongoDB)
<manveru>
i guess both can be true...
<tazjin>
gchristensen: it's not about precomputing the merges, but about precomputing metadata to use in merge decisions
<tazjin>
for example if you stil need to put `libcurses`, `ripgrep` and `proprietary-tool` somewhere and you only have two layers available then data on the relative popularity of `libcurses` over the other two would suggest that it should be in its own layer - even if it's only referenced by `proprietary-tool` in this build
<tazjin>
*still
<gchristensen>
gotcha, yeah that sounds cool
<gchristensen>
I'm not sure it could really be used in nixpkgs' implementation (unless you have something really smart up your sleaves), but for nixery it sounds really ideal
<tazjin>
I don't think it'd be useful in nixpkgs itself, unless we want to maintain something like a huge JSON file in it that contains this data and is occasionally regenerated
<gchristensen>
yeah probably not :P
<tazjin>
I mean, the Nix code for doing it could be in there with a guideline for how to use it - but not necessarily in the default `pkgs.buildLayeredImage`
<manveru>
did you ever look into putting the names of the derivations in the layer metadata?
<gchristensen>
I think they're already there, but I don't recall
<tazjin>
manveru: for which use-case?
<tazjin>
it'd be interesting to write data that is recognised by `docker history`
<manveru>
exactly
<tazjin>
currently Nixery images at least come up with an empty history
<gchristensen>
oh, I thought it was already in the history list
<tazjin>
gchristensen: it's possible that it works with buildLayeredImage, but I'm not using that directly - only its internals
<manveru>
i didn't look elsewhere really, but the alternative is to unpack each layer and look at the files :P
<gchristensen>
tbh it would be really really really good to ditch the bash and write the image and layer packing code in something else
<tazjin>
I'd like to have each layer as an individual derivation for caching purposes
<gchristensen>
+1
<tazjin>
not sure if that's feasible for buildLayeredImage though
<gchristensen>
not until recursive nix is a thing
<tazjin>
it works well in Nixery because I never actually ship one tarball with all things in it
<tazjin>
*would work well, rather
<gchristensen>
yeah, so at some point I had an IFD-based buildLayeredImage which did excellent caching
<tazjin>
I was just gonna ask if I can access the graph without IFD
<adisbladis>
IFD is such a nice footgun :/
<gchristensen>
you need either recursive nix to exist, or use IFD
<tazjin>
would it be less work to implement recursive Nix or remove some of the footgun dangers? 🤔
<joepie91>
"such a nice footgun" -- adisbladis, 2019
<joepie91>
:P
<joepie91>
I like that phrase
<adisbladis>
<3
<gchristensen>
,IFD
<{^_^}>
import-from-derivation (IFD) is when you evaluate nix from a derivation result, for example `import (pkgs.writeText "n" "1 + 1")` will evaluate to 2. This is sometimes problematic because it requires evaluating some, building some, and then evaluating the build result.
<tazjin>
the references thing I was talking about earlier is annoying (assuming infinisil is right about that being due to IFD)
<gchristensen>
,IFD = import-from-derivation (IFD) is when you evaluate nix from a derivation result, for example `import (pkgs.writeText "n" "1 + 1")` will evaluate to 2. This is sometimes problematic because it requires evaluating some, building some, and then evaluating the build result. It has been described as "such a nice footgun."
<{^_^}>
ifd redefined, was defined as import-from-derivation (IFD) is when you evaluate nix from a derivation result, for example `import (pkgs.writeText "n" "1 + 1")` will evaluate to 2. This is sometimes problematic because it requires evaluating some, building some, and then evaluating the build result.
<adisbladis>
gchristensen: Would it be possible if you'd reimplement the layering in nix?
<adisbladis>
Hmm, no it wouldn't :/ You still need the _runtime closure_
<tazjin>
you need it to do the layering :P
<tazjin>
anyways, I don't mind IFD in Nixery - I can fix `nix copy` with a shell script
<gchristensen>
IFD at the very edges isn't so bad
<adisbladis>
For Nixery I'd also do IFD tbh
<__monty__>
I can't figure out the right kernel parameters to boot with a dm-crypt plain encrypted root partition : /
<colemickens>
__monty__: I'm curious why are you trying to do dm-crypt without LUKS?
<colemickens>
(or in addition, rather than LUKS with a detached header?)
<__monty__>
colemickens: Just because tbh.
drakonis has quit [Quit: WeeChat 2.4]
<colemickens>
gotcha
<__monty__>
Haven't run any FDE systems and I'd like to see if I can be bothered. Evaluating the options plain dm-crypt sounded more appealing because I prefer data accessibility over convenience and am prepared to remember a good passphrase. So I wanted to see if plain dm-crypt's really as bad as some people claim.
<gchristensen>
"prefer accessibility over convenience" "see if I can be bothered"
<gchristensen>
seem counter to each other?
<__monty__>
No, cause no encryption whatsoever is convenient and maximises accessibility : )
<gchristensen>
yeah, but also maximises convenience, no?
<__monty__>
Yes, this is a case of seeing whether I'd be okay with giving up some convenience and accessibility for safer files.
<__monty__>
Is there a way to see what mkinitcpio hooks nixos-install used to generate the initrd?
<samueldr>
mkinicpio hooks?
<samueldr>
mkinitcpio*
<samueldr>
there's no mkinitcpio in nixos
<gchristensen>
nixos-install also doesn't do anything special w.r.t. initrd, it does whatever nixos always does
<__monty__>
Ah, I guess that explains me not being to `find` anything.
<__monty__>
I have no idea what nixos usually does. This'll be my first nixos box.
<gchristensen>
O.O :o :D welcome!
<__monty__>
And I don't know much about mkinitcpio/initrd/linux boot in general.
<andi->
NixOS is the distribution that allowed me to fiddle with the initrd without much headache. It is really "transparent". No magic hooks, packers, scripts, …
<gchristensen>
same
<gchristensen>
NixOS is what actually taught me about how linux boots, because it is so safe and easy to experiment and explore
<__monty__>
I've tried to understand the luks modules because I figured I'd have to do something similar for plain dm-crypt but I haven't succeeded.
<andi->
I have more then once added code to stage1/stage2 just to see what is going on and add something that I needed.
<gchristensen>
I'd strongly recommend just doing luks
<gchristensen>
you're setting yourself up to fail and not like an encrypted root
<gchristensen>
"hmm, I wonder if this thing people say is horrible is really as bad as they say. if it is bad, I won't use an encrypted root."
<__monty__>
Nah, I'd give luks a chance. It's just that luks' disadvantages sound worse imo.
<gchristensen>
what are the disadvantages?
<__monty__>
I don't like an entire disk depending on the integrity of a header.
<gchristensen>
does dm-crypt make that better?
<__monty__>
Yep, no header.
Moredread[m] has quit [Write error: Connection reset by peer]
worldofpeace has quit [Read error: Connection reset by peer]
philipp[m] has quit [Read error: Connection reset by peer]
thefloweringash has quit [Write error: Connection reset by peer]
colemickens has quit [Write error: Connection reset by peer]
Ralith has quit [Write error: Connection reset by peer]
dtz has quit [Write error: Connection reset by peer]
sphalerit has quit [Write error: Connection reset by peer]
<samueldr>
how's the story of changing passphrase or adding a new pass phrase or decryption key on luks-less dm-crypt?
<__monty__>
samueldr: No story. Re-encrypt all the things.
<samueldr>
oof
<samueldr>
so I guess no additional phrases or decryption keys
<gchristensen>
oooof
<__monty__>
I guess you might be able to kludge it with a gpg-encrypted keyfile or something.
<gchristensen>
I think I'd prefer the header + backups
<adisbladis>
andi-: Before NixOS I always hand-rolled initrd's (because everything else is too much black boxes and magic)
<adisbladis>
I've thought about why I fell for NixOS and that's probably the main thing.. I'm a sucker for rabbit holes and Nix makes a lot of rabbit holes relatively shallow :)
<gchristensen>
:D
<gchristensen>
two quotable things in one afternoon
<adisbladis>
It's also infinitely deep ^_^
<adisbladis>
gchristensen: And I'm sitting in lotus position, total wise man
colemickens has joined #nixos-chat
<colemickens>
what's the difference between backing up the key, versus the key and the header?
<colemickens>
presumably with dm-crypt raw you have to use an impossible-to-remember key?
<__monty__>
I trust diceware passphrases provide enough entropy.
<gchristensen>
/query colemickens I really like that __monty__ is a perpetual font of bad, nerd-bogus security advice.
<gchristensen>
oops :P
<__monty__>
Have I given any security advice?
<gchristensen>
no, you haven't
<gchristensen>
that is true
<adisbladis>
Actually lotus is my favourite working position. Highly recommend!
<__monty__>
If you have good reason to dislike diceware I'd love to know.
<__monty__>
As for the plain dm-crypt, consider this a throwaway box. Just because I want to do it doesn't mean I'd recommend it or will trust it with anything important.
<infinisil>
adisbladis: Lotus was once my favorite car make
<__monty__>
It's currently my favorite speculoos make : )
<gchristensen>
infinisil: I was stuck in a lyft ride for 1.5h a couple weeks ago, who told me the entire time about a cross-the-US trip to different lotus fan groups, and all the roads they took with 360 turns, 158 turns, 62 tight turns, ....
<adisbladis>
gchristensen: And what a fun 1.5h you had!
<infinisil>
Heh
<joepie91>
__monty__: wait. they sell that outside NL?
<__monty__>
joepie91: Yes, in far away BE : )
<joepie91>
ah okay :)
<joepie91>
that makes more sense
<joepie91>
it is the spare bit of NL after all :D
<__monty__>
Are you saying most of the others here have never experienced the joyous occasion that is speculoos consumption?
<adisbladis>
Belgium is not even a real country anyway
<joepie91>
__monty__: I rarely hear of it being sold anywhere but NL and BE, much less the Lotus variant
<__monty__>
I prefer to refer to it as "The place Dr. Evil was raised."
<joepie91>
on the other hand, stroopwafels are taking over the world
<joepie91>
perhaps speculoos will follow shortly
<adisbladis>
Stroopwaffels <3
<samueldr>
never had actual speculoos, but I once found a speculoos spread for toast and it was lovely
<__monty__>
That's good too. But the crunch of the real thing sets it apart.
<joepie91>
__monty__: also, if you've ever considered trying those soylent-esque instant meals (or are currently doing so), Queal sells a speculoos-flavoured variant around the holidays, and it is _very_ good
<joepie91>
very, very, very good.
<__monty__>
Hmm, not a fan. I enjoy preparing and consuming food too much.
<joepie91>
__monty__: so this might sound odd, but my enjoyment of that has *increased* since starting those instant meals for part of my meals
<joepie91>
because now making and eating 'real' food is a conscious choice, rather than something on the todo list
<adisbladis>
joepie91: You can spend more time for the meals when you actually care?
<joepie91>
yeah
<joepie91>
that's basically what I do
<adisbladis>
joepie91: How much is it per meal?
<joepie91>
I grab an instant meal if I just need nutrients and are busy with something else, and so I enjoy the remaining meals much more
<joepie91>
am*
<joepie91>
adisbladis: varies by brand (there's quite a lot of them now!), but for the powdered add-water shaker meals, 5-7 EUR per bag is typical, and you get a typical 3 meals (= 1 day of nutrients) out of a bag
<joepie91>
most suppliers give you decent discounts when making it a subscription
<adisbladis>
Not as cheap as I thought :/
<joepie91>
aye, don't buy it for cheapness :)
<adisbladis>
My lunch today (going out to grab takeaway) was ~5EUR.. Cooking by myself I can go much lower (and have a better culinary experience).
<eyJhb>
Does.. Most people agree that Linux users are cheap?
<gchristensen>
a good reminder to go support LWN
<joepie91>
eyjhb: I can't really say more, but let's just say that... that article is very off base
<joepie91>
(as to the cause of their demise)
<joepie91>
it's still a good idea to support the projects you like, obviously
<joepie91>
but that article sounds entirely too certain about something they don't know :)
Guanin has joined #nixos-chat
<samueldr>
betanews has a very windows slant IIRC
<samueldr>
>> today it is just a Linux magazine, but tomorrow it could be a popular operating system like Linux Mint, or an essential productivity program such as LibreOffice
<samueldr>
with a good serving of FUD :)
waleee-cl has joined #nixos-chat
Jackneill has quit [Remote host closed the connection]
<adisbladis>
eyjhb: Humble bundle says the opposite :)
<__monty__>
Is there a way to include binaries in/next to the initrd? To be used in boot.initrd.preLVM?
* adisbladis
is off to Sweden
joepie91 has quit [Remote host closed the connection]
f0x has quit [Remote host closed the connection]
<__monty__>
Hmm, doesn't look like it.
joepie91 has joined #nixos-chat
<eyJhb>
adisbladis: damn you!
<eyJhb>
joepie91, samueldr yeah... Thought the same, I just hate how it is worded
<eyJhb>
I will support things with money, when I actual have any money
<adisbladis>
Huh
<adisbladis>
Damn me :(
<__monty__>
Hmm, why can the luksroot stuff in nixos/.../boot/ set `boot.initrd.extraUtilsCommands` but this isn't in the nixos manual?
<__monty__>
Is this an option that was hidden to thwart me?
<eyJhb>
adisbladis: I will return some day! Properly in Lund though...
<gchristensen>
that means it is a hidden/internal option, and it may not exist tomorrow
<adisbladis>
Come visit London :)
<ashkitten>
hmm, is there a limit to how long a systemd service can delay shutdown?
<gchristensen>
I think like 1m30
<ashkitten>
ah
<ashkitten>
that's not long enough
<gchristensen>
what for?
<ashkitten>
an ITS system running as a systemd service
<gchristensen>
oh cool
<ashkitten>
for the moment, if users are logged into ITS i don't have an easy way to shut it down immediately
<ashkitten>
i can trigger a shutdown and it'll take 5 minutes if anyone is logged in
<ashkitten>
i'm gonna try and figure out if i can get someone to help me write something to shut it down immediately regardless of users present
<infinisil>
ashkitten: I think it sends SIGINT after 1m30 and if it still didn't exit a SIGKILL after another 1m30
<ashkitten>
ah
<__monty__>
Wow, not even a slow clap for plain dm-crypt? :'(
<__monty__>
Anyone experimenting with Hurd?
<infinisil>
Nix quiz:
<infinisil>
Without checking, what does `(_: null) { null = true; } ? null` evaluate to?
<qyliss>
I'll bite. `null`.
<__monty__>
Surely it must be null.
* qyliss
checks
<qyliss>
the fuck
__monty__ has quit [Quit: leaving]
<infinisil>
Hehe
<joepie91>
TIL: --keep-result for morph
<joepie91>
infinisil: wait, is that even valid syntax?
<infinisil>
joepie91: Yup
cocreature has quit [Ping timeout: 252 seconds]
<joepie91>
what does that parse as?
<qyliss>
joepie91: try it and don't spoil it for people who come later ;)
<joepie91>
aye, I've tried it, I still don't understand how it parses though :)
<infinisil>
joepie91: nix-instantiate --parse
<joepie91>
well that didn't clarify much :P
<joepie91>
I just have more parens now
<infinisil>
Let's see if anybody can get it right :D
<pie_>
elvishjerricco: does doing this on your zfs disk not cause problems? cat /dev/urandom | pv > ./test
<averell>
i'm kinda annoyed i fell for the misdirection :)
<pie_>
infinisil: wait you can use ? outside of function arguments?
<pie_>
huuuuuuuuh
<pie_>
wait how does that operator even work
<averell>
it's just "contains"
<pie_>
oh so thats not the ? in th function args opertaor
<samueldr>
> { a = 1; } ? a
<{^_^}>
true
<samueldr>
> { a = 1; } ? b
<{^_^}>
false
<samueldr>
kind of a long lost cousin
<ashkitten>
oh i see
<aleph->
Sup folks
* aleph-
is writing some python to beat out sentry wrt logging for his config management system.
cocreature has joined #nixos-chat
<qyliss>
It weirds me out that ? takes, like, a bare string
<qyliss>
rather than a variable or quoted string
<pie_>
apparently it will take that too
<pie_>
err
<pie_>
whats a bare string
<samueldr>
> { null = 1; }
<{^_^}>
{ null = 1; }
<pie_>
ok
<pie_>
so ? exists at the syntactic level as an operator?
<samueldr>
it's more like identifiers can be reserved keywords in some circumstances?
<samueldr>
or that our null is first class?
<samueldr>
> let null = 1; in null
<{^_^}>
1
<pie_>
im trying to say it cant be a normal thing because it takes arguments like `null`
<pie_>
not `"null"`
<qyliss>
samueldr: "a" isn't a reserved word, though
<samueldr>
yeah, I have to retract my thought since it doesn't work with let
<samueldr>
so it's more about `null` being an identifier like `a` would be?
<qyliss>
I think so
<infinisil>
I'll go ahead and reveal the solution (and explain why)
<infinisil>
> (_: null) { null = true; } ? null
<{^_^}>
false
<infinisil>
!
<infinisil>
The first thing is that function application has highest precedence, so we first evaluate `(_: null) { null = true; }`, which is of course just `null`
<infinisil>
> null ? null
<{^_^}>
false
<infinisil>
The ? operator works on two types: attrsets or null
<infinisil>
With attrsets it checks whether the identifier or the right is a key
<infinisil>
But with `null` it just always returns false :)
<infinisil>
(that's `null` on the LHS)
<infinisil>
This gets added to my collection of Nix quizzes :D
<pie_>
> "lol" ? null
<{^_^}>
false
<pie_>
check mate
<infinisil>
Oh daaamn
<pie_>
> 1 ? poop
<{^_^}>
false
<infinisil>
It actually works on all types, I didn't know
<pie_>
sketchy operator is sketchy
<qyliss>
I wonder if there's a reason for this not to just be a builtin function...
<infinisil>
You mean something like builtins.hasAttr?
<qyliss>
Yeah
<infinisil>
> builtins.hasAttr "a" {}
<{^_^}>
false
<joepie91>
heh. my NixOS installation has been misled into thinking it's running on Hyper-V
<joepie91>
and now Hyper-V services are failing to start
<joepie91>
:p
<samueldr>
misled... what or who is leading the install? :)
<joepie91>
samueldr: provider uses some 'Hyper-V Enlightenment' thing (on QEMU/KVM) and nixos-generate-config therefore believed it was under Hyper-V
<joepie91>
it's meant for improving Windows perf
vika_nezrimaya has joined #nixos-chat
<vika_nezrimaya>
hello
<vika_nezrimaya>
so I'm building NixOS on my RPi finally
<vika_nezrimaya>
natively
<vika_nezrimaya>
thanks to the bootstrap cross-compiled image
<vika_nezrimaya>
I hope there will be no bugs
<vika_nezrimaya>
well, xz seems to be building
<vika_nezrimaya>
>.< I'm a bit nervous 'cause it didn't seem to be working with QEMU binfmt stuff
<vika_nezrimaya>
by it I mean the build as a whole not xz
<vika_nezrimaya>
i don't remember if it ever got to xz lol
<infinisil>
Neato
<vika_nezrimaya>
wait wow it already compiles bison
<vika_nezrimaya>
much faster than QEMU :3
<vika_nezrimaya>
The initial build of Nix could probably only take... a day?
<vika_nezrimaya>
I hope glibc doesn't update too much in nixos-unstable
<vika_nezrimaya>
but, well, at least the bootstrap tools shouldn't be updating right?