funded
MLabs – Streamlining Cardano Deployment with Enhanced NixOS Modules
Current Project Status
In Progress
Amount
Received
₳173,712
Amount
Requested
₳217,140
Percentage
Received
80.00%
Solution

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.

Problem

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.

Feasibility
Value for money
Impact / Alignment

MLabs

1 member

MLabs – Streamlining Cardano Deployment with Enhanced NixOS Modules

Please describe your proposed solution.

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

  1. Write more NixOS modules for applications that don’t provide them, and make them upstream whenever possible. If the application isn’t even packaged using Nix, then proceed to package it, possibly as a Nix flake.
  2. Create a new flake that will collect pinned versions of these modules or will directly contain them if it’s not possible, providing support upstream.
  3. Write the above mentioned “super modules” that enable opinionated, customizable service subsets to work together.
  4. Write NixOS tests (a way to test NixOS configurations on virtual machines on CI).
  5. Populate a cache to make installations faster for people using these modules.

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.

How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?

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.

How do you intend to measure the success of your project?

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.

Please describe your plans to share the outputs and results of your project?

We will share the progress and outcomes of our configurations as effectively and transparently as possible using the typical channels:

  • Dedicated GitHub Repository – As an open-source code base observable and usable by the community - our main project output
  • Community Updates – We'll regularly update the Cardano community on our progress and milestones through our social channels and the typical Catalyst channels
  • Compliance and Documentation – MLabs has participated heavily in Catalyst in the past and has a strong track record of providing transparent and precise progress reports that are publicly available.

What is your capability to deliver your project with high levels of trust and accountability?

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.

What are the main goals for the project and how will you validate if your approach is feasible?

The main goals of our project are:

  • Development of Comprehensive NixOS Modules – As mentioned throughout this proposal, our main goal is to create NixOS modules for services lacking them throughout the ecosystem.
  • Establishment of a Module Repository – We aim to establish a central repository containing all these modules that will be easily accessible to interested developers.

We will validate the feasibility of our approach through:

  • Progress Implementing Modules
  • Community Feedback and Ease of Use
  • Use Case Demonstrations
  • Project Popularity and Adoption Rate

Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.

1st month

  • Create a list of services that we want to initially support (incorporating community input)
  • For every application check if they already provide a NixOS and/or are packaged with Nix
  • Contact developers asking if they would accept proposed changes (make their repo flakes exposing derivations and NixOS modules)
  • Scaffold the repository (structure, Hercules CI, cache)
  • For every targeted application sketch the module options (not the implementation, just the interface)

2nd month

  • Start packaging/writing NixOS modules
  • NixOS tests for modules
  • Automatically generated docs for NixOS options

3rd month

  • Finalizing the repository structure according to met needs
  • Keep adding modules and tests

4th and 5th month

  • Keep adding modules and tests
  • General improvements and polishing

Please describe the deliverables, outputs and intended outcomes of each milestone.

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.

Please provide a detailed budget breakdown of the proposed work and resources.

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.

Who is in the project team and what are their roles?

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:

  • Liqwid
  • SundaeSwap
  • Minswap
  • Optim

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

How does the cost of the project represent value for money for the Cardano ecosystem?

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.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00