From 7266a417076eb7e69c8f4f235c640608ed8c624d Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Thu, 7 May 2020 23:48:21 -0400 Subject: [PATCH] Properly configured dwarf fortress The dwarf fortress packages built into nixpkgs are a little silly and a lot overbearing - do a bunch of hacky substitution to pound them into submission so that I can actually configure stuff like SHOW_FLOW_AMOUNTS and AUTOSAVE, which I feel like I need. --- home/home.nix | 8 +---- home/modules/games.nix | 46 +++++++++++++++++++++++++++ home/modules/games/dwarf-fortress.nix | 39 +++++++++++++++++++++++ 3 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 home/modules/games.nix create mode 100644 home/modules/games/dwarf-fortress.nix diff --git a/home/home.nix b/home/home.nix index 950964256..213560b09 100644 --- a/home/home.nix +++ b/home/home.nix @@ -9,6 +9,7 @@ let machine = ./machines/chupacabra.nix; in ./modules/emacs.nix ./modules/email.nix ./modules/firefox.nix + ./modules/games.nix ./modules/i3.nix ./modules/shell.nix ./modules/tarsnap.nix @@ -77,13 +78,6 @@ let machine = ./machines/chupacabra.nix; in spotify playerctl - # games - crawl - (dwarf-fortress-packages.dwarf-fortress-full.override { - enableIntro = false; - enableFPS = true; - }) - # Nix things nix-prefetch-github ]; diff --git a/home/modules/games.nix b/home/modules/games.nix new file mode 100644 index 000000000..14b2d1b4b --- /dev/null +++ b/home/modules/games.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +with pkgs; + +let + + df-orig = dwarf-fortress-packages.dwarf-fortress-original; + + df-full = (dwarf-fortress-packages.dwarf-fortress-full.override { + theme = null; + enableIntro = false; + enableFPS = true; + }); + + init = runCommand "init.txt" {} '' + substitute "${df-orig}/data/init/init.txt" $out \ + --replace "[INTRO:YES]" "[INTRO:NO]" \ + --replace "[VOLUME:255]" "[VOLUME:0]" \ + --replace "[FPS:NO]" "[FPS:YES]" + ''; + + d_init = runCommand "d_init.txt" {} '' + substitute "${df-orig}/data/init/d_init.txt" $out \ + --replace "[AUTOSAVE:NONE]" "[AUTOSAVE:SEASONAL]" \ + --replace "[AUTOSAVE_PAUSE:NO]" "[AUTOSAVE_PAUSE:YES]" \ + --replace "[INITIAL_SAVE:NO]" "[INITIAL_SAVE:YES]" \ + --replace "[EMBARK_WARNING_ALWAYS:NO]" "[EMBARK_WARNING_ALWAYS:YES]" \ + --replace "[VARIED_GROUND_TILES:YES]" "[VARIED_GROUND_TILES:NO]" \ + --replace "[SHOW_FLOW_AMOUNTS:NO]" "[SHOW_FLOW_AMOUNTS:YES]" + ''; + + df = runCommand "dwarf-fortress" {} '' + mkdir -p $out/bin + sed \ + -e '4icp -f ${init} "$DF_DIR/data/init/init.txt"' \ + -e '4icp -f ${d_init} "$DF_DIR/data/init/d_init.txt"' \ + < "${df-full}/bin/dwarf-fortress" >"$out/bin/dwarf-fortress" + chmod +x $out/bin/dwarf-fortress + ''; + +in { + home.packages = [ + crawl + df + ]; +} diff --git a/home/modules/games/dwarf-fortress.nix b/home/modules/games/dwarf-fortress.nix new file mode 100644 index 000000000..8db614566 --- /dev/null +++ b/home/modules/games/dwarf-fortress.nix @@ -0,0 +1,39 @@ +{ pkgs ? import {}, ... }: + +with pkgs; + +rec { + df-orig = dwarf-fortress-packages.dwarf-fortress-original; + + df-full = (dwarf-fortress-packages.dwarf-fortress-full.override { + theme = null; + enableIntro = false; + enableFPS = true; + }); + + init = runCommand "init.txt" {} '' + substitute "${df-orig}/data/init/init.txt" $out \ + --replace "[INTRO:YES]" "[INTRO:NO]" \ + --replace "[VOLUME:255]" "[VOLUME:0]" \ + --replace "[FPS:NO]" "[FPS:YES]" + ''; + + d_init = runCommand "d_init.txt" {} '' + substitute "${df-orig}/data/init/d_init.txt" $out \ + --replace "[AUTOSAVE:NONE]" "[AUTOSAVE:SEASONAL]" \ + --replace "[AUTOSAVE_PAUSE:NO]" "[AUTOSAVE_PAUSE:YES]" \ + --replace "[INITIAL_SAVE:NO]" "[INITIAL_SAVE:YES]" \ + --replace "[EMBARK_WARNING_ALWAYS:NO]" "[EMBARK_WARNING_ALWAYS:YES]" \ + --replace "[VARIED_GROUND_TILES:YES]" "[VARIED_GROUND_TILES:NO]" \ + --replace "[SHOW_FLOW_AMOUNTS:NO]" "[SHOW_FLOW_AMOUNTS:YES]" + ''; + + df = runCommand "dwarf-fortress" {} '' + mkdir -p $out/bin + sed \ + -e '2icp -f ${init} "$DF_DIR/data/init/init.txt"' \ + -e '3icp -f ${d_init} "$DF_DIR/data/init/d_init.txt"' \ + < "${df-full}/bin/dwarf-fortress" >"$out/bin/dwarf-fortress" + ''; + +}