Skip to content

Commit 9f0a1f3

Browse files
committed
feat: server with external volume
1 parent 3fc973c commit 9f0a1f3

File tree

10 files changed

+223
-30
lines changed

10 files changed

+223
-30
lines changed

.sops.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ keys:
55
- &server_ceylon age1sdpel8lnp90e43a7nag7p44mkpuglf5mg0f0ccq4kr9pvxmdkfpqznvu2r
66
- &server_pyxis age1n52ec7jk26u40rx3c858s9udwp603s24af05h8jpc4h5zqr95uzs86t9w7
77
- &server_huginn age1l5pkxrftt3e25kny6l8xllw53uh6almh9usv8x9h67g82k7q63ss8daq5e
8+
- &server_alex age1z94tzmzngntrkn32jm4283m2fwhhw73q8gghawld4vya7a6jtafsyznmnk
89
creation_rules:
910
- path_regex: secrets/bunky/[^/]+\.yaml$
1011
key_groups:
@@ -20,6 +21,8 @@ creation_rules:
2021
- *server_ceylon
2122
- *server_pyxis
2223
- *server_huginn
24+
- *server_alex
25+
2326
- path_regex: secrets/vault/[^/]+\.yaml$
2427
key_groups:
2528
- age:

deploy/default.nix

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ in {
2727
pyxis = mkDeployNode {hostname = "pyxis";};
2828
ceylon = mkDeployNode {hostname = "ceylon";};
2929
huginn = mkDeployNode {hostname = "huginn";};
30+
alex = mkDeployNode {hostname = "alex";};
3031
};
3132
};
3233
}

home/configurations/default.nix

+11
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,16 @@ in {
6969
}
7070
];
7171
};
72+
73+
"justin@alex" = {
74+
system = "x86_64-linux";
75+
modules =
76+
extraModules
77+
++ [
78+
{
79+
home.stateVersion = "21.11";
80+
}
81+
];
82+
};
7283
};
7384
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{comma, ...}: {pkgs, ...}: let
2+
in {
3+
config = {
4+
activeProfiles = ["development"];
5+
6+
home.packages = with pkgs; [
7+
comma.packages.x86_64-linux.default
8+
alejandra
9+
];
10+
11+
programs.zellij = {
12+
enable = true;
13+
settings = {
14+
default-shell = "zsh";
15+
};
16+
};
17+
};
18+
}
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
pkgs,
3+
lib,
4+
self,
5+
config,
6+
...
7+
}: {}

nixos/configurations/alex/default.nix

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{unixpkgs, ...} @ inputs: {
2+
config,
3+
pkgs,
4+
lib,
5+
...
6+
}: {
7+
imports = [
8+
];
9+
10+
# Linux kernel
11+
12+
# Enable networking
13+
# networking.networkmanager.enable = true;
14+
15+
# Set your time zone.
16+
time.timeZone = "America/Chicago";
17+
18+
# Select internationalisation properties.
19+
i18n = {
20+
defaultLocale = "en_US.UTF-8";
21+
};
22+
23+
# personal modules
24+
justinrubek = {
25+
tailscale = {
26+
enable = true;
27+
autoconnect.enable = true;
28+
};
29+
};
30+
31+
# Define a user account. Don't forget to set a password with ‘passwd’.
32+
users.users = {
33+
justin = {
34+
isNormalUser = true;
35+
description = "Justin";
36+
extraGroups = ["networkmanager" "wheel"];
37+
shell = pkgs.zsh;
38+
39+
openssh.authorizedKeys.keys = [
40+
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL1Uj62/yt8juK3rSfrVuX/Ut+xzw1Z75KZS/7fOLm6l justin@eunomia"
41+
];
42+
};
43+
};
44+
45+
# Allow unfree packages
46+
nixpkgs.config.allowUnfree = true;
47+
48+
# List packages installed in system profile. To search, run:
49+
# $ nix search wget
50+
environment.systemPackages = with pkgs; [
51+
];
52+
53+
# services.openssh = {
54+
# enable = true;
55+
# permitRootLogin = "no";
56+
# };
57+
58+
# Open ports in the firewall.
59+
# networking.firewall.allowedTCPPorts = [ ... ];
60+
# networking.firewall.allowedUDPPorts = [ ... ];
61+
# Or disable the firewall altogether.
62+
# networking.firewall.enable = false;
63+
64+
# This value determines the NixOS release from which the default
65+
# settings for stateful data, like file locations and database versions
66+
# on your system were taken. It‘s perfectly fine and recommended to leavecatenate(variables, "bootdev", bootdev)
67+
# this value at the release version of the first install of this system.
68+
# Before changing this value read the documentation for this option
69+
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
70+
system.stateVersion = "22.11"; # Did you read the comment?
71+
72+
nix = {
73+
extraOptions = ''
74+
experimental-features = nix-command flakes
75+
'';
76+
};
77+
}
+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
config,
3+
lib,
4+
pkgs,
5+
modulesPath,
6+
...
7+
}: {
8+
imports = [
9+
"${modulesPath}/profiles/minimal.nix"
10+
"${modulesPath}/profiles/qemu-guest.nix"
11+
];
12+
13+
justinrubek = {
14+
filesystem.zfs.enable = true;
15+
16+
cloudhost.hetzner = {
17+
enable = true;
18+
};
19+
};
20+
21+
fileSystems = {
22+
"/var/nfs" = {
23+
device = "persist/data";
24+
fsType = "zfs";
25+
# options = [ "noatime" "compression=lz4" ];
26+
};
27+
};
28+
29+
swapDevices = [
30+
{device = "/dev/disk/by-label/SWAP";}
31+
];
32+
33+
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
34+
# (the default) this is the recommended approach. When using systemd-networkd it's
35+
# still possible to use this option, but it's recommended to use it in conjunction
36+
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
37+
networking.useDHCP = lib.mkDefault true;
38+
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
39+
40+
# powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
41+
# hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
42+
}

