<infinisil>
It's pretty much generators.toPretty, but it's *streaming* the output
<infinisil>
This allows you to e.g. start printing an infinitely recursive attribute set
<samueldr>
but when does it end? ;)
<gchristensen>
omg
<aleph->
Source?
<infinisil>
You can also limit the output to e.g. only 10 lines (in fact, you can pass arbitrary state through the function, stopping the execution at any time)
<infinisil>
(depending on the stat)
<infinisil>
aleph-: I'll probably PR it to nixpkgs soon :)
<infinisil>
There I limited the output to 5 lines. But the current implementation of lib.generators.toPretty renders the *whole* output, and only after the fact trims it to 5 lines.
<infinisil>
Oh and I just want to point out that it was hella hard to have it work fully lazily and without getting stack oveflows (even for *huge* values)
<ashkitten>
oh sick they implemented precognition in sway
<cole-h>
wot
<gchristensen>
pardon?
rajivr has joined #nixos-chat
<ashkitten>
it crashed in the middle of typing swaymsg exit :D
<aleph->
Lolol
<cole-h>
Hahahahahaha
<gchristensen>
slick
disasm has quit [Quit: WeeChat 2.0]
disasm has joined #nixos-chat
<pie_>
samueldr: gchristensen: i could certainly have been less rude about it
<samueldr>
pie_: me responding in kind wasn't necessarily the best thing to do :)
<samueldr>
though I'm still curious what that actually means
<pie_>
im too tired to get into it but id also need to think about it
<pie_>
maybe it reflects on me and my views more than the state of things
<samueldr>
no worries, I don't want to put you on the spot either :)
<samueldr>
if there are concrete things you have in mind, we're not close-minded, but I think you understand that "nah I don't like it" (whoever says it) isn't actionable
<pie_>
i guess im very average in this regard, gchristensen remains someone I look up to in terms of methods of constructive criticism :P
<pie_>
yeah
<pie_>
or just being constructive in general
waleee-cl has quit [Quit: Connection closed for inactivity]
endformationage has quit [Quit: WeeChat 2.9]
<ldlework>
Crusader Kings 3 is a really good game.
<eyJhb>
ashkitten: sorry to ask this, but what locking software was it you used?
<ashkitten>
locking?
<eyJhb>
screenlock, for when you are not at your computer :)
<ashkitten>
swaylock
<eyJhb>
Damn it
<ashkitten>
i used xsecurelock with i3 before?
<eyJhb>
When I switch to sway at some point
<eyJhb>
Hmm, might try that
<ashkitten>
why do you ask
<eyJhb>
Locked at betterlockscreen, but unsure how secure it is. - Because I remember we have had this conversation before, but I couldn't find the logs. And I have started at uni again, without setting a new lock
<eyJhb>
So currently, I have none
<ashkitten>
i used to use xsecurelock, it's supposedly pretty good, for a x11 locker
<ashkitten>
i also use physlock to disable console switching while locked
<eyJhb>
Yeah, but physlock does not seem to work on my computer for some reason :/
<ashkitten>
nixos has a physlock config option iirc which sets up the wrapper correctly to allow unprivileged users to use it
<ashkitten>
you may need that
<eyJhb>
It is when I combine it with DisplayLink, that it will not work anymore, which is sad
<ashkitten>
what is displaylink
<eyJhb>
So I like to put a autolock up (inactive for 30 mins), but if I do that then I have to reboot all the time
<eyJhb>
It is the devils work! Proprietary USB 3.0 docking station, with the software being locked
<eyJhb>
And all the logs are encrypted as well
<eyJhb>
So you can't even debug the closed software
<ashkitten>
some compositors are weird with xsecurelock
<ashkitten>
picom works okay iirc
<eyJhb>
I use picom :p
<ashkitten>
oh
<ashkitten>
idk
<ashkitten>
you might have to exclude xsecurelock from compositing?
<ashkitten>
it should be in xsecurelock's docs
<ashkitten>
somewhere
<ashkitten>
you see this is part of why x11 is insecure
<eyJhb>
Yeah, but now that I think about it, I can not switch to wayland soon.. Because, DisplayLink...
<eyJhb>
I really need a laptop that can take 3xQHD monitors
<ashkitten>
i don't even have that many monitors, much less that resolution...
<ashkitten>
the only thing QHD in this apartment is the tv
<eyJhb>
Bought two new monitors that were QHD, because the other ones was somewhat dying, costed around 2.000 DKK
<eyJhb>
> DKK 2000
<{^_^}>
"6930020.000000 VND"
<eyJhb>
I should really change that
<ashkitten>
lmao
<eyJhb>
270 EUR
<eyJhb>
> 6930020
<{^_^}>
6930020
<eyJhb>
> VND 6930020
<{^_^}>
"263.340760 EUR"
<eyJhb>
^^^ :D
<ashkitten>
> EUR 263
<{^_^}>
"263 EUR = 1972.500000 DKK"
<ashkitten>
ofc
<eyJhb>
> SWE 100
<{^_^}>
undefined variable 'SWE' at (string):324:1
<eyJhb>
> SVE 100
<ashkitten>
> USD 100
<{^_^}>
undefined variable 'SVE' at (string):324:1
<{^_^}>
"100 USD = 666.666667 DKK"
<eyJhb>
What is it :(
<eyJhb>
I think adisbladis is to blame for the SWE undefinde thingy! :p
<ashkitten>
i love that there's no target currency
<ashkitten>
just gotta go with the flow
<ashkitten>
apparently the flow takes you to "vietnamese dong"
<eyJhb>
Well, generally everything ends in DKK, but adisbladis redefined DKK to VND :p Else it was DKK -> EUR -> DKK
<V>
why do I want to know how much dong something is worth
<eyJhb>
Because if you have
<eyJhb>
> VND 1000000
<{^_^}>
"38.000000 EUR"
<eyJhb>
dong, then it is important to know!
<V>
wow
<V>
is that a decimal point
<V>
dong sure aren't worth much these days
<eyJhb>
> EUR 1
<{^_^}>
"1 EUR = 7.500000 DKK"
<eyJhb>
But yeah :p True ;)
<sphalerite>
eyJhb: I believe the normal abbreviation is SEK
<eyJhb>
> SEK 100
<{^_^}>
"100 SEK (weakest of the Norse Brothers) = 71.000000 DKK"
<eyJhb>
sphalerite: Well... Damn. Guess adisbladis is a free man then
<srhb>
I'm having trouble determining why io.stat in my unified cgroup hierarchy is always empty. I thought (for systemd-units) that IOAccounting = true; would suffice to populate it, but the documentation is pretty sparse here. Anyone got any ideas?
<srhb>
oh, it's probably my scheduler.. Derp
<eyJhb>
Any good grep/sed like thing, that can be used to do regex on multiple lines? I want to get every code block (```lang \n code \n ``` - with the \n being newlines, but I can't really type that here)
<eyJhb>
grep and sed are line based, awk could work, however it seems a little weird to make it include newlines when searching
<eyJhb>
Considering just using Python instead
<srhb>
sed can do multiline, but at that point you probably want to go python/perl/whatever instead anyway :)
<eyJhb>
srhb: How good are you regexp? ;)
<srhb>
eyJhb: not. I tend to write real parsers for anything complicated :)
<eyJhb>
Seems a little OP, for extracting things such as ```lang something ```, etc. but maybe not at some point
<eyJhb>
Once you get too many of such expressions
xd1le has joined #nixos-chat
parsley936 has joined #nixos-chat
<srhb>
eyJhb: I've done a lot of parser writing. Once you get used to it, it's my feeling that it's often faster and less error prone :)
<srhb>
(Then again, I'm bad at regexps)
<eyJhb>
srhb: Do you have any examples on how you do it?
<srhb>
eyJhb: I usually use megaparsec, so any tutorial on that should suffice.
<sphalerite>
♥ proper parsers
<srhb>
Yeah, they're fun to write :P
<srk>
I've started to use Haskell due to parser combinator libs, just awesome
<srk>
although I prefer attoparsec, not much difference except for implicit backtracking (you don't need to use `try`)
NinjaTrappeur has quit [Quit: WeeChat 2.9]
NinjaTrappeur has joined #nixos-chat
NinjaTrappeur has quit [Quit: WeeChat 2.9]
NinjaTrappeur has joined #nixos-chat
NinjaTrappeur has quit [Quit: WeeChat 2.9]
NinjaTrappeur has joined #nixos-chat
NinjaTrappeur has quit [Client Quit]
NinjaTrappeur has joined #nixos-chat
NinjaTrappeur has quit [Quit: WeeChat 2.9]
NinjaTrappeur has joined #nixos-chat
NinjaTrappeur has quit [Client Quit]
NinjaTrappeur has joined #nixos-chat
waleee-cl has joined #nixos-chat
endformationage has joined #nixos-chat
<gchristensen>
is alacritty still the hot terminal emulator these days
<cransom>
i don't know what new hotness the kids might be up to, but i jumped ship to it from iterm not long ago.
<sphalerite>
+1 on "using it but not sure if it's hot"
<cransom>
it won versus the other option i saw, kitty. it's still ok to me, though i don't ask a whole lot of a terminal emulator.
<gchristensen>
I like kitty's support for kittens but the use of a non-standard termcap makes it unusable for me
<cransom>
yeah, that was the pain.
noonien has quit [Quit: Connection closed for inactivity]
neeasade has quit [Remote host closed the connection]
<Luciole>
I went to alacritty because wayland, but haven't really dug into if it's a sane terminal emulator yet..
<f0x>
have been using alacritty for quite a while now (year+?), does it well
cole-h has joined #nixos-chat
nullheroes has joined #nixos-chat
<eyJhb>
My ark server has been down for 4 days now, and I am a sad panda :(
cjpbirkbeck has joined #nixos-chat
<infinisil>
Nix quiz: Find an expression <E> such that `{ x = <E>; x = <E>; }` is valid
<infinisil>
The first to figure it out gets 1 free karma!
<eyJhb>
2!
<V>
{}
<cole-h>
> { x = {}; x = {}; }
<{^_^}>
{ x = <CODE>; }
<eyJhb>
> { x = 2; x = 2; }
<{^_^}>
error: attribute 'x' at (string):324:10 already defined at (string):324:3
<infinisil>
V++
<eyJhb>
Damn.
<{^_^}>
V's karma got increased to 7
<infinisil>
Nice!
<eyJhb>
I was like 2 from that
<infinisil>
> {} - 2
<{^_^}>
value is a set while an integer was expected, at (string):324:1
<infinisil>
Oh oh!
<eyJhb>
Like two moves, replace 2 with { and then put } next to it
<eyJhb>
:|
<cole-h>
Anybody familiar with perl: how do I call a function and provide the result of a function as an argument? e.g. `func1 (func2 "asdf")`?
<cole-h>
Can I do this without binding to a variable?
<cole-h>
Maybe a more accurate example would be `func1 (func2 "asdf"), (func3 "asdf"), "asdf"`
adisbladis has left #nixos-chat ["ERC (IRC client for Emacs 28.0.50)"]
neeasade has joined #nixos-chat
rajivr has quit [Quit: Connection closed for inactivity]
<evanjs>
*makes PR* *mentions blog post that inspired me to add a package and configure a feature using it* *author messages me and asks about NixOS* :D
<ashkitten>
my f2fs partition won't mount because fsck is detecting corruption?
<ashkitten>
so i can't boot
<ashkitten>
it says record_fsync_data failed
<samueldr>
neat, the hard drive setup in my workstation computer has gone sour
<samueldr>
luckily (1) I have backups (2) it's the disk which holds the /nix/store (and rootfs), not the home directory
<samueldr>
it's... uh... highly annoying as my next-fastest computer is really not fast
<gchristensen>
ouch
<gchristensen>
we could trade backup space
<samueldr>
hm? is that an orthogonal thought?
<samueldr>
since really my only issue right now is not being able to send builds there :)
<ashkitten>
i hope i can fix this f2fs partition
<gchristensen>
yeah orthogonal.
<gchristensen>
I don't have backups which would survive a house fire
<samueldr>
ah
<samueldr>
I have a borg backup setup at a cheap-o OVH dedicated server that was made realy cheaper with black friday deals
<gchristensen>
oh cool
<samueldr>
while it could be cheaper if I went to "the cloud", I prefer a stable "bigger" bill
<samueldr>
and lots of room to spare
<gchristensen>
yeah
<gchristensen>
I'd really like a backup-to-an-object-store tool
<andi->
restic?
<andi->
duplicity?
<cole-h>
My problem is that my backups are decently large, I have a 1TB data cap, and uploads count towards that cap 🙃
<samueldr>
heh, no caps, but uploads limited to 10mbps
<cole-h>
So I can't feasibly upload my backups to any cloud
<ashkitten>
why is fsck saying record_fsync_data failed...
<ashkitten>
i'm really annoyed
<samueldr>
ashkitten: time to go through the backlog and blame whoever you said you wouldn't blame ;)
<ashkitten>
heh
<ashkitten>
no, it's my fault
<evanjs>
*wondering if I should setup some backup drives for my f2fs desktops*...
<ashkitten>
but it's also really annoying me that a simple power failure did this
<evanjs>
that's all of them btw lol
<ashkitten>
is there a f2fs irc channel i can complain^Wask for help in
<eyJhb>
gchristensen samueldr , same reason me and my brother are going to swap drives, and then get access to each other stuff
<gchristensen>
nice
<eyJhb>
Or I might pull/push, because I tend to care more than him
<eyJhb>
(pull his, push mine), but I know the dread
<eyJhb>
After my parents divorced and the house got sold, our common server got split and now we each have a drive with the state at that point :p
<eyJhb>
With no real backup, besides we all have a drive, somewhere
<eyJhb>
Also, all my current backups are in the same computer...... Not good with a laptop
<eyJhb>
However, whoever steals mine have a bad taste for design
<ashkitten>
augh this is so annoying
<ashkitten>
i know i said this was unimportant data, and it is, but i didn't want to lose it immediately
<eyJhb>
Is it a case of, I can recrate it, but I really don't want to?
<ashkitten>
at least wait a full week after getting the dang thing
<ashkitten>
eyJhb: kinda
<ashkitten>
mostly just
<ashkitten>
"i can recreate it just fine but it's annoying"
<ashkitten>
and i expected f2fs to be less stable than zfs but this is ridiculous
<samueldr>
anyone knowledgeable enough in SSDs can tell me if the difference between 250$CAD and 210$CAD for a Samsung 870 QVO vs. 860 EVO is "worth" it?
<samueldr>
I'm not looking for bechmarks
<samueldr>
but real world "this is going to store a /nix/store with lots of churn" use case
<gchristensen>
which form factor, samueldr ?
<samueldr>
2.5" SATA
<samueldr>
sorry
<samueldr>
I would say the most important data point would be reliability
<samueldr>
I'd want the one that will "burn through" the slowest with repeated writes
<gchristensen>
which size?
<samueldr>
1TB
<samueldr>
those were the "same specs" except generation wise
<eyJhb>
ashkitten: you do not really expect that to happen, seems annyoing
<samueldr>
but, from research I did, and friends did too, it looks like there's nothing of use to say
<samueldr>
other than the manufacturer (samsung) giving useless hand-wavey numbers for writes
<gchristensen>
the 860 has a *way* better Total Bytes Written warranty, samueldr
<gchristensen>
nearly 2x
<ashkitten>
so for my next try should i use xfs or just go ext4
<eyJhb>
What is the use case? Which system?
<gchristensen>
ashkitten: why not zfs again? :P (xfs is pretty good)
<samueldr>
yeah, but the "total bytes written" is quite hand-wavey as a stats imo, it's never well-explained how it's actually accounted for
<ashkitten>
zfs is nice and all but i wanted something optimized for speed on flash storage
<ashkitten>
which f2fs is
<samueldr>
let's say I fill the SSD to 99%, and write continuously in that leftover 1%, how does it fare?
<ashkitten>
and xfs is also pretty good performance
<gchristensen>
samueldr: yes, understood, but a difference of almost 2x seems notable
<samueldr>
I agree, *if* it matters, but AFAICT nowhere I could find whether it matters or not
<samueldr>
I'd be more interested in seeing reliability graphs of actually-in-use devices
<gchristensen>
ah
<samueldr>
but that's like basically not a thing
<samueldr>
though the +2 years of warranty sure helps
<samueldr>
damn, looks like I just missed a sale
<samueldr>
I'm also considering other options, to get going quicker, as we're on thursday, it probably end up shipped on monday, so not here before at least wednesday
<ashkitten>
maybe i will put zfs on it, idk
<ashkitten>
wasn't planning to
<ashkitten>
but that's one filesystem i know that will 100% not succumb to random power failures
<gchristensen>
I mean, zfs isn't the fastest fs for sure
<ashkitten>
yeah
<ldlework>
hello
<ashkitten>
idk :/
<gchristensen>
xfs is pretty good and fast
<ashkitten>
yeah
<ashkitten>
i might just have to xfs
<gchristensen>
tumblr used xfs on virident flashmax's
<gchristensen>
lots of iops there
<cole-h>
Can XFS snapshot?
<gchristensen>
usually you use a volume manager for snapshots on xfs
<ashkitten>
i'm already annoyed because this ssd isn't performing as well as advertised
<ashkitten>
i only get maybe 600MB/s writes, instead of 2GB/s
<ashkitten>
and random read/write perf is also fairly low
<cole-h>
So, XFS + LVM, then.
<cole-h>
Yeah, I've also noticed slow disk speed on ZFS... Maybe because I'm using both compression and encryption 😬
<eyJhb>
cole-h: hmm, haven't noticed that
<cole-h>
I don't notice it in NixOS
<eyJhb>
But I might not notice it :/
<cole-h>
I notice it in my VM
<eyJhb>
Ahhh
<gchristensen>
does anyone have a list of nixops-alternatives?
tokudan has quit [Remote host closed the connection]
tokudan has joined #nixos-chat
ninjin_ has quit [Remote host closed the connection]
ninjin_ has joined #nixos-chat
<cole-h>
krops, nixus, morph are the big 3 I think
<cole-h>
gchristensen: ^
aleph- has quit [Ping timeout: 272 seconds]
clever_ has joined #nixos-chat
<gchristensen>
thanks!
neeasade has quit []
clever has quit [Ping timeout: 240 seconds]
<gchristensen>
I forgot that nixus was written in bash :')
<cole-h>
And Nix!
aleph- has joined #nixos-chat
<infinisil>
gchristensen: Ugh don't remind me
<gchristensen>
haha, oh no
<infinisil>
As much as I want to use Haskell instead, it might not be the right tool for this job
<cole-h>
RiiR? ;)
<infinisil>
cole-h: Ideally it would be a language that's not compiled
__Sander__ has quit [Quit: Konversation terminated!]
<gchristensen>
I wish there was a good language for this
<gchristensen>
but it isn't python
<infinisil>
Because Nixus code needs to run on both deploy and target machine, and if those are different arches, it would have to cross compile
<cole-h>
infinisil: Yeah, I know :( Was (mostly) a joke.
<infinisil>
:P
<infinisil>
Also, it should be a language that's easy to bootstrap
<cole-h>
Easy to read would also be a plus.
* cole-h
looks at execline
<gchristensen>
eh, with nix-copy-closure and nix-build who cares :P
<gchristensen>
how about a language like PureScript which targets POSIX shell
<cole-h>
Haven't looked at PureScript before, but that sounds interesting :o
<infinisil>
gchristensen: Different platforms though. If I choose Haskell, I need to cross compile (or compile on the target) the whole Haskell ecosystem, which is certainly not prebuilt for raspbys
<infinisil>
And pretty much everything except x86_64
<andi->
OSH! ;0
<infinisil>
andi-: Hmmm... lemme see the state of that
<cole-h>
Oil Shell :o
<infinisil>
Oh I think I was thinking of oil shell
<cole-h>
I would 100% switch to oil if it had fish-tier autosuggestions.
<andi->
regarding a language for nixops reimplementation: IMHO it requires proper Nix bindings as you want to be able to have feedback between infra provider (hetzner, aws, gcloud, …) into your eval and doing that with exec all the time is slow and not really efficient.
<andi->
Think about a network with N machines where machine n_i always know n_i-1's assigned name/ip address from the backend. IIRC you can do that with HCL.
<andi->
for almost anything that doesn't require that bootstrapping VMs on $provider is the thoughest part and everything else is just nix-copy-closure && ssh host $path/activate
<infinisil>
andi-: JSON should work well enough
<andi->
how does JSON help you with accessing the dependency graph?
<infinisil>
andi-: Wait, how do you mean that Nix should get feedback from providers?
<infinisil>
You mean that Nix does like a provider API call during evaluation (maybe with a Nix plugin)?
<cole-h>
I think andi was saying that whatever language is used to implement one of these nixops/nixus-likes would need a plugin ecosystem?
<cole-h>
Don't want to put words in their mouth, though.
<andi->
infinisil: not like that. I think you have to eval the entire network of machines to figure out which machines have dependencies on other machines. That might be a dependency because of string interpolation (e.g. machine a's ip in machine's b /etc/hosts via Nix & it's module system) or simply because you want to declare that you *need* resource ABC for server foo to be functional (or even able
<andi->
to boot). With NixOps we only have hardcoded orders IIRC.
<andi->
My idea would be to have a tight integration with Nix so you can eval the network and see which are the nodes without (missing) inputs from other nodes are. Those inputs would be coming from some sort of stateful source e.g. a local JSON file should do for most if not all situations. The process would repeat itself until there is a loop or no more inputs are required to deploy/eval the last
<andi->
machine in the network.
<infinisil>
andi-: Ah, so e.g. machine A needs to be provisioned, which after it is done returns its IP and public key. This then needs to be used for the evaluation of machine B which configures SSH access from machine A
<infinisil>
So you need a series of provisions/other stateful commands that each can emit some result, and feed this back into the eval for more machines
<andi->
yeah, I can see a bunch of scenarios where this is required, even if just for "ordering" when bootstrapping things. It might be less of an issue with just provisioning machines than with provisioning a mixture of machines, networks, managed services, …
<infinisil>
andi-: So I'm thinking, how about something like this: `nodes.a.inputs.ip.command = "cat /run/ip > result"; nodes.b.configuration.programs.ssh.knownHosts = "hosta ${builtins.readFile config.nodes.a.inputs}";`
<infinisil>
nodes.a.inputs.ip.command means that the given command runs on that machines, but its result (PWD) will be made available to the local evaluation
<infinisil>
And config.nodes.a.inputs.ip would refer to the resulting directory of that command
<andi->
that might be an issue but I'd rather not start adding local command execution as the preferred way of doing that.
<andi->
It would probably be better to only have that as a last resort.
<infinisil>
To figure out that b depends on a in this way, you first do a fake evaluation pointing `config.nodes.a.inputs.ip` to some derivation. You can then do closure inspection to see if there's any of these derivations in b's closure
<infinisil>
Although, the builtins.readFile probably does IFD, which might make it not appear in the closure
<gchristensen>
andi-: I agree, OR: introduce a derivation-like primitev which represents future computation
<gchristensen>
not sure what exactly that looks like
<infinisil>
The command could run fully sandboxed too though
<infinisil>
Ohhh, I see a use for lib.strings.addContextFrom
<andi->
infinisil: sounds like an interesting concept
<andi->
but yeah, basically what I was thinking of.
<andi->
now keep in mind that "provision" could also be already cached or "dirty" (aka you might have to delete/recreate a resource whenever it changes in a significant fashion)
<gchristensen>
it'd be nice to be able to build against something that solves a lot of the problems well already, like terraform
<andi->
yeah, I was thinking of using the terraform providers for communication at least.. You can get a JSON doc specifying their resources and parameters (haven't looked into details yet). You could probalby generate NixOS options on-the-fly from those.
<andi->
but that still leave us with the entire state tracking.
<abathur>
anyone aware of lucid big-picture discussion/documentation on the use-cases/purposes of the experimental nix dev-shell/develop, shell, and run commands, and how existing nix
<abathur>
-shell practices/use-cases should map over? I've seen the nix command pages on nixos.wiki, but I'm not sure I grok the vision
<andi->
Not sure if there are any docs.. I at least like that nix-shell will be a devShell since that somewhat helps grok that it isn't a "project shell" but more a shell to debug a derivation.
<jtojnar>
'dev-shell' is a deprecated alias for 'develop'
<jtojnar>
apparently
<andi->
ffs, it wasn't stable but is already deprecated and still mentioned? o.O
<abathur>
:]
<jtojnar>
not sure if the big picture is outside of Eelco's head