Workstation Template
Marchyo includes a workstation template that provides a complete developer setup with desktop environment, development tools, and sensible defaults.
Getting started
Section titled “Getting started”1. Initialize the template
Section titled “1. Initialize the template”nix flake init -t github:Jylhis/marchyo#workstation2. Generate hardware configuration
Section titled “2. Generate hardware configuration”nixos-generate-config --show-hardware-config > hardware-configuration.nix3. Customize configuration.nix
Section titled “3. Customize configuration.nix”Edit the generated configuration:
- Change
networking.hostNameto your workstation name - Update
marchyo.users.developerwith your details - Set
marchyo.timezone/marchyo.defaultLocaleif the defaults (Europe/Zurich,en_US.UTF-8) don’t fit - Development tooling is a single switch — set
marchyo.development.enable = falseif you don’t want it
4. Test in a VM (optional)
Section titled “4. Test in a VM (optional)”nixos-rebuild build-vm --flake .#workstation./result/bin/run-workstation-vm5. Build and switch
Section titled “5. Build and switch”sudo nixos-rebuild switch --flake .#workstationWhat’s included
Section titled “What’s included”Desktop environment
Section titled “Desktop environment”- Hyprland (Wayland compositor) with all Marchyo customizations
- Ghostty terminal
Development tools
Section titled “Development tools”- Editors — jotain (Jylhis’s Emacs config) by default; switch via
marchyo.defaults.editor(emacs, vscode, vscodium, zed) andmarchyo.defaults.terminalEditor(emacs, neovim, helix, nano) - Version control — Git with Git LFS, GitHub CLI
- Containers — Docker with docker-compose, buildah, skopeo, lazydocker
- Virtualization — QEMU/KVM via libvirtd
- Build & debug — gnumake, cmake, gcc, jq/yq, nmap, tcpdump
Terminal enhancements
Section titled “Terminal enhancements”- Starship prompt
- Zoxide (smart
cd) - fzf (fuzzy finder)
- ripgrep (fast
grep) - fd (fast
find)
Customization tips
Section titled “Customization tips”Adding programming languages
Section titled “Adding programming languages”environment.systemPackages = with pkgs; [ python3 nodejs rustc cargo go jdk17];VS Code extensions
Section titled “VS Code extensions”programs.vscode = { enable = true; extensions = with pkgs.vscode-extensions; [ ms-python.python rust-lang.rust-analyzer ];};Using Podman instead of Docker
Section titled “Using Podman instead of Docker”virtualisation.podman = { enable = true; dockerCompat = true; defaultNetwork.settings.dns_enabled = true;};Project-specific dev shells with direnv
Section titled “Project-specific dev shells with direnv”programs.direnv = { enable = true; nix-direnv.enable = true;};Then in your project directory, create a .envrc:
use flakeMulti-monitor setup
Section titled “Multi-monitor setup”Override Hyprland monitor configuration in your home config:
wayland.windowManager.hyprland.settings = { monitor = [ "DP-1,1920x1080@60,0x0,1" "HDMI-A-1,1920x1080@60,1920x0,1" ];};Updating
Section titled “Updating”nix flake updatesudo nixos-rebuild switch --flake .#workstation