this post was submitted on 11 Feb 2024
12 points (100.0% liked)

Nix / NixOS

1765 readers
3 users here now

Main links

Videos

founded 1 year ago
MODERATORS
12
submitted 9 months ago* (last edited 9 months ago) by jakalx@lemmy.ml to c/nix@programming.dev
 

Hi,

how would one create a development environment for #xmonad contained within my nixos system configuration?

My flake for my system sets up xmonad with a custom config.hs and I'd like to get a suitable dev environment when editing the config.hs. Usually when developing for haskell, I'll use a flake and setup a devShell which then gets loaded by direnv.

  • is there best practice?
  • my config.hs is in a subdirectory

My first attempt would be to just provide a shell.nix next to my config.hs - but that wouldn't load the exact same xmonad as the system one, since it's separate from the flake.

you are viewing a single comment's thread
view the rest of the comments
[–] demesisx@infosec.pub 3 points 9 months ago* (last edited 9 months ago) (1 children)

Good question. I have an xmonad config in my setup and I’d also love this.

Here’s a project where I’m using Haskell with nix flakes if it’s helpful at all: https://github.com/cardanonix/pelotero-engine/blob/main/flake.nix

I’m betting we could use and alter that flake file to achieve something to that effect. It would be a game-changer for me. I currently do the whole eval thing to test my changes and it takes FOREVER to know if I’ve done something dumb.

Here’s my meta-config, if that helps at all: https://github.com/harryprayiv/nix-config

The Haskell and Xmonad part:

home manager: https://github.com/harryprayiv/nix-config/tree/intelTower/home/programs/xmonad

Base system: https://github.com/harryprayiv/nix-config/blob/intelTower/system/wm/xmonad.nix

Ps. I started an xmonad community here on Lemmy: https://infosec.pub/c/xmonad

[–] jakalx@lemmy.ml 1 points 8 months ago

Hi, I didn't get a notification and then totally forgot to manually check :(

Thanks for your links, I'll check them out! My setup is quite similar to yours.

Another idea could be to extract the home/programs/xmonad thingy into its own flake somehow.

Currently I'm trying to figure out if direnv is able to load a particular devShell somehow (and then limim it to a particular host), but didn't make progress yet. My idea is to have a devShells entry that pulls in xmonad etc. but only gets activated if I enter the xmonad subdirectory... Mh maybe a simple shell.nix with manually managed pinning for nixpkgs could be a way forward.

I'm currently also doing the nixos-rebuild step to check the config.