Skip to content

dvrescue: init at 24.07#386357

Draft
acuteaangle wants to merge 1 commit intoNixOS:masterfrom
acuteaangle:dvrescue
Draft

dvrescue: init at 24.07#386357
acuteaangle wants to merge 1 commit intoNixOS:masterfrom
acuteaangle:dvrescue

Conversation

@acuteaangle
Copy link
Copy Markdown
Contributor

@acuteaangle acuteaangle commented Mar 2, 2025

This is a draft. While the package builds on my main system, I have not yet tested the functionality of all included programs.


This PR adds dvrescue, a tool for transferring videos from DV tapes to a computer, with the ability to check for errors and retry portions of the tape.

Homepage URL:
https://mediaarea.net/DVRescue

Source URL:
https://github.com/mipops/dvrescue

License:
BSD-3-Clause

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)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • 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
  • Tested basic functionality of all binary files (usually in ./result/bin/)
    • dvloupe
    • dvmap
    • dvpackager
    • dvplay
    • dvrescue
    • dvsampler
  • 25.05 Release Notes (or backporting 24.11 and 25.05 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.

Add a 👍 reaction to pull requests you find important.

@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. labels Mar 2, 2025
@acuteaangle acuteaangle force-pushed the dvrescue branch 3 times, most recently from 26503fa to c2322b5 Compare March 2, 2025 13:42
@acuteaangle acuteaangle changed the title dvrescue: init at 0.24.03 dvrescue: init at 24.07 Mar 2, 2025
@acuteaangle
Copy link
Copy Markdown
Contributor Author

acuteaangle commented Mar 2, 2025

The PR message previously included this text:

Additionally, there is currently some confusion over versioning.

  • Upstream refers to versions as yy.mm in all places except git tags, which use v0.yy.mm, with a 0. I am unsure what the canonical version number should be for Nixpkgs, and do not yet know how it may affect nix-update-script. I will try grepping Nixpkgs later for any precedent.
  • Also, what I believe to be the latest stable release, 24.07 – downloadable from the Homepage URL and complete with a changelog – has no git tag, unlike prior versions. I believe this is an error, and have opened an upstream issue for it.

However, this has since been resolved. The current release is now tagged and does not include a 0 in the prefix.

@acuteaangle
Copy link
Copy Markdown
Contributor Author

acuteaangle commented Mar 2, 2025

It seems like many of the secondary utilities are bash scripts. It seems like most try to find mediainfo and ffmpeg using which, although it seems like they first check MEDIAINFO_PATH and FFMPEG_PATH envvars.

dvplay at least also seems to look for a font to use in /usr/share, but there is a similar DEFAULTFONT envvar.

I'm not sure yet whether it would make more sense to wrapProgram a bunch of bash scripts for an envvar or patch them to set it.

dvplay seemingly supports arguments as well to specify the paths for ffmpeg and mediainfo, but not the font.

@acuteaangle acuteaangle force-pushed the dvrescue branch 5 times, most recently from 474f46a to 04eff3c Compare March 2, 2025 17:56
@acuteaangle
Copy link
Copy Markdown
Contributor Author

acuteaangle commented Mar 2, 2025

I was able to use wrapProgram to set PATH to include ffmpeg and mediainfo.

The cleanest solution for the font I know of is substituteInPlace.
Since Liberation is the last fallback font it checks, Darwin should still find an Apple font first as intended, but will also fallback to Liberation if that fails.

Interpolating the font package directly is the best way I know how to do this – I imagine it’s possible to have a NixOS system without Liberation installed – so that dependency relationship should be tracked.
I don't know of any simple way to let this choose an arbitrary font without fontconfig.

I don’t know how stable the {pkgs.liberation_ttf}/share/fonts/truetype/LiberationSans-Regular.ttf path is expected to be. I threw in an assertion for now just in case.

@libbyhopfauf
Copy link
Copy Markdown

@acuteaangle it looks like you're texting the last release verses the latest daily build. You might want to use that as it has the most up-to-date code.

@acuteaangle
Copy link
Copy Markdown
Contributor Author

Status as of 2025-08-09:

I’ve had significant issues getting FireWire to function correctly on NixOS on my hardware.

I needed this janky workaround to fix some sort of hotplug issue.

Even with that workaround, dvrescue seems unable to transfer from my camcorder, while dvgrab functions as expected.

dvrescue can successfully drop duplicated frames and merge multiple transfers done with dvgrab, however.

This package does seem able to capture when run from an old Linux Mint live USB with Nix installed.

dvplay functions as expected on a file with this patch applied; however, I’m not sure how it’s expected to be used, considering it needs a patch to do what I would otherwise assume is its primary purpose.


Needing to constantly pull-the-plug reset my main system, have a web of camcorder cables all over my desk, try 6 different kernel versions in an attempt to replicate what works on other distros, etc. is very disruptive to getting anything else done, so I haven’t been able to work on this since the last activity here.

This package builds (for me), and some functionality works (for me), but the main purpose of the program doesn’t (for me), and I don’t know why.

Without figuring out why FireWire is unreliable (for me? everyone?) on NixOS, I can’t really test dvrescue fully.


it looks like you're texting the last release verses the latest daily build. You might want to use that as it has the most up-to-date code.

If anyone else is trying to get this working, feel free to test the latest upstream to see if works on NixOS—I’m too busy at the moment to do it myself :(
In the long run, however, I think we should track only the release versions—setting up my MiniDV capture kit to test every new upstream commit sounds like hell, even if it’s working properly.

@acuteaangle
Copy link
Copy Markdown
Contributor Author

hmm. I have a lot going on currently, but I’ll probably take another shot at getting this working with the latest upstream commit soon(ish)—I’d love to be able to contribute to dvrescue, and being able to test things on my main system is a bit of a prerequisite for that.

@nixpkgs-ci nixpkgs-ci bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants