NiCo NixOS-Configurator

Hi forum,

I’d like to introduce a project I’ve been working on over the past few weeks. It started as an experiment to see what Claude Code is actually capable of — and I needed an idea for something to build. One thing led to another, and here we are.

I’m aware that there’s a lot of skepticism around AI-generated code, and I understand that. But for me this project is also proof of what’s possible without any programming background — and I think that’s worth sharing.

A bit about me: About 6 months ago I bought a new PC and switched entirely to Linux. I had used SuSE 7.1 for a year back in the day (that was a while ago), then spent years on Windows. I started with a multi-boot setup of Fedora, openSUSE Tumbleweed and CachyOS with a shared home partition — a disaster, but I learned a lot. Fedora became my daily driver, until I stumbled across NixOS. After reading a bit I installed it in a VM and played around. I liked it so much that I set up a dual-boot, and a few weeks ago I switched to NixOS completely.

From my own experience as a beginner, the intention was to build an editor that helps newcomers — and maybe advanced users too. That was a bit naive at first, and it escalated from there. The result can be found at GitHub - DSpayreR6/nico · GitHub .

:warning: I strongly advise against using this on a production system. Please test in a VM only.

The idea was to have a panel for making changes that immediately shows you the resulting config code alongside. That way you can learn how NixOS config files actually work. By now quite a lot can already be configured through it.

What makes NiCo different:

The probably most unique feature is called Nix-Brix (singular: Brick). Wherever NiCo doesn’t cover something, you can insert a free-text block that NiCo leaves completely untouched. This means even complex custom options stay editable alongside the GUI.

Another key principle: NiCo only reads from and writes to your .nix config files directly. There is no separate database or hidden storage. The only exceptions are one JSON file for the app settings and one optional JSON that tells NiCo how to handle your config structure.

Already implemented:

  • Initial import of an existing config
  • Import / Export
  • Git repo setup
  • Time machine (restore previous Git states)
  • Translations (EN, DE, ES, FR, JA, RU, ZH — partially complete)
  • Rudimentary Flake and Home Manager support
  • Multi-file config handling
  • Dry-run, git commit and nixos-rebuild switch from within the UI
  • Tooltips, help texts and wiki links

The whole thing is still very much proof-of-concept. For now I’m mainly curious how the community feels about this. Somewhere between “please stop with the AI stuff”, “you should probably leave this alone” and “at least interesting” — all feedback is welcome.

Thanks in advance to everyone who takes a look.
Martin

I dunno man, if this is helping you, then sure. But one look inside is all I need to know that you are without

any programming background

I’m not going to go into specifics, because I don’t have the time to offer point by point substantive feedback, But I am very confident saying that this isn’t going to be helping “advanced users”. You have no frame of reference for what good looks like, or what advanced users are doing. This is basically the equivalent of an anti-vaxxer telling a doctor they did their own research.

I think it’s good that if AI helps people do things they couldn’t previously, and if this is helping you, more power to you, but as an argument for “look what’s possible with AI”, I don’t think it lands at all.

See: Announcing Nix-manipulator (Nima): structured edits for Nix that keep formatting if you want to see a project that takes the syntax and structure of nix seriously.

If you want to work in a restricted subset of nix for just consuming existing options without any particular programmatic manipulation, you’d be better off just generating module attrsets as json and importing it via builtins.readJSON, imo

2 Likes

NiCo 0.9.2 released :rocket:

Big update with many usability and safety improvements:

  • Validation before rebuild
  • New NixOS actions menu (save / dry-run / rebuild)
  • Better rebuild output + automatic logs on failure
  • Safer file/host switching
  • Section filtering + customizable visibility
  • Settings split into local vs config settings
  • tree-sitter based parser improvements
  • Export/import local app settings

Feedback welcome.

I think we need a new category for AI assisted software.

Can we stop posting this under each and every topic?

There’s a dedicated thread about this topic: Policy on vibe coded nix tools?

Hello,

I fully understand your points. So what my goal is, is not to annoy maintainers or members of this board, but to help with a problem I stumbled upon myself.

I made an audit and had everything documented in a SECURITY_AUDIT.md, which is now also available in my repo. I will execute this again in the future.

Also, GitHub was set up with the following automated checks:

  • security.yml runs on every push → bandit + pip-audit immediately

  • security.yml additionally runs every Monday → weekly dependency check

  • codeql.yml runs on every push to main + every Sunday

  • Dependabot checks weekly for new versions of flask, tree-sitter etc. and opens PRs automatically

I hope this makes everything a little better, even as I know that this does not solve everything, but it may help.

Of course, as I am not a programmer, the audit was also generated by AI.

If I am violating any rules of this forum or the NixOS project, please let me know. That was never the goal.

In addition, what I also did is load a bunch of publicly available configuration setups and let them be processed by the routines of NiCo, comparing original and result. In fact, a few small problems were found, which were fixed immediately.

As you can see, I am interested and willing to help and solve any existing obstacles.

It would be nice if there are users out there who try this program and give me feedback on problems or suggestions for improvements. I would be happy to work on that.

Best regards,

Martin