Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iliyankostov9/nixos-config
❄️ NixOS configuration for personal use.
https://github.com/iliyankostov9/nixos-config
linux nix nix-flake nixos nixos-dotfiles nixpkgs
Last synced: 4 months ago
JSON representation
❄️ NixOS configuration for personal use.
- Host: GitHub
- URL: https://github.com/iliyankostov9/nixos-config
- Owner: IliyanKostov9
- License: gpl-3.0
- Created: 2024-06-10T16:07:27.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2024-09-28T08:12:24.000Z (5 months ago)
- Last Synced: 2024-09-28T09:03:54.758Z (5 months ago)
- Topics: linux, nix, nix-flake, nixos, nixos-dotfiles, nixpkgs
- Language: Nix
- Homepage: https://iliyankostov9.github.io/nixos-config/
- Size: 5.97 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# ❄️ NixOS configuration ❄️
[![built with garnix](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgarnix.io%2Fapi%2Fbadges%2FIliyanKostov9%2Fnixos-config%3Fbranch%3Dmaster)](https://garnix.io/repo/IliyanKostov9/nixos-config)
[![License](https://img.shields.io/github/license/iliyan-kostov9/nixos-config)](https://www.gnu.org/licenses/gpl-3.0.en.html)
[![Build Status: Flake](https://img.shields.io/github/actions/workflow/status/iliyan-kostov9/nixos-config/flake-checker.yml?branch=master)](https://github.com/iliyan-kostov9/nixos-config/actions?query=branch%3Amaster)
[![GitGuardian scan](https://github.com/iliyan-kostov9/nixos-config/actions/workflows/gitguardian.yaml/badge.svg?branch=master)](https://github.com/iliyan-kostov9/nixos-config/actions/workflows/gitguardian.yaml)
[![Written in Nix](https://img.shields.io/badge/code-nix-blue)](https://nixos.org/)[![NixOS Unstable](https://img.shields.io/badge/NixOS-24.05-blue.svg?style=flat-square&logo=NixOS&logoColor=white)](https://nixos.org)
[![GitHub release](https://img.shields.io/github/v/release/iliyan-kostov9/nixos-config)](#)
[![GitHub release date](https://img.shields.io/github/release-date/iliyan-kostov9/nixos-config)](#)
[![GitHub last commit](https://img.shields.io/github/last-commit/iliyan-kostov9/nixos-config)](#)
[![Free](https://img.shields.io/badge/free_for_non_commercial_use-brightgreen)](#-license):star: Star us on GitHub — it motivates us a lot!
## 🚀 About
> My personal NixOS configuration file.
>It contains hardware/software configurations for setting up my personal/work machines.
> [!IMPORTANT]
> As of this moment, I haven't yet reached the point of deploying VMs using Nix, meaning that this configuration **IS INTENDED TO BE USED FOR PERSONAL USE ONLY**.Please don't try to copy-paste the configuration on your own machine and try to understand it first for the following reasons:
1. It simply won't work, due to the difference in hardware configuration between my machines and yours (for example gpu drivers, device IDs)
2. You won't learn much doing that, and later when you want to change something in your config it'll be harder for you to achieve that
3. This config structure is made by my personal taste, not yours ... and if some certain functionalities are either missing or badly implemented - then you would need to fork my repo and make your desired change in your version. Nevertheless, I'm more than open to suggestions for improvements, so please feel free to open an issue!## 🏝️ Environment
![]()
Structure details
| Type | Program |
| :------------- | :----------: |
| Editor | [NeoVim](https://neovim.io/) |
| Launcher | [Rofi](https://github.com/davatorium/rofi) |
| Shell | [Zsh](https://ohmyz.sh/) |
| Status Bar | [i3status-rust](https://github.com/greshake/i3status-rust) |
| Terminal | [Alacritty](https://alacritty.org/) |
| Window Manager | [I3WM](https://i3wm.org/) |
| File Manager | [Nautilus](https://gitlab.gnome.org/GNOME/nautilus) |
| GTK Theme | [Kanagawa](https://github.com/Fausto-Korpsvart/Kanagawa-GKT-Theme) |
| GTK Icon Theme | [Rose-pine](https://github.com/rose-pine/gtk) |
| Terminal Font | [OxProto Nerd Font](https://www.nerdfonts.com/font-downloads) |## 🧪 Used Nix features
1. home-manager
2. flakes## 🏗️ Structure
```markdown
.
├── archive
├── assets
├── config.nix
├── flake.lock
├── flake.nix
├── flakes
├── home
├── hosts
├── LICENSE
├── Makefile
├── programs
├── README.md
├── TODO.md
└── wallpaper.jpg
```- **archive**: not used in building the system. It stores the initial configuration of NixOS when first installed. (you can ignore this part)
- **assets**: used for storing media files, related to markdown documentation
- **config.nix**: An attribute set, containing all of the user and host specific configuration, that is consumed by the home and hosts module
- **flake.lock**: auto generated file, when building the system along with an argument of `--flake`. Used for pinning down the specific versions of the Nix dependencies, that are listed under *flake.nix*
- **flake.nix**: file for declaring all of the Nix specific dependencies/features (flake-parts, home-manager, nixpkgs, etc.). It is also the entry point for importing the user/system flakes
- **flakes**: used for storing all of the modularized flakes, that is consumed by flake-parts
- **home**: used for storing all the user environments (Joe's PC, Jane's PC, etc.)
- **hosts**: used for storing the hardware specifications of the hosts machines
- **Makefile**: automation script for aliasing Nix CLI commands in a more user-friendly way
- **programs**: contains the user/system type of packages
- **wallpaper.jpg**: background photo for i3wm## 🧑💻 Commands
> [!WARNING]
> Before starting to execute `make` commands, make sure to change the value of `DEFAULT_USER` to your preffered username, located in `Makefile`.|Command|Description|
|:-|:-|
|make help|Show available commands with their description|
|make home-update|Build your home configuration|
|make sys-update-wl|Build your system configuration for work laptop (Thinkpad p53)|
|make sys-update-pd|Build your system configuration for personal desktop (AMD)|
|make flake-upgrade|Upgrade flake dependencies
|make flake-check|Validate flake.nix|
|make flake-meta|Output the flake input dependencies in a tree format|
|make clean|Remove user generations|
|make clean-su|Remove system generations|
|make show-gen|Show all user generations|
|make deduplicate|Optimize system libraries|### 🌱 Setup
> [!CAUTION]
> The hardware specific configuration is most likely not going to properly work on your system, so please make sure after you install my configuration and immediately change the bootloader and file system values (located at `config.nix`) with your appropriate values!Show instructions
Install for work laptop (Thinkpad p53) or desktop PC (AMD).1. Work laptop
nixos-rebuild switch --flake github:iliyan-kostov9/nixos-config#hosts-work-laptop
2. Desktop PC
nixos-rebuild switch --flake github:iliyan-kostov9/nixos-config#hosts-personal-desktop
Afterwards enter `config.nix` and change the values of the file system and bootloader to the ones you currently have.
You can also change the default username to your preferred one.## 🤝 Acknowledgments
This configuration structure was inspired by contributions from the Nix community:
- [wimpysworld](https://github.com/wimpysworld/nix-config)
- [ryan4yin](https://github.com/ryan4yin/nix-config)
- [simple-homemanager](https://github.com/evertras/simple-homemanager)
- [chayward1] (https://github.com/chayward1/dotfiles)
- [notusknot] (https://github.com/notusknot/dotfiles-nix/tree/main)### 🔍️ References
This section helped me better understand Nix package manager and Nix language.
Please have a read on them!#### 📚 Docs
- [ Nixpills ]( https://nixos.org/guides/nix-pills )
- [ Nix and flakes ]( https://nixos-and-flakes.thiscute.world )
- [ Home manager manual ]( https://nix-community.github.io/home-manager/index.xhtml )
- [ Intro to Nix and NixOS ]( https://nixos-and-flakes.thiscute.world/introduction )#### 📄 Package and template links
- [ Nixpkgs ](https://search.nixos.org/packages)
- [ MyNixOS ](https://mynixos.com/nixpkgs )
- [ NixOS cache ]( https://cache.nixos.org )
- [ Flake parts ]( https://community.flake.parts )#### :art: Assets
- [NixOS artwork](https://github.com/NixOS/nixos-artwork)### 📃 License
This product is licensed under [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html)