@picnoir@social.alternativebit.fr
@picnoir@social.alternativebit.fr avatar

picnoir

@picnoir@social.alternativebit.fr

Rural Hacker, he/him

Was NinjaTrappeur

Free Software/NixOS/Guix/Haskell/Rust/C | Cycling/Bird Spotting/Music/Trains

https://alternativebit.fr

Boost != Endorsement

This profile is from a federated server and may be incomplete. Browse more on the original instance.

picnoir, to random
@picnoir@social.alternativebit.fr avatar

Guix day 1:

I spent most of the day getting comfortable with Guile and the basics of Guix services.

Followed the "perfect hacking setup" manual section (I'm lucky, I'm using Emacs). Geiser is okay-ish, but fails a lot of times (can't jump to definition in g-expressions for instance). Overall, the builtin yasnippets, and paredit are good and useful, geiser fails to jump to definition too many times to be really useful.

I have a fully functional sway/pipewire/xdg-desktop-portal setup. Costed me quite some headaches.

Guix home is super nice and definitely more integrated than home-manager.

I migrated ~60% of my laptop NixOS configuration. The remaining 40% are going to be pretty painful to migrate, Guix is currently lacking some features to do so (writers, secret management). I'll probably have to write the missing features to continue the migration, but I'm not comfortable enough with Guile/Guix to do so yet.

I packaged my first package (power-profiles-daemon) and wrote a service for that.

I really like the Guix service system. A lot more than the NixOS module system.

Tomorrow, I'll have to face my nemesis: mailing-list-powered patches. I'm 6 commits ahead of my Guix channel, it's time to reduce the stack and start cleaning/upstreaming the changes.

I'm not in love with Guile yet. Part of it probably comes from my inexperience, using it is still painful and slows me down a lot.

I hit a massive roadblock at some point: the guile error message was lying to me. I had a module with an error in it, and instead of throwing an error message, Guile was lying to me and telling me I was not loading this module, and giving me a hint explaining me how to load the module. But, I was already loading the module!! Gazlighted by the interpreter :D

Took me a good 2h before realizing the interpreter was lying to me. I need to find a minimal reproducer to send to the email list.

Massive kudos to @ekaitz_zarraga who helped me in the process :)

picnoir,
@picnoir@social.alternativebit.fr avatar

@abcdw @ekaitz_zarraga Nice! I'll give it a try tomorrow. Thanks!

picnoir,
@picnoir@social.alternativebit.fr avatar

@ekaitz_zarraga @Profpatsch I gave up on minimalism wrt. editors.

Adopting LSPs/more automation has been a true force multiplier for me.

Sure, you don't need them, a plain editor and ripgrep are good enough to move around a codebase.

However, a nice jump-to-definition and show-documentation-for-symbol-under-the-cursor are true game-changers. It makes everything more self-discoverable and reduce the mental load. It helps me focus on what really matters.

picnoir,
@picnoir@social.alternativebit.fr avatar

@mrak0 @ekaitz_zarraga Nice! That's exactly what I was looking for, thanks a lot!

Cc @mic92 : sops-guix is actually already a thing.

picnoir, to random
@picnoir@social.alternativebit.fr avatar

> The assertion that Determinate Systems “owns” Nix or seeks to exert outsized influence over the project, the community, or the foundation is patently false: I am the only member of the Nix team who works for Determinate Systems.

Posted on the Detsys website, later pointing to the Detsys CoC and Detsys-controlled Discord.

The guy did not even posted that on a community-owned medium and went full corporate.

🤦

I mostly gave Eelco, Graham and Detsys the benefit of the doubt so far.

I was wrong. Not being an insider, looking how they communicate, it really seems like they are definitely trying to fork the community project and release something on their own…

picnoir, to random
@picnoir@social.alternativebit.fr avatar

Holy shit https://www.openwall.com/lists/oss-security/2024/03/29/4

Guix is bootstrapping far enough not to be affected (as far as I understand the issue). Hat off to the Guix community on that one!

This might be the biggest real world WOW effect for Gnu MES and Guix wrt. real word supply chain attack mitigations via full source bootstrapping.

picnoir,
@picnoir@social.alternativebit.fr avatar

@joeyh Bootstrapping helps because you now have to backdoor the source code.

Granted, in this particular project, the person who cut out the release (who might not necessarily be the attacker) was pushing code to master without anybody publicly reviewing it. So if we roleplay a bit here, we could assume the attacker could also have been injecting code without getting too much eyes on it.

However, it seems to me the sole fact the attacker preferred to compromise the binary distribution while leaving the source code pristine is a clear indicator that source-level backdoor is harder to roll out than binary-level backdoor without anybody noticing.

Overall, yes, source boostrapping ain't a silver bullet. But it clearly helps in situation like this.

picnoir,
@picnoir@social.alternativebit.fr avatar

@joeyh You're absolutely right.

I mis-understood the email. Thanks for pointing that out and correcting me.

Damn, I'm spreading mis-information here.Not sure if I should delete or amend the original message 🤔

picnoir, to random
@picnoir@social.alternativebit.fr avatar

Whoa, getting a fully functional LSP for the Nix codebase is now super trivial.

This is a game changer for me. Navigating the Nix codebase is soooo much easier with a LSP-aware editor!

Massive kudos to Andrea Bedini who introduced the setup via https://github.com/NixOS/nix/pull/10269

