base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / lo / lorien / package.nix
blob1f86c6dd2ed07418e1e563a1904ad7bedc5ef183
1 { lib
2 , stdenv
3 , fetchFromGitHub
5 , autoPatchelfHook
6 , copyDesktopItems
7 , makeDesktopItem
9 , godot3-export-templates
10 , godot3-headless
12 , alsa-lib
13 , libGL
14 , libGLU
15 , libpulseaudio
16 , libX11
17 , libXcursor
18 , libXext
19 , libXfixes
20 , libXi
21 , libXinerama
22 , libXrandr
23 , libXrender
24 , zlib
25 , udev # for libudev
28 let
29   preset =
30     if stdenv.hostPlatform.isLinux then "Linux/X11"
31     else if stdenv.hostPlatform.isDarwin then "Mac OSX"
32     else throw "unsupported platform";
34 stdenv.mkDerivation rec {
35   pname = "lorien";
36   version = "0.6.0";
38   src = fetchFromGitHub {
39     owner = "mbrlabs";
40     repo = "Lorien";
41     rev = "v${version}";
42     sha256 = "sha256-mPv/3hyLGF3IUy6cKfGoABidIsyw4UfmhfhS4AD72K8=";
43   };
45   nativeBuildInputs = [
46     autoPatchelfHook
47     copyDesktopItems
48     godot3-headless
49   ];
51   buildInputs = [
52     alsa-lib
53     libGL
54     libGLU
55     libX11
56     libXcursor
57     libXext
58     libXfixes
59     libXi
60     libXinerama
61     libXrandr
62     libXrender
63     zlib
64     udev
65   ];
67   desktopItems = [
68     (makeDesktopItem {
69       name = "lorien";
70       exec = "lorien";
71       icon = "lorien";
72       desktopName = "Lorien";
73       genericName = "Whiteboard";
74       comment = meta.description;
75       categories = [ "Graphics" "Office" ];
76       keywords = [ "whiteboard" ];
77     })
78   ];
80   buildPhase = ''
81     runHook preBuild
83     # Cannot create file '/homeless-shelter/.config/godot/projects/...'
84     export HOME=$TMPDIR
86     # Link the export-templates to the expected location. The --export commands
87     # expects the template-file at .../templates/{godot-version}.stable/linux_x11_64_release
88     mkdir -p $HOME/.local/share/godot
89     ln -s ${godot3-export-templates}/share/godot/templates $HOME/.local/share/godot
91     mkdir -p $out/share/lorien
93     godot3-headless --path lorien --export "${preset}" $out/share/lorien/lorien
95     runHook postBuild
96   '';
98   installPhase = ''
99     runHook preInstall
101     mkdir -p $out/bin
102     ln -s $out/share/lorien/lorien $out/bin
104     # Patch binaries.
105     interpreter=$(cat $NIX_CC/nix-support/dynamic-linker)
106     patchelf \
107       --set-interpreter $interpreter \
108       --set-rpath ${lib.makeLibraryPath buildInputs} \
109       $out/share/lorien/lorien
111     install -Dm644 images/lorien.png $out/share/pixmaps/lorien.png
113     runHook postInstall
114   '';
116   runtimeDependencies = map lib.getLib [
117     alsa-lib
118     libpulseaudio
119     udev
120   ];
122   meta = with lib; {
123     homepage = "https://github.com/mbrlabs/Lorien";
124     description = "An infinite canvas drawing/note-taking app";
125     longDescription = ''
126       An infinite canvas drawing/note-taking app that is focused on performance,
127       small savefiles and simplicity
128     '';
129     license = licenses.mit;
130     platforms   = platforms.unix;
131     maintainers = with maintainers; [ hqurve ];
132     mainProgram = "lorien";
133   };