Skip to content

System, packages and dev shells configured using Nix, NixOS and nixpkgs

License

Notifications You must be signed in to change notification settings

abehidek/nix-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


nix snowflake logo
Systems Nix Config

One config. One setup. One place

NixOS Nix Hyprland Helix Zsh

AboutKey FeaturesSystem DetailsRoadmapLicense

About

The whole idea of customizing your own system always is appealing to a lot of people, however, most people don't dive too much into, just change some basic configuration, but, like some other people, I wanted to customize it more and give it my identity. Still, to get all things to work properly is a unending process, and track all your changes on the system is kinda impossible if you don't know how to ngl.

Nix and NixOS solves some of these problems, you can create reproducible builds and also revert changes that you did on the system, there is a lot of other tools too. I recommend you to give it a try too.

Currently I'm learning more about the Nix language and NixOS, it's a steep learning curve since it has so many things to grasp and is so different from the traditional linux distro (like the filesystem, nix store, etc). So right now, most of the code is not so complicated and rather simple, but I guess everyone starts somewhere ¯\_(ツ)_/¯.

This repo contains all dotfiles to create an identical system to which I'm using (including programs and its configurations), feel free to test it on a machine or virtual machine.

Don't expect these dotfiles to work since there are a lot of factors to include, but instead, try to adapt it to your machine. Also, if someone is interest I would love to chat about this topic since I have so much to learn.

Key Features

  • Multiple host configurations (laptop, bootable ssd and WSL2)
  • Configured x11 and wayland desktop environments (Xmonad, Hyprland and Sway)
  • Commonly used modules for configuring system.
  • Home manager configuration as a NixOS system module (allows to rebuild the system once instead of twice)
    • Each user has it's own Home manager configuration file labeled as the user name.
    • Home manager modules for configuring each application in user space.
  • Secrets management using GPG.

System Details

Avaiable hosts:

  • Flex5i (Ideapad laptop)
  • SSD (240GB External SSD)
  • WSL2 NixOS (Main Desktop)

Flex5i Partition Scheme (UEFI)

Partition Label Description
NIXOS-BOOT EFI partition contains basic files to load the Operating System.
NIXOS-ROOT Root partition, where linux operating system and its files is stored.
NIXOS-SWAP Assistant and overflow space for RAM.

Roadmap

  • Install Lunacy through flatpak using declarative-nix-flatpak
  • Move to xmonad due to better compatibility provided X11.
  • Proper GTK and QT theming based on the nix-colors base16 colorscheme.
  • Config public SSH keys on hosts.
  • Simplify this README.
  • Refactor all this codebase and minify overall complexity
  • Config properly zsh.
  • Try out Hyprland.
  • Migrate old module style to proper configurable NixOS modules.
  • Setup NixOS WSL2 properly
  • Use Disko for formatting disks with nix expressions.
  • Understand better overlays and new nix flake commands.
  • Proper flake config for Raspberry Pi 400 (as a server) and WSL (as dev env).
  • Create some useful eww widgets.
  • Decrease the number of installed packages and RAM consumption

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the project
  2. Clone it open the repository in command line
  3. Create your feature branch (git checkout -b feature/amazing-feature)
  4. Commit your changes (git commit -m 'Add some amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a pull request from your feature branch from your repository into this repository main branch, and provide a description of your changes

License

MIT.

Acknowledgments

These sources helped me to accomplish this project.

XMonad WM

You may also like...


hidek.xyz  ·  GitHub @abehidek  ·  Twitter @guilhermehabe