gchristensen changed the topic of #nixos-chat to: NixOS but much less topical || https://logs.nix.samueldr.com/nixos-chat
pie___ has quit [Ping timeout: 250 seconds]
drakonis has joined #nixos-chat
drakonis_ has quit [Ping timeout: 240 seconds]
drakonis1 has joined #nixos-chat
drakonis has quit [Quit: WeeChat 2.3]
drakonis1 is now known as drakonis
drakonis has quit [Quit: WeeChat 2.3]
pie___ has joined #nixos-chat
uranther has left #nixos-chat [#nixos-chat]
pie_ has quit [Ping timeout: 250 seconds]
<gchristensen> yea
<gchristensen> oops
drakonis has joined #nixos-chat
pie__ has joined #nixos-chat
pie___ has quit [Ping timeout: 250 seconds]
<jasongrossman> colemickens: Awesome!
* colemickens should try to package some things for Guix
<jasongrossman> If I were you I'd wait and see whether Guix survives. Or indeed gets better and replaced Nix (less likely maybe).
drakonis_ has joined #nixos-chat
drakonis1 has joined #nixos-chat
drakonis has quit [Ping timeout: 250 seconds]
<MichaelRaskin> I think Guix has survived for long enough, and with GNU approval and civodul having a stable situation (of applying it to research engineer job duties at INRIA) it is likely to survive for a long time.
drakonis_ has quit [Ping timeout: 250 seconds]
<jasongrossman> I hope so.
ninjin has quit [Ping timeout: 256 seconds]
endformationage has quit [Ping timeout: 250 seconds]
Zer000 has quit [Ping timeout: 245 seconds]
__monty__ has joined #nixos-chat
ninjin has joined #nixos-chat
__monty__ has quit [*.net *.split]
jD91mZM2 has quit [*.net *.split]
Arahael has quit [*.net *.split]
mdash has quit [*.net *.split]
ivegotasthma has quit [*.net *.split]
jD91mZM2 has joined #nixos-chat
Arahael has joined #nixos-chat
LnL has quit [Ping timeout: 255 seconds]
nckx has quit [Ping timeout: 255 seconds]
nckx has joined #nixos-chat
ivegotasthma has joined #nixos-chat
__monty__ has joined #nixos-chat
<clefru> steveeJ: I am just using xterm plain with xmonad. I switched to it because it was the only thing that I could configure with mouse support (that it is the terminal emitting mouse clicks to the program running inside)
clefru has quit [Quit: -> 5.0.4]
pie__ has quit [Ping timeout: 255 seconds]
__monty__ has quit [Quit: leaving]
<clever> gchristensen: i think i went too deep into the stack of libraries when debugging this issue lol: https://github.com/libuv/libuv/issues/2239
<{^_^}> libuv/libuv#2239 (by cleverca22, 3 minutes ago, open): tcp connect callback never being ran
<clever> gchristensen: it started out as an electron issue, and ive traced it all the way down to libuv and epoll
<gchristensen> oh my gosh....
<clever> gchristensen: i also found it rather imposible to just build libnode.so and swap it in with LD_LIBRARY_PATH
<clever> electron's node has too many custom patches, and its imposible to find a rev with the right combination of things to work
<clever> and the git submodule of node, within electron, for the version in question, also fails
<clever> and electron itself is built with a build system not packaged on nixpkgs!
<gchristensen> good grief, clever, this is amazing!
<clever> the next step, is to learn the internals of libuv, and then debug it, without debug symbols, lol
<clever> uv__platform_loop_init will open the epoll handle and store it in loop->backend_fd
<clever> uv__platform_invalidate_fd will UV__EPOLL_CTL_DEL to remove a handle
<clever> uv__io_check_fd will UV__EPOLL_CTL_ADD a handle, and if it DOES NOT exist, fail, and then immedaitely UV__EPOLL_CTL_DEL it, weird
<clever> uv__io_poll will either ADD or MOD things from a watcher_queue
<clever> uv__io_poll can also DEL if the watcher for an fd is NULL
<clever> uv__tcp_connect will create a new socket, call connect(), then call uv__req_init(loop, req) and then setup some things in req, and finnaly, uv__io_start
<etu> clever: Wow, good job
<clever> uv__io_start adds things to the watcher_queue, which uv__io_poll will then epoll_ADD
Myhlamaeus has quit [Quit: WeeChat 2.2]
<gchristensen> I love how often y'all make me feel like I have so much to learn.
<clever> i already have a work-around for this, just `setTimeout` with a 100ms delay
<clever> but, i must know why it fails!!
clefru has joined #nixos-chat
* clefru tries weechat now.
Myhlamaeus has joined #nixos-chat
<clever> so, if i wanted to reproduce this without node in the mix, i would need to call uv_tcp_connect myself...
__monty__ has joined #nixos-chat
jasongrossman has quit [Remote host closed the connection]
<clever> gchristensen: i must still be missing something with this bug, because i'm unable to reproduce it with minimal examples
drakonis has joined #nixos-chat
jtojnar has joined #nixos-chat
endformationage has joined #nixos-chat
pie_ has joined #nixos-chat
jtojnar has quit [Quit: jtojnar]
pie_ has quit [Remote host closed the connection]
pie_ has joined #nixos-chat
__monty__ has quit [Quit: leaving]
Myhlamaeus has quit [Ping timeout: 240 seconds]
<MichaelRaskin> Hm. Apparently Guix now has support for Software Heritage as fallback for source archives?
<makefu> MichaelRaskin: unfortunately they only mirror the "big" source code archives, not the ones which go down for us all the time
<MichaelRaskin> I think they expand over time…
<makefu> but they will never be able to archive unfree code due to licensing issues, right?
<MichaelRaskin> I guess some of it they would be allowed to archive and redistribute verbatim; on the other hand, if they want to cover all the discoverable free code first, I guess the question of unfree code will not come up too soon.
<gchristensen> https://github.com/justinwoo/easy-purescript-nix/pull/35/files this looks like pretty nice formatting
<samueldr> was that an automatic format?
<gchristensen> yea
<gchristensen> yeah it should
<samueldr> (sharing a relevant source link :))
<samueldr> yeah, because of your comment
<gchristensen> cool
<samueldr> might not be obvious to some how POSIX defines what a line is
<gchristensen> I would give up my control to this format...
<samueldr> curious how it handles set pattern functions
<gchristensen> good question
<samueldr> { x\n, y\n, z\n} I hope
<samueldr> (to go hand in hand with zimbatm's suggestion in the discourse post of never needing to edit more than one line to append)
<gchristensen> sounds verbose :)
<samueldr> it's more about the location of the comma
<gchristensen> ah
<samueldr> ideally formatting those would keep newlines, but also break at something like col 80 or 120
<gchristensen> +1
<samueldr> aw shucks; I knew it was about to snow, but seeing the accumulation on the ground hurts considering how it was clearing up nicely during the last two weeks
<gchristensen> aye ... I finally have less than 1' of snow in my front yard
<samueldr> urban environment makes this quite different, but there are still multiple meters tall mounds of snow, and meter-high snow banks everywhere, but at least the surfaces were getting uncoverd entirely
<gchristensen> nice
<gchristensen> not sure I have the energy to package it today, but having it running "dark" in ofborg could be cool
<samueldr> where's the formatted code?
<samueldr> sorry, formatter*
<samueldr> nice, the relatively new tree-sitter project
<gchristensen> tree-sitter looks very cool
<samueldr> yep, considering how it's relatively agnostic because of its bindings
<samueldr> I was hoping it'd be possible to use the new nix parser with the existing bash parser to somewhat allow linting the parts of derivations that are expected to be bash
<samueldr> (though in reality it doesn't need to be parsed with tree-sitter)
<gchristensen> yea
<samueldr> (as long as it's reconsistuted into shellcheck-worthy bits it should be checkable)
<samueldr> reconstituted*
<gchristensen> :o
<samueldr> though, now that I'm thinking about it
<samueldr> there must be a way to extract the bash code from a derivation? even though it won't have position information
<gchristensen> tsure
* samueldr should really learn and grok the final bits about how derivations actually work
<gchristensen> nix show-derivation something, its pretty simple
<gchristensen> there is a builder, and it takes args from env vars
<gchristensen> ok, probably leaving soon
johanot has joined #nixos-chat
<samueldr> ultra-wip, has no way to track expansions made within nix, but could still list shellcheck warnings for every phases
<samueldr> I wonder if it's even possible to track expansions within nix without tracing an eval
<samueldr> pre*/post* can be checked too
<samueldr> if a nix evaluator could somehow tag an evaluated string as a list of "from here to here it's _that_ string" and outpt the information this would probably be trivial to then map to the proper string
<samueldr> (you know, if someone does the hard part, the easy part becomes trivial :3)
<samueldr> though, this might be useful as a review tool, self-review mainly, until better integration can be cooked up, I'll try running it on things more before being confident in its powers
Myhlamaeus has joined #nixos-chat
<infinisil> We currently have 288 open PR's that update packages, marked them with the right label
johanot has quit [Quit: WeeChat 2.4]
jasongrossman has joined #nixos-chat
jasongrossman has quit [Read error: Connection reset by peer]
LnL has joined #nixos-chat
jasongrossman has joined #nixos-chat
Zer000 has joined #nixos-chat
biopandemic has joined #nixos-chat
endformationage has quit [Ping timeout: 246 seconds]
drakonis has quit [Ping timeout: 252 seconds]
drakonis1 has quit [Ping timeout: 250 seconds]
drakonis1 has joined #nixos-chat
drakonis has joined #nixos-chat
<samueldr> anyone with a cool ssh agent setup configured; I was (ab)using my pre-nixos ssh agent setup, and it's only because I'm used to the pain of using it that I haven't yet looked at making it better
<elvishjerricco> samueldr: What's there to set up? I just use `programs.ssh.agentTimeout` and `programs.ssh.startAgent`
<samueldr> just asking before even trying, in case anyone has some funny stuff to show off
<samueldr> there are different implementations, I know way back when I looked at keychain, think I even used it
<elvishjerricco> I tried to use gpg's ssh agent, but it was crap because of how ssh asks for passwords
<MichaelRaskin> I considered showing off, then understood that this conversation would quickly escalate to «So, OpenBSD or NetBSD?»
<elvishjerricco> If you're ssh'd into one machine, there's very little chance you'll be able to ssh into another machine in chain
<elvishjerricco> I know you can forward your agent but that isn't really a good solution
<MichaelRaskin> This chaining is properly done from the other side
<gchristensen> ssh ProxyCommand with `nc` to jump multiple jumps without -A
<MichaelRaskin> Exactly
<MichaelRaskin> gchistensen++
<MichaelRaskin> gchristensen++
<{^_^}> gchristensen's karma got increased to 95
<elvishjerricco> gchristensen: What does that do?
<gchristensen> one sec
<MichaelRaskin> You can run ssh from your machine with your ssh-agent, while using another machine as a relay for the traffic
<gchristensen> yea
<samueldr> MichaelRaskin: please show off
<gchristensen> ProxyCommand ssh -A gsc.io nc %h %p <- SSH runs this as a proxy, it SSH's to gsc.io and runs nc %h %p, with the target ssh server / port substituted in
<gchristensen> and then the process chain is local ssh -> (ssh gsc.io nc target port) -> target:port's ssh
<elvishjerricco> well for me the goal isn't "ssh to this machine through this machine". It's "I'm ssh'd into this machine, doing stuff, and want to ssh into another machine from this terminal"
<gchristensen> right
<MichaelRaskin> samueldr: well… ssh-agent — I just run ssh-agent, via some code in shell config that either connects to my existing one or starts a new one
<gchristensen> not sure there is a nice way to do that.
<samueldr> MichaelRaskin: that's my setup, but there's some disconnect with the graphical session and was wondering whether to fix it or try something else entirely
<elvishjerricco> it works great with the regular ssh-agent. It's just that the gpg agent can't figure out what tty you're on, and the ssh frontend doesn't know about the gpg key
<MichaelRaskin> That's why I said about excalation.
<samueldr> (it's probably a trivial think that "bitrotted" (not really) since I added that in)
<MichaelRaskin> I don't have graphical login
<samueldr> no X11 session?
<MichaelRaskin> Also I have a ton of SSH keys.
<MichaelRaskin> I have X11 session, I just start it after doing a text login
<gchristensen> me too, thankfully IdentityFile works
<samueldr> yeah, I was about to say "probably startx'd so it inherits everything)
<MichaelRaskin> So I have a script that takes a password ones and adds them all (ssh-add is not always happy to do it on its own)
<MichaelRaskin> Then I have Lisp functions to set up stuff like screen brightness and network configuration at various locations
<MichaelRaskin> This also asks for the master password
<MichaelRaskin> Also, the function that handles suspend also flushes the keys, including ssh-agent
<elvishjerricco> I wish I could get suspend to do luksSuspend for my root mount. There's a hacky thing for doing it on arch, but I couldn't get it working on NixOS and didn't really understand it
biopandemic has quit [Ping timeout: 250 seconds]
<infinisil> Ralith: Why ash over vulkano?
<infinisil> (let's keep #nixos topical)
<infinisil> Ralith: Ah, so vulkano isn't a safe wrapper around all of the vulkan API, but only a part of it?
<Ralith> vulkan is an extremely expressive, extremely unsafe API
<infinisil> Probably has to be, considering what it does
<infinisil> Although, I want to believe a safe wrapper can exist
<Ralith> it is impossible to safely wrap it without diverging severely from its conventional use pattern and/or exposing only a small subset of functionality
<Ralith> (in practice you get both)
<Ralith> if you want to use vulkan safely, what you're really asking for is a high-level rendering library
<infinisil> But wouldn't it be possible to have a vulkan-level library, but have compile-time checks for all known-to-be-invalid uses?
<infinisil> In my mind it makes sense that this should be possible
<infinisil> Although I haven't tried it, and it might be hard
<Ralith> sure, if you had a dependently typed programming language and an infinite amount of patience to embed complex systems of logic in your types and convince the compiler that they line up
<infinisil> Hehe yay, I am a fan of idris
<Ralith> I worked on idris several years ago
<infinisil> (but idris runtime cost is too high to be worth trying to make such a low level wrapper)
<infinisil> Neat
<Ralith> the lesson I took away was "we have no idea how to build maintainable software with this sort of tool"
<Ralith> in particular, sufficiently rich types aggressively undermine encapsulation boundaries
<Ralith> additionally, it is extremely difficult to prove correctness to the compiler in many cases
<infinisil> Isn't that always the case with formal proofs?
* Ralith shrug
<Ralith> it will certainly be the case for reasoning about complex parallel processing as goes on in a GPU
<Ralith> so at that point you are, once again, doing something that looks wildly different than writing raw vulkan
<infinisil> Formal proofs are really hard in general. In university I did some simple proofs, and even those were really hard
<Ralith> so you might as well use a high-level rendering library that provides a safe API to begin with
<Ralith> https://crates.io/crates/wgpu is an interesting example of such
<Ralith> early days though
<infinisil> Hmm yeah probably
<Ralith> as far as safety goes, I think it's generally most productive to focus on providing safe interfaces rather than strictly proving the correctness of absolutely everything
<Ralith> obviously use safe code where it's reasonably feasible, but if you're making your code more difficult to understand in pursuit of safety then you're probably not actually solving a problem
<infinisil> I think Idris is actually very good at keeping code easy to understand, while also providing safety
<Ralith> I don't think it's appreciably better than rust at that in practice
<infinisil> There's some good examples of this somewhere, about a stack implementation that won't let you pop when it's empty, enforced at compile time
<infinisil> And it looks just like a normal program
<Ralith> yes, there's lots of cute little examples
<Ralith> not a lot of real software :p
<infinisil> Hehe yeah
<infinisil> I haven't gone too deep into it to know a lot about that
<Ralith> anyway, raw vulkan is fun in a you'd-better-be-sure-your-memory-barriers-line-up sort of way
<Ralith> ash does a good job of exposing the unsafe APIs ergonomically
<Ralith> and unlike the alternatives, you'll never find yourself in a position where the thing you want to do isn't supported by the middleware
<infinisil> Cool, I'll probably give it a go when i try out vulkan + rust the next time
<Ralith> it can be quite a lot of work, so if you're okay with sticking to the beaten path it may not be the best option
<Ralith> personally I like doing weird stuff
<infinisil> I used to know a lot about Metal, Apple's low level graphics API. I think Vulkan is even more low-level, but having experience with Metal probably helps
<Ralith> certainly more applicable than OpenGL
<Ralith> I think my favorite pet issue that high level APIs tend to forget about is the principle of zero loading times
<Ralith> (at least modulo however long it takes you to compile your pipelines)
<Ralith> (but even that you can mostly do in a background thread!)