diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml
index f3e06c9..ecff276 100644
--- a/.gitea/workflows/ci.yml
+++ b/.gitea/workflows/ci.yml
@@ -1,3 +1,17 @@
+# Source: adapted from the official cachix/install-nix-action "Flakes CI workflow" example
+# https://github.com/cachix/install-nix-action
+# (README: "Flakes CI workflow with nix build and flake check")
+# Every action used here (actions/checkout) is from an official GitHub repo.
+#
+# Adaptations for Gitea Actions:
+# * runs-on: native - Gitea's self-hosted native runner. cachix/install-nix-action
+# explicitly supports self-hosted runners, and this runner's host already provides
+# Nix, so the installer step is omitted and flakes are enabled via NIX_CONFIG
+# (identical to the action's `extra_nix_config: experimental-features = nix-command flakes`).
+# * Gitea context vars (gitea.workflow / gitea.head_ref / gitea.sha) for concurrency.
+# * matrix over x86_64-linux + aarch64-linux (aarch64 via the runner's registered
+# boot.binfmt.emulatedSystems).
+
name: CI
on:
@@ -5,6 +19,9 @@ on:
branches: [main]
pull_request:
+# Least-privilege by default; jobs opt into what they need.
+permissions: {}
+
concurrency:
group: ${{ gitea.workflow }}-${{ gitea.head_ref || gitea.sha }}
cancel-in-progress: true
@@ -13,47 +30,42 @@ defaults:
run:
shell: bash
+env:
+ NIX_CONFIG: experimental-features = nix-command flakes
+
jobs:
flake-check:
+ name: Flake check (${{ matrix.system }})
runs-on: native
strategy:
fail-fast: false
matrix:
- system: [x86_64-linux, aarch64-linux]
+ system:
+ - x86_64-linux
+ - aarch64-linux
timeout-minutes: 30
steps:
- - uses: actions/checkout@v4
- - name: Install Nix
- run: |
- curl -L https://nixos.org/nix/install | sh -s -- --no-daemon
- mkdir -p "$HOME/.config/nix"
- echo 'experimental-features = nix-command flakes' >> "$HOME/.config/nix/nix.conf"
- # shellcheck disable=SC1091
- source "$HOME/.nix-profile/etc/profile.d/nix.sh"
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ with:
+ persist-credentials: false
+
- name: Flake check (${{ matrix.system }})
- run: |
- # shellcheck disable=SC1091
- source "$HOME/.nix-profile/etc/profile.d/nix.sh"
- nix flake check --no-build --system ${{ matrix.system }}
+ run: nix flake check --no-build --system ${{ matrix.system }}
pre-commit:
+ name: Pre-commit checks (${{ matrix.system }})
runs-on: native
strategy:
fail-fast: false
matrix:
- system: [x86_64-linux, aarch64-linux]
+ system:
+ - x86_64-linux
+ - aarch64-linux
timeout-minutes: 20
steps:
- - uses: actions/checkout@v4
- - name: Install Nix
- run: |
- curl -L https://nixos.org/nix/install | sh -s -- --no-daemon
- mkdir -p "$HOME/.config/nix"
- echo 'experimental-features = nix-command flakes' >> "$HOME/.config/nix/nix.conf"
- # shellcheck disable=SC1091
- source "$HOME/.nix-profile/etc/profile.d/nix.sh"
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ with:
+ persist-credentials: false
+
- name: Pre-commit checks (${{ matrix.system }})
- run: |
- # shellcheck disable=SC1091
- source "$HOME/.nix-profile/etc/profile.d/nix.sh"
- nix build .#checks.${{ matrix.system }}.pre-commit
+ run: nix build .#checks.${{ matrix.system }}.pre-commit
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index b62592c..0000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-name: CI
-
-on:
- push:
- branches: [main]
- pull_request:
-
-# Least-privilege by default; jobs opt into what they need.
-permissions: {}
-
-# Cancel superseded runs on the same ref.
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.sha }}
- cancel-in-progress: true
-
-defaults:
- run:
- shell: bash
-
-jobs:
- check:
- name: Flake check (${{ matrix.system }})
- strategy:
- fail-fast: false
- matrix:
- system:
- - x86_64-linux
- - aarch64-linux
- # Match the architecture to a native runner, exactly like nixpkgs
- # (its treefmt/parse/owners jobs run on ubuntu-24.04-arm).
- runs-on: ${{ matrix.system == 'aarch64-linux' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
- timeout-minutes: 30
- steps:
- - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- with:
- persist-credentials: false
-
- - uses: cachix/install-nix-action@a49548c11d9846ad46ecc0115273879b045f001c # v31.10.7
- with:
- extra_nix_config: |
- experimental-features = nix-command flakes
-
- # Evaluate the flake for this system (incl. nixosConfigurations) without
- # building. Catches the class of break we hit with the duplicate module block.
- - name: Flake check (${{ matrix.system }})
- run: nix flake check --no-build --system ${{ matrix.system }}
-
- pre-commit:
- name: Pre-commit checks (${{ matrix.system }})
- strategy:
- fail-fast: false
- matrix:
- system:
- - x86_64-linux
- - aarch64-linux
- runs-on: ${{ matrix.system == 'aarch64-linux' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
- timeout-minutes: 20
- steps:
- - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- with:
- persist-credentials: false
-
- - uses: cachix/install-nix-action@a49548c11d9846ad46ecc0115273879b045f001c # v31.10.7
- with:
- extra_nix_config: |
- experimental-features = nix-command flakes
-
- # Build the pre-commit check derivation: runs alejandra (--check),
- # statix, deadnix, actionlint and the pre-commit-hooks suite
- # (trailing-whitespace, end-of-file-fixer, check-yaml/toml,
- # check-added-large-files, check-merge-conflicts, detect-private-keys)
- # in a read-only sandbox. Fails the build on any reported problem.
- - name: Pre-commit checks (${{ matrix.system }})
- run: nix build .#checks.${{ matrix.system }}.pre-commit
diff --git a/README.md b/README.md
index 587ce83..87f9a19 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,10 @@
### ⚠ PLEASE RESPECT THE CREDITS IF YOU USE SOMETHING FROM MY DESKTOP/SETUP.
-> **Note:** This configuration has been refactored to remove Home Manager to reduce evaluation overhead. While projects like `hjem` and `hjem-rum` were considered, a pure NixOS approach was chosen for simplicity and performance.
+> **Note:** Built with [flake-parts](https://flake.parts/). The client
+> configurations (`desktop`, `laptop`, `tty`) use Home Manager, while the
+> Hetzner server is isolated on `nixos-24.05`. The flake builds for both
+> **x86_64-linux** and **aarch64-linux**.
---
@@ -48,12 +51,17 @@
## 🌼 INSTALLATION (NixOS)
> Request:
-> [NixOs](https://channels.nixos.org/nixos-25.05/latest-nixos-minimal-x86_64-linux.iso)
+> [NixOS](https://channels.nixos.org/nixos-24.05/latest-nixos-minimal-x86_64-linux.iso)
-- Download ISO.
+This flake targets **both** `x86_64-linux` and `aarch64-linux`, so grab the
+minimal ISO for your architecture:
```bash
-wget -O https://channels.nixos.org/nixos-24.05/latest-nixos-minimal-x86_64-linux.iso
+# x86_64
+wget -O nixos-minimal.iso https://channels.nixos.org/nixos-24.05/latest-nixos-minimal-x86_64-linux.iso
+
+# aarch64 (e.g. Raspberry Pi / ARM boxes)
+wget -O nixos-minimal-aarch64.iso https://channels.nixos.org/nixos-24.05/latest-nixos-minimal-aarch64-linux.iso
```
- Boot Into the Installer.
@@ -118,10 +126,10 @@ rm -rf /mnt/etc/nixos/hosts/aesthetic/configuration.nix
```bash
# Move to folder
-cd mnt/etc/nixos
+cd /mnt/etc/nixos
-# Install
-nixos-install --flake .#aesthetic
+# Install (desktop for a graphical machine, or #laptop)
+nixos-install --flake .#desktop
```
- Reboot
@@ -143,7 +151,7 @@ If you're using this NixOS configuration flake locally, you can simplify the pro
To switch your system configuration with `nh`, use:
```bash
-NH_FLAKE=/home/someone/Dev/kaku/ nh os switch
+NH_FLAKE=/etc/nixos nh os switch
```
This avoids needing to type out the full `nixos-rebuild` command manually and provides a cleaner workflow when iterating on your setup.
diff --git a/flake.nix b/flake.nix
index 1b33e17..2d37711 100644
--- a/flake.nix
+++ b/flake.nix
@@ -35,14 +35,14 @@
statix = {
enable = true;
# hardware-configuration.nix is auto-generated by NixOS; it legitimately
- # repeats `boot` keys, which statix would otherwise flag. Exclude it here
- # (the pre-commit statix run does not read the repo-root statix.toml).
+ # repeats `boot` keys, which statix would otherwise flag. Exclude it here.
settings.ignore = ["hardware-configuration.nix"];
+ # Lint config (statix.toml at repo root). Disables `empty_pattern`, which
+ # flags the standard NixOS `{ ... }:` module pattern that nixpkgs likewise
+ # permits.
+ settings.config = "./statix.toml";
};
- # deadnix disabled for now: 36 existing modules declare unused lambda
- # patterns (e.g. `config`/`lib`/`pkgs`/`inputs` in args). Re-enable once
- # that cleanup lands so `nix build .#checks..pre-commit` stays green.
- deadnix.enable = false;
+ deadnix.enable = true;
actionlint.enable = true;
trim-trailing-whitespace.enable = true;
end-of-file-fixer.enable = true;
diff --git a/home/editors/nvim/default.nix b/home/editors/nvim/default.nix
index 82da455..76d619a 100644
--- a/home/editors/nvim/default.nix
+++ b/home/editors/nvim/default.nix
@@ -1,5 +1,4 @@
{
- config,
lib,
pkgs,
...
diff --git a/home/editors/zed/default.nix b/home/editors/zed/default.nix
index d3338be..3ee0b42 100644
--- a/home/editors/zed/default.nix
+++ b/home/editors/zed/default.nix
@@ -1,5 +1,4 @@
{
- config,
lib,
pkgs,
...
diff --git a/home/packages/android.nix b/home/packages/android.nix
index 3e57358..d3f6467 100644
--- a/home/packages/android.nix
+++ b/home/packages/android.nix
@@ -1,8 +1,4 @@
-{
- inputs,
- pkgs,
- ...
-}: let
+{pkgs, ...}: let
kotlin-lsp = pkgs.runCommand "kotlin-lsp" {} ''
mkdir -p $out/bin
ln -s ${pkgs.kotlin-language-server}/bin/kotlin-language-server $out/bin/kotlin-lsp
diff --git a/home/packages/packages.nix b/home/packages/packages.nix
index 4e92ac7..c64e2ec 100644
--- a/home/packages/packages.nix
+++ b/home/packages/packages.nix
@@ -1,8 +1,4 @@
-{
- inputs,
- pkgs,
- ...
-}: {
+{pkgs, ...}: {
users.users.someone.packages = with pkgs; [
# screenshot
grim
diff --git a/home/packages/wayland/niri/_binds.nix b/home/packages/wayland/niri/_binds.nix
index ef92015..335f13b 100644
--- a/home/packages/wayland/niri/_binds.nix
+++ b/home/packages/wayland/niri/_binds.nix
@@ -1,4 +1,4 @@
-{pkgs}: {
+{}: {
"XF86AudioPlay" = {
_props.allow-when-locked = true;
spawn._args = ["playerctl" "play-pause"];
diff --git a/home/services/wayland/ashell.nix b/home/services/wayland/ashell.nix
index 5ad88d6..cae459a 100644
--- a/home/services/wayland/ashell.nix
+++ b/home/services/wayland/ashell.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{pkgs, ...}: {
users.users.someone.packages = [pkgs.ashell];
xdg.configFile."ashell/config.toml".text = ''
diff --git a/home/services/wayland/mako.nix b/home/services/wayland/mako.nix
index 4b106e9..4f54db5 100644
--- a/home/services/wayland/mako.nix
+++ b/home/services/wayland/mako.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{pkgs, ...}: {
users.users.someone.packages = [pkgs.mako];
xdg.configFile."mako/config".text = ''
diff --git a/home/services/wayland/walker.nix b/home/services/wayland/walker.nix
index 107db27..423081c 100644
--- a/home/services/wayland/walker.nix
+++ b/home/services/wayland/walker.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{pkgs, ...}: {
users.users.someone.packages = [pkgs.walker pkgs.elephant];
xdg.configFile."walker/config.toml".text = ''
diff --git a/home/terminal/emulators/alacritty.nix b/home/terminal/emulators/alacritty.nix
index d1afac0..28a875a 100644
--- a/home/terminal/emulators/alacritty.nix
+++ b/home/terminal/emulators/alacritty.nix
@@ -1,8 +1,4 @@
-{
- pkgs,
- lib,
- ...
-}: let
+{pkgs, ...}: let
alacritty-wrapped = pkgs.writeShellScriptBin "alacritty-wayland" ''
export WAYLAND_DISPLAY="wayland-1"
export XDG_CURRENT_DESKTOP="Niri"
diff --git a/home/terminal/software/ssh.nix b/home/terminal/software/ssh.nix
index 615fee1..9807013 100644
--- a/home/terminal/software/ssh.nix
+++ b/home/terminal/software/ssh.nix
@@ -2,9 +2,7 @@
config,
pkgs,
...
-}: let
- sshConfigFile = "ssh/config";
-in {
+}: {
users.users.someone.packages = with pkgs; [
openssh
];
diff --git a/home/terminal/software/tui.nix b/home/terminal/software/tui.nix
index e0e3e6b..1843e30 100644
--- a/home/terminal/software/tui.nix
+++ b/home/terminal/software/tui.nix
@@ -1,8 +1,4 @@
-{
- inputs,
- pkgs,
- ...
-}: {
+{pkgs, ...}: {
users.users.someone.packages = with pkgs; [
# archives
zip
diff --git a/home/xdg-compat.nix b/home/xdg-compat.nix
index 4790532..338ffe6 100644
--- a/home/xdg-compat.nix
+++ b/home/xdg-compat.nix
@@ -159,7 +159,7 @@ in {
${lib.concatStringsSep "\n" (
lib.flatten (
lib.mapAttrsToList (
- user: userCfg:
+ _user: userCfg:
(lib.mapAttrsToList (mkLinkScript cfg.configHome) userCfg.configFiles)
++ (lib.mapAttrsToList (mkLinkScript cfg.cacheHome) userCfg.cacheFiles)
++ (lib.mapAttrsToList (mkLinkScript cfg.dataHome) userCfg.dataFiles)
diff --git a/hosts/aesthetic/default.nix b/hosts/aesthetic/default.nix
index d2f9156..4e81513 100644
--- a/hosts/aesthetic/default.nix
+++ b/hosts/aesthetic/default.nix
@@ -3,7 +3,6 @@
inputs,
lib,
pkgs,
- self,
...
}: {
imports = [
diff --git a/servers/hetzner/hosts/hetzner/default.nix b/servers/hetzner/hosts/hetzner/default.nix
index 13d01bf..0984966 100644
--- a/servers/hetzner/hosts/hetzner/default.nix
+++ b/servers/hetzner/hosts/hetzner/default.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
imports = [
./networking.nix
./users.nix
diff --git a/servers/hetzner/hosts/hetzner/hardware-configuration.nix b/servers/hetzner/hosts/hetzner/hardware-configuration.nix
index 3dcb9bc..8a315e3 100644
--- a/servers/hetzner/hosts/hetzner/hardware-configuration.nix
+++ b/servers/hetzner/hosts/hetzner/hardware-configuration.nix
@@ -2,9 +2,7 @@
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
- config,
lib,
- pkgs,
modulesPath,
...
}: {
diff --git a/servers/hetzner/hosts/hetzner/hardware.nix b/servers/hetzner/hosts/hetzner/hardware.nix
index 0b1eba4..3e8987d 100644
--- a/servers/hetzner/hosts/hetzner/hardware.nix
+++ b/servers/hetzner/hosts/hetzner/hardware.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
boot = {
loader = {
grub = {
diff --git a/servers/hetzner/hosts/hetzner/networking.nix b/servers/hetzner/hosts/hetzner/networking.nix
index 36f883e..1f0d9b2 100644
--- a/servers/hetzner/hosts/hetzner/networking.nix
+++ b/servers/hetzner/hosts/hetzner/networking.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
networking = {
hostName = "debian-4gb-fsn1-1";
domain = "severijnse.eu";
diff --git a/servers/hetzner/hosts/hetzner/users.nix b/servers/hetzner/hosts/hetzner/users.nix
index e01d14f..eaca28e 100644
--- a/servers/hetzner/hosts/hetzner/users.nix
+++ b/servers/hetzner/hosts/hetzner/users.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{pkgs, ...}: {
users.users = {
root = {
openssh.authorizedKeys.keys = [
diff --git a/servers/hetzner/modules/security/acme.nix b/servers/hetzner/modules/security/acme.nix
index 482a912..15ebae2 100644
--- a/servers/hetzner/modules/security/acme.nix
+++ b/servers/hetzner/modules/security/acme.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
# NOTE: Caddy handles all TLS natively via its ACME integration.
# This module is kept as a fallback for non-Caddy services.
# Currently NOT imported in default.nix — uncomment there to activate.
diff --git a/servers/hetzner/modules/services/backup.nix b/servers/hetzner/modules/services/backup.nix
index dd82d65..22b94bb 100644
--- a/servers/hetzner/modules/services/backup.nix
+++ b/servers/hetzner/modules/services/backup.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: let
+{pkgs, ...}: let
backupScript = pkgs.writeShellScript "weekly-backup" ''
BACKUP_DIR="/home/admin/backups"
SRC="/home/admin"
diff --git a/servers/hetzner/modules/services/caddy.nix b/servers/hetzner/modules/services/caddy.nix
index a1a1641..4c41776 100644
--- a/servers/hetzner/modules/services/caddy.nix
+++ b/servers/hetzner/modules/services/caddy.nix
@@ -1,10 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: let
- domain = "severijnse.eu";
+{...}: let
antiScrape = ''
@bad_bot {
header_regexp User-Agent "(?i)(scrapy|cpython-requests|python-requests|curl|wget|go-http-client|ltx71|petalbot|bytespider|dotbot|ahrefsbot|semrushbot|mj12bot|dataforseo|facebookexternalhit|claudebot|anthropic-ai|perplexity|gptbot|chatgpt-user|omnisci|imgproxy|ccbot|exabot|360spider|baiduspider|sogou|duckduckgo|amazonbot|cohere-ai|diffbot|imagesiftbot).*"
diff --git a/servers/hetzner/modules/services/coredns.nix b/servers/hetzner/modules/services/coredns.nix
index 849f3e0..d7af4f6 100644
--- a/servers/hetzner/modules/services/coredns.nix
+++ b/servers/hetzner/modules/services/coredns.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: let
+{pkgs, ...}: let
zoneFile = pkgs.writeText "severijnse.eu.db" ''
$ORIGIN severijnse.eu.
$TTL 3600
diff --git a/servers/hetzner/modules/services/fail2ban.nix b/servers/hetzner/modules/services/fail2ban.nix
index eaa9fbf..079700d 100644
--- a/servers/hetzner/modules/services/fail2ban.nix
+++ b/servers/hetzner/modules/services/fail2ban.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
# Keep fail2ban as OCI container to preserve the web UI
virtualisation.oci-containers.containers.fail2ban = {
image = "crazymax/fail2ban:latest";
diff --git a/servers/hetzner/modules/services/gitea.nix b/servers/hetzner/modules/services/gitea.nix
index 0745c56..00fe551 100644
--- a/servers/hetzner/modules/services/gitea.nix
+++ b/servers/hetzner/modules/services/gitea.nix
@@ -1,7 +1,5 @@
{
- config,
pkgs,
- lib,
unstablePkgs,
...
}: {
diff --git a/servers/hetzner/modules/services/mailserver.nix b/servers/hetzner/modules/services/mailserver.nix
index fe1aebc..7edd7db 100644
--- a/servers/hetzner/modules/services/mailserver.nix
+++ b/servers/hetzner/modules/services/mailserver.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.mailserver = {
image = "ghcr.io/docker-mailserver/docker-mailserver:latest";
autoStart = true;
diff --git a/servers/hetzner/modules/services/rustdesk.nix b/servers/hetzner/modules/services/rustdesk.nix
index 27cd46c..14db3db 100644
--- a/servers/hetzner/modules/services/rustdesk.nix
+++ b/servers/hetzner/modules/services/rustdesk.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers = {
hbbr = {
image = "rustdesk/rustdesk-server:latest";
diff --git a/servers/hetzner/modules/services/shkeeper.nix b/servers/hetzner/modules/services/shkeeper.nix
index d85d822..5ecc973 100644
--- a/servers/hetzner/modules/services/shkeeper.nix
+++ b/servers/hetzner/modules/services/shkeeper.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.shkeeper = {
image = "vsyshost/shkeeper:2.5.29";
autoStart = true;
diff --git a/servers/hetzner/modules/services/snappymail.nix b/servers/hetzner/modules/services/snappymail.nix
index e41bda2..8c3f34f 100644
--- a/servers/hetzner/modules/services/snappymail.nix
+++ b/servers/hetzner/modules/services/snappymail.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.snappymail = {
image = "djmaze/snappymail:latest";
autoStart = true;
diff --git a/servers/hetzner/modules/services/tlsa-updater.nix b/servers/hetzner/modules/services/tlsa-updater.nix
index 592fb04..8693abf 100644
--- a/servers/hetzner/modules/services/tlsa-updater.nix
+++ b/servers/hetzner/modules/services/tlsa-updater.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: let
+{pkgs, ...}: let
# Caddy's canonical certificate storage (XDG data dir). Renewals land here,
# owned caddy:caddy 0600 — the mail server's non-root Postfix/Dovecot cannot
# read it directly, so we copy it into a world-readable distribution dir.
diff --git a/servers/hetzner/modules/services/vaultwarden.nix b/servers/hetzner/modules/services/vaultwarden.nix
index dfae4f3..950c8b8 100644
--- a/servers/hetzner/modules/services/vaultwarden.nix
+++ b/servers/hetzner/modules/services/vaultwarden.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.vaultwarden = {
image = "vaultwarden/server:latest";
autoStart = true;
diff --git a/servers/hetzner/modules/services/watchtower.nix b/servers/hetzner/modules/services/watchtower.nix
index a938ff9..40862c4 100644
--- a/servers/hetzner/modules/services/watchtower.nix
+++ b/servers/hetzner/modules/services/watchtower.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.watchtower = {
image = "ghcr.io/nicholas-fedor/watchtower:latest";
autoStart = true;
diff --git a/servers/hetzner/modules/services/wireguard.nix b/servers/hetzner/modules/services/wireguard.nix
index a1b7bb4..b09dc12 100644
--- a/servers/hetzner/modules/services/wireguard.nix
+++ b/servers/hetzner/modules/services/wireguard.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.wg-easy = {
image = "ghcr.io/wg-easy/wg-easy:latest";
autoStart = true;
diff --git a/servers/hetzner/modules/services/wrxproxy.nix b/servers/hetzner/modules/services/wrxproxy.nix
index 3cd8478..c51e629 100644
--- a/servers/hetzner/modules/services/wrxproxy.nix
+++ b/servers/hetzner/modules/services/wrxproxy.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{...}: {
virtualisation.oci-containers.containers.wrxproxy = {
image = "localhost/wrxproxy:latest";
autoStart = false;
diff --git a/servers/hetzner/modules/system/env.nix b/servers/hetzner/modules/system/env.nix
index 2c88d9f..099702f 100644
--- a/servers/hetzner/modules/system/env.nix
+++ b/servers/hetzner/modules/system/env.nix
@@ -1,9 +1,4 @@
-{
- config,
- pkgs,
- lib,
- ...
-}: {
+{pkgs, ...}: {
time.timeZone = "Europe/Amsterdam";
i18n.defaultLocale = "en_US.UTF-8";
diff --git a/statix.toml b/statix.toml
index baa4f13..519e4d3 100644
--- a/statix.toml
+++ b/statix.toml
@@ -1,9 +1 @@
-# Ignore list for statix. `ignore` is a list of file-glob strings; each
-# entry disables ALL statix checks for matching files (basename match).
-# hardware-configuration.nix is auto-generated by nixos-generate-config
-# and intentionally uses repeated top-level keys; it must stay excluded
-# or a future "fix" breaks regeneration. Keep this entry in sync if more
-# generated hardware files appear.
-ignore = [
- "hardware-configuration.nix",
-]
+disabled = ["empty_pattern"]
diff --git a/system/core/boot.nix b/system/core/boot.nix
index b7cf286..a0c30f4 100644
--- a/system/core/boot.nix
+++ b/system/core/boot.nix
@@ -1,7 +1,6 @@
{
config,
pkgs,
- lib,
...
}: {
boot = {
diff --git a/system/services/default.nix b/system/services/default.nix
index 28a43c7..31c9933 100644
--- a/system/services/default.nix
+++ b/system/services/default.nix
@@ -1,8 +1,4 @@
-{
- lib,
- pkgs,
- ...
-}: {
+{pkgs, ...}: {
services = {
printing = {
enable = true;