nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 pkg-config,
7 SDL2,
8 SDL2_mixer,
9 alsa-lib,
10 libpng,
11 pcre,
12 makeDesktopItem,
13}:
14
15stdenv.mkDerivation rec {
16 pname = "ivan";
17 version = "059-unstable-2025-02-20";
18
19 src = fetchFromGitHub {
20 owner = "Attnam";
21 repo = "ivan";
22 rev = "0000b8621bb767b594802e663686d3a1da2c5060";
23 hash = "sha256-vqrQozsNrqW4oqoJ4V5E15AsMEuHq+pyZz7EtiA5euE=";
24 };
25
26 patches = [
27 ./cmake.patch
28 ];
29
30 nativeBuildInputs = [
31 cmake
32 pkg-config
33 ];
34
35 buildInputs = [
36 SDL2
37 SDL2_mixer
38 alsa-lib
39 libpng
40 pcre
41 ];
42
43 hardeningDisable = [ "all" ];
44
45 # Enable wizard mode
46 cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-DWIZARD" ];
47
48 # Help CMake find SDL_mixer.h
49 env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL2_mixer}/include/SDL2";
50
51 # Create "ivan.desktop" file
52 ivanDesktop = makeDesktopItem {
53 name = pname;
54 exec = pname;
55 icon = "ivan.png";
56 desktopName = "IVAN";
57 genericName = pname;
58 categories = [
59 "Game"
60 "AdventureGame"
61 "RolePlaying"
62 ];
63 comment = meta.description;
64 };
65
66 # Create appropriate directories. Copy icons and desktop item to these directories.
67 postInstall = ''
68 mkdir -p $out/share/applications
69 mkdir -p $out/share/icons/hicolor/16x16/apps
70 mkdir -p $out/share/icons/hicolor/32x32/apps
71 mkdir -p $out/share/icons/hicolor/128x128/apps
72 mkdir -p $out/share/icons/hicolor/256x256/apps
73 mkdir -p $out/share/icons/hicolor/512x512/apps
74 cp $src/Graphics/icons/shadowless.iconset/icon_16x16.png $out/share/icons/hicolor/16x16/apps/ivan.png
75 cp $src/Graphics/icons/shadowless.iconset/icon_32x32.png $out/share/icons/hicolor/32x32/apps/ivan.png
76 cp $src/Graphics/icons/shadowless.iconset/icon_128x128.png $out/share/icons/hicolor/128x128/apps/ivan.png
77 cp $src/Graphics/icons/shadowless.iconset/icon_256x256.png $out/share/icons/hicolor/256x256/apps/ivan.png
78 cp $src/Graphics/icons/shadowless.iconset/icon_512x512.png $out/share/icons/hicolor/512x512/apps/ivan.png
79 cp ${ivanDesktop}/share/applications/* $out/share/applications
80 '';
81
82 meta = {
83 description = "Graphical roguelike game";
84 longDescription = ''
85 Iter Vehemens ad Necem (IVAN) is a graphical roguelike game, which currently
86 runs in Windows, DOS, Linux, and OS X. It features advanced bodypart and
87 material handling, multi-colored lighting and, above all, deep gameplay.
88
89 This is a fan continuation of IVAN by members of Attnam.com
90 '';
91 homepage = "https://attnam.com/";
92 license = lib.licenses.gpl2Plus;
93 platforms = lib.platforms.linux;
94 maintainers = [ ];
95 mainProgram = "ivan";
96 };
97}