Once upon a time, the nixpkgs-channels
repo was created to prevent people from (accidentally) pushing to nixos-*
branches. However, nowadays this can also be accomplished using branch protection. So we don't need a separate channels repo anymore. Having one repo has several advantages:
fetchGit
stores clones of different repos separately, so if you do a fetchGit
of both nixpkgs
and nixpkgs-channels
, you end up using twice the disk space.nix build nixpkgs/nixos-19.09#hello
), but this doesn't work if the branch is in another repo (you'd have to say nix build github:NixOS/nixpkgs-channels/nixos-19.09#hello
).Proposal:
nixos-*
and nixpkgs-*
branches.nixpkgs
and nixpkgs-channels
(the latter for compatibility).nixpkgs-channels
from the docs.As a slightly related UX issue, it's unfortunate that we have tags named 19.03
etc. in the repo. This could cause people to inadvertently use a ref that doesn't get updates (e.g. nixpkgs/19.03
when they actually mean nixpkgs/nixos-19.03
). IMHO we should rename the tags to something like 19.03-initial
.
Is it possible to also redirect https://github.com/nixos/nixpkgs-channels to https://github.com/nixos/nixpkgs? I know this happens automatically if you move a repository but I don't know if you can set it up manually in circumstances like this.
Does anything in the release process use git describe
? I think the tags must be 19.03
for this reason.
Where do we actually use the tags? I recall discussions they're confusing, because do they correspond to the release of a NixOS version, or to branch-off? See https://github.com/NixOS/nixpkgs/issues/64077.
According to the docs on releasing, the xx.yy-beta
tag is created at branch-off time: https://nixos.org/nixos/manual/index.html#at-beta-release-time and the xx.yy
tag is created on the first revision which passes hydra with stableBranch=true, https://nixos.org/nixos/manual/index.html#at-final-release-time
I don't think we use the tags anywhere (which also wouldn't make sense because we have rolling releases).
Looking at branch protection, we can do a few nice things:
I think GitHub lets you merge two repos so that NixOS/nixpkgs-channels
redirects to NixOS/nixpkgs
and old references to NixOS/nixpkgs-channels
would continue to work (provided we also include the old branches in NixOS/nixpkgs).
EDIT: this may just apply to renamed repos
The NixOS/nixpkgs-channels repo is still up and unredirected; if redirection isn't an option, perhaps the repository description should be changed to a deprecation notice and the repo marked as archived on GitHub?
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/github-com-nixos-nixpkgs-channels-deprecated/9455/3
Most helpful comment
The NixOS/nixpkgs-channels repo is still up and unredirected; if redirection isn't an option, perhaps the repository description should be changed to a deprecation notice and the repo marked as archived on GitHub?