1{
2 lib,
3 nix-update-script,
4 buildNpmPackage,
5 fetchFromGitHub,
6 nodejs_22,
7 kwin,
8 kpackage,
9 zip,
10}:
11buildNpmPackage (finalAttrs: {
12 pname = "krohnkite";
13 version = "0.9.9.2";
14
15 src = fetchFromGitHub {
16 owner = "anametologin";
17 repo = "krohnkite";
18 tag = finalAttrs.version;
19 hash = "sha256-gulKg23BeWL270B2omRYJIuAHIsKu1cBVpimgButM9I=";
20 };
21
22 npmDepsHash = "sha256-Q/D6s0wOPSEziE1dBXgTakjhXCGvzhvLVS7zXcZlPCI=";
23
24 dontWrapQtApps = true;
25
26 nodejs = nodejs_22;
27
28 nativeBuildInputs = [
29 kpackage
30 zip
31 kwin
32 ];
33
34 postPatch = ''
35 cp ${./package-lock.json} package-lock.json
36 '';
37
38 npmBuildScript = "tsc";
39
40 installPhase = ''
41 runHook preInstall
42
43 substituteInPlace Makefile --replace-fail '7z a -tzip' 'zip -r'
44 # Override PROJECT_VER and PROJECT_REV because we don't have .git
45 make \
46 KWINPKG_FILE=krohnkite.kwinscript \
47 PROJECT_REV=${finalAttrs.version} \
48 PROJECT_VER=${finalAttrs.version} \
49 krohnkite.kwinscript
50 kpackagetool6 --type=KWin/Script --install=krohnkite.kwinscript --packageroot=$out/share/kwin/scripts
51
52 runHook postInstall
53 '';
54
55 passthru.updateScript = nix-update-script { };
56
57 meta = {
58 description = "Dynamic Tiling Extension for KWin 6";
59 homepage = "https://github.com/anametologin/krohnkite";
60 changelog = "https://github.com/anametologin/krohnkite/releases/tag/${finalAttrs.version}";
61 license = lib.licenses.mit;
62 maintainers = with lib.maintainers; [
63 ben9986
64 dramforever
65 ];
66 platforms = lib.platforms.all;
67 };
68})