Skip to content

hmajid2301/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


Nix Config

Nix Flakes Ready Built With Snowfall

Screenshot updated: 2024-04-05

โš ๏ธ This config repo is constantly changing, Let me know if you see something that can be improved or done better ๐Ÿ˜„ .

๐Ÿ’ฝ Usage

Install

To install NixOS on any of my devices I now use nixos-anywhere. You will need to be able to SSH to the target machine from where this command will be run. Load nix installer ISO if no OS on the device. You need to copy ssh keys onto the target machine mkdir -p ~/.ssh && curl https://github.com/hmajid2301.keys > ~/.ssh/authorized_keys in my case I can copy them from GitHub.

git clone git@github.com:hmajid2301/dotfiles.git ~/dotfiles/
cd dotfiles

nix develop

nixos-anywhere --flake '.#workstation' nixos@192.168.1.8 # Replace with your IP

After building it you can copy the ISO from the result folder to your USB. Then run nix_installer, which will then ask you which host you would like to install.

Building

To build my dotfiles for a specific host you can do something like:

git clone git@github.com:hmajid2301/dotfiles.git ~/dotfiles/
cd dotfiles

nix develop

# To build system configuration (uses hostname to build flake)
nh os switch

# To build user configuration (uses hostname and username to build flake)
nh home switch

# Build ISO in result/ folder
nix build .#install-isoConfigurations.graphical

# Deploy my to remote server i.e. PI cluster (using SSH)
deploy .#primary --hostname primary.local --ssh-user nixos --skip-checks --interactive-sudo true

๐Ÿš€ Features

Some features of my dotfiles:

  • Structured to allow multiple NixOS configurations, including desktop, laptop
  • Declarative config including themes, wallpapers and nix-colors
  • Custom live ISO for installing NixOS
  • Opt-in persistance through impermanence + blank snapshot
  • Encrypted BTRFS partition
  • sops-nix for secrets management
  • Different environments like hyprland and gnome
  • Custom Neovim setup declaratively using nixvim

๐Ÿ  Configurations

Hostname Board CPU RAM Primary GPU Role OS State
workstation X671E AORUS PRO X AMD Ryzen 9 7950X 64GB AMD Spectral White 7900 XTX ๐Ÿ–ฅ๏ธ โ„๏ธ โœ…
framework Framework 13th Gen AMD AMD Ryzenโ„ข 7 7840U 32GB AMD Radeonโ„ข 780M ๐Ÿ’ป๏ธ โ„๏ธ โœ…
FRANDECPA63294006A Framework 13th Gen Intel AMD Ryzenโ„ข 7 7840U 32GB Intel Iris Graphics ๐Ÿ’ป๏ธ ๐Ÿง โœ…
VM QEMU - - VirGL ๐Ÿ„ โ„๏ธ โœ…
steamdeck - Zen 2 16GB 8 RDNA 2 CUs ๐ŸŽฎ๏ธ ๐Ÿง โœ…
FrameworkedUp Framework 12th Gen Intel i7-1280P 32GB Intel Iris Graphics โ˜๏ธ โ„๏ธ โœ…
one Rapsberry Pi 4B Quad core Cortex-A72 4GB VideoCore VI @ 500 MHz โ˜๏ธ โ„๏ธ โœ…
two Rapsberry Pi 4B Quad core Cortex-A72 4GB VideoCore VI @ 500 MHz โ˜๏ธ โ„๏ธ โœ…
three Rapsberry Pi 4B Quad core Cortex-A72 8GB VideoCore VI @ 500 MHz โ˜๏ธ โ„๏ธ โœ…
four Rapsberry Pi 4B Quad core Cortex-A72 8GB VideoCore VI @ 500 MHz โ˜๏ธ โ„๏ธ โœ…

Key

  • ๐Ÿ–ฅ๏ธ : Desktop
  • ๐Ÿ’ป๏ธ : Laptop
  • ๐ŸŽฎ๏ธ : Games Machine
  • ๐Ÿ„ : Virtual Machine
  • โ˜๏ธ : Server

๐Ÿ“ฑ Applications

Type Program
OS NixOS
Editor NeoVim
Multiplexer Zellij
Prompt Starship
Launcher Rofi
Shell Fish
Status Bar Waybar
Terminal Wezterm
Window Manager Hyprland
Fonts Mono Lisa
Colorscheme Catppuccin Mocha

Neovim

My neovim config is made using nixvim. Which converts all the nix files into a single "large" init.lua file.

As you will see down below a lot of the UI elements were inspired/copied from nvchad. As I think they have really nice looking editor altogether. Particularly the cmp menu, telescope and also the status line.

Plugins

Some of the main plugins used in my nvim setup include:

  • Session: auto-session
  • Status Line: lualine
  • Buffer Line: bufferline
  • Winbar: barbecue & navic
  • File Explorer: mini.files and oil.nvim
  • LSP: lsp, nvim-cmp, luasnip, friendly-snippets
  • Git: gitsigns, lazygit
  • ColourScheme: notkens12 base46 (nvchad catppuccin)
  • Other: telescope (ofc)

๐Ÿ–ผ๏ธ Showcase

Desktop

terminal swaync games wallpaper monkeytype

Neovim

Alpha Telescope Editor Go Code CMP

Appendix

Inspired By