Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

staging: 2025-01-20 #30

Merged
merged 8 commits into from
Jan 20, 2025
Merged

staging: 2025-01-20 #30

merged 8 commits into from
Jan 20, 2025

Conversation

Frontear
Copy link
Owner

Happy New Years! This has been a late update due to being busy with real life commitments. I hope to slowly return to improving this and my other projects.

Things Done

  1. (77b55f7) Bump the flake.lock revisions, no breaking changes that required fixing.
  2. (88b1c16) Introduced inxi for system information and diagnostics. The application is wrapped with the majority of important tooling that allows it to work as well as possible. Further may be required and can be checked via inxi --recommends.
  3. (ccacbb4) Replace lib.pipe with the actual pipe operator experimental feature. This also brought a massive improvement to the cachix packages expression, which now leverages the flake-parts perSystem rather than iterating over all flake outputs directly.
  4. (cfbd396) Bump flake.lock and fix issues related to stdenv changes. Nixpkgs recently bumped GCC from 13 to 14. This broke a lot of packages since the stdenv on linux uses gcc by default. The simplest fix I had at the time was to simply override each package to a stdenv using gcc 13. Some of those pins are still there due to no fix on Nixpkgs and/or upstream. I will look at these more closely next release cycle.
  5. (6844093) Cleanup the entirety of the cachix nix expression through usage of a top-level attribute. This attribute, accessible at my.toplevel.cachix = [ ... ], can track all the important derivations, even if they are not directly part of a .package output. This is significantly more flexible but requires manual intervention to ensure nothing is missed. I did a fairly comprehensive sweep over the repository and picked out the things that should be cached, mainly the ones that have local overrides. This can be periodically checked again, perhaps with some automated way in the future.
  6. (1c52060) Bump flake.lock again, with no major breakages. If anything, this actually fixed some of the GCC 14 bump changes from the previous upgrade.
  7. (4657d3a) Remove Lix and replace it with bleeding-edge Nix. I won't go into much detail especially because I have never actively participated in the Lix community, and due to my busyness, I have not been very active in the Nix community either. Suffice it to say that I do not want to contribute further to dividing the Nix community. I really love what we have and it's extremely disheartening to see everyone tearing each other apart over their differences. Don't get me wrong, I have extremely strong opinions against Eelco's behaviour, DetSys, Anduril, and the rest, but I also believe that there are truly better ways to move forward than just to "fork and disconnect" (to put it extremely tersely).
  8. (44c1976) Small random fixes across various nitpicks and modules. The declaration around changing the Nix daemon's TMPDIR was moved into the nix module itself, the recommendation of trying to setup a writeback device for zram was removed since it would functionally have no benefit (still uses the same amount of RAM, just on a difference vdev), and finally I am deciding to use rec for an extremely small systemd-boot module block, simply because I don't think traversing config for it is necessary. I don't really want to have extremely anti-* opinions on the usage of with and rec, like some others, since they are valuable in controlled and small nix expressions.

I didn't add everything that I could have added from `inxi --recommends`, mainly because I don't think I needed some of the few I excluded. Overall I've grabbed the things I needed though, or at least the things I think I needed.
o7. It served us so well for so long, but thankfully now we have an actual pipe operator that does the same thing but with slightly more flexibility.

Alongside this treewide change is an improvement to the cleanliness of the cachix packages. Overall I'm not terribly happy with this approach _still_, especially since it doesn't really properly consider what derivations are actually needed and which aren't, instead it just blindly grabs what _might_ be useful. This isn't the best approach and I'd like to deal with it properly instead. One idea is to maybe have a "toplevel" attribute in the modules that will contain all relevant packages. The flake attributes for cachix can then leverage this module option to expose the useful things only.
Seems that while I was gone Nixpkgs bumped to GCC 14. This has seemingly broken quite a few of the older archive utilities. Patool also broke, though I don't think it's related to GCC 14. The simplest fix was to rollback the stdenv for the broken archive utilities, and to pin a newer version of patool that was merged onto master but isn't yet in unstable. Once it rolls in I will remove the pin.
This implements the desired goal of #28. There is now a `config.my.toplevel.cachix` attribute that contains any derivations that need to be built. This is done manually and it's very possible I will miss some things of course. I've already gone through everything once by checking for derivations, `symlinkJoin`-s, `mkDerivation`-s, and all fetchers. I'm not too sure if there's a way to iteratively test things I miss, but for now I think I've caught everything.
Some `patool` related fixes landed, including build failures for 2 of the derivations I use, so we have reverted those. Furthermore, pulseaudio related module options got moved from `hardware.pulseaudio` to `services.pulseaudio`.
…gs (and add some comments)

Lix is falling behind the normal releases of Nix, and I don't have the sufficient processing power to build it on my system. Furthermore, I would rather support the development of Nix directly, rather than loosely following behind Lix. Lastly, I do not appreciate some of the Lix community members and their attitude towards the Nix project and ecosystem. We all have our differences and while I'm also very disappointed with the state of affairs in the community, I do not think that an extremely hostile and rude attitude is the correct way ahead, and especially by diving the community into two subgroups. Nonetheless, that's an issue to rant about elsewhere.
Moved the `/var/tmp` configuration for the Nix daemon from the `/tmp` module to the nix module. Removed the desire for a zram writeback device since it would have no benefit on a tmpfs system anyways, unless I dedicated a drive to it. Lastly, changed the systemd-boot module to use `rec` in an isolated block.
@Frontear Frontear merged commit 44c1976 into main Jan 20, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant