New modules for container managment
This commit is contained in:
parent
0a48b3d817
commit
93e9d585cb
7 changed files with 121 additions and 2 deletions
40
modules/commons.nix
Normal file
40
modules/commons.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.commons;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.commons = {
|
||||||
|
enable = lib.mkEnableOption "Enable commons stuff that are always nice to have";
|
||||||
|
|
||||||
|
allowReboot = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = config.system.autoUpgrade.allowReboot;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# Auto update
|
||||||
|
system.autoUpgrade = {
|
||||||
|
enable = true;
|
||||||
|
randomizedDelaySec = "10min";
|
||||||
|
allowReboot = cfg.allowReboot;
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
|
||||||
|
settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
gc = {
|
||||||
|
# Auto delete old generations
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 2d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
# Files
|
# Files
|
||||||
./btrfs-autoscrub.nix
|
./btrfs-autoscrub.nix
|
||||||
|
./commons.nix
|
||||||
./main-user.nix
|
./main-user.nix
|
||||||
./audio.nix
|
./audio.nix
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./download-pod.nix
|
./download-pod.nix
|
||||||
|
./download-pod-old.nix
|
||||||
./nextcloud-podman.nix
|
./nextcloud-podman.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@
|
||||||
./docker.nix
|
./docker.nix
|
||||||
./libvirtd.nix
|
./libvirtd.nix
|
||||||
./lxc.nix
|
./lxc.nix
|
||||||
|
./lxc-guest.nix
|
||||||
./podman.nix
|
./podman.nix
|
||||||
./oci-containers
|
./proxmox.nix
|
||||||
|
# ./oci-containers
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ in
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
docker = {
|
docker = {
|
||||||
storageDriver = "btrfs";
|
storageDriver = "overlay2";
|
||||||
rootless = {
|
rootless = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setSocketVariable = true;
|
setSocketVariable = true;
|
||||||
|
|
|
||||||
27
modules/virtualisation/lxc-guest.nix
Normal file
27
modules/virtualisation/lxc-guest.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.lxcGuest;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.lxcGuest = {
|
||||||
|
enable = lib.mkEnableOption "NixOs inside LXC container";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# start tty0 on serial console
|
||||||
|
systemd.services."getty@tty1" = {
|
||||||
|
enable = lib.mkForce true;
|
||||||
|
wantedBy = [ "getty.target" ]; # to start at boot
|
||||||
|
serviceConfig.Restart = "always"; # restart when session is closed
|
||||||
|
};
|
||||||
|
|
||||||
|
# Supress systemd units that don't work because of LXC.
|
||||||
|
# https://blog.xirion.net/posts/nixos-proxmox-lxc/#configurationnix-tweak
|
||||||
|
systemd.suppressedSystemUnits = [
|
||||||
|
"dev-mqueue.mount"
|
||||||
|
"sys-kernel-debug.mount"
|
||||||
|
"sys-fs-fuse-connections.mount"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
48
modules/virtualisation/proxmox.nix
Normal file
48
modules/virtualisation/proxmox.nix
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.proxmox;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.proxmox = {
|
||||||
|
enable = lib.mkEnableOption "If this host is running inside Proxmox";
|
||||||
|
|
||||||
|
privileged = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable privileged mounts
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
manageNetwork = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to manage network interfaces through nix options
|
||||||
|
When false, systemd-networkd is enabled to accept network
|
||||||
|
configuration from proxmox.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
manageHostName = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to manage hostname through nix options
|
||||||
|
When false, the hostname is picked up from /etc/hostname
|
||||||
|
populated by proxmox.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
proxmoxLXC = {
|
||||||
|
enable = true;
|
||||||
|
privileged = cfg.privileged;
|
||||||
|
manageNetwork = cfg.manageNetwork;
|
||||||
|
manageHostName = cfg.manageHostName;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue