I should commit more frequently 🫣
This commit is contained in:
parent
d7e82621c8
commit
f1483e45f0
70 changed files with 2344 additions and 599 deletions
677
flake.lock
generated
677
flake.lock
generated
File diff suppressed because it is too large
Load diff
29
flake.nix
29
flake.nix
|
@ -3,8 +3,9 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
flakeParts.url = "github:hercules-ci/flake-parts";
|
flakeParts.url = "github:hercules-ci/flake-parts";
|
||||||
nixpkgsUnstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
# nixpkgsUnstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgsStable.url = "github:NixOS/nixpkgs/nixos-22.11";
|
nixpkgsUnstable.follows = "hyprland/nixpkgs";
|
||||||
|
nixpkgsStable.url = "github:NixOS/nixpkgs/nixos-23.05";
|
||||||
nixosHardware.url = "github:NixOS/nixos-hardware";
|
nixosHardware.url = "github:NixOS/nixos-hardware";
|
||||||
homeManager = {
|
homeManager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
|
@ -30,11 +31,10 @@
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
comma.url = "github:nix-community/comma";
|
comma.url = "github:nix-community/comma";
|
||||||
rock5b.url = "github:aciceri/rock5b-nixos";
|
rock5b.url = "github:aciceri/rock5b-nixos";
|
||||||
# ccrEmacs.url = "github:aciceri/emacs";
|
ccrEmacs.url = "github:aciceri/emacs";
|
||||||
# ccrEmacs.url = "/home/ccr/.config/emacs";
|
# ccrEmacs.url = "/home/ccr/.config/emacs";
|
||||||
hyprland = {
|
hyprland = {
|
||||||
url = "github:hyprwm/hyprland/v0.26.0";
|
url = "github:hyprwm/hyprland";
|
||||||
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
|
||||||
};
|
};
|
||||||
hyprpaper = {
|
hyprpaper = {
|
||||||
url = "github:hyprwm/hyprpaper";
|
url = "github:hyprwm/hyprpaper";
|
||||||
|
@ -77,6 +77,7 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
||||||
};
|
};
|
||||||
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
|
hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects";
|
||||||
|
# nixpkgsImmich.url = "github:oddlama/nixpkgs/init-immich";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {flakeParts, ...}:
|
outputs = inputs @ {flakeParts, ...}:
|
||||||
|
@ -95,17 +96,11 @@
|
||||||
herculesCI.ciSystems = ["x86_64-linux" "aarch64-linux"];
|
herculesCI.ciSystems = ["x86_64-linux" "aarch64-linux"];
|
||||||
});
|
});
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
# extra-substituters = [
|
extra-substituters = [
|
||||||
# "ssh-ng://root@cache.aciceri.dev"
|
"https://hyprland.cachix.org"
|
||||||
# "https://nix-community.cachix.org"
|
];
|
||||||
# "https://rock5b-nixos.cachix.org"
|
extra-trusted-public-keys = [
|
||||||
# "https://helix.cachix.org"
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
# ];
|
];
|
||||||
# extra-trusted-public-keys = [
|
|
||||||
# "cache.aciceri.dev-1:aNP6f+rRTuDHi/45L1VBzlGchuj54/mI2N/22qTWgzE="
|
|
||||||
# "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
# "rock5b-nixos.cachix.org-1:bXHDewFS0d8pT90A+/YZan/3SjcyuPZ/QRgRSuhSPnA="
|
|
||||||
# "helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
|
|
||||||
# ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = [pkgs.element-desktop];
|
home.packages = [pkgs.schildichat-desktop];
|
||||||
|
|
||||||
systemd.user.services.element-desktop = {
|
systemd.user.services.element-desktop = {
|
||||||
Install.WantedBy = ["graphical-session.target"];
|
Install.WantedBy = ["graphical-session.target"];
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
ExecStart = "${pkgs.element-desktop}/bin/element-desktop";
|
ExecStart = "${pkgs.schildichat-desktop}/bin/schildichat-desktop";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartSec = 3;
|
RestartSec = 3;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
{lib, ...}: {
|
{lib, ...}: {
|
||||||
ccrEmacs.enable = true;
|
ccrEmacs.enable = true;
|
||||||
|
home.sessionVariables.EDITOR = lib.mkForce "emacsclient";
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,13 +19,9 @@
|
||||||
privacy-badger
|
privacy-badger
|
||||||
ublock-origin
|
ublock-origin
|
||||||
tridactyl
|
tridactyl
|
||||||
octotree
|
|
||||||
octolinker
|
|
||||||
org-capture
|
|
||||||
browserpass
|
browserpass
|
||||||
# bypass-paywalls-clean
|
# bypass-paywalls-clean
|
||||||
ghosttext # or edit-with-emacs?
|
ghosttext # or edit-with-emacs?
|
||||||
# fx_cast # TODO make PR to rycee NUR repo
|
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
"browser.startup.homepage" = "https://google.it";
|
"browser.startup.homepage" = "https://google.it";
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{age, ...}: {
|
{age, ...}: {
|
||||||
programs.git-workspace.enable = true;
|
|
||||||
services.git-workspace = {
|
services.git-workspace = {
|
||||||
enable = true;
|
enable = true;
|
||||||
frequency = "04:00:00";
|
frequency = "04:00:00";
|
||||||
|
|
|
@ -19,7 +19,7 @@ in {
|
||||||
gpg.format = "ssh";
|
gpg.format = "ssh";
|
||||||
commit.gpgsign = true;
|
commit.gpgsign = true;
|
||||||
|
|
||||||
core.editor = "hx";
|
core.editor = "emacsclient";
|
||||||
};
|
};
|
||||||
|
|
||||||
userName = config.name;
|
userName = config.name;
|
||||||
|
@ -37,7 +37,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
delta = {
|
delta = {
|
||||||
enable = false; # Playing with difftastic at the moment
|
enable = false;
|
||||||
options = {
|
options = {
|
||||||
features = "decorations";
|
features = "decorations";
|
||||||
delta = {
|
delta = {
|
||||||
|
@ -50,5 +50,9 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
background = "dark";
|
background = "dark";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
diff-so-fancy.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [delta];
|
||||||
}
|
}
|
||||||
|
|
21
hmModules/gnome-keyring/default.nix
Normal file
21
hmModules/gnome-keyring/default.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.gnome-keyring = {
|
||||||
|
enable = false; # Is this broken? https://github.com/nix-community/home-manager/issues/1454
|
||||||
|
components = lib.mkForce [
|
||||||
|
"secrets"
|
||||||
|
"ssh"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = [pkgs.gcr]; # Needed in PATH
|
||||||
|
|
||||||
|
# Workaround
|
||||||
|
wayland.windowManager.hyprland.extraConfig = ''
|
||||||
|
exec-once = ${pkgs.gnome.gnome-keyring}/bin/gnome-keyring-daemon --start --foreground --components=secrets,ssh,pkcs
|
||||||
|
'';
|
||||||
|
}
|
|
@ -18,6 +18,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.sessionVariables.EDITOR = lib.mkForce "${config.programs.helix.package}/bin/helix";
|
# home.sessionVariables.EDITOR = lib.mkForce "${config.programs.helix.package}/bin/helix";
|
||||||
programs.nushell.environmentVariables.EDITOR = lib.mkForce config.home.sessionVariables.EDITOR;
|
# programs.nushell.environmentVariables.EDITOR = lib.mkForce config.home.sessionVariables.EDITOR;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,16 @@
|
||||||
${pkgs.grim}/bin/grim -t png -g "$coords" "$filename"
|
${pkgs.grim}/bin/grim -t png -g "$coords" "$filename"
|
||||||
wl-copy -t image/png < $filename
|
wl-copy -t image/png < $filename
|
||||||
'';
|
'';
|
||||||
|
hyprland = config.wayland.windowManager.hyprland.package;
|
||||||
|
switchMonitorScript = pkgs.writeShellScript "switch-monitor.sh" ''
|
||||||
|
if [[ "$(${hyprland}/bin/hyprctl monitors) | grep '\sDP-[0-9]+'" ]]; then
|
||||||
|
if [[ $1 == "open" ]]; then
|
||||||
|
${hyprland}/bin/hyprctl keyword monitor "eDP-1,1920x1080,3760x230,1"
|
||||||
|
else
|
||||||
|
${hyprland}/bin/hyprctl keyword monitor "eDP-1,disable"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
'';
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./hyprpaper.nix
|
./hyprpaper.nix
|
||||||
|
@ -17,6 +27,7 @@ in {
|
||||||
../mako
|
../mako
|
||||||
../gammastep
|
../gammastep
|
||||||
../kitty
|
../kitty
|
||||||
|
../wezterm
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [wl-clipboard];
|
home.packages = with pkgs; [wl-clipboard];
|
||||||
|
@ -41,6 +52,33 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.kanshi = {
|
||||||
|
enable = false;
|
||||||
|
systemdTarget = "hyprland-session.target";
|
||||||
|
profiles = {
|
||||||
|
undocked = {
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
status = "enable";
|
||||||
|
criteria = "eDP-1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
docked = {
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
status = "disable";
|
||||||
|
criteria = "eDP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
status = "enable";
|
||||||
|
criteria = "DP-1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
@ -50,24 +88,31 @@ in {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
monitor = DP-2, 1920x1200, 0x0, 1, transform, 3
|
# monitor = DP-2, 1920x1200, 0x0, 1, transform, 3
|
||||||
monitor = DP-1, 2560x1440, 1200x320, 1
|
# monitor = DP-1, 2560x1440, 1200x320, 1
|
||||||
|
# monitor = eDP-1, 1920x1080, 3760x230, 1
|
||||||
|
|
||||||
|
monitor = DP-2, 2560x1440, 1200x320, 1
|
||||||
monitor = eDP-1, 1920x1080, 3760x230, 1
|
monitor = eDP-1, 1920x1080, 3760x230, 1
|
||||||
|
|
||||||
exec-once = ${config.programs.waybar.package}/bin/waybar
|
bindl=,switch:off:Lid Switch,exec,${switchMonitorScript} open
|
||||||
|
bindl=,switch:on:Lid Switch,exec,${switchMonitorScript} close
|
||||||
|
|
||||||
exec-once = ${config.services.mako.package}/bin/mako
|
exec-once = ${config.services.mako.package}/bin/mako
|
||||||
exec-once = ${pkgs.hyprpaper}/bin/hyprpaper
|
exec-once = ${pkgs.hyprpaper}/bin/hyprpaper
|
||||||
exec-once = ${config.programs.thunderbird.package}/bin/thunderbird
|
|
||||||
|
|
||||||
windowrulev2 = tile, class:^(Spotify)$
|
windowrulev2 = tile, class:^(Spotify)$
|
||||||
windowrulev2 = workspace 9, class:^(Spotify)$
|
windowrulev2 = workspace 9, class:^(Spotify)$
|
||||||
windowrulev2 = workspace 8, class:thunderbird
|
windowrulev2 = tile, class:^(fluffychat)$
|
||||||
|
windowrulev2 = workspace 8, class:^(fluffychat)$
|
||||||
|
windowrulev2 = tile, class:^(WhatsApp for Linux)$
|
||||||
|
windowrulev2 = workspace 7, class:^(WhatsApp for Linux)$
|
||||||
|
|
||||||
bind = SUPER, b, exec, firefox
|
bind = SUPER, b, exec, firefox
|
||||||
bind = SUPER SHIFT, b , exec, ${pkgs.waypipe}/bin/waypipe --compress lz4=10 ssh mothership.fleet firefox
|
bind = SUPER SHIFT, b , exec, ${pkgs.waypipe}/bin/waypipe --compress lz4=10 ssh mothership.fleet firefox
|
||||||
bind = SUPER SHIFT, RETURN, exec, ${config.programs.kitty.package}/bin/kitty ssh mothership.fleet
|
bind = SUPER SHIFT, RETURN, exec, ${config.programs.wezterm.package}/bin/wezterm ssh mothership.fleet
|
||||||
bind = SUPER, m, exec, ${config.programs.kitty.package}/bin/kitty mosh mothership.fleet
|
bind = SUPER, m, exec, ${config.programs.wezterm.package}/bin/wezterm start -- mosh mothership.fleet
|
||||||
bind = SUPER, RETURN, exec, ${config.programs.kitty.package}/bin/kitty
|
bind = SUPER, RETURN, exec, ${config.programs.wezterm.package}/bin/wezterm
|
||||||
bind = SUPER, x, exec, emacsclient -c
|
bind = SUPER, x, exec, emacsclient -c
|
||||||
bind = SUPER, y, exec, ${pkgs.waypipe}/bin/waypipe --compress lz4=10 ssh mothership.fleet emacsclient -c
|
bind = SUPER, y, exec, ${pkgs.waypipe}/bin/waypipe --compress lz4=10 ssh mothership.fleet emacsclient -c
|
||||||
bind = SUPER, d, exec, ${pkgs.fuzzel}/bin/fuzzel --background-color=253559cc --border-radius=5 --border-width=0
|
bind = SUPER, d, exec, ${pkgs.fuzzel}/bin/fuzzel --background-color=253559cc --border-radius=5 --border-width=0
|
||||||
|
@ -120,10 +165,10 @@ in {
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
rounding = 4
|
rounding = 4
|
||||||
blur = true
|
# blur = true
|
||||||
blur_size = 8
|
# blur_size = 8
|
||||||
blur_passes = 1
|
# blur_passes = 1
|
||||||
blur_new_optimizations = true
|
# blur_new_optimizations = true
|
||||||
|
|
||||||
drop_shadow = true
|
drop_shadow = true
|
||||||
shadow_range = 4
|
shadow_range = 4
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
settings = {
|
settings = {
|
||||||
git.paging = {
|
git.paging = {
|
||||||
colorArg = "always";
|
colorArg = "always";
|
||||||
useConfig = true;
|
useConfig = false;
|
||||||
|
# pager = "${pkgs.diff-so-fancy}/bin/diff-so-fancy";
|
||||||
pager = "${pkgs.delta}/bin/delta --dark --paging=never";
|
pager = "${pkgs.delta}/bin/delta --dark --paging=never";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
18
hmModules/nheko/default.nix
Normal file
18
hmModules/nheko/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = [pkgs.nheko];
|
||||||
|
|
||||||
|
# systemd.user.services.nheko = {
|
||||||
|
# Install.WantedBy = ["graphical-session.target"];
|
||||||
|
|
||||||
|
# Unit = {
|
||||||
|
# Description = "Nheko";
|
||||||
|
# PartOf = ["graphical-session.target"];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Service = {
|
||||||
|
# ExecStart = "${pkgs.nheko}/bin/nheko";
|
||||||
|
# Restart = "on-failure";
|
||||||
|
# RestartSec = 3;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
13
hmModules/pantalaimon/default.nix
Normal file
13
hmModules/pantalaimon/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
services.pantalaimon = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
local-matrix = {
|
||||||
|
Homeserver = "https://nixos.dev";
|
||||||
|
ListenAddress = "127.0.0.1";
|
||||||
|
ListenPort = 8008;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.user.services.pantalaimon.Unit.Requires = ["dbus.socket"];
|
||||||
|
}
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
# Playing with it sometimes
|
# Playing with it sometimes
|
||||||
programs.nushell = {
|
programs.nushell = {
|
||||||
enable = true;
|
enable = false;
|
||||||
configFile.text = ''
|
configFile.text = ''
|
||||||
let carapace_completer = {|spans|
|
let carapace_completer = {|spans|
|
||||||
carapace $spans.0 nushell $spans | from json
|
carapace $spans.0 nushell $spans | from json
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = false; # Disabled in favor on nushell but still here for posterity
|
enable = true;
|
||||||
enableAutosuggestions = true;
|
enableAutosuggestions = true;
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
enableSyntaxHighlighting = true;
|
enableSyntaxHighlighting = true;
|
||||||
|
@ -117,17 +117,42 @@
|
||||||
"thefuck"
|
"thefuck"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "fzf-tab";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "Aloxaf";
|
||||||
|
repo = "fzf-tab";
|
||||||
|
rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9";
|
||||||
|
sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fzf-tab";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "Aloxaf";
|
||||||
|
repo = "fzf-tab";
|
||||||
|
rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9";
|
||||||
|
sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fast-syntax-highlighting";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "zdharma-continuum";
|
||||||
|
repo = "fast-syntax-highlighting";
|
||||||
|
rev = "13d7b4e63468307b6dcb2dadf6150818f242cbff";
|
||||||
|
sha256 = "sha256-AmsexwVombgVmRvl4O9Kd/WbnVJHPTXETxBv18PDHz4=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
"cat" = "bat";
|
"cat" = "bat";
|
||||||
"emw" = "emacsclient -c";
|
"em" = "TERM=wezterm emacsclient -nw";
|
||||||
"emnw" = "emacsclient -c -nw";
|
|
||||||
"pass-clone" = "[ -d .password-store ] && echo 'Password store archive already exists' || git clone git@git.sr.ht:~zrsk/pass ~/.password-store";
|
|
||||||
"getpass" = "pass show $(find .password-store/ -name \"*.gpg\" | sed \"s/\\.password-store\\/\\(.*\\)\\.gpg$/\\1/g\" | fzf) | wl-copy; ((sleep 60 && wl-copy --clear) &)";
|
|
||||||
"n" = "nom";
|
|
||||||
};
|
};
|
||||||
loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec sway";
|
loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec dbus-run-session Hyprland";
|
||||||
envExtra = ''
|
envExtra = ''
|
||||||
[ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' # for Emacs TRAMP mode
|
# [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' # for Emacs TRAMP mode
|
||||||
'';
|
'';
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path})
|
export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path})
|
||||||
|
@ -149,6 +174,8 @@
|
||||||
zsh-completions
|
zsh-completions
|
||||||
nix-zsh-completions
|
nix-zsh-completions
|
||||||
carapace # used by nushell
|
carapace # used by nushell
|
||||||
|
nil # TODO probably not best place
|
||||||
|
terraform-lsp # TODO probably not best place
|
||||||
# nom # FIXME disable on aarch64-linux, breaks everything :(
|
# nom # FIXME disable on aarch64-linux, breaks everything :(
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: let
|
||||||
home.packages = [pkgs.nur.repos.nltch.spotify-adblock.spotify-adblocked];
|
spotify-adblock = pkgs.nur.repos.nltch.spotify-adblock;
|
||||||
|
in {
|
||||||
|
home.packages = [spotify-adblock];
|
||||||
|
|
||||||
|
systemd.user.services.spotify-adblocked = {
|
||||||
|
Install.WantedBy = ["graphical-session.target"];
|
||||||
|
|
||||||
|
Unit = {
|
||||||
|
Description = "Spotify";
|
||||||
|
PartOf = ["graphical-session.target"];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${spotify-adblock}/bin/spotify";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,5 +55,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# Otherwise it will start only after Sway and will not work with Hyprland
|
# Otherwise it will start only after Sway and will not work with Hyprland
|
||||||
systemd.user.services.swayidle.Unit.PartOf = lib.mkForce [];
|
systemd.user.services.swayidle = {
|
||||||
|
Unit.PartOf = lib.mkForce [];
|
||||||
|
Install.WantedBy = lib.mkForce ["hyprland-session.target"];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
fleetFlake,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
package = pkgs.waybar.overrideAttrs (old: {
|
# package = fleetFlake.packages.${pkgs.system}.waybar-hyprland;
|
||||||
mesonFlags = old.mesonFlags ++ ["-Dexperimental=true"];
|
|
||||||
patchPhase = ''
|
|
||||||
sed -i -e 's/zext_workspace_handle_v1_activate(workspace_handle_);/const std::string command = "hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());/g' src/modules/wlr/workspace_manager.cpp
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
enable = true;
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
style = builtins.readFile ./style.css;
|
style = builtins.readFile ./style.css;
|
||||||
settings = {
|
settings = {
|
||||||
mainBar = {
|
mainBar = {
|
||||||
|
@ -17,7 +20,7 @@
|
||||||
|
|
||||||
modules-left = [
|
modules-left = [
|
||||||
"wlr/mode"
|
"wlr/mode"
|
||||||
"wlr/workspaces"
|
"hyprland/workspaces"
|
||||||
];
|
];
|
||||||
modules-center = ["wlr/window"];
|
modules-center = ["wlr/window"];
|
||||||
modules-right = [
|
modules-right = [
|
||||||
|
@ -31,7 +34,7 @@
|
||||||
"clock"
|
"clock"
|
||||||
];
|
];
|
||||||
|
|
||||||
"wlr/workspaces" = {
|
"hyprland/workspaces" = {
|
||||||
all-outputs = true;
|
all-outputs = true;
|
||||||
disable-scroll-wraparound = true;
|
disable-scroll-wraparound = true;
|
||||||
# format = "{icon}";
|
# format = "{icon}";
|
||||||
|
@ -56,8 +59,8 @@
|
||||||
format = "{capacity}% {icon}";
|
format = "{capacity}% {icon}";
|
||||||
format-alt = "{time} {icon}";
|
format-alt = "{time} {icon}";
|
||||||
format-charging = "{capacity}% ";
|
format-charging = "{capacity}% ";
|
||||||
format-icons = ["" "" "" "" ""];
|
format-icons = [" " " " " " " " " "];
|
||||||
format-plugged = "{capacity}% ";
|
format-plugged = "{capacity}% ";
|
||||||
states = {
|
states = {
|
||||||
critical = 15;
|
critical = 15;
|
||||||
warning = 30;
|
warning = 30;
|
||||||
|
@ -76,9 +79,9 @@
|
||||||
interval = 1;
|
interval = 1;
|
||||||
format-alt = "{ifname}: {ipaddr}/{cidr}";
|
format-alt = "{ifname}: {ipaddr}/{cidr}";
|
||||||
format-disconnected = "Disconnected ⚠";
|
format-disconnected = "Disconnected ⚠";
|
||||||
format-ethernet = "{ifname}: {ipaddr}/{cidr} up: {bandwidthUpBits} down: {bandwidthDownBits}";
|
format-ethernet = "{ifname}: {ipaddr}/{cidr} up: {bandwidthUpBits} down: {bandwidthDownBits}";
|
||||||
format-linked = "{ifname} (No IP) ";
|
format-linked = "{ifname} (No IP) ";
|
||||||
format-wifi = "{essid} ({signalStrength}%) ";
|
format-wifi = "{essid} ({signalStrength}%) {ipaddr}/{cidr} up: {bandwidthUpBits} down: {bandwidthDownBits}";
|
||||||
};
|
};
|
||||||
pulseaudio = {
|
pulseaudio = {
|
||||||
format = "{volume}% {icon} {format_source}";
|
format = "{volume}% {icon} {format_source}";
|
||||||
|
@ -86,9 +89,9 @@
|
||||||
format-bluetooth-muted = " {icon} {format_source}";
|
format-bluetooth-muted = " {icon} {format_source}";
|
||||||
format-icons = {
|
format-icons = {
|
||||||
car = "";
|
car = "";
|
||||||
default = ["" "" ""];
|
default = [" " " " " "];
|
||||||
handsfree = "";
|
handsfree = "";
|
||||||
headphones = "";
|
headphones = " ";
|
||||||
headset = "";
|
headset = "";
|
||||||
phone = "";
|
phone = "";
|
||||||
portable = "";
|
portable = "";
|
||||||
|
@ -108,4 +111,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# waybar needs the hyprctl binary in PATH when started in hyprland
|
||||||
|
systemd.user.services.waybar.Service.Environment = "PATH=${lib.makeBinPath [pkgs.hyprland]}";
|
||||||
}
|
}
|
||||||
|
|
30
hmModules/wezterm/default.nix
Normal file
30
hmModules/wezterm/default.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{...}: {
|
||||||
|
programs.wezterm = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
return {
|
||||||
|
font = wezterm.font_with_fallback {
|
||||||
|
{
|
||||||
|
family = 'Iosevka Comfy',
|
||||||
|
stretch = 'Expanded',
|
||||||
|
weight = 'Regular',
|
||||||
|
harfbuzz_features = { 'dlig=1' }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
font_size = 13;
|
||||||
|
allow_square_glyphs_to_overflow_width = "Always";
|
||||||
|
color_scheme = "Dracula (Official)";
|
||||||
|
window_background_opacity = 1;
|
||||||
|
enable_tab_bar = false;
|
||||||
|
hide_mouse_cursor_when_typing = false;
|
||||||
|
window_close_confirmation = "NeverPrompt";
|
||||||
|
window_padding = {
|
||||||
|
left = '1cell',
|
||||||
|
right = '1cell',
|
||||||
|
top = '0.5cell',
|
||||||
|
bottom = '0.5cell',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
18
hmModules/whatsapp/default.nix
Normal file
18
hmModules/whatsapp/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = [pkgs.whatsapp-for-linux];
|
||||||
|
|
||||||
|
systemd.user.services.whatsapp = {
|
||||||
|
Install.WantedBy = ["graphical-session.target"];
|
||||||
|
|
||||||
|
Unit = {
|
||||||
|
Description = "Whatsapp";
|
||||||
|
PartOf = ["graphical-session.target"];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.whatsapp-for-linux}/bin/whatsapp-for-linux";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,7 +1,12 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
mimeApps.enable = true;
|
mimeApps.enable = true;
|
||||||
|
mimeApps.defaultApplications = {
|
||||||
|
"text/html" = ["firefox.desktop"];
|
||||||
|
"x-scheme-handler/http" = ["firefox.desktop"];
|
||||||
|
"x-scheme-handler/https" = ["firefox.desktop"];
|
||||||
|
};
|
||||||
desktopEntries = {
|
desktopEntries = {
|
||||||
org-protocol = {
|
org-protocol = {
|
||||||
name = "org-protocol";
|
name = "org-protocol";
|
||||||
|
@ -10,6 +15,14 @@
|
||||||
terminal = false;
|
terminal = false;
|
||||||
mimeType = ["x-scheme-handler/org-protocol"];
|
mimeType = ["x-scheme-handler/org-protocol"];
|
||||||
};
|
};
|
||||||
|
firefox = {
|
||||||
|
name = "firefox";
|
||||||
|
genericName = "Firefox protocol";
|
||||||
|
exec = "firefox -- %U";
|
||||||
|
terminal = false;
|
||||||
|
mimeType = ["text/html" "text/xml" "text/uri"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
home.packages = [pkgs.xdg-utils];
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,10 @@
|
||||||
({config, ...}: {
|
({config, ...}: {
|
||||||
home-manager.users."${user}" = {
|
home-manager.users."${user}" = {
|
||||||
imports = extraHmModules;
|
imports = extraHmModules;
|
||||||
_module.args.age = config.age or {};
|
_module.args = {
|
||||||
|
age = config.age or {};
|
||||||
|
fleetFlake = self;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
]))
|
]))
|
||||||
|
@ -168,7 +171,7 @@
|
||||||
hyprland.nixosModules.default
|
hyprland.nixosModules.default
|
||||||
];
|
];
|
||||||
extraHmModules = with inputs; [
|
extraHmModules = with inputs; [
|
||||||
# ccrEmacs.hmModules.default
|
ccrEmacs.hmModules.default
|
||||||
hyprland.homeManagerModules.default
|
hyprland.homeManagerModules.default
|
||||||
];
|
];
|
||||||
overlays = [inputs.nil.overlays.default];
|
overlays = [inputs.nil.overlays.default];
|
||||||
|
@ -188,6 +191,9 @@
|
||||||
"rock5b-wireguard-private-key" = {};
|
"rock5b-wireguard-private-key" = {};
|
||||||
"hercules-ci-join-token".owner = "hercules-ci-agent";
|
"hercules-ci-join-token".owner = "hercules-ci-agent";
|
||||||
"hercules-ci-binary-caches".owner = "hercules-ci-agent";
|
"hercules-ci-binary-caches".owner = "hercules-ci-agent";
|
||||||
|
"cachix-personal-token".owner = "ccr";
|
||||||
|
"home-planimetry".owner = "hass";
|
||||||
|
# "nextcloud-admin-pass".owner = "nextcloud";
|
||||||
# "aws-credentials" = {};
|
# "aws-credentials" = {};
|
||||||
};
|
};
|
||||||
colmena.deployment.buildOnTarget = true;
|
colmena.deployment.buildOnTarget = true;
|
||||||
|
@ -213,13 +219,12 @@
|
||||||
# hydra.nixosModules.hydra
|
# hydra.nixosModules.hydra
|
||||||
];
|
];
|
||||||
extraHmModules = [
|
extraHmModules = [
|
||||||
# inputs.ccrEmacs.hmModules.default
|
inputs.ccrEmacs.hmModules.default
|
||||||
{
|
{
|
||||||
# TODO: remove after https://github.com/nix-community/home-manager/pull/3811
|
# TODO: remove after https://github.com/nix-community/home-manager/pull/3811
|
||||||
imports = let
|
imports = let
|
||||||
hmModules = "${inputs.homeManagerGitWorkspace}/modules";
|
hmModules = "${inputs.homeManagerGitWorkspace}/modules";
|
||||||
in [
|
in [
|
||||||
"${hmModules}/programs/git-workspace.nix"
|
|
||||||
"${hmModules}/services/git-workspace.nix"
|
"${hmModules}/services/git-workspace.nix"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -232,7 +237,7 @@
|
||||||
"magit-forge-github-token".owner = "ccr";
|
"magit-forge-github-token".owner = "ccr";
|
||||||
# "hydra-admin-password".owner = "root";
|
# "hydra-admin-password".owner = "root";
|
||||||
# "hydra-github-token".group = "hydra";
|
# "hydra-github-token".group = "hydra";
|
||||||
"cache-private-key".owner = "nix-serve";
|
# "cache-private-key".owner = "nix-serve";
|
||||||
"hercules-ci-join-token".owner = "hercules-ci-agent";
|
"hercules-ci-join-token".owner = "hercules-ci-agent";
|
||||||
"hercules-ci-binary-caches".owner = "hercules-ci-agent";
|
"hercules-ci-binary-caches".owner = "hercules-ci-agent";
|
||||||
# "minio-credentials".owner = "minio";
|
# "minio-credentials".owner = "minio";
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
"nix"
|
"nix"
|
||||||
# "vm-sala"
|
# "vm-sala"
|
||||||
"vm-mara"
|
"vm-mara"
|
||||||
|
# "vm-ubuntu"
|
||||||
# "hydra"
|
# "hydra"
|
||||||
"hercules-ci"
|
"hercules-ci"
|
||||||
"nix-serve"
|
"nix-serve"
|
||||||
|
@ -23,13 +24,14 @@
|
||||||
# "minio"
|
# "minio"
|
||||||
"proxy"
|
"proxy"
|
||||||
# "binfmt"
|
# "binfmt"
|
||||||
|
"xdg"
|
||||||
];
|
];
|
||||||
|
|
||||||
ccr = {
|
ccr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autologin = true;
|
autologin = true;
|
||||||
modules = [
|
modules = [
|
||||||
# "emacs"
|
"emacs"
|
||||||
"git"
|
"git"
|
||||||
"gpg"
|
"gpg"
|
||||||
"helix"
|
"helix"
|
||||||
|
@ -62,6 +64,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.enableAllTerminfo = true;
|
||||||
|
|
||||||
nixpkgs.config.joypixels.acceptLicense = true;
|
nixpkgs.config.joypixels.acceptLicense = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [waypipe];
|
environment.systemPackages = with pkgs; [waypipe];
|
||||||
|
|
|
@ -12,10 +12,16 @@
|
||||||
"ssh"
|
"ssh"
|
||||||
"ccr"
|
"ccr"
|
||||||
"wireguard-client"
|
"wireguard-client"
|
||||||
"minidlna"
|
# "minidlna"
|
||||||
|
"mediatomb"
|
||||||
"transmission"
|
"transmission"
|
||||||
"hercules-ci"
|
"hercules-ci"
|
||||||
"bubbleupnp"
|
# "bubbleupnp"
|
||||||
|
# "nextcloud"
|
||||||
|
"home-assistant"
|
||||||
|
# "immich"
|
||||||
|
"adguard-home"
|
||||||
|
# "mount-hetzner-box"
|
||||||
]
|
]
|
||||||
++ [
|
++ [
|
||||||
./disko.nix
|
./disko.nix
|
||||||
|
@ -55,6 +61,12 @@
|
||||||
# in ["credentials=${credentials},x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"];
|
# in ["credentials=${credentials},x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"];
|
||||||
# };
|
# };
|
||||||
|
|
||||||
|
fileSystems."/mnt/hd" = {
|
||||||
|
device = "/dev/disk/by-id/ata-WDC_WD10EADS-22M2B0_WD-WCAV52709550-part1";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = ["nofail"];
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# kodi-rock5b
|
# kodi-rock5b
|
||||||
cifs-utils
|
cifs-utils
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
let
|
let
|
||||||
emmc = "/dev/mmcblk0";
|
emmc = "/dev/mmcblk0";
|
||||||
hd1 = "/dev/disk/by-id/ata-WDC_WD10EADS-22M2B0_WD-WCAV52709550";
|
# hd1 = "/dev/disk/by-id/ata-WDC_WD10EADS-22M2B0_WD-WCAV52709550";
|
||||||
hd2 = "/dev/disk/by-id/ata-WDC_WD10EADX-22TDHB0_WD-WCAV5V359530";
|
# hd2 = "/dev/disk/by-id/ata-WDC_WD10EADX-22TDHB0_WD-WCAV5V359530";
|
||||||
|
hd = "/dev/disk/by-id/ata-WDC_WD10EADS-22M2B0_WD-WCAV52709550-part1";
|
||||||
# old_hd = "/dev/disk/by-id/ata-WDC_WD5000AAKX-08U6AA0_WD-WCC2E5TR40FU";
|
# old_hd = "/dev/disk/by-id/ata-WDC_WD5000AAKX-08U6AA0_WD-WCC2E5TR40FU";
|
||||||
in {
|
in {
|
||||||
disko.devices = {
|
disko.devices = {
|
||||||
|
@ -33,67 +34,87 @@ in {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
hd1 = {
|
# hd = {
|
||||||
type = "disk";
|
# type = "disk";
|
||||||
device = hd1;
|
# device = hd;
|
||||||
content = {
|
# content = {
|
||||||
type = "table";
|
# type = "table";
|
||||||
format = "gpt";
|
# format = "gpt";
|
||||||
partitions = [
|
# partitions = [
|
||||||
{
|
# {
|
||||||
name = "primary";
|
# name = "hd";
|
||||||
start = "0";
|
# start = "0%";
|
||||||
end = "100%";
|
# end = "100%";
|
||||||
content = {
|
# content = {
|
||||||
type = "mdraid";
|
# type = "filesystem";
|
||||||
name = "raid1";
|
# format = "ext4";
|
||||||
};
|
# mountpoint = "/mnt/hd";
|
||||||
}
|
# };
|
||||||
];
|
# }
|
||||||
};
|
# ];
|
||||||
};
|
# };
|
||||||
hd2 = {
|
# };
|
||||||
type = "disk";
|
# hd1 = {
|
||||||
device = hd2;
|
# type = "disk";
|
||||||
content = {
|
# device = hd1;
|
||||||
type = "table";
|
# content = {
|
||||||
format = "gpt";
|
# type = "table";
|
||||||
partitions = [
|
# format = "gpt";
|
||||||
{
|
# partitions = [
|
||||||
name = "primary";
|
# {
|
||||||
start = "0";
|
# name = "primary";
|
||||||
end = "100%";
|
# start = "0";
|
||||||
content = {
|
# end = "100%";
|
||||||
type = "mdraid";
|
# content = {
|
||||||
name = "raid1";
|
# type = "mdraid";
|
||||||
};
|
# name = "raid1";
|
||||||
}
|
# };
|
||||||
];
|
# }
|
||||||
};
|
# ];
|
||||||
};
|
# };
|
||||||
|
# };
|
||||||
|
# hd2 = {
|
||||||
|
# type = "disk";
|
||||||
|
# device = hd2;
|
||||||
|
# content = {
|
||||||
|
# type = "table";
|
||||||
|
# format = "gpt";
|
||||||
|
# partitions = [
|
||||||
|
# {
|
||||||
|
# name = "primary";
|
||||||
|
# start = "0";
|
||||||
|
# end = "100%";
|
||||||
|
# content = {
|
||||||
|
# type = "mdraid";
|
||||||
|
# name = "raid1";
|
||||||
|
# };
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
mdadm = {
|
# mdadm = {
|
||||||
raid1 = {
|
# raid1 = {
|
||||||
type = "mdadm";
|
# type = "mdadm";
|
||||||
level = 1;
|
# level = 1;
|
||||||
content = {
|
# content = {
|
||||||
type = "table";
|
# type = "table";
|
||||||
format = "gpt";
|
# format = "gpt";
|
||||||
partitions = [
|
# partitions = [
|
||||||
{
|
# {
|
||||||
name = "primary";
|
# name = "primary";
|
||||||
start = "0";
|
# start = "0";
|
||||||
end = "100%";
|
# end = "100%";
|
||||||
content = {
|
# content = {
|
||||||
type = "filesystem";
|
# type = "filesystem";
|
||||||
format = "ext4";
|
# format = "ext4";
|
||||||
mountpoint = "/mnt/raid";
|
# mountpoint = "/mnt/raid";
|
||||||
};
|
# };
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
"xdg"
|
"xdg"
|
||||||
"nix-development"
|
"nix-development"
|
||||||
"clamav"
|
"clamav"
|
||||||
|
"waydroid"
|
||||||
|
# "gnome-keyring"
|
||||||
];
|
];
|
||||||
|
|
||||||
ccr = {
|
ccr = {
|
||||||
|
@ -42,12 +44,14 @@
|
||||||
"digikam"
|
"digikam"
|
||||||
"discord"
|
"discord"
|
||||||
"element"
|
"element"
|
||||||
|
# "nheko"
|
||||||
# "thunderbird"
|
# "thunderbird"
|
||||||
"aerc"
|
"aerc"
|
||||||
# "emacs"
|
"emacs"
|
||||||
"firefox"
|
"firefox"
|
||||||
"git"
|
"git"
|
||||||
"gpg"
|
"gpg"
|
||||||
|
"gnome-keyring"
|
||||||
"helix"
|
"helix"
|
||||||
"mopidy"
|
"mopidy"
|
||||||
"mpv"
|
"mpv"
|
||||||
|
@ -68,11 +72,14 @@
|
||||||
"lutris"
|
"lutris"
|
||||||
"wine"
|
"wine"
|
||||||
"remmina"
|
"remmina"
|
||||||
|
"whatsapp"
|
||||||
|
# "pantalaimon"
|
||||||
];
|
];
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
comma
|
comma
|
||||||
dolphin-emu-beta
|
dolphin-emu-beta
|
||||||
sc-controller
|
sc-controller
|
||||||
|
libreoffice
|
||||||
];
|
];
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
|
@ -173,7 +180,7 @@
|
||||||
# services.openssh.enable = true;
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
# networking.firewall.allowedTCPPorts = [ 5000];
|
networking.firewall.allowedTCPPorts = [8000];
|
||||||
# networking.firewall.allowedUDPPorts = [ 5000 ];
|
# networking.firewall.allowedUDPPorts = [ 5000 ];
|
||||||
# Or disable the firewall altogether.
|
# Or disable the firewall altogether.
|
||||||
# networking.firewall.enable = false;
|
# networking.firewall.enable = false;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
hosts = {
|
hosts = {
|
||||||
thinkpad = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZMyLFfuBeDfPLn8WL6JazYpYq3oVvCdD4ktyt915TL";
|
thinkpad = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZMyLFfuBeDfPLn8WL6JazYpYq3oVvCdD4ktyt915TL";
|
||||||
mothership = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFlepPWHE9GvQIBcAQBQPd80oiePSPxGDnMdqpdEqx6I";
|
mothership = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFlepPWHE9GvQIBcAQBQPd80oiePSPxGDnMdqpdEqx6I";
|
||||||
rock5b = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOj/9N6A/tGAg3bMYsD3d3Ctacguf5OQkoZlnaBqMjVi";
|
rock5b = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDlpd0GhZv0NyDQBTJ130JfC5/r+PvdkHIOaGssm8cPG";
|
||||||
pbp = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFF05LScu9m5BXMlFAT1g+g/AkAi7kvq1dY6W3Rzqq3f";
|
pbp = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFF05LScu9m5BXMlFAT1g+g/AkAi7kvq1dY6W3Rzqq3f";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
11
modules/adguard-home/default.nix
Normal file
11
modules/adguard-home/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
services.adguardhome = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
bind_port = 3000;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [3000 53];
|
||||||
|
networking.firewall.allowedUDPPorts = [53];
|
||||||
|
}
|
|
@ -4,7 +4,7 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux" "i686-linux"];
|
boot.binfmt.emulatedSystems = ["aarch64-linux" "i686-linux" "riscv64-linux"];
|
||||||
nix.extraOptions = ''
|
nix.extraOptions = ''
|
||||||
extra-platforms = aarch64-linux arm-linux i686-linux
|
extra-platforms = aarch64-linux arm-linux i686-linux
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -52,10 +52,12 @@
|
||||||
description = "Andrea Ciceri";
|
description = "Andrea Ciceri";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
inherit (config.ccr) extraGroups;
|
inherit (config.ccr) extraGroups;
|
||||||
shell = pkgs.nushell;
|
shell = pkgs.zsh;
|
||||||
openssh.authorizedKeys.keys = config.ccr.authorizedKeys;
|
openssh.authorizedKeys.keys = config.ccr.authorizedKeys;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
services.getty.autologinUser =
|
services.getty.autologinUser =
|
||||||
if config.ccr.autologin
|
if config.ccr.autologin
|
||||||
then "ccr"
|
then "ccr"
|
||||||
|
|
|
@ -5,8 +5,10 @@
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
|
virtualisation.podman.enable = true;
|
||||||
users.users.ccr.extraGroups = ["docker"];
|
users.users.ccr.extraGroups = ["docker"];
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
docker-compose
|
docker-compose
|
||||||
|
podman-compose
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
fonts = {
|
fonts = {
|
||||||
fonts = with pkgs; [powerline-fonts dejavu_fonts fira-code fira-code-symbols emacs-all-the-icons-fonts nerdfonts joypixels etBook];
|
fonts = with pkgs; [powerline-fonts dejavu_fonts fira-code fira-code-symbols iosevka iosevka-comfy.comfy emacs-all-the-icons-fonts nerdfonts joypixels etBook];
|
||||||
fontconfig.defaultFonts = {
|
fontconfig.defaultFonts = {
|
||||||
monospace = ["DejaVu Sans Mono for Powerline"];
|
monospace = ["DejaVu Sans Mono for Powerline"];
|
||||||
sansSerif = ["DejaVu Sans"];
|
sansSerif = ["DejaVu Sans"];
|
||||||
|
|
3
modules/gnome-keyring/default.nix
Normal file
3
modules/gnome-keyring/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
}
|
45
modules/grocy/default.nix
Normal file
45
modules/grocy/default.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
grocy = super.grocy.overrideAttrs (old: {
|
||||||
|
meta.broken = false;
|
||||||
|
version = "4.0.1";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "grocy";
|
||||||
|
repo = "grocy";
|
||||||
|
rev = "v4.0.1";
|
||||||
|
hash = "sha256-bCUH2dRCSNkpWyUxGdTdjgVsagbBghcHsBX01+NuHGc=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
|
services.grocy = {
|
||||||
|
enable = true;
|
||||||
|
hostName = "grocy.aciceri.dev";
|
||||||
|
nginx.enableSSL = false;
|
||||||
|
settings = {
|
||||||
|
culture = "it";
|
||||||
|
currency = "EUR";
|
||||||
|
calendar = {
|
||||||
|
firstDayOfWeek = 1;
|
||||||
|
showWeekNumber = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.nginx.virtualHosts.${config.services.grocy.hostName}.listen = [
|
||||||
|
{
|
||||||
|
addr = "0.0.0.0";
|
||||||
|
port = 6789;
|
||||||
|
ssl = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
networking.firewall.interfaces."wg0" = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
6789
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
174
modules/home-assistant/default.nix
Normal file
174
modules/home-assistant/default.nix
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
smartthings-fork = pkgs.fetchFromGitHub {
|
||||||
|
owner = "veista";
|
||||||
|
repo = "smartthings";
|
||||||
|
rev = "ba1a6f33c6ac37d81f4263073571628803e79697";
|
||||||
|
sha256 = "sha256-X3SYkg0B5pzEich7/4iUmlADJneVuT8HTVnIiC7odRE=";
|
||||||
|
};
|
||||||
|
pun_sensor = pkgs.fetchFromGitHub {
|
||||||
|
owner = "virtualdj";
|
||||||
|
repo = "pun_sensor";
|
||||||
|
rev = "19f270b353594ab536f9dc42adf31427e7a81562";
|
||||||
|
hash = "sha256-3pL+8CXzjmR54Ff9qLhHzC/C+uns0qWEgJFHv+K4MFs=";
|
||||||
|
};
|
||||||
|
cozy_life = pkgs.fetchFromGitHub {
|
||||||
|
owner = "yangqian";
|
||||||
|
repo = "hass-cozylife";
|
||||||
|
rev = "9a40a2fa09b0f74aee0b278e2858f5600b3487a9";
|
||||||
|
hash = "sha256-i+82EUamV1Fhwhb1vhRqn9aA9dJ0FxSSMD734domyhw=";
|
||||||
|
};
|
||||||
|
localtuya = pkgs.fetchFromGitHub {
|
||||||
|
owner = "rospogrigio";
|
||||||
|
repo = "localtuya";
|
||||||
|
rev = "f06e4848e67997edfa696aa9a89372fb17077bd0";
|
||||||
|
hash = "sha256-hA/1FxH0wfM0jz9VqGCT95rXlrWjxV5oIkSiBf0G0ac=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
services.home-assistant = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
package = pkgs.home-assistant.overrideAttrs (old: {
|
||||||
|
doInstallCheck = false;
|
||||||
|
prePatch =
|
||||||
|
''
|
||||||
|
rm -rf homeassistant/components/smartthings
|
||||||
|
cp -r ${smartthings-fork}/custom_components/smartthings homeassistant/components/smartthings
|
||||||
|
''
|
||||||
|
+ old.prePatch;
|
||||||
|
});
|
||||||
|
extraComponents = [
|
||||||
|
# components required to complete the onboarding
|
||||||
|
# "esphome"
|
||||||
|
"met"
|
||||||
|
"radio_browser"
|
||||||
|
"frontend"
|
||||||
|
"cloud"
|
||||||
|
"google_translate"
|
||||||
|
"smartthings" # samsung devices
|
||||||
|
"tuya"
|
||||||
|
"timer"
|
||||||
|
"cast"
|
||||||
|
"weather"
|
||||||
|
"backup"
|
||||||
|
"brother"
|
||||||
|
"webostv"
|
||||||
|
"media_player"
|
||||||
|
"wyoming"
|
||||||
|
];
|
||||||
|
extraPackages = python3Packages:
|
||||||
|
with python3Packages; [
|
||||||
|
# used by pun_sensor
|
||||||
|
holidays
|
||||||
|
beautifulsoup4
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
default_config = {};
|
||||||
|
http = {
|
||||||
|
use_x_forwarded_for = true;
|
||||||
|
trusted_proxies = ["10.100.0.1"];
|
||||||
|
};
|
||||||
|
# ffmpeg = {};
|
||||||
|
# camera = [
|
||||||
|
# {
|
||||||
|
# name = "EyeToy";
|
||||||
|
# platform = "ffmpeg";
|
||||||
|
# input = "/dev/video1";
|
||||||
|
# extra_arguments = "-vcodec h264";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
homeassistant = {
|
||||||
|
unit_system = "metric";
|
||||||
|
time_zone = "Europe/Rome";
|
||||||
|
temperature_unit = "C";
|
||||||
|
external_url = "https://home.aciceri.dev";
|
||||||
|
internal_url = "http://rock5b.fleet:8123";
|
||||||
|
};
|
||||||
|
logger.default = "WARNING";
|
||||||
|
# backup = {};
|
||||||
|
# media_player = [{
|
||||||
|
# platform = "webostv";
|
||||||
|
# host = "10.1.1.213";
|
||||||
|
# name = "TV";
|
||||||
|
# timeout = "5";
|
||||||
|
# turn_on_action = {
|
||||||
|
# service = "wake_on_lan.send_magic_packet";
|
||||||
|
# data.mac = "20:28:bc:74:14:c2";
|
||||||
|
# };
|
||||||
|
# }];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# services.avahi.enable = true;
|
||||||
|
# services.avahi.nssmdns = true;
|
||||||
|
|
||||||
|
# systemd.services.home-assistant.serviceConfig = {
|
||||||
|
# SupplementaryGroups = ["video"];
|
||||||
|
# DeviceAllow = ["/dev/video1"];
|
||||||
|
# };
|
||||||
|
# users.users.hass.extraGroups = ["video"];
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d ${config.services.home-assistant.configDir}/custom_components 770 hass hass"
|
||||||
|
"L+ ${config.services.home-assistant.configDir}/custom_components/pun_sensor - - - - ${pun_sensor}/custom_components/pun_sensor"
|
||||||
|
"L+ ${config.services.home-assistant.configDir}/custom_components/cozy_life - - - - ${cozy_life}/custom_components/cozylife"
|
||||||
|
"L+ ${config.services.home-assistant.configDir}/custom_components/localtuya - - - - ${localtuya}/custom_components/localtuya"
|
||||||
|
"d ${config.services.home-assistant.configDir}/www 770 hass hass"
|
||||||
|
"C ${config.services.home-assistant.configDir}/www/home.png - - - - ${config.age.secrets.home-planimetry.path}"
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.firewall.interfaces."wg0" = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
config.services.home-assistant.config.http.server_port
|
||||||
|
56000
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# virtualisation.oci-containers.containers = {
|
||||||
|
# cam2ip = {
|
||||||
|
# image = "gen2brain/cam2ip:arm";
|
||||||
|
# ports = ["56000:56000"];
|
||||||
|
# extraOptions = [ "--device=/dev/video1:/dev/video1"];
|
||||||
|
# environment.CAM2IP_INDEX = "1";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
virtualisation.oci-containers = {
|
||||||
|
containers = {
|
||||||
|
whisper = {
|
||||||
|
image = "rhasspy/wyoming-whisper:latest";
|
||||||
|
ports = ["10300:10300"];
|
||||||
|
cmd = [
|
||||||
|
"--model"
|
||||||
|
"medium-int8"
|
||||||
|
"--language"
|
||||||
|
"it"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
piper = {
|
||||||
|
image = "rhasspy/wyoming-piper:latest";
|
||||||
|
ports = ["10200:10200"];
|
||||||
|
cmd = [
|
||||||
|
"--voice"
|
||||||
|
"it_IT-riccardo-x_low"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# virtualisation.oci-containers = {
|
||||||
|
# backend = "podman";
|
||||||
|
# containers.homeassistant = {
|
||||||
|
# volumes = [ "home-assistant:/config" ];
|
||||||
|
# environment.TZ = "Europe/Rome";
|
||||||
|
# image = "ghcr.io/home-assistant/home-assistant:stable"; # Warning: if the tag does not change, the image will not be updated
|
||||||
|
# extraOptions = [
|
||||||
|
# "--network=host"
|
||||||
|
# "--device=/dev/ttyACM0:/dev/ttyACM0" # Example, change this to match your own hardware
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };s
|
||||||
|
}
|
BIN
modules/home-assistant/home.png
Normal file
BIN
modules/home-assistant/home.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 550 KiB |
81
modules/immich/default.nix
Normal file
81
modules/immich/default.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
fleetFlake,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
typesenseApiKeyFile = pkgs.writeText "typesense-api-key" "12318551487654187654"; # api key not ime, stolen from upstram PR
|
||||||
|
pkgsImmich = fleetFlake.inputs.nixpkgsImmich.legacyPackages.${pkgs.system}.extend (final: prev: {
|
||||||
|
python = prev.python.override {
|
||||||
|
packageOverrides = final: prev: {
|
||||||
|
insightface = prev.insightface.overrideAttrs (_: {
|
||||||
|
pythonCatchConflictsPhase = "";
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
imports = ["${fleetFlake.inputs.nixpkgsImmich}/nixos/modules/services/web-apps/immich.nix"];
|
||||||
|
|
||||||
|
services.immich = {
|
||||||
|
package = pkgsImmich.immich;
|
||||||
|
enable = true;
|
||||||
|
server.mediaDir = "/mnt/hd/immich";
|
||||||
|
server.typesense.apiKeyFile = typesenseApiKeyFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.typesense = {
|
||||||
|
enable = true;
|
||||||
|
# In a real setup you should generate an api key for immich
|
||||||
|
# and not use the admin key!
|
||||||
|
apiKeyFile = typesenseApiKeyFile;
|
||||||
|
settings.server.api-address = "127.0.0.1";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /mnt/hd/immich 770 immich immich"
|
||||||
|
];
|
||||||
|
|
||||||
|
# networking.firewall.allowedTCPPorts = [8080];
|
||||||
|
# virtualisation.oci-containers.containers.immich = {
|
||||||
|
# image = "ghcr.io/imagegenius/immich:latest";
|
||||||
|
# extraOptions = ["--network=host"];
|
||||||
|
# volumes = [
|
||||||
|
# "/mnt/immich/photos:/photos"
|
||||||
|
# "/mnt/immich/config:/config"
|
||||||
|
# ];
|
||||||
|
# environment = {
|
||||||
|
# PUID=builtins.toString config.users.users.ccr.uid;
|
||||||
|
# PGID=builtins.toString config.users.groups.wheel.gid;
|
||||||
|
# TZ="Europe/Rome";
|
||||||
|
# DB_HOSTNAME="localhost";
|
||||||
|
# DB_USERNAME="postgres";
|
||||||
|
# DB_PASSWORD="postgres";
|
||||||
|
# DB_DATABASE_NAME="immich";
|
||||||
|
# DB_PORT="54320";
|
||||||
|
# REDIS_HOSTNAME="localhost";
|
||||||
|
# DISABLE_MACHINE_LEARNING="false";
|
||||||
|
# DISABLE_TYPESENSE="false";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# virtualisation.oci-containers.containers.immich-redis = {
|
||||||
|
# image = "redis";
|
||||||
|
# extraOptions = ["--network=host"];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# virtualisation.oci-containers.containers.immich-postgres = {
|
||||||
|
# image = "postgres:14";
|
||||||
|
# extraOptions = ["--network=host"];
|
||||||
|
# environment = {
|
||||||
|
# POSTGRES_USER = "postgres";
|
||||||
|
# POSTGRES_PASSWORD = "postgres";
|
||||||
|
# POSTGRES_DB = "immich";
|
||||||
|
# PGPORT = "54320";
|
||||||
|
# };
|
||||||
|
# volumes = [
|
||||||
|
# "/mnt/immich/postgres:/var/lib/postgresql/data"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
}
|
608
modules/immich/module.nix
Normal file
608
modules/immich/module.nix
Normal file
|
@ -0,0 +1,608 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit
|
||||||
|
(lib)
|
||||||
|
hasAttr
|
||||||
|
hasPrefix
|
||||||
|
maintainers
|
||||||
|
mapAttrs
|
||||||
|
mkDefault
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkMerge
|
||||||
|
mkOption
|
||||||
|
mkPackageOption
|
||||||
|
optional
|
||||||
|
optionalAttrs
|
||||||
|
optionalString
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
|
cfg = config.services.immich;
|
||||||
|
serverCfg = config.services.immich.server;
|
||||||
|
backendCfg = serverCfg.backend;
|
||||||
|
microservicesCfg = serverCfg.microservices;
|
||||||
|
webCfg = cfg.web;
|
||||||
|
mlCfg = cfg.machineLearning;
|
||||||
|
|
||||||
|
isServerPostgresUnix = hasPrefix "/" serverCfg.postgres.host;
|
||||||
|
postgresEnv =
|
||||||
|
if isServerPostgresUnix
|
||||||
|
then {
|
||||||
|
# If passwordFile is given, this will be overwritten in ExecStart
|
||||||
|
DB_URL = "socket://${serverCfg.postgres.host}?dbname=${serverCfg.postgres.database}";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DB_HOSTNAME = serverCfg.postgres.host;
|
||||||
|
DB_PORT = toString serverCfg.postgres.port;
|
||||||
|
DB_DATABASE_NAME = serverCfg.postgres.database;
|
||||||
|
DB_USERNAME = serverCfg.postgres.username;
|
||||||
|
};
|
||||||
|
|
||||||
|
typesenseEnv =
|
||||||
|
{
|
||||||
|
TYPESENSE_ENABLED = toString serverCfg.typesense.enable;
|
||||||
|
}
|
||||||
|
// optionalAttrs serverCfg.typesense.enable {
|
||||||
|
TYPESENSE_HOST = serverCfg.typesense.host;
|
||||||
|
TYPESENSE_PORT = toString serverCfg.typesense.port;
|
||||||
|
TYPESENSE_PROTOCOL = serverCfg.typesense.protocol;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Don't start a redis instance if the user sets a custom redis connection
|
||||||
|
enableRedis = !hasAttr "REDIS_URL" serverCfg.extraConfig && !hasAttr "REDIS_SOCKET" serverCfg.extraConfig;
|
||||||
|
redisServerCfg = config.services.redis.servers.immich;
|
||||||
|
redisEnv = optionalAttrs enableRedis {
|
||||||
|
REDIS_SOCKET = redisServerCfg.unixSocket;
|
||||||
|
};
|
||||||
|
|
||||||
|
serverEnv =
|
||||||
|
postgresEnv
|
||||||
|
// typesenseEnv
|
||||||
|
// redisEnv
|
||||||
|
// {
|
||||||
|
NODE_ENV = "production";
|
||||||
|
|
||||||
|
IMMICH_MEDIA_LOCATION = serverCfg.mediaDir;
|
||||||
|
IMMICH_MACHINE_LEARNING_URL =
|
||||||
|
if serverCfg.machineLearningUrl != null
|
||||||
|
then serverCfg.machineLearningUrl
|
||||||
|
else "false";
|
||||||
|
};
|
||||||
|
|
||||||
|
serverStartWrapper = program: ''
|
||||||
|
set -euo pipefail
|
||||||
|
mkdir -p ${serverCfg.mediaDir}
|
||||||
|
|
||||||
|
${optionalString (serverCfg.postgres.passwordFile != null) (
|
||||||
|
if isServerPostgresUnix
|
||||||
|
then ''export DB_URL="socket://${serverCfg.postgres.username}:$(cat ${serverCfg.postgres.passwordFile})@${serverCfg.postgres.host}?dbname=${serverCfg.postgres.database}"''
|
||||||
|
else "export DB_PASSWORD=$(cat ${serverCfg.postgres.passwordFile})"
|
||||||
|
)}
|
||||||
|
|
||||||
|
${optionalString serverCfg.typesense.enable ''
|
||||||
|
export TYPESENSE_API_KEY=$(cat ${serverCfg.typesense.apiKeyFile})
|
||||||
|
''}
|
||||||
|
|
||||||
|
exec ${program}
|
||||||
|
'';
|
||||||
|
|
||||||
|
commonServiceConfig = {
|
||||||
|
Restart = "on-failure";
|
||||||
|
|
||||||
|
# Hardening
|
||||||
|
CapabilityBoundingSet = "";
|
||||||
|
LockPersonality = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
PrivateUsers = true;
|
||||||
|
PrivateTmp = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateMounts = true;
|
||||||
|
ProtectClock = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectProc = "invisible";
|
||||||
|
ProcSubset = "pid";
|
||||||
|
# Would re-mount paths ignored by temporary root
|
||||||
|
# TODO ProtectSystem = "strict";
|
||||||
|
RemoveIPC = true;
|
||||||
|
RestrictAddressFamilies = [
|
||||||
|
"AF_INET"
|
||||||
|
"AF_INET6"
|
||||||
|
"AF_UNIX"
|
||||||
|
];
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
RestrictSUIDSGID = true;
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
SystemCallFilter = [
|
||||||
|
"@system-service"
|
||||||
|
"~@privileged"
|
||||||
|
"@pkey"
|
||||||
|
];
|
||||||
|
UMask = "0077";
|
||||||
|
};
|
||||||
|
|
||||||
|
serverServiceConfig = {
|
||||||
|
DynamicUser = true;
|
||||||
|
User = "immich";
|
||||||
|
Group = "immich";
|
||||||
|
SupplementaryGroups = optional enableRedis redisServerCfg.user;
|
||||||
|
|
||||||
|
StateDirectory = "immich";
|
||||||
|
StateDirectoryMode = "0750";
|
||||||
|
WorkingDirectory = "/var/lib/immich";
|
||||||
|
|
||||||
|
MemoryDenyWriteExecute = false; # nodejs requires this.
|
||||||
|
EnvironmentFile = mkIf (serverCfg.environmentFile != null) serverCfg.environmentFile;
|
||||||
|
|
||||||
|
TemporaryFileSystem = "/:ro";
|
||||||
|
BindReadOnlyPaths =
|
||||||
|
[
|
||||||
|
"/nix/store"
|
||||||
|
"-/etc/resolv.conf"
|
||||||
|
"-/etc/nsswitch.conf"
|
||||||
|
"-/etc/hosts"
|
||||||
|
"-/etc/localtime"
|
||||||
|
"-/run/postgresql"
|
||||||
|
]
|
||||||
|
++ optional enableRedis redisServerCfg.unixSocket;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options.services.immich = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "immich"
|
||||||
|
// {
|
||||||
|
description = ''
|
||||||
|
Enables immich which consists of a backend server, microservices,
|
||||||
|
machine-learning and web ui. You can disable or reconfigure components
|
||||||
|
individually using the subsections.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkPackageOption pkgs "immich" {};
|
||||||
|
|
||||||
|
server = {
|
||||||
|
mediaDir = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/var/lib/immich/media";
|
||||||
|
description = "Directory used to store media files.";
|
||||||
|
};
|
||||||
|
|
||||||
|
backend = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "immich backend server"
|
||||||
|
// {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 3001;
|
||||||
|
description = "Port to bind to.";
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = "Whether to open the firewall for the specified port.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
LOG_LEVEL = "debug";
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Extra configuration options (environment variables).
|
||||||
|
Refer to [the documented variables](https://documentation.immich.app/docs/install/environment-variables) tagged with 'server' for available options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Environment file as defined in systemd.exec(5). May be used to provide
|
||||||
|
additional secret variables to the service without adding them to the
|
||||||
|
world-readable Nix store.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
microservices = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "immich microservices"
|
||||||
|
// {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 3002;
|
||||||
|
description = "Port to bind to.";
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = "Whether to open the firewall for the specified port.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
REVERSE_GEOCODING_PRECISION = 1;
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Extra configuration options (environment variables).
|
||||||
|
Refer to [the documented variables](https://documentation.immich.app/docs/install/environment-variables) tagged with 'microservices' for available options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Environment file as defined in systemd.exec(5). May be used to provide
|
||||||
|
additional secret variables to the service without adding them to the
|
||||||
|
world-readable Nix store.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
typesense = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "typesense"
|
||||||
|
// {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
host = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1";
|
||||||
|
example = "typesense.example.com";
|
||||||
|
description = "Hostname/address of the typesense server to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8108;
|
||||||
|
description = "The port of the typesense server to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
protocol = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "http";
|
||||||
|
description = "The protocol to use when connecting to the typesense server.";
|
||||||
|
};
|
||||||
|
|
||||||
|
apiKeyFile = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
description = "Sets the api key for authentication with typesense.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
postgres = {
|
||||||
|
host = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/run/postgresql";
|
||||||
|
description = "Hostname/address of the postgres server to use. If an absolute path is given here, it will be interpreted as a unix socket path.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 5432;
|
||||||
|
description = "The port of the postgres server to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
username = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "immich";
|
||||||
|
description = "The postgres username to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
passwordFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Sets the password for authentication with postgres.
|
||||||
|
May be unset when using socket authentication.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
database = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "immich";
|
||||||
|
description = "The postgres database to use.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
useMachineLearning = mkOption {
|
||||||
|
description = "Use the given machine learning server endpoint to enable ML functionality in immich.";
|
||||||
|
default = true;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
machineLearningUrl = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "http://127.0.0.1:3003";
|
||||||
|
example = "https://immich-ml.internal.example.com";
|
||||||
|
description = "The machine learning server endpoint to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
REDIS_SOCKET = "/run/custom-redis";
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Extra configuration options (environment variables) for both backend and microservices.
|
||||||
|
Refer to [the documented variables](https://documentation.immich.app/docs/install/environment-variables) tagged with both 'server' and 'microservices' for available options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentFile = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Environment file as defined in systemd.exec(5). May be used to provide
|
||||||
|
additional secret variables to the backend and microservices servers without
|
||||||
|
adding them to the world-readable Nix store.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
web = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "immich web frontend"
|
||||||
|
// {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 3000;
|
||||||
|
description = "Port to bind to.";
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = "Whether to open the firewall for the specified port.";
|
||||||
|
};
|
||||||
|
|
||||||
|
serverUrl = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "http://127.0.0.1:3001";
|
||||||
|
example = "https://immich-backend.internal.example.com";
|
||||||
|
description = "The backend server url to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
apiUrlExternal = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/web";
|
||||||
|
description = "The api url to use for external requests.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
PUBLIC_LOGIN_PAGE_MESSAGE = "My awesome Immich instance!";
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Extra configuration options (environment variables).
|
||||||
|
Refer to [the documented variables](https://documentation.immich.app/docs/install/environment-variables) tagged with 'web' for available options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
machineLearning = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption "immich machine-learning server"
|
||||||
|
// {
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 3003;
|
||||||
|
description = "Port to bind to.";
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = "Whether to open the firewall for the specified port.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
MACHINE_LEARNING_MODEL_TTL = 600;
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Extra configuration options (environment variables).
|
||||||
|
Refer to [the documented variables](https://documentation.immich.app/docs/install/environment-variables) tagged with 'machine learning' for available options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = !isServerPostgresUnix -> serverCfg.postgres.passwordFile != null;
|
||||||
|
message = "A database password must be provided when unix sockets are not used.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = mkMerge [
|
||||||
|
(mkIf (backendCfg.enable && backendCfg.openFirewall) [backendCfg.port])
|
||||||
|
(mkIf (microservicesCfg.enable && microservicesCfg.openFirewall) [microservicesCfg.port])
|
||||||
|
(mkIf (webCfg.enable && webCfg.openFirewall) [webCfg.port])
|
||||||
|
(mkIf (mlCfg.enable && mlCfg.openFirewall) [mlCfg.port])
|
||||||
|
];
|
||||||
|
|
||||||
|
services.redis.servers.immich.enable = mkIf enableRedis true;
|
||||||
|
services.redis.vmOverCommit = mkIf enableRedis (mkDefault true);
|
||||||
|
|
||||||
|
systemd.services.immich-server = mkIf backendCfg.enable {
|
||||||
|
description = "Immich backend server (Self-hosted photo and video backup solution)";
|
||||||
|
after =
|
||||||
|
[
|
||||||
|
"network.target"
|
||||||
|
"typesense.service"
|
||||||
|
"postgresql.service"
|
||||||
|
"immich-machine-learning.service"
|
||||||
|
]
|
||||||
|
++ optional enableRedis "redis-immich.service";
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
|
environment =
|
||||||
|
serverEnv
|
||||||
|
// {
|
||||||
|
SERVER_PORT = toString backendCfg.port;
|
||||||
|
}
|
||||||
|
// mapAttrs (_: toString) serverCfg.extraConfig
|
||||||
|
// mapAttrs (_: toString) backendCfg.extraConfig;
|
||||||
|
|
||||||
|
script = serverStartWrapper "${cfg.package}/bin/server";
|
||||||
|
serviceConfig = mkMerge [
|
||||||
|
(commonServiceConfig // serverServiceConfig)
|
||||||
|
{
|
||||||
|
EnvironmentFile = mkIf (backendCfg.environmentFile != null) backendCfg.environmentFile;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.immich-microservices = mkIf microservicesCfg.enable {
|
||||||
|
description = "Immich microservices (Self-hosted photo and video backup solution)";
|
||||||
|
after =
|
||||||
|
[
|
||||||
|
"network.target"
|
||||||
|
"typesense.service"
|
||||||
|
"postgresql.service"
|
||||||
|
"immich-machine-learning.service"
|
||||||
|
]
|
||||||
|
++ optional enableRedis "redis-immich.service";
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
|
environment =
|
||||||
|
serverEnv
|
||||||
|
// {
|
||||||
|
MICROSERVICES_PORT = toString microservicesCfg.port;
|
||||||
|
}
|
||||||
|
// mapAttrs (_: toString) serverCfg.extraConfig
|
||||||
|
// mapAttrs (_: toString) microservicesCfg.extraConfig;
|
||||||
|
|
||||||
|
script = serverStartWrapper "${cfg.package}/bin/microservices";
|
||||||
|
serviceConfig = mkMerge [
|
||||||
|
(commonServiceConfig // serverServiceConfig)
|
||||||
|
{
|
||||||
|
EnvironmentFile = mkIf (microservicesCfg.environmentFile != null) microservicesCfg.environmentFile;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.immich-web = mkIf webCfg.enable {
|
||||||
|
description = "Immich web (Self-hosted photo and video backup solution)";
|
||||||
|
after = [
|
||||||
|
"network.target"
|
||||||
|
"immich-server.service"
|
||||||
|
];
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
|
environment =
|
||||||
|
{
|
||||||
|
NODE_ENV = "production";
|
||||||
|
PORT = toString webCfg.port;
|
||||||
|
IMMICH_SERVER_URL = webCfg.serverUrl;
|
||||||
|
IMMICH_API_URL_EXTERNAL = webCfg.apiUrlExternal;
|
||||||
|
}
|
||||||
|
// mapAttrs (_: toString) webCfg.extraConfig;
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
set -euo pipefail
|
||||||
|
export PUBLIC_IMMICH_SERVER_URL=$IMMICH_SERVER_URL
|
||||||
|
export PUBLIC_IMMICH_API_URL_EXTERNAL=$IMMICH_API_URL_EXTERNAL
|
||||||
|
exec ${cfg.package.web}/bin/web
|
||||||
|
'';
|
||||||
|
serviceConfig =
|
||||||
|
commonServiceConfig
|
||||||
|
// {
|
||||||
|
DynamicUser = true;
|
||||||
|
User = "immich-web";
|
||||||
|
Group = "immich-web";
|
||||||
|
|
||||||
|
MemoryDenyWriteExecute = false; # nodejs requires this.
|
||||||
|
|
||||||
|
TemporaryFileSystem = "/:ro";
|
||||||
|
BindReadOnlyPaths = [
|
||||||
|
"/nix/store"
|
||||||
|
"-/etc/resolv.conf"
|
||||||
|
"-/etc/nsswitch.conf"
|
||||||
|
"-/etc/hosts"
|
||||||
|
"-/etc/localtime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.immich-machine-learning = mkIf mlCfg.enable {
|
||||||
|
description = "Immich machine learning (Self-hosted photo and video backup solution)";
|
||||||
|
after = ["network.target"];
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
|
environment =
|
||||||
|
{
|
||||||
|
NODE_ENV = "production";
|
||||||
|
MACHINE_LEARNING_PORT = toString mlCfg.port;
|
||||||
|
|
||||||
|
MACHINE_LEARNING_CACHE_FOLDER = "/var/cache/immich-ml";
|
||||||
|
TRANSFORMERS_CACHE = "/var/cache/immich-ml";
|
||||||
|
}
|
||||||
|
// mapAttrs (_: toString) mlCfg.extraConfig;
|
||||||
|
|
||||||
|
serviceConfig =
|
||||||
|
commonServiceConfig
|
||||||
|
// {
|
||||||
|
ExecStart = "${cfg.package.machine-learning}/bin/machine-learning";
|
||||||
|
DynamicUser = true;
|
||||||
|
User = "immich-ml";
|
||||||
|
Group = "immich-ml";
|
||||||
|
|
||||||
|
MemoryDenyWriteExecute = false; # onnxruntime_pybind11 requires this.
|
||||||
|
ProcSubset = "all"; # Needs /proc/cpuinfo
|
||||||
|
|
||||||
|
CacheDirectory = "immich-ml";
|
||||||
|
CacheDirectoryMode = "0700";
|
||||||
|
|
||||||
|
# TODO gpu access
|
||||||
|
|
||||||
|
TemporaryFileSystem = "/:ro";
|
||||||
|
BindReadOnlyPaths = [
|
||||||
|
"/nix/store"
|
||||||
|
"-/etc/resolv.conf"
|
||||||
|
"-/etc/nsswitch.conf"
|
||||||
|
"-/etc/hosts"
|
||||||
|
"-/etc/localtime"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with maintainers; [oddlama];
|
||||||
|
};
|
||||||
|
}
|
15
modules/mediatomb/default.nix
Normal file
15
modules/mediatomb/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
services.mediatomb = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
serverName = "Rock 5B";
|
||||||
|
mediaDirectories = [
|
||||||
|
{
|
||||||
|
path = "/mnt/hd/torrent";
|
||||||
|
recursive = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.mediatomb.extraGroups = ["transmission"];
|
||||||
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
friendly_name = config.networking.hostName;
|
friendly_name = config.networking.hostName;
|
||||||
inotify = "yes";
|
inotify = "yes";
|
||||||
media_dir = [
|
media_dir = [
|
||||||
"/mnt/raid/torrent"
|
"/mnt/torrent"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
27
modules/nextcloud/default.nix
Normal file
27
modules/nextcloud/default.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.services.nextcloud;
|
||||||
|
in {
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /mnt/raid/nextcloud 770 nextcloud nextcloud"
|
||||||
|
];
|
||||||
|
|
||||||
|
ccr.extraGroups = ["nextcloud"];
|
||||||
|
|
||||||
|
services.nextcloud = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nextcloud26;
|
||||||
|
database.createLocally = true;
|
||||||
|
home = "/mnt/raid/nextcloud";
|
||||||
|
hostName = "nextcloud.aciceri.dev";
|
||||||
|
config = {
|
||||||
|
adminpassFile = config.age.secrets.nextcloud-admin-pass.path;
|
||||||
|
overwriteProtocol = "https";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [80];
|
||||||
|
}
|
|
@ -15,8 +15,8 @@ in {
|
||||||
config = {
|
config = {
|
||||||
services.nix-serve = {
|
services.nix-serve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
secretKeyFile = config.age.secrets.cache-private-key.path;
|
# secretKeyFile = config.age.secrets.cache-private-key.path;
|
||||||
# Public key: cache.aciceri.dev-1:aNP6f+rRTuDHi/45L1VBzlGchuj54/mI2N/22qTWgzE=
|
# Public key: cache.aciceri.dev-1B:aNP6f+BrRTuDHi/45L1VBzlGchuj54/mI2N/22qTWgzE=
|
||||||
};
|
};
|
||||||
services.nginx.virtualHosts."${cfg.domain}" = {
|
services.nginx.virtualHosts."${cfg.domain}" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
|
|
20
modules/org-roam-ui/default.nix
Normal file
20
modules/org-roam-ui/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{...}: {
|
||||||
|
networking.firewall.interfaces."wg0" = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
35901
|
||||||
|
];
|
||||||
|
};
|
||||||
|
imports = [../nginx-base];
|
||||||
|
services.nginx.virtualHosts = {
|
||||||
|
"roam.aciceri.dev" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:35901";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO use oauth2 proxy
|
||||||
|
}
|
|
@ -8,5 +8,17 @@
|
||||||
# Important to resolve .local domains of printers, otherwise you get an error
|
# Important to resolve .local domains of printers, otherwise you get an error
|
||||||
# like "Impossible to connect to XXX.local: Name or service not known"
|
# like "Impossible to connect to XXX.local: Name or service not known"
|
||||||
services.avahi.nssmdns = true;
|
services.avahi.nssmdns = true;
|
||||||
services.printing.enable = true;
|
hardware.sane.enable = true;
|
||||||
|
|
||||||
|
services.paperless = {
|
||||||
|
enable = true;
|
||||||
|
passwordFile = builtins.toFile "password" "admin";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = [
|
||||||
|
(pkgs.callPackage ./driver.nix {})
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
86
modules/printing/driver.nix
Normal file
86
modules/printing/driver.nix
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchurl,
|
||||||
|
dpkg,
|
||||||
|
autoPatchelfHook,
|
||||||
|
makeWrapper,
|
||||||
|
perl,
|
||||||
|
gnused,
|
||||||
|
ghostscript,
|
||||||
|
file,
|
||||||
|
coreutils,
|
||||||
|
gnugrep,
|
||||||
|
which,
|
||||||
|
}: let
|
||||||
|
arches = ["x86_64" "i686" "armv7l"];
|
||||||
|
|
||||||
|
runtimeDeps = [
|
||||||
|
ghostscript
|
||||||
|
file
|
||||||
|
gnused
|
||||||
|
gnugrep
|
||||||
|
coreutils
|
||||||
|
which
|
||||||
|
];
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "cups-brother-mfcl2710dw";
|
||||||
|
version = "4.0.0-1";
|
||||||
|
|
||||||
|
nativeBuildInputs = [dpkg makeWrapper autoPatchelfHook];
|
||||||
|
buildInputs = [perl];
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://download.brother.com/welcome/dlf103526/mfcl2710dwpdrv-${version}.i386.deb";
|
||||||
|
hash = "sha256-OOTvbCuyxw4k01CTMuBqG2boMN13q5xC7LacaweGmyw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase =
|
||||||
|
''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out
|
||||||
|
dpkg-deb -x $src $out
|
||||||
|
|
||||||
|
# delete unnecessary files for the current architecture
|
||||||
|
''
|
||||||
|
+ lib.concatMapStrings (arch: ''
|
||||||
|
echo Deleting files for ${arch}
|
||||||
|
rm -r "$out/opt/brother/Printers/MFCL2710DW/lpd/${arch}"
|
||||||
|
'') (builtins.filter (arch: arch != stdenv.hostPlatform.linuxArch) arches)
|
||||||
|
+ ''
|
||||||
|
|
||||||
|
# bundled scripts don't understand the arch subdirectories for some reason
|
||||||
|
ln -s \
|
||||||
|
"$out/opt/brother/Printers/MFCL2710DW/lpd/${stdenv.hostPlatform.linuxArch}/"* \
|
||||||
|
"$out/opt/brother/Printers/MFCL2710DW/lpd/"
|
||||||
|
|
||||||
|
# Fix global references and replace auto discovery mechanism with hardcoded values
|
||||||
|
substituteInPlace $out/opt/brother/Printers/MFCL2710DW/lpd/lpdfilter \
|
||||||
|
--replace /opt "$out/opt" \
|
||||||
|
--replace "my \$BR_PRT_PATH =" "my \$BR_PRT_PATH = \"$out/opt/brother/Printers/MFCL2710DW\"; #" \
|
||||||
|
--replace "PRINTER =~" "PRINTER = \"MFCL2710DW\"; #"
|
||||||
|
|
||||||
|
# Make sure all executables have the necessary runtime dependencies available
|
||||||
|
find "$out" -executable -and -type f | while read file; do
|
||||||
|
wrapProgram "$file" --prefix PATH : "${lib.makeBinPath runtimeDeps}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Symlink filter and ppd into a location where CUPS will discover it
|
||||||
|
mkdir -p $out/lib/cups/filter
|
||||||
|
mkdir -p $out/share/cups/model
|
||||||
|
|
||||||
|
ln -s \
|
||||||
|
$out/opt/brother/Printers/MFCL2710DW/lpd/lpdfilter \
|
||||||
|
$out/lib/cups/filter/brother_lpdwrapper_MFCL2710DW
|
||||||
|
|
||||||
|
ln -s \
|
||||||
|
$out/opt/brother/Printers/MFCL2710DW/cupswrapper/brother-MFCL2710DW-cups-en.ppd \
|
||||||
|
$out/share/cups/model/
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
{
|
{config, ...}: {
|
||||||
imports = [../nginx-base];
|
imports = [../nginx-base];
|
||||||
services.nginx.virtualHosts = {
|
services.nginx.virtualHosts = {
|
||||||
"bubbleupnp.mothership.aciceri.dev" = {
|
"bubbleupnp.mothership.aciceri.dev" = {
|
||||||
|
@ -8,6 +8,18 @@
|
||||||
proxyPass = "http://rock5b.fleet:58050";
|
proxyPass = "http://rock5b.fleet:58050";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"home.aciceri.dev" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://rock5b.fleet:8123";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
'';
|
||||||
|
};
|
||||||
"transmission.mothership.aciceri.dev" = {
|
"transmission.mothership.aciceri.dev" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
|
@ -15,5 +27,13 @@
|
||||||
proxyPass = "http://rock5b.fleet:9091";
|
proxyPass = "http://rock5b.fleet:9091";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"photos.aciceri.dev" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8080";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
openRPCPort = true;
|
openRPCPort = true;
|
||||||
openPeerPorts = true;
|
openPeerPorts = true;
|
||||||
settings = {
|
settings = {
|
||||||
download-dir = "/mnt/raid/torrent";
|
download-dir = "/mnt/hd/torrent";
|
||||||
incomplete-dir = "/mnt/raid/torrent/.incomplete";
|
incomplete-dir = "/mnt/hd/torrent/.incomplete";
|
||||||
|
|
||||||
rpc-bind-address = "0.0.0.0";
|
rpc-bind-address = "0.0.0.0";
|
||||||
peer-port = 51413; # Forward both TCP and UDP on router traffic from router
|
peer-port = 51413; # Forward both TCP and UDP on router traffic from router
|
||||||
|
@ -36,8 +36,8 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d /mnt/raid/torrent 770 transmission transmission"
|
"d /mnt/hd/torrent 770 transmission transmission"
|
||||||
"d /mnt/raid/torrent/.incomplete 770 transmission transmission"
|
"d /mnt/hd/torrent/.incomplete 770 transmission transmission"
|
||||||
];
|
];
|
||||||
|
|
||||||
ccr.extraGroups = ["transmission"];
|
ccr.extraGroups = ["transmission"];
|
||||||
|
|
BIN
modules/vm-mara/adls_dmc_ver2_01.bin
Normal file
BIN
modules/vm-mara/adls_dmc_ver2_01.bin
Normal file
Binary file not shown.
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
# config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
# lib,
|
# lib,
|
||||||
# fleetFlake,
|
# fleetFlake,
|
||||||
|
@ -29,12 +29,27 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# boot.kernelParams = [
|
hardware.opengl.enable = true;
|
||||||
# "intel_iommu=on"
|
virtualisation.spiceUSBRedirection.enable = true;
|
||||||
# # "iommu=pt"
|
|
||||||
# "i915.enable_guc=3"
|
boot = {
|
||||||
# "i915.max_vfs=7"
|
initrd.kernelModules = [
|
||||||
# ];
|
"vfio_pci"
|
||||||
|
"vfio"
|
||||||
|
"vfio_iommu_type1"
|
||||||
|
"vfio_virqfd"
|
||||||
|
|
||||||
|
# "i915"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.kernelParams = [
|
||||||
|
"intel_iommu=on"
|
||||||
|
"vfio-pci.ids=8086:4680"
|
||||||
|
# "iommu=pt"
|
||||||
|
"i915.enable_guc=3"
|
||||||
|
"i915.max_vfs=7"
|
||||||
|
];
|
||||||
|
|
||||||
# boot.blacklistedKernelModules = ["i915"];
|
# boot.blacklistedKernelModules = ["i915"];
|
||||||
|
|
||||||
|
@ -47,9 +62,9 @@
|
||||||
# (config.boot.kernelPackages.callPackage ./i915-sriov-dkms.nix {} )
|
# (config.boot.kernelPackages.callPackage ./i915-sriov-dkms.nix {} )
|
||||||
# ];
|
# ];
|
||||||
|
|
||||||
# boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [
|
||||||
# "i915"
|
# "i915"
|
||||||
# ];
|
];
|
||||||
|
|
||||||
# boot.initrd.kernelModules = [
|
# boot.initrd.kernelModules = [
|
||||||
# "i915"
|
# "i915"
|
||||||
|
@ -94,9 +109,9 @@
|
||||||
# }
|
# }
|
||||||
];
|
];
|
||||||
|
|
||||||
# boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
# "devices/pci0000:00/0000:00:02.0/sriov_numvfs" = 7;
|
"devices/pci0000:00/0000:00:02.0/sriov_numvfs" = 7;
|
||||||
# };
|
};
|
||||||
|
|
||||||
# -vnc :0 \
|
# -vnc :0 \
|
||||||
# -audiodev alsa,id=snd0,out.try-poll=off -device ich9-intel-hda -device hda-output,audiodev=snd0 \
|
# -audiodev alsa,id=snd0,out.try-poll=off -device ich9-intel-hda -device hda-output,audiodev=snd0 \
|
||||||
|
@ -112,7 +127,7 @@
|
||||||
|
|
||||||
qemu-system-x86_64 \
|
qemu-system-x86_64 \
|
||||||
-enable-kvm \
|
-enable-kvm \
|
||||||
-cpu host,kvm=on,hv-vendor_id="GenuineIntel" \
|
-cpu host,kvm=off,hv-spinlocks=819,hv-vapic=on,hv-relaxed=on,hv-vendor-id="IrisXE" \
|
||||||
-smp 4 \
|
-smp 4 \
|
||||||
-m 8192 \
|
-m 8192 \
|
||||||
-nic user,model=virtio-net-pci,hostfwd=tcp::3389-:3389,hostfwd=tcp::47989-:47989,hostfwd=tcp::47990-:47990,hostfwd=tcp::47984-:47984,hostfwd=tcp::48010-:48010,hostfwd=udp::47998-:47988,hostfwd=udp::47999-:47999,hostfwd=udp::48000-:48000,hostfwd=udp::48002-:48002,hostfwd=udp::48003-:48003,hostfwd=udp::48004-:48004,hostfwd=udp::48005-:48005,hostfwd=udp::48006-:48006,hostfwd=udp::48007-:48007,hostfwd=udp::48008-:48008,hostfwd=udp::48009-:48009,hostfwd=udp::48010-:48010 \
|
-nic user,model=virtio-net-pci,hostfwd=tcp::3389-:3389,hostfwd=tcp::47989-:47989,hostfwd=tcp::47990-:47990,hostfwd=tcp::47984-:47984,hostfwd=tcp::48010-:48010,hostfwd=udp::47998-:47988,hostfwd=udp::47999-:47999,hostfwd=udp::48000-:48000,hostfwd=udp::48002-:48002,hostfwd=udp::48003-:48003,hostfwd=udp::48004-:48004,hostfwd=udp::48005-:48005,hostfwd=udp::48006-:48006,hostfwd=udp::48007-:48007,hostfwd=udp::48008-:48008,hostfwd=udp::48009-:48009,hostfwd=udp::48010-:48010 \
|
||||||
|
@ -121,7 +136,9 @@
|
||||||
-device usb-tablet \
|
-device usb-tablet \
|
||||||
-vnc :0 \
|
-vnc :0 \
|
||||||
-nographic \
|
-nographic \
|
||||||
-drive file=/var/lib/vm-mara/w10.qcow2
|
-vga none \
|
||||||
|
-drive file=/var/lib/vm-mara/w10.qcow2 \
|
||||||
|
-device vfio-pci,host=00:02.0,addr=03.0,x-vga=on,multifunction=on,romfile=${./adls_dmc_ver2_01.bin}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "strongtz";
|
owner = "strongtz";
|
||||||
repo = "i915-sriov-dkms";
|
repo = "i915-sriov-dkms";
|
||||||
rev = version;
|
rev = "db4e8ccd9bd31fad79361e27afc032487426fe6a";
|
||||||
sha256 = "sha256-LNKDNi7oEhO3FY47oKYbg8wt+268GlBVxQpHdNLNrwM=";
|
hash = "sha256-WCDwy39jpnc2wkM/883gFwChVD7wAP2nCR8Aw+CfDw8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
|
34
modules/vm-ubuntu/default.nix
Normal file
34
modules/vm-ubuntu/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
virtualisation.libvirtd.enable = true;
|
||||||
|
|
||||||
|
networking.firewall.interfaces."wg0" = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
5900 # vnc by QEMU
|
||||||
|
2233
|
||||||
|
60022
|
||||||
|
8545
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.vm-ubuntu = let
|
||||||
|
start-vm = pkgs.writeShellApplication {
|
||||||
|
name = "start-vm";
|
||||||
|
runtimeInputs = with pkgs; [qemu];
|
||||||
|
text = ''
|
||||||
|
qemu-system-x86_64 \
|
||||||
|
-enable-kvm \
|
||||||
|
-cpu host,kvm=on,hv-vendor_id="GenuineIntel" \
|
||||||
|
-smp 4 \
|
||||||
|
-m 8192 \
|
||||||
|
-nic user,model=virtio-net-pci,hostfwd=tcp::60022-:22,hostfwd=tcp::8545-:8545 \
|
||||||
|
-drive file=/var/lib/vm-ubuntu/ubuntu.qcow2
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
after = ["network.target"];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${start-vm}/bin/start-vm";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
3
modules/waydroid/default.nix
Normal file
3
modules/waydroid/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
virtualisation.waydroid.enable = true;
|
||||||
|
}
|
|
@ -48,7 +48,9 @@
|
||||||
lib.mapAttrs'
|
lib.mapAttrs'
|
||||||
(name: value: {
|
(name: value: {
|
||||||
inherit name;
|
inherit name;
|
||||||
value = pkgs.callPackage "${self}/packages/${name}" {};
|
value = pkgs.callPackage "${self}/packages/${name}" {
|
||||||
|
pkgsStable = inputs.nixpkgsStable.legacyPackages.${system};
|
||||||
|
};
|
||||||
})
|
})
|
||||||
(lib.filterAttrs
|
(lib.filterAttrs
|
||||||
(_: type: type == "directory")
|
(_: type: type == "directory")
|
||||||
|
|
|
@ -1,31 +1,32 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
Klg0lEeYAlohVeUjeeuJpRPcNYLHpglVpV+7xy59WSe+O9ZGaUwKqHhe2fVwk/8D
|
OE/YN4ShL6UsWB1vzNpOkSuPSOaM4InXNhn8mZMBXHQKFv3RptKI3XHZc+tzPtA2
|
||||||
AFaT1ZTLTJhXnYPdBnwX0y8ALbjOaRRzvnWSeiC4upGW+cCxllwrP1A1TtHRQ3n0
|
AOYz3Uptswb3Czd5DaJAyPyb3QXPLgt2govM/8rfALn59me3RnvT3xL5pLzQO3Qi
|
||||||
KgZzn7CMo4AvScZtR/LBRDkFZSYTg7R1lwy0tRoGAbUZkpFF0628QadRKvwuWRNq
|
oK1mpW13iJS+WCXuzmR/5eGxY1weXS0Uw3SIzxVPlm0cf1raq7XpfWWvji7xbSVv
|
||||||
BpHkvMxEt6f5LTnUz7AJuMp8IvpoY2Ixops8RUfANcgm4tBa+mUpo4vEPdaYRX6v
|
8YB8JpIMmusax5jQQN4qQ7OJNt4fb9wo2lOe2s0SIWFyeJ4aFbvxUIirSeFYUlRY
|
||||||
2QM6/Y3lexxbvbuT+5Y8tQCZrNJ+mhx9AZtYEPS46RNv+VuEJvg6v8PRctvc8Zcf
|
ruCEo6SLg80YJXNWuKNG8q39N3s9aG+KzcYdtnbNGlEalGLzN/8CxomUg7XSYsB7
|
||||||
P0MED1QIrvJQdT0g67of2NZtPLdyPSVHBYlmuZWSlgQ9Ev52GsgxkR15foF7OHXT
|
73Peo/f0d9hFHKbCdunZt+oQdLTZpFXUnVn8Gzc0rAEMVigW4PSAJxlbf4hVMMb5
|
||||||
iNTnMgWDQ40ogyEXMFg8PiLDsSpTVdaW+mFblCBGAD/T6I/VgmUaCFpduTiTIiLn
|
RPHdjJ+kB4GzeKrDj7XzF2YXxUqlbsDbXqUQXXPbPbSKwlUCtBuMMF2gFs/v9WuL
|
||||||
nPLpYgSkHPyxA5rQAfIroVaSTzc856mfSiw/ufW6uvnF+jh4IfmSIAS7eBPXh14B
|
I5eI5XDRAqrWzvutx6rcQnVcceRXk5m2hnXr3shWDbCFqYza2RVKRDRKACWz4ugY
|
||||||
MgOavQeCwGOWJ9+3FSVem4ySmHXDr5GdygOUAsItCFaqvXYKRlIKYRtK7fQIS4Je
|
fHp5Vr5ibNSmMpcKMmUIMPOXS1G6Y30ReiSf2DCoUnDZLIGuvyzYHCbPE/czIQq4
|
||||||
GGBf6PMFN/L/dzO3FsWULVcneVT1NL5TApsZYTywTOkMv+ncKMX3y+vKoyth7feC
|
9NWMtx8k4C3y78dHBBBOh4QGSrx9Ewi8FbFtr8J9lOsSfK+JIcriTDnwpRN1zDgn
|
||||||
F00108iy2YNo8ATRG0+vcJQbLA7Krzb/VJl9XtUp9fA
|
qv+XhACIkP4wawuIBMW0jIgJBggvxprFUwCrh2kwSy0
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
hjpOIFi3jK+XeRIb7GLOudMnOoM8QHRlHslUdQQDOZKfgmoAXW6XkEC2dx8GeEmK
|
dtSB8YGnez96TBWdwAKWwm93EiAqxLfSkeAnRwMRm1YwouNowTS0NMTEiESMAws1
|
||||||
KPn+5crZuPN34d/VZ3oTGCD4zNiAHvz0uDt1K6vysnVYyvCadiIyYu0ylympPjN8
|
/TWQkS0h/p1GOv+36jdTUQCR2x1dD0HPfa3Umn194kN7F7a2M5m9nw1C22335EHP
|
||||||
JUQRVXxAKj5S2QgfGiengsvo7cIwDO8K0JM22viQQRU4smxc/guf9/UVSH+2zm+Z
|
7royFnSVOFJLe+8zbQ6vc4tg44yBht92X9UIFGL0z9UUMhBaJZdmvU9DRKjlTvcQ
|
||||||
yhlhZVUs8k5fAkJrn3Zyt5kKf4yv4XKvlNUQ65EG5czKsvNgxR7CQlHB1JYiwCFR
|
tGarNk2mKP1MK4naPkKdSMX02EYSrLNL1CMpVakdJ6HgyuiU14C5YwRJfwg34ab7
|
||||||
W93hYDiLaRQaNLRJGLty2gmAGB6mmNsriAlkSyBtlKSjeQovVAzt2D57wGdbG300
|
1bzYTxXwPVjLbMs+qF1vgesTgEHlvkHftDvMnsUn4DMPhQxiImcsDg6uwoCmhS0s
|
||||||
lvRkGPdaD28qSXczJ1U5ZvMBxtpw8gEq92vZDS2MKv56Kscxg0KlFgaLzRupEEru
|
ARLavRhouMFcL4KI28P3L2Ovwx3feFPI64lc1hif7Kw2zGcyQhjg/8Ki+v3vU+Zz
|
||||||
wfaGoxUkUpTKLQMK+ZCnYwgJy0y9fDbDsXd+yid/yBcOUuoAEkpq3/dJcaTpCv5C
|
CIzIir3s6GRcoeGt0TaqS7UWU+6dsm/Dk34LBGQBdfwojuADVJoeg7X7kjJlJPfZ
|
||||||
b4ERHM0wPubyoscyk1InGP7zaUaBtOHzfwDamKZ2ahu86+skf/NPmeo85mdJiLSZ
|
6oulR2sR1jzqG1mroEmUDUEPTCS9+djzLzHjRxppeerOiIUZc0dFjmFfaq4rDnFz
|
||||||
lZ7gs5X92+hgxdxr+8NI2AJxy72emVmGpKzr914+hIa0BrKQhtadqaZc2cqyMCmm
|
IQC+Z0EHGHl50InJv6zXurLnmtpXmS8aX3DHLkFnoeeXUnjkxyvGTQuowzHp+x3k
|
||||||
+jTwXliBY6PE5Uv/yrTPL+hJ5yfc4RM6T21BsKzqR08/496lvFWYY2uPEMAaubnZ
|
iazgtXuLXc7Zt5aw5qWH6wL57juEbO0APbflilTzMzLDyY+T9KEzHbEFaqLweugX
|
||||||
yrFX5ne4m4uXj0d2OcGa4H3Z8OnrLdfmgysx5IJIxj4
|
1GJygt7iHiYiuYAksClIERmRklJOickmQHkw2vZhcxE
|
||||||
-> ssh-ed25519 GVMLQg 4Fd61NYElKYQqZacALS/QuQ2yL4vOLrSpuEVKpQAo0w
|
-> ssh-ed25519 GVMLQg +IEbWWacFYy8B/C4jPBgXLkQdAwBrPOVJm3uJiOJuz0
|
||||||
OhnGd5pXN6Uvxblw2VIwWjFldc9t1BerpQa4KAi21q0
|
o57ovCYyNHS24J271alYH+53pcVklKTvfQ1X7VlPcPM
|
||||||
-> j=-grease yOMTm"#>
|
-> w}a'9-grease 4~HbE jp% Y&4
|
||||||
QQBUO+uWgj1YmqLea1rmUVRxy9hA/k7SCi7S
|
1q5U5Z87X2RmgS0XVcYJBKJmjS/A1KCflbo2vAkwHozgE5IMoXRBW1g53s3rzU1w
|
||||||
--- JqsFWi0axwaVJ2K4bxi8suyGdKYopsIl7h1jEw5ivss
|
Oq5PGHDi2K/OycKLw/NJgCS5EExi9twsjJlbfA
|
||||||
o<õH¼*&š6S<36>Í4«<34>7‘ÖÁ5ˆòöRêˆg%!å=Äk—îi
|
--- F0/OApjmkJ5cvr5fQTd/vZXGeE161i175DBODHCVqPw
|
||||||
|
y çcˆ¡ä}–Ü¢ý¼àÓŸêŸ,YJ`Þ$”‰îžf·ð¯ë
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -3,7 +3,7 @@ let
|
||||||
in
|
in
|
||||||
with keys.hosts;
|
with keys.hosts;
|
||||||
with keys.users; {
|
with keys.users; {
|
||||||
"cachix-personal-token.age".publicKeys = [ccr-ssh ccr-gpg mothership thinkpad];
|
"cachix-personal-token.age".publicKeys = [ccr-ssh ccr-gpg mothership thinkpad rock5b];
|
||||||
"magit-forge-github-token.age".publicKeys = [ccr-ssh ccr-gpg mothership thinkpad];
|
"magit-forge-github-token.age".publicKeys = [ccr-ssh ccr-gpg mothership thinkpad];
|
||||||
"git-workspace-tokens.age".publicKeys = [ccr-ssh ccr-gpg mothership thinkpad];
|
"git-workspace-tokens.age".publicKeys = [ccr-ssh ccr-gpg mothership thinkpad];
|
||||||
"hydra-admin-password.age".publicKeys = [ccr-ssh ccr-gpg mothership];
|
"hydra-admin-password.age".publicKeys = [ccr-ssh ccr-gpg mothership];
|
||||||
|
@ -14,6 +14,8 @@ in
|
||||||
"hercules-ci-binary-caches.age".publicKeys = [ccr-ssh ccr-gpg mothership rock5b];
|
"hercules-ci-binary-caches.age".publicKeys = [ccr-ssh ccr-gpg mothership rock5b];
|
||||||
"minio-credentials.age".publicKeys = [ccr-ssh ccr-gpg mothership];
|
"minio-credentials.age".publicKeys = [ccr-ssh ccr-gpg mothership];
|
||||||
"aws-credentials.age".publicKeys = [ccr-ssh ccr-gpg mothership rock5b];
|
"aws-credentials.age".publicKeys = [ccr-ssh ccr-gpg mothership rock5b];
|
||||||
|
"nextcloud-admin-pass.age".publicKeys = [ccr-ssh ccr-gpg rock5b];
|
||||||
|
"home-planimetry.age".publicKeys = [ccr-ssh ccr-gpg rock5b];
|
||||||
|
|
||||||
# WireGuard
|
# WireGuard
|
||||||
"thinkpad-wireguard-private-key.age".publicKeys = [ccr-ssh ccr-gpg thinkpad];
|
"thinkpad-wireguard-private-key.age".publicKeys = [ccr-ssh ccr-gpg thinkpad];
|
||||||
|
|
|
@ -1,34 +1,35 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
kR8vBBJWJ+n5oB5dM+RqqgYBN9y4IFIz66W8F6h+8eNQ7WLsp7qggwztqzkDveuC
|
JrF1G2w7v9ItfrVsTAKMxkPvO51bDSgCVJSr6cW6QcQX0gBP3X/lff1swlUBIA1k
|
||||||
yz37rnq7Uq8ExsP8bdBNoJKLJYGeoF2nX1/LsJQJg0qutwzxCIdqqFxGeLKB1Bn+
|
XXwPXfFEbB4lpeal2SeXbLaXMdr0IL95to8IixFhQC3Q+nEWDVCMpIHlCZKOmMKD
|
||||||
n1XNdpoIXBbKajSh9uGGigPZDSlpS8eoAesY6JIqDZwCuups+Ajja1VQEPk2gFAV
|
+xyQdCYdtFjSQKk+j8vwfrMwrP8dKsPFLOgu18hyRX4PLM9x3JcMSknYwDmspbN+
|
||||||
3kg33xJc7l+32E3ONuixiIcz8xBnggs0n3zDKTIIigUoW4rrRnx6dI7urkquA7WX
|
OYhEKT9ZlFFrG7VVICwcrStQn6CIQS3vm4Z/UuBfBe+b8cNsoWjTubBhOWKTA9vF
|
||||||
8huykb2lchEIAZVlgEjSNxT8JjifmjUjouNsp79//H9sqpxfGW6GQYQa8uwXuIs4
|
M14dFC81cWsYKAXFIcgsXNl9UKo1IPc6fcP/GtVIcic2EYXbUlS7KCucDblPRUvt
|
||||||
cbDC/3TKalQBOnS91WrO2FUHFcgESsAySIeerbAIAwUarEAoYzIz0fA6rY6S5e9Q
|
69SCb5k8D/Yw7VyYhfb2EklYyxAMvNMms51ulzreM2HFWtheikN8psfp4gQtRxtQ
|
||||||
whzHPS9TCx+Vk3rj5sJpfKaJctg1XkTdeYpwSbZQmvQHzFd6pwfnUVLLLdWpNptO
|
BQrldS3YWDgDTz3B5IDlWlfDY+Pw+X31a0mDjOkzjZaXH4QjBGtQXrwEAfBUjtDz
|
||||||
VNmtlqwkrQiy0JajyaObyJkdIrjxWq9uDGAGrNxyTpFJJ+KpcYXnGP2vIMxObtTN
|
RSBbjaj26MkfSf79e6oknEANLMphIOmxqFKtbfizfq0yUyG7Gcu/k+NdOwRZlYL8
|
||||||
En/qWqPlMg7w7s8zoz3OHtjleLWVe1yy442XdLOtjn46KDBjMx1smpV3jxfsiq6Y
|
AF9rh19DDZs1LIQNeWHJlssMgBdj0m14HE2TChCVppb8/euaCZ98DYlTMPDaKryD
|
||||||
I+VOMXZ9MscDrsfyy1L6r9VfLyv65e4ZZ8iu31UBmCwDQvLro9xkXCW7D3iTtCua
|
syTJaw7eJJ1Bw3rdhjf6Bam04j60fllRg0ojY0VhMpRbYVHHOxg1O8wWJvpKA73J
|
||||||
WgM9l3PqbrnrdAiqtmh/dCiXE2LBZOyoiNDGeqa1sUs
|
eker0/+n7TzwGI8ct99opkYyv777yxxR4vrUS+VmWec
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
JUCBXZJFKzimFZC4mg4YFUXzXkXkcC95+wFutEqedZWCwnhYq/OZ3OG8p2GgVe7s
|
W0I9HcdIM477o8d+AYjFy2npH7wNiTsfzfrC1UH6pig/6iugS71kerVY7VvhT9l6
|
||||||
ftIMkNSY2K+H25yKqubuhz+vDgtoTUOYnYkI9XHom7OmC/OAidVT1LTnXXwyGWSI
|
In1VJhbAXvmRHWc41s1CFALhAP4ZZeFSRqcHdVrVjgCp879CtmIPNTS7TCHFJC7K
|
||||||
uM3q+r+e79MFXJJdhYbDhgKYmaS6LmFN6RGx3WG+uGoSw0ZOLCs1j/SdCvDiBf3o
|
Rd+MIzEcm40Hhrv/OdGPngo+WYXzsPXgsdHCfHFu9VcEaOx7xk17pXww+WVWSD1q
|
||||||
ib5++OfsOHwtcqkgQMNhddQtle8vjuAdKBjuner2bMXwBuAsJLPVKMq4Edo+XHr4
|
iFKdk+kF6V1QweOSqmAnicF8tKWhVLQdpj6rrbZr2TWglS/DgDfJFUF1kXNM2oXD
|
||||||
bYO0ZT38h7zU+IgWpkENNdgDoTglERih4D+7lMFy8Brw6Kr49gypv398BXrbvwtg
|
2ETMgPGZH7/j3ovGuoTJspESbfjmRJODqi3ugpSeyTjMUV1xaN+RX7A450VtmKIB
|
||||||
8YPd5x4UNFWhMhZ0qvJOI2U0tm9FV1zenJQjsLcPmfOGGO3bSKuFr6ihw5ObJSsg
|
FhKs9aK19B+Fmr5hY+fjiZOBYLF8Gxy/bPAaglkCLpYCZ/97+cKEoItVwpeAU6Za
|
||||||
TTXdUob0FII3701S2074tstRV47GMd98rPJrQ6Crnqy6puLtN2adHkLr+I8agzln
|
yxaHuBwwqHKHfLWmeL2UwdpFweGg6ML1Pus9GwJQCPHEgI0n6nz4jwNZ1JUSI5kc
|
||||||
bdPhQ9pYJhICRlwdyQe1Y5l6kgsn8yZVygmMQBF69qJSnnXBuMiRoudQZDzXMdtM
|
zq29qxxKI5mwEVfvHSz1XLRy7vxU8rMyN1p2nF2kfhW2ruI1dG22kIJ+GUnsx4Ts
|
||||||
+cWntBt2j6uSno7jMsOR8DZLwZQaso96UiXxstBX5uYhuqEpUk12uIUDFPVcovzx
|
7HSlG6yGBe7l5psbgGny18114F0cl1Ol/mwmCT/UTxkMsVKW2oy/toAW+toQSys2
|
||||||
RBt6fNjkkK1nc2JXr5td3d+rfAJxiOGr8p5YHGWW3RE24qJYVg1doiOyCsHX2XEA
|
+DAWXDe0awQeHsV9FDckSCRGdX84Gjp/cBipP5PC7cRFCKdE65UOgH4I3vqyRdlU
|
||||||
oImTlruNm8MJAuGz8l3L/wKe+v+lwqI94zBPrb/SYwc
|
JySDdJSo8YgKpxbyyP0lxds23+V5uWoL4DvaA5BYO14
|
||||||
-> ssh-ed25519 q+UPnA j9rU2qfTAHjL/+wdP7PcsAu6QO96RPTPszS4qWjiBRw
|
-> ssh-ed25519 q+UPnA P/UMtWIc88SMjo+tHSWqv4co7i4iANLXAvFfjCOfrwg
|
||||||
8ziPmZ3asg/1tOZvI8k0jvNSjeAmhDXYVGtXCi2ShxY
|
rwvRgHjtNjhQLod2tD9ILVIyyV2T9/GCai5XakZnhic
|
||||||
-> ssh-ed25519 GVMLQg Pw0Rs0GhAEGADsd8tc/n5FAhyQHDO9uOh3A8IifHPmg
|
-> ssh-ed25519 GVMLQg siuPP/kuU1AUXZQpE4j77u8zItMNAthntjRdyRtbYww
|
||||||
4o+K44rs+0KVb2LWMf4AQ6JPp6pjUi5IeGg0SZy5Eao
|
rQLRO+s1WHeNO5nSUkdSvaKj0lU/3EWA2xXI+OTifLg
|
||||||
-> g0-v_{W-grease P2 h/otU
|
-> $D'?B;E^-grease s\z [Dbs @Y]/'?
|
||||||
keMrgZKkqyoyTiCUR1bqG8j9++6Tl318j3FDMPZ14l3lNbYASe+esj6W1VVQLP6F
|
BelFeEpnUs2z6P90XpDdjjh88ojbtSSW1yh2xDHunpnGRZS3cGIZS6JZ90EeL05g
|
||||||
CwOZP7mKvlS3jiNTLes
|
kORn2Ra+uw1/HiurjzWIrOT6eL7nOL0epblQA/D8s3nGhVPHMazJIMdnbXqP3ODU
|
||||||
--- hJiPwZY5H5IVDPi8eeVW5bTnrR2eMV22ldDzcdQzWoE
|
eRM
|
||||||
wiúúþ=3<¬_äÉ3Fº.ÙŠÎ*“ÉŸÄó4!ÁºU‰$ºê¥IAÅÚ®fú(÷03`O~ü;+F®³Á,¯´^<5E>Iî” »àQ•%‰;!oäFšžð
|
--- Rnx74lnZCGcfdWm7D7lqEAdPVvHiHOTA1vF3D8zWO/k
|
||||||
|
¼¤+€ZÒŠßNSlJR3f—;}wu¾®tûc™<63>¦ñš=Ãöïbî§¡G<C2A1>,×Z×–IðKç':}1öŸïðø/ç<04>™'8ÌœØfç¦^&
|
|
@ -1,33 +1,33 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
QbdRCxy5joLI4ChgfOQDamUI/PFBj+VeMDVrWK2xPvO5QL3aOD1pNFAxNgrClihB
|
sJupMHG9pWdOYXhvLzhxDRsEvmGKuvd+kEL/E+Pf4LXHpIWGPtKLLrA+3otssOUu
|
||||||
N3FYNKQNxKmfCh3rJRixBeDeP6r1mZACv/mO+KksoTiYRdzfqDCqegsqqCZWPXdc
|
coVYMnuipbg5qndedSwB2u++er0B7HmnZOKcBbL0+9lFLzsbQVdVFMMvSThl7u+2
|
||||||
H8lv2mQK7iktqT9qvt05iTSNDKbr0zGX8EmNvTyQt7OUMCBm54bu9ZsowkHLzPlX
|
1DSH5Fs+i0N4C+YqkxjFE9iitWiimCuIwecL4QF64EKlH9ROYCd+Z+gL2wvnkEze
|
||||||
/LzephvPbmnFTebrZSWCh/cEZ5vvYILMuY0swwgUPm7YGNFWWqHxAd8flqYSphFb
|
VLESAwSiBe9swtYc1d0WD/cvMydYsW+gniqkQrjJ4vTsBjHzP3TNhlo0ohmTyuVP
|
||||||
F4nbhrWUrGHwki848pqGQ3g4yrc9hTNJ3PXh3tZFY7sFQ59rt3gU54b9OuCRyxYC
|
XX6JmEs84XLNYUM6lSetu7LNeCNynbVwoAy+Vy2TBRkFnyJI4DbO95GilMSpdOWA
|
||||||
WTZuz+PMob3AzqJ1bWJBpQyteBb0KsONjDpQUsKi3hcdjXOPwoU9XeML4NJ2QO+x
|
sMhiPmykyclMsABMM49MUmiZ9Q5rrZN3/Th8AA/niX1t8HLtJAThb5PNrrhl6bNz
|
||||||
xP46dtq8/kzOBMae3O7lWwywi+b6/RJJK/dks7fdYSUYe79T5h9k8Hz+dKNTEAmQ
|
Ody5+0eVHmMtNq4ch0FjEXuHMD1snXI3YCXntuPx4VehLuJKOYliXtRzSMA+4RqX
|
||||||
AM7ndZctoksmLW4ic6TWRYXTc3JxbytQRb2c/OmsdirBXbEj3XZWJQaufVScA5f0
|
7tTdOo8CZh1x6XKL2uM654TjAYvs/1RFm5faFLycemXxNYsgjJqvuBXRArCO/Zwy
|
||||||
4xVK4Qx3WStse10eUVQwgRD/LIW14Bg3YhQXEatGhAqJc2sDn5miO6hT4+njVCe0
|
EHdp7bRVqNWqVpSrIghFItdsWeoLVtYHESJQoBZrxzLpKWa01fc0/yutLNX/GXnt
|
||||||
ODUtN3/tHew7kmZ9jUoY/lXQ5k/yKcq4Pmw/BCXmi55pxRgMo00cZiW8LlanJx5n
|
0AxxlYZyuQHg0bazbReAhQujrEnguwubbrCaEgOQdieRVMnin5IAhIfATUhde42H
|
||||||
rBSjmOZT12+h4XlmtJg1EpkbJAtJ0rwkWdIuoxbLvvI
|
u9IYIiHPOLoKyBDSi6in+Ns8skAInpGEotORQaLrLRQ
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
JSkCnuZA83NAVxh2XAV8W8q2Avq4Soz4qLOLOFlucuWP56CkeNMdPPFDUhHWzsjC
|
QMlhLp7XhSZf6l95IdxG2InH8I+OAwQnnKdfgs3mRotsn81M6XUHxbz7UngBxz0a
|
||||||
0vCGP1YOXfbGbQGhajHAPCrIjwsH2yVQGHjj5+BVE8YDE7JrV2hPhduE9BfrSPJj
|
GBjWm9xdfxiRiqVgJmbxqXlKCgMR+gbCVp0z/7VSQStJoCsU6dJ08WIwDi+mzzVU
|
||||||
DhaLR92XvAldbaACwdnxfiQC5hxT4lq9/c8kq//4lSvmiZGJwy7WmOH3YLlh6uD6
|
OQF0vKp2Uy8401vxhnCM5Rbh1QU0C0Ts3F6QwQ4Cn+VJ52xu98GkNylgoqnhvvVw
|
||||||
ZU2e++3K6FwMl/Z+TXwpYX9zOd8oMmOewnWIUcZ/xkPbSd+KZS0BdXw0s0LnQxyb
|
tLO8Lar3yxc+drAUgYLi5jDgMOMdmNbdkWz3myBlO8pTsWPAQubd0LDaemmX3B2s
|
||||||
Dh/J5jWpTL5pXJN+NuJ+ATguXyCz4mhrVOeHFuA/HaVhJNw0d0eqOZK/pceIfmKB
|
5EGQ4wFm6+mp7PLcCmbizZsdiNBf+jJRTNPu5jYlG1BwDbkMo7fdt/VzHwbvDI9P
|
||||||
GxvWvGSUKzWIAhzOZKcdfcXiDatwSSldk0psxmdMfhtdcX0lfQz1pRkVl9ru91KI
|
vI4ddsp2PQ3FeYOcoZN4xNRTYmx4U1J6iVdhYoDeTuthH8Zc3q0zn9VHVgW9NyT4
|
||||||
qm5mdPl1RE9qYvWvS8VJuMxByYE1DGJ3RSAlGQLkNWcolm33rQYV6RzhcXZrI0yA
|
CHaeJeUh9tjSHi8xF3rGWDfYVJBRNuAEoYXRXw5/ts3NFkwZr5BTw7Px9gFAKQvE
|
||||||
RidqRKnh8Lja1x+Tt2ugPOO1CHgTvUGnfeEeTMBoLBwvF7HWfKRBpvJvLwy8Q9EJ
|
Q/gTB8pJC58In5PObjAb/RbDWfdVWEmU7La4MuirOV7/sfUjHmgFxtnoTzw56gkO
|
||||||
yWUc2jXDF3olB+W2zK7w1d+yTdMKRmnahWlTuGrJCDArDigb4aEtFSFfYYgrqdHZ
|
64Hz4s2p1WSTrs1VwhKtvU+2R1rm3ndEiPMhJ8D8O2lyzfIDXI5l9uc4xl1M5ccw
|
||||||
SZ/7EMmEcuaYBFcwEtL8/z+zIQolBOySyIR0rfyprdf/ne33uJM8bTFv4R1lwBUE
|
f4wVvtvd+SRqmOD0S9rT221nehuDN2VY6QK8rEyDvy43lZRUE4Yc/HYx5J2afI2L
|
||||||
p4iYYq1zQouobKj9oY0poSDD8etdgR/ASd1mcCNAh4o
|
wstnAjyRYlpRmbqxCrxrTosh6P4OeKLyStCz4q0oV1w
|
||||||
-> ssh-ed25519 q+UPnA 8cWQqSNWwV/LpIEqA40L5d8eI+lO+TDc+Bvbw1K3yww
|
-> ssh-ed25519 q+UPnA n4e+taGOqY1ZmcOBzc/wKuUxbONvOw9TiufRwjVstGk
|
||||||
wsGLAk5QYe8EUCxP5eDD/IoVm8MnX67zvSRdCQypY3w
|
NTFCPxdYTYEsD45ZDZAmyxARd338Pxz+9tfG3yb+/hg
|
||||||
-> ssh-ed25519 uy/XKQ j6Bh8t43bTaBdE3yml1JNH1pcWFtSEcsn4yJ68RFGFs
|
-> ssh-ed25519 OgJHCw HTpnRI0K5iI3CPjvvyTCZzzPYJ5O5mq4d6tcm7FULWI
|
||||||
pO0TU1E27aTz+mZigDapra/YYbdn1TUWi3r/PdxccjE
|
1znw0AI3awZ4kPDYgC65bWlDxlpn20Jxv8OQxrvwG0I
|
||||||
-> ?`\-grease
|
-> vGa-grease N7"} 5RU@*A ~qey~;7
|
||||||
Rk4JCYxFhjljb1k3E65DVeUOJKMcrJYaLQWf6ttYAY/y0vsOXZU
|
pPiCoiU4+wpoY4RzmizS6t35N5cKJPyyudJoQN4
|
||||||
--- 6zD1wXvRVaX4cTXm/R43Bl8UYo0CXxKdxIlLCTlbuYk
|
--- x7dcGSYIyKbYNe/d+jV2yNP6efmF4skCK2j3JpNCn/A
|
||||||
Sz7„¶¹¾¬“‰àk+ô;'ÿv;ëM¾,¥Œd‘ÈÀ-í)¬²ß¦ü!Ë(sÃl$SÛU1ÍL/X:•r2Ux€-%…ÒÒ¥“ÀÖ¹ÆCSUdPd-Є¼°ä`ÔÖ<C394>C±iüwá2$Ô–MeR;ýY¤»ÄãC<C3A3>Ð)=èÚÏY½ÀTz6oŒ®tqKÓ u:^«zðLí)È/Ȧ‰t–EN HÁ?Å5»<35>2“~ªX; ‹TAL2éšô»,ÛXÏÞRÌZ«Ã/©|¯¼~O«ÎÏå<C38F>í¢„šDlÕü)ORqÛ'½¶þ<05>ÇU€<0F>åß…ÝôaFff‚<66>ˆ‹ðsŽ{µz„Á´"S†SȈTÑf–Ã8êá<03>dÿÆ"€ùµÎœéRÜæß-šžÑ°øÇ+§À™¹ÿ<C2B9>ˆíöMÎq¨ý%ש¨ˆJERè{˜Ú<CB9C>~7Ÿá+(±Kƒ$}³¼`
Â
|
0枻|マkメロマoィp9ォ偈*濆}gホナ錘レ麿轢オヨク
|
Binary file not shown.
BIN
secrets/home-planimetry.age
Normal file
BIN
secrets/home-planimetry.age
Normal file
Binary file not shown.
Binary file not shown.
|
@ -1,31 +1,31 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
ka5JoOnpYRlDxEeH+SKKWSvHHmkId8irgyX/YJVwM+Hdm/y5lrTgptQO64FW6sT0
|
mHUoVsSOA9svMr9QR+FnfdkyIhxCLKkg5FSxqKKRhbiRXLrYnAwyHPF36lGu5VYA
|
||||||
xG6jXwcI1uHrKop4k27+Q44b0jGc4B9qCEchzBpYAVtrwJhbEn5LFPqC/WwcKqmS
|
PD80cKlQkiYO8d6rl+GIfRIEDEcCJl9W+xDS7QjehXmweRdkhmwoqBoZ1wBMdNt2
|
||||||
Lj1PPoryvh9W7dM5mFL1tppxwBcI9Si/lfXcJ/zDz9SmbsK4tnf9TjVi6A9NVRsX
|
IWTENHtFhru3BF+XKu+pgAEKA7xLBuc1Cc36Rdyjb1Xlq+ddY/IkJkuFsaI7z87D
|
||||||
/gu1vepk2eEdrZQMc6nOTttuWLzRApNz4PqAviyFL5o7Lp9StEy5h8tznzxn7vho
|
rvGeQ6lO8ycua/3IjLCi32mqNGVuzg+zG3GkYcImMRgwdXeVKVBHLxaJY4N6TwMe
|
||||||
pgUv4uae/I5PwngluvivG9H8V0VhSmzPZODKRQQiOKkm0rrgEhrGFrkXeI0186RF
|
s2RkG7Wx30uf3LXKRUcF7+cpjXqVwNjbqUNEilVJT0wEBDLAiGwwwd2Dyw5o1A04
|
||||||
OiF16Hdlgrr08iLGG5GgTceXSyMUzy5yyTHt2mx3WTMAltRyUh8YzqoZG0dWK2/K
|
0nAUcqq0ktZlLJRPOw4jHC5bvVqKxFdCL5ABtfC20MoBGrmeGlufu9/MIsHrQ1QR
|
||||||
+OlXeFjPB1Tnx+8eZGsbKqj8ldV/faxhkm09xey3JmBbTw/8pjmq3jzb6vzTfLdA
|
q5Gb2pot6YP4ANRJuPmczTQvI18gZA4kTaah3DrZ8F9hhpKBW0lZql4dSt669LnP
|
||||||
FHI0R2oVk4UEmeG80LIMP5yJ8LfjyGGL3oUiyDWUmmGhLcMnsOnVqepQhaPDl5uv
|
J+r/pTsBDqcmp4wS8QIe8LDu7GLJkTecAkthKTIpDquZVqeKEpEBqDgfWmBJrubS
|
||||||
/tr9oecwutbtliODjX/yMV84aHQHH3VCFS4zKdQsFujWtFUUGPvFGw25Ab2U+H/A
|
E5Xfix4bIXHgYhCxuU8TCAykAY67IpjJ8qfyB6Bl9x6vnvNREoKkBXhLmcvCRPHF
|
||||||
bGu/0czV6XgWFiq5Aw2B7RVaN4h49F9nD1+sh3PPdjxHDslxoYteOjw9/Zpq+NVB
|
JOaMSaKwiMO6JYhi85sT1Xmw2AR0c4S1Bu2Q7Iz4FkrQRHhJUIdoGEJbdEr1OmVx
|
||||||
VeVxxdeC+2vdBqLxBFxY6FiOP3h6GabDy8lNicnVfZ4
|
4qiiYQCTLA9xf4DT6/j7AmW5K9sLQ6bPOYBQcQ1dPLc
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
dgK9eeEPxA4l2EoD2g2Lc+4dQXTnd3u2453+mPGlXAOEG+dB9dU3Q1Tvznb1Olau
|
HU3b1PEZssuD2pUck/3wRa+DNCf3iXzjByhuJ1GRR6PZuyUAieL5iFwTqtPvbGaX
|
||||||
ndVHPSU9pk+Pyy2aHA8VeOU/5YBp1mnQfsNOSWAJCVeILsMxD3HFmvUqGnoTj+ou
|
2nz80lWqRn+pu9oFdzatZkXqSNncZyBAKHSgNuiHTX3ZHsRUWluDEqNgcOrzd9n7
|
||||||
2urD785tFJ4AEoZ09GsLjPru5bGKD966Iq9/Ehf8MKU02dsoqHG5OhTKpL/shM4M
|
GGNq0Irr32mneGFHEoVRNyhMyQISGi/frZBh3uPCaF5Wnp6cNwh2GLx4lFRh7682
|
||||||
ZP36KV1WJ7LpR9TnUTs764P9yR1SZ5ea8x9e24EoJ9V29ME0n3dhrRTtjskulhh3
|
YObxqzDqwhcaTzhYjtx8baA7H7klgDHXozamzswi98RdgcUs0WjqTq6p7WY85YAj
|
||||||
rHHck8GpM5YjIngaeAQE+JONekgGDuapnXp3XvMdNWLYuJOPQd91VutiL8R85/FQ
|
pEi9eeidL7eIabPNjTPoiCogc1evYyKFqj2g3WlFWPeyTOSheJrRHsA0akejeahr
|
||||||
u5bTOEtyPC/LRlQ0QWuKYAAIFfk09fbJbsZKUIfm+EyDwy0c4N56mTd06CddyTti
|
BScBS0szTgiHdwNgkmRap1q4/7+3PsOlv/KNLbbXRhuTGlIObcUzdsFMb4R49NCd
|
||||||
Wsjwz2SdP4Xjt7sFT25c1TDOBlcVV1CIJ4hcZFvyvDTDAcc5VqEwfrIVSoMqnpRc
|
FHs7aFGy4DSbcZcNaLVAo0iGcX4Vj2AlhGXkXmcAf3sNEbNxSE+0WidqBKbsH3Zd
|
||||||
g1X2uRJYghvnt3x2PH4/QdxMzt3vubIvA+hbtQ3NHKP3G2OdxermourksiawzqMi
|
yl2A2S9z4ouwGkA9CGl1gaKWs6zgFCw1uidg2zdYpcwkWgtVpc+ZWlWwdzzA1T2T
|
||||||
ucWkaEo+glHN3BoSVCTXp0uQ/r4WikHosf8w1gUYRFzfW3mB5FgsNGg0ymlSWG1Y
|
PWUbP7CxO4DMIrOghsbMDxJ1uz70sGZE2mLGEvpoSRCHGCR3I4GyJlMvxbtOVun0
|
||||||
4Sctevr6kI/GUsFFNBwH8ub/L8j/jDM3FSwsBTg3MI1LPlgFxTmPrxOeAS6mox9b
|
7EPIK1MO3I+Onv6lsHeJyLp0xcP1e4EVGhRm87Baghpcac6nZ/1tE0rBc5Xt0G0e
|
||||||
NLyBTMmPTyNmHfW3KlRzfeHgBejQoI+WAPbUseNLHjU
|
8ONtpaL65RqcHqU7xGRJdHCkmUCIVePVWNn2PS3vO3Q
|
||||||
-> ssh-ed25519 q+UPnA 9dUNBGtGZUV9uALktxQS25kgBDMccgpyigcQsN2tiVw
|
-> ssh-ed25519 q+UPnA M9QSFABS5vUTHeA4iG9bAGSten/cZLWO3zYi8/vBvS8
|
||||||
t5QMleJquBr8LqpLttuAJfp4TUfreeOIkg3/0GW9iLU
|
ffvUrxE63HyK0z8azRe0MwT2FUoqNo0cv5LLKFST3X0
|
||||||
-> P~/-grease
|
-> q-grease ~^p*
|
||||||
aMeUuU0
|
ViQ0dEUyUYOFkRSmoCGu3WwLXQ2UB2/PczXH6TT/h/CtH+ST
|
||||||
--- /7SUOvGhJM63EdZevk9oEh+nJa2Bsg4w9Jl7rz06VLA
|
--- Q51zYmtvyj76SNT1sjEyM8x3kwVfu8Rf5+pHXb4BWzk
|
||||||
½Î¡î°È7.ÕÀ¾¸X‚a´ä9cÓQ-òf[Ï1°+½ÍÊ`°Cò<EžÓ êÜâ&`‹k¹´NÝ ¹/>,¢Õ襟tºÕ,$kuʦצƖµN¿
|
ÿ#âiêV„ÍÓTútka—ˆ<E28094>ý|×ïÛã=1’ôÍ"ÞÙgÓº³g'_¦µ¤I1<49>J'Ñù° ÈP„¶•m ¾¤£ò-O½¨µ§ïQ=ü8+
|
Binary file not shown.
|
@ -1,32 +1,32 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
aqlsG/GA8H6jdKCwZwe9USwy0m+77752p8ETzbrW8ewkZtbZcMIZTRapnX5SeOxf
|
XPYf9GGWLvhqJZeqOzK0VG/DaMBuB1bTLiG2KbQfF+qDxgDJJiTcM7V8W4PHgoq4
|
||||||
juXb9jFVT9QhxLRH7W9N80V9IrsVVTvOho624xNUccSbkn+Fx/SgjpNw1tsxT8G3
|
pfbJ5jZjabuuhR8Uq0UtxH33if3UV4igTkjPUqskjjAQuCmp3Mk5Q3ICYqKgdQ5P
|
||||||
FYk/HllHnuTKikBqz+DD5s1zY7ecv1heu7XBsbbJYAwJ4hZhGj8d1cazBYzGur+S
|
7vMviInUhmDZFCyRbVm8nmU9rKxOcVN493BFDkxPx5k5sEHlBfXYxCnqhCqgkXmY
|
||||||
SmyOCMompYUGGzY2o6Cba/WbSIvnwC+MTeJVbD/+fsYWboIVAZfn9+u9/pMWhGlE
|
GAksH7W8mmpO915vk8lRzxVmQLuKNAa/8CyoAaxuQ3zwtomUDOSff3GhpvaI09jb
|
||||||
jAz3lkEwRfFZo7wyAbT4+SCOFTcVLHjA+clpYKKM0hmxvFDxaeGFuWf7eXI4NdE1
|
2kDw094S9iZUKXiI11T6RL1cFQjaNTYc3UlNCrTLHRVMejeTWNgHQYLdzUAHHPAk
|
||||||
iNM8iWV4TM0wdbNAbrpGQKFHkT7T0uss7yESNUzmzR2HHm+2LEHpKHza8H9/zRdd
|
mD3g+Kl7fndpJmfNWlmp0Y7WyXUtzPD1D3tHgeOCOVzttBP9bH20D21+8wQ7jprZ
|
||||||
4D+AaaF0YDVHAZJxraudfvFQbaIZ/2r0HNIpGxmrc1EvUXaENX9rUJipT03Rp2LY
|
vb0aCMNG7wk/ZAh5eSgKd1UG28bA9RxgerzZl81KMCE4IOPPQLzhzMND803Ce/KC
|
||||||
Xb3di26XFIu1IQJF0NpvBdqBBnVpbqfWWfiGD7yY+2+gNCs3wd3p3C8w7s2b7ap1
|
UXqqWlLjjG6x+3zOwDcBRozNRICpsbWqJP1Oy84zNIr7hZ2rO8d6OVg4sr03rVcW
|
||||||
A/4ND1/xb4pEm9FXeZsO3+nUTyRw2trHxq30ZOCzWXxUBn4nTjhiZX510jmK/QM9
|
WwHRs1T2KSql/pvtGm4CVVmD6o4oh/SC/wqP82teS7SPcPwous76SGfvYx7XZtkq
|
||||||
8rtNzJA0UGHWnjmhmxuTnLKOvxwxb4FRPf3w9f0rYWkO+78joCDucJIKYJfWLqdl
|
+ERh674tFe3d+o1WJZRQxObrYtf/dh0QZUK5qk0EVEIuraNYyVcmxA56/YqXLMl9
|
||||||
V/0SX5lkcPW8qAzwi5vIxO0Kf7HaRoJFe075yOCzC14
|
+otw2EG+V7eORmizBYlbj7rAx2oOmscBT/SOW1H7xkI
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
dNntmb34a/qiHvm5jiCoqqFUeyZDKpGmw4Z+2o/aGDQOWUcnfkr4s28L93J2zaMS
|
FBdKFx4C6Lq1VYS518Omf7lVCVnuPa4UpnKdeaKOGng0cSHrBuZPU51WMLBZUX6a
|
||||||
GaYCmMaPIYKgFliQqtmK/8WqhcvbQq4T5EuBTZXH15hMHqon9XaNz5SqSu84bQK7
|
rua3wb6Lp7RTBYqD/Qy7TYcxpXrS34srN8wR7re7X8S3+gXOVLBKIOwK4fVY/E6D
|
||||||
sKbOCINV0g0hUP+yJrvQKIJUaGsFnCVHbQkVid164QoDG0fOYwGEwDkc2IlcWe3b
|
SmXlEKrvyXeIKc+caMA0B/od2yNs5meMCyMrO7mWwYjS1qgnbbwld4Z3azEMi407
|
||||||
oTIMiLmiiLQzFNEsiLj8skg51NsZT7StvZ3UGTzjlHudLqaOUO6wM0/Bx2DK1SFG
|
6NP7bNUY+XFJpQ8s9mALdSei3pRXMynl6EQX4xq2DYwGjsGkMXV2GJOeRWGytUsZ
|
||||||
iO2Ej0UjAwpXLvZ8BGn0I5YSnHbs/bMli6pt+wpM+FGMxgtqDjTjOmk/W/ZnazpB
|
HB06T7LCKWnY5JHX/qv7gG7OudIbm91uvrz6JXhQ8ZICwF7qugFV3GITx5ClvGQ0
|
||||||
kbVcNg6ai0Kl7zocxMLIs6QTf0GUEjZZeVLxv0P89xmnp15ULTM5soaidQdOx1R5
|
+oZo2xKxSOUitrva4p60u6FaaKKbDaJKChmWeORsadKnf6tdE2eon/YEwK0QcV1m
|
||||||
xNbYn6tuBzLatC3UbeNr0AiHkB89uNqI3A6rBQNIsA5ez0RGBm/nEpM7CfjyS8WC
|
yBP0CwSOv4PC0inXRHwH9m3ufCk0PWFxYdTOy82D1QJW4PqrUIXe1AEyJpWoXJmn
|
||||||
iUyxZi8vh9y+JaKYnX0F0nXD+7VZujmFQaGbIuNJPlVJ8mrLZVUk2LYCe6RHy8q3
|
+n0lOMg/ZJhGn1/1ruedF6z6SofG6EAWvJY/739STaegstQy4VLeZt/lz1tO1Y7C
|
||||||
3WRgwflas6egefjkIcZYt40w2/I7eowW/v1gSO0H4aZ0jEgc94pbWU1VLM+m1kns
|
PuUhOdJPk/k8wHVqAzpXylJFW6uUmK8Jb7ivwg9ojspzdcwfH8ZfFVeNQpoLB+f5
|
||||||
6aNfbUtvGWw/+a4xbqMROvLttpXyNcRq72YCET1/CG36w1PMbuUaK/D0Ex0LhXoU
|
zPqxEcZh4p4dqV9YKbBL3AFyM4HTXMJ30oQc1JIvqTZo3UvyJHxbajk92JSzl3LX
|
||||||
+0CpFhNpNah3mWMBCyhpWJsm0/BIJezP4f53tLf1qEA
|
DK79QThXmw/+zqbo8Uz0ye5m79FViif2yPx4bUcqv7A
|
||||||
-> ssh-ed25519 q+UPnA VpMqbg5IEpxuMj2GS5r9CN40y/nIgUiAJOH8hvY2XXY
|
-> ssh-ed25519 q+UPnA tDxkahP1PKvyR+BFwECga6KBg4THfNkPCkA8LEUC4xM
|
||||||
dCL2qldd/NqimS1g2YQO4wmFcrXrh6zYl7n8cYzb9Qc
|
9dtq1r0pVrz8Arnyae2STJ2CLkcteQiq63wXK5mmyaI
|
||||||
-> 5NK-grease 5:2y*1h hXl .}3!u|0 S.-n
|
-> lk=-grease q~RgL~ s
|
||||||
8fYoUtYyn9ZRTIhokto0EqcRqnAZ3F3zlea8stOOtGmhSYyz2d2wDUCqNTkedsRP
|
XmwcP5ZOkzY8NoHEydrOrKuz7QIqQXf97WdoA6z0JrbVum/B5BHY8T2BNaxlO1eC
|
||||||
3231
|
0mb0BAcv+nTkIHuOt1mQjZnCxxqLjLqwn0c3TiyWseSHauIEcYUYt97Aew
|
||||||
--- w09i+6RiUi9ZGC/6yGPb7EX+278oICoGsLS5mksQguo
|
--- 9dX9gOfN7g1rVUn8HP5FeAqszNkNY1E/TCW5vVFRtt0
|
||||||
*oø^rùÐ.îïSÄ©é,M8:_åD8w#[ÔJÉ8Z}²%¹—ÿ1ù:û¬!l_®I÷&{þƒP÷š‰Ì£^™4ÌX쬺)À7¯<37>EîY÷¿$_
|
€÷üL«<¯æXœœ°[V*¨<>X<EFBFBD>Ö#Œ=Ð9Û©ORÊÛ§§Qˆ[)ÙÙÖ5jàÇœÉóWÉôËÎ2iÏ)¶…BªHÛ™Tþ²ƒi€VC±ÁÌœ±»ãûÀ
|
|
@ -1,32 +1,32 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
ZyAIFd7Y1Gf2IPgt0CpjC71pUwSp+DlS+rGwQlB8IWXUULkzzbO9f/9VAK7NXScu
|
E8eBQYfl3B/dMAQKn/NgL0WpuDkMJETEbMCtmwvXlzMlKeDDHVrESmek7mn0xicW
|
||||||
YaqY5PjgZ9rm7fztJU8LJR+BD8L3VxKSmNIf7UeRjAalC19l4qw4yBq43SPmEBxl
|
/nFrAkn0cDxnJDHsb8GPmIYgtgZFOYYsxgLq0O1fwkhrcZuUGC2KM7eB0i3OHXfQ
|
||||||
Uzql9M+w+Ad9hyM+zcZC9EBKC6NEgt7nY2V4Ar+xaZrK+422ZzoARh92UPyD2PRr
|
lUvFbdpC3FLiEE3ttgW4+cNofrJKB6K8/vDqZXZ/0LK4fGxwOmJkdR5qgHuoAYUF
|
||||||
NTk9SwJnuOUH6VjbtVeTgOumdc5+ervoG+OcYbSx1J8IA+I7sVSTLGIIfyksH/Vb
|
hgMY4hR5gyUQMYl/keNXeCoQsJv5jetTSmrT/3xksQOioncAVdb7D1tX3XMURG6X
|
||||||
ISHP6x9258HweDwuCevM6FGpSjo1pZ07vvTrwElCQTmyUI5VSsSivzBsxJW5vTOD
|
3j4V3m0Zj/ObGFcVg2IFqab3Xl5UnR5o3TnhEpHIbbtf0aCx6Z5RBNzp1AXWmisc
|
||||||
/ZSiNIbWGWaDzBKEZyirLtnx69ymYqQyAzXCH/Syljowan+7x92sAyNjKQ664FP0
|
9hDhxiHFSdxJ4AoN3ftTL2s98zkR0IWnyvHm7lwMy8B35iV6PQRna+3kEjw33zdP
|
||||||
BIkR2Xi/ICnws2v0YmPhQgRHzEoQXYG+A5opAO2hT2hIDGYtPh9bNBjZjXyr+Hh1
|
+ZfMV6BGz1OGGjHZCcE42P7vv+pfkt6Cg7sFGBSbhHw5lf++rNvJXGPx+AEyowAZ
|
||||||
KijGogGeWHE5SxGAV46t80tvo9BbUVhBFKkwezeCoZ8/pzoh7nzkFXyDK2zgWMUW
|
aJSLr2upy7xB9JuCIjl23PQ8/uYDDgmsgwMr4VKYN2gdxmmJHVpcAUBs+0TQC50L
|
||||||
dEPWolIMLNbvr79oUnkZqHKqtsl/phdrziSt4P8hNtVctfEhChZuTLBHPLx9ac/e
|
w7IbB3kA1RX+38E3IGqHuRnOhBHGIiHjIzj6A5h4F2IP7BDCkg9WDhU20dn5P+CA
|
||||||
EdU/7sW+XiOJD+BCRyCthAQADSJ4A6iZCp8iCSPts4AV36DFHhX0mG8TOCPF/Djz
|
WnRSTR80xumcDgPvmzNSa1sYQ+EGMz71CcZD6iA2rm8aMwjHrhzFoOyo/BK20iOL
|
||||||
t4nI0R/OugAlcaeIU7VBJplAXlwz32B5freu1NF+Cqw
|
SbMra17kXlEpStImmjnKMiDzy7f0VeqUYgERJpPeO84
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
nwxD/5nnhhfoFDrfvawR9j9+eSJzeZR4wdHg78iw/YKnz+CrCvlFK9b54WXeqt8M
|
dTFBxgeBt9Aj95j2BsDl5rz+/5JuGjX0rcCShHECHev63oaajuCwgsyk5nfEXrA7
|
||||||
P9bZurxpNsa1nG31MOmMQcyNKrcrjqfBSa/311FR1NvfvpMasUg3r0f1W9K0MkbL
|
aJP+Q1D70SJMwc1ghBihMgJFybt9KYHOfMY8TKEVwJ8XqUwQRIrbHTrTAu/N0W/E
|
||||||
VV27jyhurCS0AVH5xMZ5uEcH9gXWWkaRWN9mgZ9/kJtr6VqjJdIT/l/0KwXln/EP
|
4foZPkZhThXlaYpiSWLymgQoU47j0OwSojNph8IcCDy5Yj5em7K9d6m5uwZNAKBk
|
||||||
tPNkelQWIPhUCQ+w7+a2qg1t0q1b8MM+RXQ33+m9X6DvoNU1V0RKAl0YfBNrcVRL
|
Z7wJa1QkQPIee2rfN8s8JE6antSt/bNK1+m2wiGQmPLTczYjrDrUfJavRtBp+Y0x
|
||||||
7FQbeZmJLjLmMeMbLzGdAZZIyoRlllZr9Ho8/q/KHDGBOsAaJt7yZHhHGvvdGdeD
|
9ZyjVnot24LtmB9kKy7ppcD2QYQ4glZPDyUPSlhukcBiL9yZ+3W7d7n1AqpwXji3
|
||||||
2AXcx9u952QnuL07cwYZTSwh6yfYMvZ/oAdWfVLQ7u0ZLJG4KNyVEnzUKYaJsEgv
|
sOb12Vz/cbPn16dqW9U0lmMl54s2R5gXrRFKf9AzjGg74rQW5N77H67p7it6YpSS
|
||||||
97yvsUren+bgSa2xlRtCBDfbspxbjIC8P5pK/dDHoGbNS3dmO9+pVy1oucIBPOHq
|
KIUykCP5RHNLvLYSShfMCPupNVj6xF2vg9d81rYrVPIaaFL4kTceANMQva5QISbP
|
||||||
eEU8cv4gR+L9JZ+ZyRISYKdlLX4F3rZPDGDuWI3xuv9+Wn5HmKEg6KR5txPR9enz
|
jywaqwtkeTxP1h1qT3YI/wa/VkuLu6TPj/LUeFW3j3ombjVr+onzFShTis1HU63c
|
||||||
A/A9M+ByRZfpSHcTQnHCEDVXPA/6s3U368c+97mQkn7zHkKqBz/9xDCRAZ1zJfmX
|
iu0Kr+yXTXmOSV+v2qI5g55iv4QXbxblYAH0tgNgbwSFLBanb7vGur6Mlqlz8f5P
|
||||||
gnxMgiu69hG40tcOt5lJ7l5Ub7JJRGcju+1LTsrk7dG8rerRcQGVD0RzWBKGs6MC
|
EiG4GJFVlonypbAbwhaQcWJ1R3C3s6q4OTGmOsOaKauCfpqEKACyhic8XRGa2D12
|
||||||
xPI1UaTSifctYwph3JIE7zSRyKWEXNfIwGUN/IeJ5Qk
|
YUvfQsASW+8vcFSuhroVBDVuqWGusbNCoUexdh0pMEM
|
||||||
-> ssh-ed25519 q+UPnA TodcF2hzoDbPkcGP4WvWQ+PtTVW2ae2Nf3kvqNrjuzI
|
-> ssh-ed25519 q+UPnA HeB1cwY5NWZ7teu4sx7A4WSIJrKpo3MQFUIhLCM7IX0
|
||||||
ftRwtL4Gkjj5VU4mw15teicD0aa2qMOZxVUYCVtj+v0
|
yT+jLOXVIYHw1uemnLQh5IQCWv2BFNvDeEs5oU3jlFg
|
||||||
-> ;sH;-grease
|
-> g"BqJngW-grease
|
||||||
ZcjMolRojM91kXtIOEj4C3BplSI8rSALBKn2ny2CfjAS2X5Ml0F/i4SJa7ElVBfI
|
9X1m+tqdnsFSBgiKTfknVuM2QhWBpQeJ/BFP
|
||||||
IvN6OcEf/o5awlcqAC0GtccYwv1X+yASx7HC7jb9Kjd83oULGwY8BuHx0sTm
|
--- usEYjLXQVNV9DyW8FaKJoiQGcvmk3hn5gBTH5Z8Nsfg
|
||||||
--- vnVqrDhP0rS+X3DDzDeDdY7Ah+a/+XGAjKabfYMXulk
|
??b“·ŐŚsqjľ[Ó5@7ľŻž° =Gsô<73>ß§Ű_Xö>°Mö!\m¨c)ÔŽ<1F>eeĄ?ý"€ź~I±A¨·!öţ…
|
||||||
™eôé>{Í—œ'f%îLë=ç=¡Jþ´@*aQÂ5ºO¢¯)¬¥Œå÷¼RßÙFßf†®ÏÆûcêPán*×D6‡é{8}.|¬´÷-
|
GŐ4
|
32
secrets/nextcloud-admin-pass.age
Normal file
32
secrets/nextcloud-admin-pass.age
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-rsa /AagBw
|
||||||
|
Cl7b/Czal+2wF9bpdmz0pW4kR3IQ6Yn2HLVm5u1SPelVPxJpvCWKccWF/QD1VZv8
|
||||||
|
IXoy7+nKrUz3X5f9MGeVshEakhyOBoeQjAk7WNyh8iR6iOR17Q+z+rHlvL/wZeWo
|
||||||
|
vPThBhmqcwFlEPDDhg+gD0WVisEKD3JMX+8hK/r0clIoRcBfuOJxsqEOFDDTkDQs
|
||||||
|
iW0eLw+yi8pN3lnALJSEW0e3TzNLHSz3Zb5iL9ZqWSr5rWi4+K1RDmHOd9HQgn9P
|
||||||
|
ULzh8Fb4l6h+pgJ/Wn4SBzDFF6aXU/ADteUqd4nxyqeHvLjAHlNYkWGLDQvY6JlF
|
||||||
|
NoHOJeDr2KR6RFKFPpMKXyqW/MIyxmrLtBhvlPYr/WWSi3w54Y5Nn8IKkSOKZlsv
|
||||||
|
l6TqAtNL5Mvh6tqnxGIBJgC9CFYTTiHwPFVL5X3PGbnkEWl1oTBfVX9ZAHYi/rla
|
||||||
|
TsclVlrEGjr1w72FPbuTvLpk3Wam5Nyngk9/hk/ZMqZ4mQGXqHHFGwi79Ws/YvVz
|
||||||
|
d1llkt+RqKR853daWtp9XadfFRU8XSvf6Eb2Uci59RctxS57ggyE6BMu53rPlTUa
|
||||||
|
GVegJieRg4tdk2YFSvh5+ZARmynMqVHQanZXoSWvYP1tuWZrudU4AChGYq0C4qv4
|
||||||
|
TNLoOAbqa7ZuDNLjdju264lqQK8QFl2BGZGVmEhM+c8
|
||||||
|
-> ssh-rsa QHr3/A
|
||||||
|
UETe1pElxQXUFrVzImihkKDE70453LmOOiHH3xIHlIzJwHfvHDHGRV/Zkez+N4tE
|
||||||
|
3bDCdxYDP9ZkFaS/b2lMvPYhslsqwdjkfNX5AWaeyceDElphEaohLON0+6oi5yEq
|
||||||
|
/Y1Y4BNK7iONGlmXxTsoFQvcbt4+/7KmLY+UZsjONcCmWLcMPOjJ/Or5VB2Pglch
|
||||||
|
ynQ6cJe2i/v36Ff/w50nql2jvkGRXXg/jWDqhRz6fX2i/qnF3QN3xHf0Kxeosm2L
|
||||||
|
Tdvaj65hX7yUVq7tfiwQtEI/nwWkatyKN2TchpI3y16HnT2VQlsq1YEclLetF9ge
|
||||||
|
2TfXCTwn1TnELssOLQAk3OMA7aBBNEvD8lheyNLkwIWCDVXs06tAKJdLeeS7B+WB
|
||||||
|
wtxLXoQIHKIJa8Jt23MhVBuFUPHJr0JEfc5zf9C1weR19nIHffsq/B/0FHk/XWSQ
|
||||||
|
meNJ9UBMllRVoIRD2Vvfv3/Bj+lQy7zThxk5Wm0SN1K/yCrYZcZQrhNuDVLiW3be
|
||||||
|
O/myBXKpP+RFEoP/iWh+XXISb4vZQZwlCm5pUexjv5zjRmOp/JchdcsEcNfGNM2c
|
||||||
|
/mQI5xgssM3M+fNSRAKIw73g7dRc5C85Y13w7e1kPy6cosgmEej8Agf2p3+Xc1hk
|
||||||
|
1OMvQRGyLKQlQ2K3nrr1CVCC/06prPbNaWqs7vwCUkE
|
||||||
|
-> ssh-ed25519 OgJHCw WpYoOofNV7IpQ4k0R6RPPW01DIzmRaj+Yos4raBXyB0
|
||||||
|
jD/1d5k0TsgUGvMP0rIPGhi3DUwuXjIyxvxG4Ma6LCE
|
||||||
|
-> R"?&j.ES-grease !S7 L^~I%z
|
||||||
|
TlbrK6/ZeBsETBs47Owfe0Epny/39QzVO+jJcbAcpP/i6+uJiLJPCW0D4b4FeI4s
|
||||||
|
bZWstAzjnBOLfA4Kh/KwSOpGnuevAcpb0w
|
||||||
|
--- uwdVZmP6cHeWJR/yCaXv/MUPy+ULRNLkiXWBp3TrSq4
|
||||||
|
¿ÿW•ç×q»+ ˆPµFƒ.R](ð ]™çþ—"$çSo$ˆ
|
Binary file not shown.
|
@ -1,34 +1,32 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
BFYnzNCrRsdN6BFF7lujlt4rk0eBMITxptFjrYh9mApIn4aSGUamfR5qHzHIWT2w
|
Nw0FFWmDOcYoRT+ZdKU+P+yYRyoVX4dbPfoaBgynAC0wUuWSIorcKNWtl0hgSKTf
|
||||||
KBTlYpc/h/IhWEBVAI/XrpfxY7uYbzFAW5D9pn8nJOGpR23tI06F/lkBtmJbM6FN
|
TuK7+SOnqeh/au2SzDYR8cDWXx85dfgH8Sqp15q8KjxwFsa3XmHJmDjN/UaSg9g8
|
||||||
c0iDzQS1EZGdDsTB42SqkWfBSMpiwBay3sQSdSjhtFP0yTLPwPL9urpAD/IRTe8c
|
g4FJFyKTeENLt2bawB7UUMwdIKOy/jHaCO5EkFrnH+8sJgskL/v2LU/69jxFDVGN
|
||||||
v2XK79YjgwUHf8S3dJdzRiqaxlK+v+eHia01lRuItzHklWb14bsaFgEpyAJXYEme
|
p94lT0Ak++4mv/e7v5fvsWDZDa8HS1wZw6q1VS7Zhlo8/F2xddHNaW1KaiVJufU5
|
||||||
e1L3xOc+x2moWwSEgnBiRzu4XkSohslSLM+CAswejW0i/YBRPveDR0YHIgqTjL7e
|
hQIlJEM6Ma1lCQSM2dV3DnlD3TqFhntI451jroBfPqI9iCc4PN/FKZuTqdsylwuO
|
||||||
3s4qVo6p5Q64EDYlvO8Fi0hrz+hu0p59jpoPtrIAGjDiFJQmF1nSBLw8Q40gXy/d
|
uqlzBzNjGkZmXE3lzve8BwfgL/m1OL5Zkw9rPqP6p2dx36NnG7rUrP5C4f7Rlnxj
|
||||||
jGCD1l7SKvrx4crwnzuAeMCK9RWi6LtNzXeDG2ygkMmKGWQdKM9fP0AtF1iQSFmW
|
8mNJbY+de1dMTQhGR5bciTONgXhFcVobEzlzugINfV+hTkGvC0qaAJUF9wiCZz/t
|
||||||
Rj2JNCb7d67uitkovkwm1pcoVg0Nv3BjFTVf4dt8dxdWZcoPSf5Q2BQmKNuyScoX
|
fYYw/2iKaxuROfkEFimrMbisSZNmdWGUvE/Qy6+dqhxOzy4/8Cmzc8KDalSByjUo
|
||||||
Cean8TdS52c87eEklhPOchJE4461MhMYTwJozRqdTWSlFJ7GIzxDKksHY7Xs4oOZ
|
9vYkmBn3KdrR2QmONBPQMT6KW4Vy37jzk9E7qTB4yRNqaygsYcOKNO6hLL+7u+E6
|
||||||
2CmJjSxAntY13Xm/V6x5MCl/M9yRJ5p6eejzv0nrk63MJQ+9bXCrq4gGwRYDhng3
|
eDwFlPVxQiMuPejTg8XJjgAX/i2S9MZmsLmxEF8I4JzyYD7gZ6xGstwqcFUBYZN8
|
||||||
jWZOPSLwtPpBGCfPb8/mMmknF5QZBFMViXo1VxGlF8Y
|
R0xRFpSlh8d9d1AVKEPXnDZwDMI7NAYJDnElBl0uhtY
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
RYlsXMb4/LEvxDc75aP5Z7MjBkiAmJy+QB6XkJ/tjEPTxH4B97WguNCrmKd1TKkv
|
bwxQso2CsHig3ZYfQDa16U/8g3OUUAFDGL7xdTNV4vv70sM1QZmpjnruuoJGBb2r
|
||||||
NY5WW85mRj5xjcYNx21vXlz0y+NnTB1Jpg3PnxcfiD3F1M9E1kUKSY0Sv/bbi8KT
|
KmfHMDvCVNYjADtf4i1AgOEoHtQP2/bIcuMqq1XQ2baPavF/zmoGB2X5j8dBryq1
|
||||||
4JqPkkdbR55csNp76gsdRUweNPVLQCiRXyCYQbD17/KQR1e3gZ1nlHJyOzk8uwcd
|
QCNwKHkBCW1myFfq4QVEwiKrJmEP1gH8KL1YYYNkWGpwCohDzbzuT9ccIGCW9lol
|
||||||
6emM0XsVMjhzjwnoHy9rVvL4GYYTsRdMwRd+kDyve4punPKcEYdhnUQse7buaNJs
|
hRGPOfkFMm7VLXQ6T1FN+cTy0KgXFXpkZ9fU8x8/HGEFuVT+SJl5NkTCL5Vb1fQC
|
||||||
+tbuMhfNYVSBw5vAXreMVe7Iw6aILQ7Jp7O87eJmefDB/hOSoiXkqPnQELpUwPQO
|
SWei4qp8eRzhNsQEXmUb6C5J7tp68gbK+0+cV9T+FdENrvgm6dyLCG0N/nR9ahAD
|
||||||
aBVctDyRX0IoerFXx0/KMsjIO3r+rdVr4aPEqA33ouwzJhggs603023DaDtmTBkW
|
+XDrQgBnmjNJ1xJWj+4D+5OFZhoT5TBIM+UE0dlDutCOpdW4BBO2LlyjYw8cP73E
|
||||||
RZic+BtKIgdi6qQEGShp8SRMLGBWhH0911A6w0wc5k55JhmAEfxx0rcBnDuWjfMb
|
DsAlYA1Dec32mEcCAeXByVeKkJ4z+0KWPUcjHeHee0sxOKJEGpeRYN0RzVnHjYeQ
|
||||||
mPUQWnbejXWz+5UU5QTzkaULDqDXgecDq/tggsbBNF6CffoeSrHFLtfQe8Fv03nX
|
zWq9R38mL8DgVvnYYowEjcLGBQ2ZxYRB8BxyIghexBDWM1bxSR+/44E/sGfCvpdf
|
||||||
zwMXyxUaYJqEA+RWlmrBicq3Szin+Kryy9PHf1xpJl7kuE/eMxwK2oOeQldTxdif
|
zCSQDFcHaBUpl5fZ3dhIwRZcOpdiZ6+E35+jmcidxywXftODWAfbjqDiwAFTgzdh
|
||||||
H2r4TM4Qp1pAFvwH/PdDg1FzxhT7MvQRpOHOuERZaSyJbi1uxZpEhGL4xBItNiSr
|
NyhmOFE4pfr0COR2t+dgJJgw1QL3j20uXG9SZnIpDeHcqrLI6UzGbcuRxx4ecytB
|
||||||
pXoDEDStlcc4u2eM/5G1dHDOljWYsYrkml2ZBaq+/4I
|
0mG9c72QOxOrheF3h3P+0t7+s0w+HHGHuWaUU6xgKak
|
||||||
-> ssh-ed25519 uy/XKQ 3PT1CZWG9XgErLjp/4xfQA2H7YjuVLqZemPpfk1Rfzo
|
-> ssh-ed25519 OgJHCw Lu3XhZcYnicrT4H/3gLxREbdN85/eQMvT1gSmcfNVmA
|
||||||
Maf6azjqf4OClb3Njv++lnJ+0rB86RsXb61v1C/IYkk
|
35RGwyLnc2cBB2rLR1Wc6sXrKgI7X7hxiTqS6YCuSJk
|
||||||
-> x$=KD+-grease _ Q
|
-> {G-grease
|
||||||
xlWMjdHLXOR2Ghtic6ogLRpDZd5yunAKqrbNCJWWd5c+FxKdjlFvQnKE8iZoXEoj
|
ICoSFLbdIGh8CEXHI+1dVpdXEsL+LN1GaJJHZsPM6Xp5/i8o5AqthgNproG950zC
|
||||||
xBGsGJxWwwe4LshbkMxyAuDz6N1kjz6GL+JO7/XrqMf0m3Supqmqir3483tTo2n2
|
UUyrWWjibU2OKUIq4Tm/qKsHuXSABdbcBGbNzPhSNu1PNqTSlg
|
||||||
Xq9s
|
--- IL5jG4bfjBiyFMDq9AFDtut6IcnC1D0pqhNs9NPzoWM
|
||||||
--- wFqmYwUiaNZW/4LSCZtVnob4z5rfXds3lCawk7Z8E48
|
Ît!á—S<E28094>ŒØËŠ4Élw<01>`ƒe{Mnê<6E>ŠÞðCqÒÁxŠ; 5|Nb…ä";ÞøÔc¥`"0GÝpHFÚXñ@'!»æ
|
||||||
ùy¢™÷½[\PIA/gJĆ?–7[lÄ«°žºUÊÈëIÖß»y<18>j^Em™7cOðÁ
|
|
||||||
x<EFBFBD>-Î)>y‚+Kà€óoS³9Œø
|
|
|
@ -1,31 +1,31 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-rsa /AagBw
|
-> ssh-rsa /AagBw
|
||||||
saA9bW3Ya4oXdTCEKfOVaaJXacVrh6DEvdYufdUGPv7R3y0UMnqVDnADHIr5wEqY
|
EoQJxS2f+mexI80wIiChd2MdTw/xOxPWwyO+6yoV7BrHA3L14gt+hLPF0yWcsNuf
|
||||||
+6iW/+N5p+Xy/4vv2g3oLALhKjv8V5HSwpa8HvMACmwHaz1rNxFEDykCFXTe5YyA
|
vtsXpenbMVmVaQJDTE4zCFMAeSp93FW5hilZmumZJY78ItJ73RqIx5wnrp9u41LX
|
||||||
PJNU2Amdj5AGk3vy3H359jNlFPKje5/G8YuZcyGxNXAROFlKIHXyMaMppgvxfFR/
|
GU/VnUZXhSsJfios/qhCro7bMHfQc9Grqj/ocNwXlaiyH0BU736fWwmI/s84ptdt
|
||||||
eBpPbPSYK/Hh77jqRk6u1J0lq3lQVl7wmwVl6/A4NsDFy08uopaUwF8PSLaqaO0O
|
67LXwesX/Wv8T+9z6GODObF3XVyo59WdTOzkkRSzaXv0IRV2mQXB1wAB2UxmblHy
|
||||||
R+IPW63Ux5uzNKqmtF501FXSz2USukbE9y1+1J6C5GjgtHEYuFiSYOgwulW/m3sV
|
L6lVwQkAEgV4ATYbKbTF2PePDDfyIP5gNJKnVuAXrzwjSJvKJR/LVXYlFXf5gTSR
|
||||||
vCJarodzleKzclzvezaQWTeaOOB8HGtZ4/PBjpDn4hRHEpOpbwLm11I5uwoYoU/S
|
EPrcstIPTEn1Iagc0Cv6BMhiyRENGiCSrdU+l1FQUiD3LHA8HfwfvBcHejJYLsK6
|
||||||
oAN7QYN+1VCuXkrnRQ3SVcnj5frg8ZiKwLov+TOWNVfdlSO26sUbgDkGwBq9X8lu
|
wQ/5hjYFFtSVXN6l/vRM/JYghjShuz49vXNAOZQy01b+e1+9czReLku4L3BisBd9
|
||||||
7R/Kv3cq7TCu781hxNx8CpH4MkDkkuTNe7hJ6BS3wZm2ydRCXW7y14wFzm4ikRjT
|
i3efplRfj+aM6PX7tDeAjSfsK2YyOScljsQCwihtf9pg65wpM6/6y+ZCkR1oOH3+
|
||||||
Y0bFAiAHTqA8imATqKTOqfGgMcMpkEvYjajN1/b4KkFdsU0597o6RIWfYgyNWz8k
|
yIWe2FOsP4yUNV6Auw4J2V2QeQpHskXI/J5YUHfoErlTPfo8CxUB6xz1+ZyEZoZJ
|
||||||
AnMO0RQ0iS2e5ZehUI40u0CDNWNakpais9qFyuuTe/c2pFUsaG6A9rQ9j959vUDc
|
1Bpou/+EtcY4N8HkK279MyHaK4zLC/LezbKdF5ZZuqX8KKK93hpMWveeuSCYMbsh
|
||||||
naQQJC1gdHM6KC6zuW68bI5cFObKI3VytMFkDf6MF8M
|
e5HqPt12SkE54jXT5HTRoN+Ycog6bJF7sWDEQyxIEGw
|
||||||
-> ssh-rsa QHr3/A
|
-> ssh-rsa QHr3/A
|
||||||
czpUMbtPlL36Uyalv73eZ5SDuembW519Lvl6+nqE1gTPkMZw75am06tRBS0L2rUH
|
hrmdI9Wm5O7TldffJwh8uZxpMTOmbjuFC+0aBI914MDOS43jxj+1WSgvPHtUrcej
|
||||||
cdu0VJxuTEia9e2dwE853MhmhK3lu8tl/ZPLsneJ4pUQXdWVMCdYqOVTaX+rWBy5
|
g5cEap00zy/ujQkwBJgop/dzXY4HB/ALeNlICpALZrXwf0TiszG1X5/hCR5E7THf
|
||||||
o5vTWcPR8A8yeHfXrga8+N9dHQ3sVr5PamgwBEPtm/pSHI9K8TpKKt8zyNw9NF4Y
|
/18MM0DG26zoLj2SmUWCxPr9qKFMugee0fCwht5vAQmED4zgWFgSKPO3vVatIe4G
|
||||||
HzLJloaRCpmk0cQM8YNewEV16kQYrSFYFQguPy9lFJBXqIRzs6GUL7e1s1ddmVOO
|
DaTKp5vInWV7M2sMepIGWwC4iq1ut/wB4ij7m6M56yoQnpI5ff9sJCDicLNzS1X2
|
||||||
J4vGsmpkFZfMoSAvo5ehlpTl3MMP4BswLt8FCJIu5KfPYhPJmJMgy1bvnSyQG433
|
q1qLDNGu5miyjaC7wzrCt/ZRhO/MiDTSzjFjuJI9JBtuRlv0bx+m+agCU0IqrCZt
|
||||||
RS5coyYNLpJEUVYo0wr+vu/EzBdVEOOjGeyR2OoMfS/rUekqSTyqRzX1YtQqf97P
|
w503eeTOVa+8aZ/ilrfFCuzoVwOujqET2M7AeGP6S8QVNO9ChrDNaW268KiijEv9
|
||||||
3Kx0SgIeYF/WwxDGm8thTVP1ZMWVp1deTfBPhhK/7peYZ8Fo+9GTiacdlUnyAUig
|
qiMVyZpxHNUp6Jqi4OtS0bznmoNdL9mzYccAifEfzFMZ3UjV8wrNLerPdJwROaNs
|
||||||
WbK+O2FjIBuKOCQ+bIcGPJmxxn4ASH3A8waBVLtuKjD5d/m7EpLDSUh319xhiwIF
|
gzS7iCPqvLjrcoVLtp8OR6WhhPkhI9s+OQu0AVtVz+uHjBGGTZeDzXfOG25RxOgH
|
||||||
zyaQaR6o+vPNCDu8z9nKAQf4uvkCnHJAa7fvnbUisbAOGc6XcplGBDYbZ9Rczsmu
|
/yFiFKiq7BzvYwbKws2dhtsSYAPVoVbmF9Wb+bBiQE417Ck9d90Fqw9nTXEJ5sHM
|
||||||
NBk7BFKtKdlhYbF9EY1y/WTfEF8GPucepW6ZqA56ZpMFshTXaaaF3wcy4uMLePG0
|
Ike3+zHdtEZEhhW4cI/dp+EuMbUAr9xJ8WPj+3OrUV+PIDMjQlB62eVBK/SPXQC8
|
||||||
nkrND1PtXcjeKqIXWG6aKtFvtXAhSAsTJNIqGUDW4Dc
|
tgy0Mnha/DhbzXAJqntLllFo1q92C7C5dGx1Nw0WsLM
|
||||||
-> ssh-ed25519 GVMLQg buruvS4d+d2gX4vHAoYR8qS/9fa30Czq0ZQvx87IlCc
|
-> ssh-ed25519 GVMLQg hmAPLGF9v96SSRNVjt8rnrpRlp1ZTTfCQCBZiuLwM08
|
||||||
RRFwfgDXGnRb5LMhIiFuRQBWeUIUyVFn+jDC2J1Q1+g
|
XCPqau2Q/fMg6Quw2STypMGi637AE8nK3B4ZbVQ2quo
|
||||||
-> 6+>eCI-grease
|
-> Z-grease
|
||||||
BKFvDaaOrnWMmmiATpBxWI5aAUb6Ybfd++ts/CISERSUusBLOSOpxv0
|
M4rzohgQe3p0eqL+iwEuisj4jqK2gO7faxHx1tCpl4GTmfM
|
||||||
--- 9D7RlDjroUk+AwV9zfsKwSm3FJ0Aw+YKhIiAQ2JiM88
|
--- tIQ2y9KNde1jK2JiRZXPWIetQ2sx2zT+32bB8BhK9LI
|
||||||
Û<EFBFBD>«È(-Ý£;Žÿo™àìœÖw”‚ƒØ©¤UÖ‰;fÓ3YŒ5ºqÍöËÙþ<05>*[á=ñ¡#p_9ÓG2ÔÏèrØi[öd¸MˆÚP°
|
<EFBFBD>kÊäÍ·(WåLé!añ>rFÊXõ8\zü`}màåúb.©Ïr*®<>)½ÛºÌ-HK-Á>¦C†Dâwží·OëY¥H¾>:?¾uï
|
Loading…
Add table
Reference in a new issue