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
|
||||
./btrfs-autoscrub.nix
|
||||
./commons.nix
|
||||
./main-user.nix
|
||||
./audio.nix
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
imports = [
|
||||
./download-pod.nix
|
||||
./download-pod-old.nix
|
||||
./nextcloud-podman.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
./docker.nix
|
||||
./libvirtd.nix
|
||||
./lxc.nix
|
||||
./lxc-guest.nix
|
||||
./podman.nix
|
||||
./oci-containers
|
||||
./proxmox.nix
|
||||
# ./oci-containers
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ in
|
|||
config = lib.mkIf cfg.enable {
|
||||
virtualisation = {
|
||||
docker = {
|
||||
storageDriver = "btrfs";
|
||||
storageDriver = "overlay2";
|
||||
rootless = {
|
||||
enable = 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