Skip to content

luantorv/nixconf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NixConf

My personal NixOS configuration featuring the River window manager on Wayland using Home Manager.

Structure

.
├── assets/            # Wallpapers and screenshots
├── docs/              # Configuration documentation
│   ├── KEYBINDS.md
│   └── SECRETS.md
├── flake.nix          # Entry point, global variables
├── hosts/             # Per-machine configuration
│   ├── laptop/
│   │   ├── default.nix
│   │   ├── boot.nix
│   │   ├── hardware-configuration.nix
│   │   └── hardware.nix
│   └── server/
│       ├── default.nix
│       ├── boot.nix
│       ├── hardware-configuration.nix
│       └── harwdare.nix
├── modules/
│   ├── home/          # Home Manager modules
│   │   ├── desktop/
│   │   ├── editors/
│   │   ├── files/
│   │   ├── packages/
│   │   ├── shell/
│   │   ├── terminal/
│   │   └── theme/
│   └── nixos/         # NixOS modules
│       ├── boot/
│       └── core/
├── profiles/          # Module bundles per use case
│   ├── desktop.nix
│   └── minimal.nix
├── secrets/           # Secrets handled by SOPS
├── shells/            # Nix dev shells
└── README.md

Screenshoots

Fastfetch Waybar Wofi launcher Wofi power menu Vim Htop

System Information

Components
OS NixOS 25.11 (Xantusia)
WM River (wayland)
Terminal Foot
Shell Bash
Editor Vim - NeoVim - VSCodium
File Manager yazi - Thunar
Status Bar waybar
Launcher Wofi
Browser Brave

Installation

Prerequisites

All three scenarios assume you have booted into a NixOS live environment or an existing NixOS system. The configuration uses flakes, so nix with flakes support is required throughout.

If your current nix version does not have flakes enabled, add this flag to every nix command used below:

--extra-experimental-features 'nix-command flakes'

Or enable it permanently in your current session:

export NIX_CONFIG="experimental-features = nix-command flakes"

1. Fresh NixOS install (post-installer)

This assumes you have just finished partitioning and mounting your drives and have generated a hardware-configuration.nix via nixos-generate-config.

  • Clone the repository
git clone https://github.com/luantorv/nixconf.git /mnt/etc/nixos
cd /mnt/etc/nixos
  • Copy your hardware configuration
cp /etc/nixos/hardware-configuration.nix hosts/laptop/hardware-configuration.nix
  • Adjust global variables

Edit flake.nix and set your username and home directory:

globalVars = {
  username              = "youruser";
  homeDirectory         = "/home/youruser";
  system                = "x86_64-linux";
  wallpaperDir          = "/home/youruser/Images/Wallpapers"; # Absolute path
  wallpaperRelativePath = "Images/Wallpapers"; # Relavite to the home
};
  • Install
nixos-install --flake /mnt/etc/nixos#laptop
  • Reboot
reboot

After rebooting, the repository will be at /etc/nixos. Future rebuilds are done from there.

2. Applying to an existing NixOS system

This assumes NixOS is already running and you want to replace your current configuration with this one.

  • Clone the repository
git clone https://github.com/luantorv/nixconf.git ~/nixconf
cd ~/nixconf
  • Copy your hardware configuration
cp /etc/nixos/hardware-configuration.nix hosts/laptop/hardware-configuration.nix
  • Adjust global variables

Edit flake.nix and set your username and home directory:

globalVars = {
  username              = "youruser";
  homeDirectory         = "/home/youruser";
  system                = "x86_64-linux";
  wallpaperDir          = "/home/youruser/Images/Wallpapers"; # Absolute path
  wallpaperRelativePath = "Images/Wallpapers"; # Relavite to the home
};
  • Apply
sudo nixos-rebuild switch --flake .#laptop
  • (Optional) Move to /etc/nixos

If you want the configuration to live in the conventional location:

sudo mv ~/nixconf /etc/nixos

Future rebuilds:

cd /etc/nixos && sudo nixos-rebuild switch --flake .#laptop

3. Home Manager only (without managing the system)

This scenario applies if you are running NixOS (or another Linux distribution) and only want to manage your user environment, without this flake touching system-level configuration.

Note

This configuration uses Home Manager as a NixOS module. Running it standalone requires minor adjustments. See the note at the end of this section.

  • Install Home Manager (standalone)
nix run home-manager/master -- init --switch
  • Clone the repository
git clone https://github.com/luantorv/nixconf.git ~/nixconf
cd ~/nixconf
  • Adjust global variables

Edit flake.nix and set your username and home directory.

  • Apply
home-manager switch --flake .#youruser

This requires adding a homeConfigurations output to flake.nix that points directly to the desired profile's home modules, since the standalone mode does not go through nixosModules.home-manager. The system-level modules (modules/nixos/) will have no effect in this scenario.

Updating

  • Pull the latest changes and rebuild:
git pull
sudo nixos-rebuild switch --flake .#laptop

To update flake inputs (nixpkgs, home-manager, etc.) before rebuilding:

nix flake update
sudo nixos-rebuild switch --flake .#laptop

Dev Shells

Project-specific development environments are available under shells/. Enter one with:

nix develop ~/nixconf#default
nix develop ~/nixconf#python
nix develop ~/nixconf#node
nix develop ~/nixconf#rust
nix develop ~/nixconf#latex

Running nix develop without a target drops you into the default shell.

Keybinds

You can find a guide to the keybinds used in river here.

Credits

All wallpapers available in wallpapers were extracted from wallhaven.

The wallpapers in this repository are the property of their respective authors. I do not claim ownership of any artwork shared here.

If you recognize any of these works and know the original artist, or if you are the creator of an image and would like it to be specifically credited (or removed), please reach out directly via any of my contact methods

The image for swaylock-effects were extracted from nixos-artwork GitHub repository.

Disclaimer

This project is primarily designed for personal use. Feel free to adapt it, fork it, or break it.

Author: