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.
- Overview
- Prerequisites
- Installation
- Structure
- Customization
- Secrets and Sensitive Data
- Acknowledgements
- License
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
To set up Nixie on your system, follow these steps:
-
Clone the repository:
git clone https://github.com/atkrad/nixie.git ~/.nixie
-
Apply the NixOS configuration:
sudo nixos-rebuild switch --flake ~/.nixie#nixie-ci
-
Apply the Home Manager configuration (replace
mohammad@nixie-ci
with your username and hostname if different):home-manager switch --flake ~/.nixie#mohammad@nixie-ci
-
Restart your system to ensure all changes take effect:
systemctl reboot -i
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 preferences.modules/
: Modular configurations for specific services or applications (e.g., Docker, Kubernetes).overlays/
: Custom Nix package definitions or overrides.pkgs/
: Custom Nix packages defined similarly tonixpkgs
.
This modular structure ensures a clean and maintainable configuration that can be easily extended or reused.
To customize the configuration, modify the relevant files within the repository. Be sure to test your changes before committing them to ensure they work as expected.
-
Edit the Home Manager configuration to include the desired package:
home.packages = with pkgs; [ vim firefox # Add your package here ];
-
Apply the changes:
home-manager switch --flake ~/.nixie#mohammad@nixie-ci
-
(Optional) Preview changes before applying them:
nixos-rebuild dry-run --flake ~/.nixie#nixie-ci
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.
Feel free to use, adapt, and share this configuration as needed, but please give credit where it's due.
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.