Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/usmcamp0811/dotfiles
A mirror of my NixOS Dotfiles repo which is more than just my system configs but also my mono repo of almost all the things I hack on.
https://github.com/usmcamp0811/dotfiles
cicd devops devsecops nix nixos terraform
Last synced: 12 days ago
JSON representation
A mirror of my NixOS Dotfiles repo which is more than just my system configs but also my mono repo of almost all the things I hack on.
- Host: GitHub
- URL: https://github.com/usmcamp0811/dotfiles
- Owner: usmcamp0811
- License: mit
- Created: 2025-01-12T21:48:44.000Z (21 days ago)
- Default Branch: nixos
- Last Pushed: 2025-01-20T20:00:41.000Z (13 days ago)
- Last Synced: 2025-01-20T21:18:49.779Z (13 days ago)
- Topics: cicd, devops, devsecops, nix, nixos, terraform
- Language: Nix
- Homepage: https://blog.aicampground.com
- Size: 131 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Welcome to AI Campground, your gateway to my personalized Nix ecosystem. This repository serves as a comprehensive collection of both my NixOS and generic Nix configurations, as I transition from traditional dotfiles. The migration is a work in progress, but the goal is a cohesive, well-documented Nix setup. Throughout this evolution, I'm committed to providing detailed READMEs to share my journey, insights, and solutions to challenges encountered.
## Getting Started
Before diving in, ensure that you have Nix installed on your system. If not, you can download and install it from the official [Nix website](https://nixos.org/download.html).
### Clone this repository to your local machine:
```bash
git clone https://gitlab.com/usmcamp0811/dotfiles.git
```#### Create a LIVE USB
```bash
nix build gitlab:usmcamp0811/dotfiles#isoConfigurations.base-iso
dd if=./result/iso/nixos.iso of=/dev/usb_drive status=progress
```#### [New System Install](./docs/Install.md)
## Features
Here's an overview of what my Nix configuration offers:
- **[Campground Nvim](https://gitlab.com/usmcamp0811/campground-nvim)**: I configured my Neovim config using [NixVim](https://github.com/nix-community/nixvim) and export it as a package.
- **Home Manager**: Manage your dotfiles, home environment, and user-specific configurations with Home Manager.
- **Hashicorp Vault**: Leveraging insights from [Jake Hamilton's dotfiles](https://github.com/jakehamilton/config), I've seamlessly integrated Vault Agent into my Nix configuration. This provides an exemplary secret management experience, eliminating the need to store sensitive information in git repositories or other insecure locations.
- **Automated Deploy**: Ability to automatically deploy all systems through Gitlab CICD or with `deploy --host .#`.
- **Git Pre-Commit Hooks**: Seamless integration of git hooks with Nix. To enable the hooks just activate the default shell. `nix develop`
- **System Observability & Monitoring**: Integrate Prometheus, Grafana, and Loki to achieve comprehensive monitoring of all systems, including Systemd services.
- **Terraform Modules**: Various modules for deploying infrastructure in the cloud with Terraform.
## Customization
Leveraging the SnowfallOrg lib architecture, my Nix setup offers a streamlined and well-organized way to handle your Nix ecosystem. Here’s the breakdown:
- **Custom Library**: Located in the `lib/` folder, an optional custom library features a Nix function that utilizes `inputs`, `snowfall-inputs`, and `lib` to return an attribute set that merges with `lib`.
- **Hierarchical Directory Setup**: The `lib/` and `packages/` directories support a flexible, nestable folder structure. Each folder houses a Nix function designed to return an attribute set that blends seamlessly into `lib`, facilitating a modular configuration.
- **Package Layering**: Within the `packages/` folder, you have the option to define a collection of exportable packages. These packages are initialized using `callPackage` and should contain functions that accept an attribute set of packages and the essential `lib` to yield a derivation.
- **Configuration Modules**: The `modules/` folder allows you to set up NixOS modules tailored for different platforms like `nixos`, `darwin`, and `home`, making system configuration management more modular.
- **Personalized Overlays**: Use the `overlays/` directory for any custom overlays you may have. Each overlay function should accept three arguments: an attribute set based on your flake's inputs and a `channels` attribute that lists all accessible channels, the finalized `pkgs`, and their predecessors. This feature enhances package set customization.
- **System-Centric Configurations**: The `systems/` folder helps you organize your system setups by architecture and format, enabling configurations for multiple platforms like `x86_64-linux` or `aarch64-darwin`.
- **Home Environment Configs**: Similarly, the `homes/` folder arranges configurations by architecture, which is particularly handy for managing home environments via Nix.
This methodology fosters a user-friendly approach to Nix configuration, balancing both flexibility and modularity for better manageability.
## Credits
Inspiration and code snippets have been sourced from various corners of the internet. I'll endeavor to document these contributions whenever memory and circumstances permit.