Compare commits

...

11 Commits

Author SHA1 Message Date
3afc3e370b refactor: Fix map file extensions 2025-10-30 14:47:12 -06:00
8423bbf30f Revert "Revert "Fix mkTf2Config derivation names ending with a dash -""
This reverts commit 98673e8d34.
2025-10-30 14:44:23 -06:00
98673e8d34 Revert "Fix mkTf2Config derivation names ending with a dash -"
This reverts commit 61c63737af.

Fixes JumpAcademy maps failing to build.
2025-10-26 02:26:31 -06:00
c32ffd6101 chore: update hud-db 2025-10-26 02:19:41 -06:00
55c3b4e4dd fix(mkTf2Config): Pass additional arguments to mkDerivation 2025-07-06 02:09:10 -06:00
8396927ec6 doc: Say more about the package set 2025-07-06 01:33:30 -06:00
Madeleine
71eae2f11e Merge branch 'patch-2025-06-29--a' into 'main'
Misc changes

See merge request msyds/tf2-nix!2
2025-07-06 07:14:11 +00:00
Madeleine
10f28cf11c Merge branch 'patch-readme-url' into 'main'
Update flake paths in examples

See merge request msyds/tf2-nix!1
2025-07-06 06:42:53 +00:00
Shelvacu
61c63737af Fix mkTf2Config derivation names ending with a dash -
Also changed some of the source derivation names to keep our sanity
2025-06-29 19:16:52 -07:00
Shelvacu
1b2a146025 Expose all derivations under packages.* so that nix flake check checks something useful 2025-06-29 19:03:14 -07:00
Shelvacu
539bb2ac7c Update flake paths in examples
I don't think /home/crumb/src/tf2-nix is the correct path for very many people...
2025-06-29 17:55:30 -07:00
8 changed files with 66 additions and 2307 deletions

View File

@@ -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.

View File

@@ -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: {

View File

@@ -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; };

View File

@@ -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)

View File

@@ -5,7 +5,7 @@
pname = "deerhud";
custom = [
(fetchFromGitHub {
name = "deerhud";
name = "deerhud-src";
owner = "DeerUwU";
repo = "deerhud-tf2";
rev = "78a24effbc66bc78b4bb557228eaa0195db3270c";

View File

@@ -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))

View File

@@ -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")))

File diff suppressed because it is too large Load Diff