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

202 points

…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

permalink
report
reply
98 points

NixOS sounds like a way to avoid learning Linux by learning an abstraction.

permalink
report
parent
reply
81 points

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

permalink
report
parent
reply
38 points

You guys use an OS? I just push the electrons around my motherboard manually with a little magnet on a toothpick.

permalink
report
parent
reply
20 points

Systemd sounds like a way to avoid learning Linux by learning an abstraction.

permalink
report
parent
reply
35 points

You keep my init system (and resolver, and timekeeper, and task scheduler, and container manager, and …) out your f**king mouth!

permalink
report
parent
reply
10 points

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.

permalink
report
parent
reply
7 points

Nix is to Linux what Tailwind is to CSS

permalink
report
parent
reply
5 points

Ya, sucks when Tailwind goes out of style and now have to learn CSS again.

permalink
report
parent
reply
5 points

That’s why I used to use arch btw

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
35 points

Like everything with Nix, you pay a little more upfront to get a great experience later.

permalink
report
parent
reply
3 points

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

permalink
report
parent
reply
10 points

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?)

permalink
report
parent
reply
6 points

the Guile Scheme you already know.

⬅️➡️👊

permalink
report
parent
reply
9 points

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.

permalink
report
parent
reply
9 points

That’s not true.

You have to get PhD in functional programming first.

permalink
report
parent
reply
22 points
*

Wait, are you saying my degree has real world use?

permalink
report
parent
reply
5 points

That would make it impure

permalink
report
parent
reply
9 points

But, at least in theory, you’ll only do it once.

permalink
report
parent
reply
2 points

Until developers decide to do some changes here and there

permalink
report
parent
reply
1 point

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.

permalink
report
parent
reply
1 point

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.

permalink
report
parent
reply
5 points

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.

permalink
report
parent
reply

Well not everything is packaged and when they aren’t it Can get more complicated to install since nixos doesn’t use the default file system layout. Another thing is that certain programs have assumptions about being able to do certain things like changing their own config files that don’t work well with the nixos way of doing things. (Looking at you fish(it works but you can’t manage your configuration for it(pretty sure?)with nix))

permalink
report
parent
reply
3 points

I haven’t tried that one but besides the package page there is the options pages that gives you the ability to define config info.

https://search.nixos.org/options?channel=23.11&show=programs.fish.vendor.functions.enable&from=0&size=50&sort=relevance&type=packages&query=Fish

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
2 points

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

permalink
report
parent
reply
1 point

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.

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
68 points
*

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

permalink
report
reply
31 points

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

permalink
report
parent
reply
14 points

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.

permalink
report
parent
reply
8 points

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.

permalink
report
parent
reply
9 points

Nixos has made me a better software engineer, I hope it takes off

permalink
report
parent
reply
14 points

nix is 20 years old?!? I thought it was relatively new like maybe 10 years old

permalink
report
parent
reply
13 points

the package manager was first released in 2003, so nearly 21!

permalink
report
parent
reply
5 points

Get that code a bottle of vodka!

permalink
report
parent
reply
1 point
*

The problem is that it’s all spread out, they do actually have really good documentation for the language, it’s just not easy to find. AND SPREAD OUT!

permalink
report
parent
reply
66 points

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.

permalink
report
reply
33 points

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.

permalink
report
parent
reply
12 points

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

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
4 points

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.

permalink
report
parent
reply
5 points

I’m reporting you to the Ubuntu police!

permalink
report
parent
reply
21 points

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.

permalink
report
parent
reply
11 points

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

permalink
report
parent
reply
8 points

You clearly don’t have a software hoarding problem

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
5 points

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…

permalink
report
parent
reply
5 points

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.

permalink
report
parent
reply
2 points
*

No distros are cool. Computers are tools. Is one distro actively better at completing jobs you need to do? There the one you need.

permalink
report
parent
reply
4 points
*

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.

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
2 points

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

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
2 points
*

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.

permalink
report
parent
reply
31 points

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

permalink
report
reply
17 points

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.

permalink
report
parent
reply
1 point

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

permalink
report
parent
reply
7 points
*

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.

permalink
report
parent
reply
6 points

THIS. Or salt. You even learn something generally useful.

permalink
report
parent
reply
1 point

I use Salt BTW, but I’d be using Ansible if my previous-previous job didn’t force me into Salt. 🤭

permalink
report
parent
reply
1 point

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

Where’s Ansible OS?

permalink
report
parent
reply
17 points

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

permalink
report
reply
27 points

All hail Firefox Sync!🙌

permalink
report
parent
reply
9 points

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.

permalink
report
parent
reply
12 points

I think you can selfhost the sync server.

permalink
report
parent
reply
8 points
*

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

permalink
report
parent
reply
2 points

Mozilla are maybe the only company I’d trust with that

permalink
report
parent
reply
2 points

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.

permalink
report
parent
reply
2 points

firefox sync misses half my settings

permalink
report
parent
reply
3 points

Then you didn’t need them

permalink
report
parent
reply
12 points

it’s all in .mozilla.

permalink
report
parent
reply
1 point
*

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...
      };
    };
  };
}
permalink
report
parent
reply

linuxmemes

!linuxmemes@lemmy.world

Create post

Hint: :q!


Sister communities:

Community rules (click to expand)

1. Follow the site-wide rules
2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of “peasantry” to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
4. No recent reposts
  • Everybody uses Arch btw, can’t quit Vim, and wants to interject for a moment. You can stop now.

Please report posts and comments that break these rules!

Community stats

  • 6.6K

    Monthly active users

  • 1.3K

    Posts

  • 71K

    Comments