Compare commits
No commits in common. "main" and "2025-04-04" have entirely different histories.
main
...
2025-04-04
26 changed files with 1046 additions and 301 deletions
106
.github/workflows/build-machines-and-homes.yml
vendored
106
.github/workflows/build-machines-and-homes.yml
vendored
|
@ -8,8 +8,6 @@ env:
|
||||||
TERM: ansi
|
TERM: ansi
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets. AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets. AWS_SECRET_ACCESS_KEY }}
|
||||||
AWS_DEFAULT_REGION: us-east-1
|
|
||||||
AWS_ENDPOINT_URL: https://s3.cy7.sh
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-machines:
|
build-machines:
|
||||||
|
@ -37,26 +35,7 @@ jobs:
|
||||||
build-mount-path: /nix
|
build-mount-path: /nix
|
||||||
|
|
||||||
- name: setup binary cache key
|
- name: setup binary cache key
|
||||||
run: echo -n "${{ secrets.NIX_CACHE_SECRET_KEY }}" | xxd -p -r > ${{ runner.temp }}/cache-priv-key.pem
|
run: echo "${{ secrets.NIX_CACHE_SECRET_KEY }}" >> /home/runner/cache-priv-key.pem
|
||||||
|
|
||||||
- name: Sync repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: post-build-hook
|
|
||||||
run: |
|
|
||||||
sudo mkdir -p /etc/nix
|
|
||||||
sudo cp ci/upload-to-cache.sh /etc/nix/
|
|
||||||
sudo chmod +x /etc/nix/upload-to-cache.sh
|
|
||||||
|
|
||||||
- name: setup s3 credentials
|
|
||||||
run: |
|
|
||||||
sudo mkdir /root/.aws
|
|
||||||
echo "[default]" |sudo tee /root/.aws/config |sudo tee /root/.aws/credentials
|
|
||||||
echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" |sudo tee -a /root/.aws/credentials
|
|
||||||
echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" |sudo tee -a /root/.aws/credentials
|
|
||||||
echo "endpoint_url=$AWS_ENDPOINT_URL" |sudo tee -a /root/.aws/config
|
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@v30
|
uses: cachix/install-nix-action@v30
|
||||||
|
@ -67,15 +46,39 @@ jobs:
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
accept-flake-config = true
|
accept-flake-config = true
|
||||||
system-features = nixos-test benchmark big-parallel kvm
|
system-features = nixos-test benchmark big-parallel kvm
|
||||||
secret-key-files = ${{ runner.temp }}/cache-priv-key.pem
|
secret-key-files = /home/runner/cache-priv-key.pem
|
||||||
extra-substituters = https://nixcache.cy7.sh
|
extra-substituters = https://nixcache.cy7.sh https://cache.lix.systems
|
||||||
extra-trusted-public-keys = nixcache.cy7.sh:DN3d1dt0wnXfTH03oVmTee4KgmdNdB0NY3SuzA8Fwx8=
|
extra-trusted-public-keys = nixcache.cy7.sh:DN3d1dt0wnXfTH03oVmTee4KgmdNdB0NY3SuzA8Fwx8= cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=
|
||||||
post-build-hook = /etc/nix/upload-to-cache.sh
|
|
||||||
|
- name: Install Lix
|
||||||
|
run: |
|
||||||
|
sudo --preserve-env=PATH $(which nix) run \
|
||||||
|
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.92.0' -- \
|
||||||
|
upgrade-nix
|
||||||
|
nix --version
|
||||||
|
|
||||||
|
- name: Sync repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
run: |
|
run: |
|
||||||
|
# package=".#nixosConfigurations."${{ matrix.machine }}".config.system.build.toplevel"
|
||||||
|
# nix build -L "$package"
|
||||||
nix run nixpkgs#nixos-rebuild build -- -L --flake ".#${{ matrix.machine }}"
|
nix run nixpkgs#nixos-rebuild build -- -L --flake ".#${{ matrix.machine }}"
|
||||||
|
|
||||||
|
- name: cache
|
||||||
|
# https://stackoverflow.com/a/58859404
|
||||||
|
if: '!cancelled()'
|
||||||
|
run: |
|
||||||
|
package=".#nixosConfigurations."${{ matrix.machine }}".config.system.build.toplevel"
|
||||||
|
nix run git+https://git.cy7.sh/cy/nixcp.git -- \
|
||||||
|
--to 's3://nixcache?endpoint=s3.cy7.sh&secret-key=/home/runner/cache-priv-key.pem&compression=none' \
|
||||||
|
-u https://nix-community.cachix.org \
|
||||||
|
-u https://nixcache.web.cy7.sh \
|
||||||
|
$package
|
||||||
|
|
||||||
build-homes:
|
build-homes:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
@ -102,26 +105,7 @@ jobs:
|
||||||
build-mount-path: /nix
|
build-mount-path: /nix
|
||||||
|
|
||||||
- name: setup binary cache key
|
- name: setup binary cache key
|
||||||
run: echo -n "${{ secrets.NIX_CACHE_SECRET_KEY }}" | xxd -p -r > ${{ runner.temp }}/cache-priv-key.pem
|
run: echo "${{ secrets.NIX_CACHE_SECRET_KEY }}" >> /home/runner/cache-priv-key.pem
|
||||||
|
|
||||||
- name: Sync repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: post-build-hook
|
|
||||||
run: |
|
|
||||||
sudo mkdir -p /etc/nix
|
|
||||||
sudo cp ci/upload-to-cache.sh /etc/nix/
|
|
||||||
sudo chmod +x /etc/nix/upload-to-cache.sh
|
|
||||||
|
|
||||||
- name: setup s3 credentials
|
|
||||||
run: |
|
|
||||||
sudo mkdir /root/.aws
|
|
||||||
echo "[default]" |sudo tee /root/.aws/config |sudo tee /root/.aws/credentials
|
|
||||||
echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" |sudo tee -a /root/.aws/credentials
|
|
||||||
echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" |sudo tee -a /root/.aws/credentials
|
|
||||||
echo "endpoint_url=$AWS_ENDPOINT_URL" |sudo tee -a /root/.aws/config
|
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@v30
|
uses: cachix/install-nix-action@v30
|
||||||
|
@ -132,12 +116,34 @@ jobs:
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
accept-flake-config = true
|
accept-flake-config = true
|
||||||
system-features = nixos-test benchmark big-parallel kvm
|
system-features = nixos-test benchmark big-parallel kvm
|
||||||
secret-key-files = ${{ runner.temp }}/cache-priv-key.pem
|
secret-key-files = /home/runner/cache-priv-key.pem
|
||||||
extra-substituters = https://nixcache.cy7.sh
|
extra-substituters = https://nixcache.cy7.sh https://cache.lix.systems
|
||||||
extra-trusted-public-keys = nixcache.cy7.sh:DN3d1dt0wnXfTH03oVmTee4KgmdNdB0NY3SuzA8Fwx8=
|
extra-trusted-public-keys = nixcache.cy7.sh:DN3d1dt0wnXfTH03oVmTee4KgmdNdB0NY3SuzA8Fwx8= cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=
|
||||||
post-build-hook = /etc/nix/upload-to-cache.sh
|
|
||||||
|
- name: Install Lix
|
||||||
|
run: |
|
||||||
|
sudo --preserve-env=PATH $(which nix) run \
|
||||||
|
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.92.0' -- \
|
||||||
|
upgrade-nix
|
||||||
|
nix --version
|
||||||
|
|
||||||
|
- name: Sync repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
run: |
|
run: |
|
||||||
package=".#homeConfigurations."${{ matrix.home }}".activationPackage"
|
package=".#homeConfigurations."${{ matrix.home }}".activationPackage"
|
||||||
nix build -L "$package"
|
nix build -L "$package"
|
||||||
|
|
||||||
|
- name: cache
|
||||||
|
# https://stackoverflow.com/a/58859404
|
||||||
|
if: '!cancelled()'
|
||||||
|
run: |
|
||||||
|
package=".#homeConfigurations."${{ matrix.home }}".activationPackage"
|
||||||
|
nix run git+https://git.cy7.sh/cy/nixcp.git -- \
|
||||||
|
--to 's3://nixcache?endpoint=s3.cy7.sh&secret-key=/home/runner/cache-priv-key.pem&compression=none' \
|
||||||
|
-u https://nix-community.cachix.org \
|
||||||
|
-u https://nixcache.web.cy7.sh \
|
||||||
|
$package
|
||||||
|
|
33
.github/workflows/build-packages.yml
vendored
33
.github/workflows/build-packages.yml
vendored
|
@ -11,8 +11,6 @@ env:
|
||||||
TERM: ansi
|
TERM: ansi
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets. AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets. AWS_SECRET_ACCESS_KEY }}
|
||||||
AWS_DEFAULT_REGION: us-east-1
|
|
||||||
AWS_ENDPOINT_URL: https://s3.cy7.sh
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-packages:
|
build-packages:
|
||||||
|
@ -24,13 +22,13 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
- ubuntu-24.04-arm
|
- ubuntu-24.04-arm
|
||||||
- macos-latest
|
# - macos-latest
|
||||||
- macos-13
|
# - macos-13
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: setup binary cache key
|
- name: setup binary cache key
|
||||||
run: echo -n "${{ secrets.NIX_CACHE_SECRET_KEY }}" | xxd -p -r > ${{ runner.temp }}/cache-priv-key.pem
|
run: echo "${{ secrets.NIX_CACHE_SECRET_KEY }}" >> /home/runner/cache-priv-key.pem
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@v30
|
uses: cachix/install-nix-action@v30
|
||||||
|
@ -41,9 +39,21 @@ jobs:
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
accept-flake-config = true
|
accept-flake-config = true
|
||||||
system-features = nixos-test benchmark big-parallel kvm
|
system-features = nixos-test benchmark big-parallel kvm
|
||||||
secret-key-files = ${{ runner.temp }}/cache-priv-key.pem
|
secret-key-files = /home/runner/cache-priv-key.pem
|
||||||
extra-substituters = https://nixcache.cy7.sh
|
extra-substituters = https://nixcache.cy7.sh https://cache.lix.systems
|
||||||
extra-trusted-public-keys = nixcache.cy7.sh:DN3d1dt0wnXfTH03oVmTee4KgmdNdB0NY3SuzA8Fwx8=
|
extra-trusted-public-keys = nixcache.cy7.sh:DN3d1dt0wnXfTH03oVmTee4KgmdNdB0NY3SuzA8Fwx8= cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=
|
||||||
|
|
||||||
|
- name: Install Lix
|
||||||
|
run: |
|
||||||
|
sudo --preserve-env=PATH $(which nix) run \
|
||||||
|
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.92.0' -- \
|
||||||
|
upgrade-nix
|
||||||
|
nix --version
|
||||||
|
|
||||||
|
- name: Sync repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
- run: nix build -L ${{ matrix.package }}
|
- run: nix build -L ${{ matrix.package }}
|
||||||
|
|
||||||
|
@ -51,11 +61,10 @@ jobs:
|
||||||
# https://stackoverflow.com/a/58859404
|
# https://stackoverflow.com/a/58859404
|
||||||
if: '!cancelled()'
|
if: '!cancelled()'
|
||||||
run: |
|
run: |
|
||||||
nix run github:cything/nixcp -- \
|
nix run git+https://git.cy7.sh/cy/nixcp.git -- \
|
||||||
push \
|
--to 's3://nixcache?endpoint=s3.cy7.sh&secret-key=/home/runner/cache-priv-key.pem&compression=none' \
|
||||||
--bucket nixcache \
|
|
||||||
--signing-key ${{ runner.temp }}/cache-priv-key.pem \
|
|
||||||
-u https://nix-community.cachix.org \
|
-u https://nix-community.cachix.org \
|
||||||
|
-u https://nixcache.web.cy7.sh \
|
||||||
"${{ matrix.package }}"
|
"${{ matrix.package }}"
|
||||||
|
|
||||||
- name: prepare tarball to upload
|
- name: prepare tarball to upload
|
||||||
|
|
|
@ -135,10 +135,4 @@ creation_rules:
|
||||||
- *yt
|
- *yt
|
||||||
- *cy
|
- *cy
|
||||||
- *chunk
|
- *chunk
|
||||||
- path_regex: secrets/services/karakeep.yaml
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *yt
|
|
||||||
- *cy
|
|
||||||
- *chunk
|
|
||||||
|
|
||||||
|
|
1
README
1
README
|
@ -1 +0,0 @@
|
||||||
this is only open source for free ci
|
|
40
README.md
Normal file
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# infra
|
||||||
|
## ./home
|
||||||
|
- [home-manager](https://github.com/nix-community/home-manager) configuration files
|
||||||
|
- foot, tmux, and zsh are configured in Nix
|
||||||
|
- nvim, rofi, sway, waybar are configured in their own literature and symlinked to $XDG_CONFIG_HOME with home-manager
|
||||||
|
|
||||||
|
## ./hosts
|
||||||
|
- [`hosts/common.nix`](hosts/common.nix): configuration that makes sense on all computers
|
||||||
|
- [`hosts/zsh.nix`](hosts/zsh.nix): for computers that have the power to run zsh
|
||||||
|
### ./hosts/ytnix
|
||||||
|
- personal laptop
|
||||||
|
- a single [`default.nix`](hosts/ytnix/default.nix) that could be modularized but works for now
|
||||||
|
|
||||||
|
### ./hosts/chunk
|
||||||
|
- the overworked server with 5% SLA
|
||||||
|
- very short and concise [`default.nix`](hosts/chunk/default.nix)
|
||||||
|
- services organized in their modules
|
||||||
|
- some services run through `virtualisation.oci-containers`:
|
||||||
|
- [immich](hosts/chunk/immich.nix)
|
||||||
|
- [conduwuit](hosts/chunk/conduwuit.nix)
|
||||||
|
|
||||||
|
### ./hosts/titan
|
||||||
|
- got this cause chunk would go down way too often :(
|
||||||
|
- hosted on azure for "reliability"
|
||||||
|
- runs:
|
||||||
|
- [ghost](hosts/titan/ghost.nix) (through `virtualisation.oci-containers`)
|
||||||
|
- [uptime-kuma](hosts/titan/uptime-kuma.nix)
|
||||||
|
- [ntfy-sh](hosts/titan/ntfy.nix)
|
||||||
|
|
||||||
|
## ./secrets
|
||||||
|
- secrets
|
||||||
|
- see [`.sops.yaml`](.sops.yaml) for who privy to what
|
||||||
|
|
||||||
|
## backups
|
||||||
|
- hourly borgbackup to [rsync.net](https://rsync.net)
|
||||||
|
- see [modules/backup](modules/backup.nix)
|
||||||
|
|
||||||
|
## monitoring
|
||||||
|
- [status.cything.io](https://status.cything.io/): uptime kuma (reliable)
|
||||||
|
- [grafana.cything.io](https://grafana.cything.io/): some real-time metrics here; unlike the status page this will go kaput often
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# https://nix.dev/guides/recipes/post-build-hook.html#implementing-the-build-hook
|
|
||||||
set -eu
|
|
||||||
set -f # disable globbing
|
|
||||||
export IFS=' '
|
|
||||||
echo "Uploading paths" $OUT_PATHS
|
|
||||||
exec /nix/var/nix/profiles/default/bin/nix copy --to "s3://nixcache?endpoint=s3.cy7.sh&compression=zstd¶llel-compression=true" $OUT_PATHS
|
|
874
flake.lock
generated
874
flake.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -2,7 +2,8 @@
|
||||||
description = "cy's flake";
|
description = "cy's flake";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small";
|
||||||
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
home-manager.url = "github:nix-community/home-manager";
|
home-manager.url = "github:nix-community/home-manager";
|
||||||
|
@ -11,6 +12,9 @@
|
||||||
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
|
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
conduwuit.url = "github:girlbossceo/conduwuit";
|
||||||
|
conduwuit.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
lix-module.url = "git+https://git.lix.systems/lix-project/nixos-module?ref=release-2.92";
|
||||||
nix-ld.url = "github:nix-community/nix-ld";
|
nix-ld.url = "github:nix-community/nix-ld";
|
||||||
nix-ld.inputs.nixpkgs.follows = "nixpkgs";
|
nix-ld.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
nil.url = "github:oxalica/nil";
|
nil.url = "github:oxalica/nil";
|
||||||
|
@ -67,6 +71,7 @@
|
||||||
./modules
|
./modules
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
inputs.lanzaboote.nixosModules.lanzaboote
|
||||||
|
inputs.lix-module.nixosModules.default
|
||||||
inputs.nix-ld.nixosModules.nix-ld
|
inputs.nix-ld.nixosModules.nix-ld
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -79,6 +84,7 @@
|
||||||
./hosts/chunk
|
./hosts/chunk
|
||||||
./modules
|
./modules
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.lix-module.nixosModules.default
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
6
garnix.yaml
Normal file
6
garnix.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
builds:
|
||||||
|
include:
|
||||||
|
- 'nixosConfigurations.*'
|
||||||
|
- 'homeConfigurations.*'
|
||||||
|
- '*.aarch64-linux.*'
|
||||||
|
- '*.x86_64-linux.*'
|
|
@ -23,6 +23,7 @@
|
||||||
tamasfe.even-better-toml
|
tamasfe.even-better-toml
|
||||||
golang.go
|
golang.go
|
||||||
ms-python.python
|
ms-python.python
|
||||||
|
christian-kohler.path-intellisense
|
||||||
];
|
];
|
||||||
userSettings =
|
userSettings =
|
||||||
let
|
let
|
||||||
|
@ -73,7 +74,6 @@
|
||||||
"telemetry.enableTelemetry" = false;
|
"telemetry.enableTelemetry" = false;
|
||||||
"telemetry.telemetryLevel" = "off";
|
"telemetry.telemetryLevel" = "off";
|
||||||
"window.titleBarStyle" = "custom";
|
"window.titleBarStyle" = "custom";
|
||||||
"editor.formatOnSave" = true;
|
|
||||||
|
|
||||||
# terminal stuff
|
# terminal stuff
|
||||||
"terminal.integrated.cursorBlinking" = true;
|
"terminal.integrated.cursorBlinking" = true;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
package = pkgs.ibm-plex;
|
package = pkgs.ibm-plex;
|
||||||
size = 12;
|
size = 12;
|
||||||
};
|
};
|
||||||
|
themeFile = "GitHub_Dark";
|
||||||
settings = {
|
settings = {
|
||||||
enable_audio_bell = true;
|
enable_audio_bell = true;
|
||||||
# how many windows should be open before kitty asks
|
# how many windows should be open before kitty asks
|
||||||
|
@ -20,7 +21,6 @@
|
||||||
# see https://github.com/sharkdp/bat/issues/1077#issuecomment-652785399
|
# see https://github.com/sharkdp/bat/issues/1077#issuecomment-652785399
|
||||||
"scrollback_pager" = "bat --pager='less -FR +G'";
|
"scrollback_pager" = "bat --pager='less -FR +G'";
|
||||||
# "scrollback_lines" = 20000;
|
# "scrollback_lines" = 20000;
|
||||||
wheel_scroll_multiplier = 50;
|
|
||||||
};
|
};
|
||||||
keybindings = {
|
keybindings = {
|
||||||
# kitty_mod is ctrl+shift by default
|
# kitty_mod is ctrl+shift by default
|
||||||
|
|
|
@ -103,8 +103,6 @@
|
||||||
gopls
|
gopls
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
minio-client
|
minio-client
|
||||||
nil
|
|
||||||
keepassxc
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
|
@ -162,6 +160,4 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
addKeysToAgent = "yes";
|
addKeysToAgent = "yes";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
}
|
}
|
||||||
|
|
33
hosts/chunk/conduwuit.nix
Normal file
33
hosts/chunk/conduwuit.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
services.conduwuit = {
|
||||||
|
enable = true;
|
||||||
|
settings.global = {
|
||||||
|
port = [ 8448 ];
|
||||||
|
server_name = "cything.io";
|
||||||
|
allow_check_for_updates = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.caddy.virtualHosts."chat.cything.io".extraConfig = ''
|
||||||
|
import common
|
||||||
|
reverse_proxy localhost:8448
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.caddy.virtualHosts."cything.io" = {
|
||||||
|
serverAliases = [ "www.cything.io" ];
|
||||||
|
extraConfig = ''
|
||||||
|
import common
|
||||||
|
|
||||||
|
header /.well-known/matrix/* Content-Type application/json
|
||||||
|
header /.well-known/matrix/* Access-Control-Allow-Origin *
|
||||||
|
header /.well-known/matrix/* Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS,PATCH,HEAD
|
||||||
|
header /.well-known/matrix/* Access-Control-Allow-Headers X-Requested-With,Content-Type,Authorization,Origin,Accept
|
||||||
|
route {
|
||||||
|
respond /.well-known/matrix/server {"m.server":"chat.cything.io:443"}
|
||||||
|
respond /.well-known/matrix/client {"m.server":{"base_url":"https://chat.cything.io"},"m.homeserver":{"base_url":"https://chat.cything.io"},"org.matrix.msc3575.proxy":{"url":"https://chat.cything.io"}}
|
||||||
|
redir https://cy7.sh/posts{uri} permanent
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -16,7 +16,9 @@
|
||||||
./redlib.nix
|
./redlib.nix
|
||||||
./vaultwarden.nix
|
./vaultwarden.nix
|
||||||
./grafana.nix
|
./grafana.nix
|
||||||
|
./conduwuit.nix
|
||||||
./immich.nix
|
./immich.nix
|
||||||
|
./element.nix
|
||||||
./forgejo.nix
|
./forgejo.nix
|
||||||
./garage.nix
|
./garage.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
|
@ -45,14 +47,20 @@
|
||||||
"rsyncnet/id_ed25519" = {
|
"rsyncnet/id_ed25519" = {
|
||||||
sopsFile = ../../secrets/zh5061/chunk.yaml;
|
sopsFile = ../../secrets/zh5061/chunk.yaml;
|
||||||
};
|
};
|
||||||
|
"attic/env" = {
|
||||||
|
sopsFile = ../../secrets/services/attic.yaml;
|
||||||
|
};
|
||||||
"garage/env" = {
|
"garage/env" = {
|
||||||
sopsFile = ../../secrets/services/garage.yaml;
|
sopsFile = ../../secrets/services/garage.yaml;
|
||||||
};
|
};
|
||||||
"tailscale/auth" = {
|
"tailscale/auth" = {
|
||||||
sopsFile = ../../secrets/services/tailscale.yaml;
|
sopsFile = ../../secrets/services/tailscale.yaml;
|
||||||
};
|
};
|
||||||
"karakeep/env" = {
|
"zipline/env" = {
|
||||||
sopsFile = ../../secrets/services/karakeep.yaml;
|
sopsFile = ../../secrets/services/zipline.yaml;
|
||||||
|
};
|
||||||
|
"searx/env" = {
|
||||||
|
sopsFile = ../../secrets/services/searx.yaml;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -137,15 +145,13 @@
|
||||||
"podman"
|
"podman"
|
||||||
];
|
];
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPdhAQYy0+vS+QmyCd0MAbqbgzyMGcsuuFyf6kg2yKge"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPdhAQYy0+vS+QmyCd0MAbqbgzyMGcsuuFyf6kg2yKge yt@ytlinux"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfubDWr0kRm2o4DqaK6l1s4NCdTkljXZWKWCiF5nX+6"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfubDWr0kRm2o4DqaK6l1s4NCdTkljXZWKWCiF5nX+6"
|
||||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIA/IX9OFEhHS9Dl8nrtHkL7j7hhy7in9OAY/hVuzEGL0AAAABHNzaDo="
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
users.users.root.openssh.authorizedKeys.keys = [
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPdhAQYy0+vS+QmyCd0MAbqbgzyMGcsuuFyf6kg2yKge yt@ytlinux"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPdhAQYy0+vS+QmyCd0MAbqbgzyMGcsuuFyf6kg2yKge yt@ytlinux"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfubDWr0kRm2o4DqaK6l1s4NCdTkljXZWKWCiF5nX+6"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfubDWr0kRm2o4DqaK6l1s4NCdTkljXZWKWCiF5nX+6"
|
||||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIA/IX9OFEhHS9Dl8nrtHkL7j7hhy7in9OAY/hVuzEGL0AAAABHNzaDo="
|
|
||||||
];
|
];
|
||||||
# for forgejo
|
# for forgejo
|
||||||
users.users.git = {
|
users.users.git = {
|
||||||
|
@ -181,10 +187,9 @@
|
||||||
programs.git.enable = true;
|
programs.git.enable = true;
|
||||||
|
|
||||||
my.caddy.enable = true;
|
my.caddy.enable = true;
|
||||||
|
|
||||||
|
# container stuff
|
||||||
my.containerization.enable = true;
|
my.containerization.enable = true;
|
||||||
|
|
||||||
my.authelia.enable = true;
|
my.authelia.enable = true;
|
||||||
my.karakeep = {
|
|
||||||
enable = false;
|
|
||||||
dataDir = "/opt/karakeep";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
33
hosts/chunk/element.nix
Normal file
33
hosts/chunk/element.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
virtualisation.oci-containers.containers.element = {
|
||||||
|
image = "vectorim/element-web";
|
||||||
|
autoStart = true;
|
||||||
|
ports = [ "127.0.0.1:8089:8089" ];
|
||||||
|
pull = "newer";
|
||||||
|
networks = [ "element-net" ];
|
||||||
|
environment = {
|
||||||
|
ELEMENT_WEB_PORT = "8089";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.create-element-net = {
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
wantedBy = with config.virtualisation.oci-containers; [
|
||||||
|
"${backend}-element.service"
|
||||||
|
];
|
||||||
|
script = ''
|
||||||
|
${pkgs.podman}/bin/podman network exists element-net || \
|
||||||
|
${pkgs.podman}/bin/podman network create element-net
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.caddy.virtualHosts."element.cy7.sh".extraConfig = ''
|
||||||
|
import common
|
||||||
|
reverse_proxy localhost:8089
|
||||||
|
'';
|
||||||
|
}
|
|
@ -17,12 +17,11 @@
|
||||||
};
|
};
|
||||||
admin.api_bind_addr = "[::]:3903";
|
admin.api_bind_addr = "[::]:3903";
|
||||||
rpc_bind_addr = "[::]:3901";
|
rpc_bind_addr = "[::]:3901";
|
||||||
rpc_public_addr = "100.122.132.30:3901";
|
|
||||||
replication_factor = 1;
|
replication_factor = 1;
|
||||||
db_engine = "lmdb";
|
db_engine = "lmdb";
|
||||||
disable_scrub = true;
|
disable_scrub = true;
|
||||||
block_size = "128M";
|
block_size = "16M";
|
||||||
compression_level = "none";
|
compression_level = 3;
|
||||||
};
|
};
|
||||||
environmentFile = config.sops.secrets."garage/env".path;
|
environmentFile = config.sops.secrets."garage/env".path;
|
||||||
logLevel = "warn";
|
logLevel = "warn";
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{ inputs, config, pkgs, ... }:
|
{ inputs, config, ... }:
|
||||||
{
|
{
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.lix;
|
|
||||||
settings = {
|
settings = {
|
||||||
experimental-features = "nix-command flakes";
|
experimental-features = "nix-command flakes";
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
|
|
|
@ -274,6 +274,7 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
# nix run github:thiagokokada/nix-alien#nix-alien-find-libs ./<binary>
|
# nix run github:thiagokokada/nix-alien#nix-alien-find-libs ./<binary>
|
||||||
libraries = with pkgs; [
|
libraries = with pkgs; [
|
||||||
|
# TODO: revisit what we actually need
|
||||||
mesa
|
mesa
|
||||||
extest
|
extest
|
||||||
stdenv.cc.cc
|
stdenv.cc.cc
|
||||||
|
@ -329,7 +330,6 @@
|
||||||
pcre2
|
pcre2
|
||||||
gsettings-desktop-schemas
|
gsettings-desktop-schemas
|
||||||
fzf
|
fzf
|
||||||
systemd
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
programs.evolution.enable = true;
|
programs.evolution.enable = true;
|
||||||
|
|
|
@ -49,14 +49,9 @@ in
|
||||||
webauthn = {
|
webauthn = {
|
||||||
enable_passkey_login = true;
|
enable_passkey_login = true;
|
||||||
};
|
};
|
||||||
identity_providers.oidc.claims_policies = {
|
|
||||||
# https://github.com/karakeep-app/karakeep/issues/410
|
|
||||||
# https://www.authelia.com/integration/openid-connect/openid-connect-1.0-claims/#restore-functionality-prior-to-claims-parameter
|
|
||||||
karakeep.id_token = [ "email" ];
|
|
||||||
};
|
|
||||||
identity_providers.oidc.clients = [
|
identity_providers.oidc.clients = [
|
||||||
{
|
{
|
||||||
client_id = "4EIrpRb9rnwHWjYWvlz2gYrtTmoOLF1D5gqXw28BvmOS0f-9T2p4CFwuctf4Co1hkpo2sd4Y";
|
client_id = "immich";
|
||||||
client_name = "immich";
|
client_name = "immich";
|
||||||
client_secret = "$argon2id$v=19$m=65536,t=3,p=4$Vny2G8EbSPafSwnIuq2Zkg$eF2om4WDEaqCFmrAG27h2mYl+cXxXyttPJ7gaPLs+f8";
|
client_secret = "$argon2id$v=19$m=65536,t=3,p=4$Vny2G8EbSPafSwnIuq2Zkg$eF2om4WDEaqCFmrAG27h2mYl+cXxXyttPJ7gaPLs+f8";
|
||||||
public = false;
|
public = false;
|
||||||
|
@ -70,7 +65,7 @@ in
|
||||||
userinfo_signed_response_alg = "none";
|
userinfo_signed_response_alg = "none";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
client_id = "_kuUEYxyfXjInJCniwugpw2Qn6iI-YW24NOkHZG~63BAhnAACDZ.xsLqOdGghj2DNZxXR0sU";
|
client_id = "forgejo";
|
||||||
client_name = "Forgejo";
|
client_name = "Forgejo";
|
||||||
client_secret = "$argon2id$v=19$m=65536,t=3,p=4$O2O5r/7A8hc4EMvernQ4Dw$YOVqtwY3jv0HlcxmviPq2CRnD7Dw85V9KDtTSUQE7bA";
|
client_secret = "$argon2id$v=19$m=65536,t=3,p=4$O2O5r/7A8hc4EMvernQ4Dw$YOVqtwY3jv0HlcxmviPq2CRnD7Dw85V9KDtTSUQE7bA";
|
||||||
public = false;
|
public = false;
|
||||||
|
@ -83,7 +78,7 @@ in
|
||||||
token_endpoint_auth_method = "client_secret_basic";
|
token_endpoint_auth_method = "client_secret_basic";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
client_id = "b_ITCG0uNzy9lZ5nVC~Ny5R35te8I3hoQW1uraCbdxeiE9VuiCIelMmZZ7dAZLg_anTUWSQG";
|
client_id = "hedgedoc";
|
||||||
client_name = "HedgeDoc";
|
client_name = "HedgeDoc";
|
||||||
client_secret = "$argon2id$v=19$m=65536,t=3,p=4$MFSXW3gjIZf0M3e8s8RJCg$6KWwksJe2vdUebPEdYc0Zy88fzGcHPrbStcqkiXl+Hg";
|
client_secret = "$argon2id$v=19$m=65536,t=3,p=4$MFSXW3gjIZf0M3e8s8RJCg$6KWwksJe2vdUebPEdYc0Zy88fzGcHPrbStcqkiXl+Hg";
|
||||||
public = false;
|
public = false;
|
||||||
|
@ -99,17 +94,6 @@ in
|
||||||
audience = [];
|
audience = [];
|
||||||
token_endpoint_auth_method = "client_secret_post";
|
token_endpoint_auth_method = "client_secret_post";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
client_id = "0SbsGvw5APYJ4px~dv38rCVgXtK2XWrF1QvyuaFz48cgsNm-rAXkSgNOctfxS21IWOFSfsm5";
|
|
||||||
client_name = "Karakeep";
|
|
||||||
client_secret = "$pbkdf2-sha512$310000$4UanDZq.6oholJW3CmKwtQ$9e3hqR8qGU4LoneR/Y9jtJTx0iSzATI4iXymrs8QrmGw4JY1BPF4.IJ9Jbc.8cikU4qpfUIFO6r2dG7JHznCnw";
|
|
||||||
public = false;
|
|
||||||
authorization_policy = "two_factor";
|
|
||||||
redirect_uris = [ "https://keep.cy7.sh/api/auth/callback/custom" ];
|
|
||||||
scopes = [ "openid" "profile" "email" ];
|
|
||||||
userinfo_signed_response_alg = "none";
|
|
||||||
claims_policy = "karakeep";
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
secrets = {
|
secrets = {
|
||||||
|
|
|
@ -21,7 +21,7 @@ in
|
||||||
# (still need the @ to pass nix config check)
|
# (still need the @ to pass nix config check)
|
||||||
"github.com/caddy-dns/cloudflare@v0.0.0-20250228175314-1fb64108d4de"
|
"github.com/caddy-dns/cloudflare@v0.0.0-20250228175314-1fb64108d4de"
|
||||||
];
|
];
|
||||||
hash = "sha256-pfh9DXUj35jlAntkWc4D5wuW04xxQfM1rZ4KFauMzvc=";
|
hash = "sha256-YYpsf8HMONR1teMiSymo2y+HrKoxuJMKIea5/NEykGc=";
|
||||||
};
|
};
|
||||||
logFormat = lib.mkForce "level INFO";
|
logFormat = lib.mkForce "level INFO";
|
||||||
acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
|
acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
|
||||||
|
@ -49,8 +49,7 @@ in
|
||||||
respond / 200 {
|
respond / 200 {
|
||||||
body "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfubDWr0kRm2o4DqaK6l1s4NCdTkljXZWKWCiF5nX+6
|
body "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOfubDWr0kRm2o4DqaK6l1s4NCdTkljXZWKWCiF5nX+6
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPhUt9h5dCcrwOrZNKkStCX5OxumPzEwYXSU/0DgtWgP
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPhUt9h5dCcrwOrZNKkStCX5OxumPzEwYXSU/0DgtWgP
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINyn2+OoRN4nExti+vFQ1NHEZip0slAoCH9C5/FzvgZD
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINyn2+OoRN4nExti+vFQ1NHEZip0slAoCH9C5/FzvgZD"
|
||||||
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIA/IX9OFEhHS9Dl8nrtHkL7j7hhy7in9OAY/hVuzEGL0AAAABHNzaDo="
|
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,10 +30,6 @@ in
|
||||||
};
|
};
|
||||||
# answer on /var/run/docker.sock
|
# answer on /var/run/docker.sock
|
||||||
dockerSocket.enable = true;
|
dockerSocket.enable = true;
|
||||||
autoPrune = {
|
|
||||||
enable = true;
|
|
||||||
dates = "daily";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
docker.enable = lib.mkIf (!cfg.usePodman) true;
|
docker.enable = lib.mkIf (!cfg.usePodman) true;
|
||||||
oci-containers.backend = lib.mkIf (!cfg.usePodman) "docker";
|
oci-containers.backend = lib.mkIf (!cfg.usePodman) "docker";
|
||||||
|
|
|
@ -10,6 +10,5 @@
|
||||||
./searx.nix
|
./searx.nix
|
||||||
./attic.nix
|
./attic.nix
|
||||||
./authelia.nix
|
./authelia.nix
|
||||||
./karakeep.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.my.karakeep;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.my.karakeep = {
|
|
||||||
enable = lib.mkEnableOption "karakeep";
|
|
||||||
dataDir = lib.mkOption {
|
|
||||||
type = lib.types.path;
|
|
||||||
};
|
|
||||||
port = lib.mkOption {
|
|
||||||
default = 3002;
|
|
||||||
description = "port for the web service";
|
|
||||||
type = lib.types.port;
|
|
||||||
};
|
|
||||||
domain = lib.mkOption {
|
|
||||||
default = "keep.cy7.sh";
|
|
||||||
type = lib.types.str;
|
|
||||||
};
|
|
||||||
environmentFile = lib.mkOption {
|
|
||||||
default = config.sops.secrets."karakeep/env".path;
|
|
||||||
type = lib.types.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
virtualisation.oci-containers.containers = {
|
|
||||||
karakeep-web = {
|
|
||||||
image = "ghcr.io/karakeep-app/karakeep:release";
|
|
||||||
pull = "newer";
|
|
||||||
volumes = [ "${cfg.dataDir}:/data" ];
|
|
||||||
ports = [ "${toString cfg.port}:3000"];
|
|
||||||
dependsOn = [
|
|
||||||
"karakeep-chrome"
|
|
||||||
"karakeep-meilisearch"
|
|
||||||
];
|
|
||||||
environment = {
|
|
||||||
MEILI_ADDR = "http://karakeep-meilisearch:7700";
|
|
||||||
BROWSER_WEB_URL = "http://karakeep-chrome:9222";
|
|
||||||
DATA_DIR = "/data";
|
|
||||||
NEXTAUTH_URL = "https://${cfg.domain}";
|
|
||||||
DISABLE_PASSWORD_AUTH = "true";
|
|
||||||
OAUTH_WELLKNOWN_URL = "https://auth.cy7.sh/.well-known/openid-configuration";
|
|
||||||
OAUTH_CLIENT_ID = "0SbsGvw5APYJ4px~dv38rCVgXtK2XWrF1QvyuaFz48cgsNm-rAXkSgNOctfxS21IWOFSfsm5";
|
|
||||||
OAUTH_PROVIDER_NAME = "Authelia";
|
|
||||||
OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING = "true";
|
|
||||||
};
|
|
||||||
# needs NEXTAUTH_SECRET
|
|
||||||
environmentFiles = [ "${cfg.environmentFile}" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
karakeep-chrome = {
|
|
||||||
image = "ghcr.io/zenika/alpine-chrome:latest";
|
|
||||||
pull = "newer";
|
|
||||||
cmd = [
|
|
||||||
"--no-sandbox"
|
|
||||||
"--disable-gpu"
|
|
||||||
"--disable-dev-shm-usage"
|
|
||||||
"--remote-debugging-address=0.0.0.0"
|
|
||||||
"--remote-debugging-port=9222"
|
|
||||||
"--hide-scrollbars"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
karakeep-meilisearch = {
|
|
||||||
image = "getmeili/meilisearch:latest";
|
|
||||||
volumes = [ "meilisearch:/meili_data" ];
|
|
||||||
environment = {
|
|
||||||
MEILI_NO_ANALYTICS = "true";
|
|
||||||
};
|
|
||||||
# needs MEILI_MASTER_KEY
|
|
||||||
environmentFiles = [ "${cfg.environmentFile}" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.caddy.virtualHosts.${cfg.domain}.extraConfig = ''
|
|
||||||
import common
|
|
||||||
reverse_proxy localhost:${toString cfg.port}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -7,12 +7,14 @@
|
||||||
pkgFrom = flake: pkg: flake.packages.${prev.system}.${pkg};
|
pkgFrom = flake: pkg: flake.packages.${prev.system}.${pkg};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
conduwuit = pkgFrom inputs.conduwuit "default";
|
||||||
|
attic-server = pkgFrom inputs.attic "attic-server";
|
||||||
|
attic = pkgFrom inputs.attic "attic";
|
||||||
garage = (
|
garage = (
|
||||||
(pkgFrom inputs.garage "default").overrideAttrs {
|
(pkgFrom inputs.garage "default").overrideAttrs {
|
||||||
meta.mainProgram = "garage";
|
meta.mainProgram = "garage";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
nil = pkgFrom inputs.nil "default";
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
hedgedoc:
|
hedgedoc:
|
||||||
env: ENC[AES256_GCM,data:9xnOlQrk1qCyiAHSjmu8dvj2/z/BrJlngNGAQnMwvLsL0pnyvvyJLnYWTDYix1a9o8OJUNLw6Qhq7KbY4uXfxsNZkfGdVHwvkvhySjR2rcX/r90txqHJUUIxE/TzdsBvonzQ0F85KfXhsi69gKHp016gCj+jNf6CCY+tOVpt71el4Z+jzqLHasuQET8GctKJRzHOfNfCx/X2kJeb7RQl3JFC6/VmYT45bUk7uFfveFD9ao03wJwLKi27wO1WDrfpOigFdvkmqpbWZjaILYHYmkdhdlhr7w330CiCmGHT/ssmSPcu5cYUc8tjYPgpYLjusiUzpE5jmut5GaNwZsY9hNuow/mUVnQ/tCDH0ChOq0DQisJ07VMYlRII9tMdcuT4IbjjwiRcYlORAHsTFUuo5DCaDp8a4mx846BGp1YMQsvqJQgOe4x15VMpeB/ptxm79qxcLZKZ3BkiJaKmDdWsVk9RfqVgsxqiq16Me2EQhknO2s/oBjGOaoIiT4NEuRFQl0BIPgIMD0lYzKx0uDaYyclID5W0DqMI+SrcBd+WH/BB9HPdZx92rFe34PzjZse0i6+5UZHXUu8au6CyLMqGkUlzkSFwVT5W7Lv2m9P3+6YjgPRMaYbg8b6kmavB6EtjiqWtTbMKr3nxPVYJc5FRImvebfFqiLy5MWoNV6Qe7TUGIk6QtX2OWBhQ1UB+IpR+180QH7yw7UpgJ9EM8dD2m2/smar5P0BjAaqAFib++GzoB0OfFtxJNUjrejQC11tRWBXYvcHWwa78VbKPul0xqiEMmsAZufMix4lD1EgutTf1CXfv7l0rUpLwkYbWIq2hT5UI53L0YWJDl7zlhi94ANdXV8z8kCvMeXm2Fwl/vIgJ9JuFeVeVYPpXwx2coLBwE6uI4SuFvY1d4ojvzY8KftcHWO7srVzpuwrwW+6gKLwPQyEazv+sRKXAGo0ffMO2/2KRgOu9zGwaOFaNDAZ6gYFDWbPz6TMfNWHzfLEFK5BlVAL8KDb78IODUBYcMr2CX1Y=,iv:LDkuJgxIbohEVf7wmdtOZ/vlPddMYa7uzHGkL+0MnUM=,tag:pnJiCJydjTmUbS761fPUPw==,type:str]
|
env: ENC[AES256_GCM,data:hU4Ht9WkWknuYJ3yHZSm5o22wlssTNjPDZvgDi9DGEh8ULt2GzrEHfFHI9VcpyrbsLcw7HT5TuYrPibWMk4AEvqlZT/6UiyQFMso9mac6x7esf55RHTXr4F7gyC/eRDUE+mAzyhjB5xKaCUhaQpMOwA2t0zahtiaCzLvi/DXRo1jiB42Xt8Nwi1D+zRT3T/HYD8l7D+SZQQc6HC+WM/y7RIjEPcDeX/wTk+JqiGW++0D3GxCQgq6VOhw7EM4hs5aR659QVNICT9kJt9nxEsyU84nsws4MHzU53BvEY77rYZPvvrBSFJ+TnQJ0c/e8K2G9mgaEGkk/+Rmx3RbPQKuTNCzAJZ0m9g9XSwMHU/z5KkrxcI6xU1+JqpdL2Rx35JiNxbNNrlQSvXJFuGNSf0Z5l8RirKJL4HJXAsIPVZTxeJJ0rQflyb5hN63KH/vUTHJWucAFSRYwLHOgs4Yu7SKJjnWnrLYAK9K/eRprhe3Np3vTed13soZXjdB1Jz6lz3lUxZ4TpOb6E8rGt33GqACTp04DBkyUaxMg7fOQIi0riev9GcGNy1kQkDC5dOwWyQdSICIavBrL+4WRoK8xhsEMY8K58+TYfIm3XnWz6pSEl7OzdGNSFZJuwAPzGS065bCjHIlMxIUKlbx4rmGvecIGRLoa5a5XpFwVwPlH8IJ8LvDPXqyIBquL6IsoCNi+jVy7UV52WldqAAeC3+UJtD8LJj1FaWLkoshkSbcr5veZLtBnpOZsiPXtkn1qgRhCB0QjzNwz+AOJCamSn1R+i+JJN6Wja3mJytCrtoj0M6cc1beJBbam4PgxWd1CJE3zhstuqoktn9LdDZ3qNjPgRY3q4FPbjo53XvQQi/NgnPztMg2z7Rj8yeNtG+HjL2pfXIw9AXZwc19D+T7M5hR7jlD3117o+K2CeaC+wgfXPZ/xzIbhg==,iv:gvSOTStLJ5R4UaXj7gXQDCF4TAgway12yh1BtGz1Mvs=,tag:Jt+daURO+t8HME/m7tLEIw==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
|
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
|
||||||
|
@ -20,7 +20,7 @@ sops:
|
||||||
enlDZEI2NElkZkI3UmRyQUZqQWE5ZmcK2JlwNzVJNhGjyniIg9UY5tjgUKttkT3e
|
enlDZEI2NElkZkI3UmRyQUZqQWE5ZmcK2JlwNzVJNhGjyniIg9UY5tjgUKttkT3e
|
||||||
9C/xag3dQCiqzX1O3o5tdhYnxXw+VxVf+qTFyyuftg5iQPZNuvX6mA==
|
9C/xag3dQCiqzX1O3o5tdhYnxXw+VxVf+qTFyyuftg5iQPZNuvX6mA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-04-05T21:08:15Z"
|
lastmodified: "2025-04-04T17:04:50Z"
|
||||||
mac: ENC[AES256_GCM,data:cPisYUoZWd/vd+wWzz3xTnftj1RdjK20dWFo+MKssm/eu7eCOWDIaZdcJg13gkTleBpMWQy/mG1drC6GLfGQiBmkS99UCPAoo0aLTBL4FbSm6FEXdbVjoOI7URu6Sj31drWCMAm+lXYymWsHwZJrNLhjsCTQsxTPvFq8oOdNlXo=,iv:KpmJoZ/BGEEhZ75jXfXxegNglm7k6mtleRuVud6tX2g=,tag:lsiqX+YSz4mGK6mw9gdKNg==,type:str]
|
mac: ENC[AES256_GCM,data:RRkdyrxwrFs3r0SaNred5zTpz5CKf043+KWkFSvPFh0RbvIVyxzJKyfL9r7erifEMhPRJ7Hz5GKE4RAPA9yRLkA9C+416sZKfwdopqAe6zSRt4zd0QOPMdc2z3+07+1SP2ay/ZYCn6jjIyoBaki3t0DMv7e9a/OzFv3WfyjG/rg=,iv:K41muQnynaGoZsBquNF0SNFgssLF9KGzBz8siagI+38=,tag:jkWbWBloSbUSJXl9jedAMQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.10.1
|
version: 3.10.1
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
karakeep:
|
|
||||||
env: ENC[AES256_GCM,data:SWc26EQaKR5d9hMDYzVHA/r7XfjwFZ0d44Co0IS6OayR24ej7yqLAtkNttROKoKFuYc0sHgN9bOy4MyX0s3qiSWYovIIUJgFiJjPQFYDAo+50WR4+5W5FgvYI6e42fcWrQhaCXWQrDyzch/zT2OITZsjXcQhT5E+IiPLVkaGOjGptE07GjM7ZXI4UxBzINFQOhxdfIO0km1o6Wq8GhJdWsz4exz4ahRslR+WjK/flV2GZVAj6EHSJ5sHohm74QlhxaShEbc/8IKP6R2gSjBFP7l8VvwFyIUD9sLzYGvS3iU=,iv:gSPQU0bZ+VRFbuaNDc90dW0ogWX2SMH7kewtq/u/11E=,tag:L0Y4EWSQUhcn2eHt+yZ7qQ==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age1sy0at69err83qyml2vqu8xvwjccfws447aaadfvacj2qluw3p45s2mtrw8
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIaWQ1Q1JwRHJxQjNjdTAx
|
|
||||||
TXRsWjVZOG1mNEptNVhscHBaK2I5MHhjdlFjCkNqOEhwT3hyOHpHQ2k0ZmowUXB4
|
|
||||||
eks2dlpUS0V6VjBEYW9UWnhFOEw4VGsKLS0tIFo2a0FTRE5WdHBGVW5DOUFkaE9p
|
|
||||||
bitvUnJXSnB6UnV3VTEzSjlSYmEwVUEKHOwFCRu+SIyM0uJ6bNEAo+MMlsc8la6G
|
|
||||||
bLYdCoykcBu+uVXqn3BYTbrS5ylQMRYcbcPFJw5BVdmjIYF4LU5W6A==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age10h6pg5qdpc4t0rpmksfv788a57f04n83zgqaezkjjn65nkhv547s0vxfdn
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrU2ZnNVAyeVdJeHlTSW1x
|
|
||||||
QUhKRzlNclVUWE1ucHFLZW5sL1lnUDhkd0Y4CjFuekNEOE1icDNqL1JyT0hEYW16
|
|
||||||
Q2VyajJFWWtGUnBzOENGOEZHbWROZzAKLS0tIE8wMVc3TkV5Y1VyenIvOW02NDNq
|
|
||||||
cStTeUcvY1pJWEN2MzFEeThKT0JPc1EKXrtVG49a6YZVKiL1F8Xg3t3niTYv3LwN
|
|
||||||
NeAQ8srV0F6ckky7OCkvUp9GInZCWRzULXV/x+4IUb6C+KQaNm2vYA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1eg6sxflw6l44fp20sl068sampwd95fm0mnh4ssegrhtktgm50ptqcuspyn
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFdDdUSUlmMk5VcytyT01N
|
|
||||||
UmRaK2k5Wkh5SlhPT3QrczY2eW9vZk5KWFZBCnBteitnNFlHdWRaaTRxSWYvYmtG
|
|
||||||
ZnY5ZXlYa3Z5aENlRy9BQjVSU1F3UzQKLS0tIFpjN1dOaWNKaU9PaENyaXc1K3BU
|
|
||||||
K2orZ0Y2Z05LSUZ5WHQ4TnVVY0QwSzQKiUQT4aSxXnaq0kEMp+q5WnIUoGypEmZ+
|
|
||||||
DQEhkB9yu/BrkjXH+HGQr1W5B4sJyb5rnl0+SQ+IypRIRyaX4CdFxg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2025-04-05T19:44:58Z"
|
|
||||||
mac: ENC[AES256_GCM,data:OmqsJI9BaICOTiH1cq4gZlNBbkAxn/pAOWBtkIjHdqpikABLG6fMY+sLpyeaovXjexIj9MZk7fPmV8dRZ5VNLHCqlYXK/cVoQBZ2HK+p/cGTAFelNAShu9NSgZdFmVgJJtOjVvFp8dtuY8VcQj861k/MPX0mNZt9pmXYdumjpNM=,iv:efHkp1KUctwtCjG9A8i5qs7nQfQqv2ya1yYlHHOt8pU=,tag:4lChpspl0oOUMiXzvGuA2Q==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.10.1
|
|
Loading…
Add table
Add a link
Reference in a new issue