Is there much of an effort to clean Nixpkgs up and bring it up to Guix's level?

258 views
Skip to first unread message

liamwi...@gmail.com

unread,
Dec 29, 2017, 2:07:16 AM12/29/17
to nix-devel

Pretty much the title, I'm using Nixos for all of my servers but I can't bring myself to use it on the desktop as it's just so inconsistent and poor planning has meant that it doesn't bootstrap things from source, no rolling release option (Yes I know about unstable but it's often behind and my computer is weak so I can't always compile to get the latest fixes), there's so much redundant manual effort involved in maintaining, cross compiling (Although tI know there's effort here, there's so many old dead packages in the repo and finally there's so many small little issues requiring workarounds.



Guix on the other hand, while not perfect (No systemd and FSF cruft meaning no Firefox etc), has far fewer of these issues. I know it's also because Guix is younger but I really do like the idea's behind Nix and I enjoy using it so seeing it in such a "bad" state is both annoying and upsetting.



I want to try to fix these and other issues but I thought I'd ask to see if there's actually any interest in doing this kind of stuff or if I'd be wasting my time if I was to try and put forth rfc's and code towards cleaning and improving nix in the ways mentioned and I'd be better off looking towards Triton (A fork of Nixpkgs? I'd have to look more at it).

Orivej Desh

unread,
Dec 29, 2017, 2:42:38 AM12/29/17
to liamwi...@gmail.com, nix-devel
> I want to try to fix these and other issues but I thought I'd ask to see if there's actually any interest in doing this kind of stuff or if I'd be wasting my time if I was to try and put forth rfc's and code towards cleaning and improving nix in the ways mentioned

Improvements to Nixpkgs and NixOS are certainly welcome. However, your list of issues does not seem accurate, and you may prefer to learn more about it before proposing RFCs.

> it doesn't bootstrap things from source

What do you mean?

> no rolling release option

The nixos-unstable and nixpkgs-unstable channels are the rolling releases. They are built from the master branch. The unstable branch is to accumulate large rebuilds before merging into master about once a week, it is not meant for anyone to use. See https://nixos.org/nixpkgs/manual/#overview-of-nixpkgs

> I know about unstable but it's often behind

Behind what?

> there's so much redundant manual effort involved in maintaining

Is Guix or other distros better in this respect?

> there's so many old dead packages in the repo

What do you mean by dead? Could you list some?

> there's so many small little issues requiring workarounds

Could you give some examples?

liamwi...@gmail.com

unread,
Dec 29, 2017, 3:27:02 AM12/29/17
to nix-devel

> I want to try to fix these and other issues but I thought I'd ask to see if there's actually any interest in doing this kind of stuff or if I'd be wasting my time if I was to try and put forth rfc's and code towards cleaning and improving nix in the ways mentioned

Improvements to Nixpkgs and NixOS are certainly welcome.  However, your list of issues does not seem accurate, and you may prefer to learn more about it before proposing RFCs.

> it doesn't bootstrap things from source

What do you mean?

Nix doesn't seem to touch many of the issues mentioned on this page http://bootstrappable.org
Although maybe I am missing something
 
> no rolling release option

The nixos-unstable and nixpkgs-unstable channels are the rolling releases.  They are built from the master branch.  The unstable branch is to accumulate large rebuilds before merging into master about once a week, it is not meant for anyone to use.  See https://nixos.org/nixpkgs/manual/#overview-of-nixpkgs

 You just said the unstable channel is the rolling release version but the branch is not? Are they different? I was under the impression that a channel is just a "build" branch? Or is the unstable channel based off the master branch? Also below I explain why it seems that unstable channel as a rolling release channel is kinda broken
> I know about unstable but it's often behind

Behind what?

> there's so much redundant manual effort involved in maintaining

Is Guix or other distros better in this respect?
Not partially, but it seems Nix would be a perfect distro to get ahead of others

> there's so many old dead packages in the repo

