From 8a0f6938c745da7cb24baf99e91800d2e8baa3a6 Mon Sep 17 00:00:00 2001 From: 0xTux <0xtux@pm.me> Date: Sat, 3 Aug 2024 05:45:49 +0530 Subject: [PATCH] add sops-nix and borgbackup --- .sops.yaml | 7 +++++ flake.lock | 54 ++++++++++++++++++++++++++++++++++- flake.nix | 1 + hosts/controller/default.nix | 38 +++++++++++++++++++++++- hosts/controller/secrets.yaml | 21 ++++++++++++++ 5 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 .sops.yaml create mode 100644 hosts/controller/secrets.yaml diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..7ee54d6 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,7 @@ +keys: + - &primary age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4 +creation_rules: + - path_regex: hosts/controller/secrets.yaml$ + key_groups: + - age: + - *primary diff --git a/flake.lock b/flake.lock index 116aad6..dee38f5 100755 --- a/flake.lock +++ b/flake.lock @@ -317,6 +317,22 @@ "type": "github" } }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1721524707, + "narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "556533a23879fc7e5f98dd2e0b31a6911a213171", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1714253743, @@ -349,6 +365,22 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1721466660, + "narHash": "sha256-pFSxgSZqZ3h+5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6e14bbce7bea6c4efd7adfa88a40dac750d80100", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "locked": { "lastModified": 1721571991, @@ -390,7 +422,8 @@ "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs", "nixpkgs-f2k": "nixpkgs-f2k", - "nur": "nur" + "nur": "nur", + "sops-nix": "sops-nix" } }, "rust-analyzer-src": { @@ -410,6 +443,25 @@ "type": "github" } }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4", + "nixpkgs-stable": "nixpkgs-stable_2" + }, + "locked": { + "lastModified": 1722114803, + "narHash": "sha256-s6YhI8UHwQvO4cIFLwl1wZ1eS5Cuuw7ld2VzUchdFP0=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "eb34eb588132d653e4c4925d862f1e5a227cc2ab", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index cc48432..5ae44c6 100755 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,7 @@ nixos-hardware.url = "github:nixos/nixos-hardware"; nixpkgs-f2k.url = "github:moni-dz/nixpkgs-f2k"; nur.url = "github:nix-community/nur"; + sops-nix.url = "github:Mic92/sops-nix"; }; outputs = { diff --git a/hosts/controller/default.nix b/hosts/controller/default.nix index 63d561b..de148b1 100644 --- a/hosts/controller/default.nix +++ b/hosts/controller/default.nix @@ -1,5 +1,12 @@ -{pkgs, ...}: { +{ + pkgs, + inputs, + username, + config, + ... +}: { imports = [ + inputs.sops-nix.nixosModules.sops ./hardware-configuration.nix ../../modules/nixos/default.nix ../../modules/nixos/headscale.nix @@ -11,6 +18,15 @@ ../../modules/nixos/monitoring/promtail.nix ]; + sops = { + age.keyFile = "/home/${username}/.config/sops/age/keys.txt"; + secrets = { + borg_encryption_key = { + sopsFile = ./secrets.yaml; + }; + }; + }; + boot = { kernelPackages = pkgs.linuxPackages_zen; initrd.systemd.enable = true; @@ -29,6 +45,26 @@ sudo.wheelNeedsPassword = false; }; + services = { + borgbackup.jobs.controller-backup = { + paths = [ + "/var/lib/bitwarden_rs" + "/var/lib/gitea" + "/var/lib/headscale" + "/var/lib/grafana" + "/var/lib/loki" + ]; + encryption = { + mode = "repokey-blake2"; + passCommand = "cat ${config.sops.secrets.borg_encryption_key.path}"; + }; + environment.BORG_RSH = "ssh -i /home/${username}/.ssh/storagebox"; + repo = "ssh://u416910@u416910.your-storagebox.de:23/./controller-backups"; + compression = "auto,zstd"; + startAt = "daily"; + }; + }; + programs = { zsh.enable = true; nix-ld = { diff --git a/hosts/controller/secrets.yaml b/hosts/controller/secrets.yaml new file mode 100644 index 0000000..f99432b --- /dev/null +++ b/hosts/controller/secrets.yaml @@ -0,0 +1,21 @@ +borg_encryption_key: ENC[AES256_GCM,data:42q7OYR5HLqLzbCx0WZwurND8DGUnCw3fA+4ccEmNp4=,iv:GRj9jXnlfqDoxr55hS97gjqLzIP7rjqoYtRHlU5/9Lo=,tag:ybr8V9RumsU94ja0bLnfNA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwSzNTUzdTYzNpT21DL3gy + bjhHcXFWQjI5c0lSRUEwZXR2UmxOeG5jMEI4Ckg1OWx3NzVOWjIzRWtCblp5K2RK + b21xL2tBWDFqRXI2ZTloR0xwZkhtclUKLS0tIHFaYzM1dWdyUC95UWlsQU1xWjNV + akhaWXdrbXI0TDNNMlppcGovbjNia1EKNomA6zlZmQKE1DtX6JlurBxEkG9aiwjn + RZd5a9XPH8F1XhQF1tcZS+m3hGY00V7Zwiqe68PiiYWpxzZ/sSeR5A== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-08-02T22:42:23Z" + mac: ENC[AES256_GCM,data:C4ueRlhrqollpi6ZE+126idf2SiAd2GooO7CTWR49ACW/y4q50B8girPtuY7Pgig0y/U0rWIFHFwmOwXyJJ8A6YtzD0VzWhZN7Aeb7HGvu/0o4V5OPjH1ZdQ6bb8YyeMQ5RljnG7/Pa/QasFS6h0pv3jnkKYrCCkbxNmKk/DcLY=,iv:UXi8rBLkdgp/bCxIE+6PvgdPv6xJmKtQX/WUVmoKeKc=,tag:Fpo44OFp0CYVAwDFx5WbWQ==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.9.0