No description
  • TeX 60.5%
  • Nix 34.9%
  • BibTeX Style 3.5%
  • HCL 1%
  • SCSS 0.1%
Find a file
2025-11-15 07:42:10 -06:00
.forgejo/workflows feat: added formatting workflow for forgejo 2025-11-04 22:27:57 -06:00
.git-crypt chore: updated file permissions to be more restrictive 2025-05-24 11:06:41 -05:00
homes fix!: modified home.stateVersion and system.stateVersion to use 25.05 instead of 25.11 2025-11-04 22:28:05 -06:00
infra feat: added hetzner cloud terraform configuration 2025-11-04 22:28:05 -06:00
inputs feat: added tokens and gpg keys to forgejo sops secrets 2025-11-12 19:07:48 -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 feat: enabled forgejo badges 2025-11-15 07:42:10 -06:00
overlays feat: added woodpecker runtime configurations to modules 2025-11-02 17:10:14 -06:00
secrets feat: added tokens and gpg keys to forgejo sops secrets 2025-11-04 22:21:49 -06:00
shells fix: defined python311, python312, and python313 shells 2025-10-13 23:33:10 -05:00
systems feat: modified to increase number of gitea runners available 2025-11-15 07:42:10 -06:00
templates feat: added devenv to templates and removed .envrc entries from .gitignore 2025-11-15 07:42:10 -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 fix: properly provided ssh_host_<alg>_key credentials to openssh to stop known_hosts refresh 2025-10-28 22:18:24 -05:00
demo.png chore: updated file permissions to be more restrictive 2025-05-24 11:06:41 -05:00
flake.lock chore: updated inputs in flake.lock 2025-11-15 07:42:10 -06:00
flake.nix chore: added keep-sorted directives and extra channels to glance layout 2025-10-09 16:14:44 -05: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