Skip to content

Quick Start

The fastest way to get started is with the built-in template:

Terminal window
nix flake init -t github:Jylhis/marchyo#workstation

This creates a complete configuration with desktop environment, development tools, and sensible defaults. See the Workstation Template guide for details.

Add Marchyo as your only input and build with marchyo.lib.mkNixosSystem. It selects the correct nixpkgs (unstable; stable nixos-26.05 for x86_64-darwin), home-manager, stylix, overlay and marchyo modules automatically — you supply only your own config modules.

{
inputs.marchyo.url = "github:Jylhis/marchyo";
outputs = { marchyo, ... }: {
nixosConfigurations.myhost = marchyo.lib.mkNixosSystem {
system = "x86_64-linux";
modules = [
./hardware-configuration.nix
{
marchyo.desktop.enable = true;
marchyo.development.enable = true;
marchyo.users.myuser = {
fullname = "Your Name";
email = "your.email@example.com";
};
}
];
};
# macOS uses marchyo.lib.mkDarwinSystem the same way. On x86_64-darwin it
# transparently pins the stable nixos-26.05 set (the last release supporting
# Intel macOS); aarch64-darwin and Linux ride unstable.
};
}

If you only want the Home Manager modules without the NixOS system modules, use the exported marchyo.lib.mkHomeConfiguration builder. It wires up the correct nixpkgs, the third-party Home Manager modules marchyo depends on (noctalia, vicinae, sops-nix, jotain), and a mock osConfig — a plain homeManagerConfiguration call with just marchyo.homeManagerModules.default will not evaluate.

{
inputs.marchyo.url = "github:Jylhis/marchyo";
outputs = { marchyo, ... }: {
homeConfigurations.developer = marchyo.lib.mkHomeConfiguration {
system = "x86_64-linux";
homeDirectory = "/home/developer";
};
};
}

The builder takes only system and homeDirectory, and currently manages a user named developer. It is Linux-only — marchyo exports ready-made homeConfigurations for x86_64-linux and aarch64-linux (many Home Manager modules depend on Wayland/Hyprland, so there is no darwin variant; on macOS use marchyo.lib.mkDarwinSystem instead).

A minimal configuration that enables only the desktop environment:

{
marchyo.desktop.enable = true;
marchyo.users.myuser = {
fullname = "Your Name";
email = "you@example.com";
};
}

Enabling marchyo.desktop.enable automatically enables media and office applications via cascading defaults. You can override any of these:

{
marchyo.desktop.enable = true;
marchyo.media.enable = false; # Override: disable media apps
}