+1
-1
.github/workflows/flakehub.yml
+1
-1
.github/workflows/flakehub.yml
+1
-1
.github/workflows/nix-build.yml
+1
-1
.github/workflows/nix-build.yml
+1
-1
.github/workflows/nix-check.yml
+1
-1
.github/workflows/nix-check.yml
+84
-81
LICENSE.md
+84
-81
LICENSE.md
···
1
-
GNU General Public License
2
-
==========================
1
+
# GNU General Public License
3
2
4
-
_Version 3, 29 June 2007_
5
-
_Copyright © 2007 Free Software Foundation, Inc. <<http://fsf.org/>>_
3
+
_Version 3, 29 June 2007_\
4
+
_Copyright © 2007 Free Software Foundation, Inc. \<<http://fsf.org/>>_
6
5
7
6
Everyone is permitted to copy and distribute verbatim copies of this license
8
7
document, but changing it is not allowed.
···
193
192
the Program, in the form of source code under the terms of section 4, provided that
194
193
you also meet all of these conditions:
195
194
196
-
* **a)** The work must carry prominent notices stating that you modified it, and giving a
197
-
relevant date.
198
-
* **b)** The work must carry prominent notices stating that it is released under this
199
-
License and any conditions added under section 7. This requirement modifies the
200
-
requirement in section 4 to “keep intact all notices”.
201
-
* **c)** You must license the entire work, as a whole, under this License to anyone who
202
-
comes into possession of a copy. This License will therefore apply, along with any
203
-
applicable section 7 additional terms, to the whole of the work, and all its parts,
204
-
regardless of how they are packaged. This License gives no permission to license the
205
-
work in any other way, but it does not invalidate such permission if you have
206
-
separately received it.
207
-
* **d)** If the work has interactive user interfaces, each must display Appropriate Legal
208
-
Notices; however, if the Program has interactive interfaces that do not display
209
-
Appropriate Legal Notices, your work need not make them do so.
195
+
- **a)** The work must carry prominent notices stating that you modified it, and giving a
196
+
relevant date.
197
+
- **b)** The work must carry prominent notices stating that it is released under this
198
+
License and any conditions added under section 7. This requirement modifies the
199
+
requirement in section 4 to “keep intact all notices”.
200
+
- **c)** You must license the entire work, as a whole, under this License to anyone who
201
+
comes into possession of a copy. This License will therefore apply, along with any
202
+
applicable section 7 additional terms, to the whole of the work, and all its parts,
203
+
regardless of how they are packaged. This License gives no permission to license the
204
+
work in any other way, but it does not invalidate such permission if you have
205
+
separately received it.
206
+
- **d)** If the work has interactive user interfaces, each must display Appropriate Legal
207
+
Notices; however, if the Program has interactive interfaces that do not display
208
+
Appropriate Legal Notices, your work need not make them do so.
210
209
211
210
A compilation of a covered work with other separate and independent works, which are
212
211
not by their nature extensions of the covered work, and which are not combined with
···
222
221
5, provided that you also convey the machine-readable Corresponding Source under the
223
222
terms of this License, in one of these ways:
224
223
225
-
* **a)** Convey the object code in, or embodied in, a physical product (including a
226
-
physical distribution medium), accompanied by the Corresponding Source fixed on a
227
-
durable physical medium customarily used for software interchange.
228
-
* **b)** Convey the object code in, or embodied in, a physical product (including a
229
-
physical distribution medium), accompanied by a written offer, valid for at least
230
-
three years and valid for as long as you offer spare parts or customer support for
231
-
that product model, to give anyone who possesses the object code either **(1)** a copy of
232
-
the Corresponding Source for all the software in the product that is covered by this
233
-
License, on a durable physical medium customarily used for software interchange, for
234
-
a price no more than your reasonable cost of physically performing this conveying of
235
-
source, or **(2)** access to copy the Corresponding Source from a network server at no
236
-
charge.
237
-
* **c)** Convey individual copies of the object code with a copy of the written offer to
238
-
provide the Corresponding Source. This alternative is allowed only occasionally and
239
-
noncommercially, and only if you received the object code with such an offer, in
240
-
accord with subsection 6b.
241
-
* **d)** Convey the object code by offering access from a designated place (gratis or for
242
-
a charge), and offer equivalent access to the Corresponding Source in the same way
243
-
through the same place at no further charge. You need not require recipients to copy
244
-
the Corresponding Source along with the object code. If the place to copy the object
245
-
code is a network server, the Corresponding Source may be on a different server
246
-
(operated by you or a third party) that supports equivalent copying facilities,
247
-
provided you maintain clear directions next to the object code saying where to find
248
-
the Corresponding Source. Regardless of what server hosts the Corresponding Source,
249
-
you remain obligated to ensure that it is available for as long as needed to satisfy
250
-
these requirements.
251
-
* **e)** Convey the object code using peer-to-peer transmission, provided you inform
252
-
other peers where the object code and Corresponding Source of the work are being
253
-
offered to the general public at no charge under subsection 6d.
224
+
- **a)** Convey the object code in, or embodied in, a physical product (including a
225
+
physical distribution medium), accompanied by the Corresponding Source fixed on a
226
+
durable physical medium customarily used for software interchange.
227
+
- **b)** Convey the object code in, or embodied in, a physical product (including a
228
+
physical distribution medium), accompanied by a written offer, valid for at least
229
+
three years and valid for as long as you offer spare parts or customer support for
230
+
that product model, to give anyone who possesses the object code either **(1)** a copy of
231
+
the Corresponding Source for all the software in the product that is covered by this
232
+
License, on a durable physical medium customarily used for software interchange, for
233
+
a price no more than your reasonable cost of physically performing this conveying of
234
+
source, or **(2)** access to copy the Corresponding Source from a network server at no
235
+
charge.
236
+
- **c)** Convey individual copies of the object code with a copy of the written offer to
237
+
provide the Corresponding Source. This alternative is allowed only occasionally and
238
+
noncommercially, and only if you received the object code with such an offer, in
239
+
accord with subsection 6b.
240
+
- **d)** Convey the object code by offering access from a designated place (gratis or for
241
+
a charge), and offer equivalent access to the Corresponding Source in the same way
242
+
through the same place at no further charge. You need not require recipients to copy
243
+
the Corresponding Source along with the object code. If the place to copy the object
244
+
code is a network server, the Corresponding Source may be on a different server
245
+
(operated by you or a third party) that supports equivalent copying facilities,
246
+
provided you maintain clear directions next to the object code saying where to find
247
+
the Corresponding Source. Regardless of what server hosts the Corresponding Source,
248
+
you remain obligated to ensure that it is available for as long as needed to satisfy
249
+
these requirements.
250
+
- **e)** Convey the object code using peer-to-peer transmission, provided you inform
251
+
other peers where the object code and Corresponding Source of the work are being
252
+
offered to the general public at no charge under subsection 6d.
254
253
255
254
A separable portion of the object code, whose source code is excluded from the
256
255
Corresponding Source as a System Library, need not be included in conveying the
···
316
315
covered work, you may (if authorized by the copyright holders of that material)
317
316
supplement the terms of this License with terms:
318
317
319
-
* **a)** Disclaiming warranty or limiting liability differently from the terms of
320
-
sections 15 and 16 of this License; or
321
-
* **b)** Requiring preservation of specified reasonable legal notices or author
322
-
attributions in that material or in the Appropriate Legal Notices displayed by works
323
-
containing it; or
324
-
* **c)** Prohibiting misrepresentation of the origin of that material, or requiring that
325
-
modified versions of such material be marked in reasonable ways as different from the
326
-
original version; or
327
-
* **d)** Limiting the use for publicity purposes of names of licensors or authors of the
328
-
material; or
329
-
* **e)** Declining to grant rights under trademark law for use of some trade names,
330
-
trademarks, or service marks; or
331
-
* **f)** Requiring indemnification of licensors and authors of that material by anyone
332
-
who conveys the material (or modified versions of it) with contractual assumptions of
333
-
liability to the recipient, for any liability that these contractual assumptions
334
-
directly impose on those licensors and authors.
318
+
- **a)** Disclaiming warranty or limiting liability differently from the terms of
319
+
sections 15 and 16 of this License; or
320
+
- **b)** Requiring preservation of specified reasonable legal notices or author
321
+
attributions in that material or in the Appropriate Legal Notices displayed by works
322
+
containing it; or
323
+
- **c)** Prohibiting misrepresentation of the origin of that material, or requiring that
324
+
modified versions of such material be marked in reasonable ways as different from the
325
+
original version; or
326
+
- **d)** Limiting the use for publicity purposes of names of licensors or authors of the
327
+
material; or
328
+
- **e)** Declining to grant rights under trademark law for use of some trade names,
329
+
trademarks, or service marks; or
330
+
- **f)** Requiring indemnification of licensors and authors of that material by anyone
331
+
who conveys the material (or modified versions of it) with contractual assumptions of
332
+
liability to the recipient, for any liability that these contractual assumptions
333
+
directly impose on those licensors and authors.
335
334
336
335
All other non-permissive additional terms are considered “further
337
336
restrictions” within the meaning of section 10. If the Program as you received
···
552
551
and each file should have at least the “copyright” line and a pointer to
553
552
where the full notice is found.
554
553
555
-
<one line to give the program's name and a brief idea of what it does.>
556
-
Copyright (C) <year> <name of author>
554
+
```
555
+
<one line to give the program's name and a brief idea of what it does.>
556
+
Copyright (C) <year> <name of author>
557
557
558
-
This program is free software: you can redistribute it and/or modify
559
-
it under the terms of the GNU General Public License as published by
560
-
the Free Software Foundation, either version 3 of the License, or
561
-
(at your option) any later version.
558
+
This program is free software: you can redistribute it and/or modify
559
+
it under the terms of the GNU General Public License as published by
560
+
the Free Software Foundation, either version 3 of the License, or
561
+
(at your option) any later version.
562
562
563
-
This program is distributed in the hope that it will be useful,
564
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
565
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
566
-
GNU General Public License for more details.
563
+
This program is distributed in the hope that it will be useful,
564
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
565
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
566
+
GNU General Public License for more details.
567
567
568
-
You should have received a copy of the GNU General Public License
569
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
568
+
You should have received a copy of the GNU General Public License
569
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
570
+
```
570
571
571
572
Also add information on how to contact you by electronic and paper mail.
572
573
573
574
If the program does terminal interaction, make it output a short notice like this
574
575
when it starts in an interactive mode:
575
576
576
-
<program> Copyright (C) <year> <name of author>
577
-
This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
578
-
This is free software, and you are welcome to redistribute it
579
-
under certain conditions; type 'show c' for details.
577
+
```
578
+
<program> Copyright (C) <year> <name of author>
579
+
This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
580
+
This is free software, and you are welcome to redistribute it
581
+
under certain conditions; type 'show c' for details.
582
+
```
580
583
581
584
The hypothetical commands `show w` and `show c` should show the appropriate parts of
582
585
the General Public License. Of course, your program's commands might be different;
···
585
588
You should also get your employer (if you work as a programmer) or school, if any, to
586
589
sign a “copyright disclaimer” for the program, if necessary. For more
587
590
information on this, and how to apply and follow the GNU GPL, see
588
-
<<http://www.gnu.org/licenses/>>.
591
+
\<<http://www.gnu.org/licenses/>>.
589
592
590
593
The GNU General Public License does not permit incorporating your program into
591
594
proprietary programs. If your program is a subroutine library, you may consider it
592
595
more useful to permit linking proprietary applications with the library. If this is
593
596
what you want to do, use the GNU Lesser General Public License instead of this
594
597
License. But first, please read
595
-
<<http://www.gnu.org/philosophy/why-not-lgpl.html>>.
598
+
\<<http://www.gnu.org/philosophy/why-not-lgpl.html>>.
+13
README.md
+13
README.md
···
1
1