nixos/configurations/default.nix

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ in {
4040
system = "x86_64-linux";
4141
modules = hetznerModules ++ sshModule;
4242
};
43+
alex = {
44+
system = "x86_64-linux";
45+
modules = hetznerModules ++ sshModule;
46+
};
4347

4448
# other
4549
hetzner-base = {

secrets/tailscale/server.yaml

+39-30
Original file line numberDiff line numberDiff line change
@@ -8,56 +8,65 @@ sops:
88
- recipient: age1en3a406mje3x7nqpmrth4x9n23fz6mwztmyhmtn3fqyrkl25avgqfwghcd
99
enc: |
1010
-----BEGIN AGE ENCRYPTED FILE-----
11-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsNzJIaXdlMHF1SzhxdVJq
12-
M0grcTQ2MGFUR3RVZlNLRkU1U0RyemdhM1NrCkRIdHdvbFEvOUFrV0JqcVdKSGdQ
13-
c1I1RXRjN3JIS3NmSno3R2Y1TVl4OXMKLS0tIDFIL0FmS3JJcWRtbWV6aDg0dFlw
14-
dHFGLzlxRit1NisxdlhORHUvMlVwaWcKsnK+G+etnP87inVUHQf0URvOh6xbGGge
15-
NHBClxG0JbhBGYgt/xywauvH2pKay/Jyvi2PVrPIUEv+WpYMixfjzQ==
11+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiZ3BFcFdzUUw1YTg5dHE1
12+
UkZPSVEvN2Uvb3ZEUDAveEpDVnlaQzM4blZZCjA1RkVLaFA4WEQ1L1Nlbkl5TUs4
13+
ZTRwZVVTMGYweU00aHdwSUJpcVF5ZjgKLS0tIGI0UUQzczNRNjNRaW1HcmMweU01
14+
VlBrNDN5ZGRLWVRTZlpuSXZJREdWcTAK8uyL8qAKbnLJsd3wDBE3w0/aLMujKZYN
15+
aTrayyWe0zq0IzdWp7cqJ8177jDBnnk/1ggXV74IUShWmtJdExmnJQ==
1616
-----END AGE ENCRYPTED FILE-----
1717
- recipient: age1eg73s6n7kw0nu73cmlh7r7h3glc7umufv4q027nd9af757lkhflsxdyqp5
1818
enc: |
1919
-----BEGIN AGE ENCRYPTED FILE-----
20-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3TWlDL1poL1VNcFNDYTE1
21-
VC9DSzhGRWNWZ2krM2NTeFRYSlNpOHorQXpJCmVsckF3emljSVJ5YzFmc0ZVVlph
22-
S1NaL0VkS3A2QUJWelV1MXAyNWVYemsKLS0tIFZtWlROM2UwVVFPWklxSTl0K2w2
23-
cmhwUEV5WUJzclBaU0lVdm9YamdQTUEKB8vX/YHMkX22PVLwrwT0sMqmZC2j4Hsm
24-
vi/CzNz/jTn0ORsH/4qdK64PsBI6rLasTuCxkJsHJfeXmTG0r3Lr8w==
20+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvMDE1M3RPVm9jUTZVbnhY
21+
M3lRTnlLWmxBdURXNzVybjRQYThTZHNYNlYwCkd0T2NJb0hoNmFKVkJPWHhDbU93
22+
dFNhL1VOTUNyaTE0aUwxWHFESEdrczAKLS0tIEFSU09TNUdzZEtjUHJybHBQTit5
23+
SEdIN1l3STdiQWhOVUJEdTZFL2ZVMzgKoK+a6iBQga82hzjQM9tJzlWJ5Uzs8/xG
24+
ONd/JAGdBM4EBQE0fOreK/Pk3MhU+K/c8gSscymGkt91jE6D6dKKPA==
2525
-----END AGE ENCRYPTED FILE-----
2626
- recipient: age1en3a406mje3x7nqpmrth4x9n23fz6mwztmyhmtn3fqyrkl25avgqfwghcd
2727
enc: |
2828
-----BEGIN AGE ENCRYPTED FILE-----
29-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2L3ZpZ0ZGWTc5SjA2YWly
30-
ZHN0eFZqY2U5eUhOMnpQUFZyRW56cXFpVUd3ClhZVVNGOEpkUWs1bVZ1TStZd1lt
31-
SFBsNTFtSUxmR0NzcndHM3RhSTdpa00KLS0tIDJ5bTdpWVB0MHdaTXB0YXlmUE9R
32-
OVhOSmZvZnYrRVVOeVQ2aUhZcWRaMncKfM8N4zntRBnRIJHPIDW2N0Ndt08sQd+h
33-
+QaUuWd2CKTQCY1pMMx3Komrhzrw2lp3ULuvhmcD8l5FSDNJLQAmFQ==
29+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOZFdWMWdnY09jaFhZaUdx
30+
RStSRTRkMzY2WDFpOWlYMFJCYzhoN01vT1hJCnNLMlRYNllCL2lLUmtvTWU2Z3Vy
31+
ZXVYVGpldm1hRzkyQTd4dmRyUkhnN2MKLS0tIGRMV0h2SkhSdGpwMkkzeHB3QndR
32+
MnhJL0ErOVdTdGFqSThEcXJHWHhqdkEKc7sW7I+p/u9vVHvj9AEEjYt5MkSvT/Yl
33+
FHeBSklStYH2/pvZunwVdovYCLvNCNCXa19FFWmOFPMWVDW2L94kAA==
3434
-----END AGE ENCRYPTED FILE-----
3535
- recipient: age1sdpel8lnp90e43a7nag7p44mkpuglf5mg0f0ccq4kr9pvxmdkfpqznvu2r
3636
enc: |
3737
-----BEGIN AGE ENCRYPTED FILE-----
38-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2WmF3ZDFIMVFKcjhVMkRH
39-
dktva2ltb3JBRHhNbm1CMGxRWXNYbE9mVXhvCnZpdkNFL1NBdS9zdmpnME9GekxV
40-
ODExc3g5NHMxNGpXalFHeFQwU0Q1NlEKLS0tIEc4Tjc3NTlsSVpoZmdoaHhiQzQx
41-
RG8xckQ5c3RsOTdxaVhDbndwYlFhMjgKPFZ10F35NrFlNA8CDN7eUovb4LkhRcTN
42-
warJOipYXSGPDe33TREA8eGMDjasMRaySkxAPx5oPF7HSXxLkRE+Lw==
38+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVMWxCY3pzYXpUTWZpWXQr
39+
bFJOQkhrNVJHNWViVVJPVy9ob3ZSd3RNdzBBCllNeDA0K0dsNzFsS2daOVY4K0gz
40+
UnhhR0M3d2RBY0V0MllTVUFRTkw1VUUKLS0tIFh3b2tlYTVOU1g5em9WT3RlYTl4
41+
d1lyb0VBZXpaR0FCMnlsVVZtQU5HK00KNEXhewTO8FTaoDrukQWDmTeUzLen5oAS
42+
yrc8KWWJhBnnounqnrNVWtOq7gSEGo70O0V5dGtXWVsPI1lqXVXifg==
4343
-----END AGE ENCRYPTED FILE-----
4444
- recipient: age1n52ec7jk26u40rx3c858s9udwp603s24af05h8jpc4h5zqr95uzs86t9w7
4545
enc: |
4646
-----BEGIN AGE ENCRYPTED FILE-----
47-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBINGZnRnhXTm13MFNVSEVC
48-
VVRPSTdUUm9ZbVpkYjZyVG45TjYwYVZCMm5RCll4OWIxbEZ0UzV3OWI4WU0vSkJa
49-
Y1ErSHdzTEEvYVdGK0lrZU1ncW15clEKLS0tIFRPdXBiRkRuWjN3MXRlMWYvTlFr
50-
aUFvYjI1SW84eHhKMmZOUzlLRXFRRm8KkGrfMifisdXhk0IL2d52L7WvBEyLWDUB
51-
FVW6hDgJtiqku/gF9wauSFevlARlTxQrY966eNltkAXB99wfVugiMQ==
47+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGMmhmRFFRVWVacjlJcTU5
48+
YmlydHZ4TFplZisrRm1kT1BZSS9QWWFtbWhNCjBjaDhzeVhWWStnVVVud3J6UVRI
49+
cVNxbnVXSGl2djRpSUErRzlpZ3NWS2sKLS0tIDVqZ3cxbjFvaVN1Z3BmbVAxSGFW
50+
amMxNmx4SXZRRm41a0dSZjV2TXNwSlEKo9QiAz6Gdzz13pKa9N9C99vgvxLMeBQt
51+
nUimjbUxShvKyBY+HIIXojpMKuwvEiQiEGD9ZpR0zqADiaUT7rWd2A==
5252
-----END AGE ENCRYPTED FILE-----
5353
- recipient: age1l5pkxrftt3e25kny6l8xllw53uh6almh9usv8x9h67g82k7q63ss8daq5e
5454
enc: |
5555
-----BEGIN AGE ENCRYPTED FILE-----
56-
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvWkEzWkhXRjRucHNtQlRH
57-
ZHk5NUZRK1dzTzdJMHVORFNYQktkZGpLelh3CnRCRUtnRXdkV2t1eXkxYWpEY1FI
58-
Uk5ObStkbUlIelo5TnRmVGljb3lWLzgKLS0tIENMdXMyR0N6SHlDM2RhYVpsKzRH
59-
UmlOc3ZTMUxmWkh0bS9SbkNiaFBGQzQKZBThXRCZ8ALKUKYuOb1GyY6HJ+XyNY4I
60-
j4Ggp2TeBuP3Pnyge5vRGj40V4BBquPJcXzTXrWTKrYvxnQ+kqFR/A==
56+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUU1dlZUNWejNmSm5ZQlNh
57+
SmVRcXRRMk43L0dhWGNHTHRZK2J1S004VkZNCmo5L2VZb1pseUhyYjhudHdubko3
58+
cXlIZnJLVFI4eExGNXBYM0h4akNBZFEKLS0tIEpValM0RmREdTV0MThUNnhrYU1k
59+
NldqSjFiTENkQXhIVEI5MzNqd0Z2L3cK0ZVytCzpI1XgieNMCw6YJDlFzh2W24xz
60+
jMZ+xT6tsNCxiRbCvCoWrQO8apvPmnFX96YjM+dRuXPP3cnyMXJuHg==
61+
-----END AGE ENCRYPTED FILE-----
62+
- recipient: age1z94tzmzngntrkn32jm4283m2fwhhw73q8gghawld4vya7a6jtafsyznmnk
63+
enc: |
64+
-----BEGIN AGE ENCRYPTED FILE-----
65+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhcDdFa250QUwreWRPbDBl
66+
UHhtVWtGakRsR1EyVkp0cXRWWFhqMlNLQVhzCmt3cHpNeWRhWU1rWTE2YXd5bTBS
67+
YjFEMmRPMldaVjJ2MEVHUDlieCtROU0KLS0tIDIxNXo5NmIxWnV0V2VnZndEbU91
68+
MEFsLzJ5L1ZLakNkdnAzVnZYbFE2WlkKnDKUuoVXtheKiiICGzeRE5EBnhksqXfa
69+
tSbhK41I2CGO+xxE0FX56Zv8LkTAkM7JhQas1ng1bz0JrjM6jsScQA==
6170
-----END AGE ENCRYPTED FILE-----
6271
lastmodified: "2022-12-21T21:37:30Z"
6372
mac: ENC[AES256_GCM,data:l2EOMri3OomkTa6qeRYAEa6Gm3cB5dj9fzKk5thy4DqfIYScxPwS2M/h3j7gxhqKwB70ctzShpCxr6MOB6ScQlsA7QOYD02fMECvzj4Cov05mMzd7kfmHEGiUCeecCaA0d2Hg8V0ViZG5UzxdHAn1iI1WIctVMosyNDLaB7985c=,iv:4m2cWwbpfimm1eVcxlw2/wlB7n7jmzSeIoiQWhDnE0s=,tag:goaw5rusPmN16SCRPxaA7g==,type:str]

terraform/configurations/hetzner/main.nix

+21
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,25 @@ in {
7777
"\${hcloud_server.huginn.id}"
7878
];
7979
};
80+
81+
### NFS
82+
83+
resource.hcloud_server.alex = {
84+
name = "alex";
85+
86+
inherit server_type location image;
87+
inherit public_net;
88+
};
89+
90+
resource.hcloud_volume.persist = {
91+
name = "persist";
92+
size = 50;
93+
location = "hil";
94+
};
95+
96+
resource.hcloud_volume_attachment.nfs = {
97+
server_id = "\${hcloud_server.alex.id}";
98+
volume_id = "\${hcloud_volume.persist.id}";
99+
automount = false;
100+
};
80101
}

0 commit comments

Comments
 (0)