From 7a5521537a1715ac7f7f5e420cef865304383b82 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 15 Jul 2018 05:38:30 +0000 Subject: Let the user override dfVersion in dwarf-fortress-full --- pkgs/games/dwarf-fortress/default.nix | 47 +++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 10 deletions(-) (limited to 'pkgs/games/dwarf-fortress/default.nix') diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix index 87bcc44b815..1ee33fb27f3 100644 --- a/pkgs/games/dwarf-fortress/default.nix +++ b/pkgs/games/dwarf-fortress/default.nix @@ -6,26 +6,48 @@ # # If this is your first time here, you should probably install the dwarf-fortress-full package, # for instance with: -# `environment.systemPackages = [ pkgs.dwarf-fortress-packages.dwarf-fortress-full ];` +# +# environment.systemPackages = [ pkgs.dwarf-fortress-packages.dwarf-fortress-full ]; # # You can adjust its settings by using override, or compile your own package by -# using the other packages here. Take a look at lazy-pack.nix to get an idea of -# how. +# using the other packages here. +# +# For example, you can enable the FPS indicator, disable the intro, pick a +# theme other than phoebus (the default for dwarf-fortress-full), _and_ use +# an older version with something like: +# +# environment.systemPackages = [ +# (pkgs.dwarf-fortress-packages.dwarf-fortress-full.override { +# dfVersion = "0.44.11"; +# theme = "cla"; +# enableIntro = false; +# enableFPS = true; +# }) +# ] +# +# Take a look at lazy-pack.nix to see all the other options. # # You will find the configuration files in ~/.local/share/df_linux/data/init. If # you un-symlink them and edit, then the scripts will avoid overwriting your # changes on later launches, but consider extending the wrapper with your # desired options instead. -# -# Although both dfhack and dwarf therapist are included in the lazy pack, you -# can only use one at a time. DFHack does have therapist-like features, so this -# may or may not be a problem. + +with lib; let callPackage = pkgs.newScope self; + # The latest Dwarf Fortress version. Maintainers: when a new version comes + # out, ensure that (unfuck|dfhack|twbt) are all up to date before changing + # this. + latestVersion = "0.44.12"; + + # Converts a version to a package name. + versionToName = version: "dwarf-fortress_${lib.replaceStrings ["."] ["_"] version}"; + + # A map of names to each Dwarf Fortress package we know about. df-games = lib.listToAttrs (map (dfVersion: { - name = "dwarf-fortress_${lib.replaceStrings ["."] ["_"] dfVersion}"; + name = versionToName dfVersion; value = let # I can't believe this syntax works. Spikes of Nix code indeed... @@ -59,9 +81,14 @@ let self = rec { df-hashes = builtins.fromJSON (builtins.readFile ./game.json); - dwarf-fortress = df-games.dwarf-fortress_0_44_12; + + dwarf-fortress = getAttr (versionToName latestVersion) df-games; - dwarf-fortress-full = callPackage ./lazy-pack.nix { }; + dwarf-fortress-full = callPackage ./lazy-pack.nix { + inherit versionToName; + inherit latestVersion; + inherit df-games; + }; soundSense = callPackage ./soundsense.nix { }; -- cgit 1.4.1