microvm initial try definition
microvm first running version microvm first running version
This commit is contained in:
parent
1186bdfc33
commit
c4dc2c17d5
@ -14,6 +14,8 @@
|
|||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Nix Packages
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Nix Packages
|
||||||
nixpkgs-stable.url = "github:NixOS/nIxpkgs/nixos-23.05";
|
nixpkgs-stable.url = "github:NixOS/nIxpkgs/nixos-23.05";
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
microvm.url = "github:astro/microvm.nix";
|
||||||
|
microvm.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
home-manager = { # User Package Management
|
home-manager = { # User Package Management
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
@ -35,7 +37,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ { self, nixpkgs, nixpkgs-stable, nixos-hardware, home-manager, nur, agenix, jovian-nixos, ... }: # Function that tells my flake which to use and what do what to do with the dependencies.
|
outputs = inputs @ { self, nixpkgs, nixpkgs-stable, nixos-hardware, home-manager, nur, agenix, jovian-nixos, microvm, ... }: # Function that tells my flake which to use and what do what to do with the dependencies.
|
||||||
let # Variables that can be used in the config files
|
let # Variables that can be used in the config files
|
||||||
user = "kabbone";
|
user = "kabbone";
|
||||||
location = "$HOME/.setup";
|
location = "$HOME/.setup";
|
||||||
@ -44,7 +46,7 @@
|
|||||||
nixosConfigurations = ( # NixOS configurations
|
nixosConfigurations = ( # NixOS configurations
|
||||||
import ./hosts { # Imports ./hosts/default.nix
|
import ./hosts { # Imports ./hosts/default.nix
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
inherit inputs nixpkgs nixpkgs-stable nixos-hardware home-manager nur user location agenix jovian-nixos; # Also inherit home-manager so it does not need to be defined here.
|
inherit inputs nixpkgs nixpkgs-stable nixos-hardware home-manager nur user location agenix jovian-nixos microvm; # Also inherit home-manager so it does not need to be defined here.
|
||||||
nix.allowedUsers = [ "@wheel" ];
|
nix.allowedUsers = [ "@wheel" ];
|
||||||
security.sudo.execWheelOnly = true;
|
security.sudo.execWheelOnly = true;
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
# └─ ./home.nix
|
# └─ ./home.nix
|
||||||
#
|
#
|
||||||
|
|
||||||
{ lib, inputs, nixpkgs, nixos-hardware, home-manager, nur, user, location, agenix, jovian-nixos, ... }:
|
{ lib, inputs, nixpkgs, nixos-hardware, home-manager, nur, user, location, agenix, jovian-nixos, microvm, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
system = "x86_64-linux"; # System architecture
|
system = "x86_64-linux"; # System architecture
|
||||||
@ -28,10 +28,11 @@ in
|
|||||||
{
|
{
|
||||||
desktop = lib.nixosSystem { # Desktop profile
|
desktop = lib.nixosSystem { # Desktop profile
|
||||||
inherit system;
|
inherit system;
|
||||||
specialArgs = { inherit inputs user location nixos-hardware nur agenix; };
|
specialArgs = { inherit inputs user location nixos-hardware nur agenix microvm nixpkgs; };
|
||||||
modules = [
|
modules = [
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
nur.nixosModules.nur
|
nur.nixosModules.nur
|
||||||
|
microvm.nixosModules.host
|
||||||
./desktop
|
./desktop
|
||||||
./configuration_desktop.nix
|
./configuration_desktop.nix
|
||||||
../modules/hardware/remoteBuilder.nix
|
../modules/hardware/remoteBuilder.nix
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# └─ default.nix
|
# └─ default.nix
|
||||||
#
|
#
|
||||||
|
|
||||||
{ config, pkgs, user, ... }:
|
{ config, nixpkgs, pkgs, user, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = # For now, if applying to other system, swap files
|
imports = # For now, if applying to other system, swap files
|
||||||
@ -25,6 +25,7 @@
|
|||||||
#[(import ../../modules/desktop/hyprland/default.nix)] ++ # Window Manager
|
#[(import ../../modules/desktop/hyprland/default.nix)] ++ # Window Manager
|
||||||
[(import ../../modules/desktop/sway/default.nix)] ++ # Window Manager
|
[(import ../../modules/desktop/sway/default.nix)] ++ # Window Manager
|
||||||
(import ../../modules/desktop/virtualisation) ++ # Docker
|
(import ../../modules/desktop/virtualisation) ++ # Docker
|
||||||
|
[(import ./microvm.nix)] ++
|
||||||
(import ../../modules/hardware); # Hardware devices
|
(import ../../modules/hardware); # Hardware devices
|
||||||
|
|
||||||
boot = { # Boot options
|
boot = { # Boot options
|
||||||
|
72
hosts/desktop/microvm.nix
Normal file
72
hosts/desktop/microvm.nix
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{ microvm, nixpkgs, ... }:
|
||||||
|
let
|
||||||
|
name = "gitea";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
microvm = {
|
||||||
|
# autostart = [
|
||||||
|
# "gitea-runnervm"
|
||||||
|
# ];
|
||||||
|
vms = {
|
||||||
|
${name} = {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
networking = {
|
||||||
|
hostName = "${name}-runner";
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
#allowedUDPPorts = [ 53 67 ];
|
||||||
|
#allowedTCPPorts = [ 53 80 443 9443 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users.users."kabbone" = { # System User
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
uid = 2000;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIANmaraVJ/o20c4dqVnGLp/wGck9QNHFPvO9jcEbKS29AAAABHNzaDo= kabbone@kabc"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIgo4IP8ISUohyAMiDc3zEe6ESUE3un7eN5FhVtxZHmcAAAABHNzaDo= kabbone@kabc"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKVDApb3vZ+i97V4xLJh8rUF6z5OVYfORlXYbLhdQO15AAAABHNzaDo= kabbone@hades.home.opel-online.de"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIB0q++epdX7feQxvmC2m/CJEoJbkqtAJy6Ml6WKHxryZAAAABHNzaDo= kabbone@hades.home.opel-online.de"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
microvm = {
|
||||||
|
hypervisor = "cloud-hypervisor";
|
||||||
|
vcpu = 4;
|
||||||
|
mem = 4096;
|
||||||
|
interfaces = [
|
||||||
|
{
|
||||||
|
type = "macvtap";
|
||||||
|
id = "${name}-tap";
|
||||||
|
mac = "02:00:00:00:00:01";
|
||||||
|
macvtap = {
|
||||||
|
link = "enp34s0";
|
||||||
|
mode = "bridge";
|
||||||
|
};
|
||||||
|
} ];
|
||||||
|
shares = [{
|
||||||
|
source = "/nix/store";
|
||||||
|
mountPoint = "/nix/.ro-store";
|
||||||
|
tag = "ro-store";
|
||||||
|
proto = "virtiofs";
|
||||||
|
}];
|
||||||
|
#writableStoreOverlay = "/nix/.rw-store";
|
||||||
|
#storeOnDisk = true;
|
||||||
|
};
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user