- Scheme 65.9%
- Shell 19.4%
- Emacs Lisp 11.9%
- CSS 2%
- GLSL 0.8%
| images | images: Update desktop image. | |
| install | install: Update some scripts. | |
| misako | misako: look: Remove spicetify PATH dit. | |
| .gitignore | misako: Add smb.conf to gitignore. | |
| LICENSE | feat: license | |
| README.md | misako: Refactor into zero style. | |
Misako
This repository features my GNU Guix declarative configuration and dotfiles.
My GNU/Guix channel can be found in Saayix.
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
-
- Uses a
tmpfsroot 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
btrfspartition 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.
- compression for
- Uses NVIDIA latest proprietary drivers.
- Uses a
-
- Uses subvolumes of a single
btrfspartition 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.
- compression for
- Uses subvolumes of a single
-
- 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 fordoas, a minimal replacement forsudo. - No use of
%base-servicesor%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 thefish shellconfiguration, 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.
- Uses a fork of
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.