Kupo
+ +cardano.kupo.enable
+Whether to enable Kupo chain-indexer.
+Type: +boolean
+Default:
+false
Example:
+true
Declared by: + - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/kupo.nix
+ + + + + + +diff --git a/404.html b/404.html index 9f98963..4c4006d 100644 --- a/404.html +++ b/404.html @@ -521,6 +521,20 @@ +
flake.nix
nixosConfigurations.server-vm
apps.x86_64-linux.server-vm
configuration.nix
preview.nix
This is the NixOS configuration to run cardano services for the machine.
vm.nix
This NixOS configuration sets virtual machine options such as cores, memory and port forwarding. It is included in the configuration for the nixosConfigurations.server-vm
virtual machine in flake.nix
.
To learn more, browse available NixOS options in nixpkgs and NixOS options provided by cardano.nix (see other modules in the menu on the left). You can ad these options to configuration.nix
to configure the system.
To learn more, browse available NixOS options in nixpkgs and NixOS options provided by cardano.nix (see other modules in the menu on the left). You can ad these options to preview.nix
to configure the system.
The configuration can be deployed to any target running NixOS, such as:
You can log in with user root
. The password is empty. In the virtual machine, cardano-cli
is available to query the node.
Whether to enable all Cardano services and HTTP proxy…
+Whether to enable all Cardano services and HTTP proxy.
Type: boolean
Default: diff --git a/reference/module-options/cli/index.html b/reference/module-options/cli/index.html index c52a9ae..fd4b668 100644 --- a/reference/module-options/cli/index.html +++ b/reference/module-options/cli/index.html @@ -573,6 +573,20 @@ +
Whether to enable Kupo chain-indexer.
+Type: +boolean
+Default:
+false
Example:
+true
Declared by: + - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/kupo.nix
+ + + + + + +cardano.nix
is a collection of Nix packages and NixOS modules designed to make it easy to operate Cardano related services and infrastructure.
Nix is a declarative package manager ensuring hash-based dependency pinning and reproducible builds. NixOS is a Linux distribution with a declarative configuration system providing atomic updates and rollbacks. These features are responsible for the increased reliability of a NixOS system, making it an attractive DevOps toolset for deploying Cardano services.
"},{"location":"#what","title":"What?","text":"The cardano.nix
project aims to provide NixOS modules for Cardano services such as cardano-node
, ogmios
, kupo
, cardano-db-sync
, as well as auxiliary modules such as firewall and HTTP(S), making it easy to deploy these services in production. Very little configuration is needed to run the services with sane defaults that are easy to customize. The services can be run on the same host or in a distributed cluster, and a HTTPS proxy module is also provided.
Here are some motivating examples.
This NixOS configuration will start cardano-node
and related services on the preview
testnet.
{\ncardano = {\nenable = true;\nnetwork = \"preview\";\n};\n}\n
This snippet will configure a HTTPS reverse proxy and load balancer with ACME certificates from Let's Encrypt. DNS records need to be set up and the backend servers (configured as above) need to be reachable.
{\n cardano.http.enable = true;\n services.http-proxy = {\ndomainName = \"preview.example.com\";\n https.enable = true;\nservers = [\"server1\" \"server2\"];\n};\n};\n
Configurations including the above can be deployed to a laptop, a virtual machine, a cloud instance, a container, or any other system running NixOS. Example configurations and shortcuts to run virtual machines are provided as part of the project.
"},{"location":"license/","title":"License","text":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/
"},{"location":"license/#terms-and-conditions-for-use-reproduction-and-distribution","title":"TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION","text":"1- Definitions.
\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.
\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"
\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
2- Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3- Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
4- Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
5- Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6- Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7- Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
8- Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9- Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"[]\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives.
Copyright 2023 MLabs ltd, and cardano.nix contributors.
Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
"},{"location":"development/contributing/","title":"Contributing","text":"There are several ways you can contribute.
"},{"location":"development/contributing/#reporting-issues","title":"Reporting issues","text":"nix fmt .
nix flake check
Thank you for contributing to cardano.nix
! Your help is greatly appreciated \ud83d\ude0a
Development is supported on linux systems. Virtual machines are run with qemu
so kvm
is recommended. Follow the installation guide to set up nix.
cardano.nix
provides a devshell that includes various tools to build, test, run and update the project:
$ nix develop\n...\n\u2744\ufe0f Welcome to the cardano.nix devshell \u2744\ufe0f\n\n[documentation]\n\n docs-build - build documentation\n docs-serve - serve documentation web page\n\n[examples]\n\n vm-preview - Start vm with cardano services on the preview network and ports forwarded to host\n\n[general commands]\n\n menu - prints this menu\n\n[tests]\n\n build-all - build all packages and checks with `devour-flake`\n check - run `nix flake check`\n run-vm-test - list and run virtual machine integration tests\n\n[tools]\n\n fmt - format the source tree\n update-pre-commit-hooks - update git pre-commit hooks\n
A .envrc
file is also provided, using direnv and nix-direnv is suggested.
From the devshell you can run integration tests with run-vm-test
, for example the following will start cardano-node
and ogmios
on the preview
testnet and will check for synchronization progress.
run-vm-test ogmios\n
"},{"location":"getting-started/deploy/","title":"Deploy","text":"In order to access all the options available in cardano.nix
, the NixOS module provided by this project has to be included in a NixOS configuration and deployed to a (local or remote or virtual) machine.
An easy way to get started is to use the flake template provided by this project. Here's how to start a new project using the template:
mkdir myproject\ncd myproject\nnix flake init --template github:mlabs-haskell/cardano.nix\ngit init\ngit add .\n
"},{"location":"getting-started/deploy/#run-a-virtual-machine","title":"Run a virtual machine","text":"The default template provides a virtual machine configuration starting all the services in the preview testnet. Here's how to run it:
nix run .#vm
This machine is set up just like the one in Run a VM, but can be customized.
"},{"location":"getting-started/deploy/#look-around","title":"Look around","text":""},{"location":"getting-started/deploy/#flakenix","title":"flake.nix
","text":"This Nix Flake is the entry point to the project. It locks inputs and provides the following inputs:
nixosConfigurations.server-vm
apps.x86_64-linux.server-vm
configuration.nix
","text":"This is the NixOS configuration to run cardano services for the machine.
"},{"location":"getting-started/deploy/#vmnix","title":"vm.nix
","text":"This NixOS configuration sets virtual machine options such as cores, memory and port forwarding. It is included in the configuration for the nixosConfigurations.server-vm
virtual machine in flake.nix
.
To learn more, browse available NixOS options in nixpkgs and NixOS options provided by cardano.nix (see other modules in the menu on the left). You can ad these options to configuration.nix
to configure the system.
The configuration can be deployed to any target running NixOS, such as:
There are a variety of resources to help install NixOS:
With a running NixOS installation and a NixOS configuration server
in a nix flake, this command will deploy the server:
nixos-rebuild switch --flake .#server --target-host <target>
Follow this guide to Install nix with flakes enabled.
"},{"location":"getting-started/installation/#binary-cache","title":"Binary cache","text":"You can optionally use this project's binary cache to skip building software and download it instead. Edit /etc/nix/nix.conf
(or related settings in NixOS config) and merge the new values separated by spaces into the options:
substituters = ... https://cache.staging.mlabs.city/cardano-nix\ntrusted-public-keys = ... cardano-nix:BQ7QKgoQQAuL3Kh6pfIJ8oxrihUbUSxf6tN9SxyW608=\n
Don't edit ~/.config/nix/nix.conf
in your home directory. Don't add users to trusted-users
because it is insecure.
nix --version
For an introduction to the Nix ecosystem, check out Zero to Nix. Learn more about Nix flakes and NixOS.
"},{"location":"getting-started/vm/","title":"Run a VM","text":"This project provides a virtual machine configuration with all cardano services.
nix run github:mlabs-haskell/cardano.nix#vm-preview
A virtual machine will be started with the following services, and the following ports forwarded from the host to the VM.
Service Port cardano-node 3001 ogmios 1337You can log in with user root
. The password is empty. In the virtual machine, cardano-cli
is available to query the node.
cardano-cli query tip --testnet-magic 2
Whether to enable all Cardano services and HTTP proxy\u2026
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cardano/#cardanonetwork","title":"cardano.network","text":"Cardano network to operate on.
Type: one of \u201cmainnet\u201d, \u201cpreprod\u201d, \u201cpreview\u201d, \u201cprivate\u201d, \u201csanchonet\u201d
Default: \"mainnet\"
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cardano/#cardanonetworknumber","title":"cardano.networkNumber","text":"Cardano network number to operate on. Defaults to the network number of the selected network. Internal: true
Type: signed integer
Default: config.cardano.networkNumbers.${config.cardano.net}
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cardano/#cardanonetworknumbers","title":"cardano.networkNumbers","text":"Map from network names to network numbers. Selected network must be present in the map Internal: true
Type: attribute set of signed integer
Default:
{\n mainnet = 764824073;\n preprod = 1;\n preview = 2;\n private = 42;\n sanchonet = 4;\n}\n
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cli/","title":"Cli","text":""},{"location":"reference/module-options/cli/#cardanoclienable","title":"cardano.cli.enable","text":"Add cardano-cli to \u2018environment.systemPackages\u2019.
Type: boolean
Default: false
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cli.nix
"},{"location":"reference/module-options/http/","title":"Http","text":""},{"location":"reference/module-options/http/#cardanohttpenable","title":"cardano.http.enable","text":"Whether to enable HTTP SSL proxy and load balancer for cardano services.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/http.nix
"},{"location":"reference/module-options/node/","title":"Node","text":""},{"location":"reference/module-options/node/#cardanonodeenable","title":"cardano.node.enable","text":"Whether to enable cardano-node service.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/node.nix
"},{"location":"reference/module-options/node/#cardanonodeconfigpath","title":"cardano.node.configPath","text":"Path to cardano-node configuration.
Type: path
Default: ${pkgs.cardano-configurations}/network/${config.cardano.network}_p2p/cardano-node/config.json
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/node.nix
"},{"location":"reference/module-options/node/#cardanonodesocketpath","title":"cardano.node.socketPath","text":"Path to cardano-node socket.
Type: path
Default: \"/run/cardano-node/node.socket\"
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/node.nix
"},{"location":"reference/module-options/ogmios/","title":"Ogmios","text":""},{"location":"reference/module-options/ogmios/#cardanoogmiosenable","title":"cardano.ogmios.enable","text":"Whether to enable Ogmios bridge interface for cardano-node.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/ogmios.nix
"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"About the Project","text":"cardano.nix
is a collection of Nix packages and NixOS modules designed to make it easy to operate Cardano related services and infrastructure.
Nix is a declarative package manager ensuring hash-based dependency pinning and reproducible builds. NixOS is a Linux distribution with a declarative configuration system providing atomic updates and rollbacks. These features are responsible for the increased reliability of a NixOS system, making it an attractive DevOps toolset for deploying Cardano services.
"},{"location":"#what","title":"What?","text":"The cardano.nix
project aims to provide NixOS modules for Cardano services such as cardano-node
, ogmios
, kupo
, cardano-db-sync
, as well as auxiliary modules such as firewall and HTTP(S), making it easy to deploy these services in production. Very little configuration is needed to run the services with sane defaults that are easy to customize. The services can be run on the same host or in a distributed cluster, and a HTTPS proxy module is also provided.
Here are some motivating examples.
This NixOS configuration will start cardano-node
and related services on the preview
testnet.
{\ncardano = {\nenable = true;\nnetwork = \"preview\";\n};\n}\n
This snippet will configure a HTTPS reverse proxy and load balancer with ACME certificates from Let's Encrypt. DNS records need to be set up and the backend servers (configured as above) need to be reachable.
{\n cardano.http.enable = true;\n services.http-proxy = {\ndomainName = \"preview.example.com\";\n https.enable = true;\nservers = [\"server1\" \"server2\"];\n};\n};\n
Configurations including the above can be deployed to a laptop, a virtual machine, a cloud instance, a container, or any other system running NixOS. Example configurations and shortcuts to run virtual machines are provided as part of the project.
"},{"location":"license/","title":"License","text":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/
"},{"location":"license/#terms-and-conditions-for-use-reproduction-and-distribution","title":"TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION","text":"1- Definitions.
\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.
\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"
\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
2- Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3- Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
4- Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
5- Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6- Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7- Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
8- Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9- Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"[]\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives.
Copyright 2023 MLabs ltd, and cardano.nix contributors.
Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
"},{"location":"development/contributing/","title":"Contributing","text":"There are several ways you can contribute.
"},{"location":"development/contributing/#reporting-issues","title":"Reporting issues","text":"nix fmt .
nix flake check
Thank you for contributing to cardano.nix
! Your help is greatly appreciated \ud83d\ude0a
Development is supported on linux systems. Virtual machines are run with qemu
so kvm
is recommended. Follow the installation guide to set up nix.
cardano.nix
provides a devshell that includes various tools to build, test, run and update the project:
$ nix develop\n...\n\u2744\ufe0f Welcome to the cardano.nix devshell \u2744\ufe0f\n\n[documentation]\n\n docs-build - build documentation\n docs-serve - serve documentation web page\n\n[examples]\n\n vm-preview - Start vm with cardano services on the preview network and ports forwarded to host\n\n[general commands]\n\n menu - prints this menu\n\n[tests]\n\n build-all - build all packages and checks with `devour-flake`\n check - run `nix flake check`\n run-vm-test - list and run virtual machine integration tests\n\n[tools]\n\n fmt - format the source tree\n update-pre-commit-hooks - update git pre-commit hooks\n
A .envrc
file is also provided, using direnv and nix-direnv is suggested.
From the devshell you can run integration tests with run-vm-test
, for example the following will start cardano-node
and ogmios
on the preview
testnet and will check for synchronization progress.
run-vm-test ogmios\n
"},{"location":"getting-started/deploy/","title":"Deploy","text":"In order to access all the options available in cardano.nix
, the NixOS module provided by this project has to be included in a NixOS configuration and deployed to a (local or remote or virtual) machine.
An easy way to get started is to use the flake template provided by this project. Here's how to start a new project using the template:
mkdir myproject\ncd myproject\nnix flake init --template github:mlabs-haskell/cardano.nix\ngit init\ngit add .\n
"},{"location":"getting-started/deploy/#run-a-virtual-machine","title":"Run a virtual machine","text":"The default template provides a virtual machine configuration starting all the services in the preview testnet. Here's how to run it:
nix run .#vm
This machine is set up just like the one in Run a VM, but can be customized.
"},{"location":"getting-started/deploy/#look-around","title":"Look around","text":""},{"location":"getting-started/deploy/#flakenix","title":"flake.nix
","text":"This Nix Flake is the entry point to the project. It locks inputs and provides the following inputs:
nixosConfigurations.server-vm
apps.x86_64-linux.server-vm
preview.nix
","text":"This is the NixOS configuration to run cardano services for the machine.
"},{"location":"getting-started/deploy/#vmnix","title":"vm.nix
","text":"This NixOS configuration sets virtual machine options such as cores, memory and port forwarding. It is included in the configuration for the nixosConfigurations.server-vm
virtual machine in flake.nix
.
To learn more, browse available NixOS options in nixpkgs and NixOS options provided by cardano.nix (see other modules in the menu on the left). You can ad these options to preview.nix
to configure the system.
The configuration can be deployed to any target running NixOS, such as:
There are a variety of resources to help install NixOS:
With a running NixOS installation and a NixOS configuration server
in a nix flake, this command will deploy the server:
nixos-rebuild switch --flake .#server --target-host <target>
Follow this guide to Install nix with flakes enabled.
"},{"location":"getting-started/installation/#binary-cache","title":"Binary cache","text":"You can optionally use this project's binary cache to skip building software and download it instead. Edit /etc/nix/nix.conf
(or related settings in NixOS config) and merge the new values separated by spaces into the options:
substituters = ... https://cache.staging.mlabs.city/cardano-nix\ntrusted-public-keys = ... cardano-nix:BQ7QKgoQQAuL3Kh6pfIJ8oxrihUbUSxf6tN9SxyW608=\n
Don't edit ~/.config/nix/nix.conf
in your home directory. Don't add users to trusted-users
because it is insecure.
nix --version
For an introduction to the Nix ecosystem, check out Zero to Nix. Learn more about Nix flakes and NixOS.
"},{"location":"getting-started/vm/","title":"Run a VM","text":"This project provides a virtual machine configuration with all cardano services.
nix run github:mlabs-haskell/cardano.nix#vm-preview
A virtual machine will be started with the following services, and the following ports forwarded from the host to the VM.
Service Port cardano-node 3001 ogmios 1337 kupo 1442You can log in with user root
. The password is empty. In the virtual machine, cardano-cli
is available to query the node.
cardano-cli query tip --testnet-magic 2
Whether to enable all Cardano services and HTTP proxy.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cardano/#cardanonetwork","title":"cardano.network","text":"Cardano network to operate on.
Type: one of \u201cmainnet\u201d, \u201cpreprod\u201d, \u201cpreview\u201d, \u201cprivate\u201d, \u201csanchonet\u201d
Default: \"mainnet\"
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cardano/#cardanonetworknumber","title":"cardano.networkNumber","text":"Cardano network number to operate on. Defaults to the network number of the selected network. Internal: true
Type: signed integer
Default: config.cardano.networkNumbers.${config.cardano.net}
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cardano/#cardanonetworknumbers","title":"cardano.networkNumbers","text":"Map from network names to network numbers. Selected network must be present in the map Internal: true
Type: attribute set of signed integer
Default:
{\n mainnet = 764824073;\n preprod = 1;\n preview = 2;\n private = 42;\n sanchonet = 4;\n}\n
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cardano.nix
"},{"location":"reference/module-options/cli/","title":"Cli","text":""},{"location":"reference/module-options/cli/#cardanoclienable","title":"cardano.cli.enable","text":"Add cardano-cli to \u2018environment.systemPackages\u2019.
Type: boolean
Default: false
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/cli.nix
"},{"location":"reference/module-options/http/","title":"Http","text":""},{"location":"reference/module-options/http/#cardanohttpenable","title":"cardano.http.enable","text":"Whether to enable HTTP SSL proxy and load balancer for cardano services.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/http.nix
"},{"location":"reference/module-options/kupo/","title":"Kupo","text":""},{"location":"reference/module-options/kupo/#cardanokupoenable","title":"cardano.kupo.enable","text":"Whether to enable Kupo chain-indexer.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/kupo.nix
"},{"location":"reference/module-options/node/","title":"Node","text":""},{"location":"reference/module-options/node/#cardanonodeenable","title":"cardano.node.enable","text":"Whether to enable cardano-node service.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/node.nix
"},{"location":"reference/module-options/node/#cardanonodeconfigpath","title":"cardano.node.configPath","text":"Path to cardano-node configuration.
Type: path
Default: ${pkgs.cardano-configurations}/network/${config.cardano.network}_p2p/cardano-node/config.json
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/node.nix
"},{"location":"reference/module-options/node/#cardanonodesocketpath","title":"cardano.node.socketPath","text":"Path to cardano-node socket.
Type: path
Default: \"/run/cardano-node/node.socket\"
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/node.nix
"},{"location":"reference/module-options/ogmios/","title":"Ogmios","text":""},{"location":"reference/module-options/ogmios/#cardanoogmiosenable","title":"cardano.ogmios.enable","text":"Whether to enable Ogmios bridge interface for cardano-node.
Type: boolean
Default: false
Example: true
Declared by: - https://github.com/mlabs-haskell/cardano.nix/tree/main/modules/ogmios.nix
"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 65a0c65..886cd59 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -50,6 +50,11 @@