nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5
6 legacy ? false,
7 libinput,
8
9 pkg-config,
10 makeWrapper,
11
12 openal,
13 alure,
14 libXtst,
15 libX11,
16}:
17
18let
19 inherit (lib) optionals;
20in
21stdenv.mkDerivation rec {
22 pname = "bucklespring";
23 version = "1.5.1";
24
25 src = fetchFromGitHub {
26 owner = "zevv";
27 repo = pname;
28 rev = "v${version}";
29 sha256 = "0prhqibivxzmz90k79zpwx3c97h8wa61rk5ihi9a5651mnc46mna";
30 };
31
32 nativeBuildInputs = [
33 pkg-config
34 makeWrapper
35 ];
36
37 buildInputs = [
38 openal
39 alure
40 ]
41 ++ optionals (legacy) [
42 libXtst
43 libX11
44 ]
45 ++ optionals (!legacy) [ libinput ];
46
47 makeFlags = optionals (!legacy) [ "libinput=1" ];
48
49 installPhase = ''
50 runHook preInstall
51
52 mkdir -p $out/share/wav
53 cp -r $src/wav $out/share/.
54 install -D ./buckle.desktop $out/share/applications/buckle.desktop
55 install -D ./buckle $out/bin/buckle
56 wrapProgram $out/bin/buckle --add-flags "-p $out/share/wav"
57
58 runHook postInstall
59 '';
60
61 meta = with lib; {
62 description = "Nostalgia bucklespring keyboard sound";
63 mainProgram = "buckle";
64 longDescription = ''
65 When built with libinput (wayland or bare console),
66 users need to be in the input group to use this:
67 <code>users.users.alice.extraGroups = [ "input" ];</code>
68 '';
69 homepage = "https://github.com/zevv/bucklespring";
70 license = licenses.gpl2Only;
71 platforms = platforms.unix;
72 maintainers = [ maintainers.evils ];
73 };
74}