2
2
3
3
## Overview
4
+
4
5
My comprehensive NixOS flake for managing my laptop, desktop, and home lab environments.
5
6
6
7
## Features
8
+
7
9
- **Hyprland** Dynamic tiling Wayland compositor and window manager.
8
10
- **Home Lab Services:** Media, file sharing, and more.
9
11
- **Reverse Proxy:** Efficient traffic routing for my home lab services.
10
12
- **Modular Configuration:** Reasonably adaptable for different hardware and use cases.
11
13
12
14
## Inputs
15
+
13
16
This flake takes a variety of inputs, first and foremost my other flakes:
17
+
14
18
- [nixhw](https://github.com/alyraffauf/nixhw): opinionated set of generic (AMD, Intel, Laptop, SSD) and specific (Framework 13, Yoga 9i, Thinkpad T440p) hardware configuration modules for NixOS.
15
19
- [raffauflabs](https://github.com/alyraffauf/raffauflabs): everything (containers, services, nginx, etc) that makes my [home lab](https://raffauflabs.com) a home lab.
16
20
17
21
As well as upstream third-party projects that I use for various tasks:
22
+
18
23
- [agenix](https://github.com/ryantm/agenix): secrets storage and orchestration.
19
24
- [disko](https://github.com/nix-community/disko): declarative partitions and disk configuration.
20
25
- [home-manager](https://github.com/nix-community/home-manager): declarative dotfile and user package management.
···
33
38
In addition, this flake outputs NixOS configuration and home-manager configurations for all of my hosts and users, respectively.
34
39
35
40
## Deploying to NixOS
41
+
36
42
Each hardware configuration is host-specific. If you fork this repository, add a host configuration for your own hardware. Secrets are encrypted with [agenix](https://github.com/ryantm/agenix) and will not be available without the private decryption keys.
37
43
38
44
### Enabling Flakes
45
+
39
46
While widely used and considered stable, [flakes](https://wiki.nixos.org/wiki/Flakes) are still considered experimental. To enable Flakes, add the following lines to your `configuration.nix` and rebuild.
47
+
40
48
```nix
41
49
nix.settings.experimental-features = [ "nix-command" "flakes" ];
42
50
```
···
44
52
Alternatively, pass `--experimental-features "nix-command flakes"` to `nix` to temporarily use flakes.
45
53
46
54
### Building Flake
55
+
47
56
In order to deploy this Flake on your host, run the following command:
57
+
48
58
```console
49
59
sudo nixos-rebuild boot --flake github:alyraffauf/nixcfg#$HOSTNAME
50
60
```
61
+
51
62
Substitute `$HOSTNAME` for whichever hostname you have chosen. Reboot to apply the flake's configuration for the chosen host.
52
63
53
64
### Installing from Live USB
65
+
54
66
If you want to install NixOS from this flake, run the following commands, ideally from a NixOS live environment, providing the hostname associated with a NixOS configuration specified in `flake.nix` when prompted.
67
+
55
68
```console
56
69
sudo nix --experimental-features "nix-command flakes" run github:alyraffauf/nixcfg
57
70
```
+5
hosts/common/README.md
+5
hosts/common/README.md
+29
hosts/fallarbor/README.md
+29
hosts/fallarbor/README.md
···
1
+
# fallarbor
2
+
3
+
## Overview
4
+
5
+
Framework Laptop 13 with 11th Gen Intel processor. My husband's primary computer, mainly used for productivity.
6
+
7
+
## Todo
8
+
9
+
- \[ \] add encryption with LUKS.
10
+
11
+
## Specs
12
+
13
+
| Model | Framework Laptop 13 |
14
+
|---------|---------------------------|
15
+
| Display | 13.5" 2256x1504 60Hz |
16
+
| CPU | Intel Core i5-1135G7 |
17
+
| RAM | 16GB (8GBx2) DDR4-3200Mhz |
18
+
| GPU | Intel Iris Xe Graphics |
19
+
| Disks | 512GB M.2 PCIe 3.0 |
20
+
21
+
## Filesystems
22
+
23
+
### /
24
+
25
+
Btrfs volume, not encrypted.
26
+
27
+
## Display
28
+
29
+
First-gen glossy Framework Laptop 13 screen. Typically used at 1.566667 scaling with Hyprland (1.6 causes strange blurryness).
+29
hosts/lavaridge/README.md
+29
hosts/lavaridge/README.md
···
1
+
# lavaridge
2
+
3
+
## Overview
4
+
5
+
Framework Laptop 13 with AMD 7000 series mainboard. My primary machine used for work, productivity, development work, media, you name it.
6
+
7
+
## Todo
8
+
9
+
- \[ \] upgrade to [2.8k 120Hz Framework screen](https://frame.work/products/display-kit?v=FRANJF0001).
10
+
11
+
## Specs
12
+
13
+
| Model | Framework Laptop 13 |
14
+
|---------|---------------------------|
15
+
| Display | 13.5" 2256x1504 60Hz |
16
+
| CPU | AMD Ryzen 7640U |
17
+
| RAM | 32GB 16GBx2) DDR5-5600Mhz |
18
+
| GPU | AMD Radeon 760M |
19
+
| Disks | 1TB Sk hynix P41 |
20
+
21
+
## Filesystems
22
+
23
+
### /
24
+
25
+
Encrypted LUKS btrfs volume.
26
+
27
+
## Display
28
+
29
+
First-gen glossy Framework Laptop 13 screen. Typically used at 1.566667 scaling with Hyprland (1.6 causes strange blurryness).
+55
hosts/mauville/README.md
+55
hosts/mauville/README.md
···
1
+
# mauville
2
+
3
+
## Overview
4
+
5
+
Home lab/server built in a mini-ITX case from NZXT. Also used for gaming, but bottlenecked by the CPU. Home lab services are largely configured [upstream](https://github.com/alyraffauf/raffauflabs).
6
+
7
+
## Todo
8
+
9
+
- \[ \] upgrade CPU.
10
+
- \[ \] upgrade RAM to 32GB.
11
+
- \[ \] add second 2TB SSD in btrfs pool.
12
+
13
+
## Specs
14
+
15
+
| Model | Custom Mini-ITX Desktop |
16
+
|---------|---------------------------|
17
+
| Display | LG 34" 3440x1440 160Hz VA |
18
+
| CPU | AMD Ryzen 5 2600 |
19
+
| RAM | 16GB (8GBx2) DDR4-3200Mhz |
20
+
| GPU | AMD Radeon Rx 6700 |
21
+
| Disks | 1TB M.2 PCIe 3.0 |
22
+
| | 2TB SATA SSD |
23
+
| | 2TB SATA HDD |
24
+
25
+
## Filesystems
26
+
27
+
### /
28
+
29
+
Encrypted LUKS btrfs volume. Can be unlocked remotely from initrd with authorized SSH keys.
30
+
31
+
### /mnt/Media
32
+
33
+
Main btrfs media storage volume for torrents, tv shows, movies, and other things served by audiobookshelf, navidrome, and plex.
34
+
35
+
Served over samba to my LAN as 'Media'.
36
+
37
+
### /mnt/Archive
38
+
39
+
Archival btrfs volume. Not used for anything important, just spillover for things not backed up to Backblaze.
40
+
41
+
Served over samba to my LAN as 'Archive'.
42
+
43
+
## Display
44
+
45
+
34" LG 34WP65C-B curved 3440 x 1440 160Hz ultrawide. Typically used at 1.25x scaling.
46
+
47
+
## Services
48
+
49
+
| Service | Description | Domain |
50
+
|----------------|-----------------------------------|----------------------------------|
51
+
| Audiobookshelf | Podcasts & audiobooks. | https://podcasts.raffauflabs.com |
52
+
| Forĝejo | Git & DevOps. | https://git.raffauflabs.com |
53
+
| Navidrome | SubSonic-compatible music server. | https://music.raffauflabs.com |
54
+
| Plex | Music, TV, and Movie streaming. | https://plex.raffauflabs.com |
55
+
| Transmission | BitTorrent. | Tailnet/LAN |
+25
hosts/petalburg/README.md
+25
hosts/petalburg/README.md
···
1
+
# petalburg
2
+
3
+
## Overview
4
+
5
+
Lenovo Yoga 9i 2023. Secondary convertible mainly used for media, light dev work, and anything that might use a stylus or touch screen.
6
+
7
+
## Specs
8
+
9
+
| Model | Lenovo Yoga 9i Gen 8 |
10
+
|---------|----------------------------------------|
11
+
| Display | 14" 2880x1800 90hz OLED |
12
+
| CPU | Intel Core i7-1360P |
13
+
| RAM | 16GB (8GBx2) LPDDR5-5200Mhz (soldered) |
14
+
| GPU | Intel Iris Xe Graphics |
15
+
| Disks | 512GB M.2 PCIe 4.0 |
16
+
17
+
## Filesystems
18
+
19
+
### /
20
+
21
+
Encrypted LUKS btrfs volume.
22
+
23
+
## Display
24
+
25
+
Scales perfectly at 2x.
+25
hosts/rustboro/README.md
+25
hosts/rustboro/README.md
···
1
+
# rustboro
2
+
3
+
## Overview
4
+
5
+
Thinkpad T440p. Older workhorse, not used very much these days but often used for testing or as a backup.
6
+
7
+
## Specs
8
+
9
+
| Model | ThinkPad T440p |
10
+
|---------|----------------------------|
11
+
| Display | 14" 1920x1080 60hz |
12
+
| CPU | Intel Core i5-4210M |
13
+
| RAM | 16GB (8GBx2) DDR3L-1600Mhz |
14
+
| GPU | Intel HD Graphics 4600 |
15
+
| Disks | 512GB SATA SSD |
16
+
17
+
## Filesystems
18
+
19
+
### /
20
+
21
+
Encrypted LUKS btrfs volume.
22
+
23
+
## Display
24
+
25
+
Aftermarket LG 1080p panel. Unscaled, but I crank up the fonts to 14pt.