Foreword
This repository contains my personal configuration for my systems, so its really important that you know it's personal and not everything will fit your needs. Therefore most things will not work out of the box without some changes, so be warned!!!!
warning
Also to note that this configuration will not work if you do not change any of the secrets since they are encrypted.
What does this repo provided
- Several applications and tools for my needs, but you can choose the one that best suits your needs
neovim
,micro
andvscode
for text editingfirefox
andchromium
for web browsingalacritty
,kitty
andwezterm
for terminal emulatorsbash
,zsh
,fish
andnushell
for shells
- Modular configuration, so you can add or remove parts of the configuration
- Sensible defaults, so you can get started quickly
- Docs kind of
- Catppuccin everywhere, with a hint of evergarden
NixOS
You might want to use the lilith iso configuration, provided in this repository
- To build it you can run
nix build .#images.lilith
. - Or you can download it from the release page.
If you opted to use the lilith iso image, you can use the iznix-install
script to install it on your system.
Otherwise, you can follow the steps below.
- Install NixOS, you might need to follow the manual
- Clone this repository to
~/.config/flake
- Run
sudo nixos-rebuild switch --flake ~/.config/flake#<host>
Dual boot
If you would like to set up duel boot with Windows, you should consider enabling secure boot. To do so you should follow the lanzaboote guide.
- Locate the Windows EFI partition
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
- Mount the Windows EFI partition
sudo mkdir /mnt/winboot
sudo mount /dev/nvme0n1p1 /mnt/winboot
- Copy the Windows EFI files to the NixOS EFI partition
sudo rsync -av /mnt/winboot/EFI/Microsoft/ /boot/EFI/Microsoft/
- Finally, clean up
sudo umount /mnt/winboot
sudo rmdir /mnt/winboot
macOS
- Install Lix the package manager
curl -sSf -L https://install.lix.systems/lix | sh -s -- install
- Then enter a nix development shell in order to use git and other required tools
nix develop
- Now we need to switch to the configuration, remember to replace
<host>
with the system you are configuring
just provision <host>
- ๐ docs The documentation for the dotfiles
- ๐ home Where all home-manager configurations lie
- ๐ฅ๏ธ systems
- โ๏ธ Amaterasu My high-end gaming machine
- ๐ก Cottage A Lowend laptop, its not great but it gets the job done
- ๐ Hydra A super mid spec laptop
- โธ Lilith A NixOS ISO image that can be quickly deployed and accessed via ssh
- โ๏ธ minerva A server configuration for some of my infrastructure
- ๐ค Valkyrie A WSL2 system, designed to be a development environment on Windows
- ๐ฎ Tatsumaki A MacBook Air, configured to last a whole day of university
- โจ wisp A WSL2 system, on cottage
- ๐ modules
- base The base configuration settings, which are common between all systems
- darwin Pre-made modules for exclusively darwin systems
- nixos Pre cooked modules for exclusively nixos systems
- iso Pre-configured modules prepared for making NixOS iso images
- extra Extra configuration modules, for home-manager and Nix Darwin and NixOS
- parts NixOS parts breaking down the complex configuration into smaller more manageable chunks
- profiles Pre-made profiles for different system types
SKHD Shortcut | Hyprland Shortcut | What it does |
---|---|---|
CMD+RETURN | SUPER+RETURN | open terminal |
SUPER+B | open browser | |
SUPER+C | open editor | |
SUPER+O | open notes | |
SUPER+E | open file manager | |
CMD+Q | SUPER+Q | quit |
CMD+D | SUPER+D | launcher |
SUPER+F | full screen | |
CMD+CTRL+[number] | SUPER+[number] | open workspace [number] |
CMD+SHIFT+[number] | SUPER+SHIFT+[number] | move to workspace [number] |
To use the templates there are two commands you can run, they are:
nix flake init -t github:isabelroses/dotfiles#<template>
to initialize a new project with the templatenix flake new -t github:isabelroses/dotfiles#<template> <out dir>
to create a new project in the specified directory
For the full list of templates you can look in the templates directory or run nix flake show github:isabelroses/dotfiles
.
The systems are configured in /systems/<hostname>
.
To set up a system configuration it must be declared in /systems/default.nix
.
-
arch:
- default: "x86_64"
- options: "x86_64", "aarch64"
-
class:
- default: "nixos"
- options: "nixos", "darwin", "iso"
-
system:
- default:
constructSystem config.hosts.<hostname>.target config.hosts.<hostname>.arch
- note: This is a function that constructs the system configuration, it will make
x86_64-linux
by from thetarget
andarch
attributes oraarch64-darwin
- default:
-
deployable:
- default: false
-
modules:
- default: "[ ]"
- options:
- laptop: for laptop type configurations
- desktop: for desktop type configurations
- server: for server type configurations
- wsl: for wsl systems
- gaming: for systems that have a graphical interface
- headless: for systems that do not have a graphical interface
-
specialArgs:
- default: "{ }"
Please consult easy-hosts for more information on how to set up a system configuration.
The user side is configured in /home/<user>
.
To set up a user configuration it must be declared in
/modules/base/users/options.nix
and /modules/base/users/<user>.nix
can be used for anything that is not preconfigured by /modules/base/users/mkusers.nix
.
Resources
A collection of resources from people who just make good stuff.
- Xe's blog
- The aux forum
- Viper's Blog
- Nix Pills, this one might be a bit much if you don't care too much about the internals
- Solรจne's Blog
- Jade Lovelace's blog
- Astrid's blog
- nixpkgs news
- nix.dev
- cafkafk's blog
- zimbatm's blog
- my own blog
- official wiki
- zero to nix
Projects / Configurations
These are some configuration or projects that I have taken inspiration from or find to be of a high quality that people should also consider reading.
People
Thanks to all these people otherwise this config and I would be lost.
- comfysage, for making my day that bit brighter and occasionally putting me on your back
- getchoo, for making catppucin/nix and helping a ton
- nullishamy, for tricking me into using NixOS
- nekowinston, for fixing half my problems
- jakehamilton, for teaching me too much about modules
- nyxkrage, for being there to answer my questions
- NotAShelf, lots of valuable information
- Minion3665, for making me write better docs
- Thorn, picrewnix????