No description
Find a file
C4 Patino 45058b9068
All checks were successful
ci / nix-fmt (push) Successful in 9m40s
feat: added free-range-zoo github runner availablility
2025-12-13 22:37:08 -06:00
.forgejo/workflows refactor: updated forgejo workflows to add caching 2025-12-07 14:42:01 -06:00
.git-crypt Add 2 git-crypt collaborators 2025-11-17 22:09:02 -06:00
homes chore: updated all flake.lock inputs to 25.11 2025-11-28 10:08:56 -06:00
infra feat: added hetzner cloud terraform configuration 2025-11-04 22:28:05 -06:00
inputs chore: updated all inputs in flake.lock 2025-12-07 15:31:07 -06:00
lib/module refactor: updated all modules to not use global with syntax for lib and lib.${namespace} 2025-06-08 23:29:54 -05:00
modules fix: updated glance dashboards with updated repositories 2025-12-13 19:11:18 -06:00
overlays feat: added overlay from nixpkgs unstable for opencode pkg instance 2025-11-30 21:10:02 -06:00
secrets fix: updated glance dashboards with updated repositories 2025-12-13 19:11:18 -06:00
shells refactor: removed cudaSupport from shells which don't need it 2025-11-30 17:34:34 -06:00
systems feat: added free-range-zoo github runner availablility 2025-12-13 22:37:08 -06:00
templates chore: updated all flake.lock inputs to 25.11 2025-11-28 10:08:56 -06:00
.gitattributes chore: updated file permissions to be more restrictive 2025-05-24 11:06:41 -05:00
.gitignore feat: added devenv to templates and removed .envrc entries from .gitignore 2025-11-15 07:42:10 -06:00
.gitmodules chore: modified inputs urls to use forgejo urls instead of github 2025-11-04 16:30:54 -06:00
.sops.yaml feat: added cert and secret bundles for arisu and kokoro windows devices 2025-11-23 15:52:37 -06:00
demo.png chore: updated file permissions to be more restrictive 2025-05-24 11:06:41 -05:00
flake.lock chore: updated all inputs in flake.lock 2025-12-13 14:11:13 -06:00
flake.nix feat: updated stylix to use release-25.11 branch 2025-12-04 22:36:06 -06:00
LICENSE chore: updated file permissions to be more restrictive 2025-05-24 11:06:41 -05:00
README.md feat: added tobira configuration for hetzner cloud vps device 2025-11-04 22:28:05 -06:00

ゆめあみ (yumeami)

logo

Meticulously crafted collection of NixOS configurations tailored for my systems. This repository encapsulates a unified setup across different machines, ensuring a consistent and efficient environment no matter where I'm working. The configurations are designed with modularity and clarity in mind, making it easy to adapt and scale. Whether it's setting up a new machine or refining an existing setup, ゆめあみ brings what I believe to be the best practices in NixOS configuration management, unified under a single, cohesive structure.

System Architecture Description
🧠 arisu x86_64-linux primary development tower, custom built
💖 kokoro x86_64-linux thinkBook 15 laptop, mobile development
🌸 shiori x86_64-linux always-on mini pc, quiet and stable host
🐣 chibi aarch64-linux raspberry Pi 4B for hosting and local dev
🚪 tobira x86_64-linux hetzner cloud VPS for outside communication
hikari x86_64-linux custom installer iso, new systems and VMs

Repository Structure

.
├── flake.nix              # Main flake configuration
├── homes/                 # Home-manager configurations
│   ├── aarch64-linux/     # ARM architecture systems
│   └── x86_64-linux/      # x86 architecture systems
├── lib/                   # Shared library functions
├── modules/               # Modular configurations
│   ├── home/              # Home-manager modules
│   └── nixos/             # NixOS system modules
├── secrets/               # Encrypted secrets (git-crypt)
├── shells/                # Development shell environments
└── systems/               # NixOS system configurations

Prerequisites

  • NixOS installation media
  • ZFS support (for impermanence)
  • A storage device to install to
  • Basic understanding of NixOS and the Nix language

Installation

To set up your system using ゆめあみ configurations:

# Clone the repository
git clone https://github.com/c4patino/nixos-configuration.git ~/dotfiles
cd ~/dotfiles

# Partition and format drives using disko
# Replace <device> with your disk device (e.g., sda, nvme0n1)
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- \
    --mode disko ~/dotfiles/system/hosts/disko.nix \
    --mode disko ~/dotfiles/systems/disko.nix \
    --arg main '"/dev/<device>"'

# Copy configuration to the persistent storage
sudo cp ~/dotfiles /mnt/persist

# Install NixOS with the configuration for your system
# Replace <system-name> with one of: arisu, kokoro, shiori, chibi
sudo nixos-install --root /mnt --flake ~/dotfiles#<system-name> --option extra-experimental-features pipe-operators

Customization

To customize a configuration for your own use:

  1. Create a new host configuration in systems/<arch>/<hostname>/default.nix
  2. Configure your hardware settings in systems/<arch>/<hostname>/hardware-configuration.nix
  3. Create a home-manager configuration in homes/<arch>/<user>@<hostname>/default.nix
  4. Enable the desired modules for your system and home configurations

Features

  • Impermanence: ZFS snapshot-based system with persistent directories for clean reboots
  • Dynamic backgrounds: Variety-powered slideshow for ever-changing wallpapers
  • Development environments: Preconfigured setups for various programming languages
  • Neovim: Highly customized configuration for efficient coding
  • Various editors: Native Vim shortcut support and configurations
  • Yazi: Fast, terminal-based file manager
  • Eww task bar: Minimal and versatile task bar interface
  • Spotify: Seamless Spotify integration
  • Anyrun: Intuitive application launcher
  • Kitty terminal: Customized themes and keybindings
  • Zoxide: Enhanced terminal navigation with zoxide

Formatter Setup

This project uses treefmt-nix to orchestrate formatters for Nix and Lua files:

  • alejandra for Nix
  • stylua for Lua

Usage

Format all files

nix fmt

Check formatting (for CI or local validation)

nix flake check

Configuration

Formatters are configured in flake.nix and treefmt.nix.

  • To add more formatters, edit treefmt.nix and update the programs section.

Troubleshooting

If you encounter issues, ensure your Nix version is up to date (2.25+ recommended).

For more info, see treefmt-nix documentation.

Usage

Rebuilding Your System

# For system configuration
sudo nixos-rebuild switch --flake ~/dotfiles#<hostname>

# For home-manager configuration
home-manager switch --flake ~/dotfiles#<user>@<hostname>

Adding New Modules

  1. Create a new module in the appropriate directory:
    • System modules: modules/nixos/<category>/<module-name>/
    • Home modules: modules/home/<category>/<module-name>/
  2. Create a default.nix file following the existing module structure
  3. Enable your module in your system or home configuration

Troubleshooting

Common Issues

  • ZFS import fails: Ensure you have the correct pool name in your configuration
  • Module not found: Check that the module is correctly imported and the namespace is correct
  • Secrets not accessible: Run git-crypt unlock if you have access to the repository keys

Roadmap

  • Add comprehensive module test coverage
  • Implement integration tests with virtual machines
  • Add performance benchmarking for critical configurations

Authors

Here are some related projects that are used in this configuration

License

MIT