22 Commits

Author SHA1 Message Date
63c36f6add [microvm] put vm creation into function
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 3m14s
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Successful in 3m44s
2024-11-19 13:31:09 +01:00
be194e4293 [microvm] rm duplicate option
Some checks failed
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m39s
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Failing after 13m12s
2024-11-19 13:03:47 +01:00
edb9dcb28b [microvm] split module files
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 4m0s
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Successful in 4m10s
2024-11-19 12:59:11 +01:00
05ec7004ad [microvm] setup network, allow adding bridge interface to host
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 3m19s
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Successful in 3m20s
2024-11-18 22:55:03 +01:00
d1afbe9f14 [durruti] make durruti microvm
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 3m18s
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Successful in 2m56s
Networking still needs to be done but the vm boots using ```nix run .\#nixosConfigurations.durruti.config.microvm.declaredRunner```
2024-11-14 14:37:02 +01:00
807d2007fa [nixpkgs] add microvm.nix 2024-11-14 14:36:32 +01:00
29567efb99 [nixpkgs] update
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m46s
2024-11-08 11:59:53 +01:00
ca4db0ad5c Revert "[doc] Init dokumentation mit mdbook + grobes inhaltsverzeichnis"
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m29s
This reverts commit 753c44a875.
2024-10-29 18:20:45 +01:00
ahtlon
753c44a875 [doc] Init dokumentation mit mdbook + grobes inhaltsverzeichnis
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m51s
2024-10-29 18:16:37 +01:00
0eeb9bc131 doc/src/SUMMARY.md aktualisiert 2024-10-29 18:16:37 +01:00
142277879a Added temporary information about website host 2024-10-29 18:16:37 +01:00
ahtlon
4ecd2139a9 todo bearbeitet 2024-10-29 18:16:37 +01:00
e73105bc66 [doc] add app doc to serve doc
'nix run .#doc' will open documentaion in browser and update on
filechange
2024-10-29 18:16:37 +01:00
38a7d58ef6 [doc] add doc package
this can be used for hosting later on
2024-10-29 18:16:37 +01:00
6a185a54bc [doc] mv files into /doc 2024-10-29 18:16:37 +01:00
ahtlon
4334f6bec2 [doc] Todo aus readme verschieben 2024-10-29 18:16:37 +01:00
ahtlon
fad4f72c0b [doc] Init leere seiten 2024-10-29 18:16:37 +01:00
ahtlon
8e0f846e54 [doc] Init dokumentation mit mdbook + grobes inhaltsverzeichnis 2024-10-29 18:16:35 +01:00
29fa4eda1e [nixpkgs] update
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Successful in 4m18s
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m28s
2024-10-29 10:59:07 +01:00
ahtlon
e57cc9dbe6 moderatio entfernt
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (pull_request) Successful in 2m25s
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m38s
2024-10-26 20:37:04 +02:00
ahtlon
2da812fecd mehrere warnungen gefixt 2024-10-26 20:31:54 +02:00
ahtlon
8ff71f14dc add direnv to gitignore
All checks were successful
Evaluate Hydra Jobs / eval-hydra-jobs (push) Successful in 2m53s
2024-10-26 20:19:03 +02:00
27 changed files with 281 additions and 243 deletions

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@
*.log *.log
result result
*.qcow2 *.qcow2
.direnv/
book/

View File

@@ -98,34 +98,3 @@ for documentation we currently just use README.md files.
the devshell provides the python package ['grip'](https://github.com/joeyespo/grip) which can be used to preview different README.md files in the browser. the devshell provides the python package ['grip'](https://github.com/joeyespo/grip) which can be used to preview different README.md files in the browser.
the usage is simple, just run ```grip``` in the same folder as the README.md you wanna preview. then open your browser at ```http://localhost:6419 ```. the usage is simple, just run ```grip``` in the same folder as the README.md you wanna preview. then open your browser at ```http://localhost:6419 ```.
## todos...
#### infrastructure
* [ ] host a local wiki with public available information about the space, for example:
* [ ] how to use coffe machine
* [ ] how to turn on/off electricity
* [ ] how to use beamer
* [ ] how to buecher ausleihen
* ...
* [x] host some pad (codimd aka hedgedoc)
* [ ] some network fileshare for storing the movies and streaming them within the network
* [x] malobeo network infrastructure rework
* [x] request mulvad acc
* [x] remove freifunk, use openwrt with mulvad configured
* [ ] evaluate imposing solutions
* [ ] pdfarranger
#### external services
we want to host two services that need a bit more resources, this is a booking system for the room itself and a library system.
- [x] analyse best way to include our stuff into external nixOs server
- [x] writing some module that is included by the server
- [x] directly use nixOs container on host
- [x] combination of both (module that manages nginx blabla + nixOs container for the services
#### bots&progrmaming
* [ ] create telegram bot automatically posting tuesday events
* [x] create webapp/interface replacing current task list pad
* could be a simple form for every tuesday
* [x] element bot should send updates if some tasks are not filled out

1
doc/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
book

6
doc/book.toml Normal file
View File

@@ -0,0 +1,6 @@
[book]
authors = ["ahtlon"]
language = "de"
multilingual = false
src = "src"
title = "Malobeo Infrastruktur Dokumentation"

1
doc/src/Index.md Normal file
View File

@@ -0,0 +1 @@
# Index

16
doc/src/SUMMARY.md Normal file
View File

@@ -0,0 +1,16 @@
# Summary
- [Index](./Index.md)
- [Info]()
- [Aktuelle Server]()
- [Durruti](./server/durruti.md)
- [Lucia](./server/lucia.md)
- [Hardware]()
- [Netzwerk]()
- [Seiten]()
- [Website](./server/website.md)
- [musik](./projekte/musik.md)
- [TODO](./todo.md)
- [How-to]()
- [Updates](./anleitung/updates.md)
- [Rollbacks](./anleitung/rollback.md)

View File

@@ -0,0 +1 @@
# Rollbacks

View File

@@ -0,0 +1 @@
# Updates

View File

@@ -0,0 +1 @@
# musik

View File

@@ -0,0 +1,2 @@
# Durruti
Hetzner Server

2
doc/src/server/lucia.md Normal file
View File

@@ -0,0 +1,2 @@
# Lucia
Lokaler Raspberry Pi 3

View File

@@ -0,0 +1,7 @@
#Website
hosted on uberspace
runs malobeo.org(wordpress) and forum.malobeo.org(phpbb)
access via ssh with public key or password
Files under /var/www/virtual/malobeo/html

32
doc/src/todo.md Normal file
View File

@@ -0,0 +1,32 @@
# TODO
- [ ] Dieses wiki schreiben
#### infrastructure
* [ ] host a local wiki with public available information about the space, for example:
* [ ] how to use coffe machine
* [ ] how to turn on/off electricity
* [ ] how to use beamer
* [ ] how to buecher ausleihen
* ...
- [x] host a local wiki with infrastructure information
* [x] host some pad (codimd aka hedgedoc)
* [ ] some network fileshare for storing the movies and streaming them within the network
- Currently developed in the 'fileserver' branch
- NFSV4 based
* [x] malobeo network infrastructure rework
* [x] request mulvad acc
* [x] remove freifunk, use openwrt with mulvad configured
* [ ] evaluate imposing solutions
* [ ] pdfarranger
#### external services
we want to host two services that need a bit more resources, this is a booking system for the room itself and a library system.
- [x] analyse best way to include our stuff into external nixOs server
- [x] writing some module that is included by the server
- [x] directly use nixOs container on host
- [x] combination of both (module that manages nginx blabla + nixOs container for the services
#### bots&progrmaming
* [ ] create telegram bot automatically posting tuesday events
* [x] create webapp/interface replacing current task list pad
* could be a simple form for every tuesday
* [x] element bot should send updates if some tasks are not filled out

104
flake.lock generated
View File

@@ -21,6 +21,24 @@
"url": "https://git.dynamicdiscord.de/kalipso/ep3-bs.nix" "url": "https://git.dynamicdiscord.de/kalipso/ep3-bs.nix"
} }
}, },
"flake-utils": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -61,6 +79,28 @@
"type": "github" "type": "github"
} }
}, },
"microvm": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
],
"spectrum": "spectrum"
},
"locked": {
"lastModified": 1731240174,
"narHash": "sha256-HYu+bPoV3UILhwc4Ar5iQ7aF+DuQWHXl4mljN6Bwq6A=",
"owner": "astro",
"repo": "microvm.nix",
"rev": "dd89404e1885b8d7033106f3898eaef8db660cb2",
"type": "github"
},
"original": {
"owner": "astro",
"repo": "microvm.nix",
"type": "github"
}
},
"nixlib": { "nixlib": {
"locked": { "locked": {
"lastModified": 1729386149, "lastModified": 1729386149,
@@ -99,11 +139,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1729742320, "lastModified": 1730919458,
"narHash": "sha256-u3Of8xRkN//me8PU+RucKA59/6RNy4B2jcGAF36P4jI=", "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "e8a2f6d5513fe7b7d15701b2d05404ffdc3b6dda", "rev": "e1cc1f6483393634aee94514186d21a4871e78d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -131,11 +171,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1729357638, "lastModified": 1730602179,
"narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=", "narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22", "rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -147,11 +187,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1729665710, "lastModified": 1730785428,
"narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -163,11 +203,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1729449015, "lastModified": 1730883749,
"narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=", "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "89172919243df199fe237ba0f776c3e3e3d72367", "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -182,6 +222,7 @@
"ep3-bs": "ep3-bs", "ep3-bs": "ep3-bs",
"home-manager": "home-manager", "home-manager": "home-manager",
"mfsync": "mfsync", "mfsync": "mfsync",
"microvm": "microvm",
"nixos-generators": "nixos-generators", "nixos-generators": "nixos-generators",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
@@ -199,11 +240,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1729695320, "lastModified": 1731047660,
"narHash": "sha256-Fm4cGAlaDwekQvYX0e6t0VjT6YJs3fRXtkyuE4/NzzU=", "narHash": "sha256-iyp51lPWEQz4c5VH9bVbAuBcFP4crETU2QJYh5V0NYA=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "d089e742fb79259b9c4dd9f18e9de1dd4fa3c1ec", "rev": "60e1bce1999f126e3b16ef45f89f72f0c3f8d16f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -212,6 +253,22 @@
"type": "github" "type": "github"
} }
}, },
"spectrum": {
"flake": false,
"locked": {
"lastModified": 1729945407,
"narHash": "sha256-iGNMamNOAnVTETnIVqDWd6fl74J8fLEi1ejdZiNjEtY=",
"ref": "refs/heads/main",
"rev": "f1d94ee7029af18637dbd5fdf4749621533693fa",
"revCount": 764,
"type": "git",
"url": "https://spectrum-os.org/git/spectrum"
},
"original": {
"type": "git",
"url": "https://spectrum-os.org/git/spectrum"
}
},
"systems": { "systems": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
@@ -257,6 +314,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tasklist": { "tasklist": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -315,7 +387,7 @@
}, },
"utils_3": { "utils_3": {
"inputs": { "inputs": {
"systems": "systems_3" "systems": "systems_4"
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1726560853,

View File

@@ -8,6 +8,8 @@
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";
mfsync.url = "github:k4lipso/mfsync"; mfsync.url = "github:k4lipso/mfsync";
microvm.url = "github:astro/microvm.nix";
microvm.inputs.nixpkgs.follows = "nixpkgs";
utils = { utils = {
url = "github:numtide/flake-utils"; url = "github:numtide/flake-utils";

View File

@@ -40,16 +40,36 @@ let
} }
]; ];
defaultModules = baseModules; defaultModules = baseModules;
in
{ makeMicroVM = hostName: ipv4Addr: modules: [
moderatio = nixosSystem { inputs.microvm.nixosModules.microvm
system = "x86_64-linux"; {
specialArgs.inputs = inputs; microvm = {
modules = defaultModules ++ [ hypervisor = "qemu";
./moderatio/configuration.nix interfaces = [
{
type = "tap";
id = "vm-${hostName}";
mac = "02:00:00:00:00:01";
}
]; ];
}; };
systemd.network.enable = true;
systemd.network.networks."20-lan" = {
matchConfig.Type = "ether";
networkConfig = {
Address = [ "${ipv4Addr}/24" ];
Gateway = "10.0.0.1";
DNS = ["1.1.1.1"];
DHCP = "no";
};
};
}
] ++ defaultModules ++ modules;
in
{
louise = nixosSystem { louise = nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs.inputs = inputs; specialArgs.inputs = inputs;
@@ -61,7 +81,7 @@ in
durruti = nixosSystem { durruti = nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs.inputs = inputs; specialArgs.inputs = inputs;
modules = defaultModules ++ [ modules = makeMicroVM "durruti" "10.0.0.5" [
./durruti/configuration.nix ./durruti/configuration.nix
]; ];
}; };

View File

@@ -5,7 +5,6 @@ with lib;
{ {
sops.defaultSopsFile = ./secrets.yaml; sops.defaultSopsFile = ./secrets.yaml;
boot.isContainer = true;
networking = { networking = {
hostName = mkDefault "durruti"; hostName = mkDefault "durruti";
useDHCP = false; useDHCP = false;

View File

@@ -44,6 +44,5 @@ in
enableACME= true; enableACME= true;
locations."/".proxyPass = "http://${cfg.host_ip}:80"; locations."/".proxyPass = "http://${cfg.host_ip}:80";
}; };
}; };
} }

View File

@@ -14,7 +14,7 @@ in
services.openssh.enable = true; services.openssh.enable = true;
services.openssh.ports = [ 22 ]; services.openssh.ports = [ 22 ];
services.openssh.passwordAuthentication = false; services.openssh.settings.PasswordAuthentication = false;
services.openssh.settings.PermitRootLogin = "prohibit-password"; services.openssh.settings.PermitRootLogin = "prohibit-password";
users.users.root.openssh.authorizedKeys.keys = sshKeys.admins; users.users.root.openssh.authorizedKeys.keys = sshKeys.admins;
@@ -198,7 +198,7 @@ in
services.avahi = { services.avahi = {
enable = true; enable = true;
nssmdns = true; nssmdns4 = true;
publish = { publish = {
enable = true; enable = true;
addresses = true; addresses = true;

View File

@@ -1,92 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
{
services.acpid.enable = true;
boot.kernelPackages = pkgs.linuxPackages_5_4;
services.xserver.videoDrivers = [ "intel" ];
services.xserver.deviceSection = ''
Option "DRI" "2"
Option "TearFree" "true"
'';
zramSwap.enable = true;
zramSwap.memoryPercent = 150;
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./zfs.nix
../modules/xserver.nix
../modules/malobeo_user.nix
../modules/sshd.nix
../modules/minimal_tools.nix
];
users.users.malobeo = {
packages = with pkgs; [
firefox
thunderbird
];
};
networking.hostName = "moderatio"; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkbOptions in tty.
# };
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
sound.enable = true;
hardware.pulseaudio.enable = true;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.05"; # Did you read the comment?
}

View File

@@ -1,53 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "uhci_hcd" "ehci_pci" "ahci" "usb_storage" "ums_realtek" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "rpool/nixos/root";
fsType = "zfs"; options = [ "zfsutil" "X-mount.mkdir" ];
};
fileSystems."/home" =
{ device = "rpool/nixos/home";
fsType = "zfs"; options = [ "zfsutil" "X-mount.mkdir" ];
};
fileSystems."/boot" =
{ device = "bpool/nixos/root";
fsType = "zfs"; options = [ "zfsutil" "X-mount.mkdir" ];
};
fileSystems."/boot/efis/ata-ST250LT003-9YG14C_W041QXCA-part1" =
{ device = "/dev/disk/by-uuid/A0D1-00C1";
fsType = "vfat";
};
fileSystems."/boot/efi" =
{ device = "/boot/efis/ata-ST250LT003-9YG14C_W041QXCA-part1";
fsType = "none";
options = [ "bind" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,34 +0,0 @@
{ config, pkgs, ... }:
{ boot.supportedFilesystems = [ "zfs" ];
networking.hostId = "ae749b82";
#boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
boot.loader.efi.canTouchEfiVariables = false;
boot.loader.generationsDir.copyKernels = true;
boot.loader.grub.efiInstallAsRemovable = true;
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.copyKernels = true;
boot.loader.grub.efiSupport = true;
boot.loader.grub.zfsSupport = true;
boot.loader.grub.extraPrepareConfig = ''
mkdir -p /boot/efis
for i in /boot/efis/*; do mount $i ; done
mkdir -p /boot/efi
mount /boot/efi
'';
boot.loader.grub.extraInstallCommands = ''
ESP_MIRROR=$(mktemp -d)
cp -r /boot/efi/EFI $ESP_MIRROR
for i in /boot/efis/*; do
cp -r $ESP_MIRROR/EFI $i
done
rm -rf $ESP_MIRROR
'';
boot.loader.grub.devices = [
"/dev/disk/by-id/ata-ST250LT003-9YG14C_W041QXCA"
];
users.users.root.initialHashedPassword = "$6$PmoyhSlGGT6SI0t0$.cFsLyhtO1ks1LUDhLjG0vT44/NjuWCBrv5vUSXqwrU5WpaBvvthnLp0Dfwfyd6Zcdx/4izDcjQAgEWs4QdzW0";
}

View File

@@ -0,0 +1,52 @@
{ config, lib, options, pkgs, ... }:
with lib;
let
cfg = config.services.malobeo.microvm;
in
{
options = {
services.malobeo.microvm = {
enableHostBridge = mkOption {
default = false;
type = types.bool;
description = lib.mdDoc "Setup bridge device for microvms.";
};
};
};
config = mkIf cfg.enableHostBridge
{
systemd.network = {
enable = true;
# create a bride device that all the microvms will be connected to
netdevs."10-microvm".netdevConfig = {
Kind = "bridge";
Name = "microvm";
};
networks."10-microvm" = {
matchConfig.Name = "microvm";
networkConfig = {
DHCPServer = true;
IPv6SendRA = true;
};
addresses = [ {
Address = "10.0.0.1/24";
} {
Address = "fd12:3456:789a::1/64";
} ];
ipv6Prefixes = [ {
Prefix = "fd12:3456:789a::/64";
} ];
};
# connect the vms to the bridge
networks."11-microvm" = {
matchConfig.Name = "vm-*";
networkConfig.Bridge = "microvm";
};
};
};
}

View File

@@ -6,7 +6,7 @@ in
{ {
services.openssh.enable = true; services.openssh.enable = true;
services.openssh.ports = [ 22 ]; services.openssh.ports = [ 22 ];
services.openssh.passwordAuthentication = false; services.openssh.settings.PasswordAuthentication = false;
services.openssh.settings.PermitRootLogin = "no"; services.openssh.settings.PermitRootLogin = "no";
users.users.root.openssh.authorizedKeys.keys = sshKeys.admins; users.users.root.openssh.authorizedKeys.keys = sshKeys.admins;
} }

View File

@@ -7,7 +7,6 @@
xterm.enable = false; xterm.enable = false;
cinnamon.enable = true; cinnamon.enable = true;
}; };
displayManager.defaultSession = "cinnamon";
}; };
services.displayManager.defaultSession = "cinnamon";
} }

View File

@@ -18,12 +18,44 @@ in (utils.lib.eachSystem (builtins.filter filter_system utils.lib.defaultSystems
devShells.default = pkgs.callPackage ./shell.nix { devShells.default = pkgs.callPackage ./shell.nix {
inherit (sops-nix.packages."${pkgs.system}") sops-import-keys-hook ssh-to-pgp sops-init-gpg-key; inherit (sops-nix.packages."${pkgs.system}") sops-import-keys-hook ssh-to-pgp sops-init-gpg-key;
}; };
packages = {
docs = pkgs.stdenv.mkDerivation {
name = "malobeo-docs";
phases = [ "buildPhase" ];
buildInputs = [ pkgs.mdbook ];
inputs = pkgs.lib.sourceFilesBySuffices ./doc/. [ ".md" ".toml" ];
buildPhase = ''
dest=$out/share/doc
mkdir -p $dest
cp -r --no-preserve=all $inputs/* ./
mdbook build
ls
cp -r ./book/* $dest
'';
};
};
apps = {
docs = {
type = "app";
program = builtins.toString (pkgs.writeScript "docs" ''
${pkgs.mdbook}/bin/mdbook serve --open ./doc
'');
};
};
})) // rec { })) // rec {
nixosConfigurations = import ./machines/configuration.nix (inputs // { nixosConfigurations = import ./machines/configuration.nix (inputs // {
inherit inputs; inherit inputs;
}); });
nixosModules.malobeo = import ./machines/durruti/host_config.nix; nixosModules.malobeo.imports = [
./machines/durruti/host_config.nix
./machines/modules/malobeo/microvm_host.nix
];
hydraJobs = nixpkgs.lib.mapAttrs (_: nixpkgs.lib.hydraJob) ( hydraJobs = nixpkgs.lib.mapAttrs (_: nixpkgs.lib.hydraJob) (
let let

View File

@@ -18,5 +18,6 @@ mkShell {
sops-init-gpg-key sops-init-gpg-key
sops sops
pkgs.python310Packages.grip pkgs.python310Packages.grip
pkgs.mdbook
]; ];
} }