forked from fediversity/fediversity
Compare commits
8 commits
bd1cfd7a7c
...
4e8b399052
Author | SHA1 | Date | |
---|---|---|---|
4e8b399052 | |||
46182e7512 | |||
9a25a04bfa | |||
c1b33121b6 | |||
d073bd706d | |||
486b316885 | |||
611c961dcf | |||
d67f533948 |
68 changed files with 159 additions and 16 deletions
|
@ -7,15 +7,16 @@ on:
|
|||
|
||||
jobs:
|
||||
lockfile:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: native
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
- name: Install npins
|
||||
run: nix profile install 'nixpkgs#npins'
|
||||
- name: Update npins sources
|
||||
uses: getchoo/update-npins@v0
|
||||
- name: Update pins
|
||||
run: nix-shell --run "npins update"
|
||||
- name: Create PR
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
token: "${{ secrets.DEPLOY_KEY }}"
|
||||
branch: npins-update
|
||||
commit-message: "npins: update sources"
|
||||
title: "npins: update sources"
|
||||
|
|
|
@ -10,6 +10,8 @@ let
|
|||
gitignore
|
||||
;
|
||||
inherit (pkgs) lib;
|
||||
inherit (import sources.flake-inputs) import-flake;
|
||||
inherit ((import-flake { src = ./.; }).inputs) nixops4;
|
||||
pre-commit-check =
|
||||
(import "${git-hooks}/nix" {
|
||||
inherit nixpkgs system;
|
||||
|
@ -55,8 +57,10 @@ in
|
|||
};
|
||||
in
|
||||
[
|
||||
pkgs.npins
|
||||
pkgs.nix-unit
|
||||
test-loop
|
||||
nixops4.packages.${system}.default
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "flake";
|
||||
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ inputs, ... }:
|
||||
|
||||
{
|
||||
_class = "nixosTest";
|
||||
|
||||
name = "deployment-basic";
|
||||
|
||||
nodes.deployer =
|
||||
|
|
|
@ -20,6 +20,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "flake";
|
||||
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
|
|
@ -7,6 +7,8 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
_class = "nixosTest";
|
||||
|
||||
name = "deployment-cli";
|
||||
|
||||
nodes.deployer =
|
||||
|
|
|
@ -18,6 +18,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ ./sharedOptions.nix ];
|
||||
|
||||
options.system.extraDependenciesFromModule = mkOption {
|
||||
|
|
|
@ -42,6 +42,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixosTest";
|
||||
|
||||
imports = [
|
||||
./sharedOptions.nix
|
||||
];
|
||||
|
|
|
@ -11,6 +11,7 @@ let
|
|||
inherit (lib) mkOption types;
|
||||
|
||||
in
|
||||
# `config` not set and imported from multiple places: no fixed module class
|
||||
{
|
||||
options = {
|
||||
targetMachines = mkOption {
|
||||
|
|
|
@ -12,6 +12,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
(modulesPath + "/../lib/testing/nixos-test-base.nix")
|
||||
|
|
|
@ -12,6 +12,8 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
imports = [ ./sharedOptions.nix ];
|
||||
|
||||
options = {
|
||||
|
|
|
@ -23,6 +23,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "flake";
|
||||
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
|
|
@ -121,6 +121,8 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
_class = "nixosTest";
|
||||
|
||||
name = "deployment-panel";
|
||||
|
||||
## The panel's module sets `nixpkgs.overlays` which clashes with
|
||||
|
|
|
@ -11,6 +11,8 @@ let
|
|||
}).config;
|
||||
in
|
||||
{
|
||||
_class = "nix-unit";
|
||||
|
||||
test-eval = {
|
||||
expr =
|
||||
let
|
||||
|
|
|
@ -7,6 +7,8 @@ let
|
|||
in
|
||||
with types;
|
||||
{
|
||||
_class = "nixops4Deployment";
|
||||
|
||||
options = {
|
||||
runtime-environments = mkOption {
|
||||
description = "Collection of runtime environments into which applications can be deployed";
|
||||
|
|
|
@ -65,6 +65,8 @@ let
|
|||
cfg = config.deployment;
|
||||
in
|
||||
{
|
||||
_class = "nixops4Deployment";
|
||||
|
||||
options = {
|
||||
deployment = lib.mkOption {
|
||||
description = ''
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "flake";
|
||||
|
||||
imports = [
|
||||
./check/basic/flake-part.nix
|
||||
./check/cli/flake-part.nix
|
||||
|
|
|
@ -17,6 +17,8 @@ let
|
|||
inherit (lib) types mkOption;
|
||||
in
|
||||
{
|
||||
_class = "nixops4Deployment";
|
||||
|
||||
options = {
|
||||
enable = lib.mkEnableOption "Fediversity configuration";
|
||||
domain = mkOption {
|
||||
|
|
|
@ -5,6 +5,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./networking.nix
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ modulesPath, ... }:
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||
|
||||
boot = {
|
||||
|
|
|
@ -5,6 +5,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
config = {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixos";
|
||||
|
||||
users.users = {
|
||||
procolix = {
|
||||
isNormalUser = true;
|
||||
|
|
|
@ -6,6 +6,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
options.fediversityVm = {
|
||||
|
||||
##########################################################################
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
|
@ -9,7 +10,7 @@ let
|
|||
inherit (lib.attrsets) concatMapAttrs optionalAttrs;
|
||||
inherit (lib.strings) removeSuffix;
|
||||
sources = import ../../npins;
|
||||
inherit (sources) nixpkgs agenix disko;
|
||||
inherit (sources) agenix disko;
|
||||
|
||||
secretsPrefix = ../../secrets;
|
||||
secrets = import (secretsPrefix + "/secrets.nix");
|
||||
|
@ -17,6 +18,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
fediversityVm.hostPublicKey = mkDefault keys.systems.${config.fediversityVm.name};
|
||||
|
@ -26,7 +29,7 @@ in
|
|||
hostPublicKey = config.fediversityVm.hostPublicKey;
|
||||
};
|
||||
|
||||
inherit nixpkgs;
|
||||
inherit (inputs) nixpkgs;
|
||||
|
||||
## The configuration of the machine. We strive to keep in this file only the
|
||||
## options that really need to be injected from the resource. Everything else
|
||||
|
|
|
@ -21,6 +21,9 @@ let
|
|||
makeResourceModule =
|
||||
{ vmName, isTestVm }:
|
||||
{
|
||||
# TODO(@fricklerhandwerk): this is terrible but IMO we should just ditch flake-parts and have our own data model for how the project is organised internally
|
||||
_module.args = { inherit inputs; };
|
||||
|
||||
imports =
|
||||
[
|
||||
./common/resource.nix
|
||||
|
@ -152,6 +155,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "flake";
|
||||
|
||||
## - Each normal or test machine gets a NixOS configuration.
|
||||
## - Each normal or test machine gets a VM options entry.
|
||||
## - Each normal machine gets a deployment.
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 200;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 201;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -6,6 +6,8 @@ let
|
|||
name = "panel";
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [
|
||||
(import ../../../panel { }).module
|
||||
];
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 2116;
|
||||
proxmox = "procolix";
|
||||
|
|
|
@ -5,6 +5,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 2187;
|
||||
proxmox = "procolix";
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
services.phpfpm.pools.mediawiki.phpOptions = ''
|
||||
upload_max_filesize = 1024M;
|
||||
post_max_size = 1024M;
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7001;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7002;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7003;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7004;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7005;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7006;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7011;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7012;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7013;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
_class = "nixops4Resource";
|
||||
|
||||
fediversityVm = {
|
||||
vmId = 7014;
|
||||
proxmox = "fediversity";
|
||||
|
|
|
@ -25,6 +25,22 @@
|
|||
"url": null,
|
||||
"hash": "1w2gsy6qwxa5abkv8clb435237iifndcxq0s79wihqw11a5yb938"
|
||||
},
|
||||
"disko": {
|
||||
"type": "GitRelease",
|
||||
"repository": {
|
||||
"type": "GitHub",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko"
|
||||
},
|
||||
"pre_releases": false,
|
||||
"version_upper_bound": null,
|
||||
"release_prefix": null,
|
||||
"submodules": false,
|
||||
"version": "v1.12.0",
|
||||
"revision": "7121f74b976481bc36877abaf52adab2a178fcbe",
|
||||
"url": "https://api.github.com/repos/nix-community/disko/tarball/v1.12.0",
|
||||
"hash": "0wbx518d2x54yn4xh98cgm65wvj0gpy6nia6ra7ns4j63hx14fkq"
|
||||
},
|
||||
"flake-inputs": {
|
||||
"type": "GitRelease",
|
||||
"repository": {
|
||||
|
|
|
@ -27,7 +27,7 @@ in
|
|||
pkgs.openssh
|
||||
];
|
||||
env = {
|
||||
DEPLOYMENT_FLAKE = ../.;
|
||||
DEPLOYMENT_FLAKE = toString ../.;
|
||||
DEPLOYMENT_NAME = "test";
|
||||
NPINS_DIRECTORY = toString ../npins;
|
||||
CREDENTIALS_DIRECTORY = toString ./.credentials;
|
||||
|
|
|
@ -76,6 +76,8 @@ in
|
|||
# https://git.dgnum.eu/mdebray/djangonix/
|
||||
# unlicensed at the time of writing, but surely worth taking some inspiration from...
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
options.services.${name} = {
|
||||
enable = mkEnableOption "Service configuration for `${name}`";
|
||||
production = mkOption {
|
||||
|
|
|
@ -60,6 +60,8 @@ let
|
|||
];
|
||||
in
|
||||
python3.pkgs.buildPythonPackage {
|
||||
_class = "package";
|
||||
|
||||
pname = name;
|
||||
inherit (pyproject.project) version;
|
||||
pyproject = true;
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
_class = "package";
|
||||
|
||||
pname = "django-pydantic-field";
|
||||
version = "v0.3.12";
|
||||
pyproject = true;
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
_class = "package";
|
||||
|
||||
pname = "drf-pydantic";
|
||||
version = "v2.7.1";
|
||||
pyproject = true;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
}:
|
||||
{
|
||||
tests = {
|
||||
mastodon = import ./tests/mastodon.nix { inherit pkgs; };
|
||||
pixelfed-garage = import ./tests/pixelfed-garage.nix { inherit pkgs; };
|
||||
peertube = import ./tests/peertube.nix { inherit pkgs; };
|
||||
mastodon = pkgs.nixosTest ./tests/mastodon.nix;
|
||||
pixelfed-garage = pkgs.nixosTest ./tests/pixelfed-garage.nix;
|
||||
peertube = pkgs.nixosTest ./tests/peertube.nix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [
|
||||
./garage
|
||||
./mastodon
|
||||
|
|
|
@ -97,6 +97,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf config.fediversity.garage.enable {
|
||||
|
|
|
@ -5,6 +5,8 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
options.fediversity.garage = {
|
||||
enable = mkEnableOption "Enable a Garage server on the machine";
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkMerge [
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
options.fediversity.mastodon =
|
||||
(import ../sharedOptions.nix {
|
||||
inherit config lib;
|
||||
|
|
|
@ -5,6 +5,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkMerge [
|
||||
|
|
|
@ -6,6 +6,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
options.fediversity.peertube =
|
||||
(import ../sharedOptions.nix {
|
||||
inherit config lib;
|
||||
|
|
|
@ -15,6 +15,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkMerge [
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
options.fediversity.pixelfed =
|
||||
(import ../sharedOptions.nix {
|
||||
inherit config lib;
|
||||
|
|
|
@ -14,6 +14,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
enable = mkEnableOption "Enable a ${serviceDocName} server on the machine";
|
||||
|
||||
s3AccessKeyFile = mkOption {
|
||||
|
|
|
@ -42,7 +42,7 @@ let
|
|||
'';
|
||||
in
|
||||
|
||||
pkgs.nixosTest {
|
||||
{
|
||||
name = "mastodon";
|
||||
|
||||
nodes = {
|
||||
|
|
|
@ -161,7 +161,7 @@ let
|
|||
'';
|
||||
in
|
||||
|
||||
pkgs.nixosTest {
|
||||
{
|
||||
name = "peertube";
|
||||
|
||||
nodes = {
|
||||
|
|
|
@ -114,7 +114,7 @@ let
|
|||
${seleniumQuit}'';
|
||||
|
||||
in
|
||||
pkgs.nixosTest {
|
||||
{
|
||||
name = "test-pixelfed-garage";
|
||||
|
||||
nodes = {
|
||||
|
|
|
@ -127,6 +127,8 @@ let
|
|||
preOverride = pkgs.nixosTest (
|
||||
test
|
||||
// {
|
||||
_class = "nixosTest";
|
||||
|
||||
interactive = (test.interactive or { }) // {
|
||||
# no need to // with test.interactive.nodes here, since we are iterating
|
||||
# over all of them, and adding back in the config via `imports`
|
||||
|
|
|
@ -10,6 +10,8 @@ let
|
|||
|
||||
in
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
|
||||
|
||||
fediversity.garage.enable = true;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# customize nixos-rebuild build-vm to be a bit more convenient
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
# let us log in
|
||||
users.mutableUsers = false;
|
||||
users.users.root.hashedPassword = "";
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
...
|
||||
}:
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
}:
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
|
||||
|
||||
fediversity = {
|
||||
|
|
|
@ -11,6 +11,8 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
_class = "nixos";
|
||||
|
||||
imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];
|
||||
|
||||
fediversity = {
|
||||
|
|
Loading…
Add table
Reference in a new issue