It’s not about the destination, it’s about the journey.

  • @itslilith
    link
    1963 months ago

    …to get a working config, you need to learn a whole new programming language and figure out the tweaks for each package you want to install, so I’d argue the journey is just as long

      • @itslilith
        link
        793 months ago

        that’s why I only use my computer with raw system calls, shell is bloat

      • @Laser@feddit.de
        link
        fedilink
        103 months ago

        I’d personally advise against NixOS as a first distribution for that matter. It’s a great distribution, but if you want to understand the underlying mechanics, start with something where you interact with them, like Arch or whatever.

      • it’s an abstraction yeah but understanding what exactly it is abstracting and how is where you’ll get snags, it’s definitely not a newbie distro.

      • @itslilith
        link
        43 months ago

        oh yeah, I daily drive NixOS and use it on my homelab as well

    • @linearchaos@lemmy.world
      link
      fedilink
      English
      103 months ago

      It comes with a working config.

      Adding applications and rebuilding is generally trivial.

      The problem becomes if you want to use flakes or home manager, which you probably should. The config for those is complicated and poorly documented.

      I don’t know the programming language. I’ve been running it for about a month now. If you’re not doing anything complicated or doing any crazy conditionals or running one config for 27 boxes it’s no different than editing a yaml.

      It took me about 2 days to get Nvidia working properly with offloading that was my hardest task so far.

    • @grue@lemmy.world
      link
      fedilink
      English
      103 months ago

      That’s why you go for GNU Guix instead, since it’s the same kind of concept but configured using the Guile Scheme you already know.

      (You do already know Scheme, right?)

      • @ManniSturgis@lemmy.zip
        link
        fedilink
        13 months ago

        Well, I “did it” for an evening once, it was fun. The next day it got annoying REAL fast. But I do keep the config around, so I guess I can just go back to it eventually to keep doing it.

        • AggressivelyPassive
          link
          fedilink
          13 months ago

          I’m just playing around with it on my home server, and yes, it does get annoying sometimes.

          The whole system is far from being perfect, but I’m hoping for a mixture of learning on my side and improvements on the system’s side.

    • @BCsven@lemmy.ca
      link
      fedilink
      53 months ago

      I had no experience in nixOS, just went to the package website, it tells you exactly what to add to each section of the config.

    • @affiliate@lemmy.world
      link
      fedilink
      43 months ago

      not to mention how many things they want to go through their system. getting vim set up “their way” while also trying to install python3 support, vimtex, and plug-vim was almost impossible. not to mention finding a way to store the vim configs separately from the rest of nixos. (i use vim on multiple operating systems so switching everything to the nixos wasn’t a viable option.)

      maybe there was a better way to do it that i didn’t know about, but boy did i try to find it.

      • @itslilith
        link
        23 months ago

        you can just include dotfiles and the like in a nix config, while it’s not the recommended way it usually works

        in my experience installing support for most things is way easier on nix, as long as they’re already packaged well. I’m still scared of the eventual time when I’ll have to create my own package for the nix store to install from source

        • @affiliate@lemmy.world
          link
          fedilink
          13 months ago

          i think i would’ve probably had to package the specific kind of vim that i needed, because i wanted neovim and a gui too or something. this was also like 3-4 years ago so its possible the documentation for this kind of stuff has considerably improved since i tried, or that there are now packages that make this sort of thing easier. and it’s definitely possible everything existed at the time and i just couldn’t figure it out.

          but i ended up with a similar feeling to the one you described: stuff is easy when you do it their way, using their tools; but things are very hard to do if you deviate from the path.

          i know this is just sort of an inevitable part of the design paradigm they use, and that everything probably works very nicely if you learn their language and the various ins and outs of the operating system, but i just wasn’t willing to commit that much to it.

          • @itslilith
            link
            33 months ago

            I really like most of it and started to daily drive NixOS a few months ago, but there’s still some very valid criticisms to be made. Lack of documentation is probably the biggest one

            • @affiliate@lemmy.world
              link
              fedilink
              23 months ago

              i would like to give it another try at some point because it seems like it will probably feel really nice to use once i get the hang of it. but the lack of documentation is pretty rough.

              i also think that for nixos, a lack of documentation is a much more difficult thing to overcome. other distros can piggyback off the arch documentation for most things, but that doesn’t work as well for nixos.

              • @itslilith
                link
                23 months ago

                that’s certainly true. I’d like to help improve the documentation, but unfortunately I’m still pretty green at Nix myself, so there’s not much I can do at the moment. But it seems to be picking up speed recently, so there’s hope that with more people better documentation is coming soon

    • monk
      link
      fedilink
      23 months ago

      The hard part is unlearning last century distro mindset, not this.

    • @iopq@lemmy.world
      link
      fedilink
      13 months ago

      You still need to figure out the tweaks on other systems. Unless you want the Nvidia machine learning to complain that your C compiler is the wrong version and exit. Or maybe you’d prefer to deal with a package calling ps and parsing its output (?!) but you have ps that’s a different version so the output doesn’t parse the same

      I mean, when have we ever had a system that is working without any tweaks? Once you install third party packages, there’s so many things that can go wrong

    • @sunstoned@lemmus.org
      link
      fedilink
      English
      13 months ago

      Idk flatpak and docker are pretty easy to set up. If anything gets too complicated it’s easy to go back to old reliable.

  • Jeena
    link
    fedilink
    683 months ago

    How often do you reinstall your OS? In practice never, I installed Arch around 8 years ago on one computer and that’s the install I have today still. I copied it twice to a bigger SSD but that’s kind of it.

    • @redcalcium@lemmy.institute
      link
      fedilink
      333 months ago

      There is a certain thrill when you nuke your disk to install a distro you never tried before. I actually just nuke one of my laptop last night to try void linux.

      • Corroded
        link
        fedilink
        English
        113 months ago

        I was wondering if Void was still popular. It was kind of feeling like NixOS took all its hype

        • @0x4E4F@sh.itjust.worksOP
          link
          fedilink
          English
          63 months ago

          It is getting traction lately, the last few years. I myself am a Void user. Currently, I either install NetBSD, Debian or Void, depending on the use scenario.

        • @JovialSodium@lemmy.sdf.org
          link
          fedilink
          43 months ago

          I’m guily of the hopping on the bandwagon from Void to NixOS. But out of curiosity for NixOS not frustration over Void. Void is awesome, it fits the completely subjective picture in my head of what Linux should be.

    • @ivn@jlai.lu
      link
      fedilink
      213 months ago

      Yeah, I don’t think that’s the best selling point for desktop use. For me it’s having all my configs for all my devices in a single place, checked in git, with bits of config I can easily share between my different devices.

    • Sabata11792
      link
      fedilink
      113 months ago

      Hey, man. Some of us just suck at everything but reinstalling.

    • Easy install is not the only benefit. You also get fearless upgrades. When I upgrade my Nvidia driver and it inevitably exposes bugs in one of my apps, I can always jump back to the previous build version without uninstalling anything.

    • @fxt_ryknow@lemmy.world
      link
      fedilink
      63 months ago

      Damn… 8 years? I made it almost two years with tumbleweed on my work laptop.

      I like mixing it up, trying different diatros and various programs. After awhile, a fresh install just feels nice…

    • @ManniSturgis@lemmy.zip
      link
      fedilink
      53 months ago

      Every few months or so? There is always that one distro that sounds cool and maybe it’s better than what you are using atm. Yeah, sure. It’s mostly a waste of time and I keep coming back to Arch after a few days, but without this drive I would not have ever tried Arch in the first place. So because of this I found my favorite distro, but I can also never be 100% sure it’s the best distro. Pros and cons, I guess.

    • @JovialSodium@lemmy.sdf.org
      link
      fedilink
      4
      edit-2
      3 months ago

      Could I maintain the same OS install for the life of a device? Sure. Can I resist disro hopping? Nope!

      I made it, I think, 3 years on a Fedora install once.

    • Same. Even for Windows…why reinstall so much? I installed W10 1607 and I’ve just been installing updates. Same for my Linux machines. Just upgrade and be done people.

    • @iopq@lemmy.world
      link
      fedilink
      33 months ago

      I didn’t reinstall my OS because I wanted to. Ubuntu messed up the upgrade from 20 LTS to 22 LTS. There was some message in the console, but an hour later I forgot about it and shut off the computer without checking the message again

      When it came back it was a terminal and I had no working WiFi. I googled how to do WiFi on Ubuntu from the terminal, but the answers all told me about the previous WiFi on Ubuntu and I didn’t even have that daemon

      Eventually I wiped the drive and installed NixOS because it backs up your previous configs. When an upgrade fails you just undo and go to the previous working version.

    • @QuazarOmega@lemy.lol
      link
      fedilink
      23 months ago

      Maybe not useful for yourself alone, but the benefit of being able to share your entire config with others doesn’t sound bad

    • Avid Amoeba
      link
      fedilink
      13 months ago

      Main machine was last installed with Ubuntu 14.04 LTS. Running 22.04 now. Gonna celebrate a tin anniversary this year! 🎊

      • myxi
        link
        fedilink
        English
        2
        edit-2
        3 months ago

        Installed 22.04 few months ago, did my configs, and then subscribed to Ubuntu Pro (free for five devices). Now I can enjoy a stable experience for at least a decade.

  • @merthyr1831@lemmy.world
    link
    fedilink
    65
    edit-2
    3 months ago

    nix being 20 years old and still lacking decent documentation on the language it’s what hurts me the most, because the people who do know it works so some amazing things with it

    • christ0st
      link
      fedilink
      323 months ago

      Imagine if NixOS had as good a wiki as Arch. Personally, I wouldn’t bother with another distribution again.

      • Johanno
        link
        fedilink
        133 months ago

        They released their wiki apparently on April 1st.

        So now we need just to fill it with the missing content. (which there is a lot). And it will be as good as the arch one… In 20 years.

        Or smb made a bad April’s fool and actually their wiki is older.

        • @ScreaminOctopus@sh.itjust.works
          link
          fedilink
          English
          83 months ago

          The NixOS wiki’s been around for a few years at least, it just doesn’t get as much traffic from search engines since NixOS isn’t super popular.

          • Kirby
            link
            fedilink
            103 months ago

            I think what they are referring to is the official wiki at wiki.nixos.org (there also is / was an unofficial wiki)

              • Johanno
                link
                fedilink
                53 months ago

                Ah this makes sense since I started nixos 3 weeks ago and was sure I already was on a wiki before April. I believe the official one is also mostly copied from the unofficial one for now

          • @ComradeKhoumrag@infosec.pub
            link
            fedilink
            22 months ago

            Software engineering is usually distinct from programming in that it isn’t about the logic behind programming, but about the project management that all software projects typically have in common.

            Besides agile methodology, a lot of software engineering involves creating reproducible environments. While NixOS doesn’t provide anything that much different from tools like Ansible,

            NixOS follows a functional/declarative design paradigm, functional/declarative design paradigms communicate similar logic for solving the same problem. It’s a restrictive paradigm. Consider how javascript is not restrictive, as in, you can code with any design paradigm in javascript, and how it’s ugly for that.

            I also think functional paradigms mirror the natural language closer than imperative paradigms. That’s subjective, but I would still argue Math is a logical language that is a subset of the natural language, and since functions in programming represent a process of doing something, functions make for natural verbs. Meaning, understanding the naming convention for the functions, is a natural naming convention for when I communicate with other software engineers, even when I’m not asking about making configurable/reproducible systems in NixOS

            Or when I look at how to config things like firewall, ssh, vpn servers, user group permissions… it’s a minimalist description that I could communicate to other people configuring even on a debian server

            So, it’s hard because it’s restrictive, but if you’re willing to put up with a learning curve, you get a language agnostic framework for describing computing environments, more or less. Then there’s more advanced stuff with nix flakes, which still doesn’t make sense to me functionally/linguistically, but I’m starting to see the value in parallel package management and the precision in reproducibility they provide by requiring sha256 git commits

  • Avid Amoeba
    link
    fedilink
    323 months ago

    Or, they could learn Ansible and get 80% of the way, and be able to reproduce the result on more than one OS. 🥹

    • 2xsaiko
      link
      fedilink
      163 months ago

      Nix is not something exclusive to NixOS, and people are already using it to make reproducible configs that work on more than one OS.

      I’m even using Ansible in what I’m currently building with Nix, because it does one thing well that I need to do: distribute files and run commands on a lot of hosts at once.

      • @sunstoned@lemmus.org
        link
        fedilink
        English
        13 months ago

        In my head they’re different use cases. Nix is amazing for a living build. Ansible is more pigeon-holed to production systems where you don’t want (or need) that history baked into every system

    • Something Burger 🍔
      link
      fedilink
      7
      edit-2
      3 months ago

      That is, until a new Ansible version breaks playbooks again, or an OS is updated in a way that messes with you playbooks, or a package is removed from the playbook but not the installed system…

      Ansible is good for ephemeral containers or VMs, but any more permanent system will eventually deviate from the set configuration.

    • @iopq@lemmy.world
      link
      fedilink
      13 months ago

      Getting only 80% of the way there is why it never worked before for the whole system

      Where’s Ansible OS?

  • @HouseWolf@lemm.ee
    link
    fedilink
    English
    163 months ago

    I might just be basic but the only annoying part of reinstalling for me is setting up my browser again.

      • @HouseWolf@lemm.ee
        link
        fedilink
        English
        83 months ago

        I’ve used Firefox for over a decade but still wouldn’t trust them to keep all my account info on their servers, Especially not nowadays.

        I already started using KeypassXC to locally store my passwords, just importing bookmarks and add-ons I’ve left to do.

        • @otacon239@feddit.de
          link
          fedilink
          8
          edit-2
          3 months ago

          I only use Sync for extensions, history and bookmarks. I use an alternative pw manager for the same reason.

          • @maiskanzler@feddit.de
            link
            fedilink
            23 months ago

            Exactly. I’ve had 0 issues with it. Sadly they stopped development of their own password manager, so now I am using Bitwaren+Vaultwarden. The UI is better, but the app still feels cumbersome and slow, just like Mozilla’s experiment. For some reason Bitwarden is also really inconsistent & slow in when it shows the Autofill Popup on my keyboard.

            • @Damage@slrpnk.net
              link
              fedilink
              23 months ago

              I didn’t know they tried making their own password manager. I know that on my phone with Gboard I sometimes get an “unlock with Firefox” button in apps’ login screens…

        • @JovialSodium@lemmy.sdf.org
          link
          fedilink
          23 months ago

          I use file syncing (Syncthing) and symlinks to keep configs for some apps synced between devices. I don’t for Firefox, but it might work.

          • @HouseWolf@lemm.ee
            link
            fedilink
            English
            33 months ago

            I’m still a newbie Linux user so haven’t fully delved into Symlinks…besides bricking a VM trying it once when following a guide.

            Can I for instance link a folder where emulators or offline games store save data on my main SSD and have it automatically copied to a folder on my large HDD?

            • @JovialSodium@lemmy.sdf.org
              link
              fedilink
              5
              edit-2
              3 months ago

              It doesn’t copy data, no. Symlink is short for symbolic link. So it’s a pointer to another location. But it might be useful for you. Taking a guess at your goal, here’s a relevant example.

              Say you moved all of your emulation stuff stored under /media/largehdd/retroarch. You could then symlink that directory to ~/.config/retroarch like so:

              ln -s /media/largehdd/retroarch ~/.config/retroarch

              That data is still stored on the large drive but will now also show under that symlinked directory.

            • @amotio@lemmy.world
              link
              fedilink
              3
              edit-2
              3 months ago

              Yes you can, although this might be better done with rsync - and periodically runnind the syncing command.

              But syncthing does basically the same thing plus you can sync between multiple devices on the same network.

              I sync my laptop config with work pc this way.

              Edit: typos, damn mobile

      • @737
        link
        33 months ago

        firefox sync misses half my settings

    • @sunstoned@lemmus.org
      link
      fedilink
      English
      1
      edit-2
      3 months ago

      Try this, friend

      Tap for spoiler
      { config, pkgs, ... }:
      
        let
          lock-false = {
            Value = false;
            Status = "locked";
          };
          lock-true = {
            Value = true;
            Status = "locked";
          };
        in
      {
        /* 
        ** ffextid
        ** Usage: `ffextid [install_url]`
        ** Description: simple script to find the extension id from an extension's manifest
        **              using the url found by right clicking the install add-on button and 
        **              selecting "copy link"
        */
        home.packages = with pkgs; [
          (pkgs.writeShellScriptBin "ffextid" ''
          #!/usr/bin/env bash 
          $(curl $1 > /tmp/ffext.xpi) 1> /dev/null
          $(unzip /tmp/ffext.xpi -d /tmp/ffext) 1> /dev/null
          
          # If ripgrep exists, use that. Otherwise default to grep
          if ! command -v rg &> /dev/null; 
          then
            rg id /tmp/ffext/manifest.json
          else
            grep id /tmp/ffext/manifest.json
          fi
          
          rm -rf /tmp/ffext*
          '')
        ]; 
        programs = {
          firefox = {
            enable = true;
            package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
              extraPolicies = {
                DisableTelemetry = true;
                # add policies here...
      
                /* ---- EXTENSIONS ---- */
                ExtensionSettings = {
                  "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
                  /*
                  Format: 
                  "[Manifest id]" = {
                    installation_mode = "force_installed" # will install the extension for you!
                    install_url = "[url]" # found by right clicking the install button on the add-on page
                  };
                  */
                  # uBlock Origin:
                  "uBlock0@raymondhill.net" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
                  };
                  # Privacy Badger:
                  "jid1-MnnxcxisBPnSXQ@jetpack" = {
                    install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
                    installation_mode = "force_installed";
                  };
                  # Bitwarden
                  "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4225453/bitwarden_password_manager-2024.1.1.xpi";
                  };
                  # XBrowserSync
                  "{019b606a-6f61-4d01-af2a-cea528f606da}" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/3546070/xbs-1.5.2.xpi";
                  };
                  # Decentraleyes
                  "{jid1-BoFifL9Vbdl2zQ@jetpack}" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4158232/decentraleyes-2.0.18.xpi";
                  };
                  # Clear URLs
                  "{74145f27-f039-47ce-a470-a662b129930a}" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4064884/clearurls-1.26.1.xpi";
                  };
                  #Dark Reader 
                  "addon@darkreader.org" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4223104/darkreader-4.9.76.xpi";
                  };
                  # Cookie AutoDelete
                  "CookieAutoDelete@kennydo.com" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4040738/cookie_autodelete-3.8.2.xpi";
                  };
                  # I don't care about cookies
                  "jid1-KKzOGWgsW3Ao4Q@jetpack" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4202634/i_dont_care_about_cookies-3.5.0.xpi";
                  };
                  # Youtube Sponsor Block
                  "sponsorBlocker@ajay.app" = {
                    installation_mode = "force_installed";
                    install_url = "https://addons.mozilla.org/firefox/downloads/file/4229442/sponsorblock-5.5.4.xpi";
                  };
                  # add extensions here...
                  /*
                  "" = {
                    installation_mode = "force_installed";
                    install_url = "";
                  };
                  */
                };
        
                /* ---- PREFERENCES ---- */
                # Set preferences shared by all profiles.
                Preferences = {
                  "browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
      
                  ### BOOLEANS
                  "extensions.pocket.enabled" = lock-false;
                  "extensions.screenshots.disabled" = lock-true;
                  "privacy.donottrack.heater.enable" = lock-true;
                  "browser.compactmode.show" = lock-true;
                  # add global preferences here...
                };
              };
            };
      
            /* ---- PROFILES ---- */
            # Switch profiles via about:profiles page.
            # For options that are available in Home-Manager see
            # https://nix-community.github.io/home-manager/options.html#opt-programs.firefox.profiles
            profiles ={
              sunstoned = {                 # choose a profile name; directory is /home/<user>/.mozilla/firefox/profile_0
                id = 0;               # 0 is the default profile; see also option "isDefault"
                name = "sunstoned";         # name as listed in about:profiles
                isDefault = true;     # can be omitted; true if profile ID is 0
                settings = {          # specify profile-specific preferences here; check about:config for options
                  "browser.newtabpage.activity-stream.feeds.section.highlights" = false;
                  "browser.startup.homepage" = "https://nixos.org";
                  "browser.newtabpage.pinned" = [{
                    title = "NixOS";
                    url = "https://nixos.org";
                  }];
                  # add preferences for profile_0 here...
                };
              };
            # add profiles here...
            };
          };
        };
      }
      
  • Possibly linux
    link
    fedilink
    English
    143 months ago

    Meanwhile me using Fedora with pretty much everything setup the way I want it out of the box:

  • @cygon@lemmy.world
    link
    fedilink
    33 months ago

    I am a Gentoo user and most of that is already a reality on Gentoo systems. Get the stage3 tarball set up, slap your /etc/portage/make.conf and /var/lib/portage/world files in there and build.

    Obviously, depending on whether it should be a blank system with the same apps installed or a clone of a previous system, configuration in /etc and one’s home directory may need to be copied, too.