Bumping package versions usually isn’t hard. Here, I’ll do this one out loud here, & maybe you can do it next time you need to:
- Search https://github.com/NixOS/nixpkgs/pulls to see if someone else already has a PR open for a version bump for this package.
- Clone the nixpkgs repo if you haven’t already:
git clone https://github.com/NixOS/nixpkgs.git ~/devel/nixpkgs
(orgit pull
if you have). - Create a branch for this bump:
git checkout -b stremio
- Find stremio:
find pkgs -name stremio
- Edit it:
$EDITOR pkgs/applications/video/stremio/default.nix
Looks like nixpkgs has version 4.4.142. If I go to https://www.stremio.com/ (link inmeta.homepage
in this file) and click ‘Download’, it all says 4.4, which is not helpful. The ‘source code’ link goes to github, and the ‘tags’ link there lists versionv4.4.164
, which is what we’re looking for. - In my editor, I change the version:
4.4.142
→4.4.164
. - In my editor, I mess up both the hashes: I just add a block of zeros somewhere in the middle:
sha256-OyuTFmEIC8PH4PDzTMn8ibLUAzJoPA/fTILee0xpgQI=
→sha256-OyuTFmEIC80000000000000000000A/fTILee0xpgQI=
. - Leaving my editor, I build the updated package:
nix-build . -A stremio
- It fails, because the hashes are wrong, obviously. But it tells me what hash it got, which I copy/paste back in, in the spirit of collective TOFU. I do this twice, once for each hash.
- It builds successfully. I test the result:
./result/bin/stremio
. Looks like it works enough to prompt me to log in, at least. I don’t know what stremio is or have an account, but it’s probably fine. - I commit my change:
git commit -a -m 'stremio: 4.4.142 -> 4.4.164'
- I push my commit:
git push github
(If this is your first time, create a fork of nixpkgs in the github web UI &git remote add
a remote for it first) - I create PR in the github web UI: https://github.com/NixOS/nixpkgs/pull/263387
Nice.
Here’s another worked example of a less adventurous pi pico (W) project I did recently. It’s C, built with Nix, and doesn’t require setting up all the hardware-debugger stuff (it uses the much simpler hold-bootsel-while-plugging-in and copy-the-.uf2-file mechanism to load code). The 5th commit is the simple blink example from the SDK with all the build mechanisms figured out.