What do you mean by dead?  Could you list some?
Dead was a poor word, more like outdated.

> there's so many small little issues requiring workarounds

Could you give some examples?
Both are currently affecting me, issues with gnome playing up and not holding onto settings, kde being stupidly slow due to environment variables or something, fish not working properly and just many things that, to be fair, come from software making assumptions and nix breaking them.

If that's not enough to convince you spend literally 5 minutes in irc, going through the issue tracker or even looking at peoples personal configs for their own workarounds and you'll see countless examples.

liamwi...@gmail.com

unread,
Dec 29, 2017, 3:28:41 AM12/29/17
to nix-devel
Also something I just missed.

Issues like the previous topic in the list: Why are GSettings parameters not applied in apps?
They occur so often, it's mentioned in the rolling release issue as why people like me want to be on unstable, because otherwise you miss things that aren't yet backported.

Benjamin Staffin

unread,
Dec 29, 2017, 4:51:07 AM12/29/17
to liamwi...@gmail.com, nix-devel
On Fri, Dec 29, 2017 at 3:27 AM, <liamwi...@gmail.com> wrote:
> no rolling release option

The nixos-unstable and nixpkgs-unstable channels are the rolling releases.  They are built from the master branch.  The unstable branch is to accumulate large rebuilds before merging into master about once a week, it is not meant for anyone to use.  See https://nixos.org/nixpkgs/manual/#overview-of-nixpkgs

 You just said the unstable channel is the rolling release version but the branch is not? Are they different? I was under the impression that a channel is just a "build" branch? Or is the unstable channel based off the master branch? Also below I explain why it seems that unstable channel as a rolling release channel is kinda broken

Orivej meant to say "staging branch" in the second case: The staging branch is to accommodate large rebuilds before merging into master about once a week.

The nixos-unstable channel is indeed NixOS's rolling release. I run it on some of my personal systems and have been quite happy with the results.

 
> I know about unstable but it's often behind

Behind what?

Behind master

That happens sometimes if a critical nixos test gets broken.  The channel release update doesn't happen unless the required set of tests are passing on hydra; this is generally a good thing, as most people prefer a slightly less up-to-date system instead of a broken system.  Even better would be if the tests didn't get broken, of course.

Tests required for nixos-unstable updates can be found here: https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents

Each time there is a vertical column of all green checkmarks, the channel gets updated.

liamwi...@gmail.com

unread,
Dec 29, 2017, 5:48:05 AM12/29/17
to nix-devel


On Friday, December 29, 2017 at 8:21:07 PM UTC+10:30, Benjamin Staffin wrote:
On Fri, Dec 29, 2017 at 3:27 AM, <liamwi...@gmail.com> wrote:
> no rolling release option

The nixos-unstable and nixpkgs-unstable channels are the rolling releases.  They are built from the master branch.  The unstable branch is to accumulate large rebuilds before merging into master about once a week, it is not meant for anyone to use.  See https://nixos.org/nixpkgs/manual/#overview-of-nixpkgs

 You just said the unstable channel is the rolling release version but the branch is not? Are they different? I was under the impression that a channel is just a "build" branch? Or is the unstable channel based off the master branch? Also below I explain why it seems that unstable channel as a rolling release channel is kinda broken

Orivej meant to say "staging branch" in the second case: The staging branch is to accommodate large rebuilds before merging into master about once a week.

The nixos-unstable channel is indeed NixOS's rolling release. I run it on some of my personal systems and have been quite happy with the results.
 
 
> I know about unstable but it's often behind

Behind what?

Behind master

That happens sometimes if a critical nixos test gets broken.  The channel release update doesn't happen unless the required set of tests are passing on hydra; this is generally a good thing, as most people prefer a slightly less up-to-date system instead of a broken system.  Even better would be if the tests didn't get broken, of course.

