# Either $50 bounty or $50/hr pair coding bounty: XtDrone

**URL:** https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376
**Category:** Jobs
**Created:** [September 28, 2024, 8:28pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376 "2024-09-28T20:28:18Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![notwren](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/notwren/32/27367_2.png) [@notwren](https://discourse.nixosstag.fcio.net/u/notwren)
#### Post date: [September 28, 2024, 8:28pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/1 "2024-09-28T20:28:18Z")

</div>

I’ve been trying to get a copy of XtDrone ([GitHub - robin-shaun/XTDrone: UAV Simulation Platform based on PX4, ROS and Gazebo](https://github.com/robin-shaun/XTDrone)) running in nixos. I’ve got a partial flake but am stuck on compiling PX4 right now. Ideally, I’d like one of you experts to jump on a paid call and walk me through it so I can get better at NixOS. I’d also just send $50 (but I suspect it’s probably an underpay for the amount of work to get this compiling).

---

<div class="post-metadata">

### Author: ![Aleksanaa](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/aleksanaa/32/12953_2.png) [@Aleksanaa](https://discourse.nixosstag.fcio.net/u/Aleksanaa)
#### Post date: [September 29, 2024, 3:52am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/2 "2024-09-29T03:52:38Z")

</div>

Ask for clarification: is your expectations for this bounty just packaging it or explaining to you how to package it?

---

<div class="post-metadata">

### Author: ![notwren](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/notwren/32/27367_2.png) [@notwren](https://discourse.nixosstag.fcio.net/u/notwren)
#### Post date: [September 29, 2024, 7:52pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/3 "2024-09-29T19:52:58Z")

</div>

I’ll pay $50 for a packaged Xtdrone with no explanation or call. But the pair programming would include walking me through it. I know enough nix to probably get everything when I see the correct solution. I think it’s more arcane makefile knowledge than nix knowledge for this bounty tbh.

---

<div class="post-metadata">

### Author: ![mboyea](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/mboyea/32/28639_2.png) [@mboyea](https://discourse.nixosstag.fcio.net/u/mboyea)
#### Post date: [October 3, 2024, 4:21pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/4 "2024-10-03T16:21:55Z")

</div>

Hey, I’m no NixOS expert, but I suppose I’m an intermediate user and I really do like Makefile. You don’t have to pay me. I’d be happy to hop on a call, I actually think I could learn from your understanding of Flakes. Send me a pm if you’re interested to connect.

---

<div class="post-metadata">

### Author: ![shamrocklee](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/shamrocklee/32/28815_2.png) [@shamrocklee](https://discourse.nixosstag.fcio.net/u/shamrocklee)
#### Post date: [March 13, 2025, 4:11pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/5 "2025-03-13T16:11:09Z")

</div>

To package XtDrone, we need to get its dependencies ready first. The good news is that there’s a [nix-ros-overlay](https://github.com/lopsided98/nix-ros-overlay) project thanks to @lopsided98, and @quantum9innovation seems to [start working on Gazebo packaging](https://github.com/ArcturusNavigation/arcturus_nix/issues/10).

---

<div class="post-metadata">

### Author: ![shamrocklee](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/shamrocklee/32/28815_2.png) [@shamrocklee](https://discourse.nixosstag.fcio.net/u/shamrocklee)
#### Post date: [March 20, 2025, 4:45pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/6 "2025-03-20T16:45:53Z")

</div>

> [@notwren](#):
>
> but I suspect it’s probably an underpay for the amount of work to get this compiling

Putting bounty on each dependency component would make the payment more reasonable and the goal more reachable.

---

<div class="post-metadata">

### Author: ![quantum9innovation](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/quantum9innovation/32/27873_2.png) [@quantum9innovation](https://discourse.nixosstag.fcio.net/u/quantum9innovation)
#### Post date: [March 24, 2025, 1:51am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/7 "2025-03-24T01:51:57Z")

</div>

I will be experimenting with Gazebo on Nix in the coming weeks/months. It should definitely be possible to get working correctly but may take some time to iron out dependency issues.

---

<div class="post-metadata">

### Author: ![shamrocklee](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/shamrocklee/32/28815_2.png) [@shamrocklee](https://discourse.nixosstag.fcio.net/u/shamrocklee)
#### Post date: [March 27, 2025, 3:27pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/8 "2025-03-27T15:27:41Z")

</div>

Glad to hear that! I actually had some progress, but there are still quite some packages left.

Many of them come with several “components”, which will be implicitly disabled with a warning message when their dependencies aren’t met. I used programmatically generated package tests with CMake-output-log-`grep`ping logic to guard them.

If you are interested, I’ll open a draft PR this weekend.

---

<div class="post-metadata">

### Author: ![shamrocklee](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/shamrocklee/32/28815_2.png) [@shamrocklee](https://discourse.nixosstag.fcio.net/u/shamrocklee)
#### Post date: [March 31, 2025, 1:18am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/9 "2025-03-31T01:18:55Z")

</div>

@quantum9innovation, here is the draft PR.

There are still quite a few packages left, and my bandwidth on this is a bit limited. Contributions are welcome!

> <https://github.com/NixOS/nixpkgs/pull/394757>
>
> This PR provides \[the Gazebo Simulator\](https://github.com/gazebosim/gz-sim) and… its dependencies. This PR is packaging the modular Gazebo Simulator packages (previously known as Ionic), not the monolithic Cazebo Classic.
> 
> \## Things done
> 
> 
> 
> \- Built on platform(s)
> - \[\] x86\_64-linux
> - \[\] aarch64-linux
> - \[\] x86\_64-darwin
> - \[\] aarch64-darwin
> \- For non-Linux: Is sandboxing enabled in \`nix.conf\`? (See \[Nix manual\](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
> - \[\] \`sandbox = relaxed\`
> - \[\] \`sandbox = true\`
> \- \[\] Tested, as applicable:
> - \[NixOS test(s)\](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside \[nixos/tests\](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
> - and/or \[package tests\](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
> - or, for functions and "core" functionality, tests in \[lib/tests\](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or \[pkgs/test\](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
> - made sure NixOS tests are \[linked\](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#linking-nixos-module-tests-to-a-package) to the relevant packages
> \- \[\] Tested compilation of all packages that depend on this change using \`nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"\`. Note: all changes have to be committed, also see \[nixpkgs-review usage\](https://github.com/Mic92/nixpkgs-review#usage)
> \- \[\] Tested basic functionality of all binary files (usually in \`./result/bin/\`)
> \- \[25.05 Release Notes\](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) (or backporting \[24.11\](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) and \[25.05\](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) Release notes)
> - \[\] (Package updates) Added a release notes entry if the change is major or breaking
> - \[\] (Module updates) Added a release notes entry if the change is significant
> - \[\] (Module addition) Added a release notes entry if adding a new NixOS module
> \- \[\] Fits \[CONTRIBUTING.md\](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
> 
> \<!--
> To help with the large amounts of pull requests, we would appreciate your
> reviews of other pull requests, especially simple package updates. Just leave a
> comment describing what you have tested in the relevant package/service.
> Reviewing helps to reduce the average time-to-merge for everyone.
> Thanks a lot if you do!
> 
> List of open PRs: https://github.com/NixOS/nixpkgs/pulls
> Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
> \--\>
> 
> \---
> 
> Add a :+1: \[reaction\] to \[pull requests you find important\].
> 
> \[reaction\]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
> \[pull requests you find important\]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc

---

<div class="post-metadata">

### Author: ![quantum9innovation](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/quantum9innovation/32/27873_2.png) [@quantum9innovation](https://discourse.nixosstag.fcio.net/u/quantum9innovation)
#### Post date: [March 31, 2025, 1:46am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/10 "2025-03-31T01:46:34Z")

</div>

This is amazing! I’m guessing the main gz-sim package still needs to be added along with remaining dependencies, since I didn’t see a Nix expression for that in the PR (though I could be mistaken). I found the official installation instructions for building it from source here: [Gazebo Sim: Installation](https://gazebosim.org/api/sim/9/install.html). I would be happy to help with the remaining packages when I get a chance—great to see you are making progress.

---

<div class="post-metadata">

### Author: ![shamrocklee](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/shamrocklee/32/28815_2.png) [@shamrocklee](https://discourse.nixosstag.fcio.net/u/shamrocklee)
#### Post date: [March 31, 2025, 5:38am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/11 "2025-03-31T05:38:31Z")

</div>

> [@quantum9innovation](#):
>
> I’m guessing the main gz-sim package still needs to be added along with remaining dependencies, since I didn’t see a Nix expression for that in the PR (though I could be mistaken).

I didn’t push it up, since it still require quite a few dependencies (some other `gz-*` packages) to build.

Should I upload the half-finished `gz-sim` package?

---

<div class="post-metadata">

### Author: ![quantum9innovation](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/quantum9innovation/32/27873_2.png) [@quantum9innovation](https://discourse.nixosstag.fcio.net/u/quantum9innovation)
#### Post date: [March 31, 2025, 5:58am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/12 "2025-03-31T05:58:36Z")

</div>

Sure, that would be helpful just to see how you’re planning on packaging everything together. If you could send a list of the remaining dependencies I can work on the relevant Nix expressions for them this week.

---

<div class="post-metadata">

### Author: ![shamrocklee](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/shamrocklee/32/28815_2.png) [@shamrocklee](https://discourse.nixosstag.fcio.net/u/shamrocklee)
#### Post date: [March 31, 2025, 1:00pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/13 "2025-03-31T13:00:40Z")

</div>

`gz-sim` is now inside the PR.

---

<div class="post-metadata">

### Author: ![quantum9innovation](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/quantum9innovation/32/27873_2.png) [@quantum9innovation](https://discourse.nixosstag.fcio.net/u/quantum9innovation)
#### Post date: [April 2, 2025, 2:44am UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/14 "2025-04-02T02:44:43Z")

</div>

@shamrocklee I started on implementing the remaining packages, but still have to test if they work: [remaining dependencies by quantum9Innovation · Pull Request #1 · ShamrockLee/nixpkgs · GitHub](https://github.com/ShamrockLee/nixpkgs/pull/1). Let me know if I’m doing something wrong, since I just followed the template you created for the other Gazebo packages (I also need to specify certain external dependencies).

Also I think we should take a look at [Nix build environment by blaggacao · Pull Request #24635 · PX4/PX4-Autopilot · GitHub](https://github.com/PX4/PX4-Autopilot/pull/24635) since this seems to be practically equivalent to what we’re trying to implement. Apparently there is a segfault issue, but I have not tested this to see if I can reproduce it and what steps can be taken to address it.

---

<div class="post-metadata">

### Author: ![notwren](https://discourse.nixosstag.fcio.net/user_avatar/discourse.nixosstag.fcio.net/notwren/32/27367_2.png) [@notwren](https://discourse.nixosstag.fcio.net/u/notwren)
#### Post date: [April 27, 2025, 9:56pm UTC](https://discourse.nixosstag.fcio.net/t/either-50-bounty-or-50-hr-pair-coding-bounty-xtdrone/53376/16 "2025-04-27T21:56:46Z")

</div>

Originally, the one off bounty was significantly lower than the per hour bounty because I was hoping to get some help with this as I was relatively new to nix builds of this complexity. I’ve done some work since then ([gist here](https://gist.github.com/drawnwren/a53506ea7864b7eeaaca211fdfa9555c).)

The main problems continue to be,

1. px4 build uses git egregiously, so getting exactly the right functionality patched and replaced is still a bit off.
2. px4 build expects its submodule dependencies to be available as source and is tied pretty tightly to the filesystem structure
