Skip to content

brklntmhwk/yakumo

Repository files navigation

Yakumo 卍 八雲

Yakumo is the sanctuary—Rooted in the ancient song of building a dwelling for one’s beloved, it stands as the home I weave from dotfiles, a shelter for my digital life.

Important

Disclaimer: This repository is a lifelong alpha project—a perpetual proving ground for experimental features and architectural whims. While you are highly encouraged to draw inspiration from this codebase, please be aware that our test coverage is nowhere near production standards; things may behave in unexpected ways. Furthermore, these configurations are intimately tailored to our specific hardware and environments. Blindly copy-pasting this into your machine is a one-way ticket to a broken system. Proceed with curiosity, but apply with extreme caution.

Overview

Welcome to Yakumo! It’s our home in the digital world weaved from dotfiles.

Philosophies

These philosopies are not isolated tenets, but are deeply interwoven.

Less Is More

Keep dependencies to a minimum to reduce attack surface and gain more control over stuff. We believe that also leads to better maintainability.

Low-Maintenance

Easy to maintain. You know where to tweak at a glance (Maybe). We stick to the Dependency Inversion Principle as much as possible to make updates a breeze.

TODO: Add a diagram to help readers grasp the whole architecture.

Predictability

Easy to read. You know what comes next when you’re drilling down the directories (Maybe). To achieve this, the directory structure has a few things in common (e.g., the common directories).

Plus, we introduce the deliberate distinction between module and configuration Nix files (i.e., modules vs. hosts & users); the former has the NixOS module’s full structure such as options and config, whereas those latters are a simpler attribute set or a function.

Modules
{
  config,
  lib,
  ...
}:

let
  inherit (lib) mkEnableOption mkIf mkOption types;
  cfg = config.yakumo.foo;
in
{
  options.yakumo.foo = {
    enable = mkEnableOption "foo";
    username = mkOption {
      type = types.str;
      default = "yakumo";
      description = "Yakumo username.";
    };
  };

  config = mkIf cfg.enable {
    # ...
  };
}
Hosts & Users Configuration
{
  config,
  lib,
  ...
}:

let
  inherit (lib) mkForce;
in
{
  yakumo.foo = {
    enable = true;
    username = mkForce config.yakumo.user.name;
  };

  # ...
}

Reinvent The Wheel

Preferring the deliberate labor of creation over the opacity of magic, we build it from scratch to fully understand it—turning potential debugging nightmares into simple tweaks.

Cool

After all, what drives us to tend our dotfiles is pure self-satisfaction, isn’t it?

Distinguishing Features

Yosuga 卍 縁 — Custom Persistence Layer

A lightweight, in-house implementation of Impermanence. Embracing the ”Erase Your Darlings” ethos, Yosuga provides the essential “clue” (縁) to persist only what truly matters across the void of every reboot.

Beyond Home Manager — The “Wrapper Frontier” Challenge

An attempt to minimize reliance on external abstraction layers. By pushing the limits of native NixOS module wrapping with pkgs.symlinkJoin and its fellows, Yakumo maintains a high-fidelity relationship with the core system. Successfully ran away from “Home”—mission accomplished! (家出)

Multi-User Architecture

Within my filter bubble, very few precedents implement this for their dotfiles.

Hosts

TypeNameHardwareOSDescriptionUser
DesktoptsutsuyamiSelf-built Mini-ITX PC (AMD Ryzen 5 7600X and more)NixOSMain development workstation.Ohma Togaki
DesktopmomokagariMac Studio M2 MaxmacOS (Nix Darwin)Main workstation for creative work.Reiji Kawata
DesktoputsusemiN/AWindows (NixOS-on-WSL)Temporary workstation(s).Ohma Togaki
LaptopshinonomeMacBook Pro M1 2021macOS & NixOS (Asahi Linux, nixos-apple-silicon)Main laptop, not limited to on-the-go useOhma Togaki
ServerniwatazumiSelf-built Mini-ITX server (AMD Ryzen 5 7600 and more)NixOSMain home server cum NAS.Ohma Togaki
ServersazanamiGMKtec NucBox G5 N97NixOSSmart home & geospatial data serverOhma Togaki
ServertamazusaHetzner Cloud VPSNixOSMail server cum Headscale control planeOhma Togaki

Tools

CategoryNameDescription
CompositorHyprlandDynamic tiling Wayland compositor.
NiriA scrollable-tiling Wayland compositor.
GreeterRegreetClean and customizable greeter for greetd.
TuigreetGraphical console greeter for greetd.
Screen LockerHyprlockA simple, yet fast, multi-threaded and GPU-accelerated screen lock for Hyprland.
SwaylockScreen locker for Wayland.
Idle DaemonHypridleHyprland’s idle management daemon.
SwayidleIdle management daemon for Wayland.
TerminalWezTermA powerful cross-platform terminal emulator and multiplexer.
ShellZsh & StarshipThe Z shell with the minimal and customizable shell prompt.
EditorEmacsAn extensible, customizable, free/libre text editor.
Status BarWaybarHighly customizable Wayland bar for Sway and Wlroots based compositors.
App LauncherWofiA launcher/menu program for wlroots based wayland compositors.
NotificationMakoA lightweight Wayland notification daemon.
BrowserBraveThe browser that puts you first.
NyxtThe hacker’s browser.

Crossing the Threshold

WIP.

Acknowledgments

Yakumo stands on the shoulders of great pioneers from all walks of life. Heartfelt thanks to all the developers involved in the Nix community, Nixpkgs development, and beyond.

Especially, these projects brought Yakumo a large portion of inspiration in the following aspects:

License

The MIT License. See LICENSE for details.

About

Yakumo is the sanctuaryーRooted in the ancient song of building a dwelling for one's beloved, it stands as the home I weave from dotfiles, a shelter for my digital life.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages