options
This commit is contained in:
parent
ea854d5559
commit
7575254865
|
@ -2,9 +2,15 @@
|
|||
networking.hostName = "desktop";
|
||||
|
||||
openrgb.enable = true;
|
||||
games.enable = true;
|
||||
lact.enable = true;
|
||||
emulator.enable = true;
|
||||
steam.enable = true;
|
||||
norisk.enable = true;
|
||||
amd-gpu.enable = true;
|
||||
gnome.enable = true;
|
||||
bluetooth.enable = true;
|
||||
systemd-boot.enable = true;
|
||||
qemu.enable = true;
|
||||
sync-client.enable = true;
|
||||
|
||||
imports = [
|
||||
./hardware.nix
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
{username, ...}: {
|
||||
networking.hostName = "laptop";
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
|
||||
led.enable = true;
|
||||
gnome.enable = true;
|
||||
virtual-box.enalbe = true;
|
||||
bluetooth.enable = true;
|
||||
systemd-boot.enable = true;
|
||||
qemu.enable = true;
|
||||
sync-client.enable = true;
|
||||
home-manager.users.${username} = {
|
||||
hypridle.enable = true;
|
||||
};
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
{
|
||||
networking.hostName = "server";
|
||||
|
||||
services.logind.lidSwitch = "ignore";
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
sync-server.enable = true;
|
||||
nginx.enable = true;
|
||||
forgejo.enable = true;
|
||||
immich.enable = true;
|
||||
docker.enable = true;
|
||||
|
||||
imports = [
|
||||
./hardware.nix
|
||||
|
@ -10,9 +16,5 @@
|
|||
../../modules/system
|
||||
../../modules/secrets
|
||||
../../modules/services
|
||||
../../modules/services/nginx
|
||||
../../modules/services/forgejo
|
||||
../../modules/services/syncthing
|
||||
../../modules/services/immich
|
||||
];
|
||||
}
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
};
|
||||
};
|
||||
in {
|
||||
config = lib.mkIf config.games.enable {
|
||||
options = {
|
||||
emulator.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.emulator.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
cemu
|
||||
customPkgs.suyu
|
||||
|
|
|
@ -21,7 +21,10 @@
|
|||
iconurl = "https://raw.githubusercontent.com/NoRiskClient/noriskclient-launcher/refs/heads/main/src/images/norisk_logo.png";
|
||||
iconsha256 = "sha256-VwWwShUrT055mcabS8QTqqb8INgRB/08U2qEEIVYHlg=";
|
||||
in {
|
||||
config = lib.mkIf config.games.enable {
|
||||
options = {
|
||||
norisk.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.norisk.enable {
|
||||
environment.systemPackages = [
|
||||
customPkgs.no-risk-client
|
||||
];
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
...
|
||||
}: {
|
||||
options = {
|
||||
games.enable = lib.mkEnableOption "";
|
||||
steam.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.games.enable {
|
||||
config = lib.mkIf config.steam.enable {
|
||||
programs.steam.enable = true;
|
||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
...
|
||||
}: {
|
||||
options = {
|
||||
lact.enable = lib.mkEnableOption "";
|
||||
amd-gpu.enable = lib.mkEnableOption "";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.lact.enable {
|
||||
config = lib.mkIf config.amd-gpu.enable {
|
||||
environment.systemPackages = with pkgs; [lact];
|
||||
systemd.packages = with pkgs; [lact];
|
||||
systemd.services.lactd.wantedBy = ["multi-user.target"];
|
|
@ -1,4 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
bluetooth.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.bluetooth.enable {
|
||||
services.blueman.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
}
|
|
@ -3,9 +3,9 @@
|
|||
./powerkey
|
||||
./bluetooth
|
||||
./openrgb
|
||||
./sound
|
||||
./lact
|
||||
./boot
|
||||
./pipewire
|
||||
./amd-gpu
|
||||
./systemd-boot
|
||||
./led
|
||||
];
|
||||
}
|
||||
|
|
12
modules/hardware/systemd-boot/default.nix
Normal file
12
modules/hardware/systemd-boot/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
systemd-boot.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.systemd-boot.enable {
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
};
|
||||
}
|
|
@ -1,8 +1,12 @@
|
|||
{
|
||||
imports = [
|
||||
./vm
|
||||
./virt
|
||||
./syncthing
|
||||
./docker
|
||||
./ssh
|
||||
./misc
|
||||
./nginx
|
||||
./forgejo
|
||||
./immich
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
{username, ...}: {
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
username,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
docker.enable = lib.mkEnableOption "";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.docker.enable {
|
||||
virtualisation.docker.rootless.enable = true;
|
||||
virtualisation.docker.enable = true;
|
||||
users.users.${username}.extraGroups = ["docker"];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
{
|
||||
config,
|
||||
domain,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
cfg = config.services.forgejo;
|
||||
srv = cfg.settings.server;
|
||||
in {
|
||||
options = {
|
||||
forgejo.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.forgejo.enable {
|
||||
services.nginx = {
|
||||
virtualHosts.${cfg.settings.server.DOMAIN} = {
|
||||
forceSSL = true;
|
||||
|
@ -29,4 +34,5 @@ in {
|
|||
service.DISABLE_REGISTRATION = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,13 @@
|
|||
{domain, ...}: {
|
||||
{
|
||||
domain,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
immich.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.immich.enable {
|
||||
services.nginx = {
|
||||
virtualHosts."immich.${domain}" = {
|
||||
forceSSL = true;
|
||||
|
@ -14,4 +23,5 @@
|
|||
environment.IMMICH_MACHINE_LEARNING_URL = "http://localhost:3003";
|
||||
};
|
||||
users.users.immich.extraGroups = ["video" "render"];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
{domain, ...}: {
|
||||
services.invidious = {
|
||||
enable = true;
|
||||
settings = {
|
||||
db = {
|
||||
user = "invidious";
|
||||
dbname = "invidious";
|
||||
};
|
||||
};
|
||||
};
|
||||
services.invidious.domain = "yt.${domain}";
|
||||
services.invidious.nginx.enable = true;
|
||||
}
|
|
@ -1,8 +1,14 @@
|
|||
{
|
||||
domain,
|
||||
mail,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
nginx.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.nginx.enable {
|
||||
services.nginx = {
|
||||
virtualHosts."xn--xck.xyz" = {
|
||||
forceSSL = true;
|
||||
|
@ -47,4 +53,5 @@
|
|||
};
|
||||
security.acme.defaults.email = "${mail}";
|
||||
security.acme.acceptTerms = true;
|
||||
};
|
||||
}
|
||||
|
|
20
modules/services/syncthing/client/default.nix
Normal file
20
modules/services/syncthing/client/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
username,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
sync-client.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.sync-client.enable {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
dataDir = "/home/${username}";
|
||||
openDefaultPorts = true;
|
||||
configDir = "/home/${username}/.config/syncthing";
|
||||
user = username;
|
||||
group = "users";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,31 +1,6 @@
|
|||
{
|
||||
username,
|
||||
domain,
|
||||
...
|
||||
}: {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
dataDir = "/home/${username}";
|
||||
openDefaultPorts = true;
|
||||
configDir = "/home/${username}/.config/syncthing";
|
||||
user = username;
|
||||
group = "users";
|
||||
guiAddress = "0.0.0.0:8384";
|
||||
};
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
virtualHosts."sync.${domain}" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://127.0.0.1:8384";
|
||||
proxyWebsockets = true;
|
||||
extraConfig =
|
||||
"proxy_ssl_server_name on;"
|
||||
+ "proxy_pass_header Authorization;";
|
||||
};
|
||||
};
|
||||
};
|
||||
imports = [
|
||||
./server
|
||||
./client
|
||||
];
|
||||
}
|
||||
|
|
38
modules/services/syncthing/server/default.nix
Normal file
38
modules/services/syncthing/server/default.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
username,
|
||||
domain,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
sync-server.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.sync-server.enable {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
dataDir = "/home/${username}";
|
||||
openDefaultPorts = true;
|
||||
configDir = "/home/${username}/.config/syncthing";
|
||||
user = username;
|
||||
group = "users";
|
||||
guiAddress = "0.0.0.0:8384";
|
||||
};
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
virtualHosts."sync.${domain}" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://127.0.0.1:8384";
|
||||
proxyWebsockets = true;
|
||||
extraConfig =
|
||||
"proxy_ssl_server_name on;"
|
||||
+ "proxy_pass_header Authorization;";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
6
modules/services/virt/default.nix
Normal file
6
modules/services/virt/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./qemu
|
||||
./virtual-box
|
||||
];
|
||||
}
|
41
modules/services/virt/qemu/default.nix
Normal file
41
modules/services/virt/qemu/default.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
pkgs,
|
||||
username,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
qemu.enable = lib.mkEnableOption "";
|
||||
};
|
||||
config = lib.mkIf config.qemu.enable {
|
||||
programs.dconf.enable = true;
|
||||
|
||||
users.users.${username}.extraGroups = ["libvirtd"];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
virt-manager
|
||||
virt-viewer
|
||||
spice
|
||||
spice-gtk
|
||||
spice-protocol
|
||||
win-virtio
|
||||
win-spice
|
||||
virtiofsd
|
||||
freerdp
|
||||
];
|
||||
|
||||
virtualisation = {
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
swtpm.enable = true;
|
||||
ovmf.enable = true;
|
||||
ovmf.packages = [pkgs.OVMFFull.fd];
|
||||
};
|
||||
};
|
||||
spiceUSBRedirection.enable = true;
|
||||
};
|
||||
services.spice-vdagentd.enable = true;
|
||||
};
|
||||
}
|
13
modules/services/virt/virtual-box/default.nix
Normal file
13
modules/services/virt/virtual-box/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
options = {
|
||||
virtual-box.enable = lib.mkEnableOption "";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.virtual-box.enable {
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
};
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}: {
|
||||
programs.dconf.enable = true;
|
||||
|
||||
users.users.${username}.extraGroups = ["libvirtd"];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
virt-manager
|
||||
virt-viewer
|
||||
spice
|
||||
spice-gtk
|
||||
spice-protocol
|
||||
win-virtio
|
||||
win-spice
|
||||
virtiofsd
|
||||
freerdp
|
||||
];
|
||||
|
||||
virtualisation = {
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
swtpm.enable = true;
|
||||
ovmf.enable = true;
|
||||
ovmf.packages = [pkgs.OVMFFull.fd];
|
||||
};
|
||||
};
|
||||
spiceUSBRedirection.enable = true;
|
||||
};
|
||||
services.spice-vdagentd.enable = true;
|
||||
}
|
|
@ -9,7 +9,6 @@
|
|||
./gnome
|
||||
./hyprland
|
||||
./polkit
|
||||
./syncthing
|
||||
];
|
||||
home-manager = {
|
||||
extraSpecialArgs = {
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
{username, ...}: {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
dataDir = "/home/${username}";
|
||||
openDefaultPorts = true;
|
||||
configDir = "/home/${username}/.config/syncthing";
|
||||
user = username;
|
||||
group = "users";
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue