Skip to content

feat: add noctalia idleEnabled toggle and C/Haskell templates#13

Open
consoleBeep wants to merge 2 commits into
BastianAsmussen:masterfrom
consoleBeep:feat/noctalia-idle-toggle-and-templates
Open

feat: add noctalia idleEnabled toggle and C/Haskell templates#13
consoleBeep wants to merge 2 commits into
BastianAsmussen:masterfrom
consoleBeep:feat/noctalia-idle-toggle-and-templates

Conversation

@consoleBeep
Copy link
Copy Markdown

Summary

Addresses two of the three open items in TODO.md:

  • noctalia idle toggle — Exposes idle.enabled as an idleEnabled option on the noctalia-shell wrapper module (default true, preserves current behavior). One knob, no per-host wiring yet — the wrapper still builds a single shared package via packages.noctalia-shell, so flipping this is global. Per-host (epsilon-only) requires either package variants or a runtime toggle; happy to follow up once you've picked an approach.
  • C and Haskell flake templates — Mirror the existing _rust / _go / _python style:
    • C: stdenv.mkDerivation + Makefile, devShell with gcc gnumake gdb clang-tools valgrind.
    • Haskell: haskellPackages.callCabal2nix + minimal .cabal and Main.hs, devShell with cabal-install haskell-language-server ghcid.

Not in this PR

  • Undotreeopts.undofile = true is already set (line 69 of _nixvim-config.nix) and .local/state/nvim is already in epsilon's persistence list (line 206). The setup looks correct as-is. Need your exact symptom (does ~/.local/state/nvim/undo/ exist after a session? does `:set undofile?` show on?) before any change is defensible.
  • C# template — Skipped. `buildDotnetModule` needs a `deps.json` that must be generated from real project content; it can't ship as a static template.

Verification

  • `nix eval .#nixosConfigurations.{delta,epsilon,eta,mu}.config.system.build.toplevel.drvPath` — all four produce a `.drv` path (Docker container, `nix-secrets` overridden with a local stub).
  • `nix eval .#templates --apply builtins.attrNames` → `[ "c" "default" "go" "haskell" "python" "rust" ]`.
  • `nixfmt --check`, `statix check`, `deadnix --fail` — all clean on the changed files.
  • Templates are not flake-locked in this PR — `flake.lock` files get generated on first `nix flake init` + `nix flake update` by the consumer.

Alternatives considered

  • For noctalia, considered flipping `idle.enabled = false` globally instead of adding a toggle. Rejected — that changes behavior on delta/eta too. Toggle preserves the current default.
  • For the templates, considered `flake-utils` (like `_go`) or bare `genAttrs` (like `_python`). Went with `flake-parts` to match `_rust` since it matches the top-level flake's framework.

🤖 Generated with Claude Code

wexocam and others added 2 commits May 22, 2026 14:25
Exposes idle.enabled as a wrapper-module option (default true, preserves
current behavior) so it can be flipped without editing the wrapper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds nix flake templates for C (stdenv.mkDerivation + Makefile, gcc/clang
toolchain devShell) and Haskell (callCabal2nix + cabal-install/HLS devShell).

C# remains pending — buildDotnetModule needs a generated deps.json which
can't be produced ahead of project content.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Owner

@BastianAsmussen BastianAsmussen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nah, absolutely not. You clearly didn't look at a single existing template before writing new ones.

Every template README opens with This project is built using [Nix](https://nixos.org)., has a ## Usage section with named subsections and sh code blocks. Yours introduce ## Intended Usage, a section that exists nowhere in this repository, and bullet lists where there should be code blocks. Match the pattern.

The welcomeText for c and haskell uses ## Getting Started when go and python use ## Notes, and the bullets about nix develop and building are pure noise. Anyone who runs nix flake init knows what nix develop does. The rename reminder is the only thing worth keeping. _rust and _python don't have a description in the flake, _go does, and now you've added two more without picking a side.

On noctalia: the whole point of the TODO was to stop epsilon from bugging out when monitors wake. You've added a toggle and left it at true everywhere, which means epsilon is completely untouched by this PR.

And still no hash. You're an AI, you can spin up any environment you want, and you ran this through Docker like some kind of tourist. curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install, nix flake check --all-systems, show me a store path.

It is not that hard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants