• Stars
    star
    1
  • Language
    Nix
  • Created over 1 year ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

NixOS configurations

NixOS Configurations

Here are my NixOS configurations.

These allows for system portability and configuration from machine to machine with a small amount of changes (usually disks, partitions, or hardware changes) once and enjoy a many times forward. The configurations allow for a base system to be installed, with a core amount of applications to operate. They shine when you add something like Home Manager is installed to allow for discrete per-user configuration of the environment. If you are looking for that configuration head on over to my Nix Home Manager | Dotfiles Repository.

If you would like to base your own configuration from this, you will need to be able to use Nix flakes.

Highlights:

  • BTRFS subvolume implementation with hourly automatic snapshots

  • Impermanence toggled for a clean installation on each reboot

  • Toggled full disk encryption

  • Support for RAID configurations

  • Deployment of secrets using sops-nix

  • Some real interesting bash scripts for automating common tasks

  • Declarative themes and wallpapers with nix-colors

  • I sort of blewspent the summer of 2023 moving into this configuration after waving a fond farewell to near 2 decades of running Arch Linux. This, as with life, is still WIP. I documented the process on the Tired of IT! NixOS chapter on my website.

Tree Structure

  • flake.nix: Entrypoint for NixOS configurations.
  • hosts: Host Configurations
    • common: Shared configurations consumed by all hosts.
      • secrets: Secrets that are available to all users
    • <host_a>: "host_a" specific hardware and host configuration
      • secrets: Secrets that are specific to the 'host_a' host
    • ...: And so on as above with other hosts
  • lib: Helpers, functions, libraries and timesavers
  • modules: Modules that are specific to this implementation and allow for toggled configuration
    • application: Applications accessible to all users of system
    • container: Containers using some sort of OCI container engine
    • features: Features such as virtualization, gaming, cross compilation
    • filesystem: Encryption, impermanence, BTRFS options
    • hardware: Bluetooth, Printing, Sound, Wireless
    • network: Firewalls and VPNs
    • service: Miscellanious daemons
  • overlays: Ammendments and updates to packages that exist in the nix ecosphere
  • pkgs: Custom packages, services, scripts that are specific to this installation
  • users: Individual User folders

Usage

Manual approach

Get your installer disc booted up and your disks partitioned. I took notes on how I did an install with BTRFS and encryption on my website. Once you have your partitions created and subvolumes mounted then we can continue..

  • Generate your hardware-configuration.nix file.
nixos-generate-config --root /mnt --file /tmp
  • Go ahead and clone this repository.
nix-shell -p git nixFlakes
git clone https://github.com/tiredofit/nixos-config.git /mnt/etc/nixos
  • Either create a new host entry in flake.nix and add associated bits to the hosts folder or modify one of the existing hosts hardware-configuration.nix with what you generated above. That's kinda janky, but it'll get you started..

  • Install your new NixOS system

nixos-install --root /mnt --flake /mnt/etc/nixos#<host>

Optimized deployment via script

  • Use the included deployment script on an Arch or NixOS system to:
    • Add remove new hosts and templates
    • Update Flake
    • Update running system
    • Generate SSH Key and AGE keys per host
    • Update host / repository secrets
    • Remotely install a new system based on configuration via SSH
    • Build locally and remotely update an in place system via SSH

Configuring a system

Features are toggleable via the host configuration options. Have a look insie the modules/nixos folder for options available.

For example to have a base AMD system using with an integrated GPU using BTRFS as a file system that allowed SSH, Docker, and a hardware webcam it would be configured as such:

  host = {
    hardware = {
      cpu = "amd";
      graphics = {
        acceleration = true;
        displayServer = "x";
        gpu = "integrated-amd";
      };
      webcam.enable = true;
    };
    network = {
      hostname = "samplehostname" ;
      domainname = "tiredofit.ca" ;
    };
    role = server;
  };

This very much relies on the modules/roles folder and sets defaults per role, which can be overridden in each hosts unique configuration.

Keep it up to date

sudo nix flake update /etc/nixos/
sudo nixos-rebuild switch --flake /etc/nixos/#<host>

Managing Secrets

I document the process of getting encrypted secrets created and keeping up to date on my website. Tired of IT! Secrets Management.

License

Do you what you'd like and I hope that this inspires you for your own configurations as many others have myself.

More Repositories

1

docker-freepbx

Dockerized FreePBX 15 w/Asterisk 17, Seperate MySQL Database support, and Data Persistence and UCP
496
star
2

docker-db-backup

Backup multiple database types on a scheduled basis with many customizable options
Dockerfile
472
star
3

docker-traefik-cloudflare-companion

Automatically Create CNAME records for containers served by Traefik
Python
274
star
4

docker-freescout

Dockerized Freescout Helpdesk
Dockerfile
146
star
5

docker-self-service-password

Dockerized LDAP Tollbox Self Service Password Changer with many customizable options
Dockerfile
115
star
6

docker-nginx-php-fpm

Dockerized Nginx + PHP FPM images with many customizable options
Dockerfile
106
star
7

docker-openldap

Dockerized OpenLDAP server with many customizable options
99
star
8

docker-jitsi-meet

Docker Jitsi Meet WebRTC conferencing system w/Prosody XMPP and s6 overlay
Dockerfile
64
star
9

docker-collabora-online

Dockerized Collabora Office Online with customizable options
Dockerfile
62
star
10

docker-osticket

Dockerized Help Desk Software
PHP
48
star
11

docker-tinc

Docker Tinc VPN Mesh server w/S6 Overlay Init, Zabbix Monitoring, and distributed configuration updating based on Alpine
Dockerfile
43
star
12

docker-postal

Dockerized Postal SMTP Server based on Alpine Linux and Ruby
Dockerfile
40
star
13

docker-fusiondirectory

Dockerized FusionDirectory LDAP Manager
Dockerfile
39
star
14

docker-lemonldap

Dockerized Authentication Server with Single Sign On SAML, OpenID Connect, CAS, and Header support
Dockerfile
39
star
15

docker-openldap-fusiondirectory

Dockerized OpenLDAP server with FusionDirectory Schema Support
34
star
16

docker-wordpress

Dockerized Wordpress Image with customizable options
Python
31
star
17

docker-alpine

Docker Alpine Linux Base Images
Dockerfile
30
star
18

docker-traefik

Dockerized Traefik Reverse Proxy with customizable options
Dockerfile
29
star
19

docker-mongodb-backup

Docker MongoDB Backup Container based on Alpine w/S6 init, Zabbix Monitoring
Dockerfile
28
star
20

docker-nginx-proxy-cloudflare-companion

Automatically update CNAME records when Docker container starts via Cloudflare
Python
27
star
21

docker-spamassassin

Docker Spamassassin Spam filtering based on Alpine Linux
Dockerfile
26
star
22

docker-clamav

Docker ClamAV Image with Zabbix Monitoring and Customizable Configuration
Dockerfile
23
star
23

docker-baserow

Dockerized Baserow No/Low code data management application based on Alpine
Dockerfile
22
star
24

docker-nginx

Dockerzed webserver with many customizable options
Dockerfile
22
star
25

docker-nextcloud

Dockerized Nextcloud Server with many customizable options
17
star
26

docker-gitlab-ee

Dockerized Gitlab Enterprise Edition
Dockerfile
17
star
27

docker-debian

Docker Debian Base Images
Dockerfile
15
star
28

docker-discourse

Dockerized Discourse Forum
Dockerfile
15
star
29

docker-backuppc

Docker BackupPC with Zabbix monitoring support
Perl
15
star
30

docker-gcds

Docker Google Cloud Directory Sync service (GADS) w/S6 Overlay, Zabbix Monitoring
Dockerfile
14
star
31

docker-mariadb-backup

Docker MariaDB Backup Container w/ S6 Overlay, Zabbix Monitoring based on Alpine
Dockerfile
13
star
32

docker-zabbix

Dockerized Zabbix Server, Proxy, and Frontend
Dockerfile
13
star
33

docker-insync

Docker Insync Headless Client
Dockerfile
12
star
34

docker-rspamd

Dockerized Anti Spam Filter
Python
12
star
35

docker-nginx-ldap

Docker Nginx Image w/LDAP Authentication, Zabbix agent monitoring, S6 init, logrotate based on Alpine
Dockerfile
11
star
36

docker-bookstack

Dockerized Information Manager
Dockerfile
11
star
37

docker-mariadb

Docker MariaDB server w/ S6 Overlay, Zabbix Monitoring based on Alpine
11
star
38

docker-gitlab

Dockerized Gitlab CE w/Alpine Linux, Zabbix Monitoring and S6 Overlay
Dockerfile
10
star
39

docker-staytus

Docker Staytus Image w/s6 overlay, zabbix monitoring based on Alpine
HTML
10
star
40

docker-leantime

Dockerized Project Managment tool with many configurable options
Dockerfile
10
star
41

docker-otrs

Dockerized OTRS ITSM Helpdesk/Ticketing System based on Alpine w/Nginx
Dockerfile
9
star
42

docker-unbound

Docker Unbound DNS Resolver based on Alpine
Dockerfile
9
star
43

docker-postgres

Dockerized Postgresql Server with multiple databases/users, replication, and monitoring support
Dockerfile
9
star
44

docker-postfix

Dockerized MTA with many customizable features, LDAP, SASL, Milter, Relay Support
Dockerfile
8
star
45

docker-matomo

Dockerized Matomo (Piwik) Analytics
Dockerfile
8
star
46

docker-yourls

Dockerized YOURLS link shortener based on Alpine
Dockerfile
8
star
47

docker-invoiceninja

Dockerized Invoicing web application
Dockerfile
7
star
48

docker-nodejs

Docker NodeJS Base Images
7
star
49

docker-postfix-relay

Dockerized Postfix Relay for easy SMTP capabilities
Shell
7
star
50

docker-openvpn

Dockerized OpenVPN server w/Alpine+Debian Variants w/s6 overlay, and LDAP Authentication support
7
star
51

