diff options
| author | adikro <adikro@disroot.org> | 2026-05-10 23:02:01 +0200 |
|---|---|---|
| committer | adikro <adikro@disroot.org> | 2026-05-10 23:02:01 +0200 |
| commit | 7c8503e8fa77cb20819e2ba5a6a0f1a261cf089f (patch) | |
| tree | 212001f743fba7224ac57007e1a499c7615c0b19 | |
| parent | baf1cf5664b481de17849c97dc683fa81ade1c2e (diff) | |
added basic configuration for nginx, oci-containers and simplex-chat servers
| -rw-r--r-- | flake.lock | 66 | ||||
| -rw-r--r-- | flake.nix | 2 | ||||
| -rw-r--r-- | hosts/desktop/configuration.nix | 25 | ||||
| -rw-r--r-- | os/srv/default.nix | 7 | ||||
| -rw-r--r-- | os/srv/gaming.nix | 18 | ||||
| -rw-r--r-- | os/srv/nginx.nix | 36 | ||||
| -rw-r--r-- | os/srv/oci.nix | 31 | ||||
| -rw-r--r-- | os/srv/ollama.nix | 27 | ||||
| -rw-r--r-- | os/srv/simplex.nix | 105 | ||||
| -rw-r--r-- | os/srv/sops.nix | 2 | ||||
| -rw-r--r-- | os/srv/syncthing.nix | 37 | ||||
| -rw-r--r-- | secrets.yaml | 6 |
12 files changed, 266 insertions, 96 deletions
@@ -383,11 +383,11 @@ ] }, "locked": { - "lastModified": 1778248595, - "narHash": "sha256-dhFgEjoeJMYN/7OY6xfxS799YB4IjbbYXTjyGIJyLpc=", + "lastModified": 1778444552, + "narHash": "sha256-f18pIiR9q/p1vHY93gmAum7aHhQOG49oGvAB9+lptRo=", "owner": "nix-community", "repo": "home-manager", - "rev": "fdb2ccba9d5e1238d32e0c4a3ec1a277efa80c1d", + "rev": "dcebe66f958673729896eec2de4abfd86ef22d21", "type": "github" }, "original": { @@ -511,11 +511,11 @@ "spectrum": "spectrum" }, "locked": { - "lastModified": 1778200184, - "narHash": "sha256-WL0cPwbYms7fUVTWnnayo4DhXeNPOfL1a8RDPBuAzBc=", + "lastModified": 1778369133, + "narHash": "sha256-zfYJAAVau1dDlVo8PfA0oQFVwvRjpp8Zz+T61+ywogI=", "owner": "microvm-nix", "repo": "microvm.nix", - "rev": "b00d7c12745b15442c618c7e23f2d7442d7a51da", + "rev": "9ddb425679d44e6e1e5cd5df9db0c42ed99df4a4", "type": "github" }, "original": { @@ -712,11 +712,11 @@ ] }, "locked": { - "lastModified": 1778285091, - "narHash": "sha256-4YwkGkjvLD0EB7rQGCRA9J/zgwrnTL20dJd7Wmnicj0=", + "lastModified": 1778371477, + "narHash": "sha256-sVlZeFIds47ABfBbAmBLexCFnkE1GIBTNGjAMRh+BfA=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "cca2a2d1c03f763fdcd7066791363d792313c641", + "rev": "b9ee678fadf59b3c998e180d62f4cee0641d21d9", "type": "github" }, "original": { @@ -728,11 +728,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1778266020, - "narHash": "sha256-qoydKalrn/QGsGYVRicz0Hzb7bfGmV7Z9CnVONXN/Lc=", + "lastModified": 1778321961, + "narHash": "sha256-lrPZ0C+uixk+6jx+maWM998GZaj4lAuicAz/dZHFNBk=", "owner": "neovim", "repo": "neovim", - "rev": "b7d8a41d91dcfebe9a5f3d0cf2f0bb0b8d59e32e", + "rev": "b44c2bdd16226f6caa5324d91f1ae9781ffdc12b", "type": "github" }, "original": { @@ -753,11 +753,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1778224717, - "narHash": "sha256-lzpzFAinsI1YriR+iVDIDZVkps2oQw1LG2QvFcDVYCk=", + "lastModified": 1778392415, + "narHash": "sha256-UbEC8dOIWwCG4mww7SGhYMgM1yi8ewgKLi8O3uhX33M=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "cb2fdda815a0c2c03f8a7fe7075c433d4ef37110", + "rev": "670859bacca122ec1158c882b4cf2828930b3669", "type": "github" }, "original": { @@ -786,11 +786,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1778221858, - "narHash": "sha256-+nZlx8MKCs973N9Bm0hNzFHjY+2lmBrBOQeTALeCRhI=", + "lastModified": 1778389445, + "narHash": "sha256-9NyDMVf8ydUZGTzcPcLMQf0o1B3bte/00UGbuXHNWh8=", "owner": "YaLTeR", "repo": "niri", - "rev": "0200670d9ee8cfbdb154e3e14d92b5ff61aedd59", + "rev": "38191826cb1e5fb9051a7e141fefe4941a2b4bed", "type": "github" }, "original": { @@ -965,11 +965,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1778049651, - "narHash": "sha256-EC5pBiLcP/EVmYWldJRNfkChCqF9rkeTnTs8t9Cs+ZY=", + "lastModified": 1778408907, + "narHash": "sha256-QXjdRz5fssxAWDrtfBYxvjMtTqJzQAbnAmX3u22xCck=", "owner": "NotAShelf", "repo": "nvf", - "rev": "88dbbad1f44efe3d2c18903e2c7542452f7bdfd6", + "rev": "e86a92e4b29b499e5f1285b737b7612115103da9", "type": "github" }, "original": { @@ -1011,17 +1011,17 @@ "snowfall-lib": "snowfall-lib" }, "locked": { - "lastModified": 1772077063, - "narHash": "sha256-HGXXCld+zf9UFUVA6or/XI0yLyOCgLk3ce0QcNO2TsM=", + "lastModified": 1778367333, + "narHash": "sha256-67oFYjFyqh+PELrxtSQL2eTVfyBp/NIDNTD5Wt4IHmg=", "ref": "refs/heads/main", - "rev": "99469e2c34f528043d7f6e7d58785e2a5ab0f830", - "revCount": 160, + "rev": "02e2fee4d6c4b3c8dd2f9f0978c777ac1841a3d4", + "revCount": 161, "type": "git", - "url": "https://codeberg.org/PopeRigby/openmw-nix.git" + "url": "https://codeberg.org/adikro/openmw-nix.git" }, "original": { "type": "git", - "url": "https://codeberg.org/PopeRigby/openmw-nix.git" + "url": "https://codeberg.org/adikro/openmw-nix.git" } }, "otter-launcher": { @@ -1249,11 +1249,11 @@ "systems": "systems_6" }, "locked": { - "lastModified": 1777789800, - "narHash": "sha256-XHCvLGu/bEEZRzXVKFu1i+2YB102Nr00n8e7xrzsfVs=", + "lastModified": 1778395012, + "narHash": "sha256-A/VRiNFQIwGp8cOC/8yNCRexFHjtFCzBwhajrkyGojo=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "d0e921cc48aab6137d203a3eab19601dc2bdc0c3", + "rev": "3b4991bfc064c3361957f23141351ae2d9833234", "type": "github" }, "original": { @@ -1447,11 +1447,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1778289967, - "narHash": "sha256-dOjtSPuMpCDUcVS6rHWcKdCc2Qn0aB+1g9rdmcJfRX4=", + "lastModified": 1778345877, + "narHash": "sha256-wunFw3vId/JP0bkdF7F7i2xuJwSH/wBLOx6rNvHXI/0=", "owner": "sxyazi", "repo": "yazi", - "rev": "92b9ea37945ed128a79ea96d58e182d9d09b7fd1", + "rev": "247f925e532236aa4e0dc6ac1a3e0a0263083ce6", "type": "github" }, "original": { @@ -14,7 +14,7 @@ }; openmw-nix = { - url = "git+https://codeberg.org/PopeRigby/openmw-nix.git"; + url = "git+https://codeberg.org/adikro/openmw-nix.git"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index b334630..2458dec 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -2,6 +2,7 @@ config, username, pkgs-stable, + pkgs, ... }: { @@ -27,6 +28,7 @@ }; drivers = { enable = true; + kernel = "zen"; cpu = "amd"; graphics = { enable = true; @@ -83,7 +85,6 @@ virtualization.kvm.enable = true; kdeconnect.enable = true; nix-helper.enable = true; - ollama.enable = true; monero.enable = true; sops.enable = true; syncthing.enable = true; @@ -96,18 +97,9 @@ }; }; - services.xserver.desktopManager.xfce = { - enable = true; - enableWaylandSession = true; - waylandSessionCompositor = "labwc"; - enableScreensaver = false; - }; - - programs = { - xfconf.enable = true; - thunar.enable = true; - }; - + environment.systemPackages = with pkgs; [ + openmw + ]; boot = { kernelModules = [ "nct6687" @@ -119,6 +111,12 @@ ]; }; + boot.kernelParams = [ + "split_lock_detect=off" + "amdgpu.ppfeaturemask=0xffffffff" + "preempt=full" + ]; + services.netbox = { enable = true; package = pkgs-stable.netbox; @@ -134,7 +132,6 @@ }; }; - networking.firewall.allowedTCPPorts = [ 80 ]; services.nginx = { enable = true; user = "netbox"; diff --git a/os/srv/default.nix b/os/srv/default.nix index 7f87cfd..b83e892 100644 --- a/os/srv/default.nix +++ b/os/srv/default.nix @@ -8,9 +8,12 @@ ./i2p.nix ./kdeconnect.nix ./monero.nix + ./nginx.nix ./nix-helper.nix - ./ollama.nix + ./oci.nix ./omnisearch.nix + ./opnsense.nix + ./simplex.nix ./sops.nix ./sunshine.nix ./syncthing.nix @@ -18,7 +21,5 @@ ./virtualization.nix ./vpn.nix ./yggdrasil.nix - - ./opnsense.nix ]; } diff --git a/os/srv/gaming.nix b/os/srv/gaming.nix index 164670f..eb8ca81 100644 --- a/os/srv/gaming.nix +++ b/os/srv/gaming.nix @@ -3,7 +3,6 @@ lib, pkgs, username, - inputs, ... }: let @@ -37,11 +36,11 @@ in enableRenice = true; settings = { general.renice = 10; - # gpu = { - # apply_gpu_optimisations = "accept-responsibility"; - # gpu_device = 0; - # amd_performance_level = "high"; - # }; + gpu = { + apply_gpu_optimisations = "accept-responsibility"; + gpu_device = 0; + amd_performance_level = "high"; + }; }; }; @@ -71,13 +70,6 @@ in environment.systemPackages = with pkgs; [ openttd-jgrpp openmw - inputs.openmw-nix.packages.x86_64-linux.umo - inputs.openmw-nix.packages.x86_64-linux.momw-configurator - inputs.openmw-nix.packages.x86_64-linux.delta-plugin - inputs.openmw-nix.packages.x86_64-linux.openmw-validator - inputs.openmw-nix.packages.x86_64-linux.groundcoverify - inputs.openmw-nix.packages.x86_64-linux.plox - inputs.openmw-nix.packages.x86_64-linux.s3lightfixes ]; }) diff --git a/os/srv/nginx.nix b/os/srv/nginx.nix new file mode 100644 index 0000000..b0c01a7 --- /dev/null +++ b/os/srv/nginx.nix @@ -0,0 +1,36 @@ +{ config, lib, ... }: + +let + cfg = config.os.srv.nginx; +in +{ + options.os.srv.nginx = { + enable = lib.mkEnableOption "the NGINX reverse proxy service"; + + openFirewall = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Whether to open ports 80 and 443 in the firewall."; + }; + }; + + config = lib.mkIf cfg.enable { + services.nginx = { + enable = true; + + recommendedProxySettings = true; + recommendedTlsSettings = true; + recommendedOptimisation = true; + recommendedGzipSettings = true; + }; + + networking.firewall.allowedTCPPorts = lib.mkOptional cfg.openFirewall [ + 80 + 443 + ]; + + systemd.tmpfiles.rules = [ + "d /var/log/nginx 0750 nginx adm -" + ]; + }; +} diff --git a/os/srv/oci.nix b/os/srv/oci.nix new file mode 100644 index 0000000..0d781a7 --- /dev/null +++ b/os/srv/oci.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.os.srv.oci; +in +{ + options.os.srv.oci.enable = lib.mkEnableOption "OCI container support via Podman"; + config = lib.mkIf cfg.enable { + virtualisation.podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + autoPrune = { + enable = true; + dates = "weekly"; + flags = [ "--all" ]; + }; + }; + + virtualisation.oci-containers.backend = "podman"; + + environment.systemPackages = with pkgs; [ + podman-tui + podman-compose + ]; + }; +} diff --git a/os/srv/ollama.nix b/os/srv/ollama.nix deleted file mode 100644 index 3afc684..0000000 --- a/os/srv/ollama.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.os.srv.ollama; -in -{ - options.os.srv.ollama.enable = lib.mkEnableOption "Ollama AI service"; - config = lib.mkIf cfg.enable { - fileSystems."/models" = { - device = "/home/ollama"; - fsType = "none"; - options = [ "bind" ]; - }; - - services.ollama = { - enable = true; - package = pkgs.ollama-rocm; - rocmOverrideGfx = "12.0.1"; - user = "ollama"; - models = "/models"; - }; - }; -} diff --git a/os/srv/simplex.nix b/os/srv/simplex.nix new file mode 100644 index 0000000..9ea54c3 --- /dev/null +++ b/os/srv/simplex.nix @@ -0,0 +1,105 @@ +{ config, lib, ... }: +let + cfg = config.os.srv.simplex; + internalSmpPort = 5223; + internalXftpPort = 5224; +in +{ + options.os.srv.simplex = { + enable = lib.mkEnableOption "enables SimpleX SMP and XFTP containers via Podman"; + tor.enable = lib.mkEnableOption "enables Tor hidden services for SimpleX"; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + assertions = [ + { + assertion = config.os.srv.oci.enable; + message = "SimpleX requires os.srv.oci to be enabled to run containers."; + } + { + assertion = config.os.srv.nginx.enable; + message = "SimpleX requires os.srv.nginx to be enabled for clearnet proxying."; + } + ]; + + virtualisation.oci-containers.containers = { + simplex-smp = { + image = "simplexchat/smp-server:latest"; + ports = [ "127.0.0.1:${toString internalSmpPort}:5223" ]; + volumes = [ + "/var/lib/simplex/smp/config:/etc/opt/simplex:rw" + "/var/lib/simplex/smp/logs:/var/opt/simplex:rw" + ]; + }; + + simplex-xftp = { + image = "simplexchat/xftp-server:latest"; + ports = [ "127.0.0.1:${toString internalXftpPort}:443" ]; + volumes = [ + "/var/lib/simplex/xftp/config:/etc/opt/simplex-xftp:rw" + "/var/lib/simplex/xftp/logs:/var/opt/simplex-xftp:rw" + ]; + }; + }; + + services.nginx = { + streamConfig = '' + server { + listen 5223; + proxy_pass 127.0.0.1:${toString internalSmpPort}; + } + server { + listen 5224; + proxy_pass 127.0.0.1:${toString internalXftpPort}; + } + ''; + }; + + systemd.tmpfiles.rules = [ + "d /var/lib/simplex/smp/config 0755 root root -" + "d /var/lib/simplex/smp/logs 0755 root root -" + "d /var/lib/simplex/xftp/config 0755 root root -" + "d /var/lib/simplex/xftp/logs 0755 root root -" + ]; + } + + (lib.mkIf cfg.tor.enable { + assertions = [ + { + assertion = config.os.srv.tor.enable; + message = "SimpleX Tor support requires os.srv.tor to be enabled."; + } + ]; + + services.tor.relay.onionServices = { + simplex-smp = { + version = 3; + map = [ + { + port = 5223; + target = { + addr = "127.0.0.1"; + port = internalSmpPort; + }; + } + ]; + }; + simplex-xftp = { + version = 3; + map = [ + { + port = 5224; + target = { + addr = "127.0.0.1"; + port = internalXftpPort; + }; + } + ]; + }; + }; + }) + ] + ); +} diff --git a/os/srv/sops.nix b/os/srv/sops.nix index b5bf3af..20e1891 100644 --- a/os/srv/sops.nix +++ b/os/srv/sops.nix @@ -24,6 +24,8 @@ in secrets = { "syncthing/gui_password".owner = username; + "syncthing/encryption/openmw-config".owner = username; + "syncthing/encryption/openmw-mods".owner = username; "syncthing/encryption/game-saves".owner = username; "syncthing/encryption/keepass".owner = username; "syncthing/encryption/sync".owner = username; diff --git a/os/srv/syncthing.nix b/os/srv/syncthing.nix index 2234b88..28806f1 100644 --- a/os/srv/syncthing.nix +++ b/os/srv/syncthing.nix @@ -24,6 +24,40 @@ in devices."oci".id = "DQXGVDC-KGPM6RK-5NDEBJJ-R7PEWYZ-N6Z3WFZ-TSVJG5X-235SHG4-4BEJNQJ"; folders = { + "openmw-config" = { + path = "/home/${username}/.config/openmw"; + id = "openmw-config"; + devices = [ + { + name = "oci"; + encryptionPasswordFile = config.sops.secrets."syncthing/encryption/openmw-config".path; + } + ]; + versioning = { + type = "simple"; + params.keep = "3"; + }; + ignorePatterns = [ + "settings.cfg" + "*.log" + ]; + }; + + "openmw-mods" = { + path = "/home/${username}/games/openmw"; + id = "openmw-mods"; + devices = [ + { + name = "oci"; + encryptionPasswordFile = config.sops.secrets."syncthing/encryption/openmw-mods".path; + } + ]; + versioning = { + type = "trashcan"; + params.cleanoutDays = "7"; + }; + }; + "game-saves" = { path = "/home/${username}/.saves"; id = "game-saves"; @@ -31,7 +65,6 @@ in { name = "oci"; encryptionPasswordFile = config.sops.secrets."syncthing/encryption/game-saves".path; - compression = "always"; } ]; versioning = { @@ -50,7 +83,6 @@ in { name = "oci"; encryptionPasswordFile = config.sops.secrets."syncthing/encryption/keepass".path; - compression = "metadata"; } ]; versioning = { @@ -66,7 +98,6 @@ in { name = "oci"; encryptionPasswordFile = config.sops.secrets."syncthing/encryption/sync".path; - compression = "metadata"; } ]; versioning = { diff --git a/secrets.yaml b/secrets.yaml index d06b199..44fd8fa 100644 --- a/secrets.yaml +++ b/secrets.yaml @@ -7,6 +7,8 @@ vpn: syncthing: gui_password: ENC[AES256_GCM,data:l1qUM6MfrCTnv2LlFeRDy4o4eYQbLBzfI5C9BgcmVGQNnwjT5HWCXQqY54XHfhlPuSXO4bZs7u8JcKbQFW/+Pg==,iv:IIBWrmgX8nhP6B7WkZisEK1zmvMBqNYCg4eHgJX68Ak=,tag:1DggOF7x60nvz9gS9Ou29g==,type:str] encryption: + openmw-config: ENC[AES256_GCM,data:sxd+erAmTxUw35laMtjxiy2i+tR9VXZXQiwSeFdGLCDy5eIMDJtf4y3oVIzUW/4K3yjG2kpmoIdKtdTMHf5A9A==,iv:KQUX9CeubeUY7sZKFYrPwn9i6lEjCToNt4VtDyS+fqg=,tag:w6vztiLs9WoquXeYB6dNbQ==,type:str] + openmw-mods: ENC[AES256_GCM,data:oxmeu/u/Hl9uRhKcbKebu/hpCEucFcjFMFDplmPawdLMQGBkxV2F1bpRvQhBurrW0l6v+Myc2GHl6q08DTffrA==,iv:ZVBhPnS5mfXKzN5ohcFqYA4xk8TcGWidvFQSrZjr7vw=,tag:yh4saE4umy36HY6gNX07dg==,type:str] game-saves: ENC[AES256_GCM,data:67kubvePq/KYxJKJkNR8gBEf3VGczFkJE469XSYvBg/a4HfAAmdJuL2kfv62zEXVVb5BXx7NK1Xr5s+81AEaZw==,iv:1ERuh9X8IX/+XM22rreNUzt+i4CcJhVhS+IM210Z6dU=,tag:iSkTHHUF/WosX94JqJAjiQ==,type:str] keepass: ENC[AES256_GCM,data:OLU0tYB9TTKZ5V1Mzj5FDE9YdCpj0ajJaoxzqd7HtTmaBqETjs7CjYriq7kCOgSEVBtwzek/NA1vetwuMQhI8Q==,iv:P9aBZCIbj23aOvuMBtAjAZ2L+0lUT5Xjk7XRikbc9u0=,tag:xnWUxctkKVTUOV0AtpnTug==,type:str] sync: ENC[AES256_GCM,data:XaD+8knm2VLHGFE5AOc9V4GSJ4opGNcz7ujCH2rfMVTtQ270QzohMsQoKMjSM18a44AxZ/vtnZjLtTo+ZOWYcA==,iv:wchjwjuICqY6CQyQQmxS++9H5YECCVjURUlB2ebFSO8=,tag:v8CxGv7ZnV3WsTz5wEZFMQ==,type:str] @@ -49,7 +51,7 @@ sops: SHVLdytlK0RzSWVURTM2NldLVlR0eXMKvOEQCjWrr6lKQBuiTkRHV4SsCukflnKg CXZbLjjZ0Q5we+RTisnyT8pqVIJtD2oyCliBdpGoM+HuX6pc9YbwKg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-04-17T13:02:30Z" - mac: ENC[AES256_GCM,data:dVqS5hgPvhj5a4tcVZpbuSPcTr4thkdDN84rk45kI0HaXiSIxFy2l7WwlJb4ZkTdLhNFw1THgXMr4nHXW00ne8QzEt90ITKjHb6hXAFqCTcOPuzYDkwe9wPtJiu0FnTUiVqKSFlH/ZKoMlyU1vSvGrX0GqeNBMEtRuST39NNrfI=,iv:hotanmPBRJ8bByxs//Dbd7K03N6rDj7zPMgRb+1xk50=,tag:S/zE35gJKcUpQhXVjK4Mcw==,type:str] + lastmodified: "2026-05-09T23:02:53Z" + mac: ENC[AES256_GCM,data:t3A70Nc2NTwKzD7YLjWzCWjUZ4dUygzF2mV6wHBvcvrWG/TtvF86jps9KIVXBRoZXvZem2Vmc6V94xmPzZrPz3rrUybJVEC2kouNEVV0Fds1efmidkVF1K1ButiiX1MjbjZS0cYeSSpaBssNyQbc6YVe9FdgjKEfu2j/Gf92eys=,iv:Dyn2mTsgAoMLZA0GdAZcewCi4t5KR8hwTy9/umHUcIc=,tag:PaaS5hAQw8QS9HarV3vlUw==,type:str] unencrypted_suffix: _unencrypted version: 3.12.2 |
