! READ THE README FOR YOUR PLATFORM BEFORE DOING ANYTHING !
- Linux (NixOS): Linux/README.md
- Windows: Windows/README.md
Personal system configuration for Linux (NixOS + Hyprland) and Windows (Komorebi + YASB).
The Linux Hyprland runtime targets Hyprland 0.55+ and uses Lua config
entrypoints (hyprland.lua plus Lua modules) instead of legacy hyprlang
hyprland.conf fragments.
8-minute video tour of the NixOS side - click the image above
| Zen Browser (Catppuccin chrome) | Zen + Sine mods | Neovim (LazyVim) |
|---|---|---|
![]() |
![]() |
![]() |
Zen Browser theming lives in
Linux/dots/zen/chrome/. Neovim config (LazyVim-based) lives inLinux/dots/nvim/.
| User section | Display / Region section |
|---|---|
![]() |
![]() |
Contributors: read CONTRIBUTING.md before opening a PR. Security issues: see SECURITY.md.
- Linux/ - NixOS configuration with Hyprland 0.55+ Lua config, custom themes, dev environment
- Windows/ - Windows configuration with Komorebi tiling WM and YASB status bar
Read Linux/README.md first - contains pre-installation requirements, path configuration, regional notes, and troubleshooting.
No-clone install or reconfigure (recommended - Nix fetches the installer into
/nix/store; the installed /etc/nixos stays thin and tracks the reusable
MySetup NixOS flake). Use --refresh when you want the latest pushed commit
instead of Nix's cached GitHub source:
nix run --refresh 'github:TakuyaYagam1/MySetup'Fresh NixOS/KDE bootstrap note: on the first adoption, MySetup replaces the
active /etc/nixos/configuration.nix with a clean host-local override file and
backs up the previous /etc/nixos to /etc/nixos.bak.<timestamp>.... Your
hardware config, password hash, private/, and secrets/ stay preserved. If
the first live switch fails because dbus/systemd could not fully reactivate,
reboot and run:
sudo nixos-rebuild switch --flake /etc/nixos#NixOSVPN/proxy tools such as Amnezia are only a network workaround before running
MySetup; they are not required in the bootstrap configuration.nix.
Or with a local clone (useful when iterating on the config):
git clone https://github.com/TakuyaYagam1/MySetup.git
cd MySetup
nix run "path:$PWD"The direct NixOS installer app is equivalent and exposes the CLI subcommands explicitly:
# Apply the default thin /etc/nixos layout.
nix run --refresh 'github:TakuyaYagam1/MySetup?dir=Linux/NixOS#mysetup' -- apply
# Validate the staged system build without writing /etc/nixos or switching.
nix run --refresh 'github:TakuyaYagam1/MySetup?dir=Linux/NixOS#mysetup' -- apply --no-switch
# Keep the legacy full mirror layout while migrating or debugging.
nix run --refresh 'github:TakuyaYagam1/MySetup?dir=Linux/NixOS#mysetup' -- apply --layout full
# Inspect or repair an installed host.
nix run --refresh 'github:TakuyaYagam1/MySetup?dir=Linux/NixOS#mysetup' -- doctorAfter install, normal updates happen from /etc/nixos:
nixos-updateThat command runs nix flake update in /etc/nixos and then switches the
system, so the mysetup input receives CI-tested package/service changes
without copying the full repository into /etc/nixos.
Useful post-apply checks:
systemctl cat omnirouter.service | rg 'ExecStartPre|omnirouter-ensure-server-env'
sudo systemctl status omnirouter.serviceThe repository root flake also exposes reusable shell modules and the full host
constructor for external NixOS flakes. Pin a release tag for immutable installs,
or use a moving branch such as stable for latest-release updates via
nix flake update:
inputs.mysetup = {
url = "github:TakuyaYagam1/MySetup/stable";
inputs.nixpkgs.follows = "nixpkgs";
};Then import the shell module in your NixOS host:
modules = [
inputs.mysetup.nixosModules.shells
{
system.stateVersion = "26.05";
mysetup.user = {
username = "alice";
fullName = "Alice";
homeDirectory = "/home/alice";
};
}
];For a full MySetup host wrapper, use mysetup.lib.mkMySetupHost from the
Linux/NixOS flake or the root re-export. The installer generates this shape
automatically in /etc/nixos/flake.nix; it is the supported public API for the
complete workstation stack.
The installer will ask you about:
- Username and password
- Package preset (personal / developer / desktop / minimal)
- Display and keyboard layout
- Secure Boot (Lanzaboote)
- GPU type (AMD / Intel / NVIDIA)
- Locale and timezone
- Zapret DPI bypass config
- CTF tools
- User dotfiles (Hypr, Zen Browser theme, Neovim, wallpapers)
Shell profile is no longer an install-time question. After the system is
applied, switch between caelestia-shell, noctalia-shell, and end-4
(Illogical Impulse) at runtime via Super+Shift+W - see
Linux/README.md for details.
Read Windows/README.md first - you must update paths in
yasb/config.yamlbefore running the installer.
- Open PowerShell as Administrator
- Run:
git clone https://github.com/TakuyaYagam1/MySetup.git
cd MySetup\Windows
.\install.ps1A huge thanks to the upstream projects that make the Linux side of this setup possible. The Hyprland shells, rices, and themes here are built directly on top of their work - these dots would not exist without them:
- meowrch/meowrch - original rice that inspired the SDDM theme, Plymouth/GRUB visuals, and the overall Hyprland aesthetic baked into this config.
- noctalia-dev/noctalia-shell - QuickShell-based desktop shell shipped as one of the runtime profiles.
- end-4/dots-hyprland - the
Illogical Impulse Hyprland/QuickShell dotfiles wired in as the
end4runtime profile. - caelestia-dots/shell - Caelestia QuickShell, used as the default runtime profile and as the base for the Caelestia Hypr/dots layer.
- PortSwigger/mcp-server - official Burp Suite MCP extension. MySetup does not package it; install it from upstream when you need Burp MCP access.
- LaurieWired/GhidraMCP - Ghidra MCP bridge. MySetup does not package it; install it from upstream when you need Ghidra MCP access.
Additional thanks to @outfoxxed for QuickShell, which all three shell profiles depend on, and to the wider Hyprland community for the help, suggestions, and reference configs that shaped this setup.
GPL-3.0






