Compare commits
1 Commits
c7ee0c1acb
...
vps1
Author | SHA1 | Date | |
---|---|---|---|
d73239251c
|
26
flake.lock
generated
26
flake.lock
generated
@@ -8,11 +8,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703433843,
|
"lastModified": 1703371241,
|
||||||
"narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
|
"narHash": "sha256-f7ZcabJ5iAH2IRfVuI55xSPZ9TbegFzvFxoKtIPNEn8=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "417caa847f9383e111d1397039c9d4337d024bf0",
|
"rev": "457669db4259ff69d1ac1183aaa6000420940c1f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -139,11 +139,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703545041,
|
"lastModified": 1702453208,
|
||||||
"narHash": "sha256-nvQA+k1rSszrf4kA4eK2i/SGbzoXyoKHzzyzq/Jca1w=",
|
"narHash": "sha256-0wRi9SposfE2wHqjuKt8WO2izKB/ASDOV91URunIqgo=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "a15b6e525f5737a47b4ce28445c836996fb2ea8c",
|
"rev": "7763c6fd1f299cb9361ff2abf755ed9619ef01d6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -186,11 +186,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703467016,
|
"lastModified": 1703068421,
|
||||||
"narHash": "sha256-/5A/dNPhbQx/Oa2d+Get174eNI3LERQ7u6WTWOlR1eQ=",
|
"narHash": "sha256-WSw5Faqlw75McIflnl5v7qVD/B3S2sLh+968bpOGrWA=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d02d818f22c777aa4e854efc3242ec451e5d462a",
|
"rev": "d65bceaee0fb1e64363f7871bc43dc1c6ecad99f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -214,11 +214,11 @@
|
|||||||
"secrets": {
|
"secrets": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703545643,
|
"lastModified": 1702936962,
|
||||||
"narHash": "sha256-FS/acsRQ01Gj39P1t5CQ6cKOdwADmenk//vVmpA/EgU=",
|
"narHash": "sha256-uIZ2uPE26JKJ58463ejHMiAOpqBwflyN6tCmZ89vaSQ=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "ef1f91b155f3bdc4efb2824ad0c47b21b8b1bbfa",
|
"rev": "c6db5c3ba8bff0e618fc3e31c9680863c5e53800",
|
||||||
"revCount": 9,
|
"revCount": 5,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://git@git.vimium.com/jordan/nix-secrets.git"
|
"url": "ssh://git@git.vimium.com/jordan/nix-secrets.git"
|
||||||
},
|
},
|
||||||
|
23
flake.nix
23
flake.nix
@@ -68,16 +68,27 @@
|
|||||||
helios = nixosSystem { system = "x86_64-linux"; name = "helios"; };
|
helios = nixosSystem { system = "x86_64-linux"; name = "helios"; };
|
||||||
odyssey = nixosSystem { system = "x86_64-linux"; name = "odyssey"; };
|
odyssey = nixosSystem { system = "x86_64-linux"; name = "odyssey"; };
|
||||||
pi = nixosSystem { system = "aarch64-linux"; name = "pi"; extraModules = [ nixos-hardware.nixosModules.raspberry-pi-4 ]; };
|
pi = nixosSystem { system = "aarch64-linux"; name = "pi"; extraModules = [ nixos-hardware.nixosModules.raspberry-pi-4 ]; };
|
||||||
|
vps1 = nixosSystem { system = "x86_64-linux"; name = "vps1"; };
|
||||||
};
|
};
|
||||||
|
|
||||||
deploy.nodes.pi = {
|
deploy.nodes = {
|
||||||
hostname = "10.0.1.191";
|
pi = {
|
||||||
sshUser = "root";
|
hostname = "10.0.1.191";
|
||||||
|
sshUser = "jordan";
|
||||||
profiles.system = {
|
|
||||||
user = "root";
|
user = "root";
|
||||||
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pi;
|
|
||||||
|
profiles.system = {
|
||||||
|
user = "root";
|
||||||
|
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pi;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
vps1 = {
|
||||||
|
magicRollback = true;
|
||||||
|
autoRollback = true;
|
||||||
|
hostname = "vps1.mesh.vimium.net";
|
||||||
|
profiles.system = {
|
||||||
|
user = "root";
|
||||||
|
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.vps1;
|
||||||
};
|
};
|
||||||
|
|
||||||
# checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
# checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -6,19 +6,13 @@
|
|||||||
../desktop.nix
|
../desktop.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot.loader.grub.enable = true;
|
||||||
loader.grub = {
|
boot.loader.grub.device = "/dev/sda";
|
||||||
enable = true;
|
boot.loader.grub.zfsSupport = true;
|
||||||
device = "/dev/sda";
|
|
||||||
zfsSupport = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
networking.hostName = "helios";
|
||||||
hostName = "helios";
|
networking.hostId = "47d23505";
|
||||||
hostId = "47d23505";
|
networking.networkmanager.enable = true;
|
||||||
networkmanager.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.package = pkgs.nixFlakes;
|
nix.package = pkgs.nixFlakes;
|
||||||
nix.extraOptions = ''
|
nix.extraOptions = ''
|
||||||
@@ -46,15 +40,6 @@
|
|||||||
gpg.enable = true;
|
gpg.enable = true;
|
||||||
pass.enable = true;
|
pass.enable = true;
|
||||||
};
|
};
|
||||||
services = {
|
|
||||||
borgmatic = {
|
|
||||||
enable = true;
|
|
||||||
directories = [
|
|
||||||
"/home/jordan/Documents"
|
|
||||||
];
|
|
||||||
repoPath = "ssh://b9cjl9hq@b9cjl9hq.repo.borgbase.com/./repo";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
shell = {
|
shell = {
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
|
@@ -1,11 +1,8 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
let
|
let
|
||||||
snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix {
|
snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix {
|
||||||
kernel = config.boot.kernelPackages.kernel;
|
kernel = config.boot.kernelPackages.kernel;
|
||||||
};
|
};
|
||||||
patched = snd-usb-audio-module.overrideAttrs (prev: {
|
|
||||||
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
|
|
||||||
});
|
|
||||||
upmixConfig = ''
|
upmixConfig = ''
|
||||||
stream.properties = {
|
stream.properties = {
|
||||||
channelmix.upmix = true
|
channelmix.upmix = true
|
||||||
@@ -13,9 +10,10 @@ let
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
boot.kernelModules = [ "snd-usb-audio" ];
|
|
||||||
boot.extraModulePackages = [
|
boot.extraModulePackages = [
|
||||||
(patched)
|
(snd-usb-audio-module.overrideAttrs (_: {
|
||||||
|
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
|
||||||
|
}))
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
|
@@ -52,6 +52,34 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
age.secrets."passwords/services/borg/odyssey-passphrase" = {
|
||||||
|
file = "${inputs.secrets}/passwords/services/borg/odyssey-passphrase.age";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
source_directories = [
|
||||||
|
"/home/jordan/Documents"
|
||||||
|
];
|
||||||
|
repositories = [
|
||||||
|
{ label = "borgbase"; path = "ssh://iqwu22oq@iqwu22oq.repo.borgbase.com/./repo"; }
|
||||||
|
];
|
||||||
|
storage = {
|
||||||
|
encryption_passcommand = "cat ${config.age.secrets."passwords/services/borg/odyssey-passphrase".path}";
|
||||||
|
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
|
||||||
|
};
|
||||||
|
retention = {
|
||||||
|
keep_daily = 7;
|
||||||
|
keep_weekly = 4;
|
||||||
|
keep_monthly = 6;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Without this override, `cat` is unavailable for `encryption_passcommand`
|
||||||
|
systemd.services.borgmatic.confinement.fullUnit = true;
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
desktop = {
|
desktop = {
|
||||||
apps.qbittorrent.enable = true;
|
apps.qbittorrent.enable = true;
|
||||||
@@ -83,15 +111,6 @@
|
|||||||
gpg.enable = true;
|
gpg.enable = true;
|
||||||
pass.enable = true;
|
pass.enable = true;
|
||||||
};
|
};
|
||||||
services = {
|
|
||||||
borgmatic = {
|
|
||||||
enable = true;
|
|
||||||
directories = [
|
|
||||||
"/home/jordan/Documents"
|
|
||||||
];
|
|
||||||
repoPath = "ssh://iqwu22oq@iqwu22oq.repo.borgbase.com/./repo";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
shell = {
|
shell = {
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
|
@@ -64,9 +64,5 @@
|
|||||||
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.apfs-fuse
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
}
|
}
|
||||||
|
@@ -17,59 +17,8 @@
|
|||||||
};
|
};
|
||||||
deviceTree = {
|
deviceTree = {
|
||||||
enable = true;
|
enable = true;
|
||||||
filter = "*rpi-4-*.dtb";
|
|
||||||
overlays = [
|
overlays = [
|
||||||
{
|
{ name = "hifiberry-digi-pro"; dtboFile = "${pkgs.device-tree_rpi.overlays}/hifiberry-digi-pro.dtbo"; }
|
||||||
# Adapted from: https://github.com/raspberrypi/linux/blob/rpi-6.1.y/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
|
|
||||||
# changes:
|
|
||||||
# - modified top-level "compatible" field from bcm2835 to bcm2711
|
|
||||||
# - s/i2s_clk_consumer/i2s/ (name on bcm2711 platform)
|
|
||||||
name = "hifiberry-digi-pro";
|
|
||||||
dtsText = ''
|
|
||||||
/dts-v1/;
|
|
||||||
/plugin/;
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "brcm,bcm2711";
|
|
||||||
|
|
||||||
fragment@0 {
|
|
||||||
target = <&i2s>;
|
|
||||||
__overlay__ {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@1 {
|
|
||||||
target = <&i2c1>;
|
|
||||||
__overlay__ {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
wm8804@3b {
|
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
compatible = "wlf,wm8804";
|
|
||||||
reg = <0x3b>;
|
|
||||||
PVDD-supply = <&vdd_3v3_reg>;
|
|
||||||
DVDD-supply = <&vdd_3v3_reg>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@2 {
|
|
||||||
target = <&sound>;
|
|
||||||
__overlay__ {
|
|
||||||
compatible = "hifiberry,hifiberry-digi";
|
|
||||||
i2s-controller = <&i2s>;
|
|
||||||
status = "okay";
|
|
||||||
clock44-gpio = <&gpio 5 0>;
|
|
||||||
clock48-gpio = <&gpio 6 0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
firmware = with pkgs; [
|
firmware = with pkgs; [
|
||||||
@@ -80,6 +29,21 @@
|
|||||||
|
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
|
|
||||||
|
age.secrets."passwords/networks.age" = {
|
||||||
|
file = "${inputs.secrets}/passwords/networks.age";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
wireless = {
|
||||||
|
enable = true;
|
||||||
|
interfaces = [ "wlan0" ];
|
||||||
|
environmentFile = config.age.secrets."passwords/networks.age".path;
|
||||||
|
networks = {
|
||||||
|
"Apollo 600 Mbps".psk = "@PSK_APOLLO@";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -144,25 +108,35 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = {
|
age.secrets."passwords/services/borg/pi-passphrase" = {
|
||||||
networking = {
|
file = "${inputs.secrets}/passwords/services/borg/pi-passphrase.age";
|
||||||
wireless = {
|
};
|
||||||
enable = true;
|
|
||||||
interfaces = [ "wlan0" ];
|
services.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
source_directories = [
|
||||||
|
"/var/lib/mosquitto"
|
||||||
|
"/var/lib/zigbee2mqtt"
|
||||||
|
];
|
||||||
|
repositories = [
|
||||||
|
{ label = "borgbase"; path = "ssh://qcw86s11@qcw86s11.repo.borgbase.com/./repo"; }
|
||||||
|
];
|
||||||
|
storage = {
|
||||||
|
encryption_passcommand = "cat ${config.age.secrets."passwords/services/borg/pi-passphrase".path}";
|
||||||
|
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
|
||||||
};
|
};
|
||||||
};
|
retention = {
|
||||||
services = {
|
keep_daily = 7;
|
||||||
borgmatic = {
|
keep_weekly = 4;
|
||||||
enable = true;
|
keep_monthly = 6;
|
||||||
directories = [
|
|
||||||
"/var/lib/mosquitto"
|
|
||||||
"/var/lib/zigbee2mqtt"
|
|
||||||
];
|
|
||||||
repoPath = "ssh://qcw86s11@qcw86s11.repo.borgbase.com/./repo";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Without this override, `cat` is unavailable for `encryption_passcommand`
|
||||||
|
systemd.services.borgmatic.confinement.fullUnit = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
libraspberrypi
|
libraspberrypi
|
||||||
raspberrypi-eeprom
|
raspberrypi-eeprom
|
||||||
|
17
hosts/vps1/README.md
Normal file
17
hosts/vps1/README.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# vps1
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
VPS hosted in OVH.
|
||||||
|
|
||||||
|
## Specs
|
||||||
|
* CPU - ??
|
||||||
|
* Memory - ??
|
||||||
|
|
||||||
|
### Disks
|
||||||
|
Device | Partitions _(filesystem, usage)_
|
||||||
|
--- | ---
|
||||||
|
NVMe | `/dev/sda1` (ext4, NixOS Root)
|
||||||
|
|
||||||
|
### Networks
|
||||||
|
- DHCP on `10.0.1.0/24` subnet.
|
||||||
|
- Tailscale on `100.64.0.0/10` subnet. FQDN: `vps1.mesh.vimium.net`.
|
195
hosts/vps1/default.nix
Normal file
195
hosts/vps1/default.nix
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../server.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostId = "???";
|
||||||
|
hostName = "vps1";
|
||||||
|
domain = "mesh.vimium.net";
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [
|
||||||
|
22 # SSH
|
||||||
|
8448 # Matrix federation
|
||||||
|
80 # HTTP
|
||||||
|
443 # HTTPS
|
||||||
|
5349 # STUN TLS
|
||||||
|
5350 # STUN TLS alt
|
||||||
|
];
|
||||||
|
allowedUDPPortRanges = [
|
||||||
|
{ from = 49152; to = 49999; } # TURN relay
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users = {
|
||||||
|
git = {
|
||||||
|
isSystemUser = true;
|
||||||
|
useDefaultShell = true;
|
||||||
|
group = "git";
|
||||||
|
extraGroups = [ "gitea" ];
|
||||||
|
home = config.services.gitea.stateDir;
|
||||||
|
};
|
||||||
|
jellyfin = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "jellyfin";
|
||||||
|
shell = "/bin/sh";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaaS+KMAEAymZhIJGC4LK8aMhUzhpmloUgvP2cxeBH4 jellyfin"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVHTjsyMIV4THNw6yz0OxAxGnC+41gX72UrPqTzR+OS jordan@vimium.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups = {
|
||||||
|
git = { };
|
||||||
|
jellyfin = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets."passwords/services/borg/vps1-passphrase" = {
|
||||||
|
file = "${inputs.secrets}/passwords/services/borg/vps1-passphrase.age";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.borgmatic = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
source_directories = [
|
||||||
|
"/home"
|
||||||
|
"/var/lib"
|
||||||
|
"/var/www"
|
||||||
|
];
|
||||||
|
repositories = [
|
||||||
|
{ label = "borgbase"; path = "ssh://p91y8oh7@p91y8oh7.repo.borgbase.com/./repo"; }
|
||||||
|
];
|
||||||
|
storage = {
|
||||||
|
encryption_passcommand = "cat ${config.age.secrets."passwords/services/borg/vps1-passphrase".path}";
|
||||||
|
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
|
||||||
|
};
|
||||||
|
retention = {
|
||||||
|
keep_daily = 7;
|
||||||
|
keep_weekly = 4;
|
||||||
|
keep_monthly = 6;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Without this override, `cat` is unavailable for `encryption_passcommand`
|
||||||
|
systemd.services.borgmatic.confinement.fullUnit = true;
|
||||||
|
|
||||||
|
age.secrets."passwords/services/coturn/shared-secret" = {
|
||||||
|
file = "${inputs.secrets}/passwords/services/coturn/shared-secret.age";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.coturn = {
|
||||||
|
enable = true;
|
||||||
|
lt-cred-mech = true;
|
||||||
|
use-auth-secret = true;
|
||||||
|
static-auth-secret = "???";
|
||||||
|
realm = "turn.vimium.com";
|
||||||
|
relay-ips = [
|
||||||
|
"198.244.190.160"
|
||||||
|
];
|
||||||
|
no-tcp-relay = true;
|
||||||
|
extraConfig = ''
|
||||||
|
cipher-list="HIGH"
|
||||||
|
no-loopback-peers
|
||||||
|
no-multicast-peers
|
||||||
|
'';
|
||||||
|
secure-stun = true;
|
||||||
|
cert = "/var/lib/acme/turn.vimium.com/fullchain.pem";
|
||||||
|
pkey = "/var/lib/acme/turn.vimium.com/key.pem";
|
||||||
|
min-port = 49152;
|
||||||
|
max-port = 49999;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gitea = rec {
|
||||||
|
package = pkgs.gitea;
|
||||||
|
enable = true;
|
||||||
|
user = "git";
|
||||||
|
appName = "Vimium Git";
|
||||||
|
stateDir = "/var/lib/gitea";
|
||||||
|
repositoryRoot = "${stateDir}/repositories";
|
||||||
|
database = {
|
||||||
|
type = "sqlite3";
|
||||||
|
inherit user;
|
||||||
|
path = "${stateDir}/gitea.db";
|
||||||
|
};
|
||||||
|
lfs = {
|
||||||
|
enable = true;
|
||||||
|
contentDir = "${stateDir}/lfs";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
SSH_USER = "git";
|
||||||
|
SSH_DOMAIN = "git.vimium.com";
|
||||||
|
SSH_PORT = lib.head config.services.openssh.ports;
|
||||||
|
OFFLINE_MODE = true;
|
||||||
|
PROTOCOL = "http+unix";
|
||||||
|
DOMAIN = config.networking.domain;
|
||||||
|
ROOT_URL = "https://git.vimium.com/";
|
||||||
|
};
|
||||||
|
service.DISABLE_REGISTRATION = true;
|
||||||
|
session.COOKIE_SECURE = true;
|
||||||
|
log.ROOT_PATH = "${stateDir}/log";
|
||||||
|
ui = {
|
||||||
|
THEMES = "gitea,arc-green,github-dark,bthree-dark";
|
||||||
|
DEFAULT_THEME = "github-dark";
|
||||||
|
};
|
||||||
|
actions.ENABLED = true;
|
||||||
|
indexer = {
|
||||||
|
REPO_INDEXER_ENABLED = true;
|
||||||
|
};
|
||||||
|
packages.CHUNKED_UPLOAD_PATH = lib.mkForce "${stateDir}/data/tmp/package-upload";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.headscale = {
|
||||||
|
enable = true;
|
||||||
|
port = 8080;
|
||||||
|
settings = {
|
||||||
|
server_url = "https://headscale.vimium.net";
|
||||||
|
dns_config = {
|
||||||
|
base_domain = "vimium.net";
|
||||||
|
};
|
||||||
|
logtail.enabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.matrix-synapse = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
database.name = "sqlite3";
|
||||||
|
enable_registration = false;
|
||||||
|
server_name = "vimium.com";
|
||||||
|
turn_shared_secret = "???";
|
||||||
|
turn_uris = [
|
||||||
|
"turn:turn.vimium.com:5349?transport=udp"
|
||||||
|
"turn:turn.vimium.com:5350?transport=udp"
|
||||||
|
"turn:turn.vimium.com:5349?transport=tcp"
|
||||||
|
"turn:turn.vimium.com:5350?transport=tcp"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
networking.firewall = {
|
||||||
|
checkReversePath = "loose";
|
||||||
|
trustedInterfaces = [ "tailscale0" ];
|
||||||
|
allowedUDPPorts = [ config.services.tailscale.port ];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
config.services.headscale.package
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "22.11";
|
||||||
|
}
|
||||||
|
|
26
hosts/vps1/hardware-configuration.nix
Normal file
26
hosts/vps1/hardware-configuration.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi" ];
|
||||||
|
kernelModules = [ "nvme" ];
|
||||||
|
};
|
||||||
|
loader.grub.device = "/dev/sda";
|
||||||
|
tmp.cleanOnBoot = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
zramSwap.enable = true;
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"/" = {
|
||||||
|
device = "/dev/sda1";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@@ -26,10 +26,8 @@
|
|||||||
./editors/neovim
|
./editors/neovim
|
||||||
./editors/vscode.nix
|
./editors/vscode.nix
|
||||||
./networking/tailscale.nix
|
./networking/tailscale.nix
|
||||||
./networking/wireless.nix
|
|
||||||
./security/gpg.nix
|
./security/gpg.nix
|
||||||
./security/pass.nix
|
./security/pass.nix
|
||||||
./services/borgmatic
|
|
||||||
./shell/git
|
./shell/git
|
||||||
./shell/zsh
|
./shell/zsh
|
||||||
];
|
];
|
||||||
|
@@ -1,36 +0,0 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let cfg = config.modules.networking.wireless;
|
|
||||||
in {
|
|
||||||
options.modules.networking.wireless = {
|
|
||||||
enable = mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = mdDoc "Automatically connect to known networks";
|
|
||||||
};
|
|
||||||
interfaces = mkOption {
|
|
||||||
default = [ ]; # All interfaces
|
|
||||||
example = [ "wlan0" ];
|
|
||||||
description = mdDoc "Interfaces for `wpa_supplicant` to bind to";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
age.secrets."passwords/networks" = {
|
|
||||||
file = "${inputs.secrets}/passwords/networks.age";
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
wireless = {
|
|
||||||
enable = true;
|
|
||||||
interfaces = cfg.interfaces;
|
|
||||||
environmentFile = config.age.secrets."passwords/networks".path;
|
|
||||||
networks = {
|
|
||||||
"Apollo 600 Mbps".psk = "@PSK_APOLLO@";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@@ -1,57 +0,0 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.services.borgmatic;
|
|
||||||
hostname = config.networking.hostName;
|
|
||||||
in {
|
|
||||||
options.modules.services.borgmatic = {
|
|
||||||
enable = mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = mdDoc "Enable backups on this host with `borgmatic`";
|
|
||||||
};
|
|
||||||
directories = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
default = [];
|
|
||||||
example = [
|
|
||||||
"/home/jordan/Documents"
|
|
||||||
];
|
|
||||||
description = mdDoc "List of directories to backup";
|
|
||||||
};
|
|
||||||
repoPath = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "ssh://example@example.repo.borgbase.com/./repo";
|
|
||||||
description = mdDoc "Destination borg repository for backup";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
age.secrets."passwords/services/borg/${hostname}-passphrase" = {
|
|
||||||
file = "${inputs.secrets}/passwords/services/borg/${hostname}-passphrase.age";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.borgmatic = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
source_directories = cfg.directories;
|
|
||||||
repositories = [
|
|
||||||
{ label = "borgbase"; path = cfg.repoPath; }
|
|
||||||
];
|
|
||||||
storage = {
|
|
||||||
encryption_passcommand = "cat ${config.age.secrets."passwords/services/borg/${hostname}-passphrase".path}";
|
|
||||||
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
|
|
||||||
};
|
|
||||||
retention = {
|
|
||||||
keep_daily = 7;
|
|
||||||
keep_weekly = 4;
|
|
||||||
keep_monthly = 6;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Without this override, `cat` is unavailable for `encryption_passcommand`
|
|
||||||
systemd.services.borgmatic.confinement.fullUnit = true;
|
|
||||||
};
|
|
||||||
}
|
|
Reference in New Issue
Block a user