Compare commits

...

2 commits

Author SHA1 Message Date
c9b4301c70
specify _class module attributes to explicitly declare module types 2025-06-21 08:22:01 +02:00
486b316885 run updater natively (#394)
see Fediversity/Fediversity#65 (comment).

closes #65.

Reviewed-on: Fediversity/Fediversity#394
Co-authored-by: Kiara Grouwstra <kiara@procolix.eu>
Co-committed-by: Kiara Grouwstra <kiara@procolix.eu>
2025-06-20 09:41:38 +02:00
61 changed files with 126 additions and 6 deletions

View file

@ -7,15 +7,16 @@ on:
jobs: jobs:
lockfile: lockfile:
runs-on: ubuntu-latest runs-on: native
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v31
- name: Install npins - name: Install npins
run: nix profile install 'nixpkgs#npins' run: nix-shell --run "npins update"
- name: Update npins sources - name: Create PR
uses: getchoo/update-npins@v0 uses: peter-evans/create-pull-request@v7
with: with:
token: "${{ secrets.DEPLOY_KEY }}" token: "${{ secrets.DEPLOY_KEY }}"
branch: npins-update
commit-message: "npins: update sources"
title: "npins: update sources"

View file

@ -17,6 +17,8 @@ let
in in
{ {
_class = "flake";
perSystem = perSystem =
{ pkgs, ... }: { pkgs, ... }:
{ {

View file

@ -1,6 +1,8 @@
{ inputs, ... }: { inputs, ... }:
{ {
_class = "nixosTest";
name = "deployment-basic"; name = "deployment-basic";
nodes.deployer = nodes.deployer =

View file

@ -20,6 +20,8 @@ let
in in
{ {
_class = "flake";
perSystem = perSystem =
{ pkgs, ... }: { pkgs, ... }:
{ {

View file

@ -7,6 +7,8 @@ let
in in
{ {
_class = "nixosTest";
name = "deployment-cli"; name = "deployment-cli";
nodes.deployer = nodes.deployer =

View file

@ -18,6 +18,8 @@ let
in in
{ {
_class = "nixos";
imports = [ ./sharedOptions.nix ]; imports = [ ./sharedOptions.nix ];
options.system.extraDependenciesFromModule = mkOption { options.system.extraDependenciesFromModule = mkOption {

View file

@ -42,6 +42,8 @@ let
in in
{ {
_class = "nixosTest";
imports = [ imports = [
./sharedOptions.nix ./sharedOptions.nix
]; ];

View file

@ -12,6 +12,8 @@ let
in in
{ {
_class = "nixos";
options = { options = {
targetMachines = mkOption { targetMachines = mkOption {
type = with types; listOf str; type = with types; listOf str;

View file

@ -12,6 +12,8 @@ let
in in
{ {
_class = "nixos";
imports = [ imports = [
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
(modulesPath + "/../lib/testing/nixos-test-base.nix") (modulesPath + "/../lib/testing/nixos-test-base.nix")

View file

@ -12,6 +12,8 @@ let
in in
{ {
_class = "nixops4Resource";
imports = [ ./sharedOptions.nix ]; imports = [ ./sharedOptions.nix ];
options = { options = {

View file

@ -23,6 +23,8 @@ let
in in
{ {
_class = "flake";
perSystem = perSystem =
{ pkgs, ... }: { pkgs, ... }:
{ {

View file

@ -121,6 +121,8 @@ let
in in
{ {
_class = "nixosTest";
name = "deployment-panel"; name = "deployment-panel";
## The panel's module sets `nixpkgs.overlays` which clashes with ## The panel's module sets `nixpkgs.overlays` which clashes with

View file

@ -7,6 +7,8 @@ let
in in
with types; with types;
{ {
_class = "nixops4Deployment";
options = { options = {
runtime-environments = mkOption { runtime-environments = mkOption {
description = "Collection of runtime environments into which applications can be deployed"; description = "Collection of runtime environments into which applications can be deployed";

View file

@ -65,6 +65,8 @@ let
cfg = config.deployment; cfg = config.deployment;
in in
{ {
_class = "nixops4Deployment";
options = { options = {
deployment = lib.mkOption { deployment = lib.mkOption {
description = '' description = ''

View file

@ -1,4 +1,6 @@
{ {
_class = "flake";
imports = [ imports = [
./check/basic/flake-part.nix ./check/basic/flake-part.nix
./check/cli/flake-part.nix ./check/cli/flake-part.nix

View file

@ -17,6 +17,8 @@ let
inherit (lib) types mkOption; inherit (lib) types mkOption;
in in
{ {
_class = "nixops4Deployment";
options = { options = {
enable = lib.mkEnableOption "Fediversity configuration"; enable = lib.mkEnableOption "Fediversity configuration";
domain = mkOption { domain = mkOption {

View file

@ -1,4 +1,6 @@
{ {
_class = "flake";
inputs = { inputs = {
flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.url = "github:hercules-ci/flake-parts";
git-hooks.url = "github:cachix/git-hooks.nix"; git-hooks.url = "github:cachix/git-hooks.nix";

View file

@ -5,6 +5,8 @@ let
in in
{ {
_class = "nixos";
imports = [ imports = [
./hardware.nix ./hardware.nix
./networking.nix ./networking.nix

View file

@ -1,6 +1,8 @@
{ modulesPath, ... }: { modulesPath, ... }:
{ {
_class = "nixos";
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot = { boot = {

View file

@ -5,6 +5,8 @@ let
in in
{ {
_class = "nixos";
config = { config = {
services.openssh = { services.openssh = {
enable = true; enable = true;

View file

@ -1,4 +1,6 @@
{ {
_class = "nixos";
users.users = { users.users = {
procolix = { procolix = {
isNormalUser = true; isNormalUser = true;

View file

@ -6,6 +6,8 @@ let
in in
{ {
_class = "nixops4Resource";
options.fediversityVm = { options.fediversityVm = {
########################################################################## ##########################################################################

View file

@ -18,6 +18,8 @@ let
in in
{ {
_class = "nixops4Resource";
imports = [ ./options.nix ]; imports = [ ./options.nix ];
fediversityVm.hostPublicKey = mkDefault keys.systems.${config.fediversityVm.name}; fediversityVm.hostPublicKey = mkDefault keys.systems.${config.fediversityVm.name};

View file

@ -155,6 +155,8 @@ let
in in
{ {
_class = "flake";
## - Each normal or test machine gets a NixOS configuration. ## - Each normal or test machine gets a NixOS configuration.
## - Each normal or test machine gets a VM options entry. ## - Each normal or test machine gets a VM options entry.
## - Each normal machine gets a deployment. ## - Each normal machine gets a deployment.

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 200; vmId = 200;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 201; vmId = 201;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -6,6 +6,8 @@ let
name = "panel"; name = "panel";
in in
{ {
_class = "nixos";
imports = [ imports = [
(import ../../../panel { }).module (import ../../../panel { }).module
]; ];

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 2116; vmId = 2116;
proxmox = "procolix"; proxmox = "procolix";

View file

@ -5,6 +5,8 @@ let
in in
{ {
_class = "nixos";
services.forgejo = { services.forgejo = {
enable = true; enable = true;

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 2187; vmId = 2187;
proxmox = "procolix"; proxmox = "procolix";

View file

@ -1,6 +1,8 @@
{ config, ... }: { config, ... }:
{ {
_class = "nixos";
services.phpfpm.pools.mediawiki.phpOptions = '' services.phpfpm.pools.mediawiki.phpOptions = ''
upload_max_filesize = 1024M; upload_max_filesize = 1024M;
post_max_size = 1024M; post_max_size = 1024M;

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7001; vmId = 7001;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7002; vmId = 7002;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7003; vmId = 7003;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7004; vmId = 7004;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7005; vmId = 7005;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7006; vmId = 7006;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7011; vmId = 7011;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7012; vmId = 7012;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7013; vmId = 7013;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -1,4 +1,6 @@
{ {
_class = "nixops4Resource";
fediversityVm = { fediversityVm = {
vmId = 7014; vmId = 7014;
proxmox = "fediversity"; proxmox = "fediversity";

View file

@ -76,6 +76,8 @@ in
# https://git.dgnum.eu/mdebray/djangonix/ # https://git.dgnum.eu/mdebray/djangonix/
# unlicensed at the time of writing, but surely worth taking some inspiration from... # unlicensed at the time of writing, but surely worth taking some inspiration from...
{ {
_class = "nixos";
options.services.${name} = { options.services.${name} = {
enable = mkEnableOption "Service configuration for `${name}`"; enable = mkEnableOption "Service configuration for `${name}`";
production = mkOption { production = mkOption {

View file

@ -6,6 +6,8 @@ let
in in
{ {
_class = "nixos";
imports = [ imports = [
./garage ./garage
./mastodon ./mastodon

View file

@ -97,6 +97,8 @@ let
in in
{ {
_class = "nixos";
imports = [ ./options.nix ]; imports = [ ./options.nix ];
config = mkIf config.fediversity.garage.enable { config = mkIf config.fediversity.garage.enable {

View file

@ -5,6 +5,8 @@ let
in in
{ {
_class = "nixos";
options.fediversity.garage = { options.fediversity.garage = {
enable = mkEnableOption "Enable a Garage server on the machine"; enable = mkEnableOption "Enable a Garage server on the machine";

View file

@ -11,6 +11,8 @@ let
in in
{ {
_class = "nixos";
imports = [ ./options.nix ]; imports = [ ./options.nix ];
config = mkMerge [ config = mkMerge [

View file

@ -1,6 +1,8 @@
{ config, lib, ... }: { config, lib, ... }:
{ {
_class = "nixos";
options.fediversity.mastodon = options.fediversity.mastodon =
(import ../sharedOptions.nix { (import ../sharedOptions.nix {
inherit config lib; inherit config lib;

View file

@ -5,6 +5,8 @@ let
in in
{ {
_class = "nixos";
imports = [ ./options.nix ]; imports = [ ./options.nix ];
config = mkMerge [ config = mkMerge [

View file

@ -6,6 +6,8 @@ let
in in
{ {
_class = "nixos";
options.fediversity.peertube = options.fediversity.peertube =
(import ../sharedOptions.nix { (import ../sharedOptions.nix {
inherit config lib; inherit config lib;

View file

@ -15,6 +15,8 @@ let
in in
{ {
_class = "nixos";
imports = [ ./options.nix ]; imports = [ ./options.nix ];
config = mkMerge [ config = mkMerge [

View file

@ -1,6 +1,8 @@
{ config, lib, ... }: { config, lib, ... }:
{ {
_class = "nixos";
options.fediversity.pixelfed = options.fediversity.pixelfed =
(import ../sharedOptions.nix { (import ../sharedOptions.nix {
inherit config lib; inherit config lib;

View file

@ -14,6 +14,8 @@ let
in in
{ {
_class = "nixos";
enable = mkEnableOption "Enable a ${serviceDocName} server on the machine"; enable = mkEnableOption "Enable a ${serviceDocName} server on the machine";
s3AccessKeyFile = mkOption { s3AccessKeyFile = mkOption {

View file

@ -43,6 +43,8 @@ let
in in
{ {
_class = "nixosTest";
name = "mastodon"; name = "mastodon";
nodes = { nodes = {

View file

@ -162,6 +162,8 @@ let
in in
{ {
_class = "nixosTest";
name = "peertube"; name = "peertube";
nodes = { nodes = {

View file

@ -115,6 +115,8 @@ let
in in
{ {
_class = "nixosTest";
name = "test-pixelfed-garage"; name = "test-pixelfed-garage";
nodes = { nodes = {

View file

@ -127,6 +127,8 @@ let
preOverride = pkgs.nixosTest ( preOverride = pkgs.nixosTest (
test test
// { // {
_class = "nixosTest";
interactive = (test.interactive or { }) // { interactive = (test.interactive or { }) // {
# no need to // with test.interactive.nodes here, since we are iterating # no need to // with test.interactive.nodes here, since we are iterating
# over all of them, and adding back in the config via `imports` # over all of them, and adding back in the config via `imports`

View file

@ -10,6 +10,8 @@ let
in in
{ {
_class = "nixos";
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ]; imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
fediversity.garage.enable = true; fediversity.garage.enable = true;

View file

@ -1,6 +1,8 @@
# customize nixos-rebuild build-vm to be a bit more convenient # customize nixos-rebuild build-vm to be a bit more convenient
{ pkgs, ... }: { pkgs, ... }:
{ {
_class = "nixos";
# let us log in # let us log in
users.mutableUsers = false; users.mutableUsers = false;
users.users.root.hashedPassword = ""; users.users.root.hashedPassword = "";

View file

@ -6,6 +6,7 @@
... ...
}: }:
{ {
_class = "nixos";
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ]; imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];

View file

@ -5,6 +5,8 @@
}: }:
{ {
_class = "nixos";
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ]; imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
fediversity = { fediversity = {

View file

@ -11,6 +11,8 @@ let
in in
{ {
_class = "nixos";
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ]; imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
fediversity = { fediversity = {