Interested in Linux, FOSS, data storage systems, unfucking our society and a bit of gaming.

I help maintain Nixpkgs. (Probably won’t be active much anymore.)

  • 18 Posts
Joined 4 years ago
Cake day: June 25th, 2020


  • It’s a central server (that you could actually self-host publicly if you wanted to) whose purpose it is to facilitate P2P connections between your devices.

    If you were outside your home network and wanted to connect to your server from your laptop, both devices would be connected to the TS server independently. When attempting to send IP packets between the devices, the initiating device (i.e. your laptop) would establish a direct wireguard tunnel to the receiving device. This process is managed by the individual devices while the central TS service merely facilitates communication between the devices for the purpose of establishing this connection.

  • Good luck packaging new stuff

    Packaging is generally hard on any distro.

    Compared to a traditional distro, the packaging difficulty distribution is quite skewed with Nix though as packages that follow common conventions are quite a lot easier to package due to the abstractions Nixpkgs has built for said conventions while some packages are near impossible to package due to the unique constraints Nix (rightfully) enforces.

    good luck creating new options

    Creating options is really simple actually. Had I known you could do that earlier, I would have done so when I was starting out.

    Creating good options APIs is an art to be mastered but you don’t need to do that to get something going.

    good luck cross-compiling

    Have you ever tried cross-compiling on a traditional distro? Cross-compiling using Nixpkgs is quite easy in comparison.

    actually good luck understanding how to configure existing packages

    Yeah, no way to do so other than to read the source.

    It’s usually quite understandable without knowing the exact details though; just look at the function arguments.

    Also beats having no option to configure packages at all. Good luck slightly modifying an Arch package. It has no abstractions for this whatsoever; you have to copy and edit the source. Oh and you need to keep it up to date yourself too.

    Gentoo-like standardised flags would be great and are being worked on.

    good luck getting any kind of PR merged without the say-so of a chosen few

    Hi, one of the “chosen few” here: That’s a security feature.

    Not a particularly good one, mind you, but a security feature nonetheless.

    There’s also now a merge bot now running in the wild allowing maintainers of packages to merge automatic updates on their maintained packages though which alleviates this a bit.

    have fun understanding why some random package is being installed and/or compiled when you switch to a new configuration.

    It can be mysterious sometimes but once you know the tools, you can directly introspect the dependency tree that is core to the concept of Nix and figure out exactly what’s happening.

    I’m not aware of the existence of any such tools in traditional distros though. What do you do on i.e. Arch if your hourly shot of -Syu goes off and fetches some package you’ve never seen before due to an update to some other package? Manually look at PKGBUILDs?

  • Atemu@lemmy.mltoLinux@lemmy.mlThoughts on CachyOS?
    3 months ago

    v3 is worth it though

    [citation needed]

    Sometimes the improvements are not apparent by normal benchmarks, but would have an overall impact - for instance, if you use filesystem compression, with the optimisations it means you now have lower I/O latency, and so on.

    Those would show up in any benchmark that is sensitive to I/O latency.

    Also, again, [citation needed] that march optimisations measurably lower I/O latency for compressed I/O. For that to happen it is a necessary condition that compression is a significant component in I/O latency to begin with. If 99% of the time was spent waiting for the device to write the data, optimising the 1% of time spent on compression by even as much as 20% would not gain you anything of significance. This is obviously an exaggerated example but, given how absolutely dog slow most I/O devices are compared to how fast CPUs are these days, not entirely unrealistic.

    Generally, the effect of such esoteric “optimisations” is so small that the length of your unix username has a greater effect on real-world performance. I wish I was kidding.
    You have to account for a lot of variables and measurement biases if you want to make factual claims about them. You can observe performance differences on the order of 5-10% just due to a slight memory layout changes with different compile flags, without any actual performance improvement due to the change in code generation.

    That’s not my opinion, that’s rather well established fact. Read here:

    So far, I have yet to see data that shows a significant performance increase from march optimisations which either controlled for the measurement bias or showed an effect that couldn’t be explained by measurement bias alone.

    There might be an improvement and my personal hypothesis is that there is at least a small one but, so far, we don’t actually know.

    More importantly, if you’re a laptop user, this could mean better battery life since using more efficient instructions, so certain stuff that might’ve taken 4 CPU cycles could be done in 2 etc.

    The more realistic case is that an execution that would have taken 4 CPU cycles on average would then take 3.9 CPU cycles.

    I don’t have data on how power scales with varying cycles/task at a constant task/time but I doubt it’s linear, especially with all the complexities surrounding speculative execution.

    In my own experience on both my Zen 2 and Zen 4 machines, v3/v4 packages made a visible difference.

    “visible” in what way? March optimisations are hardly visible in controlled synthetic tests…

    It really doesn’t make sense that you’re spending so much money buying a fancy CPU, but not making use of half of its features…

    These features cater towards specialised workloads, not general purpose computing.

    Applications which facilitate such specialised workloads and are performance-critical usually have hand-made assembly for the critical paths where these specialised instructions can make a difference. Generic compiler optimisations will do precisely nothing to improve performance in any way in that case.

    I’d worry more about your applications not making any use of all the cores you’ve paid good money for. Spoiler alert: Compiler optimisations don’t help with that problem one bit.

  • I’d define “bloat” as functionality (as in: program code) present on my system that I cannot imagine ever needing to use.

    There will never be a system that is perfectly tailored to my needs because there will always be some piece of functional code that I have no intention of using. Therefore, any system is “bloated” and it’s a question to which degree it is “bloated”.

    The degree depends on which kind of resources the “bloat” uses and how much of it. The more significant the resource usage, the more significant the effect of the “bloat”. The kind of resource is used defines how critical some amount of usage is. 5% Power, CPU, IO, RAM or disk usage have varying degrees of criticality for instance.

    Some examples:

    This system has a calendar app installed by default. I don’t use it, so it’s certainly bloat but I also don’t care because it’s just a few megs on disk at worst and that doesn’t hurt me in any way.

    Firefox frequently uses most of my RAM and >1% CPU util at “idle” but it’s a useful application that I use all the time, so it’s not bloat.

    The most critical resource usage of systemd (pid1) on my system is RAM which is <0.1%. It provides tonnes of essential features required on a modern system and therefore not even worth thinking about when it comes to bloat.

    I just noticed that mbrola voices sneaked into my closure again which is like 700MiB of voice synthesis data for many languages that I don’t have a need for. Quite a lot of storage for something I don’t ever need. This is significant bloat. It appears Firefox is drawing it in but it looks like that can be disabled via an override, so I’ll do that right now.