Distro agnostic packages like flatpaks and appimages have become extremely popular over the past few years, yet they seem to get a lot of dirt thrown on them because they are super bloated (since they bring all their dependencies with them).

NixPkgs are also distro agnostic, but they are about as light as regular system packages (.deb/.rpm/.PKG) all the while having an impressive 80 000 packages in their repos.

I don’t get why more people aren’t using them, sure they do need some tweaking but so do flatpaks, my main theory is that there are no graphical installer for them and the CLI installer is lacking (no progress bar, no ETA, strange syntax) I’m also scared that there is a downside to them I dont know about.

    • root@precious.net
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      Of the future? They’re a duplicate of what Apple was doing with software as far back as the mid 90s.

      Every ounce of performance we squeeze out of our hardware is replaced with pounds of bloat like this.

      It’s fine for a utility or something you’ll hardly ever need to use, but running every day software like this is a complete waste.

        • root@precious.net
          link
          fedilink
          arrow-up
          0
          ·
          9 months ago

          Having every application load their own version of a library into memory is bloat.

          • iopq@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            They don’t, they share the same library version if they were built against it.

            Lots of software won’t even work if the library version is different, so it’s a benefit, not a downside

          • AgileLizard@lemmy.ml
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            The garbage collector removes all packages/derivations that are not (transitively) used any more. So it is similar to apt-get autoremove. I don’t think that classifies as bloat. You could just regularly run the garbage collector.

          • Shareni@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            Rollback, reproducibility, safety.

            Would you call btrfs snapshots or some other backup system bloat?

            It actually serves an important purpose for the user. Meanwhile apt is leaving around random libraries and man pages you need to autoremove.

      • excitingburp@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        What do you mean? Apple doesn’t have a package manager at all. Brew is a fucking mess that takes ages to do anything.

  • PlexSheep@feddit.de
    link
    fedilink
    arrow-up
    0
    ·
    9 months ago

    For me personally, I just haven’t taken any steps into the nix environment. Seems rather complex, setting up those nix files and stuff.

    I use Debian on servers and LMDE on my PC, most things I need are in the Debian repos and for other cases I get by pretty good with appimage s and flatpaks. Installing is just a simple command and me happy.

    Nixpkgs are probably easy too, I assume. I know a lot of people really like nix, but the effort required to start seems significant to me, especially when we have other methods that just work.

    • GHOSCHT@feddit.de
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      Nixpkgs can be used without knowing anything about nix. You can install almost anything by just running e.g.:

      nix-shell -p cowsay
      

      The requirement for that is the nix package manager but that should be easy to install. But yeah getting into Nixos with flakes and all that stuff can be hard.

      • PlexSheep@feddit.de
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        So I can in theory just do apt install nix-shell (or whatever), do something like nix-shell -p curl and then curl just works?

        • GHOSCHT@feddit.de
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          9 months ago

          Pretty much, yes. Although most of the guides install nix via curl. You can find the recommended installation procedure on the official nix website.

          What I’m right now also realizing is that i switched things up. nix-shell -p curl creates a shell with the curl command temporarily available. If you exit this shell it’s gone. I use this all the time if if i don’t want to pollute my system with programs I only use once. If you want to permanently install something you have to use nix-env -iA nixpkgs.curl. But don’t take my words for granted, since I have never tested this on a non-nixos machine.

          Note: You can also see how to install something by clicking on the package title in the nixpkgs repo.

    • Shareni@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      the effort required to start seems significant to me, especially when we have other methods that just work.

      It’s just a list of packages, and an optional flake to control the repositories (stable/unstable) and add packages from outside of the official ones.

      To update everything nix related I just run:

      cd ~/dotfiles/nix/ && nix flake update && home-manager switch

      I’ve only included a few packages from the actual list, but you can see how simple everything is. It just took me days to get to that point because the docs are really bad.

      most things I need are in the Debian repos and for other cases I get by pretty good with appimage s and flatpaks.

      I use it to freshen up Debian packages. For example Debian docker is like 4 major versions behind the nix one, and it stopped being supported months ago.

      Also, now that I’ve created the list from above, I can just run a single line to reinstall everything I need.

    • Matej@matejc.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      9 months ago

      Dont know where you are getting this. Nixpkgs is a breeze to manage compared to apt repo. Also it does not matter if you are on nixos or non-nixos system, the only difference is that nix does not take care of services on its own. What kind of docs do you miss? Nix has its own extensive nix docs page, and for packaging you also have nixpkgs documentation page - also official and not much related to nixos itself. Also nix has quite good man pages.

      • neo (he/him)@lemmy.comfysnug.space
        link
        fedilink
        English
        arrow-up
        0
        ·
        9 months ago

        I’m not saying it’s not easy, I’m saying there’s not really any documentation about it.

        I had to figure out for myself that I needed to do symlinks to get menu entries for nix packages

        • Shareni@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          9 months ago

          I had to figure out for myself that I needed to do symlinks to get menu entries for nix packages

          Home-manager: I didn’t have to touch anything to get PATH and XDG working, it’s all automated.

          • moonpiedumplings@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            But you don’t get hardware graphics acceleration unless you use nixgl, and if you want to integrate it into home manager that breaks XDG entries, which I never figured out.

            Also, you are illustrating the point of the commenter you replied to: nowhere on the official docs does it recommend home manager for non nixos systems, at least not when i was scrolling through them. I learned about home manager, nixgl, and the like via forum posts, either by finding them via a web search, or by asking myself.

            For example, I only found code to integrate home manager with nixgl on the nixos discourse.

            • Shareni@programming.dev
              link
              fedilink
              arrow-up
              0
              ·
              9 months ago

              Nix docs are hot garbage, but I’m pretty sure it tells you to reboot when you finish installing either nix or home-manager. It didn’t appear to me in a dream.

  • LinusWorks4Mo@kbin.social
    link
    fedilink
    arrow-up
    0
    ·
    9 months ago

    yeah, everybody should use them. I usually write my own kernel mods tailored for my hardware and certain needs, I don’t know why not everyone is doing that. admittedly is a bit janky maintaining a separate kernel fork, but you get used to it, everyone should do it

  • corsicanguppy@lemmy.ca
    link
    fedilink
    arrow-up
    0
    ·
    9 months ago

    Because nixPKGs have the same Single-Source of Truth wrecking problems as flatpaks and appimages and all that junk.

    There’s only so much room in the ecosystem for best-practice-violating product, and systemd takes up a lot of that. And until systemd collapses under the weight of doing a thousand things poorly for all the wrong reasons and delivering on none of its brochure features, the other entrants have to wait outside.

    • Cris@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      9 months ago

      As a largely non-technical linux enjoyer I have such a hard time understanding why people hate systemd so much. If I switched to a distro that uses another init system would my experience be better?

      Like I get that the complaint is partially the philosophy, but it sounds like you also have problems with it in practice and I just can’t really relate to that. I dunno, maybe I just wouldn’t notice if there are problems happening with how my init system is working 🤷

  • Adanisi@lemmy.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    9 months ago

    I’m going to go against the grain and say that the Nix and Guix package managers are very good, but they really belong in their respective distros where they’re a core part of the system. That’d be Guix System for Guix and NixOS for Nix.

    They may have advantages for a foreign distro too, but they are lesser (Guix System can boot into a backup of the system before the last update, for example, but that advantage doesn’t exist on, say, Debian.

    Also, can we agree to not recommend these systems to new users for the time being? While they’re very powerful, they’re absolutely designed for power users, and until they’re more polished and they have fancy GUIs and stuff for installation and package management, I think it’d be best to keep recommending normal distros like Debian for now.

    • Shareni@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      9 months ago

      Guix System can boot into a backup of the system before the last update, for example, but that advantage doesn’t exist on, say, Debian.

      Yeah, why would I ever want to have bleeding edge userland packages on Debian? Nobody needs something like that or the option to rollback the entire update or pin specific versions of packages…

      Also, can we agree to not recommend these systems to new users for the time being?

      Did anyone do it in this thread? OP is literally just asking about a list of packages to home-manage. Beginners can most certainly handle it if they don’t need a gui to update their system.

      • Adanisi@lemmy.zip
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        9 months ago

        No, nobody did mention it, I was just making a side-point.

        I also said there are advantages to Guix/Nix on foreign distros.

  • Shareni@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    9 months ago
    1. As you can see from the state of this thread, people see nix or nixpkgs but read nixos. There’s no momentum from the community to push it as an extra package manager, while every thread is spammed with nixos.

    2. No gui integrations for casuals. For example Discover integrates flatpaks and snaps, but for nix you need to use the terminal.

    3. The documentation is abysmal. I spent days trying to figure out how to use nix as a declarative package manager before I accidentally came across home-manager. Even the manual leads you down the wrong path. A quick start guide with a few examples for home-manager and flakes, and a few basic commands, would’ve had me going in 5 minutes. That problem is made worse by the fact that almost all sources of info focus on nixos instead.

    • jayandp@sh.itjust.works
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      Yeah, if it wasn’t for my niche needs and desires of using my SteamDeck without touching the system partition, I probably wouldn’t have messed with Nix because of how much of a confusing mess of modes and switches there are, and I’ve used terminal based package managers for years. It’s very far from the simple “it just works” of Flatpaks.

      • Shareni@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        Imagine this: a quickstart script to install nix and home-manager, and generate an example home.nix and it’s flake. If those files included a few comments on basic usage and what commands to run in order to install and update everything, I legit wouldn’t have had to google anything.

        Literally: here’s a list, this is how you add packages to it, this is how you ensure everything on it is installed to the newest possible version, enjoy!

        It’s not click flatpak in a GUI level of simplicity, but it would’ve saved me days of frustration.

        • Fungah@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          9 months ago

          The more ive learned to code and the better I’ve become at solving my own problems on Linux, the more I’ve been absolutely fucking bewildered about how so many people can spend so much time and effort into projects they care deeply about and fail to include even the most basic of necessary instructions. Like “this one simple step is crucial and you can’t do fuck all else if you don’t do it”, kind of necessary

          I think they want people to use the things they built, right? And yet, here’you are in a Kafkaesque nightmare with no visible exit, seemingly alone as if you’re the only person to ever actually need the crucial but of instructions necessary to make this thing work.

          You wonder: am I just an idiot? Iss everything else in on something that I just don’t get? So you spend hours pissing into the wind as Google tantalizingly dangles tangential words at you, having become the internet equivalent of a bully snatching away the toy you brought for show and tell while swearing THIS is the last time, and you soldier onwards for hours, determined that you’re going to get this fucking thing working even though you know that for the sake of your sanity and our limited time on earth the better choice would be to give up. You make a point to leave a comment about your struggle on GitHub, just in case someone else finds themselves in your position one day, feeling less like an accomplished problem solver and more like someone who’s had to pop their own dislocated shoulder into place after dropping a piping hot pizza and falling on black I d. You’ve learned something, you’re more self reliant, this will be less serious in the futurre, but you can’t shake this weird feeling growing ever more insistent, a question you just can’t seem to answer: why? You’ll never know, and though it bothers you, you set to work trying to get this new image generation model to make you some anime women with comically oversized tits and worryingly unnaturally thin waists.

  • cybersandwich@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    Nix is the vim of package management but without good documentation. So it’s incredibly powerful and useful once you get into it, but imagine trying to learn vim without any docs or guidance. Vim has a steep learning curve with good documentation, YouTube tutorials, blog posts, and forum guides.

    Nix doesn’t really have a wealth of that.

    That’s nix package management and nixos in a nutshell.

  • wiki_me@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    9 months ago

    Part of the reason is that people are still finding out about it, Project has no marketing so it grows organically, in the last year the number of contributors grew by 25 percent.

    Another problem is that it still needs polish in term of ease of use, for example it takes me forever to search for packages using the nix-env command but using the website it takes less then a second, That’s a basic feature that still does not work correct, Plus their documentation is still not great in my opinion, I actually helped improved it and the improvement they made is still not really good IMO.

    • moonpiedumplings@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      It’s cause you’re not actually supposed to use nix-env: https://stop-using-nix-env.privatevoid.net/

      You’re actually supposed to be using nix search nixpkgs#packagename to search and nix profile install nixpkgs#packagename to install.

      However, to use both of those, you need to have the “experimental” (not really though, most of the community uses them) features of nix-command and nix flakes enabled, which they aren’t by default.

      And of course, nowhere on the main documentation did I find any if that, I only found it via the pain of using it wrong, and forum posts.

      Nix’s documentation is horrific. I’ve had situations where I only got help via discord…

    • ZephrC@lemm.ee
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      By not being a universal packaging format. It uses your system libraries, which completely eliminates the main reason devs are pushing for things like Flatpak, Snap, or Appimage.

      • Ferk@kbin.social
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        Huh? as far as I know it has its own libraries and dependency system. What do you mean?

      • TheEntity@kbin.social
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        It doesn’t use the system libraries, unless the system on question is NixOS. It still provides its own dependencies. Arguably in a more elegant and less wasteful manner, but they are still distinct from the ones used by the rest of the system.

        • ZephrC@lemm.ee
          link
          fedilink
          arrow-up
          0
          ·
          9 months ago

          To be more clear, it uses a weird combination of your system libraries, installing its own libraries into your system on its own without informing your primary package manager, and using some specific library versions separate from your system libraries for some apps.

          If you want to call that more “elegant” than other solutions… Well, I can’t tell you how to feel about something. It still doesn’t actually solve the problem that universal package formats are trying to solve unless the package dev explicitly requires so many specific library versions that the whole thing just ends up being an AppImage with extra steps though.

          • Ferk@kbin.social
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            The packager always should “explicitly require” what are the dependencies in a Nix package… it’s not like it’s a choice, if there are missing dependencies then that’d be a bug.

            If the package is not declaring its dependencies properly then it might not run properly in NixOS, since there are no “system libraries” in that OS other than the ones that were installed from Nix packages.

            And one of its advantages over AppImages is that instead of bundling everything together causing redundancies and inefficient use of resources, you actually have shared libraries with Nix (not the system ones, but Nix dependencies). If you have multiple AppImages that bundle the same libraries you can end up having the exact same version of the library installed multiple times (or loaded in memory, when running). Appimages do not scale, you would be wasting a lot of resources if you were to make heavy use of them, whereas with Nix you can run an entire OS built with Nix packages.

    • clemdemort@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      9 months ago

      From what I gather it goes something like this:

      • every package is assigned a hash
      • every package lists their dependencies through their hashes
      • different versions of packages have different hashes
      • when you launch an application it creates an environment with all its dependencies, this means that two applications that both use the same library at the same version share that library. However if they both require the same lib but not the same version of that lib they don’t share it.

      Which solves DLL hell as far as i understand it.

  • mosiacmango@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    9 months ago

    Inate complexity that keeps moving as they introduce things like flakes.

    Its a declarative configuration management system as package manager. Thats a lot more to handle off the bat than normal linux + flatpak.

    • MilkLover@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      It is a whole ecosystem:

      • Nix the package manager
      • Nix the functional language used to declare packages and configurations
      • NixOS that has the package manager and a system configuration in the functional language
      • Home Manager, which provides a configuration on the user level and can be used on NixOS as well as other distros and MacOS

      To start out it’s completely fine to just install Nix the package manager on a regular distro or on MacOS and use the nix-env command to install some packages. It will automatically use nixpkgs and use working dependencies for each package, whilst also checking if the depency is already installed to avoid installing the same one twice. This is pretty much the same thing as using Flatpak

      Flakes explanation:

      The Nix package manager has channels to manage package repos. It works like package managers on other distros where you simply have a list of urls to pull packages from, with Nix it would just be the nixpkgs release either a version number for stable or unstable for the unstable rolling release. Any time you install through the package manager or the config in NixOS, it will get the packages from the channel.

      The problem is that the channels aren’t very reproducible. The repos get updates regularly, especially unstable which updates even faster than Arch. Channels don’t provide an easy way to specify a single commit of the repo, except for entering a url with the commit version in it. For stuff like a shell.nix, you’d need to either import nixpkgs from the system’s channel or import the url of nixpkgs with a specific commit ID.

      Flakes is a feature that for some reason is still experimental after years, but many are already using it. It works like manifest.json and package.lock in a JavaScript project. You have a directory or git repo with a flake.nix file in which you specify your external dependencies like the nixpkgs release in the “inputs” section and your outputs in the “outputs” section, like a NixOS/Home Manager configuration, a shell or a package. Then when you use an output, Nix pulls the inputs and builds the output, it then generates a flake.lock file that contains all the inputs with their specific commit and hash. Now if you use an output again later with the same flake.lock, it will still use the exact same version as last time and should generate the exact same outputs. You just run nix flake update to generate a new flake.lock with new dependencies. You can’t use flakes with nix-env simply because installing packages imperatively without a config file defeats the point of reproducibility with flakes.

      Flake example with Home Manager:

      My Flake Repo/
      ├── flake.nix - nixpkgs input and home manager configuration output
      ├── flake.lock - generated by nix
      └── home.nix - home manager config import from flake.nix
      

      Here the home.nix file contains the config with the list of packages to install as well as configuration options for those programs. The flake.nix contains the nixpkgs input and a homeManagerConfigurations output that import the home.nix. You can run home manager switch --flake ./My Flake Repo to use that config from the flake. To update run nix flake update.

      • mosiacmango@lemm.ee
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        9 months ago

        I appreciate the breakdown, but you’ve basically made my point for me.

        The above, with its many advantages, versus:

        Sudo apt install X Y Z G F P -y

        Simple, clean, gets it done for near anyone.

        • Shareni@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          9 months ago

          Sudo apt install X Y Z G F P -y

          Debian 12 came out last June. In December the version of docker that’s shipped by Debian stopped being supported, and is now like 4 major releases behind nix. Debian won’t update it for at least a year and a half unless there’s some major security patch.

          Besides that, when Debian 13 gets released and I reinstall, I can just clone my dotfiles and use a single line to reinstall all of the packages I need. All of the packages are in a single list, and so there’s no more need to run health checks because I forgot to reinstall some random editor dependency for a language I use once a year. If I added it to the list it’s going to be on every machine running that list.

          • mosiacmango@lemm.ee
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            Like most complex things in life, if you devout time to it and engage with it deeply you gain an advantage over a simplier version of the same thing. The question we all have to ask ourselves is “is this worth it?”

            I’d say in your specific “docker centric while using debain” use case, sure. Most people who use linux as a daily driver? Maybe not.

        • lemmyvore@feddit.nl
          link
          fedilink
          English
          arrow-up
          0
          ·
          9 months ago

          Not to mention that the most common problems it solves can be solved by installing packages from source in a prefix like /opt or ~/.apps and symlinking them from a central place like /opt/.system or ~/.apps/.system or whatever.

          I had a bash script 15 years ago that automated most of this. (Which gradually fell out of use when Arch and makepkg came along, but I digress.)

          I can’t help but feel like nix is a solution looking for a problem and solving it in a way that appeals to a certain kind of hobbyist but not so much to any practical purposes. Otherwise it would have been adopted more widely by now.

    • 2xsaiko@discuss.tchncs.de
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      Inate complexity that keeps moving as they introduce things like flakes.

      Flakes solve the problem of reproducibility for which nixpkgs (or other external input) revision to use (e.g. in a software project). The main thing they bring is a npm-like lock file and a predictable interface. You don’t have to use them if you don’t want that.

      Its a declarative configuration management system as package manager.

      No it isn’t. That’s NixOS, which is another thing built on top of Nix and nixpkgs. nixpkgs is first and foremost a package collection.

  • j4k3@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    9 months ago

    The way nix installs in my root directory in another distro is a no-go for me

    • Atemu@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      I can reassure you that it does not encroach on anything the “host” distro package manager does and does not cause conflicts with it.

      At runtime, it only ever touches things in `/nix; it’s self-contained.

      The only time Nix needs to interact with the host distro in any way is during install where it must place a little glue in your system configuration for things like PATH, bash completions or the nix-daemon to work as expected.

      • j4k3@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        8 months ago

        IIRC it puts a user owned directory inside the root. I have no clue what the total implications are in respect to privacy and security.

        The last time I looked the NIX solution to secure boot keys was to disable secure boot, making the largest attack surface on modern computers completely unprotected by default. The idea of leaving it up to the user to figure out keys and self signing was a giant red flag for me. My current workstation requires a shim as the bootloader that came with the device rejects custom keys and I didn’t care to figure out Keytool on my own to boot into UEFI and try to change them by force. That knocked NIX off my list of complete distros to run. While I don’t know the implications for the NIX package manager on another distro, this is the combination of real factors that formed my chain of reasoning about using NIX in both respects.

        I also ran arch for a few weeks once and am now extremely skeptical of any distro that presents anything that hints at “you figure it out yourself” complications for basic function. After Arch I went to Gentoo back when the Sakaki guide still worked and that was much more my style. I had something that just works, and made extra complications much more approachable. Specifically, I found documented entry points on things I didn’t understand, approached in ways I found useful. I don’t recall exactly what I was trying to do at this point, but with NIX I spent a couple of days trying to figure out stuff and went in circles. I think I had come across a NIX package for KoboldCPP and tried a bunch of stuff that didn’t work.

        Anyways, I have nothing against NIX and might try it again one day. This is not bashing on NIX, or calling it inadequate. This was just my experience as a dumb user.

        • Atemu@lemmy.ml
          link
          fedilink
          arrow-up
          0
          ·
          8 months ago

          IIRC it puts a user owned directory inside the root. I have no clue what the total implications are in respect to privacy and security.

          None.

          The last time I looked the NIX solution to secure boot keys was to disable secure boot

          Are we talking about Nix or NixOS here now? These are entirely different things.

          Nix on non-NixOS does not care whether that OS can do secure boot or not.

          As for NixOS: https://github.com/nix-community/lanzaboote

          (Not sure what you’d actually want to achieve with “secure” boot as it doesn’t protect you against anything on its own.)

          The idea of leaving it up to the user to figure out keys and self signing was a giant red flag for me.

          The current support for secure boot in NixOS is rather experimental still. It’s the same as any other distro that hasn’t applied to RedHat to get their shim signed with a M$-trusted key, so I don’t really see your point here.

          That aspect is also being worked on as we speak.

          I didn’t care to figure out Keytool on my own to boot into UEFI and try to change them by force. That knocked NIX off my list of complete distros to run.

          That’s your ignorance’s fault, not any distro’s. If you can’t be bothered to plug in your own keys, you limit yourself to the set of distros that are indirectly officially approved by M$.

          I also ran arch for a few weeks once and am now extremely skeptical of any distro that presents anything that hints at “you figure it out yourself” complications for basic function. After Arch I went to Gentoo back when the Sakaki guide still worked and that was much more my style. I had something that just works, and made extra complications much more approachable. Specifically, I found documented entry points on things I didn’t understand, approached in ways I found useful.

          If you need your hand held, the Nix ecosystem won’t be for you. It’s not really approachable by people who can’t research things in its current state.

          Nothing wrong with that but Nix just isn’t at the point where mere mortals can reasonably be expected to be able to use it.

          • j4k3@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            8 months ago

            I can respect all of that.

            That’s your ignorance’s fault, not any distro’s. If you can’t be bothered to plug in your own keys, you limit yourself to the set of distros that are indirectly officially approved by M$.

            Harsh. I tried signing my own keys. I replaced them in the bootloader, but when I do the final step to lock them down, the TPM chip flushes the new keys and reissues fresh keys again. The only guide I have found for Keytool is on Gentoo. I love Gentoo’s documentation for a lot of things, but it assumes a high level of competence, and I haven’t seen anything visually showing exactly what to do and how Keytool works in practice. I don’t feel very confident taking that step for the first time on a machine I must keep working.

            Indeed there are many times I “need my hand held” in order to take my first steps into a subject. I need an intellectually-intuitive foundation that is stable and I can build upon.

            You say there is no security issue with a user owned directory in root, but intuitively, that shakes a lot of my understanding that is not grounded in formal CS as you likely seem to be. Like I don’t understand:

            • why a user owned directory in root is needed
            • What it means for NIX in reference to configuration files, dot files, and my mental model of mess that belongs in /home/$user. While unfounded, I immediately worry root will somehow get cluttered with junk too. It is probably wrong, but I think of $user being largely sandboxed in /home/$user/
            • I don’t know what the SELinux context is for NIX, but I only have a limited grasp of SELinux from hacking around on Android to add things like busybox, and I know it is permissive but enabled in Fedora.
            • I question how anything placed directly in the root directory of another distro will impact future updates from the packagers of the distro.
            • Isn’t this against the Unix framework to place something directly in root?

            I think those are all of the intuitive thoughts and questions that resonated in my mind when I saw /nix and noticed its user context.

            When I am working on some other project, I don’t want my OS to force me into some peripheral rabbit hole in some large gap within my understanding just to run an update for a package I need, like what I experienced with pacman. My negative experiences with Arch many years ago makes me default skeptical. While I understand that NIX and NIXOS are different, I still associate them when it comes to developing trust.

            Last thing worth mentioning since I have been thinking about it. I was motivated to try NIX, enough to install it, in order to try a preconfigured version of KoboldCpp, as I mentioned. However, I recall it was posted on a website somewhere and was described for a WSL NIX Flake. I was curious to try it because I have had trouble with Nvidia with a mainline kernel and kobold. I thought maybe the flake was just described for WSL and I could easily sort out a Linux version, but that didn’t happen. The flake was not in any native repo, and altering it to run in Linux did not feel very approachable in documentation as far as a first time experience with NIX. I don’t think kobold is compatible with a DKMS built Nvidia module anyways so that stopped my effort.

            • Atemu@lemmy.ml
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              8 months ago

              I tried signing my own keys. I replaced them in the bootloader, but when I do the final step to lock them down, the TPM chip flushes the new keys and reissues fresh keys again

              It may just be that the firmware of your particular board is buggy to the point of being broken.

              You could try updating it but sometimes it’s futile and the firmware is just the biggest pile of crap.

              Indeed there are many times I “need my hand held” in order to take my first steps into a subject. I need an intellectually-intuitive foundation that is stable and I can build upon.

              Absolutely reasonable expectation. I wish we had that.

              why a user owned directory in root is needed

              I initially glossed over the fact that you said “user-owned” here. It still shouldn’t affect anything because nothing uses /nix for anything security-critical at any point but it’d certainly be smelly.

              User-owned /nix is only the case in single-user installs which I believe have been deprecated for a while and certainly aren’t the way to go anymore.

              These days the preferred and default method is a multi-user install where /nix is owned by root there and exclusively managed by the privileged nix-daemon.

              What it means for NIX in reference to configuration files, dot files, and my mental model of mess that belongs in /home/$user. While unfounded, I immediately worry root will somehow get cluttered with junk too. It is probably wrong, but I think of $user being largely sandboxed in /home/$user/

              Nix (the package manager) itself does have some limited local state (cache, current profile link) that is put into the appropriate XDG user dirs. It will never touch anything outside of those specific state dirs, the TMPDIR and /nix.

              Nix is designed to be fully contained in /nix. This property enables you to even wipe their entire root on every boot under NixOS.

              Apps installed via Nix behave as they always do w.r.t. cluttering directories. openssh will still create and manage its ~/.ssh directory for instance, just like on other distros. If you ran some daemon that you installed via Nix with sufficient privileges, it may try to create its state directory in /var or whatever; just like the same daemon from any other distro’s package would.

              That is all to say: Nix does not do anything special here. Its packages largely behave the same as they do on any other distro and that behaviour includes state directory cluttering behaviour at runtime.

              I don’t know what the SELinux context is for NIX, but I only have a limited grasp of SELinux from hacking around on Android to add things like busybox, and I know it is permissive but enabled in Fedora.

              No SELinux support whatsoever.
              There is somewhat explicit non-support even as Nix’ model of files and directories does not include xattrs; you cannot produce a Nix store path that has special xattrs for SELinux purposes.
              Metadata like permissions, dates and owner information are all normalised in the Nix store. The only permitted metadata apart from the file name is whether regular files can be executed.

              If your system uses SELinux, you must add an explicit exception for the Nix store. (Installers may do that automatically these days, I haven’t kept up with that.)

              question how anything placed directly in the root directory of another distro will impact future updates from the packagers of the distro.

              Other distros simply do not touch /nix; it’s not their domain.

              FHS distros control FHS directories such as /usr or /bin depending on what individual packages contain but no sane package of an FHS distro will try to control /nix/store/hugehash-whatever/.

              Isn’t this against the Unix framework to place something directly in root?

              Nix does many things that go against original design principles of Unix and that’s a good thing. It’s not the 70s anymore and some aspects of Unix have not aged well.

              https://economicsfromthetopdown.com/2024/02/17/nixing-technological-lock-in/

              trouble with Nvidia with a mainline kernel and kobold.

              Using Nix for applications that have userspace driver dependencies on non-NixOS requires a hack unfortunately: https://github.com/nix-community/nixGL

              • j4k3@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                8 months ago

                Thanks for taking the time to answer all of my questions. I’m much more likely to try NIX again now.

  • PureTryOut@lemmy.kde.social
    link
    fedilink
    arrow-up
    0
    ·
    9 months ago

    NixOS sounds amazing in some regards, but I’m not really interested in learning a whole programming language for it… I have enough to do already.

  • I maintain some software, and Nix is by far the hardest to deal with. To package config files are relatively complex, and to submit a package you have to download the entire Nix repo, which is huge. Getting a package to build correctly can be a challenge.

    It’s a pretty large ask for software contributors, who may have to iteract with a half dozen different distros. Now, you could say, leave it to the distro people to do the packaging, but it remains a barrier for entry and is by nature exclusive.

    I don’t use NixOS, so I have little motivation to stay conversant with Nix and, frankly, it’s so demanding I don’t bother anymore. I can make RPM, deb, and aur packages trivially, and without having to hold Gb of some package repo (which I otherwise don’t use) on my disk.

    • moonpiedumplings@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      git clone --depth 1 will clone a git repo without older stuff. Without this, the nixpkgs git repo is like 13-14 GB, but with a depth of 1, it’s only 200 mb.

    • Atemu@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      If you maintain upstream software and do not have an interest in learning and using Nix, please don’t put the burden of packaging software in Nix onto yourself. Nobody in their right mind would expect you to package anything for a dozen distros; that’s not how distros are supposed to work.

      Leave it to someone who is interested to package your software in Nixpkgs. Your “job” is to make your software better and provide a sane way to build your software that packagers can rely on (i.e. no assumptions where things are or are supposed to go, document your dependencies and build processes).

      If you do want to go the extra mile, offer your help in assisting packaging in the appropriate channels. You know the technical details of your software and Nix users how Nix packaging works but the reverse mostly isn’t true, so cross-pollination can be super helpful here.
      Even just things like testing that your software works as you expect when the packaging is touched in some way (i.e. an update) is incredibly helpful. (If saw a package update PR with the upstream maintainer’s approval stating that it works as they expect, I’d merge immediately.)

      If packaging for Nix is a burden for you, please just open an issue on Nixpkgs with links to your packaging/build documentation and let someone else do it for you.
      As a Nixpkgs committer, I’d much rather have someone invested in Nix build and maintain a package than an upstream maintainer who somehow feels obligated to do so but has no experience or actual interest as the former is more likely to produce good code and keep maintaining the package.

      • Sure. My point is that it’s trivial to make and test packages for many distributions; it is harder to do so for Nix. It tends to get your software out there and used faster if you bootstrap the packaging - immediately, if you have an AUR account.

        IMHO, Nix is unreasonably harder. There are frequently small projects that don’t get packaged for most distros. When I encounter these, I have a couple of options:

        • Submit a packaging request. Hope someone is willing to accept it. Wait until it is packaged.
        • Install it from source and let it pollute the core system. Hope this causes no issues. Manually track and maintain the installation. If lucky, the software lets itself be installed somewhere non-standard, in which case I can use stow and keep things a bit cleaner.
        • Throw together a package for it and let my distro manage the installation.

        The third option is preferrable to the others, for a variety of reasons, and it’s easy on most distros. On Arch, I might submit the package to AUR, but I’ll often just make a -git package and install it locally.