{"id":31195607,"url":"https://github.com/aleks-sidorenko/nix-config","last_synced_at":"2026-05-03T20:35:23.971Z","repository":{"id":309967744,"uuid":"918315560","full_name":"aleks-sidorenko/nix-config","owner":"aleks-sidorenko","description":"My Nixos configuration","archived":false,"fork":false,"pushed_at":"2026-04-29T20:27:45.000Z","size":32549,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-29T22:15:43.036Z","etag":null,"topics":["darwin","disko","flake","gaming","gpg","impermanence","infrastructure-as-code","linux","macos","media-server","mikrotik","nix","nixos","pass","raspberry-pi","raspberry-pi-4","snowfall","snowfall-lib","terraform","terranix"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aleks-sidorenko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-17T17:17:53.000Z","updated_at":"2026-04-29T20:27:49.000Z","dependencies_parsed_at":"2025-10-14T14:10:17.400Z","dependency_job_id":null,"html_url":"https://github.com/aleks-sidorenko/nix-config","commit_stats":null,"previous_names":["aleks-sidorenko/nix-config"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aleks-sidorenko/nix-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleks-sidorenko%2Fnix-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleks-sidorenko%2Fnix-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleks-sidorenko%2Fnix-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleks-sidorenko%2Fnix-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aleks-sidorenko","download_url":"https://codeload.github.com/aleks-sidorenko/nix-config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleks-sidorenko%2Fnix-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32584228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["darwin","disko","flake","gaming","gpg","impermanence","infrastructure-as-code","linux","macos","media-server","mikrotik","nix","nixos","pass","raspberry-pi","raspberry-pi-4","snowfall","snowfall-lib","terraform","terranix"],"created_at":"2025-09-20T03:43:48.000Z","updated_at":"2026-05-03T20:35:23.965Z","avatar_url":"https://github.com/aleks-sidorenko.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/aleks-sidorenko/nix-config/actions/workflows/ci.yml/badge.svg)](https://github.com/aleks-sidorenko/nix-config/actions/workflows/ci.yml)\n[![Update Dependencies](https://github.com/aleks-sidorenko/nix-config/actions/workflows/update.yml/badge.svg)](https://github.com/aleks-sidorenko/nix-config/actions/workflows/update.yml)\n[![Deploy Check](https://github.com/aleks-sidorenko/nix-config/actions/workflows/deploy-check.yml/badge.svg)](https://github.com/aleks-sidorenko/nix-config/actions/workflows/deploy-check.yml)\n\n## About\n\nPersonal NixOS, nix-darwin, and home-manager configuration built on [snowfall-lib](https://github.com/snowfallorg/lib). Manages multiple systems across three architectures with declarative, role-based configuration, encrypted secrets, and opt-in persistence.\n\n## Features\n\n**Structure \u0026 Tooling**\n- Modular organization with **snowfall-lib** and role-based composition\n- Custom **Neovim** setup via **nixvim** (AI assistants, multi-language support)\n- Multiple terminals (ghostty, kitty, alacritty, foot) and shells (fish, zsh)\n\n**System Management**\n- Declarative disk layout with **disko** (BTRFS + LUKS encryption)\n- **Opt-in persistence** through **impermanence** + blank snapshot\n- **SOPS-nix** secrets management with per-host age keys\n- Remote deployment via **deploy-rs**, fresh installs via **nixos-anywhere**\n\n**Desktop**\n- **Hyprland** (hypridle, hyprlock, hyprpaper, pyprland) and **GNOME** desktop environments\n- **Stylix** system-wide theming with **Catppuccin** color scheme\n- Waybar, swaync, rofi, wlogout, kanshi\n\n**Homelab**\n- **Home Assistant** with 9 sub-modules (climate, heatpump, inverter, zigbee2mqtt, telegram, weather, plugs, night-schedule, zones)\n- Media stack: **Jellyfin**, Sonarr, Radarr, Prowlarr, qBittorrent, MiniDLNA\n- **k3s** (Kubernetes), **Podman**, **Tailscale** VPN, nginx, Minecraft server\n- **Restic** backup with client-server architecture\n\n**macOS**\n- **nix-darwin** with Homebrew integration\n- Colima/Lima/Rancher virtualization\n\n**Infrastructure**\n- **MikroTik RouterOS** managed via **terranix**/OpenTofu\n- **CI/CD**: GitHub Actions (flake check, system builds, deploy check, security scan, weekly auto-update)\n- Custom live ISO for NixOS installation\n\n## Configurations\n\n| Hostname | Architecture | Hardware | Role | OS | State |\n|:--------:|:----------:|:---------|:----:|:--:|:-----:|\n| `desktop` | x86_64-linux | Intel i7-2600K, GTX 560 Ti, 32GB | Desktop | NixOS | Active |\n| `server` | aarch64-linux | Raspberry Pi 4 Model B, 8GB | Home Server | NixOS | Active |\n| `vm` | x86_64-linux | Vagrant VM | Desktop (test) | NixOS | Active |\n| `workbook` | aarch64-darwin | Apple Silicon MacBook | Work | macOS | Active |\n| `minimal` | x86_64-install-iso | Any | Installer | NixOS ISO | - |\n\n## Architecture\n\n```\n.\n├── systems/          # System configs: desktop, server, vm, workbook, minimal\n├── homes/            # Home-manager configs: alexander@desktop, alexander@vm, oleksandrsy@workbook\n├── modules/\n│   ├── nixos/        # NixOS modules (roles, services, desktops, hardware, disks, cli, security)\n│   ├── home/         # Home-manager modules (roles, desktops, cli, development, browsers, media)\n│   └── darwin/       # nix-darwin modules (roles, system, services, cli)\n├── packages/         # Custom packages: nvim (nixvim), install ISO, wallpapers\n├── overlays/         # Nixpkgs overlays\n├── lib/              # Library: module helpers, context detection, deploy config, network utils\n├── infra/            # Infrastructure-as-code: MikroTik router (terranix/OpenTofu)\n└── scripts/          # Bootstrap and utility scripts\n```\n\nAll modules use the `nix-config` namespace (`config.nix-config.*`). Roles compose related modules: e.g., `home-server` enables server + media-server + smart-home + gaming-server + backup.\n\nSee [docs/architecture.md](docs/architecture.md) for the full role hierarchy, library functions, and flake inputs.\n\n## Usage\n\n### Getting Started\n\n```bash\ngit clone git@github.com:aleks-sidorenko/nix-config.git ~/.nix-config\ncd ~/.nix-config\n```\n\nPrerequisites: Nix installed, git. For secrets management: `pass` configured, PGP key available.\n\n### Local Deploy\n\n```bash\n# NixOS system configuration (uses hostname to find flake)\nnh os switch\n\n# Home-manager user configuration (uses hostname + username)\nnh home switch\n\n# Alternative without nh\nsudo nixos-rebuild switch --flake .\n```\n\n### Remote Deploy\n\n```bash\njust deploy \u003chostname\u003e                     # Deploy (remote build by default)\njust deploy \u003chostname\u003e --dry-run           # Preview changes\njust deploy router                         # Deploy MikroTik router config\n```\n\n### Build Installer ISO\n\n```bash\nnix build .#install-isoConfigurations.minimal   # Build minimal NixOS installer ISO\n```\n\nFor fresh installations on new hardware, see [docs/bootstrap.md](docs/bootstrap.md).\n\n### Secrets\n\nSecrets are encrypted with [SOPS](https://github.com/getsops/sops) using age keys derived from each host's SSH key.\n\n```bash\njust secrets-list                          # List all secrets\njust secrets-edit nixos                    # Edit NixOS secrets\njust secrets-edit home                     # Edit home-manager secrets\n```\n\nSecrets files:\n- `modules/nixos/secrets.yaml` - system secrets (user passwords, API keys, WiFi)\n- `modules/home/secrets.yaml` - user secrets\n- `infra/router/secrets.yaml` - router secrets\n\nTo add a new host's key, see [docs/bootstrap.md](docs/bootstrap.md#adding-a-new-host-to-sops).\n\n### Maintenance\n\n```bash\njust update                                # Update flake inputs\njust cleanup                               # Garbage collect old generations\njust lint                                  # statix + deadnix (read-only)\njust lint-fix                              # Auto-fix linting issues\njust flake-check                           # nix flake check\njust info                                  # Show system info\njust disk-usage                            # Show nix store usage\n```\n\n## Development\n\n```bash\n# Typical workflow\njust format                                # Format nix files\njust check                                 # Verify code quality (CI-friendly)\njust build                                 # Test build without switching\njust deploy \u003chostname\u003e                     # Deploy\n```\n\nCI runs on push/PR to master: flake check, formatting, security scan (Trivy). Full system and home-manager builds run on master branch only. Flake inputs are auto-updated weekly.\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [docs/architecture.md](docs/architecture.md) | Repository structure, role hierarchy, library functions, flake inputs |\n| [docs/bootstrap.md](docs/bootstrap.md) | Fresh installation, bootstrap process, disk formatting, RPi4 setup |\n| [docs/homelab.md](docs/homelab.md) | Homelab services overview, network layout |\n| [docs/router.md](docs/router.md) | MikroTik router management with terranix/OpenTofu |\n| [docs/references.md](docs/references.md) | Inspirations, NixOS resources, credits |\n\n## Credits\n\nSee [docs/references.md](docs/references.md) for inspirations, resources, and wallpaper credits.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faleks-sidorenko%2Fnix-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faleks-sidorenko%2Fnix-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faleks-sidorenko%2Fnix-config/lists"}