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 and vscode for text editing
    • firefox and chromium for web browsing
    • alacritty, kitty and wezterm for terminal emulators
    • bash, zsh, fish and nushell 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.

  1. Install NixOS, you might need to follow the manual
  2. Clone this repository to ~/.config/flake
  3. 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.

  1. Locate the Windows EFI partition
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
  1. Mount the Windows EFI partition
sudo mkdir /mnt/winboot
sudo mount /dev/nvme0n1p1 /mnt/winboot
  1. Copy the Windows EFI files to the NixOS EFI partition
sudo rsync -av /mnt/winboot/EFI/Microsoft/ /boot/EFI/Microsoft/
  1. Finally, clean up
sudo umount /mnt/winboot
sudo rmdir /mnt/winboot

macOS

  1. Install Lix the package manager
curl -sSf -L https://install.lix.systems/lix | sh -s -- install
  1. Then enter a nix development shell in order to use git and other required tools
nix develop
  1. 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
      • ๐Ÿ“š lib Useful repeated functions
      • ๐Ÿ› ๏ธ templates Templates for setting up development environments
      • ๐Ÿ‘พ modules Exported modules for NixOS, home-manager and Nix Darwin
      • ๐Ÿ“ฆ packages Packages that are not available in the official Nixpkgs
    • profiles Pre-made profiles for different system types
      • desktop A profile for desktop systems
      • graphical A profile for graphical systems
      • headless A profile for headless systems
      • laptop A profile for laptop systems
      • server A profile for server systems
      • wsl A profile for WSL2 systems
SKHD ShortcutHyprland ShortcutWhat it does
CMD+RETURNSUPER+RETURNopen terminal
SUPER+Bopen browser
SUPER+Copen editor
SUPER+Oopen notes
SUPER+Eopen file manager
CMD+QSUPER+Qquit
CMD+DSUPER+Dlauncher
SUPER+Ffull 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 template
  • nix 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 the target and arch attributes or aarch64-darwin
  • 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.

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????

Preview image images/lightmode.png images/blur images/nvim image of my flakes topology