Skip to content

Instantly share code, notes, and snippets.

@markus1189
Created November 16, 2025 09:34
Show Gist options
  • Select an option

  • Save markus1189/488c2710f17ad64798ca8040e16723cb to your computer and use it in GitHub Desktop.

Select an option

Save markus1189/488c2710f17ad64798ca8040e16723cb to your computer and use it in GitHub Desktop.
Cataclysm DDA Git with CDDA-Tilesets for NixOS
{ pkgs, lib ? pkgs.lib, ... }:
let
# Base Cataclysm DDA from git with specific version
cataclysm-dda-base = pkgs.cataclysm-dda-git.override {
version = "2025-11-16";
rev = "7a3e4046a6c80ade503b1443db9c8d58518d19e8";
sha256 = "sha256-0tvYuHODECN4zGD1vQys1+w7wbfr3eR2fuDdiunuTMI=";
};
# CDDA Tilesets from I-am-Erk/CDDA-Tilesets repository
cdda-tilesets = { lib, buildTileSet, fetchFromGitHub }:
let
version = "2025-11-09";
src = fetchFromGitHub {
owner = "I-am-Erk";
repo = "CDDA-Tilesets";
rev = version;
hash = "sha256-UJHC7lD8gwZUQhaW7n/C/W5lw6qkwgpc/zrCgXMof08=";
};
# Helper function to create a tileset package
mkTileset = name: root: buildTileSet {
modName = name;
inherit version src;
modRoot = "gfx/${root}";
};
in {
# Standard tilesets
UltimateCataclysm = mkTileset "UltimateCataclysm" "UltimateCataclysm";
Altica = mkTileset "Altica" "Altica";
MShockXottoPlus = mkTileset "MShockXotto+" "MShockXotto+";
ChibiUltica = mkTileset "Chibi_Ultica" "Chibi_Ultica";
RetroDays = mkTileset "Retrodays" "Retrodays";
NeoDays = mkTileset "NeoDays" "NeoDays";
GiantDays = mkTileset "GiantDays" "GiantDays";
BrownLikeBears = mkTileset "BrownLikeBears" "BrownLikeBears";
HollowMoon = mkTileset "HollowMoon" "HollowMoon";
MushroomDream = mkTileset "Mushroom-Dream" "Mushroom-Dream";
# Isometric variants
UlticaIso = mkTileset "Ultica_iso" "Ultica_iso";
IsoMSXPlus = mkTileset "IsoMSX+" "IsoMSX+";
HitButtonIso = mkTileset "HitButton_iso" "HitButton_iso";
# Overmap tilesets
LarwickOvermap = mkTileset "Larwick_Overmap" "Larwick_Overmap";
ASCIIOvermap = mkTileset "ASCII_Overmap" "ASCII_Overmap";
SurveyorsMap = mkTileset "SurveyorsMap" "SurveyorsMap";
PenAndPaper = mkTileset "PenAndPaper" "PenAndPaper";
};
# Create the cataclysm-dda package with tilesets
cataclysm-dda-with-tilesets = cataclysm-dda-base.withMods (mods:
with mods.extend (_: super: {
tileset = super.tileset // (cdda-tilesets {
inherit (pkgs) lib fetchFromGitHub;
inherit (pkgs.cataclysmDDA) buildTileSet;
});
});
[
# Select which tilesets you want to install
# Uncomment the ones you want:
tileset.UltimateCataclysm
# tileset.Altica
# tileset.MShockXottoPlus
# tileset.ChibiUltica
# tileset.RetroDays
# tileset.NeoDays
# tileset.GiantDays
# tileset.BrownLikeBears
# tileset.HollowMoon
# tileset.MushroomDream
# Isometric variants:
# tileset.UlticaIso
# tileset.IsoMSXPlus
# tileset.HitButtonIso
# Overmap tilesets:
# tileset.LarwickOvermap
# tileset.ASCIIOvermap
# tileset.SurveyorsMap
# tileset.PenAndPaper
# You can also include the default UndeadPeople tileset:
tileset.UndeadPeople
]
);
in
cataclysm-dda-with-tilesets
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment