Nix configurations for my homelab

Switch to nixfmt

yemou.pink 62d7ae6c 7d8ca924

verified
+2 -1
dandelion/config.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
./hardware.nix
./packages.nix
+31 -8
dandelion/hardware.nix
···
-
{ lib, modulesPath, ... }: {
+
{ lib, modulesPath, ... }:
+
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot = {
initrd = {
-
availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
+
availableKernelModules = [
+
"ahci"
+
"xhci_pci"
+
"virtio_pci"
+
"virtio_scsi"
+
"sd_mod"
+
"sr_mod"
+
];
kernelModules = [ ];
};
kernelModules = [ ];
···
"/" = {
device = "none";
fsType = "tmpfs";
-
options = [ "defaults" "mode=755" ];
+
options = [
+
"defaults"
+
"mode=755"
+
];
};
"/nix" = {
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
fsType = "btrfs";
-
options = [ "subvol=@nixos/nix" "compress=zstd" ];
+
options = [
+
"subvol=@nixos/nix"
+
"compress=zstd"
+
];
};
"/config" = {
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
fsType = "btrfs";
-
options = [ "subvol=@nixos/config" "compress=zstd" ];
+
options = [
+
"subvol=@nixos/config"
+
"compress=zstd"
+
];
};
"/data" = {
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
fsType = "btrfs";
-
options = [ "subvol=@nixos/data" "compress=zstd" ];
+
options = [
+
"subvol=@nixos/data"
+
"compress=zstd"
+
];
neededForBoot = true;
};
"/home/mou" = {
device = "/dev/disk/by-uuid/1b032448-bc11-4d13-9f5b-c6e980288325";
fsType = "btrfs";
-
options = [ "subvol=@home/mou" "compress=zstd" ];
+
options = [
+
"subvol=@home/mou"
+
"compress=zstd"
+
];
};
"/boot" = {
device = "/dev/disk/by-uuid/5cde8da8-fe2c-4177-90b3-000c32874610";
···
matchConfig.Name = "enp1s0";
networkConfig.DHCP = "ipv4";
address = [ "2a01:4ff:f0:41c7::1/64" ];
-
routes = [{ Gateway = "fe80::1"; }];
+
routes = [ { Gateway = "fe80::1"; } ];
};
};
+2 -1
dandelion/home.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
../modules/dotfiles.nix
../modules/home.nix
+2 -1
dandelion/packages.nix
···
-
{ ... }: {
+
{ ... }:
+
{
users.users.mou.packages = [ ];
}
+10 -7
dandelion/services/caddy.nix
···
esac
'';
};
-
cpCertsCommand = "${cpCerts}/bin/cpCerts {event.data.identifier} {event.data.certificate_path} "
+
cpCertsCommand =
+
"${cpCerts}/bin/cpCerts {event.data.identifier} {event.data.certificate_path} "
+ "{event.data.private_key_path}";
in
{
-
environment.persistence."/data/persistent".directories = [{
-
directory = "/var/www/org.butwho";
-
user = "mou";
-
group = "caddy";
-
mode = "0750";
-
}];
+
environment.persistence."/data/persistent".directories = [
+
{
+
directory = "/var/www/org.butwho";
+
user = "mou";
+
group = "caddy";
+
mode = "0750";
+
}
+
];
services.caddy = {
package = pkgs.caddy.withPlugins {
+6 -6
flake.lock
···
]
},
"locked": {
-
"lastModified": 1740699498,
-
"narHash": "sha256-r9hkKzX99CGiP1ZqH0e+SWKK4CMsRNRLyotuwrUjhTI=",
+
"lastModified": 1740796616,
+
"narHash": "sha256-JU97wIfRxeFN6rpTsUVCwWAdix+Wka4Or23907YIrFI=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "b71edac7a3167026aabea82a54d08b1794088c21",
+
"rev": "f0b5e7e8a75abdea32bbff09ddd7b6eeb4b9b445",
"type": "github"
},
"original": {
···
"rust-overlay": "rust-overlay"
},
"locked": {
-
"lastModified": 1740781412,
-
"narHash": "sha256-lGrIdImgTyb4YLXCQ7SmUplbC4A04PrgvoA6vguxovs=",
+
"lastModified": 1740797373,
+
"narHash": "sha256-yx91jMqBvaBNKiintUmi2oKN/D8e032UzQ7xLMYyt2k=",
"owner": "roc-lang",
"repo": "roc",
-
"rev": "391dfb402b0ad49890ef04a5659f2f3127e0e067",
+
"rev": "1675a752debb253ebaa507fee50d23bd2f735aa5",
"type": "github"
},
"original": {
+23 -5
flake.nix
···
# nix-affine.url = "path:/data/local-flakes/nix-affine";
};
-
outputs = { self, nixpkgs, impermanence, sops-nix, home-manager, ... }@inputs:
-
let genSystemConfigs = nixpkgs.lib.genAttrs [ "dandelion" "fly-agaric" "lily" "lutea" ]; in {
-
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixpkgs-fmt;
-
nixosConfigurations = genSystemConfigs (hostname:
+
outputs =
+
{
+
self,
+
nixpkgs,
+
impermanence,
+
sops-nix,
+
home-manager,
+
...
+
}@inputs:
+
let
+
genSystemConfigs = nixpkgs.lib.genAttrs [
+
"dandelion"
+
"fly-agaric"
+
"lily"
+
"lutea"
+
];
+
in
+
{
+
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
+
nixosConfigurations = genSystemConfigs (
+
hostname:
nixpkgs.lib.nixosSystem {
specialArgs = inputs;
modules = [
···
};
}
];
-
});
+
}
+
);
};
}
+2 -1
fly-agaric/config.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
./hardware.nix
./packages.nix
+31 -8
fly-agaric/hardware.nix
···
-
{ lib, modulesPath, ... }: {
+
{ lib, modulesPath, ... }:
+
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot = {
initrd = {
-
availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
+
availableKernelModules = [
+
"ahci"
+
"xhci_pci"
+
"virtio_pci"
+
"virtio_scsi"
+
"sd_mod"
+
"sr_mod"
+
];
kernelModules = [ ];
};
kernelModules = [ ];
···
"/" = {
device = "none";
fsType = "tmpfs";
-
options = [ "defaults" "mode=755" ];
+
options = [
+
"defaults"
+
"mode=755"
+
];
};
"/nix" = {
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
fsType = "btrfs";
-
options = [ "subvol=@nixos/nix" "compress=zstd" ];
+
options = [
+
"subvol=@nixos/nix"
+
"compress=zstd"
+
];
};
"/config" = {
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
fsType = "btrfs";
-
options = [ "subvol=@nixos/config" "compress=zstd" ];
+
options = [
+
"subvol=@nixos/config"
+
"compress=zstd"
+
];
};
"/data" = {
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
fsType = "btrfs";
-
options = [ "subvol=@nixos/data" "compress=zstd" ];
+
options = [
+
"subvol=@nixos/data"
+
"compress=zstd"
+
];
neededForBoot = true;
};
"/home/mou" = {
device = "/dev/disk/by-uuid/e224cad1-1ea2-435b-b914-b16eb400cd36";
fsType = "btrfs";
-
options = [ "subvol=@home/mou" "compress=zstd" ];
+
options = [
+
"subvol=@home/mou"
+
"compress=zstd"
+
];
};
"/boot" = {
device = "/dev/disk/by-uuid/00e4dfc3-8bf9-4075-92fa-3da33ef09704";
···
matchConfig.Name = "enp1s0";
networkConfig.DHCP = "ipv4";
address = [ "2a01:4ff:f0:348a::1/64" ];
-
routes = [{ Gateway = "fe80::1"; }];
+
routes = [ { Gateway = "fe80::1"; } ];
};
};
+2 -1
fly-agaric/home.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [ ../modules/home.nix ];
home.stateVersion = "24.05";
}
+2 -1
fly-agaric/packages.nix
···
-
{ ... }: {
+
{ ... }:
+
{
users.users.mou.packages = [ ];
}
+12 -7
lily/config.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
./hardware.nix
./packages.nix
···
];
# TODO: Make the hidden.json public across all hosts to share more info
-
mInfo = let hidden = builtins.fromJSON (builtins.readFile ./hidden.json); in {
-
ipv4 = "192.168.1.92";
-
ipv6 = hidden.ipv6;
-
nb-ipv4 = "100.77.30.206";
-
server = true;
-
};
+
mInfo =
+
let
+
hidden = builtins.fromJSON (builtins.readFile ./hidden.json);
+
in
+
{
+
ipv4 = "192.168.1.92";
+
ipv6 = hidden.ipv6;
+
nb-ipv4 = "100.77.30.206";
+
server = true;
+
};
sops = {
defaultSopsFile = ../secrets/lily.yaml;
+38 -8
lily/hardware.nix
···
-
{ lib, modulesPath, ... }: {
+
{ lib, modulesPath, ... }:
+
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
-
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
+
availableKernelModules = [
+
"xhci_pci"
+
"ahci"
+
"usbhid"
+
"usb_storage"
+
"sd_mod"
+
];
kernelModules = [ ];
};
kernelModules = [ "kvm-intel" ];
···
"/" = {
device = "none";
fsType = "tmpfs";
-
options = [ "defaults" "mode=755" ];
+
options = [
+
"defaults"
+
"mode=755"
+
];
};
"/nix" = {
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
fsType = "btrfs";
-
options = [ "subvol=@nixos/nix" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@nixos/nix"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/config" = {
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
fsType = "btrfs";
-
options = [ "subvol=@nixos/config" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@nixos/config"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/data" = {
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
fsType = "btrfs";
-
options = [ "subvol=@nixos/data" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@nixos/data"
+
"compress=zstd"
+
"discard=async"
+
];
neededForBoot = true;
};
"/home/mou" = {
device = "/dev/disk/by-uuid/f31dac70-545a-41bc-97da-39fabafb2b3b";
fsType = "btrfs";
-
options = [ "subvol=@home/mou" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/boot" = {
device = "/dev/disk/by-uuid/AA21-D01C";
fsType = "vfat";
-
options = [ "fmask=0077" "dmask=0077" "defaults" ];
+
options = [
+
"fmask=0077"
+
"dmask=0077"
+
"defaults"
+
];
};
};
+2 -1
lily/home.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
../modules/dotfiles.nix
../modules/home.nix
+2 -1
lily/packages.nix
···
-
{ ... }: {
+
{ ... }:
+
{
users.users.mou.packages = [ ];
}
+2 -1
lily/services/fail2ban.nix
···
-
{ ... }: {
+
{ ... }:
+
{
# Since this server is on my local network, I'm also ignoring my local ip
services.fail2ban.ignoreIP = [ "192.168.1.94" ];
}
+2 -1
lutea/config.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
./hardware.nix
./packages.nix
+15 -2
lutea/hardware.nix
···
-
{ lib, pkgs, modulesPath, ... }: {
+
{
+
lib,
+
pkgs,
+
modulesPath,
+
...
+
}:
+
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
../modules/mounts.nix
···
boot = {
initrd = {
-
availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
+
availableKernelModules = [
+
"xhci_pci"
+
"ahci"
+
"nvme"
+
"usbhid"
+
"usb_storage"
+
"sd_mod"
+
];
kernelModules = [ ];
};
kernel.sysctl."vm.max_map_count" = 2147483642;
+2 -1
lutea/home.nix
···
-
{ config, ... }: {
+
{ config, ... }:
+
{
home = {
username = "mou";
homeDirectory = "/home/${config.home.username}";
+2 -1
lutea/packages.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
programs.virt-manager.enable = true;
users.users.mou.packages = with pkgs; [ intel-gpu-tools ];
}
+2 -1
modules/audio.nix
···
-
{ ... }: {
+
{ ... }:
+
{
security.rtkit.enable = true;
services.pipewire = {
enable = true;
+21 -4
modules/basic.nix
···
-
{ config, pkgs, yemou-scripts, ... }: {
+
{
+
config,
+
pkgs,
+
yemou-scripts,
+
...
+
}:
+
{
nixpkgs.overlays = [ yemou-scripts.overlays.default ];
sops.secrets = {
···
"/var/log"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
-
{ directory = "/var/lib/private"; mode = "0700"; }
+
{
+
directory = "/var/lib/private";
+
mode = "0700";
+
}
];
};
sessionVariables = {
···
systemd.network.enable = true;
networking = {
useNetworkd = true;
-
nameservers = [ "9.9.9.9" "149.112.112.112" "2620:fe::fe" "2620:fe::9" ];
+
nameservers = [
+
"9.9.9.9"
+
"149.112.112.112"
+
"2620:fe::fe"
+
"2620:fe::9"
+
];
};
users = {
···
mou = {
isNormalUser = true;
group = "mou";
-
extraGroups = [ "users" "wheel" ];
+
extraGroups = [
+
"users"
+
"wheel"
+
];
shell = pkgs.loksh;
hashedPasswordFile = config.sops.secrets."passwordHashes/mou".path;
};
+2 -1
modules/binary-cache.nix
···
-
{ config, lib, ... }: {
+
{ config, lib, ... }:
+
{
nix = {
settings = {
substituters = [
+2 -1
modules/browsers.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
imports = [ ./unfree.nix ];
unfree.allowed = [ "microsoft-edge" ];
+3 -2
modules/cloud-storage.nix
···
-
{ pkgs, ... }: {
-
users.users.mou.packages = with pkgs;[ nextcloud-client ];
+
{ pkgs, ... }:
+
{
+
users.users.mou.packages = with pkgs; [ nextcloud-client ];
}
+2 -1
modules/creation.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ inkscape ];
}
+7 -2
modules/development/c.nix
···
-
{ pkgs, ... }: {
-
users.users.mou.packages = with pkgs; [ bear clang-tools gdb ];
+
{ pkgs, ... }:
+
{
+
users.users.mou.packages = with pkgs; [
+
bear
+
clang-tools
+
gdb
+
];
}
+2 -2
modules/development/default.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [
./c.nix
./go.nix
···
./zig.nix
];
}
-
+2 -1
modules/development/go.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ gopls ];
}
+6 -2
modules/development/nix.nix
···
-
{ pkgs, ... }: {
-
users.users.mou.packages = with pkgs; [ nixd nixpkgs-fmt ];
+
{ pkgs, ... }:
+
{
+
users.users.mou.packages = with pkgs; [
+
nixd
+
nixfmt-rfc-style
+
];
}
+2 -1
modules/development/python.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ ruff ];
}
+6 -2
modules/development/roc.nix
···
-
{ pkgs, roc-lang, ... }: {
+
{ pkgs, roc-lang, ... }:
+
{
nixpkgs.overlays = [
(final: prev: {
roc = roc-lang.packages.${prev.system}.default;
···
})
];
-
users.users.mou.packages = with pkgs; [ roc roc-lang-server ];
+
users.users.mou.packages = with pkgs; [
+
roc
+
roc-lang-server
+
];
}
+2 -1
modules/development/sh.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ shellcheck ];
}
+2 -2
modules/development/sqlite.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ sqlitebrowser ];
}
-
+2 -1
modules/development/typst.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [
tinymist
typst
+2 -1
modules/development/zig.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ zls ];
}
+6 -2
modules/dotfiles.nix
···
-
{ yemou-dotfiles, ... }: {
+
{ yemou-dotfiles, ... }:
+
{
home.file.".ssh/allowed_signers".source = "${yemou-dotfiles}/ssh/allowed_signers";
xdg.configFile = {
"git".source = "${yemou-dotfiles}/config/git";
-
"kak" = { recursive = true; source = "${yemou-dotfiles}/config/kak"; };
+
"kak" = {
+
recursive = true;
+
source = "${yemou-dotfiles}/config/kak";
+
};
"loksh".source = "${yemou-dotfiles}/config/loksh";
"thm".source = "${yemou-dotfiles}/config/thm";
};
+16 -13
modules/editor.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
nixpkgs.overlays = [
(final: prev: {
-
kakoune-unwrapped = prev.kakoune-unwrapped.overrideAttrs (finalAttrs: prevAttrs: {
-
patches = (prevAttrs.patches or [ ]) ++ [
-
(pkgs.fetchpatch {
-
url = "https://patch-diff.githubusercontent.com/raw/mawww/kakoune/pull/5183.patch";
-
hash = "sha256-XEU9pJybAuVuh+/euL6UY+65reXeUUbI2vvI/4Ao9ug=";
-
})
-
(pkgs.fetchpatch {
-
url = "https://github.com/yemouu/kakoune/commit/15d4f7585fdac03e460e59b0508aecd636bd2660.patch";
-
hash = "sha256-v7JvtEQ/XrXnFx77kseP2LPJv93GGywP/N4wVyISu8g=";
-
})
-
];
-
});
+
kakoune-unwrapped = prev.kakoune-unwrapped.overrideAttrs (
+
finalAttrs: prevAttrs: {
+
patches = (prevAttrs.patches or [ ]) ++ [
+
(pkgs.fetchpatch {
+
url = "https://patch-diff.githubusercontent.com/raw/mawww/kakoune/pull/5183.patch";
+
hash = "sha256-XEU9pJybAuVuh+/euL6UY+65reXeUUbI2vvI/4Ao9ug=";
+
})
+
(pkgs.fetchpatch {
+
url = "https://github.com/yemouu/kakoune/commit/15d4f7585fdac03e460e59b0508aecd636bd2660.patch";
+
hash = "sha256-v7JvtEQ/XrXnFx77kseP2LPJv93GGywP/N4wVyISu8g=";
+
})
+
];
+
}
+
);
})
];
+5 -2
modules/email.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
nixpkgs.overlays = [
-
(final: prev: { sieve-editor-gui = prev.sieve-editor-gui.override { electron = final.electron-bin; }; })
+
(final: prev: {
+
sieve-editor-gui = prev.sieve-editor-gui.override { electron = final.electron-bin; };
+
})
];
users.users.mou.packages = with pkgs; [
+2 -1
modules/fail2ban.nix
···
-
{ ... }: {
+
{ ... }:
+
{
environment.persistence."/data/persistent".directories = [ "/var/lib/fail2ban" ];
services.fail2ban = {
+2 -1
modules/flatpak.nix
···
-
{ ... }: {
+
{ ... }:
+
{
environment.persistence."/data/persistent".directories = [ "/var/lib/flatpak" ];
services.flatpak.enable = true;
}
+2 -1
modules/fonts.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
+2 -1
modules/fwupd.nix
···
-
{ ... }: {
+
{ ... }:
+
{
services.fwupd.enable = true;
}
+65 -55
modules/games.nix
···
-
{ lib, pkgs, ... }: {
+
{ lib, pkgs, ... }:
+
{
imports = [ ./unfree.nix ];
unfree.allowed = [
"modrinth-app"
···
nixpkgs.overlays = [
(final: prev: {
-
extest = prev.extest.overrideAttrs (finalAttrs: prevAttrs: {
-
version = "1.0.3";
+
extest = prev.extest.overrideAttrs (
+
finalAttrs: prevAttrs: {
+
version = "1.0.3";
-
src = prev.fetchFromGitHub {
-
owner = "Supreeeme";
-
repo = "extest";
-
rev = "1a419a1691c6accaafef6cfc962a06712d4658e9";
-
hash = "sha256-q0BqvdIdcUARGmaPOnzPVLtcWFHJeZ9t2jcfYxS0KTk=";
-
};
+
src = prev.fetchFromGitHub {
+
owner = "Supreeeme";
+
repo = "extest";
+
rev = "1a419a1691c6accaafef6cfc962a06712d4658e9";
+
hash = "sha256-q0BqvdIdcUARGmaPOnzPVLtcWFHJeZ9t2jcfYxS0KTk=";
+
};
-
cargoDeps = prev.rustPlatform.fetchCargoVendor {
-
src = finalAttrs.src;
-
hash = "sha256-J9HuZwZ3UYyW2unFxBeap80yPCvdVGQ7pfsdI9qU3QE=";
-
};
-
});
+
cargoDeps = prev.rustPlatform.fetchCargoVendor {
+
src = finalAttrs.src;
+
hash = "sha256-J9HuZwZ3UYyW2unFxBeap80yPCvdVGQ7pfsdI9qU3QE=";
+
};
+
}
+
);
-
mesa = prev.mesa.overrideAttrs (finalAttrs: prevAttrs: {
-
git-hash = "7276191d5944b4c3d5a272a4a07274933fac4346";
-
version = "25.0.0-${finalAttrs.git-hash}";
+
mesa = prev.mesa.overrideAttrs (
+
finalAttrs: prevAttrs: {
+
git-hash = "7276191d5944b4c3d5a272a4a07274933fac4346";
+
version = "25.0.0-${finalAttrs.git-hash}";
-
src = prev.fetchFromGitLab {
-
domain = "gitlab.freedesktop.org";
-
owner = "mesa";
-
repo = "mesa";
-
rev = "${finalAttrs.git-hash}";
-
hash = "sha256-y9bktQUXEf8VCrQPYcMsD5/1bC5sgK0vhRQJkc1DfE0=";
-
};
+
src = prev.fetchFromGitLab {
+
domain = "gitlab.freedesktop.org";
+
owner = "mesa";
+
repo = "mesa";
+
rev = "${finalAttrs.git-hash}";
+
hash = "sha256-y9bktQUXEf8VCrQPYcMsD5/1bC5sgK0vhRQJkc1DfE0=";
+
};
-
# patches = lib.lists.take 1 prevAttrs.patches;
-
patches = [ ./packages/mesa/opencl.patch ];
-
mesonFlags = lib.lists.remove (lib.mesonBool "opencl-spirv" true) prevAttrs.mesonFlags;
-
});
+
# patches = lib.lists.take 1 prevAttrs.patches;
+
patches = [ ./packages/mesa/opencl.patch ];
+
mesonFlags = lib.lists.remove (lib.mesonBool "opencl-spirv" true) prevAttrs.mesonFlags;
+
}
+
);
r2modman = prev.r2modman.override { electron = prev.electron-bin; };
···
in
(prev.rpcs3.override {
llvm_16 = prev.llvm_18;
-
pugixml = prev.pugixml.overrideAttrs (finalAttrs: prevAttrs: {
-
version = "1.15";
-
src = prev.fetchFromGitHub {
-
owner = "zeux";
-
repo = "pugixml";
-
rev = "v${finalAttrs.version}";
-
sha256 = "sha256-t/57lg32KgKPc7qRGQtO/GOwHRqoj78lllSaE/A8Z9Q=";
-
};
-
});
-
}).overrideAttrs (finalAttrs: prevAttrs: {
-
version = rpcs3Version;
+
pugixml = prev.pugixml.overrideAttrs (
+
finalAttrs: prevAttrs: {
+
version = "1.15";
+
src = prev.fetchFromGitHub {
+
owner = "zeux";
+
repo = "pugixml";
+
rev = "v${finalAttrs.version}";
+
sha256 = "sha256-t/57lg32KgKPc7qRGQtO/GOwHRqoj78lllSaE/A8Z9Q=";
+
};
+
}
+
);
+
}).overrideAttrs
+
(
+
finalAttrs: prevAttrs: {
+
version = rpcs3Version;
-
src = prev.fetchFromGitHub {
-
owner = "RPCS3";
-
repo = "rpcs3";
-
rev = rpcs3Revision;
-
fetchSubmodules = true;
-
hash = rpcs3Hash;
-
};
+
src = prev.fetchFromGitHub {
+
owner = "RPCS3";
+
repo = "rpcs3";
+
rev = rpcs3Revision;
+
fetchSubmodules = true;
+
hash = rpcs3Hash;
+
};
-
preConfigure = ''
-
cat > ./rpcs3/git-version.h <<EOF
-
#define RPCS3_GIT_VERSION "${rpcs3GitVersion}"
-
#define RPCS3_GIT_FULL_BRANCH "RPCS3/rpcs3/master"
-
#define RPCS3_GIT_BRANCH "HEAD"
-
#define RPCS3_GIT_VERSION_NO_UPDATE 1
-
EOF
-
'';
-
});
+
preConfigure = ''
+
cat > ./rpcs3/git-version.h <<EOF
+
#define RPCS3_GIT_VERSION "${rpcs3GitVersion}"
+
#define RPCS3_GIT_FULL_BRANCH "RPCS3/rpcs3/master"
+
#define RPCS3_GIT_BRANCH "HEAD"
+
#define RPCS3_GIT_VERSION_NO_UPDATE 1
+
EOF
+
'';
+
}
+
);
})
];
+31 -17
modules/gui.nix
···
-
{ lib, pkgs, yemou-scripts, ... }: {
+
{
+
lib,
+
pkgs,
+
yemou-scripts,
+
...
+
}:
+
{
nixpkgs.overlays = [
yemou-scripts.overlays.default
(final: prev: {
-
nautilus = prev.nautilus.overrideAttrs (finalAttrs: prevAttrs: {
-
postInstall = (prevAttrs.postInstall or "") + ''
-
mkdir -p $out/share/xdg-desktop-portal/portals
-
cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <<EOF
-
[portal]
-
DBusName=org.gnome.Nautilus
-
Interfaces=org.freedesktop.impl.portal.FileChooser
-
EOF
-
'';
-
});
+
nautilus = prev.nautilus.overrideAttrs (
+
finalAttrs: prevAttrs: {
+
postInstall =
+
(prevAttrs.postInstall or "")
+
+ ''
+
mkdir -p $out/share/xdg-desktop-portal/portals
+
cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <<EOF
+
[portal]
+
DBusName=org.gnome.Nautilus
+
Interfaces=org.freedesktop.impl.portal.FileChooser
+
EOF
+
'';
+
}
+
);
})
];
···
dconf.enable = true;
river = {
enable = true;
-
package = pkgs.river.overrideAttrs (final: prev: {
-
postInstall = ''
-
echo 'DesktopNames=river;wlroots' >> contrib/river.desktop
-
'' + prev.postInstall;
-
});
+
package = pkgs.river.overrideAttrs (
+
final: prev: {
+
postInstall =
+
''
+
echo 'DesktopNames=river;wlroots' >> contrib/river.desktop
+
''
+
+ prev.postInstall;
+
}
+
);
# TODO: Move organize these some how
extraPackages = with pkgs; [
bemenu
···
};
# System-wide packages
-
environment. systemPackages = with pkgs; [ adwaita-icon-theme ];
+
environment.systemPackages = with pkgs; [ adwaita-icon-theme ];
# Per-user packages
users.users.mou.packages = with pkgs; [
+2 -1
modules/hardware-keys.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [
yubikey-manager
yubikey-manager-qt
+45 -9
modules/home-mounts.nix
···
"/home/mou/aud" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/aud" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/aud"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/.cache" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/cache" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/cache"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/.config" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/config" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/config"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/dls" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/dls" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/dls"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/doc" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/doc" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/doc"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/.local" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/local" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/local"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/misc" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/misc" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/misc"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/pic" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/pic" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/pic"
+
"compress=zstd"
+
"discard=async"
+
];
};
"/home/mou/vid" = {
device = disk;
fsType = "btrfs";
-
options = [ "subvol=@home/mou/vid" "compress=zstd" "discard=async" ];
+
options = [
+
"subvol=@home/mou/vid"
+
"compress=zstd"
+
"discard=async"
+
];
};
};
+2 -2
modules/home.nix
···
-
{ config, ... }: {
+
{ config, ... }:
+
{
home = {
username = "mou";
homeDirectory = "/home/${config.home.username}";
···
home.stateVersion = "24.05";
}
-
+2 -1
modules/im.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
imports = [ ./unfree.nix ];
unfree.allowed = [ "zoom" ];
+2 -1
modules/kde.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
services = {
desktopManager.plasma6.enable = true;
xserver.enable = true; # Without this set plasma6 will fail to start even when using wayland
+2 -1
modules/machine-id.nix
···
-
{ config, ... }: {
+
{ config, ... }:
+
{
# This needs to be world readable
sops.secrets."machine-id".mode = "0444";
environment.etc."machine-id".source = config.sops.secrets."machine-id".path;
+2 -1
modules/machineInfo.nix
···
-
{ lib, ... }: {
+
{ lib, ... }:
+
{
options.mInfo = {
gui = lib.mkOption {
type = with lib.types; bool;
+52 -28
modules/mounts.nix
···
-
{ ... }: {
-
fileSystems = let disk = "/dev/disk/by-uuid/7bf830d4-189d-4e9b-bcb0-565f4ac69e67"; in {
-
"/" = {
-
device = "none";
-
fsType = "tmpfs";
-
options = [ "defaults" "mode=755" ];
-
};
-
"/data" = {
-
device = disk;
-
fsType = "btrfs";
-
options = [ "subvol=@nixos/data" "compress=zstd" "discard=async" ];
-
neededForBoot = true;
-
};
-
"/nix" = {
-
device = disk;
-
fsType = "btrfs";
-
options = [ "subvol=@nixos/nix" "compress=zstd" "discard=async" ];
-
};
-
"/config" = {
-
device = disk;
-
fsType = "btrfs";
-
options = [ "subvol=@nixos/config" "compress=zstd" "discard=async" ];
-
};
-
"/boot" = {
-
device = "/dev/disk/by-uuid/862D-85DB";
-
fsType = "vfat";
-
options = [ "fmask=0077" "dmask=0077" "defaults" ];
+
{ ... }:
+
{
+
fileSystems =
+
let
+
disk = "/dev/disk/by-uuid/7bf830d4-189d-4e9b-bcb0-565f4ac69e67";
+
in
+
{
+
"/" = {
+
device = "none";
+
fsType = "tmpfs";
+
options = [
+
"defaults"
+
"mode=755"
+
];
+
};
+
"/data" = {
+
device = disk;
+
fsType = "btrfs";
+
options = [
+
"subvol=@nixos/data"
+
"compress=zstd"
+
"discard=async"
+
];
+
neededForBoot = true;
+
};
+
"/nix" = {
+
device = disk;
+
fsType = "btrfs";
+
options = [
+
"subvol=@nixos/nix"
+
"compress=zstd"
+
"discard=async"
+
];
+
};
+
"/config" = {
+
device = disk;
+
fsType = "btrfs";
+
options = [
+
"subvol=@nixos/config"
+
"compress=zstd"
+
"discard=async"
+
];
+
};
+
"/boot" = {
+
device = "/dev/disk/by-uuid/862D-85DB";
+
fsType = "vfat";
+
options = [
+
"fmask=0077"
+
"dmask=0077"
+
"defaults"
+
];
+
};
};
-
};
}
+10 -7
modules/netbird.nix
···
-
{ config, ... }: {
-
environment.persistence."/data/persistent".directories = [{
-
directory = config.services.netbird.clients.homelab.dir.state;
-
mode = "0700";
-
user = config.services.netbird.clients.homelab.user.name;
-
group = config.services.netbird.clients.homelab.user.group;
-
}];
+
{ config, ... }:
+
{
+
environment.persistence."/data/persistent".directories = [
+
{
+
directory = config.services.netbird.clients.homelab.dir.state;
+
mode = "0700";
+
user = config.services.netbird.clients.homelab.user.name;
+
group = config.services.netbird.clients.homelab.user.group;
+
}
+
];
services.netbird.clients.homelab = {
port = 51820;
+6 -2
modules/nix.nix
···
-
{ nixpkgs, pkgs, ... }: {
+
{ nixpkgs, pkgs, ... }:
+
{
systemd = {
services.nix-daemon.environment.TMPDIR = "/nix/tmp";
tmpfiles.rules = [ "d /nix/tmp - root root 1d" ];
···
auto-optimise-store = true;
build-dir = "/nix/tmp";
download-buffer-size = 134217728;
-
experimental-features = [ "nix-command" "flakes" ];
+
experimental-features = [
+
"nix-command"
+
"flakes"
+
];
keep-going = true;
use-xdg-base-directories = true;
};
+2 -1
modules/openssh.nix
···
-
{ config, lib, ... }: {
+
{ config, lib, ... }:
+
{
environment.persistence."/data/persistent".files = [
"/etc/ssh/ssh_host_ed25519_key"
"/etc/ssh/ssh_host_ed25519_key.pub"
+10 -8
modules/packages/buildConfig/default.nix
···
-
{ age
-
, coreutils
-
, git
-
, nettools
-
, nixos-rebuild
-
, sops
-
, writeShellApplication
-
}: writeShellApplication {
+
{
+
age,
+
coreutils,
+
git,
+
nettools,
+
nixos-rebuild,
+
sops,
+
writeShellApplication,
+
}:
+
writeShellApplication {
name = "buildConfig";
runtimeInputs = [
age
+6 -1
modules/packages/nixos-rebuild-tmpdir.nix
···
# nixos-rebuild is a shellscript and inside that shellscript they create a tmpdir using mktemp.
# This is fine, but TMPDIR environment variable isn't available at this point, so mktemp puts the
# directory in the wrong place.
-
{ makeWrapper, nixos-rebuild, symlinkJoin }: symlinkJoin {
+
{
+
makeWrapper,
+
nixos-rebuild,
+
symlinkJoin,
+
}:
+
symlinkJoin {
name = "nixos-rebuild-tmpdir";
paths = [ nixos-rebuild ];
buildInputs = [ makeWrapper ];
+2 -1
modules/printing.nix
···
-
{ ... }: {
+
{ ... }:
+
{
services = {
avahi = {
enable = true;
+18 -5
modules/remoteBuildMachines.nix
···
-
{ config, lib, ... }: {
+
{ config, lib, ... }:
+
{
nix = {
buildMachines = [
(lib.mkIf (config.networking.hostName != "lily") {
···
system = "x86_64-linux";
maxJobs = 1;
speedFactor = 1;
-
supportedFeatures = [ "benchmark" "big-parallel" "kvm" "nixos-test" ];
+
supportedFeatures = [
+
"benchmark"
+
"big-parallel"
+
"kvm"
+
"nixos-test"
+
];
protocol = "ssh-ng";
sshKey = "/data/nixremote/id_ed25519";
sshUser = "nixremote";
-
publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU5hUmVOTStlU0l6Ylp2cWFoYU"
+
publicHostKey =
+
"c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU5hUmVOTStlU0l6Ylp2cWFoYU"
+ "FsYW5mMHo4OXJKUUlZV3gvcmxhUzRmMVkgcm9vdEBsaWx5Cg==";
})
(lib.mkIf (config.networking.hostName != "lutea") {
···
system = "x86_64-linux";
maxJobs = 1;
speedFactor = 2;
-
supportedFeatures = [ "benchmark" "big-parallel" "kvm" "nixos-test" ];
+
supportedFeatures = [
+
"benchmark"
+
"big-parallel"
+
"kvm"
+
"nixos-test"
+
];
protocol = "ssh-ng";
sshKey = "/data/nixremote/id_ed25519";
sshUser = "nixremote";
-
publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUNOTVR4YTJ6Um1ISVh0M0FSbE"
+
publicHostKey =
+
"c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUNOTVR4YTJ6Um1ISVh0M0FSbE"
+ "NwbGJvV1JkQ3NBbURsTjhnRExpazR2TnMgcm9vdEBsdXRlYQo=";
})
];
+2 -1
modules/remoteBuilder.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
imports = [ ./openssh.nix ];
users = {
+6 -2
modules/services/caddy.nix
···
-
{ ... }: {
+
{ ... }:
+
{
environment.persistence."/data/persistent".directories = [ "/var/lib/caddy" ];
-
networking.firewall.allowedTCPPorts = [ 80 443 ];
+
networking.firewall.allowedTCPPorts = [
+
80
+
443
+
];
services.caddy = {
enable = true;
+25 -12
modules/services/dendrite.nix
···
-
{ config, ... }: {
+
{ config, ... }:
+
{
imports = [ ./postgresql.nix ];
sops = {
···
'';
};
-
environment.persistence."/data/persistent".directories = [{
-
directory = "/var/lib/private/dendrite";
-
mode = "0700";
-
}];
+
environment.persistence."/data/persistent".directories = [
+
{
+
directory = "/var/lib/private/dendrite";
+
mode = "0700";
+
}
+
];
-
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts = [ 8008 ];
+
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts =
+
[ 8008 ];
services.postgresql = {
ensureDatabases = [ "dendrite" ];
-
ensureUsers = [{
-
name = "dendrite";
-
ensureDBOwnership = true;
-
}];
+
ensureUsers = [
+
{
+
name = "dendrite";
+
ensureDBOwnership = true;
+
}
+
];
};
systemd.services.dendrite.requires = [ "postgresql.service" ];
···
relay_api.database.connection_string = "";
key_server.database.connection_string = "";
logging = [
-
{ type = "std"; level = "warn"; }
-
{ type = "file"; level = "info"; params.path = "./logs"; }
+
{
+
type = "std";
+
level = "warn";
+
}
+
{
+
type = "file";
+
level = "info";
+
params.path = "./logs";
+
}
];
};
openRegistration = false;
+13 -6
modules/services/dufs.nix
···
-
{ config, lib, pkgs, ... }:
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}:
let
servePath = "/data/dufs";
-
dufsConfig = pkgs.writeText "config.yaml" (lib.generators.toYAML { } {
-
allow-all = true;
-
compress = "high";
-
serve-path = "${servePath}";
-
});
+
dufsConfig = pkgs.writeText "config.yaml" (
+
lib.generators.toYAML { } {
+
allow-all = true;
+
compress = "high";
+
serve-path = "${servePath}";
+
}
+
);
startDufs = pkgs.writeShellScript "dufsStart" ''
export DUFS_AUTH="mou:$(${pkgs.coreutils}/bin/cat ${config.sops.secrets."dufs/mouPW".path})@/:rw"
exec ${pkgs.dufs}/bin/dufs -c ${dufsConfig}
+2 -1
modules/services/esquid.nix
···
-
{ config, esquid, ... }: {
+
{ config, esquid, ... }:
+
{
imports = [ esquid.nixosModules."x86_64-linux".eSquid ];
nixpkgs.overlays = [ esquid.overlays.default ];
+10 -7
modules/services/i2pd.nix
···
-
{ ... }: {
-
environment.persistence."/data/persistent".directories = [{
-
directory = "/var/lib/i2pd";
-
user = "i2pd";
-
group = "i2pd";
-
mode = "0700";
-
}];
+
{ ... }:
+
{
+
environment.persistence."/data/persistent".directories = [
+
{
+
directory = "/var/lib/i2pd";
+
user = "i2pd";
+
group = "i2pd";
+
mode = "0700";
+
}
+
];
networking.firewall = {
allowedUDPPorts = [ 28381 ];
+6 -2
modules/services/libvirt.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
hardware.graphics.enable = true;
-
users.users.mou.extraGroups = [ "libvirtd" "kvm" ];
+
users.users.mou.extraGroups = [
+
"libvirtd"
+
"kvm"
+
];
environment.persistence."/data/persistent".directories = [ "/var/lib/libvirt" ];
virtualisation.libvirtd = {
+11 -3
modules/services/nextcloud.nix
···
-
{ config, lib, pkgs, ... }: {
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}:
+
{
environment.persistence."/data/persistent".directories = [
{
directory = "/var/lib/nextcloud";
···
};
# This is the port that nginx listens on by default
-
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts = [ 80 ];
+
networking.firewall.interfaces.${config.services.netbird.clients.homelab.interface}.allowedTCPPorts =
+
[ 80 ];
services = {
redis.package = pkgs.valkey;
···
};
};
-
systemd.services.nextcloud-notify_push.environment.NEXTCLOUD_URL = lib.mkForce "http://${config.mInfo.nb-ipv4}";
+
systemd.services.nextcloud-notify_push.environment.NEXTCLOUD_URL =
+
lib.mkForce "http://${config.mInfo.nb-ipv4}";
}
+2 -1
modules/services/openssh.nix
···
-
{ ... }: {
+
{ ... }:
+
{
imports = [ ../openssh.nix ];
users.users = {
+2 -1
modules/services/postgresql.nix
···
-
{ lib, ... }: {
+
{ lib, ... }:
+
{
environment.persistence."/data/persistent".directories = [ "/var/lib/postgresql" ];
services.postgresql = {
+2 -2
modules/services/vault.nix
···
# TODO: in the future switch to OpenBao
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
imports = [ ../unfree.nix ];
environment.persistence."/data/persistent".directories = [ "/var/lib/vault" ];
···
'';
};
}
-
+7 -1
modules/sss-mount.nix
···
-
{ config, lib, pkgs, ... }: lib.mkIf (config.mInfo.sss-mount == true) {
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}:
+
lib.mkIf (config.mInfo.sss-mount == true) {
environment.systemPackages = [ pkgs.rclone ];
fileSystems."/sss" = {
+2 -1
modules/sss.nix
···
# TODO: replace this with a better solution that doesn't rely on ssh
# - Preferablly peer-to-peer
-
{ ... }: {
+
{ ... }:
+
{
imports = [ ./sss-mount.nix ];
users = {
+2 -1
modules/tools.nix
···
-
{ pkgs, ... }: {
+
{ pkgs, ... }:
+
{
users.users.mou.packages = with pkgs; [ fend ];
}
+4 -3
modules/unfree.nix
···
-
{ config, lib, ... }: {
+
{ config, lib, ... }:
+
{
options.unfree.allowed = lib.mkOption {
type = with lib.types; listOf str;
default = [ ];
description = "A list of unfree packages that are allowed to be installed";
};
-
config.nixpkgs.config.allowUnfreePredicate = pkg:
-
builtins.elem (lib.getName pkg) config.unfree.allowed;
+
config.nixpkgs.config.allowUnfreePredicate =
+
pkg: builtins.elem (lib.getName pkg) config.unfree.allowed;
}
+12 -6
modules/vpn.nix
···
-
{ config, ... }: {
+
{ config, ... }:
+
{
sops.secrets."protonvpn-privateKey" = { };
networking.wg-quick.interfaces.protonvpn = {
address = [ "10.2.0.2/32" ];
privateKeyFile = config.sops.secrets."protonvpn-privateKey".path;
dns = [ "10.2.0.1" ];
-
peers = [{
-
publicKey = "lHEn/qdFKAZZjGWD3gAN1QBxuEZly7pSqaqRQRIW2hI=";
-
endpoint = "149.22.94.55:51820";
-
allowedIPs = [ "0.0.0.0/0" "::/0" ];
-
}];
+
peers = [
+
{
+
publicKey = "lHEn/qdFKAZZjGWD3gAN1QBxuEZly7pSqaqRQRIW2hI=";
+
endpoint = "149.22.94.55:51820";
+
allowedIPs = [
+
"0.0.0.0/0"
+
"::/0"
+
];
+
}
+
];
};
}