NixOS as a daily driver on a late 2011 Macbook Pro, part 3/? - user, WM, tools
Published June 5, 2025
3 min read
Recap
See Part 2 where I cover installation and basic configuration.
Outline
Things we will be covering in this post:
- adding a non-root user with sudo access
- installing a window manager - Hyprland
- installing some tools - neovim, git, waybar, wezterm
Install a Text Editor
First things first, let's install a better text editor to make our configuration updating easier.
You will have to use nano for this. Open /etc/nixos/configuration.nix
and add the following:
programs.neovim = {
enable = true;
defaultEditor = true;
};
Use ctrl+o then ctrl+x to write and exit nano.
Then run nixos-rebuild switch. NixOS will rebuild your config and return you
to a terminal. You should now be able to start neovim by running nvim.
Adding a User
Now that we can edit files easier, let's add a non-root user.
users.users.disco = {
isNormalUser = true;
extraGroups = [
"wheel" # Allows sudo access
"networkmanager" # Allows controlling network
"audio" # Audio device access
"video" # Video devices (e.g. backlight, GPU)
"input" # For input devices like keyboard/mouse config
];
};
Again, save and exit and then rebuild:
nixos-rebuild switch
After successfully rebuilding, you will need to set a password for the new user. For me that's:
passwd disco
Then you can exit and login as your new sudo accessible user.
Enable Network Tools
This will enable tools like nmtui to allow for easier network setup.
networking.networkmanager.enable = true;
Install a Window Manager and Daily Driver Tools
I am using Hyprland. Hyprland is a dynamic Wayland compositor that supports tiling, floating, and hybrid layouts.
Add the following to your /etc/nixos/configuration.nix. This enables Hyprland
along with XDG portals, which are required for features like file pickers,
screen sharing, and communication between sandboxed apps (especially Flatpaks
and browsers).
programs.hyprland.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
};
Before rebuilding this time though, we will also install some daily driver tools.
One reason for this is that Hyprland uses the kitty terminal by default.
Look for this line in your /etc/nixos/configuration.nix file:
environment.systemPackages = with pkgs; [
You will likely find this commented out with wget listed as a package.
Expand on that section so it becomes:
environment.systemPackages = with pkgs; [
kitty # needed by Hyprland by default
wget
hyprpaper # background utility for Hyprland
hyprlock # screen lock utility for Hyprland
librewolf # privacy focused browser based on firefox
wofi # needed by Hyprland by default
git
waybar # status bar for Hyprland
wezterm
];
Some tools like neovim and hyprland have official NixOS modules, which let you
enable them declaratively using enable = true;. Other tools (like git or
librewolf) don’t have modules and should be added directly to
environment.systemPackages.
Now it's time to rebuild. Again, this is done by:
sudo nixos-rebuild switch.
You can now manually start Hyprland by running:
exec Hyprland
You will be greeted with nothing but a random wallpaper supplied by Hyprland.
A couple important default keybinds are:
- SUPER + q - opens terminal
- SUPER + r - opens wofi app runner
Starting Hyprland on Login
Let's make Hyprland start on login. Create a ~/.bash_profile file if it
doesn't exist and add this:
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
exec Hyprland
fi
Summary
In this post, we have:
- added a non-root user and set their password
- installed a window manager,
Hyprland, and set it to start on login - installed multiple important daily driver tools like git and librewolf
Next Time
In Part 4, we'll continue to configure Hyprland: adding keybindings,
wallpapers, waybar, and maybe even a lockscreen.