This repository contains the NixOS configuration and dotfiles for my machines, collectively named Nixie. It includes settings for various tools and applications, such as system services, window managers, terminal emulators, and text editors. By sharing these configurations, others can learn from my setup and adapt it to their own needs.
The purpose of this repository is to provide a well-organized, version-controlled, and easily maintainable configuration for NixOS. It aims to simplify managing a personal computing environment and ensure consistency across multiple devices. The name Nixie reflects the project's modular and elegant approach to NixOS customization.
Before using this configuration, ensure you have the following:
- A NixOS-based system
- Git installed
- Install Nix (with flakes enabled):
sh <(curl -L https://nixos.org/nix/install) # Enable flakes in /etc/nix/nix.conf: # experimental-features = nix-command flakes
- Clone this repository:
git clone https://github.com/yourusername/nixie.git cd nixie
- Install Home Manager (if not on NixOS):
nix run .#homeConfigurations.nixie-ci.activationPackage # or for a different profile: nix run .#homeConfigurations.nixie-lab.activationPackage
- For NixOS system config:
sudo nixos-rebuild switch --flake .#nixie-ci
- Update flake inputs:
nix flake update git add flake.lock git commit -m "Update flake inputs"
- Apply updates:
home-manager switch --flake .#nixie-ci # or for system: sudo nixos-rebuild switch --flake .#nixie-ci
- Roll back:
- For Home Manager:
home-manager generations
- For NixOS:
sudo nixos-rebuild --rollback
- For Home Manager:
The repository is organized as follows:
nixos/
: Contains system-wide configurations, including the mainconfiguration.nix
home-manager/
: Configurations for user-specific settings, such as shell aliases and editor preferencesmodules/
: Modular configurations for specific services or applications (e.g., Docker, Kubernetes)overlays/
: Custom Nix package definitions or overridespkgs/
: Custom Nix packages defined similarly tonixpkgs
- Home Manager module:
- Create a new file in
home-manager/modules/yourmodule/default.nix
- Import it in
home-manager/nixie-ci.nix
ornixie-lab.nix
underimports
- Create a new file in
- NixOS module:
- Create a new file in
nixos/yourmodule/default.nix
- Import it in
nixos/configuration.nix
underimports
- Create a new file in
- Add to
home.packages
(user) orenvironment.systemPackages
(system) - Example:
home.packages = with pkgs; [ vim firefox # Add your package here ];
- Run
:checkhealth
in Neovim for diagnostics - Ensure LSP servers are installed (via Mason or Nix)
- Check
$PATH
for LSP binaries
- Test with
vainfo
andvdpauinfo
- For browser acceleration, check
chrome://gpu
orabout:support
- Ensure correct drivers in
hardware.graphics.extraPackages
- Use
pavucontrol
to manage audio devices - Restart Pipewire:
systemctl --user restart pipewire
- Run
nix doctor
for diagnostics - Check logs:
/var/log/messages
orjournalctl -xe
Avoid committing sensitive information (e.g., API keys, passwords). Instead, use tools like git-crypt or environment variables to manage secrets securely.
This repository is inspired by the work and ideas of numerous NixOS community members. Special thanks to the maintainers of NixOS, Home Manager, and related projects for their invaluable contributions.
For more details, see the NixOS Wiki and Home Manager Manual.
Copyright 2022-2025 Mohammad Abdolirad
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.