she/they

  • 0 Posts
  • 44 Comments
Joined 3 years ago
cake
Cake day: July 1st, 2023

help-circle

  • I feel like it’s actually not that hard… if you can tell what advice is bad and shouldn’t be followed. Which I realize is a major catch-22 for new users.

    My honest advice on Neovim (for everyone) is to do this:

    • environment.systemPackages = [ pkgs.neovim ];
    • Configure Neovim as you usually would (hand-written init.lua, Lazyvim installer, whatever)
    • Ignore/Disable Meson and use shell.nix to get language servers and formatters instead (alternatively: enable nix-ld for Meson or Mise)
    • Completely ignore all the wrapper garbage like programs.neovim, nixvim, nvf, nixCats, and all the others

    The last one is important. You can try all you want to make the garbage work and it eventually will, at least kinda, but IMHO the very idea of what they’re trying to do is bad, ultimately making them a colossal waste of time.

    I have less strong but overall similar feelings regarding Home Manager, those newly hyped wrapper managers and libraries, the “Dendritic Pattern”, etc. The NixOS community loves coming up with novel ways to shoot themselves in the foot.




  • I’m not sure that description makes a lot of sense. Nixpkgs/NixOS is a fairly large community project. Some of the contributors are certainly anti-woke (although quite a few of those were banned from official spaces a while back), and some are MIC employees (Anduril is somewhat infamous with a seat on the so-called “steering council”). That’s not especially unusual by itself, and you can definitely do worse than “one guy is a MIC employee” (just ask the GNU or suckless folks). What is unusual is the very public meltdowns that happened surrounding it, including the moderation team resigning. The community fortunately seems to have survived all of that though.

    Anyone curious can read through the most recently active governance related thread and the rest of the discourse meta category. Outside of that the subreddit had an issue with Lunduke spam at the time, but this has since died down (and the posts were removed). I don’t frequent the Matrix (official) or Discord (unofficial) so maybe those are really bad and I don’t know about it, but from my experience I honestly have little to complain about.



  • This module is actually a bit of a pet peeve of mine and a big reason I soured on Home Manager in general…

    You inevitably end up writing chimera configurations like this:

    # home.nix
    programs.sway = {
      enable = true;
      
      # not supported by module - need to use escape hatch
      # good luck getting your editor to syntax highlight this snippet btw
      extraConfig = /* swayconfig */ ''
        bindgesture swipe:right workspace prev
        bindgesture swipe:left workspace next
      '';
    };
    
    programs.waybar = {
      enable = true:
    
      # can't do that in Nix
      style = /* css */ ''
        window#waybar {
          background: #16191C;
          color: #AAB2BF;
        }
      '';
    };
    
    # configuration.nix
    # need to enable Sway a second time so the display manager can see it
    # this may also install a second Sway if you fuck up your HM setup
    programs.sway.enable = true;
    

    and in exchange for this you get:

    • 30s+ iteration times for basic changes like keybinds
    • No ability to copy paste config snippets from READMEs/Wikis (unless you use home.file/extraConfig escape hatches)
    • No ability to edit configuration in scripts (breaks a lot of theming functionality in “shells” like DMS, Noctalia, etc.)
    • More ways to write configs that look right but don’t quite work or just do dumb things (extra Nixpkgs imports, duplicated packages, WMs that aren’t visible to the DM, etc.)

    Alternatively you could just use a dotfile manager like rcm or stow or chezmoi like everyone not on NixOS+HM and not have to deal with any of this.


  • Do you have some specific threads in mind? Maybe I’m lucky to never click on the bad ones but my experience is that nobody is more cynical regarding Nix/NixOS jank than the long time NixOS users. You might not always get the answer you want, because it is very jank and doing some things will get you into trouble. But people pointing that out isn’t the same thing as gaslighting.

    Guix SD might be worth a look, it seems to be just straight up better in many technical regards. It has no flakes, comprehensive documentation and a blessed way to manage user homes. At least as long as you don’t really need WiFi of course…


  • These… don’t even remotely solve the same problem?

    • (1) AshOS: Package managers are fragile, and partial or broken updates can break systems (up to not booting at all).
    • (2) Nix: Package managers need to solve a SAT problem (which may be impossible) to resolve dependencies.
    • (3) Distrobox: Containerized programs are annoying to work with.
    • (4) Homebrew: Your system doesn’t have a package manager (e.g. MacOS).

    Problems (1) and (2) (arguably also (3)) are quite difficult and don’t have trivial solutions. Fedora Silverblue solves (1) but has to jettison a reasonable package manager, creating problem (4) and the demand for Linuxbrew. NixOS solves (1) and (2) while avoiding (4) but at the cost of recompiling the world and breaking SELinux/AppArmor.

    I wouldn’t consider running AshOS personally (even ignoring the abandoned status) as any package install or update requires a reboot (a variation of (4)), so the UX doesn’t appear to meaningfully different from just running Silverblue or MicroOS. I have doubts that the design space here has been completely explored, but you have to look back at the mediocre past attempts to understand why they were mediocre.





  • My understanding is that most of this is down to ARM’s (relative) lack of standardization. Consumer ARM SoCs don’t even have ACPI, so you aren’t even guaranteed to be able to do things like powering off the system. Qualcomm pretty much has to add some minimum support for their SoCs to the kernel because most of their consumers will want to get Android working on them, but that doesn’t mean they’ll do more than they have to for that.

    There’s a reason you can install Linux on any x86 PC and it will mostly work, but you can’t install an ARM Linux on a phone. Even Android forks like Lineage don’t support all Android phones, even though they’re shipping basically the same thing the manufacturers are.



  • This is by no means complete, but the features that I value would be:

    • <Tab> cycles though completions as it should instead of duplicating the prompt.
    • Completions also show help text (if there’s a provider for one). For example on git <Tab> it shows a short message describing what the command does. JJ goes further: jj diff -r <Tab> shows part of the commit message for the offered commits.
    • There are just more completions than in any other shell I know. Aside from JJ the new Nix CLI also has great Fish completions and can dynamically complete flake outputs like package names.
    • Entire commands can be history completed with <C-E> or <Right>. This completion is also directory-aware and can usually avoid suggesting commands with paths to files that don’t exist. In practice I find that it’s really good at suggesting the command I actually want to run, to the point that I rarely invoke FZF anymore.
    • Abbreviations are in most cases better aliases since they do the same thing but don’t obscure what you’re actually running.
    • No word splitting when expanding variables, because it’s never what you intended.
    • Globs that fail to match anything are errors instead of silently doing the wrong thing.
    • Control structures are a bit nicer (but that is subjective).

    You can get most of these with liberal use of shell options, installing blesh, or alternatively installing zsh with a bunch of plugins, but Fish just has all of them out of the box. You don’t even need bash-completions.

    how hard is it to transition?

    It has a reputation of being very difficult from the past when it didn’t have &&/|| but I think today plenty of Linux users would not even notice. The most notable remaining differences are setting variables (requires the set builtin unless used to modify the environment for a single command), control structures (irrelevant in interactive use) and lack of !! (but you can make an abbreviation to bring it back).



  • Not sure how you’re arriving at that low of a difference unless the US pricing is wildly better than in the EU.

    If I follow the most obvious user flow on the Framework website (except for removing components that aren’t required) then I end up with a preorder for a Framework 16 with a Ryzen AI 7 350, 8 GB of RAM and no storage for 1,724 €. I can get the same CPU in a Gigabyte Aero X16 with the same CPU and 32GB RAM and storage and an RTX 5060 on top for 1,129 €. If I try to configure the Framework to be actually competitive with that model I end up at 2,384 €. It’s not just the Ryzen AI model that’s like this either, I did the same comparison with an older Ryzen CPU and it was in the same ballpark.

    I’m sure the Framework is nicer in many aspects that don’t show up on data sheets like chassis finish and build quality (and of course Linux support) but that’s a lot of money.



  • Hardware development is just extremely difficult. The smallest company that I’m aware of that has their own laptop design is Framework, but their laptops are also about twice as expensive as equivalent models from other brands.

    In addition, since basically all modern computer manufacturing has to go through Taiwan due to TSMC’s near-monopoly on competitive semiconductors, it makes sense to outsource design to Taiwan too. They already have the industry for it, and there’s no reason to have a random American company add their own profit margin to the price for no reason.