• timbuck2themoon@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 months ago

    I also think- how often am I borking or reinstalling my desktop?

    It’s a good idea but I’ve been running the same system for years and years. All that effort goes kind of unused. I replicated most of what I’d need in a single ansible playbook over the years that didn’t take long. In the rare event I need to reinstall at all.

  • onlinepersona@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    5 months ago

    Damn right. And the Nixos community forums are full of people unwilling to accept this. They will gaslight you into thinking you’re the problem. “Just do this”, as I’d it’s completely obvious and you’re dumb for not realising that. Of course if they find out you have some ideological incompatibility with them, you’re out anyway.

    NIXOS really needs a fork. One that embraces or rejects flakes outright. One that stops inviting ideological battles. And one that embraces documentation.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 months ago

      I mean, you don’t really need a fork for that. Anyone who’s motivated to actually improve the situation here, can just write appropriate documentation.

      I guess, a fork would give you a new name, and therefore a clean slate where there’s not loads of contradicting information already out there. But yeah, that’s also a lot of work…

    • balsoft@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      One that stops inviting ideological battles

      That’s impossible IMHO. Nix is fundamentally about doing things “the right way”, and so there will always be disagreements about what “the right way” is. I think they are bound to be eventually settled on the best possible answer, you don’t need a fork for that.

      • onlinepersona@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        5 months ago

        If only the battles were about software. They are about unrelated beliefs and political ideologies. I’d very much prefer ideological battles about software trust me.

      • onlinepersona@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        5 months ago

        I haven’t yet found out where its major differences lie. And it seems like they haven’t taken a firm stance on flakes (yes or no). They also only forked the interpreter, not nixpkgs. A good step, but their documentation wasn’t good, the last time I checked.

  • MonkderVierte@lemmy.zip
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    5 months ago

    Personally, i dream of a stateless, tag/attribute-based, tree-less operating system. “directories” would not be neccessary but a tag could be displayed as one in file managers. Want to load a library? type:library, name:xyz it is.
    Stuff is there on the disk anyway, you just have to identify it.

    But that would require the whole system and the tooling made for this.
    But maybe we get there; since the young generation isn’t used to file trees anymore.

    Edit: ok, scratch the kernel, it could work.

    • balsoft@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      I think what you’re looking for is simply an indexer + UI that sorts your filesystem by tags rather than by directory structure. Not sure if that’s as beneficial as you imagine it to be, but IIRC KDE allows you to do something like that in Dolphin.

      • MonkderVierte@lemmy.zip
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        5 months ago

        No, they always have to keep a index uptodate. And no synch (or even compatibility) with other such tooling. Only thing that comes close currently is xattributes some fs support. But they are wholly a undefined blank slate.

        About advantages, no broken paths would be one.

  • ikidd@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 months ago

    This article is spot on. Fantastic operating system with a clear concept of how it should be done. And great for people that want to fight for it. But everything you want to do that’s slightly off the path is a 3 hour research project in documentation that’s pretty damn poor. It eventually wears you out.

    • rozodru@piefed.social
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 months ago

      I love NixOS but it really does make the hard things easy and the easy things hard. I even take “vacations” from it. Like right now for example. I switched back to Arch for a bit as I found myself spending too much time playing around with my various nix configurations/modules and also getting frustrated in trying to get some random application to work. So went back to Arch so I don’t have to think about stuff.

      the beauty of NixOS is I can go back to it and be exactly where I left off in like 15minutes. I just need a break from it.

    • Steamymoomilk@sh.itjust.works
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      Nixos user here for 4 years.

      Yep

      Its legit you want to try sway window manager?!?

      Sway = true;

      You want to change the keybinds and make it declarative.

      MAY GOD HELP YOU.

      Files.home

      Is what u want and it took me 3 hours to find that

        • Oinks@lemmy.blahaj.zone
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          5 months ago

          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.

          • balsoft@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            5 months ago

            The CSS thing might be true, but the swayconfig file is probably a solvable problem, especially with everything being slowly moving to freeform modules. We just need to write a Nix -> swayconfig generator, which shouldn’t be too difficult because swayconfig is not even turing-complete.

          • tomenzgg@midwest.social
            link
            fedilink
            English
            arrow-up
            1
            ·
            5 months ago

            Does Home Manager not just have a dot file manager built in? On Guix, I just have my Waybar config. get moved to the appropriate location that Waybar will expect it.

            Some services will even allow you to specify files to get injected into the config.; like the Bash service so I can write some definitions out in a .sh file and the service inserts that contents after the boilerplate it provides into my .bashrc.

            • Oinks@lemmy.blahaj.zone
              link
              fedilink
              arrow-up
              1
              ·
              edit-2
              5 months ago

              It does, that’s the home.file escape hatch I mentioned. But then you end up paying 10-30 seconds eval for a “config” that looks like this:

              {
                home.file.".bashrc".source = ./bashrc;
                home.file.".bash_profile".source = ./bash_profile;
                xdg.configFile.nvim.source = ./nvim;
                xdg.configFile.sway.source = ./sway;
                # ...
              }
              

              I suppose there are fringe use cases where Nix attrset merging behaviour is useful, but in the average case I just don’t see much value here.

          • Ephera@lemmy.ml
            link
            fedilink
            English
            arrow-up
            1
            ·
            5 months ago

            Yeah, I can understand the frustration. IMHO the Home-Manager way of doing things has some merits:

            • You can (generally) manage the installation of packages together with their configuration.
            • You can override individual configuration values for different machines (which I guess, you can also do via templating in chezmoi).
            • Some programs don’t have a particularly readable configuration file or spread this configuration out over multiple files, or save all kinds of additional garbage into their configuration file which you don’t want to persist. Home-Manager can work around all these issues, and in such a case is likely also better documented than the original configuration file.

            That last point is one that’s particularly relevant for me, because KDE Plasma’s configuration files are largely terrible. Home-Manager, together with Plasma-Manager, is the only sane way I know of, to automate the panel configuration in KDE.

            But yeah, if you don’t use software with terrible configuration files, then I can certainly understand preferring dumb templating. I have also decided against using the Home-Manager-specific modules in places, or might only translate into the Home-Manager-specific module when I actually want to vary configuration values between two machines.


            Just to give a quick impression of how terrible the KDE panel configuration is, this is a snippet out of the fittingly-called plasma-org.kde.plasma.desktop-appletsrc file:

            [ActionPlugins][0]
            MiddleButton;NoModifier=org.kde.paste
            RightButton;NoModifier=org.kde.contextmenu
            
            [ActionPlugins][1]
            RightButton;NoModifier=org.kde.contextmenu
            
            [Containments][1122]
            activityId=f588743a-9bab-4f56-8f90-3616085ab6e0
            formfactor=0
            immutability=1
            lastScreen=1
            location=0
            plugin=org.kde.plasma.folder
            wallpaperplugin=org.kde.color
            
            [Containments][1122][Wallpaper][org.kde.color][General]
            Color=#79740e
            

            Ah sorry, that doesn’t actually show any of the panel configuration, because KDE mixes configuration for the panel and desktop widgets and the Activities feature (like workspaces, but with separate wallpapers and widgets for each Activity) all into the same file.
            So, here’s a snippet that actually shows the panel configuration, from just a few lines below the first snippet:

            [Containments][1807]
            activityId=
            formfactor=3
            immutability=1
            lastScreen[$i]=0
            location=5
            plugin=org.kde.panel
            wallpaperplugin=org.kde.image
            
            [Containments][1807][Applets][1808]
            immutability=1
            plugin=org.kde.plasma.showActivityManager
            
            [Containments][1807][Applets][1810]
            immutability=1
            plugin=org.kde.plasma.pager
            
            [Containments][1807][Applets][1810][Configuration][General]
            showOnlyCurrentScreen=true
            showWindowIcons=true
            wrapPage=true
            
            [Containments][1807][Applets][1811]
            immutability=1
            plugin=org.kde.plasma.panelspacer
            
            [Containments][1807][Applets][1812]
            activityId=
            formfactor=0
            immutability=1
            lastScreen=-1
            location=0
            plugin=org.kde.plasma.systemtray
            popupHeight=432
            popupWidth=432
            wallpaperplugin=org.kde.image
            

            What those numbers in e.g. [Containments][1807][Applets][1812] are? Ah, they just count those from 0 to infinity, whenever you add a widget through the UI.
            And in case you were wondering since when INI allows for nesting section keys via [multiple][brackets]: It doesn’t. That’s a custom extension of the INI format, specifically in use by KDE.

            Like, man, I love KDE for its features, but this is the stuff of nightmares.

        • MonkderVierte@lemmy.zip
          link
          fedilink
          arrow-up
          1
          ·
          5 months ago

          or just want to use some obscure software in general, then yeah, things can get more complicated…

          Well thanks, so NixOS is not for me then.

          • Ephera@lemmy.ml
            link
            fedilink
            English
            arrow-up
            1
            ·
            5 months ago

            Oof, I was just talking about making things declarative there. If you want to configure it the old-fashioned way, like you would on other distros, then those difficulties don’t apply.

            In more general terms, though, it’s a bit of a double-edged sword. The Nix package repository has more packages than other package managers: https://repology.org/repositories/graphs

            So, the chance of finding an obscure software, that’s already packaged, is rather high.
            Here’s the online package search, if you want to check the availability of some of the obscure software you use: https://search.nixos.org/packages

            But then, yeah, the flipside is that, from what I understand, you can’t just download a random executable off of the internet and run it, because of the Filesystem Hierarchy Standard not being adhered to, as the post also mentions.
            You can set up Flatpaks, and I believe AppImages would work, because those also live in their own FUSE filesystem. Well, and there is ways to emulate the FHS layout to get normal applications to run, too.

            But yeah, way out of my field of expertise there. I have only one software installed which isn’t packaged for Nix, which is a program I wrote myself.
            And to get sufficient FHS emulation for that, I just needed this line in my config:

            programs.nix-ld.enable = true;
            

            More complex programs will need a bit of extra configuration: https://wiki.nixos.org/wiki/Nix-ld

            (I could also add a flake.nix file into my software’s repository, though, which would make it so it could be installed straight from my repo, as if it was packaged.)

        • higgsboson@piefed.social
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          5 months ago

          Sure it is now, but it was not always. Gentoo didnt just spring forth from the aether full-grown.

          pre-alpha

          The period of pre-0.1 that I reference above, ended in 2002 with the release of 0.1 Alpha. This is back when the idea of adding a binary installer was controversial in the gentoo community. That was 24 years ago, in case you are following along. So going on about the current state of Gentoo is not super relevant. I am glad it is better, but I am old enough to remember when it was a pretty gnarly ball of yarn and that is what I mentioned.

    • teft@piefed.social
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 months ago

      Is there no forum or discord for the distro? Or a self help book. Way back in the day that’s how i did shit on slackware. Irc and books.

      • KryptonBlur@slrpnk.net
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 months ago

        There’s a forum, which is fine, but the people on there are very insistent that you should do things “the nix way” and if you don’t go all in on that then you get chastised.

        • higgsboson@piefed.social
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 months ago

          you should do things [their way] and if you don’t go all in on that then you get chastised.

          As is tradition.

        • Kogasa@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          5 months ago

          A bit of friction when going off the beaten path is generally a good thing. Some people always take this too far though

      • Oinks@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        1
        ·
        5 months ago

        There’s a manual, a discourse (forum) and a Matrix. And an unofficial subreddit and a Lemmy community. As well as two wikis and a large number of random people writing blog posts and tutorials.

        This might be a hot take but honestly I think the documentation quality isn’t the problem. You can point to specific topics that aren’t well documented but that isn’t unusual. What’s unusual is how NixOS is designed and how working around its quirks requires close to distro maintainer levels of knowledge.

        Most distros don’t require several pages of documentation on how to install a Python application. NixOS on the other hand…

        • teft@piefed.social
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 months ago

          Most distros don’t require several pages of documentation on how to install a Python application. NixOS on the other hand…

          Ooof. Ok now I understand a bit. Thanks.

    • harsh3466@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      I gave nixos a shot and pretty immediately noped out. All I wanted as a starting point was nvim with lazyvim. And as you said, it was a huge research project and after an hour with no luck, I nuked it.

      • Oinks@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        1
        ·
        5 months ago

        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.

  • Samueru_sama@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 months ago

    The problem is that NixOS achieves all of this by breaking assumptions that almost all Linux software relies on. Most Linux binaries assume the Filesystem Hierarchy Standard exists, and they expect interpreters and libraries at fixed global paths.

    This is a problem of those applications, we began to make appimages that do not make those assumptions and work in NixOS directly. (And this also means it works in places like alpine where a lot of those binaries wont either).

    People like to throw the FHS around but the reality is that not a single distro follows it fully, I wouldn’t rely on it to be the same in the near future at all.

    • unexposedhazard@discuss.tchncs.de
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      Most of these are still relevant issues afaik, so yeah… appimages are just not a solution for everything. Same as stuff like flatpak and snap. These are nice for when you just need some little standalone app that doesnt do a lot of compute heavy stuff, but they will never replace native implementations.

      • Samueru_sama@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 months ago

        The points in the screenshot are just false and outdated, the guy even says that it doesn’t work on every distro lol

        This is signal made with sharun working on ubuntu 12.04 a 14 year old distro: https://imgur.com/a/1f5S0P7 The distro is so old that internet no longer worked lol, had to use a flash drive to transfer the appimage.

        we use a lot less storage than flatpak and this comparison is outdated, we have reduced the size of a lot of apps since then.

        I actually did a quick test installing an alpine linux container and about 10 GUI apps vs appimage and appimage used less storage, now this comparison was flawed because I later realized that the alpine stable repo was super old and for example GIMP was pulling the gtk2 version instead of the gtk3 one (which brings all of gtk2 into the system instead of sharing the existing gtk3) but you get the idea of how close we are.

        For updates and desktop integration use AM or soar

        but they will never replace native implementations.

        Eden makes its appimage using sharun, they made it with PGO optimizations on it which has a ~10% increase in FPS.

        native implementations wouldn’t bother doing this, in fact PCSX2 had to tell people to not use the official archlinux package while it existed, because archlinux compiled it with generic flags which was horrible lol

        https://www.reddit.com/r/linux_gaming/comments/ikyovw/pcsx2_official_arch_linux_package_not_recommended/

        This is also the reason why this benchmark showed appimage performing much better, you are free to optimize your application, while distros packages, flatpak, etc you often have to deal with packaging policies that do not allow this:

        https://www.reddit.com/r/linux/comments/u5gr7r/interesting_benchmarks_of_flatpak_vs_snap_vs/

    • MonkderVierte@lemmy.zip
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      At this point, FHS feels more like a hindrance to me. Also, it was made in a time with very limited disk capacity and personal computers weren’t much of a thing yet.

      • Khleedril@cyberplace.social
        link
        fedilink
        arrow-up
        1
        ·
        5 months ago

        @MonkderVierte @Samueru_sama I don’t think the standard (more like a guideline) is bad in itself: consistence of file-system use across applications is good for all our sanity. It is the assumption that all applications use it rigorously that is the problem. The word is SHOULD, not MUST.

        • MonkderVierte@lemmy.zip
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          5 months ago

          While i agree that a standard is useful, i think the FHS is out of date: it has lot’s of fragmentation where it is not needed anymore, instead of keeping it simple. And also lots of reinterpretations, which makes it even more confusing.
          Which results in some people who learned FHS thing (but never why it happened) keeping slave-ish to it and doing nonsense in major distros. Which, again, results in small niche distro being forced to it too, because they lack the manpower to adapt the tooling.

  • Ek-Hou-Van-Braai@piefed.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 months ago

    Lol love the title.

    I feel the same about KDE on Wayland, it’s amazing but it’s not stable enough yet.

    Took my laptop to work and it had a stroke when I plugged it into the office monitors

    • caseyweederman@lemmy.ca
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      That’s weird.
      To share a contrasting experience, I run KDE on Wayland on a laptop with two physical monitors with different rotations and three virtual monitors with different resolutions and it all Just Works.