PS: Emacs users, you want to set (setq lsp-clients-clangd-executable "clangd") to force lsp-mode to retrieve clangd from $PATH and prevent the plugin from downloading a random clangd from GitHub.

picnoir, to random
@picnoir@social.alternativebit.fr avatar

Nerd trivia of the day: ever wondered why the dd CLI UI is so much different from the rest of gnu coreutils tools?

No hyphens before operands, weird "=" symbol all over the place.

Turns out this UI was originally meant to be a prank: it uses the IBM JCL[1] notation. A language used on systems which happened to be shipped with a similar tool.

50 years later, the tool is still here, the prank is still here, but nobody gets it anymore: it just became a weird UX annoyance. 😅

Source: https://web.archive.org/web/20181213051044/https://www.catb.org/jargon/html/D/dd.html

More infos and trivia on the terrific wikipedia page: https://en.wikipedia.org/wiki/Dd_(Unix)

[1] https://en.wikipedia.org/wiki/Job_Control_Language

picnoir, to random
@picnoir@social.alternativebit.fr avatar

Just received my new headphones! A pair of Beyerdynamics DT-770.

I've been happily using the same beaten up mdr-7506 for the last 8 years.

I wanted something with a better passive noise reduction for a while: as much as I love the neutral sound of the mdr-7506, it's terrible when it comes to reduce the surrounding noise/music. That's a somehow big issue when your partner is a music performer and need to practice a lot 🫢

So far I'm happy, the passive noise reduction is much better! Worth the money :)

The build quality seems rather good. The lower end of the spectrum sounds a bit more "full". It does not completely obliterate the mids, so I guess it's fine :)

picnoir, to random
@picnoir@social.alternativebit.fr avatar

https://github.com/NixOS/nixpkgs/pull/254405 has been merged.

From now on, the Nixpkgs flake registry key points to the Nixpkgs pin used by your NixOS host.

In practical terms, it means you'll no longer have to re-download the whole universe for each nix shell call on NixOS anymore.

FINALLY!

Massive kudos to the author and the people who stepped up to fix this disastrous status-quo.

picnoir, to random
@picnoir@social.alternativebit.fr avatar

Seeing a FOSS community member I used to admire spreading fake news about the said FOSS community on twitter is wild and really saddening. I'm feeling betrayed.

I guess this one is on me, though: don't idolize people you respect a lot. You might get disappointed down the road.

Or maybe I should just be more picky when choosing my role models.

clacke, to random

Sweden would have been at 6% if it weren't for the 20% of us who like to brag about how culturally superior we are because we're not culturally chauvinistic.

statista.com/chart/15942/our-p…

Survey (linked from statista): pewforum.org/2018/10/29/easter…

picnoir,
@picnoir@social.alternativebit.fr avatar

@clacke Woah, I did not expect such a low figure for France.

Also, WTF Greece, ~90%, that's nuts! :D

picnoir, to random
@picnoir@social.alternativebit.fr avatar

WTF eurostar!

Yesterday (Monday), I bought a train ticket to attend FOSDEM, Paris<->Brussels, 1h, 152€. That's pretty steep, it's more than what I pay for the 5h TGV trip from my place to Paris. But why not.

My little brother just bought the same trip today (Tuesday), same train, same ticket, 60€ both ways. W-T-F.

The tickets are refundable for no fee, I canceled yesterday's ticket, bought a new one, guess what. 58€, 1 day later, almost 1/3 of the original price 😱

Looks like the EU train ticketing system is getting as sick as the airplane one. Not a smart move.

picnoir, to random
@picnoir@social.alternativebit.fr avatar

I was a bit confused about how Guix generates the derivations ATerms. This pipeline has more abstraction layers than its Nix counterpart.

@ekaitz_zarraga recommended me the "Dissecting Guix part 1" blog post. This post (and the whole serie) is marvelous.

https://guix.gnu.org/en/blog/2023/dissecting-guix-part-1-derivations/

Not only it shows you the full derivation pipeline in a very concrete way*, but it also sprinkles some very useful Guile debugging/exploration tips. It answers your immediate questions, but also gives you some tools you'll definitely need (but you don't know yet you need them!) for your future code spelunking sessions.

This is some top-notch technical writing. Massive kudos to the author!

*EDIT: granted, it does not discuss the "bag" abstraction used by some major build systems. That's probably the only "major" thing lacking to this blog post to understand the full build system -> ATerm pipeline.

picnoir, to random
@picnoir@social.alternativebit.fr avatar

TIL, emacs can dump its memory at any moment to a file to load it later on.

It's mostly a trick used to speedup the boot process: at build time, c emacs loads all the core elisp files, then dumps the heap state to a file. The subsequent emacs boots don't have to parse/load all these elisp files anymore and load the dump instead.

It used to rely on "unexec", a now removed glibc function. Nowadays, it uses the "portable dumper"1. Implementation's here2.

Pretty cool!

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • kavyap
  • DreamBathrooms
  • cisconetworking
  • magazineikmin
  • InstantRegret
  • everett
  • thenastyranch
  • Youngstown
  • rosin
  • slotface
  • khanakhh
  • Durango
  • mdbf
  • JUstTest
  • ethstaker
  • anitta
  • modclub
  • osvaldo12
  • normalnudes
  • ngwrru68w68
  • GTA5RPClips
  • tacticalgear
  • provamag3
  • tester
  • Leos
  • cubers
  • lostlight
  • All magazines