{"id":14967975,"url":"https://github.com/infinidoge/nix-minecraft","last_synced_at":"2025-05-16T04:00:16.643Z","repository":{"id":40334840,"uuid":"485231921","full_name":"Infinidoge/nix-minecraft","owner":"Infinidoge","description":"An attempt to better support Minecraft-related content for the Nix ecosystem","archived":false,"fork":false,"pushed_at":"2025-05-16T02:03:22.000Z","size":8679,"stargazers_count":364,"open_issues_count":25,"forks_count":42,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-16T03:19:58.618Z","etag":null,"topics":["minecraft","nix","nixos","nixos-module"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Infinidoge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"Infinidoge","ko_fi":"infinidoge"}},"created_at":"2022-04-25T05:15:48.000Z","updated_at":"2025-05-16T02:03:25.000Z","dependencies_parsed_at":"2023-10-17T07:01:08.475Z","dependency_job_id":"42f9b305-fa6b-4c72-89c6-99e7fd05653d","html_url":"https://github.com/Infinidoge/nix-minecraft","commit_stats":{"total_commits":714,"total_committers":18,"mean_commits":"39.666666666666664","dds":"0.29271708683473385","last_synced_commit":"8a5c546a755ecc089ea8355c5b7ccbe284e8f00e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Infinidoge%2Fnix-minecraft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Infinidoge%2Fnix-minecraft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Infinidoge%2Fnix-minecraft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Infinidoge%2Fnix-minecraft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Infinidoge","download_url":"https://codeload.github.com/Infinidoge/nix-minecraft/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464890,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minecraft","nix","nixos","nixos-module"],"created_at":"2024-09-24T13:39:03.225Z","updated_at":"2025-05-16T04:00:16.439Z","avatar_url":"https://github.com/Infinidoge.png","language":"Nix","funding_links":["https://github.com/sponsors/Infinidoge","https://ko-fi.com/infinidoge"],"categories":[],"sub_categories":[],"readme":"# nix-minecraft\n\n## About\n\n`nix-minecraft` is an attempt to better package and support Minecraft as part of the Nix ecosystem, focusing on the server-side.\nAs of currently, it packages:\n\n- All versions of Vanilla servers\n- All supported versions of the following mod/plugin loaders/servers:\n  - Fabric\n  - Legacy Fabric\n  - Quilt\n  - Paper\n- All supported versions of the following:\n  - Velocity proxy\n- Various tools\n  - `nix-modrinth-prefetch`\n  - `fetchPackwizModpack`\n\nCheck out this video by vimjoyer that provides a brief overview of how to use the flake: https://youtu.be/Fph7SMldxpI\n\n## Changelog\n\nSee [CHANGELOG.md](./CHANGELOG.md).\n\n## Deprecation Policy\n\nWhen something gets deprecated, an announcement gets added to the [changelog file](./CHANGELOG.md), and the respective parts in Nix get marked with an evaluation warning.\nDeprecated code is subject to removal after 1 month.\n\n## Installation\n\nThis repository is made exclusively as a Nix flake. Due to a lack of understanding of now Nix flake compat works, I have not included it, however if a PR is made to add compatibility, I may accept it.\n\nIn your `flake.nix`:\n\n```nix\n{\n  inputs = {\n    nix-minecraft.url = \"github:Infinidoge/nix-minecraft\";\n  };\n}\n```\n\nIn your system configuration:\n\n```nix\n{ inputs, ... }: # Make sure the flake inputs are in your system's config\n{\n  imports = [ inputs.nix-minecraft.nixosModules.minecraft-servers ];\n  nixpkgs.overlays = [ inputs.nix-minecraft.overlay ];\n}\n```\n\n## Examples\n\nSee the [examples directory](./examples/).\n\n## Roadmap\n\nSee [TODO.md](./TODO.md).\n\n## Packages\n\nAll of these are found under `legacyPackages`, since they are not derivations (i.e. an attrset of derivation, or a function that returns a derivation).\n\n### `vanillaServers.*`\n\n[Source](./pkgs/vanilla-servers)\n\nAn attrset of all of the vanilla server versions, in the form of `vanilla-version`, where `version` is the Minecraft version (`1.18`, `1.12.2`, `22w16b`, etc), with all periods and spaces replaced with underscores (`1_18`, `1_12_2`, etc).\n\nFor convenience, `vanillaServers.vanilla` is equivalent to the latest major version.\n\n```\nvanillaServers.vanilla-1_18_2\nvanillaServers.vanilla-22w16b\nvanillaServers.vanilla-22w13oneblockatatime\n```\n\n### `fabricServers.*`\n\n[Source](./pkgs/fabric-servers)\n\nAn attrset of all of the Fabric server versions, in the form of `fabric-mcversion`, following the same format as described above for version numbers. The `mcversion` must be `\u003e=1.14`. The Fabric version is the latest released version.\n\nTo change the Fabric version, you can override the derivation and set `loaderVersion`: `fabric-mcversion.override { loaderVersion = \"fabricversion\"; }`.  The `loaderVersion` must be `\u003e=0.10.7`.\n\nFor convenience, `fabricServers.fabric` is equivalent to the latest major Minecraft and Fabric versions.\n\n```\nfabricServers.fabric-1_18_2\nfabricServers.fabric-22w16b\nfabricServers.fabric-1_18_2.override { loaderVersion = \"0.14.20\"; } # Specific fabric loader version\n```\n\n### `quiltServers.*`\n\n[Source](./pkgs/quilt-servers)\n\n`quiltServers` functions the same as `fabricServers`, but with the Quilt mod loader.\n\n### `legacyFabricServers.*`\n\n[Source](./pkgs/legacy-fabric-servers)\n\n`legacyFabricServers` functions the same as `fabricServers`, but with versions provided by the Legacy Fabric project.\n\nSince Legacy Fabric does not have a defined newest version to target, it lacks a `legacy-fabric` attribute pointing to the latest version/loader version combination.\n\n### `paperServers.*`\n\n[Source](./pkgs/paper-servers)\n\n`paperServers` functions the same as `fabricServers`, but with the Paper server software.\n\nIf you plan on running paper without internet, you'll have to link the vanilla jar to `cache/mojang_{version}.jar`. The relevant jar is available at the package's `vanillaJar` attribute.\n\n### `velocityServers.*`\n\n[Source](./pkgs/velocity-servers)\n\nAn attrset of all of the Velocity server versions (differently from the others, the version does not include nor depend on specific minecraft versions).\n\nFor convenience, `velocityServers.velocity` is equivalent to the latest version.\n\n### `minecraftServers.*`\n\n`vanillaServers // fabricServers // quiltServers // legacyFabricServers // paperServers`. Will be used most often as it contains all of the different server versions across each mod loader. When using the overlay, this will replace the Nixpkgs `minecraftServers`.\n\n### `fetchPackwizModpack`\n\n[Source](./pkgs/tools/fetchPackwizModpack)\n\nThis function allows you to easily package a [packwiz](https://packwiz.infra.link/) modpack, for example, to run it own your server. An example:\n\n```nix\nlet\n  modpack = pkgs.fetchPackwizModpack {\n    url = \"https://github.com/Misterio77/Modpack/raw/0.2.9/pack.toml\";\n    packHash = \"sha256-L5RiSktqtSQBDecVfGj1iDaXV+E90zrNEcf4jtsg+wk=\";\n  };\nin\n{\n  services.minecraft-servers.servers.cool-modpack = {\n    enable = true;\n    package = pkgs.fabricServers.fabric-1_18_2.override { loaderVersion = \"0.14.9\"; };\n    symlinks = {\n      \"mods\" = \"${modpack}/mods\";\n    };\n    files = {\n      \"config\" = \"${modpack}/config\";\n      \"config/mod1.yml\" = \"${modpack}/config/mod1.yml\";\n      \"config/mod2.conf\" = \"${modpack}/config/mod2.conf\";\n      # You can add files not on the modpack, of course\n      \"config/server-specific.conf\".value = {\n        example = \"foo-bar\";\n      };\n    };\n  };\n}\n```\n\nThis will symlink the modpack's final `mods` directory into the server's `mods` directory, and copy the specified config files into `config`. You can also do this for any files in the modpack you're interested in, in a granular way.\n\n**Note**: Be sure to use a stable URL (e.g. a git tag/commit) to the manifest, as it changing will cause the derivation to generate a different hash, breaking the build until you change it.\n\nAdding config files one by-one is boring. Trying to include an additional mod will also fail, as `mods` is read-only and symlinked as is. To solve these issues, this flake provides a `collectFilesAt` function, that recursively collects every file on the given directory (e.g. `config`), and returns an attribute set in the format `symlinks`/`files` expects. For example:\n\n```nix\n{ inputs, ... }:\nlet\n  inherit (inputs.nix-minecraft.lib) collectFilesAt;\n  modpack = pkgs.fetchPackwizModpack {\n    url = \"https://github.com/Misterio77/Modpack/raw/0.2.9/pack.toml\";\n    packHash = \"sha256-L5RiSktqtSQBDecVfGj1iDaXV+E90zrNEcf4jtsg+wk=\";\n  };\nin\n{\n  services.minecraft-servers.servers.cool-modpack = {\n    enable = true;\n    package = pkgs.fabricServers.fabric-1_18_2-0_14_9;\n    symlinks = collectFilesAt modpack \"mods\" // {\n      \"mods/FabricProxy-lite.jar\" = pkgs.fetchurl rec {\n        pname = \"FabricProxy-Lite\";\n        version = \"1.1.6\";\n        url = \"https://cdn.modrinth.com/data/8dI2tmqs/versions/v${version}/${pname}-${version}.jar\";\n        hash = \"sha256-U+nXvILXlYdx0vgomVDkKxj0dGCtw60qW22EK4FhAJk=\";\n      };\n    };\n    files = collectFilesAt modpack \"config\" // {\n      \"config/server-specific.conf\".value = {\n        example = \"foo-bar\";\n      };\n    };\n  };\n}\n```\n\n**Note**: Calling `collectFilesAt` on a derivation (e.g. the modpack) will cause [IFD](https://nixos.wiki/wiki/Import_From_Derivation).\n\nThe built modpack also exports a `manifest` attribute, that allows you to get any information from its `pack.toml` file, such as the MC or Modloader version. You can, this way, always sync the server's version with the one the modpack recommends:\n\n```nix\nlet\n  modpack = pkgs.fetchPackwizModpack {\n    url = \"https://github.com/Misterio77/Modpack/raw/0.2.9/pack.toml\";\n    packHash = \"sha256-L5RiSktqtSQBDecVfGj1iDaXV+E90zrNEcf4jtsg+wk=\";\n  };\n  mcVersion = modpack.manifest.versions.minecraft;\n  fabricVersion = modpack.manifest.versions.fabric;\n  serverVersion = lib.replaceStrings [ \".\" ] [ \"_\" ] \"fabric-${mcVersion}\";\nin\n{\n  services.minecraft-servers.servers.cool-modpack = {\n    enable = true;\n    package = pkgs.fabricServers.${serverVersion}.override { loaderVersion = fabricVersion; };\n    symlinks = {\n      \"mods\" = \"${modpack}/mods\";\n    };\n  };\n}\n```\n\n**Note**: Using `manifest`, by default, will cause [IFD](https://nixos.wiki/wiki/Import_From_Derivation). If you want to avoid IFD while still having access to `manifest`, simply pass a `manifestHash` to the `fetchPackwizModpack` function, it will then fetch the manifest through `builtins.fetchurl`.\n\n### Others\n\nAll of these packages are also available under `packages`, not just `legacyPackages`.\n\n- `vanilla-server`: Same as `vanillaServers.vanilla`\n- `fabric-server`: Same as `fabricServers.fabric`\n- `quilt-server`: Same as `quiltServers.quilt`\n- `paper-server`: Same as `paperServers.paper`\n- `velocity-server`: Same as `velocityServers.velocity`\n- `minecraft-server`: Same as `vanilla-server`\n\nServer versions not found above can be setup manually via an override.\nFor example, this override changes the path the launch script uses to your provided jar file, and does not modify the vanilla jar:\n\n```nix\nlet\n  uberBukkit = pkgs.vanillaServers.vanilla.overrideAttrs (oldAttrs: {\n    src = ./uberbukkit.jar;\n  });\nin\n{\n  services.minecraft-servers.servers.beta-server = {\n    enable = true;\n    package = uberBukkit;\n  };\n}\n```\n\n#### `nix-modrinth-prefetch`\n\n[Source](./pkgs/tools/nix-modrinth-prefetch.nix)\n\nA helper script to fetch a Modrinth mod, which outputs the necessary `fetchurl` invocation.\n\nTo use it, first find a mod on Modrinth, and click on the version you want.\nIn the displayed information, there is a `Version ID` string.\nClick on it to copy the version ID.\nThen, run the script like so:\n\n```shell\nnix run github:Infinidoge/nix-minecraft#nix-modrinth-prefetch -- versionid\n```\n\n(This helper script can also be used in a temporary shell with `nix shell github:Infinidoge/nix-minecraft#nix-modrinth-prefetch`)\n\nThis `fetchurl` invocation directly fetches the mod, and can be copy-pasted to wherever necessary.\n\n## Modules\n\n### `services.minecraft-servers`\n\n[Source](./modules/minecraft-servers.nix)\n\nModule for hosting multiple servers at once. All of the following are under this module.\n\n\n#### `enable`\n\nIf enabled, the servers in `services.minecraft-servers.servers` will be created and started as applicable. \nThe data for the servers will be loaded from and saved to `dataDir`, and any sockets will be put in `runDir`.\n\n#### `eula`\n\nWhether you agree to [Mojang's EULA](https://account.mojang.com/documents/minecraft_eula). \nThis option must be set to true to run any Minecraft servers.\n\n#### `openFirewall`\n\nWhether to open ports in the firewall for each server. Sets the default for `servers.\u003cname\u003e.openFirewall`. \nThis will only work if the ports are specified in `servers.\u003cname\u003e.serverProperties`, otherwise it will use the default ports.\nRemember to change the ports if you running multiple servers.\nThe module asserts that servers with `openFirewall` set do not have conflicting ports to try to catch this.\n\n#### `dataDir`\n\nDirectory to store the Minecraft servers. Defaults to `/srv/minecraft`.\n\nEach server will be under a subdirectory named after the server name, such as `/srv/minecraft/servername`.\n\n#### `runDir`\n\nDirectory to place the runtime tmux sockets into. Defaults to `/run/minecraft`.\nEach server's console will be a tmux socket file in the form of servername.sock. To connect to the console, run `tmux -S /run/minecraft/servername.sock attach`, press `Ctrl + b` then `d` to detach.\n\n#### `user`\n\nName of the user to create and run servers under. It is recommended to leave this as the default, as it is the same user as `services.minecraft-server`.\n\n#### `group`\n\nName of the group to create and run servers under. In order to modify the server files or attach to the tmux socket, your user must be a part of this group. It is recommended to leave this as the default, as it is the same group as `services.minecraft-server`.\n\n#### `environmentFile`\n\nFile consisting of lines in the form `varname=value` to define environment variables for the minecraft servers. \nSecrets (database passwords, secret keys, etc.) can be substituted into server files without adding them to the Nix store by defining them in the environment file and adding them `servers.\u003cname\u003e.files` with the syntax `@varname@`.\n\n### `servers.\u003cname\u003e`\n\nThis family of options govern individual servers, which will be created on boot.\n\n#### `servers.\u003cname\u003e.enable`\n\nWhether to enable this server. If set to false, does **NOT** delete any data in the data directory, just does not generate the service file.\n\n#### `servers.\u003cname\u003e.autoStart`\n\nWhether to start this server on boot. If set to false, can still be started with `systemctl start minecraft-server-servername`. \nRequires the server to be enabled.\n\n#### `servers.\u003cname\u003e.openFirewall`\n\nWhether to open ports in the firewall for this server.\n\n#### `servers.\u003cname\u003e.restart`\n\nValue of systemd's `Restart=` service configuration option. \nDue to the servers being started in tmux sockets, values other than \"no\" and \"always\" may not work properly. \nAs a consequence of the \"always\" option, stopping the server in-game with the /stop command will cause the server to automatically restart\n\nTo prevent infinite crash loops, there is a start limit of 5 times within 2 minutes.\n\n#### `servers.\u003cname\u003e.enableReload`\n\nReload server when configuration changes instead of restarting. \nThis re-links/copies the declared symlinks/files. \nYou can include additional actions (even in-game commands) by setting `\u003cname\u003e`.extraReload.\n\n#### `servers.\u003cname\u003e.extraReload`\n\nExtra commands to run when reloading the service. Only has an effect if `\u003cname\u003e.enableReload` is true.\n\n#### `servers.\u003cname\u003e.whitelist`\n\nWhitelisted players, only has an effect when `\u003cname\u003e.serverProperties.white-list = true;`. \nWhen empty/unspecified, the whitelist file is not managed declaratively, allowing for use of the whitelist commands.\nExample: \n```\n{\n  username1 = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\n  username2 = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\";\n}\n```\n\n#### `servers.\u003cname\u003e.serverProperties`\n\nMinecraft server properties for the server.properties file of this server. See [The Documentation](https://minecraft.wiki/w/Server.properties) on these values. Example:\n```\n{\n  server-port = 43000;\n  difficulty = 3;\n  gamemode = 1;\n  max-players = 5;\n  motd = \"NixOS Minecraft server!\";\n  white-list = true;\n  enable-rcon = true;\n  \"rcon.password\" = \"hunter2\";\n}\n```\n\n#### `servers.\u003cname\u003e.package`\n\nThe Minecraft server package to use. Example:\n`pkgs.minecraftServers.vanilla-1_18_2`\n\n#### `servers.\u003cname\u003e.jvmOpts`\n\nJVM Options for this server, usually used to set ram amount. Example:\n`-Xms6144M -Xmx8192M`\n\n#### `servers.\u003cname\u003e.symlinks`\n\nThis option is special in that it allows for declarative management of arbitrary things inside of the server's folder. \nIf the file already exists, existing one will have a `.bak` suffix added to it. If it is replaced again the previous backup will be overwritten.\n\nHow it works is that it takes an attrset of derivations, and symlinks each derivation into place with the name of the attribute in the attrset.\n\nFor example,\n\n```nix\n{\n  symlinks = {\n    text-file = pkgs.writeTextFile {\n      name = \"text-file\";\n      text = \"Some text\";\n    };\n  };\n}\n```\n\nWould symlink a file containing `\"Some text\"` into the server's folder.\n\nThis option is quite powerful, and can be used for a number of things, though most notably it can be used for declaratively setting up mods or plugins for the server.\n\nThis example takes an attrset of the IDs and hashes for Modrinth mods, fetches each one, and makes a folder containing those mods. (`linkFarmFromDrvs` is quite useful because it can take a list of derivations and produce a folder suitable for this purpose.) The names in this attrset are meaningless, I only included them as convenient labels.\n\n```nix\n{\n  symlinks = {\n    mods = pkgs.linkFarmFromDrvs \"mods\" (builtins.attrValues {\n      Starlight = fetchurl { url = \"https://cdn.modrinth.com/data/H8CaAYZC/versions/XGIsoVGT/starlight-1.1.2%2Bfabric.dbc156f.jar\"; sha512 = \"6b0e363fc2d6cd2f73b466ab9ba4f16582bb079b8449b7f3ed6e11aa365734af66a9735a7203cf90f8bc9b24e7ce6409eb04d20f84e04c7c6b8e34f4cc8578bb\"; };\n      Lithium = fetchurl { url = \"https://cdn.modrinth.com/data/gvQqBUqZ/versions/ZSNsJrPI/lithium-fabric-mc1.20.1-0.11.2.jar\"; sha512 = \"d1b5c90ba8b4879814df7fbf6e67412febbb2870e8131858c211130e9b5546e86b213b768b912fc7a2efa37831ad91caf28d6d71ba972274618ffd59937e5d0d\"; };\n      FerriteCore = fetchurl { url = \"https://cdn.modrinth.com/data/uXXizFIs/versions/ULSumfl4/ferritecore-6.0.0-forge.jar\"; sha512 = \"e78ddd02cca0a4553eb135dbb3ec6cbc59200dd23febf3491d112c47a0b7e9fe2b97f97a3d43bb44d69f1a10aad01143dcd84dc575dfa5a9eaa315a3ec182b37\"; };\n      Krypton = fetchurl { url = \"https://cdn.modrinth.com/data/fQEb0iXm/versions/jiDwS0W1/krypton-0.2.3.jar\"; sha512 = \"92b73a70737cfc1daebca211bd1525de7684b554be392714ee29cbd558f2a27a8bdda22accbe9176d6e531d74f9bf77798c28c3e8559c970f607422b6038bc9e\"; };\n      LazyDFU = fetchurl { url = \"https://cdn.modrinth.com/data/hvFnDODi/versions/0.1.3/lazydfu-0.1.3.jar\"; sha512 = \"dc3766352c645f6da92b13000dffa80584ee58093c925c2154eb3c125a2b2f9a3af298202e2658b039c6ee41e81ca9a2e9d4b942561f7085239dd4421e0cce0a\"; };\n      C2ME = fetchurl { url = \"https://cdn.modrinth.com/data/VSNURh3q/versions/t4juSkze/c2me-fabric-mc1.20.1-0.2.0%2Balpha.10.91.jar\"; sha512 = \"562c87a50f380c6cd7312f90b957f369625b3cf5f948e7bee286cd8075694a7206af4d0c8447879daa7a3bfe217c5092a7847247f0098cb1f5417e41c678f0c1\"; };\n    });\n  };\n}\n```\n\n`symlinks` is also able to automatically infer the format of certain extensions:  `yml, yaml, json, props, properties, toml, ini, txt`\n\nFor example,\n```nix\nsymlinks.\"myfile.json\" = {\n  value = {\n    option = \"value\";\n  };\n};\n```\n\nWould symlink a file containing the following into the server's folder:\n```json\n{\n  \"option\": \"value\"\n}\n```\n\nOther formats are able to be generated by providing a format function: [Example Functions](https://github.com/NixOS/nixpkgs/blob/e7b543ba95681a01148d8c267d668bdcbd521fcb/pkgs/pkgs-lib/formats.nix)\nExample:\n```nix\nlet\n  extList = {}: {\n    type = with lib.types; listOf str;\n    generate = name: value: pkgs.writeText name (lib.concatStringsSep \"\\n\" value);\n  };\nin\n{\n  symlinks.\"myfile.ext\" = {\n    format = extList {};\n    value = [\n      \"Hi!\"\n      \"Hello!\"\n    ];\n  };\n}\n```\n\n#### `servers.\u003cname\u003e.files`\n\nThings to copy into this server's data directory. Every option and example in `symlinks` works the same way for `files`, except that actual files are generated. Useful for configuration files that don't behave well when read-only.\n\nFor example:\n```nix\nfiles.\"white-list.txt\" = {\n  value = [\n    \"person1\"\n    \"person2\"\n    \"person3\"\n  ];\n};\n```\n\ngenerates a legacy `white-list.txt` that is needed for older minecraft versions (\u003c 1.7.6)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinidoge%2Fnix-minecraft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfinidoge%2Fnix-minecraft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinidoge%2Fnix-minecraft/lists"}