This repository hosts my dotfiles and configs for various applications on NixOS. Heavily WIP and continually evolving.
I will try to remember to give credits and links where possible but I'll probably forget.
This structure was heavily inspired, and has some code taken from Misterio77's nix-starter-configs. This was extremely helpful in getting me to have a refactored and cleaner NixOS setup.
.
├── hm/
│ ├── common/
│ │ ├── packages/
│ │ │ └── # A set of common packages I share across my users where no configuration is required
│ │ └── modules/
│ │ └── # A set of common configurations for programs I share across my users
│ ├── chunix/
│ ├── home.nix
│ └── ...
│
├── overlays # a set of overlays
├── system/
│ ├── common/
│ │ └── # A set of common packages/configurations I share across my systems
│ ├── yoga # configuration for my Yoga C940
│ └── legion # Configuration for my Legion 5 Pro Gen 7 (WIP)
├── docs/
│ └── ... # website for dotfiles
├── Pictures/
│ └── ...
├── flake.nix
├── flake.lock
└── install.sh
TBD
This NixOS setup integrates home-manager
into the system configuration so that all users can simply be updated with sudo nixos-rebuild switch .#<hostname>
.
-
Whether you're booting from scratch or not, you need
git
(or just have the repo locally). If you don't have git, you can temporarily invoke it withnix-shell -p git --run "git clone https://github.com/chpxu/dotfiles"
and it will clone the repo into a folder calleddotfiles
in your present working directory. -
Make any necessary changes to the configuration. For example:
- Secrets and networking. These will be invalid since they depend on SSH keys, so you will want to remove it and the configuration in
system/common/modules/networking.nix
. - Hostnames and usernames.
- Installed programs and their settings.
- Secrets and networking. These will be invalid since they depend on SSH keys, so you will want to remove it and the configuration in
-
Make sure everything is saved. If you are intending to push to a git repo, make sure to
git add .
first. Then you can runsudo nixos-rebuild switch .#<hostname>
or some variation to build.
You will be successful if everything you wanted installed, installs and is configured appropriately. The home-manager configuration will also be successfully built if you see home-manager.<user>.service
was successfully (re)started. You can check its status with systemctl status home-manager.<user>.service
.
These dotfiles uses the Nord theme.
- The Nord colour palette.
- The GTK theme Nordic by @EliverLara. Follow the instructions on the page to use the GTK3/4 theme.
- I use the Fira Code Retina Nerd and Source Code Pro fonts. Both are TTFs.
- I use the Nordzy icon theme.
- I use Nordzy-cursors as my cursor theme.
These are the main applications and programs I use. Everything has been
installed from nixos-unstable
by default unless mentioned otherwise. WIP.
- firefox-dev-edition
- gimp
- inkscape
- vscode
- discord-canary
- mpv
- imv
- rnote
- zathura
- libreoffice (fresh branch)
- zotero
- logseq
- pdfarranger
Applications or programs which affect my workspace
- Hyprland
- hyprpaper
- waybar (built with
-Dexperimental=true
) - swayidle
- swaylock-effects (jirutka fork)
- mako
- cliphist + wl-clipboard
- rofi-wayland
- kitty
- zsh + starship
- wvkbd (custom derivation to add theming. See my repo)
- nano
- direnv
This section is more information about the configuration, mainly for those who want to extend/use this configuration (though you're probably better off using @Misterio77's boilerplate).
- Description. Self-explanatory. Edit it to whatever
string
you want. inputs
attribute set contain the flake inputs. Where possible, I have tried to use flake inputs or overlays for as many (environment) programs as possible.- A bunch of
let
bindings. Namely:system
,user
,pkgs
for some easy reusable keywordscolour-palette
which is the file containing the RGB hex codes for the Nord theme.mkSystemConfiguration
a function which creates a NixOS system with given hostname and users.
outputs
. What the flake returns and allows you to access.