Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / misc / chrysalis / default.nix
blobf5c6da15bd993f9c686f6deb546fad3afa0cefa2
1 { lib, appimageTools, fetchurl }:
3 let
4   pname = "chrysalis";
5   version = "0.13.2";
6   name = "${pname}-${version}-binary";
7   src = fetchurl {
8     url =
9       "https://github.com/keyboardio/${pname}/releases/download/v${version}/${pname}-${version}-x64.AppImage";
10     hash =
11       "sha512-WuItdQ/hDxbZZ3zulHI74NUkuYfesV/31rA1gPakCFgX2hpPrmKzwUez2vqt4N5qrGyphrR0bcelUatGZhOn5A==";
12   };
13   appimageContents = appimageTools.extract { inherit name src; };
14 in appimageTools.wrapType2 rec {
15   inherit name pname src;
17   multiArch = false;
18   extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [ p.glib ];
20   # Also expose the udev rules here, so it can be used as:
21   #   services.udev.packages = [ pkgs.chrysalis ];
22   # to allow non-root modifications to the keyboards.
24   extraInstallCommands = ''
25     mv $out/bin/{${name},${pname}}
27     install -m 444 \
28       -D ${appimageContents}/usr/lib/chrysalis/resources/static/udev/60-kaleidoscope.rules \
29       -t $out/lib/udev/rules.d
31     install -m 444 \
32         -D ${appimageContents}/Chrysalis.desktop \
33         -t $out/share/applications
34     substituteInPlace \
35         $out/share/applications/Chrysalis.desktop \
36         --replace 'Exec=Chrysalis' 'Exec=${pname}'
38     cp -r ${appimageContents}/usr/share/icons $out/share
39   '';
41   meta = with lib; {
42     description = "A graphical configurator for Kaleidoscope-powered keyboards";
43     homepage = "https://github.com/keyboardio/Chrysalis";
44     license = licenses.gpl3;
45     maintainers = with maintainers; [ aw ];
46     platforms = [ "x86_64-linux" ];
47     mainProgram = pname;
48   };