1
21
Fork
You've already forked misako
0
My personal repository for storing and sharing my manifests and declarative configuration files for my GNU/Guix operating system.
  • Scheme 65.9%
  • Shell 19.4%
  • Emacs Lisp 11.9%
  • CSS 2%
  • GLSL 0.8%
2026年01月15日 16:19:26 -03:00
images images: Update desktop image. 2025年01月23日 13:07:56 -03:00
install install: Update some scripts. 2026年01月09日 12:37:49 -03:00
misako misako: look: Remove spicetify PATH dit. 2026年01月15日 16:19:26 -03:00
.gitignore misako: Add smb.conf to gitignore. 2025年04月07日 09:26:49 -03:00
LICENSE feat: license 2024年03月07日 15:39:29 -03:00
README.md misako: Refactor into zero style. 2025年05月24日 16:54:45 -03:00

Misako

This repository features my GNU Guix declarative configuration and dotfiles.

My GNU/Guix channel can be found in Saayix.

desktop

Regarding the structure

The configuration herein contained is done in a modular fashion, striving for a proper separation of domains:

  • Operating system configuration (done declaratively using guix system);
  • Home environment configuration (done declaratively using guix home).

Each operating system should provide only the packages, services and other resources needed for the system installation, proper functioning and administrative tasks. It should avoid to make assumptions regarding the needs of its users, which should themselves provide the functionality needed by their use through their home environments configurations. In this sense, no desktop environment, sound backend and other desktop-related functionality is provided by the systems herein presented. Complementarily, each home environment should make as little assumptions as possible regarding the operating system it will be used on.

For organization, everything related to a user environment, for example look, should be under home-environments/look/ and home-environments/look.scm. Similarly, everything related to a operating system, for example yumiko, should be in operating-systems/yumiko/ and operating-systems/yumiko.scm.

In many cases, it is desirable to share configuration settings across multiple operating systems. To achieve this, an operating system can inherit properties from a base operating-system. Any modifications made to this base are then automatically propagated to all derived operating systems.

Possibly interesting to point out

Operating Systems

  • yumiko

    • Uses a tmpfs root filesystem, a setup known as impermanence, with the intent of extending the reproducibility to the system runtime, by deleting on reboot every non explicitly managed state. State which is assumed to be unwanted.
    • Uses subvolumes of a single btrfs partition for every non-tmpfs filesystem. For the following reasons:
      • compression for /gnu/store;
      • snapshots for /home;
      • this setup avoids completely the need for partition resizes if the memory usage isn't distributed as initially expected.
    • Uses NVIDIA latest proprietary drivers.
  • yuria

    • Uses subvolumes of a single btrfs partition for every non-tmpfs filesystem. For the following reasons:
      • compression for /gnu/store;
      • snapshots for /home;
      • this setup avoids completely the need for partition resizes if the memory usage isn't distributed as initially expected.
  • base

    • The base operating system from which all the previous inherit from.
    • Uses opendoas-service-type, available in the radix channel, for declaratively setting up the rules for doas, a minimal replacement for sudo.
    • No use of %base-services or %base-packages, every package and service is declared explicitly, since it makes more sense to declare what you want, rather than what you don't.

Home Environments

  • look
    • Uses a fork of home-fish-service-type, from radix channel, to declaratively setting up the fish shell configuration, including aliases and plugins.
    • Uses home-directories-service-type, from radix channel, to declaratively ensure the existence of certain home subdirectories.
    • Uses home-repositories-service-type, from radix channel, to declaratively ensure the existence of certain cloned repositories.
    • Avoid dotfiles by opting for XDG compliant software, setting environment variables and/or explicitly passing configuration files and/or parameters to commands, which are then aliased.
    • Uses the Hyprland window manager together with a bar written in eww, available in the saayix channel.
    • Uses home-sops-secrets-service-type, available in the sops-guix channel, to manage secrets needed to ease the usage of the setup.
    • No use of %base-home-services, since it makes more sense to declare what you want than what you don't.
    • For anyone looking for dotfiles, these can be found here.

All scheme code in this repository is written with readability in mind, so other users can gather examples on how to do specific configurations for their own setups. If you have any doubt regarding this repository files, feel free to open an issue asking about it.