docker-rocketchat

Docker Rocketchat Server with S6 Initsystem and Zabbix Monitoring based on Alpine
6
star
52

docker-kopano

Dockerized Kopano Groupware server
Dockerfile
6
star
53

docker-n8n

Dockerized n8n workflow automation tool
Dockerfile
6
star
54

docker-listmonk

Dockerized Listmonk Mailing List server built iwth Alpine w/Zabbix Monitoring
Dockerfile
6
star
55

docker-cpuminer

Cryptocurrency Miner based on Alpine
6
star
56

docker-kopano-core

Dockerized Kopano Groupware Server
6
star
57

docker-grafana

Dockerfile
5
star
58

docker-moodle

Dockerized Moodle Learning Management System
Dockerfile
5
star
59

docker-loki

Dockerized Loki Log Analyzer
Dockerfile
5
star
60

docker-teampass

Dockerized Password Vault for Teams based on Alpine w/nginx,php-fpm
Dockerfile
5
star
61

docker-orbeon

Docker Orbeon Forms CE w/S6 Init, Tomcat, based on Alpine
Dockerfile
5
star
62

docker-redis

Docker Redis Server with S6 Initsystem and Zabbix Monitoring based on Alpine
5
star
63

docker-elasticsearch

Dockerized Elasticsearch based on Alpine linux
4
star
64

fusiondirectory-plugin-kopano

Plugin to manage users/groups for Kopano (fork of Zarafa) within Fusion Directory LDAP Manager
PHP
4
star
65

docker-novnc

Run GUI applications within a browser - Base image
Dockerfile
4
star
66

docker-flarum

Dockerized Flarum Web Forum Software based on Alpine
Shell
4
star
67

docker-registry

Dockerized Docker Registry
Dockerfile
4
star
68

docker-rabbitmq

Dockerized RabbitMQ server
Python
4
star
69

docker-gitlab-runner

Docker Gitlab runner w/ Zabbix monitoring support based on Alpine
4
star
70

docker-openeats

Dockerized Openeats Recipe manager based on Alpine Linux w/Zabbix Monitoring
Dockerfile
3
star
71

docker-restic

Dockerized Backup application
Dockerfile
3
star
72

docker-dovecot

Docker Dovecot IMAP server based on Alpine w/LDAP Support
TSQL
3
star
73

docker-uptimekuma

Dockerized Service availability monitoring system
Dockerfile
3
star
74

docker-draw-io

Docker Draw.IO image based on Alpine and Nginx
3
star
75

docker-logrotate

Docker Logrotate to keep logfiles compressed and rotated based on Alpine
Shell
3
star
76

docker-mailhog

Dockerized SMTP Test server
Dockerfile
3
star
77

docker-cachet

Dockerized Cachet Status monitoring application based on Alpine Linux
Dockerfile
3
star
78

docker-sentry

Dockerized Sentry.IO Exception tracking system based on Debian w/LDAP and SAML
Python
3
star
79

docker-airsonic-advanced

Dockerized Airsonic Advanced Server based on Alpine
Dockerfile
3
star
80

docker-limesurvey

Dockerized Limesurvey application based on Alpine
Dockerfile
3
star
81

docker-mongo

Docker MongoDB server w/ S6 Overlay, Zabbix Monitoring based on Alpine
3
star
82

docker-haraka

Docker Haraka MTA based on Alpine
JavaScript
3
star
83

docker-ruby

Docker Ruby base images w/ S6 Overlay and Zabbix monitoring support
3
star
84

docker-ubuntu

Dockerized Ubuntu Base Images
Dockerfile
2
star
85

docker-memcached

Docker Memcached Server w/ S6 Initsystem and Zabbix Monitoring based on Alpine
Dockerfile
2
star
86

home

Home-Manager configuration ala Nix flakes
Nix
2
star
87

docker-kopano-meet

Dockerfile
2
star
88

docker-soulseek

Dockerized Soulseek Client
Dockerfile
2
star
89

docker-kopano-kapi

Dockerfile
2
star
90

docker-kopano-konnect

Dockerfile
2
star
91

docker-olefy

Dockerized Olefy TCP listener for OLE Tools
Dockerfile
2
star
92

docker-logchimp

Dockerized Logchimp Application
Dockerfile
2
star
93

docker-transmission

Dockerized Transmission client
Dockerfile
2
star
94

docker-dind

Docker in Docker Image with Zabbix monitoring Support and --squash --compress options by default based on Alpine
Dockerfile
2
star
95

docker-matrix-bridges

Dockerized Matrix Bridges to interconnect services
Dockerfile
2
star
96

docker-monica

Dockerized Monica PRM
Dockerfile
2
star
97

tiredofit

2
star
98

docker-minio

Dockerized Minio Server based on Alpine
Dockerfile
2
star
99

docker-tomcat

Docker Apache Tomcat based on Alpine
2
star
100

docker-mongo-builder

Docker Image to build MongoDB and associated tools for Alpine Edge from aports/non-free
Dockerfile
2
star