Icy-Thought / snowflake

A repository which contains my current Nix (flake-based) setup!
GNU Affero General Public License v3.0
180 stars 13 forks source link

Switching to DevOS (NixOS config architecture) #14

Closed Narice closed 2 years ago

Narice commented 2 years ago

Hey! I really like the configuration that you have put together! I think the structure was taken from a very old version of DevOS ;) You should check the updated version, they have helping tools to manage the config and a lot of other cool stuff. And for people using DevOS, we can easily take some parts of your config independently 😁 Have fun!

Icy-Thought commented 2 years ago

Appreciate it & the suggestion!

At this moment in time I unfortunately find myself having little to no time for experiment with the current flake structure, but I have been intending to rewrite the whole flake setup with my personal spin.

What parts do you find somewhat challenging when it comes to replicating parts of my setup?

Narice commented 2 years ago

I guess I could replicate the entirety of your setup, but as the differents parts of your system are not seperated in small chunk, I cannot take only the parts I need

DevOS is really nice when it comes to this, there is documentation for the different concepts like profiles, hosts and stuff like this.

Profiles would be most likely what I would be browsing, they are defined as independent fo hardware bits of config, so for example, one would have it's i3 config in a certain profile, it's picom or xmonad config in another and then you could choose on a host basis what you want to include in your setup. Hosts are where you define stuff that is hardware or host dependent like the video drivers you'll be using.

I think it's quite an effective system to organize stuff. Personnaly I switched to DevOS just by putting everything in a "core" profile and I'm working on seperating things ;)

The tools that are provided are also awesome, they have a command called bud with a lot of functionalities like firing up a vm with your config, switching easily to the new config, making isos and installers for the config etc. It's really nice and helps when installing for the first time NixOS for example or installing it for the first time on a new device. You can also extend locally the command and it's provided (with many other things like experimental nix with flakes enables) through a dev-shell and .envrc file which is such a nice thing and practicle thing to have. I can't praise it enough.

And then the community is really nice, it's not too big and you can participate very easily (I added the vm functionality for example)

Icy-Thought commented 2 years ago

I also think that DevOS is a good piece of Nix code and I do appreciate your contribution to the project!

The main reason behind why I have chosen not to adopt DevOS is due to my current learning habit, which is mainly accomplished through my interaction with the subject I happen to be studying. Among those interactions (projects) is my own flake repository. I don't think I will abandon that project anytime soon and if I do then I'll most likely wind up using a project like DevOS.

I don't think you need to copy the entirety of my flake repository, since I myself am not using everything for all my listed devices.

What I am using at the moment is found in the profiles & profiles/home, but to reduce your browsing:

  1. config/default.nix ++ packages is used by all devices.
  2. Xmonad: overlays (xmonad.nix & taffybar.nix) ++ config/xmonad.nix ++ modules/window-managers/xmonad.nix ++ modules/display-managers/sddm.nix
  3. Plasma: config/plasma.nix ++ modules/desktop-managers/plasma.nix ++ modules/display-managers/sddm.nix

I'll make sure to update the documentation in the near future to explain the different parts of my setup and how it is achieved for people to learn from. You can always create/update this issue and I'll make sure to explain whatever you are puzzled by!

Narice commented 2 years ago

The main reason behind why I have chosen not to adopt DevOS is due to my current learning habit, which is mainly accomplished through my interaction with the subject I happen to be studying. Among those interactions (projects) is my own flake repository.

Oh I see, that's awesome! Thank you also for the pointers, that's really nice of you ;)