Complete, modular NixOS setup covering shell, GUI, development tools, window manager, audio, fonts, theming and more.
-
π Modular configuration : Each component (shell, editor, WM, audio and more) lives in its own reusable Nix module.
-
π Secure configs : automatically creates and locks down
~/.config/*
with correct ownership and permissions. -
π Shells : zsh, with autosuggestions and syntax-highlighting, and bash set up out-of-the-box.
-
π Git tooling : Git, GitHub CLI & LazyGit with your
.gitconfig
deployed and ready. -
π¨ Theming : Catppuccin mocha green applied to GTK2/3/4, Alacritty, i3, Polybar & cursors.
-
π₯οΈ Window manager : i3wm + Polybar + LightDM GTK greeter with custom wallpaper.
-
π€ Fonts & emoji : JetBrainsMono Nerd Font + Noto Emoji for complete glyph coverage.
-
π¬ Multimedia : PipeWire audio stack, pavucontrol, CAVA visualizer & screenkey.
-
π Monitoring : htop, btop, Fastfetch & Neofetch with tuned defaults.
-
π» Dev stack : Node.js, TypeScript, Go, Rust, Python, Ruby, Docker & essential CLI tools.
-
π Project workspace : automatically creates
~/projects
directory. -
π Flatpak support : Flathub enabled and OBS Studio auto-installed.
-
π Localization : Europe/Paris timezone with en_US default and French regional formats.
Requires NixOS 24.11 or newer.
the target user must be defined in config.username
.
You need to update variables.nix
to your user username, the default is "typovrak"
.
Change it to your own login or a typovrak
user will be created.
Before proceeding, back up existing configuration if needed
sudo cp /etc/nixos/configuration.nix{,.bak}
cp ~/nixos{,.bak}
cp ~/.config{,.bak}
cp ~/.local/share/applications/*.desktop{,.bak}
And other configurations if needed.
git clone https://github.com/typovrak/nixos.git ~/nixos
# ~/nixos/nixos/variables.nix
{ lib, ... }:
{
options.username = lib.mkOption {
type = lib.types.str;
default = "<YOUR_USER_USERNAME>";
};
}
sudo ln -sf ~/nixos/nixos/configuration.nix /etc/nixos/configuration.nix
sudo ln -sf ~/nixos/nixos/variables.nix /etc/nixos/variables.nix
sudo nixos-rebuild switch
-
Enable or disable modules by adding/removing their
(import "${<MODULE_NAME>}/configuration.nix")
line in configuration.nix. -
Updates modules by changing the
rev = "<HASH> from git log -1"
for each fetchGit entry. -
Adjust
systemPackages
or service options directly in the top-level configuration. -
Do whatever you want !
If this module saved you time, please βοΈ the repo and share feedback.
You can also support me on β Buy me a coffee.
Distributed under the MIT license.
This project maintains a code of conduct to ensure a respectful, inclusive and constructive community.
To report vulnerabilities or learn about supported versions and response timelines, please see our security policy.
Made with π by typovrak