❄️ imxyy_soope_'s NixOS Config ❄️
This configuration and READMEs in this repo borrows heavily from ryan4yin/nix-config and his cookbook. Many thanks to his spirit of sharing!
This repository is home to the nix code that builds my systems: Currently, this repository contains the nix code that builds:
- NixOS Desktop: NixOS with home-manager, niri, neovim, etc.
- NixOS home server
- NixOS WSL
See ./config/hosts for details of each host.
Why NixOS & Flakes?
Nix allows for easy-to-manage, collaborative, reproducible deployments. This means that once something is setup and configured once, it works (almost) forever. If someone else shares their configuration, anyone else can just use it (if you really understand what you're copying/refering now).
As for Flakes, refer to Introduction to Flakes - NixOS & Nix Flakes Book
Components
| NixOS(Wayland) | |
|---|---|
| Window Manager | Niri |
| Terminal Emulator | Alacritty & Kitty & Foot & Ghostty |
| Bar | Waybar |
| Application Launcher | wofi |
| Notification Daemon | SwayNotificationCenter |
| Input method framework | Fcitx5 |
| Shell | zsh & custom oh-my-zsh |
| Netease Cloudmusic Player | go-musicfox |
| Media Player | mpv |
| Text Editor | Neovim |
| Fonts | Noto Sans CJK & Jetbrains Mono & Nerd Font |
| Filesystem | btrfs subvolumes, clean '/' every boot for impermanence |
And more...
Folder Structure
modules/- custom NixOS modulesconfig/base.nix- generic configsconfig/hosts/<name>/- hosts-specific configslib/- custom nix librarypkgs/- custom packagesoverlays/- nixpkgs overlaysvars.nix- my variablessecrets/- secrets managed by sops-nix. see ./secrets for detailsflake.nix- flake entry
Deployment Guide
Since this repository is heavily based on my own daily use, it includes, but not limit to, the tweaks listed below:
- auto login some specific TTYs (see ./modules/getty-autologin.nix for details)
config.myalias for custom modules andconfig.my.homealias for single user home-manger configuartionlib.myutilities to define custom modules conveniently
Therefore, if you want to deploy this setup locally, make sure that you have carefully read every single line of code in this repository.
Then, you can follow the guide to deploy:
- make sure that you have a very reliable networking environment (you know what I'm talking about)
- boot into LiveCD
- repartition your disk, it should be like this:
/dev/sda/dev/sda1: boot partition (remember to set its type toEFI Systemincfdisk, don't ask me why)
- clone the repository (if you don't have
gitinstalled,nix-shell -p gitwill do the trick) - rename one of the folders in the
config/hostsfolder