| | 1 | = System Configuration Overview = |
| | 2 | |
| | 3 | This page documents the system configuration for the Neotek server, maintained using [https://guix.gnu.org Guix System]. The configuration integrates: |
| | 4 | • Trac for project management |
| | 5 | • Gitolite for secure Git access |
| | 6 | • Git HTTP access via nginx + fcgiwrap |
| | 7 | • Certbot-managed TLS |
| | 8 | • WireGuard VPN access |
| | 9 | • Minimal desktop environment |
| | 10 | • Declarative and snapshot-friendly Btrfs subvolume layout |
| | 11 | |
| | 12 | == Modules and Packages == |
| | 13 | |
| | 14 | The system imports essential Guix modules for services, users, packages, and expression construction. Additionally, it includes a private channel oai and SRFI-1 helpers. |
| | 15 | |
| | 16 | The following packages are installed: |
| | 17 | • Window manager: i3-wm, i3status, dmenu, st |
| | 18 | • Core tools: vim, git, htop, iotop, lsof |
| | 19 | • Server tools: certbot, nginx, trac |
| | 20 | • SSL and Git access: le-certs, fcgiwrap |
| | 21 | |
| | 22 | == File System Layout == |
| | 23 | |
| | 24 | A single Btrfs volume (NeotekRoot) is used, subdivided into subvolumes for: |
| | 25 | • / → @ |
| | 26 | • /home → @home |
| | 27 | • /gnu → @gnu |
| | 28 | • /var/log → @log |
| | 29 | |
| | 30 | All subvolumes are mounted with: |
| | 31 | |
| | 32 | {{{ |
| | 33 | compress=zstd,ssd,discard=async |
| | 34 | }}} |
| | 35 | |
| | 36 | This ensures compression, SSD optimization, and trim support. |
| | 37 | |
| | 38 | == Users and Permissions == |
| | 39 | |
| | 40 | User accounts are declaratively defined: |
| | 41 | • enno: Admin user, with access to wheel, ssl-cert, tracd, etc. |
| | 42 | • tracd: Trac daemon user (no login shell) |
| | 43 | • nginx: Nginx worker (read access to certs/repos) |
| | 44 | • git: Gitolite access user (home is /home/git) |
| | 45 | |
| | 46 | Groups: |
| | 47 | • ssl-cert: Shared access to Let’s Encrypt files |
| | 48 | • git: Gitolite and HTTP Git |
| | 49 | • tracd: Trac service access |
| | 50 | |
| | 51 | A custom activation service adjusts permissions for: |
| | 52 | • /etc/letsencrypt/live and /etc/letsencrypt/archive |
| | 53 | • /home/git |
| | 54 | |
| | 55 | == Services == |
| | 56 | |
| | 57 | === Core === |
| | 58 | • gnome-desktop-service-type: Minimal GUI |
| | 59 | • openssh-service-type: Remote access |
| | 60 | • qemu-guest-agent-service-type: VM support |
| | 61 | |
| | 62 | === Trac === |
| | 63 | |
| | 64 | A custom [wiki:Shepherd shepherd] service starts tracd: |
| | 65 | • Port: 8080 |
| | 66 | • Auth: .htpasswd with realm-based routing |
| | 67 | • User/group: tracd |
| | 68 | • PATH includes Git for ticket/repo integration |
| | 69 | |
| | 70 | === Gitolite === |
| | 71 | • Uses system user git |
| | 72 | • Admin pubkey bootstrap from gitolite-admin.pub |
| | 73 | • umask 0027 ensures private, group-readable repos |
| | 74 | |
| | 75 | === Certbot === |
| | 76 | • Auto-manages TLS for kokyou.dev |
| | 77 | • Renewed certs are made readable by ssl-cert group |
| | 78 | |
| | 79 | === nginx === |
| | 80 | |
| | 81 | Reverse proxy setup with: |
| | 82 | • SSL termination for kokyou.dev |
| | 83 | • Proxy to Trac (http://127.0.0.1:8080) |
| | 84 | • Git over HTTP using git-http-backend via fcgiwrap |
| | 85 | • Basic HTTP auth for repo endpoints |
| | 86 | |
| | 87 | Example Git locations: |
| | 88 | • /oaichannel.git |
| | 89 | • /public_guix_channel.git |
| | 90 | |
| | 91 | All secured via .htpasswd. |
| | 92 | |
| | 93 | === fcgiwrap === |
| | 94 | • Wraps git-http-backend to allow nginx to serve bare repos. |
| | 95 | • Runs as git:git |
| | 96 | |
| | 97 | === WireGuard VPN === |
| | 98 | • Interface: 10.0.0.1 |
| | 99 | • Peer: wintermute at 10.0.0.2 |
| | 100 | • Uses private key from /srv/wg/wg_armitage_prv.key |
| | 101 | |
| | 102 | === Xorg Configuration === |
| | 103 | |
| | 104 | Keyboard layout is set to us with altgr-intl variant. |
| | 105 | |
| | 106 | == Boot and Init == |
| | 107 | |
| | 108 | === Bootloader === |
| | 109 | • grub-efi-bootloader |
| | 110 | • EFI target: /boot/efi |
| | 111 | |
| | 112 | === Initrd === |
| | 113 | • Adds virtio_scsi to support virtio disks (used in QEMU) |
| | 114 | |
| | 115 | == Summary == |
| | 116 | |
| | 117 | This system provides a secure, lean, and fully declarative infrastructure combining modern development tools with reproducibility and control. Key benefits include: |
| | 118 | • Separation of concerns across services |
| | 119 | • Reproducible and declarative service setup |
| | 120 | • Git and Trac integration via FastCGI |
| | 121 | • TLS automation with Certbot |
| | 122 | • Secure VPN access |
| | 123 | • Snapshot-friendly Btrfs setup |