···1+{ stdenv, fetchFromGitHub, autoreconfHook, cryptsetup }:
2+3+stdenv.mkDerivation rec {
4+ name = "bruteforce-luks-${version}";
5+ version = "1.2.0";
6+7+ src = fetchFromGitHub {
8+ sha256 = "0d01rn45dg7ysa75r8z0b31hj1z7w47vv5vr359pl71zxgzngjd2";
9+ rev = version;
10+ repo = "bruteforce-luks";
11+ owner = "glv2";
12+ };
13+14+ nativeBuildInputs = [ autoreconfHook ];
15+ buildInputs = [ cryptsetup ];
16+17+ enableParallelBuilding = true;
18+19+ doCheck = true;
20+21+ meta = with stdenv.lib; {
22+ inherit (src.meta) homepage;
23+ description = "Cracks passwords of LUKS encrypted volumes";
24+ longDescription = ''
25+ The program tries to decrypt at least one of the key slots by trying
26+ all the possible passwords. It is especially useful if you know
27+ something about the password (i.e. you forgot a part of your password but
28+ still remember most of it). Finding the password of a volume without
29+ knowing anything about it would take way too much time (unless the
30+ password is really short and/or weak). It can also use a dictionary.
31+ '';
32+ license = licenses.gpl3Plus;
33+ platforms = platforms.linux;
34+ maintainers = with maintainers; [ nckx ];
35+ };
36+}