Compare commits
2 Commits
master
...
e15402b8bc
| Author | SHA1 | Date | |
|---|---|---|---|
| e15402b8bc | |||
| 911e081680 |
@@ -5,6 +5,7 @@ on: [push]
|
|||||||
env:
|
env:
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
PATH: /run/current-system/sw/bin/
|
PATH: /run/current-system/sw/bin/
|
||||||
|
XDG_CONFIG_HOME: ${{ runner.temp }}/.config
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-flake:
|
check-flake:
|
||||||
@@ -15,5 +16,34 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Configure Attic cache
|
||||||
|
run: |
|
||||||
|
attic login local "${{ vars.ATTIC_ENDPOINT }}" "${{ secrets.ATTIC_TOKEN }}"
|
||||||
|
attic use local:nixos
|
||||||
|
|
||||||
- name: Check Flake
|
- name: Check Flake
|
||||||
run: nix flake check --all-systems --print-build-logs --log-format raw --show-trace
|
run: nix flake check --all-systems --print-build-logs --log-format raw --show-trace
|
||||||
|
|
||||||
|
- name: Build all systems
|
||||||
|
run: |
|
||||||
|
nix eval .#nixosConfigurations --apply 'cs: builtins.attrNames cs' --json \
|
||||||
|
| jq -r '.[]' \
|
||||||
|
| xargs -I{} nix build ".#nixosConfigurations.{}.config.system.build.toplevel" --no-link --print-build-logs --log-format raw
|
||||||
|
|
||||||
|
- name: Push to cache
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
# Get all system toplevel store paths
|
||||||
|
toplevels=$(nix eval .#nixosConfigurations --apply 'cs: map (n: "${cs.${n}.config.system.build.toplevel}") (builtins.attrNames cs)' --json | jq -r '.[]')
|
||||||
|
echo "Found $(echo "$toplevels" | wc -l) system toplevels"
|
||||||
|
# Expand to full closures, deduplicate, and filter out paths that are:
|
||||||
|
# - already signed by cache.nixos.org (available upstream)
|
||||||
|
# - smaller than 0.5MB (insignificant build artifacts)
|
||||||
|
paths=$(echo "$toplevels" \
|
||||||
|
| xargs nix path-info -r --json \
|
||||||
|
| jq -r '[to_entries[] | select(
|
||||||
|
(.value.signatures | all(startswith("cache.nixos.org") | not))
|
||||||
|
and .value.narSize >= 524288
|
||||||
|
) | .key] | unique[]')
|
||||||
|
echo "Pushing $(echo "$paths" | wc -l) unique paths to cache"
|
||||||
|
echo "$paths" | xargs attic push local:nixos
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ ... }:
|
{ config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
nix = {
|
nix = {
|
||||||
@@ -6,11 +6,11 @@
|
|||||||
substituters = [
|
substituters = [
|
||||||
"https://cache.nixos.org/"
|
"https://cache.nixos.org/"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"http://s0.koi-bebop.ts.net:5000"
|
"http://s0.koi-bebop.ts.net:28338/nixos"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"s0.koi-bebop.ts.net:OjbzD86YjyJZpCp9RWaQKANaflcpKhtzBMNP8I2aPUU="
|
"nixos:SnTTQutdOJbAmxo6AQ3cbRt5w9f4byMXQODCieBH3PQ="
|
||||||
];
|
];
|
||||||
|
|
||||||
# Allow substituters to be offline
|
# Allow substituters to be offline
|
||||||
@@ -19,6 +19,11 @@
|
|||||||
# and use this flag as intended for deciding if it should build missing
|
# and use this flag as intended for deciding if it should build missing
|
||||||
# derivations locally. See https://github.com/NixOS/nix/issues/6901
|
# derivations locally. See https://github.com/NixOS/nix/issues/6901
|
||||||
fallback = true;
|
fallback = true;
|
||||||
|
|
||||||
|
# Authenticate to private nixos cache
|
||||||
|
netrc-file = config.age.secrets.attic-netrc.path;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
age.secrets.attic-netrc.file = ../secrets/attic-netrc.age;
|
||||||
}
|
}
|
||||||
|
|||||||
61
common/server/atticd.nix
Normal file
61
common/server/atticd.nix
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = lib.mkIf (config.thisMachine.hasRole."binary-cache") {
|
||||||
|
services.atticd = {
|
||||||
|
enable = true;
|
||||||
|
environmentFile = config.age.secrets.atticd-credentials.path;
|
||||||
|
settings = {
|
||||||
|
listen = "[::]:28338";
|
||||||
|
database.url = "postgresql:///atticd?host=/run/postgresql";
|
||||||
|
require-proof-of-possession = false;
|
||||||
|
|
||||||
|
# Disable chunking — the dedup savings don't justify the CPU/IO
|
||||||
|
# overhead for local storage, especially on ZFS which already
|
||||||
|
# does block-level compression.
|
||||||
|
chunking = {
|
||||||
|
nar-size-threshold = 0;
|
||||||
|
min-size = 16 * 1024;
|
||||||
|
avg-size = 64 * 1024;
|
||||||
|
max-size = 256 * 1024;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let ZFS handle compression instead of double-compressing.
|
||||||
|
compression.type = "none";
|
||||||
|
|
||||||
|
garbage-collection.default-retention-period = "6 months";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# PostgreSQL for atticd
|
||||||
|
services.postgresql = {
|
||||||
|
enable = true;
|
||||||
|
ensureDatabases = [ "atticd" ];
|
||||||
|
ensureUsers = [{
|
||||||
|
name = "atticd";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Use a static user so the ZFS mountpoint at /var/lib/atticd works
|
||||||
|
# (DynamicUser conflicts with ZFS mountpoints)
|
||||||
|
users.users.atticd = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "atticd";
|
||||||
|
home = "/var/lib/atticd";
|
||||||
|
};
|
||||||
|
users.groups.atticd = { };
|
||||||
|
|
||||||
|
systemd.services.atticd = {
|
||||||
|
after = [ "postgresql.service" ];
|
||||||
|
requires = [ "postgresql.service" ];
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = lib.mkForce false;
|
||||||
|
User = "atticd";
|
||||||
|
Group = "atticd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.atticd-credentials.file = ../../secrets/atticd-credentials.age;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
./mailserver.nix
|
./mailserver.nix
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./gitea-actions-runner.nix
|
./gitea-actions-runner.nix
|
||||||
|
./atticd.nix
|
||||||
./librechat.nix
|
./librechat.nix
|
||||||
./actualbudget.nix
|
./actualbudget.nix
|
||||||
./unifi.nix
|
./unifi.nix
|
||||||
|
|||||||
@@ -1,132 +1,85 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
# Gitea Actions Runner. Starts 'host' runner that runs directly on the host inside of a nixos container
|
# Gitea Actions Runner inside a NixOS container.
|
||||||
# This is useful for providing a real Nix/OS builder to gitea.
|
# The container shares the host's /nix/store (read-only) and nix-daemon socket,
|
||||||
# Warning, NixOS containers are not secure. For example, the container shares the /nix/store
|
# so builds go through the host daemon and outputs land in the host store.
|
||||||
# Therefore, this should not be used to run untrusted code.
|
# Warning: NixOS containers are not fully secure — do not run untrusted code.
|
||||||
# To enable, assign a machine the 'gitea-actions-runner' system role
|
# To enable, assign a machine the 'gitea-actions-runner' system role.
|
||||||
|
|
||||||
# TODO: skipping running inside of nixos container for now because of issues getting docker/podman running
|
|
||||||
|
|
||||||
let
|
let
|
||||||
thisMachineIsARunner = config.thisMachine.hasRole."gitea-actions-runner";
|
thisMachineIsARunner = config.thisMachine.hasRole."gitea-actions-runner";
|
||||||
containerName = "gitea-runner";
|
containerName = "gitea-runner";
|
||||||
|
giteaRunnerUid = 991;
|
||||||
|
giteaRunnerGid = 989;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = lib.mkIf (thisMachineIsARunner && !config.boot.isContainer) {
|
config = lib.mkIf (thisMachineIsARunner && !config.boot.isContainer) {
|
||||||
# containers.${containerName} = {
|
|
||||||
# ephemeral = true;
|
|
||||||
# autoStart = true;
|
|
||||||
|
|
||||||
# # for podman
|
containers.${containerName} = {
|
||||||
# enableTun = true;
|
autoStart = true;
|
||||||
|
ephemeral = true;
|
||||||
|
|
||||||
# # privateNetwork = true;
|
bindMounts = {
|
||||||
# # hostAddress = "172.16.101.1";
|
"/run/agenix/gitea-actions-runner-token" = {
|
||||||
# # localAddress = "172.16.101.2";
|
hostPath = "/run/agenix/gitea-actions-runner-token";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/var/lib/gitea-runner" = {
|
||||||
|
hostPath = "/var/lib/gitea-runner";
|
||||||
|
isReadOnly = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# bindMounts =
|
config = { config, lib, pkgs, ... }: {
|
||||||
# {
|
system.stateVersion = "25.11";
|
||||||
# "/run/agenix/gitea-actions-runner-token" = {
|
|
||||||
# hostPath = "/run/agenix/gitea-actions-runner-token";
|
|
||||||
# isReadOnly = true;
|
|
||||||
# };
|
|
||||||
# "/var/lib/gitea-runner" = {
|
|
||||||
# hostPath = "/var/lib/gitea-runner";
|
|
||||||
# isReadOnly = false;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# extraFlags = [
|
services.gitea-actions-runner.instances.inst = {
|
||||||
# # Allow podman
|
enable = true;
|
||||||
# ''--system-call-filter=thisystemcalldoesnotexistforsure''
|
name = containerName;
|
||||||
# ];
|
url = "https://git.neet.dev/";
|
||||||
|
tokenFile = "/run/agenix/gitea-actions-runner-token";
|
||||||
|
labels = [ "nixos:host" ];
|
||||||
|
};
|
||||||
|
|
||||||
# additionalCapabilities = [
|
# Disable dynamic user so runner state persists via bind mount
|
||||||
# "CAP_SYS_ADMIN"
|
assertions = [{
|
||||||
# ];
|
assertion = config.systemd.services.gitea-runner-inst.enable;
|
||||||
|
message = "Expected systemd service 'gitea-runner-inst' is not enabled — the gitea-actions-runner module may have changed its naming scheme.";
|
||||||
|
}];
|
||||||
|
systemd.services.gitea-runner-inst.serviceConfig.DynamicUser = lib.mkForce false;
|
||||||
|
users.users.gitea-runner = {
|
||||||
|
uid = giteaRunnerUid;
|
||||||
|
home = "/var/lib/gitea-runner";
|
||||||
|
group = "gitea-runner";
|
||||||
|
isSystemUser = true;
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
users.groups.gitea-runner.gid = giteaRunnerGid;
|
||||||
|
|
||||||
# config = {
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
# imports = allModules;
|
|
||||||
|
|
||||||
# # speeds up evaluation
|
environment.systemPackages = with pkgs; [
|
||||||
# nixpkgs.pkgs = pkgs;
|
git
|
||||||
|
nodejs
|
||||||
# networking.hostName = lib.mkForce containerName;
|
jq
|
||||||
|
attic-client
|
||||||
# # don't use remote builders
|
];
|
||||||
# nix.distributedBuilds = lib.mkForce false;
|
};
|
||||||
|
|
||||||
# environment.systemPackages = with pkgs; [
|
|
||||||
# git
|
|
||||||
# # Gitea Actions rely heavily on node. Include it because it would be installed anyway.
|
|
||||||
# nodejs
|
|
||||||
# ];
|
|
||||||
|
|
||||||
# services.gitea-actions-runner.instances.inst = {
|
|
||||||
# enable = true;
|
|
||||||
# name = config.networking.hostName;
|
|
||||||
# url = "https://git.neet.dev/";
|
|
||||||
# tokenFile = "/run/agenix/gitea-actions-runner-token";
|
|
||||||
# labels = [
|
|
||||||
# "ubuntu-latest:docker://node:18-bullseye"
|
|
||||||
# "nixos:host"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# # To allow building on the host, must override the the service's config so it doesn't use a dynamic user
|
|
||||||
# systemd.services.gitea-runner-inst.serviceConfig.DynamicUser = lib.mkForce false;
|
|
||||||
# users.users.gitea-runner = {
|
|
||||||
# home = "/var/lib/gitea-runner";
|
|
||||||
# group = "gitea-runner";
|
|
||||||
# isSystemUser = true;
|
|
||||||
# createHome = true;
|
|
||||||
# };
|
|
||||||
# users.groups.gitea-runner = { };
|
|
||||||
|
|
||||||
# virtualisation.podman.enable = true;
|
|
||||||
# boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# networking.nat.enable = true;
|
|
||||||
# networking.nat.internalInterfaces = [
|
|
||||||
# "ve-${containerName}"
|
|
||||||
# ];
|
|
||||||
# networking.ip_forward = true;
|
|
||||||
|
|
||||||
# don't use remote builders
|
|
||||||
nix.distributedBuilds = lib.mkForce false;
|
|
||||||
|
|
||||||
services.gitea-actions-runner.instances.inst = {
|
|
||||||
enable = true;
|
|
||||||
name = config.networking.hostName;
|
|
||||||
url = "https://git.neet.dev/";
|
|
||||||
tokenFile = "/run/agenix/gitea-actions-runner-token";
|
|
||||||
labels = [
|
|
||||||
"ubuntu-latest:docker://node:18-bullseye"
|
|
||||||
"nixos:host"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
# Needs to be outside of the container because container uses's the host's nix-daemon
|
||||||
git
|
nix.settings.trusted-users = [ "gitea-runner" ];
|
||||||
# Gitea Actions rely heavily on node. Include it because it would be installed anyway.
|
|
||||||
nodejs
|
|
||||||
];
|
|
||||||
|
|
||||||
# To allow building on the host, must override the the service's config so it doesn't use a dynamic user
|
# Matching user on host — the container's gitea-runner UID must be
|
||||||
systemd.services.gitea-runner-inst.serviceConfig.DynamicUser = lib.mkForce false;
|
# recognized by the host's nix-daemon as trusted (shared UID namespace)
|
||||||
users.users.gitea-runner = {
|
users.users.gitea-runner = {
|
||||||
|
uid = giteaRunnerUid;
|
||||||
home = "/var/lib/gitea-runner";
|
home = "/var/lib/gitea-runner";
|
||||||
group = "gitea-runner";
|
group = "gitea-runner";
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
createHome = true;
|
createHome = true;
|
||||||
};
|
};
|
||||||
users.groups.gitea-runner = { };
|
users.groups.gitea-runner.gid = giteaRunnerGid;
|
||||||
|
|
||||||
virtualisation.podman.enable = true;
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
|
|
||||||
age.secrets.gitea-actions-runner-token.file = ../../secrets/gitea-actions-runner-token.age;
|
age.secrets.gitea-actions-runner-token.file = ../../secrets/gitea-actions-runner-token.age;
|
||||||
};
|
};
|
||||||
|
|||||||
62
flake.lock
generated
62
flake.lock
generated
@@ -14,11 +14,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762618334,
|
"lastModified": 1770165109,
|
||||||
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
|
"narHash": "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "fcdea223397448d35d9b31f798479227e80183f6",
|
"rev": "b027ee29d959fda4b60b57566d64c98a202e0feb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -53,11 +53,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770491193,
|
"lastModified": 1771632347,
|
||||||
"narHash": "sha256-zdnWeXmPZT8BpBo52s4oansT1Rq0SNzksXKpEcMc5lE=",
|
"narHash": "sha256-kNm0YX9RUwf7GZaWQu2F71ccm4OUMz0xFkXn6mGPfps=",
|
||||||
"owner": "sadjow",
|
"owner": "sadjow",
|
||||||
"repo": "claude-code-nix",
|
"repo": "claude-code-nix",
|
||||||
"rev": "f68a2683e812d1e4f9a022ff3e0206d46347d019",
|
"rev": "ec90f84b2ea21f6d2272e00d1becbc13030d1895",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -124,11 +124,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766051518,
|
"lastModified": 1770019181,
|
||||||
"narHash": "sha256-znKOwPXQnt3o7lDb3hdf19oDo0BLP4MfBOYiWkEHoik=",
|
"narHash": "sha256-hwsYgDnby50JNVpTRYlF3UR/Rrpt01OrxVuryF40CFY=",
|
||||||
"owner": "serokell",
|
"owner": "serokell",
|
||||||
"repo": "deploy-rs",
|
"repo": "deploy-rs",
|
||||||
"rev": "d5eff7f948535b9c723d60cd8239f8f11ddc90fa",
|
"rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -186,11 +186,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763988335,
|
"lastModified": 1769939035,
|
||||||
"narHash": "sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh+M4Qc=",
|
"narHash": "sha256-Fok2AmefgVA0+eprw2NDwqKkPGEI5wvR+twiZagBvrg=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "50b9238891e388c9fdc6a5c49e49c42533a1b5ce",
|
"rev": "a8ca480175326551d6c4121498316261cbb5b260",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -228,11 +228,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1768068402,
|
"lastModified": 1771683283,
|
||||||
"narHash": "sha256-bAXnnJZKJiF7Xr6eNW6+PhBf1lg2P1aFUO9+xgWkXfA=",
|
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "8bc5473b6bc2b6e1529a9c4040411e1199c43b4c",
|
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -250,11 +250,11 @@
|
|||||||
"spectrum": "spectrum"
|
"spectrum": "spectrum"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770310890,
|
"lastModified": 1771365290,
|
||||||
"narHash": "sha256-lyWAs4XKg3kLYaf4gm5qc5WJrDkYy3/qeV5G733fJww=",
|
"narHash": "sha256-1XJOslVyF7yzf6yd/yl1VjGLywsbtwmQh3X1LuJcLI4=",
|
||||||
"owner": "astro",
|
"owner": "astro",
|
||||||
"repo": "microvm.nix",
|
"repo": "microvm.nix",
|
||||||
"rev": "68c9f9c6ca91841f04f726a298c385411b7bfcd5",
|
"rev": "789c90b164b55b4379e7a94af8b9c01489024c18",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -270,11 +270,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765267181,
|
"lastModified": 1771130777,
|
||||||
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
|
"narHash": "sha256-UIKOwG0D9XVIJfNWg6+gENAvQP+7LO46eO0Jpe+ItJ0=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
|
"rev": "efec7aaad8d43f8e5194df46a007456093c40f88",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -285,11 +285,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767185284,
|
"lastModified": 1771423359,
|
||||||
"narHash": "sha256-ljDBUDpD1Cg5n3mJI81Hz5qeZAwCGxon4kQW3Ho3+6Q=",
|
"narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "40b1a28dce561bea34858287fbb23052c3ee63fe",
|
"rev": "740a22363033e9f1bb6270fbfb5a9574067af15b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -301,16 +301,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1768250893,
|
"lastModified": 1771369470,
|
||||||
"narHash": "sha256-fWNJYFx0QvnlGlcw54EoOYs/wv2icINHUz0FVdh9RIo=",
|
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3971af1a8fc3646b1d554cb1269b26c84539c22e",
|
"rev": "0182a361324364ae3f436a63005877674cf45efb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "master",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -344,11 +344,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766321686,
|
"lastModified": 1770659507,
|
||||||
"narHash": "sha256-icOWbnD977HXhveirqA10zoqvErczVs3NKx8Bj+ikHY=",
|
"narHash": "sha256-RVZno9CypFN3eHxfULKN1K7mb/Cq0HkznnWqnshxpWY=",
|
||||||
"owner": "simple-nixos-mailserver",
|
"owner": "simple-nixos-mailserver",
|
||||||
"repo": "nixos-mailserver",
|
"repo": "nixos-mailserver",
|
||||||
"rev": "7d433bf89882f61621f95082e90a4ab91eb0bdd3",
|
"rev": "781e833633ebc0873d251772a74e4400a73f5d78",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
# nixpkgs
|
# nixpkgs
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/master";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
# Common Utils Among flake inputs
|
# Common Utils Among flake inputs
|
||||||
systems.url = "github:nix-systems/default";
|
systems.url = "github:nix-systems/default";
|
||||||
|
|||||||
@@ -45,6 +45,12 @@
|
|||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
options = [ "zfsutil" "X-mount.mkdir" ];
|
options = [ "zfsutil" "X-mount.mkdir" ];
|
||||||
};
|
};
|
||||||
|
fileSystems."/var/lib/atticd" =
|
||||||
|
{
|
||||||
|
device = "rpool/nixos/var/lib/atticd";
|
||||||
|
fsType = "zfs";
|
||||||
|
options = [ "zfsutil" "X-mount.mkdir" ];
|
||||||
|
};
|
||||||
fileSystems."/var/log" =
|
fileSystems."/var/log" =
|
||||||
{
|
{
|
||||||
device = "rpool/nixos/var/log";
|
device = "rpool/nixos/var/log";
|
||||||
@@ -72,5 +78,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = "powersave";
|
powerManagement.cpuFreqGovernor = "schedutil";
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
secrets/attic-netrc.age
Normal file
BIN
secrets/attic-netrc.age
Normal file
Binary file not shown.
BIN
secrets/atticd-credentials.age
Normal file
BIN
secrets/atticd-credentials.age
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -7,6 +7,9 @@ let
|
|||||||
|
|
||||||
# nobody is using this secret but I still need to be able to r/w it
|
# nobody is using this secret but I still need to be able to r/w it
|
||||||
nobody = sshKeys.userKeys;
|
nobody = sshKeys.userKeys;
|
||||||
|
|
||||||
|
# For secrets that all machines need to know
|
||||||
|
everyone = roles.personal ++ roles.server;
|
||||||
in
|
in
|
||||||
|
|
||||||
with roles;
|
with roles;
|
||||||
@@ -22,8 +25,10 @@ with roles;
|
|||||||
# nix binary cache
|
# nix binary cache
|
||||||
# public key: s0.koi-bebop.ts.net:OjbzD86YjyJZpCp9RWaQKANaflcpKhtzBMNP8I2aPUU=
|
# public key: s0.koi-bebop.ts.net:OjbzD86YjyJZpCp9RWaQKANaflcpKhtzBMNP8I2aPUU=
|
||||||
"binary-cache-private-key.age".publicKeys = binary-cache;
|
"binary-cache-private-key.age".publicKeys = binary-cache;
|
||||||
# public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINpUZFFL9BpBVqeeU63sFPhR9ewuhEZerTCDIGW1NPSB
|
|
||||||
"binary-cache-push-sshkey.age".publicKeys = nobody; # this value is directly given to gitea
|
# attic binary cache
|
||||||
|
"atticd-credentials.age".publicKeys = binary-cache;
|
||||||
|
"attic-netrc.age".publicKeys = everyone;
|
||||||
|
|
||||||
# vpn
|
# vpn
|
||||||
"pia-login.age".publicKeys = pia;
|
"pia-login.age".publicKeys = pia;
|
||||||
|
|||||||
Reference in New Issue
Block a user