❄️ Installing the nix package manager on SailfishOS

Thanks for the hint. It’s in the package gnu-coreutils, which you can install with sudo pkcon install gnu-coreutils. I’ll update the instructions.

Hi! Thanks for the quick reply!
Unfortunately, it seems this package conflicts with busybox-symlinks-coreutils-1.34.1+git2-1.8.1.jolla.aarch64.
Is it safe to just uninstall that package?

Yes it is safe to remove. One of the two you’ll want to have installed, though :slight_smile:

Please explain me, what is the benefit of having NIX on Sailfish because right now I see only cons.

1 Like

Maybe the ability to install more packages ¯_(ツ)_/¯

1 Like

Interesting to see someone experiment with Nix on SFOS. Thanks for sharing this @nobodyinperson!

Have you heard about Determinate System’s Nix Installer? It’s more flexible and maybe simplifies the experience for you:

for the people unfamiliar with Nix/NixOS I think it would be worth mentioning that Nix’s package store can easily take up a few gigabytes in size (and pulling in certain packages will eat up mobile data fast). That’s sort of a catch on mobile.
it depends on the number of packages and their depemdencies, of course.

then NIX is bad idea for that. NIX is just packing system and we already have one, it’s zypper which is much less complicated and uses way more disk space than nix.

You might be able to install packages that otherwise wouldn’t be available on SailfishOS. I have the idea of installing ProtonMail Bridge through Nix, for example. This app won’t run on SailfishOS (apparently due to missing dependencies?)

1 Like

it’s enough to just prepare a spec file for it for sfos.

1 Like

@lolek If you don’t see the gigantic benefits of having nix on SailfishOS, then I guess it is not for you, because you haven’t yet run into a situation where you needed it.

Sure, there is pkcon and zypper on SailfishOS. But good luck installing anything recent or custom with it. The jolla repos contain what’s necessary to run the OS, not more. Many of the core tools are outdated. GnuPG is extremely out of date, due to licensing issues IIUC. Want to use tmux? You have to use some random build off OpenRepos that doesn’t work. Or breaks after the next update. Same for all the Python stuff. Same for other shells like fish. The list is infinite, as there is a quasi infinite amount of new software being made that’s just not in the jolla repos or openrepos. Packaging dependencies and software for OpenRepos or elsewhere is very tedious in my experience. And outdated fast.

With nix, there’s a gigantic community packaging pretty much everything. You don’t have to do it. Nix packages will just work across SailfishOS updates. They are self-contained. With nix you can get proper up to date encryption tools (see my GPG example above).

For me, having a Linux phone is about sharing workflows and tools across machines. I do time tracking from the terminal with timewarrior and can amend it from the phone. I manage my finances with hledger and can emergency-analyse it on the phone. I sync files with git-annex and can have my phone be part of it. The list goes on. All of this is so much easier now with nix. I had to package or build everything myself before. Now I don’t and it’s awesome. :smiley:

8 Likes

Thanks for the hints. I added a warning about the download size to the post.

As for the Determinante Systems installer I don’t think that it’ll bring much value here (though I haven’t tried). It can’t work around the small root partition problem. And here, we’re using the single-user installation without the daemon and builder users etc. This is ideal for this effectively single-user SailfishOS and also easy to remove. No real need for the new installer’s fancy install receipt to make sure everything can be removed cleanly again. But I’d be happy to hear what your experiences with it are on SailfishOS.

Sadly in my life I had the oportunity to work with nix and nixos and honestly I see literaly zero benefits and more negative problems with it on SailfshOS. One of the biggest is the space requirements, second is the learning curve for newcomers.

Well then, easy solution for you: don’t use nix on SailfishOS. :smiley:

3 Likes

Wait, really? Last time, I tried to build ProtonMail Bridge from source and failed because some dependencies weren’t available on Sailfish.

Hi,

I am interested in this! Did you manage to get ProtonMail Bridge working with Nix?

I did! But something I did with Nix messed up my sytem (bootloop), so I undid it again.

But I had the idea of installing the Nix packagr manager in an LXC container and running Bridge from there which now works perfectly!

Really? :astonished: I wonder how that is possible. At least from my instructions here I don’t see a possibility that could affect base SFOS, let alone causing a boot loop. If you remeber what caused it, I can add it as a warning to the post.

Thanks for the guidance, I feel more confident to try it now.

I will post a tutorial how to setup ProtonMail Bridge on sailfishos.wiki if you are interested

3 Likes

I’m not sure what caused the problem. I first thought it was the systemd-service I created to mount /nix when booting up (because I reboot my device every day). But after I removed it, the problem appeared again. I discovered that it basically gets to the unlock prompt and after you type in the code it doesn’t do anything. It does this two or three times if you reboot and then it boots again normally. I have now removed nix and it hasn’t done this since then. So I assume that nix was somehow the problem? But I really can’t think of anything that nix could do to cause this

1 Like