Compare commits
11 Commits
307a217a1b
...
3afc3e370b
| Author | SHA1 | Date | |
|---|---|---|---|
| 3afc3e370b | |||
| 8423bbf30f | |||
| 98673e8d34 | |||
| c32ffd6101 | |||
| 55c3b4e4dd | |||
| 8396927ec6 | |||
|
|
71eae2f11e | ||
|
|
10f28cf11c | ||
|
|
61c63737af | ||
|
|
1b2a146025 | ||
|
|
539bb2ac7c |
12
README.org
12
README.org
@@ -44,7 +44,7 @@ Bring in the input, and build your TF2 config as a package:
|
||||
#+begin_src nix
|
||||
{
|
||||
inputs = {
|
||||
tf2-nix.url = "path:///home/crumb/src/tf2-nix";
|
||||
tf2-nix.url = "gitlab:msyds/tf2-nix";
|
||||
};
|
||||
|
||||
outputs = { self, ... }@inputs:
|
||||
@@ -112,12 +112,20 @@ TODO!
|
||||
|
||||
** Packages
|
||||
|
||||
Documentation is a WIP }:P. For now, you can explore the flake outputs using ~nix repl~.
|
||||
The package set is best explored via ~nix repl~ and ~nix flake show~. Some notable subsets are listed here:
|
||||
|
||||
*** HUDs
|
||||
|
||||
A package set of HUDs is generated primarily using data from [[https://github.com/mastercomfig/hud-db][hud-db]], complemented with a handful of manual additions and overrides.
|
||||
|
||||
*** Maps
|
||||
|
||||
The map list currently consists of primarily rocket jumping courses, per [[https://jumpacademy.tf/fastdl][JumpAcademy.tf]].
|
||||
|
||||
*** Mastercomfig
|
||||
|
||||
[[https://comfig.app/][Mastercomfig]] presets and addons are packaged from their [[https://github.com/mastercomfig/mastercomfig/releases][GitHub releases]].
|
||||
|
||||
* Contributing
|
||||
|
||||
Don't hesitate to open issues/PRs not only for "real issues" (bugs, missing features) but for poor UX, bad code, or anything else.
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
tf2-nix.url = "path:///home/crumb/src/tf2-nix";
|
||||
tf2-nix = {
|
||||
url = "gitlab:msyds/tf2-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, ... }@inputs: {
|
||||
|
||||
17
flake.nix
17
flake.nix
@@ -14,8 +14,23 @@
|
||||
inputs.flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import inputs.nixpkgs { inherit system; };
|
||||
inherit (pkgs) lib;
|
||||
tf2Pkgs = mkTf2Pkgs { inherit pkgs; };
|
||||
in {
|
||||
legacyPackages = mkTf2Pkgs pkgs;
|
||||
legacyPackages = tf2Pkgs;
|
||||
packages = lib.mergeAttrsList (lib.flip map [
|
||||
[]
|
||||
[ "huds" ]
|
||||
[ "maps" ]
|
||||
[ "mastercomfig" "addons" ]
|
||||
[ "mastercomfig" "presets" ]
|
||||
] (attrPath:
|
||||
lib.pipe tf2Pkgs [
|
||||
(lib.getAttrFromPath attrPath)
|
||||
(lib.filterAttrs (_: v: lib.isDerivation v))
|
||||
(lib.mapAttrs' (k: v: lib.nameValuePair (lib.concatStringsSep "_" (attrPath ++ [k])) v))
|
||||
]
|
||||
));
|
||||
})
|
||||
// {
|
||||
lib = { inherit mkTf2Pkgs; };
|
||||
|
||||
@@ -1,29 +1,33 @@
|
||||
{ stdenv, lib }:
|
||||
|
||||
{ pname
|
||||
, version ? ""
|
||||
, version ? null
|
||||
, custom ? []
|
||||
, cfg ? []
|
||||
, maps ? []
|
||||
# Extra arguments to pass to stdenv.mkDerivation.
|
||||
# Extra arguments to pass to stdenv.mkDerivation. Exists for
|
||||
# backward-compatibility.
|
||||
, env ? {}
|
||||
, ...
|
||||
}@args:
|
||||
|
||||
let
|
||||
version-suffix = lib.optionalString (version != null) "-${version}";
|
||||
name = pname + version-suffix;
|
||||
|
||||
# Creates and populates an output under $out/${output}. The parameter
|
||||
# `output` is a TF2 config output, i.e. "cfg", "custom", or "maps".
|
||||
make-output = output: var:
|
||||
lib.optionalString (var != []) ''
|
||||
mkdir -p "$out/${output}"
|
||||
${lib.toShellVar "outputList_${output}" var}
|
||||
for i in "''${outputList_${output}[@]}"; do
|
||||
name="$(stripHash "$i")"
|
||||
wrapperDir="#''${name}#"
|
||||
piece="$(stripHash "$i")"
|
||||
wrapperDir="#''${piece}#"
|
||||
if [ -d "$wrapperDir" ]; then
|
||||
mv "$wrapperDir"/* "$out/${output}/"
|
||||
else
|
||||
mv "$name" "$out/${output}/$name"
|
||||
mv "$piece" "$out/${output}/$piece"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
@@ -34,11 +38,19 @@ let
|
||||
if builtins.length allSrcs == 1
|
||||
then { src = builtins.head allSrcs; }
|
||||
else { srcs = allSrcs; sourceRoot = "."; };
|
||||
|
||||
# Arguments unused by mkTf2Config fall through to mkDerivation.
|
||||
fallthroughArgs = lib.removeAttrs args [
|
||||
"custom"
|
||||
"cfg"
|
||||
"maps"
|
||||
"env"
|
||||
];
|
||||
in stdenv.mkDerivation ({
|
||||
inherit name;
|
||||
inherit pname version;
|
||||
# Adapted from stdenv's _defaultUnpack().
|
||||
unpackCmd = ''
|
||||
echo "hello i am unpackcmdjkj"
|
||||
set -e
|
||||
case "$curSrc" in
|
||||
*.vpk)
|
||||
@@ -81,4 +93,4 @@ in stdenv.mkDerivation ({
|
||||
${make-output "custom" custom}
|
||||
${make-output "maps" maps}
|
||||
'';
|
||||
} // srcArg // env)
|
||||
} // srcArg // fallthroughArgs // env)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
pname = "deerhud";
|
||||
custom = [
|
||||
(fetchFromGitHub {
|
||||
name = "deerhud";
|
||||
name = "deerhud-src";
|
||||
owner = "DeerUwU";
|
||||
repo = "deerhud-tf2";
|
||||
rev = "78a24effbc66bc78b4bb557228eaa0195db3270c";
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
{ mkTf2Config, fetchFromGitHub }:
|
||||
{ mkTf2Config, fetchFromGitHub, lib }:
|
||||
|
||||
builtins.mapAttrs
|
||||
(name: e: mkTf2Config {
|
||||
pname = name;
|
||||
env.description = e.description;
|
||||
custom = [
|
||||
(fetchFromGitHub (builtins.removeAttrs e.src ["__type"] // {
|
||||
inherit name;
|
||||
name = "${name}-src";
|
||||
}))
|
||||
];
|
||||
meta = {
|
||||
inherit (e) description;
|
||||
# Hud-db currently requires all HUDs to be on GitHub. We can thus
|
||||
# somewhat-safely assume the homepage. A number of packages have
|
||||
# explicitly-set homepages, and we do not yet support them. Doing so
|
||||
# requires patching the fetch-hud-db script, which I intend to do soonish.
|
||||
homepage = "https://github.com/${e.src.owner}/${e.src.repo}";
|
||||
platforms = lib.platforms.all;
|
||||
# The biggest outstanding issue is recording the license here. Hud-db
|
||||
# does not track license info, whiuch is a big issue IMO.
|
||||
};
|
||||
})
|
||||
(builtins.fromJSON (builtins.readFile ./hud-db.json))
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
[clojure.tools.logging :as l]
|
||||
[clojure.string :as str]))
|
||||
|
||||
;; https://github.com/mastercomfig/hud-db is expected to be cloned to
|
||||
;; `hud-db-root`.
|
||||
(def hud-db-root (or (System/getenv "HUD_DB_ROOT")
|
||||
(fs/expand-home "~/git/hud-db")))
|
||||
|
||||
|
||||
2293
tf2/packages/huds/hud-db/hud-db.json
generated
2293
tf2/packages/huds/hud-db/hud-db.json
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user