My problem about 6 months ago when I used it was that I needed it up-to-date or it was effectively broken. There was a month or so where it was 2-6 weeks behind or something crazy and I needed master for a nvidia driver fix since my computer couldn't go to a gui without it and my computer wasn't fast enough to build everything from master, even using the small channel it took over a day for everything to compile (Although this is my computers fault I can see it happening on small arm devices for example). Has it been better recently?

Orivej Desh

unread,
Dec 29, 2017, 6:02:01 AM12/29/17
to liamwi...@gmail.com, nix-devel
> > > it doesn't bootstrap things from source
> >
> > What do you mean?
>
> Nix doesn't seem to touch many of the issues mentioned on this page
> http://bootstrappable.org
> Although maybe I am missing something

In Nixpkgs it is generally preferred to build everything from source,
including tools whose build normally depends on themselves. For
example, the current Go compiler is built from Go 1.4 which is built
from C. Regressions from this goal do happen, such as when SBCL ceased
to be built with CLISP by default [1], or when Clojure ceased to be
built from source [2], but contributions toward bootstrapping from
source are welcome.

[1] https://github.com/NixOS/nixpkgs/commit/29f120d7b2bc37e0e39884ea827baa9aa4c40792
[2] https://github.com/NixOS/nixpkgs/pull/32695#issuecomment-352083232

> You just said the unstable channel is the rolling release version but the
> branch is not? Are they different? I was under the impression that a
> channel is just a "build" branch?

You were asking about the rolling release that does not require
compilation on your side. The channels are such releases. The branches
in the nixpkgs repo on the other hand are generally ahead of channels
(by a few hours or days) and hence do not provide binary releases for
all packages. There is a separate repo https://github.com/NixOS/nixpkgs-channels
whose branches track channels, so they provide binaries.

> Or is the unstable channel based off the master branch?

It is.

> > > I know about unstable but it's often behind
> >
> > Behind what?
> >
> https://github.com/NixOS/nixpkgs/issues/27502
> Behind master

> There was a month or so where it was 2-6 weeks behind or something crazy
> Has it been better recently?

I don't know how it was before the release of 17.09, but now it's not
bad, definitely below a week. See the current status at
https://howoldis.herokuapp.com/ and the graphs at
https://channels.nix.gsc.io/graph.html

> > > there's so many old dead packages in the repo
> >
> > What do you mean by dead? Could you list some?
> >
> Dead was a poor word, more like outdated.
> https://github.com/NixOS/nixpkgs/issues/27723

Certainly, a lot of packages will be slightly outdated as long as there
are no automatic updates (or very outdated without users intersted in
updates). They may save a lot of effort on the part of users
contributing pull requests, and a distro that always ships the latest
updates will be novel and cool, even if less stable than nixos-unstable.

(Obviously, without automatic updates other rolling release distros look
on repology the same:
https://repology.org/metapackages/?inrepo=arch&outdated=on ,
https://repology.org/metapackages/?inrepo=gentoo&outdated=on .)

> If that's not enough to convince you spend literally 5 minutes in irc,
> going through the issue tracker or even looking at peoples personal configs
> for their own workarounds and you'll see countless examples.

I don't need convincing that there are issues and workarounds, I asked
that to know what kind of stuff you are interested in.

> https://github.com/NixOS/nixpkgs/issues/18995

This is a tough issue. Nixpkgs are optimized for making packages for
end users, and not as friendly to developers as they expect.

> https://github.com/NixOS/nixpkgs/issues/19560

We don't even use synaptics anymore (at least in the unstable channel),
it was replaced by libinput, so `services.xserver.synaptics.enable =
false` is the default and it should not disable touchpad. Various
desktop configuration tools can configure touchpad (e.g. System settings
in KDE): disable it completely, or disable it when a mouse is connected;
but a pull request that configures libinput via NixOS options is going
to be accepted.

> many things that, to be fair, come from software making assumptions
> and nix breaking them.

There are inherent advantages and disadvantages in the Nix store model.
It is surprising that a lot of software works in Nixpkgs with little to
no changes, despite never considering its model.
Reply all
Reply to author
Forward
0 new messages