Let the user override dfVersion in dwarf-fortress-full
This commit is contained in:
parent
f14d3b4795
commit
7a5521537a
@ -6,26 +6,48 @@
|
|||||||
#
|
#
|
||||||
# If this is your first time here, you should probably install the dwarf-fortress-full package,
|
# If this is your first time here, you should probably install the dwarf-fortress-full package,
|
||||||
# for instance with:
|
# 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
|
# 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
|
# using the other packages here.
|
||||||
# how.
|
#
|
||||||
|
# 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 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
|
# you un-symlink them and edit, then the scripts will avoid overwriting your
|
||||||
# changes on later launches, but consider extending the wrapper with your
|
# changes on later launches, but consider extending the wrapper with your
|
||||||
# desired options instead.
|
# desired options instead.
|
||||||
#
|
|
||||||
# Although both dfhack and dwarf therapist are included in the lazy pack, you
|
with lib;
|
||||||
# can only use one at a time. DFHack does have therapist-like features, so this
|
|
||||||
# may or may not be a problem.
|
|
||||||
|
|
||||||
let
|
let
|
||||||
callPackage = pkgs.newScope self;
|
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: {
|
df-games = lib.listToAttrs (map (dfVersion: {
|
||||||
name = "dwarf-fortress_${lib.replaceStrings ["."] ["_"] dfVersion}";
|
name = versionToName dfVersion;
|
||||||
value =
|
value =
|
||||||
let
|
let
|
||||||
# I can't believe this syntax works. Spikes of Nix code indeed...
|
# I can't believe this syntax works. Spikes of Nix code indeed...
|
||||||
@ -59,9 +81,14 @@ let
|
|||||||
|
|
||||||
self = rec {
|
self = rec {
|
||||||
df-hashes = builtins.fromJSON (builtins.readFile ./game.json);
|
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 { };
|
soundSense = callPackage ./soundsense.nix { };
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
{ stdenvNoCC, lib, buildEnv
|
{ stdenvNoCC, lib, buildEnv, callPackage
|
||||||
, dwarf-fortress, themes
|
, df-games, themes, latestVersion, versionToName
|
||||||
|
, dfVersion ? latestVersion
|
||||||
# This package should, at any given time, provide an opinionated "optimal"
|
# This package should, at any given time, provide an opinionated "optimal"
|
||||||
# DF experience. It's the equivalent of the Lazy Newbie Pack, that is, and
|
# DF experience. It's the equivalent of the Lazy Newbie Pack, that is, and
|
||||||
# should contain every utility available.
|
# should contain every utility available unless you disable them.
|
||||||
, enableDFHack ? stdenvNoCC.isLinux
|
, enableDFHack ? stdenvNoCC.isLinux
|
||||||
, enableTWBT ? enableDFHack
|
, enableTWBT ? enableDFHack
|
||||||
, enableSoundSense ? true
|
, enableSoundSense ? true
|
||||||
@ -16,6 +17,14 @@
|
|||||||
, enableFPS ? false
|
, enableFPS ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
dfGame = versionToName dfVersion;
|
||||||
|
dwarf-fortress = if hasAttr dfGame df-games
|
||||||
|
then getAttr dfGame df-games
|
||||||
|
else throw "Unknown Dwarf Fortress version: ${dfVersion}";
|
||||||
|
in
|
||||||
buildEnv {
|
buildEnv {
|
||||||
name = "dwarf-fortress-full";
|
name = "dwarf-fortress-full";
|
||||||
paths = [
|
paths = [
|
||||||
@ -28,7 +37,7 @@ buildEnv {
|
|||||||
|
|
||||||
meta = with stdenvNoCC.lib; {
|
meta = with stdenvNoCC.lib; {
|
||||||
description = "An opinionated wrapper for Dwarf Fortress";
|
description = "An opinionated wrapper for Dwarf Fortress";
|
||||||
maintainers = with maintainers; [ Baughn ];
|
maintainers = with maintainers; [ Baughn numinit ];
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
homepage = https://github.com/NixOS/nixpkgs/;
|
homepage = https://github.com/NixOS/nixpkgs/;
|
||||||
|
Loading…
Reference in New Issue
Block a user