Skip to content

❄️ryan4yin's nix config(NixOS/macOS + home-manager + i3/hyprland + neovim + agenix)

License

Notifications You must be signed in to change notification settings

zhpjy/nix-config

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

❄️ Ryan4Yin's Nix Config ❄️

Stargazers

This repository is home to the nix code that builds my systems.

Why Nix?

Nix allows for easy-to-manage, collaborative, reproducible deployments. This means that once something is setup and configured once, it works forever. If someone else shares their configuration, anyone can make use of it.

Want to know Nix in detail? Looking for a beginner-friendly tutorial or best practices? Check out NixOS & Nix Flakes Book - 🛠️ ❤️ An unofficial & opinionated 📖 for beginners!

If you're using macOS, you can also check out ryan4yin/nix-darwin-kickstarter for a quick start.

Components

NixOS(Wayland) NixOS(Xorg)
Window Manager Hyprland i3
Terminal Emulator Kitty Kitty
Bar Waybar i3block
Application Launcher anyrun rofi
Notification Daemon Mako Dunst
Display Manager GDM GDM
Color Scheme Catppuccin Catppuccin
network management tool NetworkManager NetworkManager
Input method framework Fcitx5 Fcitx5
System resource monitor Btop Btop
File Manager ranger + thunar ranger + thunar
Shell Nushell + Starship Nushell + Starship
Music Player mpd, ncmpcpp, mpc, Netease-cloud-music-gtk Netease-cloud-music-gtk
Media Player mpv mpv
Text Editor Neovim Neovim
Fonts Nerd fonts Nerd fonts
Image Viewer imv imv
Screenshot Software grim flameshot
Screen Recording OBS OBS

Wallpapers: https://github.com/ryan4yin/wallpapers

Hyprland + AstroNvim

I3 + AstroNvim

Neovim

See ./home/base/desktop/neovim for details.

Hosts

See ./hosts for details.

Secrets Management

See ./secrets for details.

How to Deploy this Flake?

🔴 IMPORTANT: You should NOT deploy this flake directly on your machine:exclamation: It will not succeed. this flake contains my hardware configuration(such as hardware-configuration.nix, cifs-mount.nix, Nvidia Support, etc.) which is not suitable for your hardware, and my private secrets repository ryan4yin/nix-secrets that only I have access to. You may use this repo as a reference to build your own configuration.

For MacOS:

# deploy the darwin configuration(harmonicia)
make ha

# deploy with details
make ha-debug

For NixOS:

Need to restart the machine when switching between wayland and xorg.

# deploy one of the configuration based on the hostname
sudo nixos-rebuild switch --flake .#ai_i3
# sudo nixos-rebuild switch --flake .#ai_hyprland

# we can also deploy using `make`, which is defined in Makefile
make i3    # deploy my pc with i3 window manager
# make hypr  # deploy my pc with hyprland compositor

# or we can deploy with details
make i3-debug
# make hypr-debug

To deploy this flake from NixOS's official ISO image(purest installation method), please refer to ryan4yin/nix-config/nixos-install

Install Apps from Flatpak

We can install apps from flathub, which has a lot of apps that are not supported well in nixpkgs.

# Add the Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# install apps from flathub
flatpak install netease-cloud-music-gtk

# install 3d printer slicer - cura
flatpak install flathub com.ultimaker.cura

# or you can search apps from flathub
flatpak search <keyword>
# search on website is also supported: https://flathub.org/

How to create & managage VM from this flake?

use aquamarine as an example, we can create a virtual machine with the following command:

# 1. generate a proxmox vma image file
nom build .#aquamarine  # `nom`(nix-output-monitor) can be replaced by the standard command `nix`

# 2. upload the genereated image to proxmox server's backup directory `/var/lib/vz/dump`
#    please replace the vma file name with the one you generated in step 1.
scp result/vzdump-qemu-aquamarine-nixos-23.11.20230603.dd49825.vma.zst root@192.168.5.174:/var/lib/vz/dump

# 3. the image we uploaded will be listed in proxmox web ui's this page: [storage 'local'] -> [backups], we can restore a vm from it via the web ui now.

Once the virtual machine aquamarine is created, we can deploy updates to it with the following commands:

# 1. add the ssh key to ssh-agent
ssh-add ~/.ssh/ai-idols

# 2. deploy the configuration to all the remote host with tag `@dist-build`
# using the ssh key we added in step 1
colmena apply --on '@dist-build' --show-trace

If you're not familiar with remote deployment, please read this tutorial first: Remote Deployment - NixOS & Flakes Book

References

Other dotfiles that inspired me:

About

❄️ryan4yin's nix config(NixOS/macOS + home-manager + i3/hyprland + neovim + agenix)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nix 68.6%
  • Lua 13.9%
  • Shell 11.2%
  • Nushell 2.2%
  • CSS 1.7%
  • Makefile 1.7%
  • Python 0.7%