Last updated 2 months ago
Cardano Nix services often lack accessible upstream NixOS modules, complicating use. Nix simplifies complex installs, but this killer feature isn't fully used on Cardano.
We propose creating new NixOS modules where none exist, and a repository for “super modules” (using pinned versions) that will import them thereby simplifying complex interactions.
This is the total amount allocated to MLabs – Streamlining Cardano Deployment with Enhanced NixOS Modules. 4 out of 5 milestones are completed.
1/5
Scaffolding
Cost: ₳ 65,142
Delivery: Month 3 - Jan 2024
2/5
Processing modules pt. 1
Cost: ₳ 36,914
Delivery: Month 5 - Mar 2024
3/5
Processing modules pt. 2
Cost: ₳ 36,914
Delivery: Month 6 - Apr 2024
4/5
Processing modules pt. 3
Cost: ₳ 34,742
Delivery: Month 8 - Jun 2024
5/5
Processing modules pt. 4 and closeout
Cost: ₳ 43,428
Delivery: Month 9 - Jul 2024
Andrea Ciceri
No dependencies.
Project will be fully open source.
Problem
NixOS allows you to declare what applications you want to install and run simply by enabling an option, i.e. putting in your configuration something like:
gitlab.enable = true;
This is possible thanks to the nixpkgs repository, which is a substantial collection of Nix derivations and NixOS modules that is continuously tested together and built via a public cache. This allows user to avoid rebuilding every derivation from scratch each time they want to install something.
This situation is not so good regarding Cardano-related applications. Often NixOS modules are missing and a central cache is lacking. When deploying environments needed by DApps, developers often encounter that some services lack modules, and even when they are present they are not tested together with other modules.
Solution
For instance 3. would allow people to just put in their configuration
cardanoNix = {
network = “preview”;
indexers.blockfrost.enable = true;
};
And it would automatically install and configure a Cardano node, a postgres database, cardano-db-sync and blockfrost instance. Everything is configured to work together (database name, users permissions, node socket, etc…)
Market
Developers and application builders deploying NixOS servers to run Cardano-related applications like nodes, indexers, and so on.
Intended Challenge – OSDE: Open Source Dev Ecosystem
Challenge Question – "Can we build a community-owned Open-Source Ecosystem that’s commercially viable to drive growth, increase opportunities, and increase project visibility for the whole Cardano Community?"
What does this proposal entail?
NixOS has many advantages, but it has a very steep learning curve. Although all the applications by IOG provide NixOS modules, many other third-party applications don’t provide them. Using NixOS is easy when modules already exist but writing them requires expertise and not all developers have ample bandwidth and ability for this.
This proposal entails greater and easier NixOS support that will lead more developers to deploy their Cardano applications using NixOS and benefiting from its inherent advantages.
How does this project make it easier to build on Cardano?
This project improves the state of Cardano-related NixOS modules, making it easier for developers to build on Cardano. NixOS offers several advantages, but its complexity often makes it inaccessible. We will improve the state of NixOS modules as outlined thereby greatly simplifying the process of deploying environments needed for DApps to operate efficiently and reliably. Our modules and "super modules" will tie together services and dependencies seamlessly, increasing the speed and ease of deployment of production DApps and lowering barriers to entry.
We will evaluate the success of our configurations project in several important ways:
Quantitative Measures
Number of Modules Created – The quantity of new NixOS modules and 'super modules' we create will correspond to the variety of supported applications, and subsequently the benefit to developers.
Usage Metrics – We will monitor the usage of our modules.
Qualitative Measure
Feedback from Developers – We will actively seek out feedback from developers to understand how our project impacts their work. Feedback and suggestions for improvements will help guide our future work here.
Speed of Deployment – We will assess the improvements for developers deploying environments using our modules versus previous methods.
We will share the progress and outcomes of our configurations as effectively and transparently as possible using the typical channels:
MLabs, a leading consultancy in the Cardano ecosystem, has a proven track record and significant experience. Our team consists of seasoned engineers, each holding expertise in their respective fields. Moreover, we have consistently demonstrated our ability to deliver complicated projects with a high degree of trust and accountability. We have an extensive portfolio of satisfied client projects as well as several popular Catalyst projects. We're committed to upholding these standards for this NixOS modules proposal. Moreover, we are committed to working in an open-source and transparent manner.
The main goals of our project are:
We will validate the feasibility of our approach through:
1st month
2nd month
3rd month
4th and 5th month
The deliverables and outcomes from our key milestones include:
Create a list of services we want to initially support
Deliverable – A comprehensive list of services for initial support, curated based on community feedback.
Outcome – Clear prioritization of services for the project.
Scaffold the repository (structure, Hercules CI, cache, automatically generated docs)
Deliverable – A well-structured repository with CI integrated.
Outcome – A robust infrastructure ready for further development and efficient module testing.
Sketch the module options for every targeted application
Deliverable – Complete module sketches for each targeted application.
Outcome – Clearly defined module options serving as the project roadmap.
Start packaging/writing NixOS modules
Deliverable – Initial set of packaged applications and written NixOS modules.
Outcome – Beginning improvements to functionality and accessibility of development within the Cardano ecosystem.
NixOS tests for modules
Deliverable – Complete test results for all new or updated NixOS modules.
Outcome – Assurance of module reliability and performance.
Create a list of services that we want to initially support (asking the development community) – 30 hours
Check if applications provide a NixOS and/or are packaged with Nix – 40 hours
Contact maintainers regarding proposed changes – 20 hours
Scaffold the repository (structure, CI, cache) – 25 hours
Sketch module options of targeted modules – 40 hours
Initial packaging/writing of primary NixOS modules – 50 hours
NixOS tests for primary modules – 25 hours
Generate docs for NixOS options – 20 hours
Finalizing the repository structure according to met needs – 20 hours
Keep adding modules and tests – 100 hours
General improvements and polishing – 30 hours
SubTotal – 400 hours.
20% ChangeBudget - 80
Subtotal: 480 hours @$95/hour = $45,600 USD
Total ADA Total (@ rate $0.21 USD / ADA): 217140 ADA
**In the interest of full transparency, please note we have applied a conservative USD/ADA exchange rate in pricing this proposal. This is to ensure our operations remain stable regardless of market conditions. Although we firmly believe the future of Cardano is bright, we recognize the price of ADA and all cryptocurrencies is inherently volatile. Our financial obligations are denominated in fiat. Most importantly, this includes the salary of our engineers whose hard work makes projects like this possible.
In the unlikely scenario of severe negative price movement beyond our forecasted rate, it is possible that MLabs may need to temporarily suspend work on this proposal until the market recovers. Rest assured, this decision would be made solely to protect our business's long-term viability and never taken lightly.
We appreciate your understanding and support, and we are excited to see what we can achieve together.
Our configuration project delivers value by simplifying the process of reliably and deterministically deploying Cardano applications using Nix, a key building tool in the ecosystem. Through the creation and aggregation of NixOS modules, we aim to mitigate developmental complexities, enhancing efficiency in the production pipeline and minimizing both costs and time-to-market for applications. As a team, MLabs offers leading expertise in Haskell and Nix. This project allows us to channel that knowledge directly to others building in the ecosystem. Carried out in an open-source manner, our initiative fosters an ecosystem-wide collaboration that can serve to guide further innovation within the Cardano space.
NB: Monthly reporting was deprecated from January 2024 and replaced fully by the Milestones Program framework. Learn more here
MLabs
MLabs is a premier development firm in the Cardano Ecosystem. We are an IOG Plutus Partner and work regularly to develop the Cardano blockchain and ecosystem. Our team is composed of talented developers who have helped build community projects such as:
And several others. Through our work with early-stage projects, we have one of the largest groups of Haskell/Plutus developers in the Cardano community.
Website: https://mlabs.city/
Core Team
Andrea Ciceri - DevOps and Nix Developer
Passionate about technology and computers since he was a child, with a theoretical mathematical background, Andrea worked a few years as a full stack factotum getting his hands on many different technologies. His first contact with the blockchain occurred with Ethereum as a smart contracts developer for DeFi dapps. In the meantime, his sysadmin personality discovered Nix which changed his life forever. At the moment he is happily working for MLabs as DevOps and Nix developer for a wide variety of Cardano-related projects.
Website: aciceri.dev
GitHub: https://github.com/aciceri