- Nix 99.6%
- Twig 0.4%
|
Some checks failed
/ check (push) Failing after 8s
Disable default Ctrl+h/j/k/l mappings and add custom Alt+h/j/k/l keybindings for pane navigation. |
||
|---|---|---|
| .forgejo/workflows | ||
| modules | ||
| secrets | ||
| .gitignore | ||
| AGENTS.md | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
| secrets.nix | ||
infra
Originally my dotfiles repository, this repository contains my NixOS and Home Manager-based configurations for my personal laptops and home servers.
Hosts
| Hostname | Description | Manufacturer | Model | Role | Desktop/window manager | Notes |
|---|---|---|---|---|---|---|
home01 |
My homelab/home server | Lenovo | ThinkCentre M710q | Server | None | Private services - e.g. Jellyfin, Immich, etc |
home02 |
My homelab/home server | Lenovo | ThinkCentre M710q | Server | None | Public services - i.e. public websites, Forgejo |
t480 |
My personal laptop | Lenovo | ThinkPad T480 | Laptop | i3 | |
t490 |
My son's laptop | Lenovo | ThinkPad T490 | Laptop | Cinnamon |
The Dendritic Pattern
This repository follows the dendritic pattern.
Nixvim (Neovim) Configuration
A modular Nixvim configuration under modules/opdavies/editor/ and related directories.
Plugins
| Category | Plugins |
|---|---|
| Editing | mini.ai, mini.bracketed, mini.move, mini.operators, mini.splitjoin, mini.surround |
| Text objects | vim-textobj-entire, vim-textobj-indent, vim-textobj-line, vim-textobj-user, vim-textobj-xmlattr |
| Completion | nvim-cmp (LSP, buffer, path sources) |
| Fuzzy finding | telescope.nvim with web-devicons |
| Syntax | treesitter (highlight, indent, folding) |
| LSP | Built-in client, lsp-format (auto-format on save) |
| Formatting | none-ls (phpcbf, php-cs-fixer, prettier, nix-flake-fmt), lsp-format |
| Git | gitsigns.nvim, vim-fugitive |
| Testing | vim-test |
| Databases | vim-dadbod (core, completion, UI) |
| Other | rest.nvim (HTTP client) |
Language Support
- CSS —
cssls,css_variables,tailwindcssLSP - JSON —
jsonlsLSP - Nix —
nixdLSP,nix-flake-fmt - Nushell —
nushellLSP - PHP — Phpactor LSP, PHPCS/PhpStan diagnostics, PHPCBF/PHP-CS-Fixer formatting
- TypeScript/JavaScript —
ts_lsLSP, ESLint, Prettier formatting
Keymaps
| Mode | Prefix | Purpose |
|---|---|---|
| Normal | <leader>g |
Git (fugitive status/commit, gitsigns hunks) |
| Normal | <leader>l |
LSP actions (definition, rename, code action, hover, etc.) |
| Normal | <leader>p |
Phpactor (context menu, new class) |
| Normal | <leader>r |
REST client, database queries |
| Normal | <leader>rt |
Test runner (file, nearest, last) |
| Normal | <leader>s |
Telescope pickers (files, grep, buffers, LSP, diagnostics, etc.) |
| Normal | <space>f / <leader>tf |
Format buffer / toggle auto-format |
Options
Spaces over tabs (2-char), relative line numbers, global statusline, ripgrep for grepping, smartcase search, no swapfile, hidden characters concealed, signcolumn always on, British English spelling.
Homelab
Two Lenovo ThinkCentre M710q servers running NixOS.
home01 — Media & Home Automation
Private services at *.opdavies.uk, exposed directly via Nginx (ports 80/443).
| Service | Purpose |
|---|---|
| Audiobookshelf | Audiobooks & podcasts |
| FreshRSS | RSS reader |
| Home Assistant | Smart home automation (Elgato, Hive, LG webOS, TP-Link, Wiz) |
| Immich | Photo management |
| Jellyfin | Media streaming |
| Paperless-ngx | Document management |
| Uptime Kuma | Uptime monitoring |
Encrypted LUKS volumes (/mnt/media + /mnt/media_backup) with nightly rsync backup.
home02 — Web & Git Hosting
Public services at *.oliverdavies.uk, exposed via Cloudflare Tunnel (no open inbound ports).
| Service | Purpose |
|---|---|
| Caddy | Reverse proxy for 15+ static websites |
| Forgejo | Self-hosted Git hosting with Gitea Actions runner |
| Nextcloud | Cloud storage & file sync |
| PeerTube | Video hosting |
| cloudflared | Cloudflare Tunnel daemon |
Static sites include oliverdavies.uk, ponthirtaekwondo.co.uk, and various demo/tutorial sites.
Generated files
The following files in this repository are generated and checked using the files flake-parts module:
.gitignoreREADME.md