Initial commit
This commit is contained in:
commit
5648fe3686
31 changed files with 827 additions and 0 deletions
8
.sops.yaml
Normal file
8
.sops.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
keys:
|
||||
- &master age1emnd8nmqzfzeavkzcsk3drn65xky22af6r5wxwvm2k067kkt4adsqxyv2u
|
||||
|
||||
creation_rules:
|
||||
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||
key_groups:
|
||||
- age:
|
||||
- *master
|
86
flake.lock
generated
Normal file
86
flake.lock
generated
Normal file
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"nodes": {
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726985855,
|
||||
"narHash": "sha256-NJPGK030Y3qETpWBhj9oobDQRbXdXOPxtu+YgGvZ84o=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "04213d1ce4221f5d9b40bcee30706ce9a91d148d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1726755586,
|
||||
"narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1725762081,
|
||||
"narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "release-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"sops-nix": "sops-nix"
|
||||
}
|
||||
},
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726524647,
|
||||
"narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "e2d404a7ea599a013189aa42947f66cede0645c8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
43
flake.nix
Normal file
43
flake.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
description = "Nero";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# hyprland = {
|
||||
# url = "github:hyprwm/Hyprland?submodules=1";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
};
|
||||
|
||||
outputs = {
|
||||
nixpkgs,
|
||||
sops-nix,
|
||||
home-manager,
|
||||
...
|
||||
}@inputs: {
|
||||
nixosConfigurations.lil-maid = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
|
||||
modules = [
|
||||
sops-nix.nixosModules.sops
|
||||
home-manager.nixosModules.home-manager
|
||||
|
||||
./m
|
||||
./lil-maid
|
||||
];
|
||||
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
35
lil-maid/default.nix
Normal file
35
lil-maid/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
maid = {
|
||||
sys = {
|
||||
enable = true;
|
||||
hostname = "lil-maid";
|
||||
};
|
||||
masters.nero.enable = true;
|
||||
|
||||
sops = {
|
||||
enable = true;
|
||||
|
||||
viendesu.enable = true;
|
||||
work.enable = true;
|
||||
};
|
||||
|
||||
ly.enable = true;
|
||||
firefox.enable = true;
|
||||
vpn.hft.enable = true;
|
||||
|
||||
unfree = [
|
||||
"obsidian"
|
||||
"slack"
|
||||
"discord"
|
||||
];
|
||||
};
|
||||
|
||||
imports = [
|
||||
./modules
|
||||
|
||||
./hw.nix
|
||||
./fs.nix
|
||||
];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
22
lil-maid/fs.nix
Normal file
22
lil-maid/fs.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
fileSystems = {
|
||||
"/" =
|
||||
{ device = "/dev/disk/by-label/nixos";
|
||||
fsType = "btrfs";
|
||||
};
|
||||
"/boot" =
|
||||
{ device = "/dev/disk/by-label/boot";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
"/secrets" =
|
||||
{ device = "/dev/disk/by-label/secrets";
|
||||
fsType = "btrfs";
|
||||
options = [ "nofail" ];
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-label/swap"; }
|
||||
];
|
||||
}
|
27
lil-maid/hw.nix
Normal file
27
lil-maid/hw.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ pkgs, config, lib, modulesPath, ... }:
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
systemd.tmpfiles.settings = {
|
||||
"10-secrets" = {
|
||||
"/secrets".v = {
|
||||
user = "nero";
|
||||
mode = "0760";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelModules = [ "btusb" "kvm-amd" ];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ "amdgpu" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
4
lil-maid/modules/boot.nix
Normal file
4
lil-maid/modules/boot.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
}
|
7
lil-maid/modules/default.nix
Normal file
7
lil-maid/modules/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
imports = [
|
||||
./boot.nix
|
||||
./social.nix
|
||||
./stash.nix
|
||||
];
|
||||
}
|
16
lil-maid/modules/social.nix
Normal file
16
lil-maid/modules/social.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Slack
|
||||
slack
|
||||
|
||||
# Telegram
|
||||
telegram-desktop
|
||||
|
||||
# Discord
|
||||
(discord.override {
|
||||
withOpenASAR = true;
|
||||
withVencord = true;
|
||||
})
|
||||
];
|
||||
}
|
6
lil-maid/modules/stash.nix
Normal file
6
lil-maid/modules/stash.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
obsidian
|
||||
];
|
||||
}
|
14
m/default.nix
Normal file
14
m/default.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
imports = [
|
||||
./sops.nix
|
||||
./hypr.nix
|
||||
./ly.nix
|
||||
./sys.nix
|
||||
./unfree.nix
|
||||
./firefox.nix
|
||||
./home
|
||||
./vpn
|
||||
|
||||
./masters
|
||||
];
|
||||
}
|
13
m/firefox.nix
Normal file
13
m/firefox.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
firefox = config.maid.firefox;
|
||||
in
|
||||
{
|
||||
options.maid.firefox = {
|
||||
enable = lib.mkEnableOption "firefox";
|
||||
};
|
||||
|
||||
config.programs.firefox = lib.mkIf firefox.enable {
|
||||
enable = true;
|
||||
};
|
||||
}
|
14
m/home/default.nix
Normal file
14
m/home/default.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
hm = config.maid.hm;
|
||||
in
|
||||
{
|
||||
options.maid.hm = {
|
||||
enable = lib.mkEnableOption "home-manager";
|
||||
};
|
||||
|
||||
config.home-manager = lib.mkIf hm.enable {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
};
|
||||
}
|
28
m/home/helix/default.nix
Normal file
28
m/home/helix/default.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
sonokai = import themes/sonokai;
|
||||
langs = (import ./langs) pkgs;
|
||||
in
|
||||
{
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
theme = "sonokai-andromeda";
|
||||
editor.cursor-shape = {
|
||||
normal = "block";
|
||||
insert = "bar";
|
||||
select = "underline";
|
||||
};
|
||||
};
|
||||
|
||||
languages = {
|
||||
language-server.rust-analyzer.config = {
|
||||
rust.analyzerTargetDir = true;
|
||||
};
|
||||
};
|
||||
themes = {
|
||||
sonokai-andromeda = sonokai "andromeda";
|
||||
};
|
||||
};
|
||||
}
|
15
m/home/helix/langs/default.nix
Normal file
15
m/home/helix/langs/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ pkgs, ... }:
|
||||
rec {
|
||||
use = name: (import ./${"${name}.nix"}) pkgs;
|
||||
combine = lhs: rhs: {
|
||||
lsp = (lhs.lsp or {}) // (rhs.lsp or {});
|
||||
entries = (lhs.entries or []) ++ (rhs.entries or []);
|
||||
};
|
||||
|
||||
intoHelixFormat = cfg: {
|
||||
language-server = cfg.lsp;
|
||||
language = cfg.entries;
|
||||
};
|
||||
useMany = langs: builtins.foldl' combine {} (map use langs);
|
||||
}
|
||||
|
15
m/home/helix/langs/nix.nix
Normal file
15
m/home/helix/langs/nix.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
lsp.nixd = {
|
||||
command = "${pkgs.nixd}/bin/nixd";
|
||||
};
|
||||
entries = [{
|
||||
name = "Nix";
|
||||
scope = "source.nix";
|
||||
injection-regex = "nix";
|
||||
file-types = ["nix"];
|
||||
comment-tokens = "#";
|
||||
indent = { tab-width = 2; unit = " "; };
|
||||
language-servers = [ "nixd" ];
|
||||
}];
|
||||
}
|
179
m/home/helix/themes/sonokai/default.nix
Normal file
179
m/home/helix/themes/sonokai/default.nix
Normal file
|
@ -0,0 +1,179 @@
|
|||
palette:
|
||||
{
|
||||
"attribute" = "purple";
|
||||
"comment" = "grey";
|
||||
"constant" = "purple";
|
||||
"constant.character.escape" = "orange";
|
||||
"constant.numeric" = "purple";
|
||||
"constructor" = "blue";
|
||||
"diagnostic" = { "underlined" = { "style" = "line"; }; };
|
||||
"diagnostic.error" = {
|
||||
"underline" = {
|
||||
"color" = "red";
|
||||
"style" = "curl";
|
||||
};
|
||||
};
|
||||
"diagnostic.hint" = {
|
||||
"underline" = {
|
||||
"color" = "blue";
|
||||
"style" = "dotted";
|
||||
};
|
||||
};
|
||||
"diagnostic.info" = {
|
||||
"underline" = {
|
||||
"color" = "green";
|
||||
"style" = "dotted";
|
||||
};
|
||||
};
|
||||
"diagnostic.warning" = {
|
||||
"underline" = {
|
||||
"color" = "yellow";
|
||||
"style" = "curl";
|
||||
};
|
||||
};
|
||||
"diff.delta" = "orange";
|
||||
"diff.minus" = "red";
|
||||
"diff.plus" = "green";
|
||||
"error" = "red";
|
||||
"function" = "green";
|
||||
"function.builtin" = "blue";
|
||||
"function.macro" = "purple";
|
||||
"hint" = "blue";
|
||||
"info" = "green";
|
||||
"keyword" = "red";
|
||||
"keyword.directive" = "purple";
|
||||
"label" = "orange";
|
||||
"markup.bold" = { "modifiers" = [ "bold" ]; };
|
||||
"markup.heading.1" = {
|
||||
"fg" = "red";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"markup.heading.2" = {
|
||||
"fg" = "orange";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"markup.heading.3" = {
|
||||
"fg" = "yellow";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"markup.heading.4" = {
|
||||
"fg" = "green";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"markup.heading.5" = {
|
||||
"fg" = "blue";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"markup.heading.6" = {
|
||||
"fg" = "fg";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"markup.heading.marker" = "grey";
|
||||
"markup.italic" = { "modifiers" = [ "italic" ]; };
|
||||
"markup.link.text" = "purple";
|
||||
"markup.link.url" = {
|
||||
"fg" = "blue";
|
||||
"modifiers" = [ "underlined" ];
|
||||
};
|
||||
"markup.list" = "red";
|
||||
"markup.quote" = "grey";
|
||||
"markup.raw" = "green";
|
||||
"module" = "blue";
|
||||
"namespace" = "blue";
|
||||
"operator" = "orange";
|
||||
"punctuation" = "grey";
|
||||
"punctuation.bracket" = "fg";
|
||||
"punctuation.delimiter" = "grey";
|
||||
"special" = "orange";
|
||||
"string" = "yellow";
|
||||
"string.regexp" = "orange";
|
||||
"tag" = "yellow";
|
||||
"type" = "blue";
|
||||
"ui.background" = { "bg" = "bg0"; };
|
||||
"ui.background.separator" = "grey";
|
||||
"ui.bufferline" = {
|
||||
"bg" = "bg1";
|
||||
"fg" = "grey";
|
||||
};
|
||||
"ui.bufferline.active" = {
|
||||
"bg" = "bg4";
|
||||
"fg" = "fg";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"ui.cursor" = {
|
||||
"bg" = "fg";
|
||||
"fg" = "bg0";
|
||||
};
|
||||
"ui.cursor.insert" = {
|
||||
"bg" = "grey";
|
||||
"fg" = "black";
|
||||
};
|
||||
"ui.cursor.match" = {
|
||||
"bg" = "diff_yellow";
|
||||
"fg" = "orange";
|
||||
};
|
||||
"ui.cursor.select" = {
|
||||
"bg" = "blue";
|
||||
"fg" = "bg0";
|
||||
};
|
||||
"ui.cursorline.primary" = { "bg" = "bg1"; };
|
||||
"ui.cursorline.secondary" = { "bg" = "bg1"; };
|
||||
"ui.help" = {
|
||||
"bg" = "bg2";
|
||||
"fg" = "fg";
|
||||
};
|
||||
"ui.linenr" = "grey";
|
||||
"ui.linenr.selected" = "fg";
|
||||
"ui.menu" = {
|
||||
"bg" = "bg3";
|
||||
"fg" = "fg";
|
||||
};
|
||||
"ui.menu.selected" = {
|
||||
"bg" = "green";
|
||||
"fg" = "bg0";
|
||||
};
|
||||
"ui.popup" = {
|
||||
"bg" = "bg2";
|
||||
"fg" = "grey";
|
||||
};
|
||||
"ui.selection" = { "bg" = "bg4"; };
|
||||
"ui.statusline" = {
|
||||
"bg" = "bg3";
|
||||
"fg" = "fg";
|
||||
};
|
||||
"ui.statusline.inactive" = {
|
||||
"bg" = "bg1";
|
||||
"fg" = "grey";
|
||||
};
|
||||
"ui.statusline.insert" = {
|
||||
"bg" = "yellow";
|
||||
"fg" = "bg0";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"ui.statusline.normal" = {
|
||||
"bg" = "fg";
|
||||
"fg" = "bg0";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"ui.statusline.select" = {
|
||||
"bg" = "blue";
|
||||
"fg" = "bg0";
|
||||
"modifiers" = [ "bold" ];
|
||||
};
|
||||
"ui.text" = "fg";
|
||||
"ui.text.focus" = "green";
|
||||
"ui.virtual.indent-guide" = { "fg" = "bg4"; };
|
||||
"ui.virtual.ruler" = { "bg" = "bg2"; };
|
||||
"ui.virtual.whitespace" = { "fg" = "bg4"; };
|
||||
"ui.window" = {
|
||||
"bg" = "bg0";
|
||||
"fg" = "grey";
|
||||
};
|
||||
"variable" = "fg";
|
||||
"variable.builtin" = "orange";
|
||||
"variable.other.member" = "fg";
|
||||
"variable.parameter" = "fg";
|
||||
"warning" = "yellow";
|
||||
|
||||
palette = import (./. + "/palettes/${palette}.nix");
|
||||
}
|
25
m/home/helix/themes/sonokai/palettes/andromeda.nix
Normal file
25
m/home/helix/themes/sonokai/palettes/andromeda.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
black = "#181a1c";
|
||||
bg0 = "#2b2d3a";
|
||||
bg1 = "#333648";
|
||||
bg2 = "#363a4e";
|
||||
bg3 = "#393e53";
|
||||
bg4 = "#3f445b";
|
||||
bg_red = "#ff6188";
|
||||
diff_red = "#55393d";
|
||||
bg_green = "#a9dc76";
|
||||
diff_green = "#394634";
|
||||
bg_blue = "#77d5f0";
|
||||
diff_blue = "#354157";
|
||||
diff_yellow = "#4e432f";
|
||||
fg = "#e1e3e4";
|
||||
red = "#fb617e";
|
||||
orange = "#f89860";
|
||||
yellow = "#edc763";
|
||||
green = "#9ed06c";
|
||||
cyan = "#ef9062"; # added for compatibility with `edge` scheme
|
||||
blue = "#6dcae8";
|
||||
purple = "#bb97ee";
|
||||
grey = "#7e8294";
|
||||
grey_dim = "#5a5e7a";
|
||||
}
|
15
m/hypr.nix
Normal file
15
m/hypr.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ lib, config, inputs, pkgs, ... }:
|
||||
let
|
||||
hypr = config.maid.hypr;
|
||||
in
|
||||
{
|
||||
options.maid.hypr = {
|
||||
enable = lib.mkEnableOption "hyprland";
|
||||
};
|
||||
|
||||
config.programs.hyprland = lib.mkIf hypr.enable {
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
}
|
13
m/ly.nix
Normal file
13
m/ly.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
ly = config.maid.ly;
|
||||
in
|
||||
{
|
||||
options.maid.ly = {
|
||||
enable = lib.mkEnableOption "ly";
|
||||
};
|
||||
|
||||
config.services.displayManager.ly = lib.mkIf ly.enable {
|
||||
enable = true;
|
||||
};
|
||||
}
|
5
m/masters/default.nix
Normal file
5
m/masters/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./nero.nix
|
||||
];
|
||||
}
|
38
m/masters/nero.nix
Normal file
38
m/masters/nero.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
types = lib.types;
|
||||
masters = config.maid.masters;
|
||||
hm = config.maid.hm;
|
||||
|
||||
mkUser = name: {
|
||||
enable = lib.mkEnableOption name;
|
||||
override = lib.mkOption {
|
||||
type = types.attrs;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
options.maid.masters = {
|
||||
nero = mkUser "nero";
|
||||
};
|
||||
|
||||
config = lib.mkIf masters.nero.enable {
|
||||
sops.secrets."users/nero/passwordHash" = {
|
||||
neededForUsers = true;
|
||||
sopsFile = ../../secrets/users.yaml;
|
||||
};
|
||||
|
||||
home-manager.users.nero = lib.mkIf hm.enable (import nero/home.nix);
|
||||
|
||||
users.users.nero = {
|
||||
isNormalUser = true;
|
||||
uid = 1337;
|
||||
hashedPasswordFile = config.sops.secrets."users/nero/passwordHash".path;
|
||||
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaWnT7mpLERhm3zIWglNy094a7F7d7cpEImLZYwwWoS nero@lil-maid"
|
||||
];
|
||||
} // masters.nero.override;
|
||||
};
|
||||
}
|
20
m/masters/nero/home.nix
Normal file
20
m/masters/nero/home.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [];
|
||||
|
||||
home.username = "nero";
|
||||
home.homeDirectory = "/home/nero";
|
||||
home.stateVersion = "24.05";
|
||||
|
||||
home.file = {
|
||||
".cargo/config.toml" = {
|
||||
text = ''
|
||||
[net]
|
||||
git-fetch-with-cli = true
|
||||
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
rustflags = ["-C", "link-arg=--ld-path=${pkgs.mold}/bin/mold"]
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
28
m/sops.nix
Normal file
28
m/sops.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
sops = config.maid.sops;
|
||||
in
|
||||
{
|
||||
options.maid.sops = {
|
||||
enable = lib.mkEnableOption "sops";
|
||||
|
||||
work.enable = lib.mkEnableOption "work secrets";
|
||||
viendesu.enable = lib.mkEnableOption "VienDesu!";
|
||||
};
|
||||
|
||||
config.sops = lib.mkIf sops.enable {
|
||||
age.keyFile = "/var/lib/sops-nix/key.txt";
|
||||
|
||||
secrets = lib.mkMerge [
|
||||
(lib.mkIf sops.viendesu.enable {
|
||||
"viendesu/shadowsocks/gneg".sopsFile = ../secrets/viendesu.yaml;
|
||||
"viendesu/shadowsocks/yor".sopsFile = ../secrets/viendesu.yaml;
|
||||
})
|
||||
(lib.mkIf sops.work.enable {
|
||||
"work/ovpn".sopsFile = ../secrets/work.yaml;
|
||||
"work/password".sopsFile = ../secrets/work.yaml;
|
||||
"work/shadowsocks".sopsFile = ../secrets/work.yaml;
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
22
m/sys.nix
Normal file
22
m/sys.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
types = lib.types;
|
||||
sys = config.maid.sys;
|
||||
in
|
||||
{
|
||||
options.maid.sys = {
|
||||
enable = lib.mkEnableOption "whole maid system";
|
||||
tz = lib.mkOption {
|
||||
type = types.str;
|
||||
default = "Europe/Moscow";
|
||||
};
|
||||
hostname = lib.mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf sys.enable {
|
||||
time.timeZone = sys.tz;
|
||||
networking.hostName = sys.hostname;
|
||||
};
|
||||
}
|
14
m/unfree.nix
Normal file
14
m/unfree.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
unfree = config.maid.unfree;
|
||||
types = lib.types;
|
||||
in
|
||||
{
|
||||
options.maid.unfree = lib.mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "unfree software list";
|
||||
default = [];
|
||||
};
|
||||
|
||||
config.nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.maid.unfree;
|
||||
}
|
5
m/vpn/default.nix
Normal file
5
m/vpn/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./hft.nix
|
||||
];
|
||||
}
|
39
m/vpn/hft.nix
Normal file
39
m/vpn/hft.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
types = lib.types;
|
||||
hft = config.maid.vpn.hft;
|
||||
in
|
||||
{
|
||||
options.maid.vpn.hft = {
|
||||
enable = lib.mkEnableOption "OpenVPN HFT";
|
||||
autoStart = lib.mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to start VPN on system start";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf hft.enable {
|
||||
services.openvpn.servers.hft = {
|
||||
autoStart = hft.autoStart;
|
||||
updateResolvConf = true;
|
||||
|
||||
config = ''
|
||||
config ${config.sops.secrets."work/ovpn".path}
|
||||
askpass ${config.sops.secrets."work/password".path}
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.hft-shadowsocks = {
|
||||
wantedBy = [ "openvpn-hft.service" ];
|
||||
partOf = [ "openvpn-hft.service" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
description = "Shadowsocks to bypass OpenVPN block";
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = ''${pkgs.shadowsocks-rust}/bin/sslocal --config ${config.sops.secrets."work/shadowsocks".path}'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
23
secrets/users.yaml
Normal file
23
secrets/users.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
users:
|
||||
nero:
|
||||
passwordHash: ENC[AES256_GCM,data:VFfZsI+sPny7xN7LYjawjocvDj7pmnxsor1WqdxJcrtnM5MYm75WArDZTmfRP/f68S5tflkNJ/RH7s/f9Xr3nHUDb8pYyMrSQA==,iv:wTpo+QaV0tbUgk1/2AO9yKn8DQz2VuQpIMxYdgDYmcM=,tag:Dn+0EJSEksBzcj2V+9ENjA==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1emnd8nmqzfzeavkzcsk3drn65xky22af6r5wxwvm2k067kkt4adsqxyv2u
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPTUJTY0tsWkFIeFlCN2Vv
|
||||
TEJuWWpmQXZsL0VQOUxISFF3YzhqSjlZUkR3CmpiQlpOalY0cUlZQ2t2bjRXcTEx
|
||||
cDREVzZQRlNvWGtJK251cUNPUlZleXcKLS0tIFc1Z0YxTlJHYVdaVVVXOGNQblNx
|
||||
SGoweUZaK203Y1dXTG9SSWpUNXh0R1EKhRBaSxtt1LTvO9FTRICd9ubl1x+Gw+6R
|
||||
q/uAYA5XeRozYGjshCe8Zs92LYXMCnoE1I5HQvV9ZsrtpFQOtXbOFA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-09-22T06:59:55Z"
|
||||
mac: ENC[AES256_GCM,data:aqx36OmpS7LBHvj/jXk4dgvYUB1zl53Iy8EuwiAXxB71rQi1BSCOIENB9d6tJT39VIHpic94AiQk9MWmiMK+xgaMW40gkL4FxnnSLUXonpCZmQzmjcex6a9z0q/7fi3Udv03SuTxhO+myBvRJHgIgcbwpiC4Fy9GLAwbPTJFzb8=,iv:/l3b0l/B94glcoGN1VdBy8PuuBtanJj4FrmCKTpC7Vo=,tag:kRkiQ9W9fcdkhpQJplUxMQ==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.0
|
24
secrets/viendesu.yaml
Normal file
24
secrets/viendesu.yaml
Normal file
|
@ -0,0 +1,24 @@
|
|||
viendesu:
|
||||
shadowsocks:
|
||||
gneg: ENC[AES256_GCM,data:SL1x5cfZeOTjjUBsQpvV3LqMQC5X85DGCxK40XUCwthtNj/5/AMw+DyKMp8bYwX3uABOYOv4SCZwKW4qNI62BztOaMLPA/B4V4QuwdrMNDZYmsU4rsdoVMEhBFT9Qrkx4bNWXVz9MJwAqoxgoZ6OQ+8AsXbdaLJ1y0ohaSEg7/RbzzB0SC7ZtQeBZuPctHIHwcF5JnQIWpQk5IFJlTWldwEvhnnnrwlWOZqngIf9+uD23YwPaywSXovzPgxvtHgM,iv:29lJtDiyYC+XgLIkumGbugCvvTXp9gDiOwKRdagDEjU=,tag:fApsukDpsWa+lvOlcotndA==,type:str]
|
||||
yor: ENC[AES256_GCM,data:/zvONUnhLiozdFHviuShL6RWT7nn6E4eA5PNQuC1NKtCTciZRbOmm6FfC6H6T2naxdXPQBjYV6o7IPFPcGfYXa6XseuFvtWwa7pZp1hTEjt1ah05KMswfG38fO7IhCgwqdFS2kanGKB1wLz3EvE5QNuUyeyIlUg5dOwkfmWYyy2msr6d2MSYGubul8pCwIjMMX94Kks7uvgIupYFvWbcEznC+0NrFLWY05WhVL+iSrjbLCMb884BUvIDz/i9m0AbZ2c=,iv:h6LXc+oYOn3+B6kIo45pX+w4UCMd7cas0oYwPQmrZ7o=,tag:yMsFERDJ78JmShzmIfVFmQ==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1emnd8nmqzfzeavkzcsk3drn65xky22af6r5wxwvm2k067kkt4adsqxyv2u
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHRHNEbFRKR2xlc0piSjZt
|
||||
RHpuQmtZUGc1K3ZLSkQxSnVMdXZIZ3VDTVFRCnViTkhmbkozczN6aTBsWno0V0lV
|
||||
YjMyMXhncVptZEpEdVZ4Mnp3RlRLR00KLS0tIC9PaUlCSDM2cGppb3NGQkRtdlQw
|
||||
N0V6Ri9xY2Fkc3JkSmVRdndZc3E5a2sKFiwkii+9vEMaObTSwwb2T7WaBH0VP0qp
|
||||
DHMt9nnKfZNun9nW7PGtQwuomfJ6SHGoKwsC2rlt2UqLcETgbgPF/w==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-09-22T07:00:21Z"
|
||||
mac: ENC[AES256_GCM,data:Z0ESKPPjvE7HRjPa9cedTnqT62tir2Y4FP1E7rPstjk+TEzo/X0XPEesmammO4f9r/UHg3+0fcODSAWi6/uwAGGt8u1ZtDIM9GoBy6zTA7lhAT6B81P4PcUfGD2tloRIOW51jTP9/Can/M/0RA5uG+FWuPbKZGwl4Quy9vLoXz8=,iv:XEcDoBgBMyrp9Q9FkCcIt8PHy8IPT5FCw3i2Sc5JUfA=,tag:cdKA6p+yACN3OCsgscRHUA==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.0
|
24
secrets/work.yaml
Normal file
24
secrets/work.yaml
Normal file
|
@ -0,0 +1,24 @@
|
|||
work:
|
||||
shadowsocks: ENC[AES256_GCM,data:MW8+tI5N1N3BIbts4LvcxWsDNruebPIpDhPCcAV426s8fTQDXpUP32XU8Wl76YooJ7P1RxvCnvgTG0UgiP/MZxPkvq7Ss0DzXjxCiQ1UgWVD3fOr4OiMDrPYzxT95HAXhQigDIIz3CS42hIN/JOJvMjT1AMd8EFpgCG4AJYp5OU/+oXtdJ8XKzcJlL3HmvzTz8oAREWdrT4RrZv3RdsiqriDEX9lyCUs1KZ0nnUDEWT0BlK2H+EDXn3N8Jchtfrg/dc=,iv:BAaiHzfVIBB8TdewhByIfwNL3e1KczKMGjm8mEFm3+Y=,tag:BwAw5utafZvKRQMEn/7yNA==,type:str]
|
||||
password: ENC[AES256_GCM,data:5qxuI746kcvfAGf5Xn7P,iv:cRptb0CCu/oJO54G4R/3xHTUig25VnCmpDXZeLHbBXg=,tag:gEid1MGUazHefOd2BoJhXA==,type:str]
|
||||
ovpn: ENC[AES256_GCM,data:zGwTt/kzJ6JGfXHw9fhMeWcc/dpBR4d/xT/J7SoRMLEGCuBlRC0/ekYiyKnu7K8KyAIn1o2BjuiiNntTYWwxzWqWUuafapHQnNSTfnvjgM6ha+snVZ8cSepxV/oYfxAVKb4wZteSSeFiu8+KJYdnhCH4DlnSjrs9RRh09y0Lb6WVge+g8lzGMpS/fXUwwPGVbEi1kADphS4sVGPceK7sWwxm0rDnS4HNKpF/AYzNhgcaEzyC6v4AmdUJKPWeF5EpbqAzb4NvjQKDA4FbcU3MMlJ75jBHd0X9zAqTLs3+cFuy/wycEVtSbxLbU7Lor+QDMLQiZ0w1HtcAh74ljr6lLygz8rmmqrgh48TAu7z8o56cnTupLbXHRcNr9fEtz0DO+b3xUvSp4c7nxyk+bYkElnAFi73f4zKqzSMpJHWfSvw4nq9mPsQPDlsJlY84PZDGG/uOgNI7rmctesUQ7wW1qeGR9/zp9mLWJ3BPnTN0J23pvrTzPZ3R5EazqxNzGFjGZVJalvd7W/J1M9DIowaNoBoaa/OgmnFni56PtK4b1y4uK+EczKysz62PZDPdUr0/eNPOCI5uFiR/VopnKtgOEezSsJsIbhCgRce5upQuP6Zr45PiNe+9UFb8+MiPIUEEx2+h+0eGnonEBU/z6KUSPjBFYT56wGOLP0zXiQRXMmCUQ9xCOTJeLbnpGrOjmqoO/f0jA6cPPwA81ikhJP9BTSJcMkEj2CIEBIyNNG0VTdRx3z9oyiBjKeqzU8P95L0YO7sD0qopd+BCOYOedQrSfgk+1gMJ2xzFFRBMcXY595OfMzNctkOacxQAOGfCdBFUSp1rsp46eTG5LlAVyQ+KA0ZmeEvVvHCWPTV/N1y6qM4HfKy62KA7ahmMaznHFBTRMtrVAWontcNH703wj5MGNTpDSPYw6+UBhmpkZoFjSNxzv2+t/xuFBeUij5KaEUEFmQvqfhxPQRZXZa0CC5CbTd4Iwms9Z+cVGltqQqrGw7opgkj7WgpSlnpExy+hgqIS9Erv81SN6r6mLesha/kIJXl829jeFwTB7wuSJK1JX9mHhA841ZtMzWO7zYBCI39N0Fd79PXf7+yExGzM4gSkckObPpgIKsTM0tBCBqQFyaukj8PKv3xp5nIqo1pYOQAY9Lr6zhTZJi6PXGtLpRVGgTUzozS7np8ize3QzYOqiAoilVqMqRmYTGr3t3v+1ETkFKfmDW9lyHYZHuN5oAi/ymTX3iCN9aV9XvjdTY/e9TQOBfPQ7dgpvoFKVEyA4APirF3h6kwzU7eXuhTCqKmWP+wqgWGN6B6B1nb0pnZl5uWM3ed281df2mjysAtLH7cOnT6nQWFTOVs4He4mSTxwBbzLfMua8mI+huhnGM1lLOSHAlNy+J568kwFKuPV7/EHKHCngmN7po1sKKnI53eWqJoSzMgebdYTsT64rHy7HM+Nk33xxHV75SKbnh16m70jDiwKxUQsgn7xxVPpvyRjzfP7ediwAa4I543fziAWc7FZivB0/Cvo2umwFPRg1m9pzbNoEBWtGryw6s0jNB0edD99c/EMoJWv1WDrBU2TSm3KMPQ5EoFJyjszb6aW4QAPYg44Xw77Fnaaht0v57afnbHvVS8GCIXh6Rqs8PQePRKgFHg6GZLGMhMSWYMoaRXX2rQ9KIe+VQ1BilXQcocuBzL8MJktaGKSpjsZ7YXrEm57dlfyqjpckgXYA8wk7wcMyL4dsWC1nTfrPd7n0SZIXvZ+EqR37eRlC8RRFCn2KpL0KzoaoYWvhoq4pvffKYq+9KNw9yYJfqgnuxjxrg8p6izl3cgqEXV6aiDnqaDUv81yvSkspcEMO/hn4gyTgebkcm/P7YHu+aZnhxwehoGIr17uYZVye4bJATrZid5JidvadFlB4kfn4q8ZLpuQSrjrP36RCmVteFsP/BGeAjk/cubXpCe4XR3VRR3Siq6kAWXLYh7hv3N5jrr5vwkzFQvWZmy1RW7NvX2B1YBLqIYYgBf42Hn1Rft8z1bAVEjX58HFK6I+d36qaenNi35WI2M3ufJmkWVyasaDRHMwP25ysYfavSoIiW6STtHx42k11aPakBJD0lLRB3WbrOkFfqPmn87EcTeqbWLeS51eQQ1hUqxIrXdnHDhbgZE/Ke0GBcXqekVR/CTSvFBCwwvjOy6SrwyCnzPOX+Qg6s7x1yJi9Q9S9AALYdsVxOXCO/sn3OAXBLcdyP5MFS2vRvh/5vCBnEQbfRrHTHi7EWty341DseB3PZpOiBSE6A6rUcdEAT8qKxcbZRxpQja1tmdxJGjBCiweYe30bsALifggpyK+n3oxsjjcNwjFlTQ9oaWHSrMSHMEVnQ1IsPqZkcQ2JNbX3WO7+fDKktWGA5TEWoF02S2z5sacb7pRkekElm4EmIDfQsQyCsbQZZmBID5G5JHwz1X9DcyfFWsATrj/qPt3qkTPfKkJ3grn9FZGsNDEePGE7eo7gJ7bIN2s6qF6dnxxtIdRrT/3pVKzuYE1SEfSbVFfJ8KMVe20ac7LL0tKQiqj+INLTSUIQzZg9D8iYVt7mhdPEVL0uvScp2Mu0VRIi28tzqe5znMq/hYiVRbCdod6nHQUdDegFIqpwsUNBJDL/WGXSqo3coO/57JeYYsxkoR7Fge7iAG2hAgylkTfdJzpsusXqBaqxNw5rDGwkXFflv0ZQViROXUc1Yv9wfZli4M9rmC/JIyikzDyRrn+990csrCsi+jNHFXyrPvR2PPWrUYufilun/B70jz+TDJnRRTMw7bKgd26l13+rmmDZj15k98MbbYPoAVpFWwSnKdZge4Xdgp2CNn9qSYnlv5dUUBUMrboMNnQfEUSMAjSZZ44HnDuAwaRzLJsHhHBm7gF17hSdoSVeKmEcUmzLQ68wPT3ravz4z6KmHUTolSF0nqIpeu2wm9SoccRm4qBo6snxU3nkNzEiiLJz3qyLGRuUnDWHmFzSsGRCZ559+Uswe4kzQuz5YTn8hoSy9dylvCvy0pvgp4MvZsFe3N8Yven+L3hohb9s52i1MYRw3jpM+rznrzoJSVpiwOSTfCa1tK9g3XclOFdy88WZDKAh6i/VJI3cERZdXnwucFqvus3OppjiNgwEcpgVfaBcDL/cguHHFAkcj1TxGgzJ4RwmtP93+Kp3XN8+NQMV611p7SwJsXwFlOu4i5MCyMuYUBba0kDcTRyEg1OcM7ZVM7322kyTzu75C+fJDXPrL59xWHU3U9Y9Rhn1Gl1Inhy03bJ+xFp20K2dQfroAAgGf+HTwVWTFzygx5D1DLGsoH8ckdDHYTvOLexjltzxSw8aHSReXo0NfkP6qxFN4NYikzpQ5bx9FWIFL5nmHKRfBlumqyaM4OIvIhAp9kP4+xYdiVJCjzkidW2Kw33hRX7Fbu/2u0ID1pjVYmq72nyj+2+/dOebfYXvCH+rFf3v/U+KQ5F6wRLwwgJCbE28+JolirUt8PxX3+cfeskYtnZs6cEpIrmJmVqCXf9qwP2k9vFT2Bp6oS5ff2ENNiRJWBXkQWivrhS1wuZJ66XNNYa/r1W0kW9twh9vADBIHSzaZtif/SI0lYOt4Nt74Fx9ZqOWwpgmU6JrDiDVxtao5g4AZp81G4gUx6JwoS0HSi3i7/ImfrX+tZG2smjiLHoxPJYLN9uqqHF5IBkPmdlAG+1kqsjsXIgb3zLQBCjTNsd96cFgyT8lXQOGD7Hz31NDBX3FnsTyxOWNzyWpDbFSOh4VlY77eP3y3673qIJ7JPAjLyeutQ7quiqvYtVVyzWN3c1Hbuagd9tz/hl3tPfQn+B1SlSO/5KZROYBN9b4Iqslu5hE7VVPXv2by/qLCAm04daFLpHO+wzPByU02qDDoamA6wHLy8kY/z9Au4A1dm2v0BZ8+xVpbMbFGiou04AAtR/cOFECmNLQiLFaEDq3rkGFbcUXGLm8t52mnO/3FhxO0sw15o7HKRZpCDOMJuWnxjZzPu/wmqWOFh3d1jEWvU+Y6+JR9Lzf9pncLvt/9E83YijgPKVviSwFWG1gc3Ob0HDBZxizk1+cTlncLXKeKOjS65EMdtB9Mo8lcaD2BfTAwDOAK+bH6eICq0pNny95yqAv2p1aFpHqFLe9KrYELjHISl7b0J7oh3Xbwe+wcLZMWwthKkCLOufqOft4HPuCAVjQz2XPeTlc9b3,iv:FEBT6q49/pXSon8NFmPMww6t0oQiDhql4dUq/Hof4rk=,tag:LI/uE+iyFgWK1SPUf3ZiLg==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1emnd8nmqzfzeavkzcsk3drn65xky22af6r5wxwvm2k067kkt4adsqxyv2u
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6QjhmVHpaTU1JNkFuKzhY
|
||||
TVZOTVVuQ2pTYURzNXBoTGVSbVFPL2RJRlZJCmptOEw1ckhCWTFpNVc2aGhhY0Fl
|
||||
aEFMSVpvbGRCckZlcEo0WEtTTHIxOTQKLS0tIG1PZUxSejJ0WGVmV0xIQVJnanpU
|
||||
QzcyK0h6YldzTkYrZFJXb3YzOG9qK0EKpbeTaXm6pAgAmaUKdu9s/+VBVxzWZwmj
|
||||
aditPFcdqIhgkSoRoJhBLE7S4QZ6clCmKP4gCWVHg0KgpyKaZgxOFw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-09-22T07:34:53Z"
|
||||
mac: ENC[AES256_GCM,data:Kml4tDRtBlBCzI4nfgheAhIT4Y6w1jhUMqrCoqcUUus96OUNOgpNQwvxFl0QcWQ2OGkZEZwyggCvmrW52ycCQ16y6W+uuDLeTp3wrkoWCexrOWu7h5boNcIaryDGn8JCpUet799wFG+FfUuSCPRbPyPw+BegpFvu+NQnRp4yLy8=,iv:cN/IKQVlCSNZrffbKfKX/FLADJTLRNBWstoo8nvJEZk=,tag:4LelM6YiZpiQfzMt4O6Qjg==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.0
|
Loading…
Add table
Add a link
Reference in a new issue