mirror of
https://github.com/Stunkymonkey/nixos.git
synced 2025-05-24 01:44:40 +02:00
machine/workman: init
This commit is contained in:
parent
c48b59fe72
commit
8c029fad44
14 changed files with 336 additions and 1 deletions
21
flake.lock
generated
21
flake.lock
generated
|
@ -90,6 +90,26 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"framework-plymouth": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744254441,
|
||||||
|
"narHash": "sha256-zpbqouGFxu0fdECX54jHPyjYEX+04kZRWZFZ4IKL58c=",
|
||||||
|
"owner": "j-pap",
|
||||||
|
"repo": "framework-plymouth",
|
||||||
|
"rev": "6aa8efd36bd79660ced9b8a82495afdb0c8c1166",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "j-pap",
|
||||||
|
"repo": "framework-plymouth",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
|
@ -314,6 +334,7 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
|
"framework-plymouth": "framework-plymouth",
|
||||||
"git-hooks": "git-hooks",
|
"git-hooks": "git-hooks",
|
||||||
"nixinate": "nixinate",
|
"nixinate": "nixinate",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
|
|
|
@ -34,6 +34,11 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
framework-plymouth = {
|
||||||
|
url = "github:j-pap/framework-plymouth";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# own flakes
|
# own flakes
|
||||||
stunkymonkey = {
|
stunkymonkey = {
|
||||||
url = "github:Stunkymonkey/stunkymonkey.de";
|
url = "github:Stunkymonkey/stunkymonkey.de";
|
||||||
|
@ -76,7 +81,9 @@
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
# make pkgs available to all `perSystem` functions
|
# make pkgs available to all `perSystem` functions
|
||||||
_module.args.pkgs = import inputs.nixpkgs { inherit system; };
|
_module.args.pkgs = import inputs.nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
|
|
||||||
# enable pre-commit checks
|
# enable pre-commit checks
|
||||||
pre-commit.settings = {
|
pre-commit.settings = {
|
||||||
|
|
|
@ -2,10 +2,16 @@
|
||||||
|
|
||||||
keys:
|
keys:
|
||||||
- &admin_felix age1hf8m9upp00dr7qv2kmqdr50fpvd9ejzkfu8yknqnuda2aas2tvrs4l3u7m
|
- &admin_felix age1hf8m9upp00dr7qv2kmqdr50fpvd9ejzkfu8yknqnuda2aas2tvrs4l3u7m
|
||||||
|
- &workman age1f2e644jteyeppfaatajtvjmsupl0e7nzx97ded6m0cgzw04l84ks5xl9l2
|
||||||
- &thinkman age1spt854cdscqs757a8kazth52rv4p9udh54suw9lpzlqg5savyapq2u0c03
|
- &thinkman age1spt854cdscqs757a8kazth52rv4p9udh54suw9lpzlqg5savyapq2u0c03
|
||||||
- &serverle age14nt7qcsrye0vrpk0xcgcfmhkxwwumna39fpn83g3x0zml62skatqpnmhk4
|
- &serverle age14nt7qcsrye0vrpk0xcgcfmhkxwwumna39fpn83g3x0zml62skatqpnmhk4
|
||||||
- &newton age1s9spl75rwhgm3cvvqsr9rze5m0kuxqes2tsxjmq07xg5ycn5j47s2m0dlu
|
- &newton age1s9spl75rwhgm3cvvqsr9rze5m0kuxqes2tsxjmq07xg5ycn5j47s2m0dlu
|
||||||
creation_rules:
|
creation_rules:
|
||||||
|
- path_regex: workman/secrets.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *admin_felix
|
||||||
|
- *workman
|
||||||
- path_regex: thinkman/secrets.yaml$
|
- path_regex: thinkman/secrets.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
|
|
|
@ -58,6 +58,13 @@ in
|
||||||
./thinkman/configuration.nix
|
./thinkman/configuration.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
workman = nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = defaultModules ++ [
|
||||||
|
nixos-hardware.nixosModules.framework-amd-ai-300-series
|
||||||
|
./workman/configuration.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
newton = nixosSystem {
|
newton = nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = defaultModules ++ [ ./newton/configuration.nix ];
|
modules = defaultModules ++ [ ./newton/configuration.nix ];
|
||||||
|
|
24
machines/workman/boot.nix
Normal file
24
machines/workman/boot.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
timeout = 1;
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 10;
|
||||||
|
consoleMode = "keep";
|
||||||
|
editor = true;
|
||||||
|
};
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
plymouth = {
|
||||||
|
enable = true;
|
||||||
|
theme = "framework";
|
||||||
|
themePackages = [ inputs.framework-plymouth.packages.${config.nixpkgs.system}.default ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
29
machines/workman/configuration.nix
Normal file
29
machines/workman/configuration.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./boot.nix
|
||||||
|
./disko-config.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./network.nix
|
||||||
|
./profiles.nix
|
||||||
|
./remote-build.nix
|
||||||
|
./services.nix
|
||||||
|
./system.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "workman";
|
||||||
|
|
||||||
|
sops = {
|
||||||
|
defaultSopsFile = ./secrets.yaml;
|
||||||
|
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||||
|
gnupg.sshKeyPaths = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# needed for cross-compilation
|
||||||
|
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||||
|
|
||||||
|
system = {
|
||||||
|
stateVersion = "24.11";
|
||||||
|
autoUpgrade.enable = true;
|
||||||
|
};
|
||||||
|
}
|
72
machines/workman/disko-config.nix
Normal file
72
machines/workman/disko-config.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
vdb = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a456de595";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02"; # for grub MBR
|
||||||
|
};
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "defaults" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
luks = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "luks";
|
||||||
|
name = "encrypted";
|
||||||
|
settings.allowDiscards = true;
|
||||||
|
passwordFile = "/tmp/disk.key";
|
||||||
|
content = {
|
||||||
|
type = "lvm_pv";
|
||||||
|
vg = "pool";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lvm_vg = {
|
||||||
|
pool = {
|
||||||
|
type = "lvm_vg";
|
||||||
|
lvs = {
|
||||||
|
root = {
|
||||||
|
size = "100G";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home = {
|
||||||
|
size = "500G";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/home";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
swap = {
|
||||||
|
size = "64G";
|
||||||
|
content = {
|
||||||
|
type = "swap";
|
||||||
|
resumeDevice = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
30
machines/workman/hardware-configuration.nix
Normal file
30
machines/workman/hardware-configuration.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cpuFlavor = "amd";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
|
my.hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
debug.enable = true;
|
||||||
|
drive-monitor.enable = true;
|
||||||
|
firmware = {
|
||||||
|
enable = true;
|
||||||
|
inherit cpuFlavor;
|
||||||
|
};
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
inherit cpuFlavor;
|
||||||
|
};
|
||||||
|
id-card.enable = true;
|
||||||
|
keychron.enable = true;
|
||||||
|
monitor.enable = true;
|
||||||
|
sound.enable = true;
|
||||||
|
thunderbolt.enable = true;
|
||||||
|
yubikey.enable = true;
|
||||||
|
};
|
||||||
|
}
|
20
machines/workman/network.nix
Normal file
20
machines/workman/network.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# network settings
|
||||||
|
_: {
|
||||||
|
# hotfixes for dns settings
|
||||||
|
networking.extraHosts =
|
||||||
|
let
|
||||||
|
serverle_ip = "192.168.178.60";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
${serverle_ip} stunkymonkey.de
|
||||||
|
${serverle_ip} automation.stunkymonkey.de
|
||||||
|
${serverle_ip} download.stunkymonkey.de
|
||||||
|
${serverle_ip} esphome.stunkymonkey.de
|
||||||
|
${serverle_ip} indexer.stunkymonkey.de
|
||||||
|
${serverle_ip} media.stunkymonkey.de
|
||||||
|
${serverle_ip} movies.stunkymonkey.de
|
||||||
|
${serverle_ip} series.stunkymonkey.de
|
||||||
|
${serverle_ip} subtitles.stunkymonkey.de
|
||||||
|
${serverle_ip} view.stunkymonkey.de
|
||||||
|
'';
|
||||||
|
}
|
24
machines/workman/profiles.nix
Normal file
24
machines/workman/profiles.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# enabled profiles
|
||||||
|
_: {
|
||||||
|
my.profiles = {
|
||||||
|
"3d-design".enable = true;
|
||||||
|
android.enable = true;
|
||||||
|
clean.enable = true;
|
||||||
|
desktop-apps.enable = true;
|
||||||
|
desktop-dev.enable = true;
|
||||||
|
development.enable = true;
|
||||||
|
filesystem.enable = true;
|
||||||
|
gaming.enable = true;
|
||||||
|
latex.enable = true;
|
||||||
|
media.enable = true;
|
||||||
|
meeting.enable = true;
|
||||||
|
nautilus.enable = true;
|
||||||
|
powersave.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
sway.enable = true;
|
||||||
|
sync.enable = true;
|
||||||
|
update.enable = true;
|
||||||
|
usb-iso.enable = true;
|
||||||
|
webcam.enable = true;
|
||||||
|
};
|
||||||
|
}
|
24
machines/workman/remote-build.nix
Normal file
24
machines/workman/remote-build.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# enabled remote-build service
|
||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.sops) secrets;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
sops.secrets."nixremote/ssh_key" = { };
|
||||||
|
nix.buildMachines = [
|
||||||
|
{
|
||||||
|
hostName = "buehler.rocks";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
supportedFeatures = [
|
||||||
|
"benchmark"
|
||||||
|
"kvm"
|
||||||
|
"big-parallel"
|
||||||
|
];
|
||||||
|
sshUser = "nixremote";
|
||||||
|
sshKey = secrets."nixremote/ssh_key".path;
|
||||||
|
maxJobs = 4;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.distributedBuilds = true;
|
||||||
|
}
|
37
machines/workman/secrets.yaml
Normal file
37
machines/workman/secrets.yaml
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
users:
|
||||||
|
felix:
|
||||||
|
password: ENC[AES256_GCM,data:3r1f8iUSgT3mDflSkvl3cyfciBZI5rDa9jMZcfW/mniNt9PJTNaaNbBC/cIxgbwcD991Y/Y0NKB0vxOmKMCIcclvGRUwLdKwFQ==,iv:Chya0lUhNtYcOp3GyNl+I1VyNV3KvSOZxeWUgz3SBnA=,tag:OhdIXdwbQAV0eZZS/kpW1Q==,type:str]
|
||||||
|
borgbackup:
|
||||||
|
password: ENC[AES256_GCM,data:BodZSJGi/pYZYIG5NYEeNrTVdYdzlgA2lZCNcIL+kT4=,iv:Vmbzq8MxyboeLmM3MyTGVr6+S/JrwbFDaP8PWh+s8aY=,tag:atj9ap7X6drdGMnnCbEZPg==,type:str]
|
||||||
|
ssh_key: ENC[AES256_GCM,data:LhGZ2VzOWwcjO0gd1ia7Nb6Roy9+kZwYW2ucjWqpeq6e1xl6JXFRkJJ/bLIA++yUVZarLSabhDn0DDHVfGyO5fOdSuuduu0lCl+ffxz3zX7RjibInwstwnvqJo2ZrBbI+9QPBxI4IRo4uEllljN5N4Fvq3Pq6tMLX2ZpkqIEWayDa28gxM3Ib/at9DGSiEsyhJm2b6HTMUi/lXX9vIxPPOgaqmuWgpp7Tzkd8Ph08zvnloWvlRZaYxl/n7+VxEohqZY88RfFSNT/N5TtgnFFTTRX+9B0vCRqyJq9XQ3cf0fG0NJzb0kcO25k45kAGU7QOJ8V7YPgPPwPPWU7IAluhFi9x78QLsuAioXnl79aZli11NE7Gyn2n4FkkhVX1W078tbvLiNURSfVro7crcf6WCX1PBvbuDFdKg8I2r58aZ5vglD5QD0gBbhL0js13z80DRCdNCtyNQZfgMXvAIEq3Lw3UvTUspInMJos7Kgs0hCK/SoP87SymYEkGORpZzoGg/zlHf0kExOj3Fni+LK24sArc/CIeCBBc/BJ,iv:jDAB5ExuplfUtJqgub4oV/wbytpnjK3MjJko/rsJ0fM=,tag:s2aODtXR9Qu29tKjZvfyKA==,type:str]
|
||||||
|
nixremote:
|
||||||
|
ssh_key: ENC[AES256_GCM,data:vO3U1dW3VhHSNDDFlt6Slqf2+sf0xeZ/3ztyqGIkUKwU87flHP0cVVyPF71UCSowhFu7SSK/DEkzTdNjoCnx21HDQ5zc+JZFJjKIE7HotcJwWR6/a9hFZniY4FVLAnW+locWjbcOB+Mou/VHm1uo+a8wmNOJTw7FS3ZM6FfANLDZcjxcjJKu23UcUyXDxuMySkRKmLneyfwlk5aP1toyjBwnS9og1UPjSTy6ldM6gsfUv1mZ+BbCWgtiwxcGEy859ROOMuqKxUKGDbgHnby/aqs7dP8xzoVoZQXjHYoWLp1/7IforoyXb8GiUkOWRlCC/dJm6Kx9Y67M13LwKEpX2+WOfNCHqTjYO4234zfOZ1DRJtwCAMKH7y0sjAYp9bK6iHv3qKIjreDSA8S6xbQP5LnXvp55460Puq+Xe2HdnugRfd3d6pKMrHmnRE8mmstG6jDxdGqtoGo2VBvDGAC080J6BXxP0/xpeXwc99TSDdHEymqodZoz3jQuGMb+brxSyDgaw6FEDPNkpxdUFl0/vShTfROqgT0NVbH3,iv:SXIDRjHBQBcstSz1Pgv5jI8+XHbJA/QrqF9EOkIcvqE=,tag:ZakbophvoJmWlVX88hMA7A==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1hf8m9upp00dr7qv2kmqdr50fpvd9ejzkfu8yknqnuda2aas2tvrs4l3u7m
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuMHpBZmU4ZVo5UitOQ1la
|
||||||
|
UUNZNEU5OVFqM2hsY2g0YzRkemRvbUdyYVVjCjhFbDR2cUxTYUU2dU1Oekc4VEZ5
|
||||||
|
K2JEd1JZMkFhUXhFaTVnTytFeFU4TmcKLS0tIG5zTGZ4OG9GN2tNVE5zUG95dXFk
|
||||||
|
cG01NlA0YlpzcENqWjJMUkQwZXJMcUEKv94rjj5iHY1HAZQiE5yleC4f0WABcXbm
|
||||||
|
Wf4xYYCCWUmcTKXabIyPWn9eCNYCQgy29YTcTKu4/8BvebrGkRHuHw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1spt854cdscqs757a8kazth52rv4p9udh54suw9lpzlqg5savyapq2u0c03
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLSUlHb04rMGR5YWFhUUZq
|
||||||
|
QXVHYnZQUUdQc0FzbTgyalBPZktBdDVvZ2lRClpzcDltOFA0eFlqTGRUNFptcW1C
|
||||||
|
WGZyamIyNEFTQXQ4R2pmdU9FS3lma0kKLS0tIFphS0ZhbmxDb3A5MnVvaVJGT1Iw
|
||||||
|
bzY2ZTY1QUtSRjlOZ1E0Vkw5Q1cxYmMKqwvWUv2XpRIenGwCpZuwKQc0ZsiX2AAx
|
||||||
|
pmIh4f10G7wr1rLeodRi2KxYIrrudPbxEWIuzmBRyHc7+3EPpzLetw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-05-05T21:53:42Z"
|
||||||
|
mac: ENC[AES256_GCM,data:700AWjj0wgdSdyXPAKkdttqeThxtz5Ui7K53wRt0VY657fsRJiezqCp/1JVgLfFCKstfbIE1GbTtAetDJ2cRdthpsgMDCG6EQVap7Kt8YCnqDPcPl7ND5yKR6nOjzmd+p2drIp4SHIDSzM9IJvd1XNvpWsgakPs3YgQjFoRElnY=,iv:l/M8pShzBzd/XyHUXE9HWM1a/At9biYJTj2cZ4xbxkQ=,tag:FtELUjvGO6BImmV8D/FmfA==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.9.4
|
21
machines/workman/services.nix
Normal file
21
machines/workman/services.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Deployed services
|
||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
inherit (config.sops) secrets;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
sops.secrets."borgbackup/password" = { };
|
||||||
|
sops.secrets."borgbackup/ssh_key" = { };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
my.services = {
|
||||||
|
backup = {
|
||||||
|
enable = true;
|
||||||
|
OnFailureNotification = true;
|
||||||
|
passwordFile = secrets."borgbackup/password".path;
|
||||||
|
sshKeyFile = secrets."borgbackup/ssh_key".path;
|
||||||
|
paths = [ "/" ];
|
||||||
|
};
|
||||||
|
vpn.enable = true;
|
||||||
|
};
|
||||||
|
}
|
13
machines/workman/system.nix
Normal file
13
machines/workman/system.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# enabled system services
|
||||||
|
_: {
|
||||||
|
my.system = {
|
||||||
|
avahi.enable = true;
|
||||||
|
fonts.enable = true;
|
||||||
|
kvm = {
|
||||||
|
enable = true;
|
||||||
|
cpuFlavor = "amd";
|
||||||
|
};
|
||||||
|
podman.enable = true;
|
||||||
|
spell-check.enable = true;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue