diff --git a/_sources/generated.json b/_sources/generated.json new file mode 100644 index 0000000..15e0eca --- /dev/null +++ b/_sources/generated.json @@ -0,0 +1,227 @@ +{ + "valheim.aaacrafting": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.aaacrafting", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-cObo71X0wOzW3pZwAy7/dh7IRghu7EMPw7vWuoPWPlk=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/1.6.6/" + }, + "version": "1.6.6" + }, + "valheim.autostore": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.autostore", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-ooghhDinwLTwEpTTQFj/brdb9Yj5aLGr+zYsjrsq9A0=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.8/" + }, + "version": "3.0.8" + }, + "valheim.betternetworking": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.betternetworking", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-krgZ4B+MbIG/3CQUMkVIB/xrvvW1TbxB0cp1KwCTBN4=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/CW_Jesse/BetterNetworking_Valheim/2.3.2/" + }, + "version": "2.3.2" + }, + "valheim.campsite": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.campsite", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-r3HTjfNy7ehr6bsjddr6mTA7T8VVXRhDfulIodjc0jc=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.5.8/" + }, + "version": "1.5.8" + }, + "valheim.cartography": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.cartography", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-u20BTiyF4e6QJ6OUK5migjdEpyzIGRDxLPJ3NdZNhvA=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Advize/CartographySkill/3.0.1/" + }, + "version": "3.0.1" + }, + "valheim.craftyboxes": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.craftyboxes", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-8bvHmONHuc9K0cgT42+W4oxQ6MusAv8v0IIVMerdYSA=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.4/" + }, + "version": "1.8.4" + }, + "valheim.extendedinv": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.extendedinv", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-Xd7KdUm3c14iQBST31DAqs+bQF9hwYhUxE66o3lusrA=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/1.4.9/" + }, + "version": "1.4.9" + }, + "valheim.jotunn": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.jotunn", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-Tso4/Sf4Evt5kpBrVqZrjE9Qs2MSZV04WB1w+uX+TX8=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.25.0/" + }, + "version": "2.25.0" + }, + "valheim.multiuserchest": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.multiuserchest", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-PhXW6vBtEMnhE93RAALEucPU9q3VpdMrooFawWYXl2A=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/MSchmoecker/MultiUserChest/0.6.1/" + }, + "version": "0.6.1" + }, + "valheim.quickteleport": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.quickteleport", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-YSAVthV994do/atQA+wGfillXeSYFlLJK6VyMcQNVKE=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/OdinPlus/QuickTeleport/1.1.0/" + }, + "version": "1.1.0" + }, + "valheim.reclaim": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.reclaim", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-2cWdmspwid2h1ekfDFAngN25402pQnxZQhm4rX6BNhw=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.3.6/" + }, + "version": "1.3.6" + }, + "valheim.seedbed": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.seedbed", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-wm2gGSyMQ6r3lLpbpXtZYG7s+fFYvw5nZGmSW54Ayt4=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/blacks7ar/SeedBed/1.2.7/" + }, + "version": "1.2.7" + }, + "valheim.servercharacters": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.servercharacters", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-aSB+G4nK3gf0yvMYWbICMFe3A0aCSr7nBH45G9ZdE9g=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Smoothbrain/ServerCharacters/1.4.16/" + }, + "version": "1.4.16" + }, + "valheim.smoothsave": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.smoothsave", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-v5Zn+0O0au8VDzO+302oCE7Z9s87I3nq+eK2WbVVyFo=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/Smoothbrain/SmoothSave/1.0.5/" + }, + "version": "1.0.5" + }, + "valheim.swim": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "valheim.swim", + "passthru": null, + "pinned": false, + "src": { + "sha256": "sha256-QCEYnx0I6onWEAJy851wS0WdC35L18DyJL1wAAwHFaU=", + "type": "tarball", + "url": "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.3.8/" + }, + "version": "1.3.8" + }, + "vesktop.micfix": { + "cargoLocks": null, + "date": null, + "extract": null, + "name": "vesktop.micfix", + "passthru": null, + "pinned": false, + "src": { + "name": null, + "sha256": "sha256-eNOKW43LQdJp2GFHqe3RxAhMwkNulrotIOMByosen84=", + "type": "url", + "url": "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch" + }, + "version": "1.0.1" + } +} \ No newline at end of file diff --git a/_sources/generated.nix b/_sources/generated.nix new file mode 100644 index 0000000..90419fd --- /dev/null +++ b/_sources/generated.nix @@ -0,0 +1,132 @@ +# This file was generated by nvfetcher, please do not modify it manually. +{ fetchgit, fetchurl, fetchFromGitHub, dockerTools }: +{ + "valheim.aaacrafting" = { + pname = "valheim.aaacrafting"; + version = "1.6.6"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/1.6.6/"; + sha256 = "sha256-cObo71X0wOzW3pZwAy7/dh7IRghu7EMPw7vWuoPWPlk="; + }; + }; + "valheim.autostore" = { + pname = "valheim.autostore"; + version = "3.0.8"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.8/"; + sha256 = "sha256-ooghhDinwLTwEpTTQFj/brdb9Yj5aLGr+zYsjrsq9A0="; + }; + }; + "valheim.betternetworking" = { + pname = "valheim.betternetworking"; + version = "2.3.2"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/CW_Jesse/BetterNetworking_Valheim/2.3.2/"; + sha256 = "sha256-krgZ4B+MbIG/3CQUMkVIB/xrvvW1TbxB0cp1KwCTBN4="; + }; + }; + "valheim.campsite" = { + pname = "valheim.campsite"; + version = "1.5.8"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.5.8/"; + sha256 = "sha256-r3HTjfNy7ehr6bsjddr6mTA7T8VVXRhDfulIodjc0jc="; + }; + }; + "valheim.cartography" = { + pname = "valheim.cartography"; + version = "3.0.1"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Advize/CartographySkill/3.0.1/"; + sha256 = "sha256-u20BTiyF4e6QJ6OUK5migjdEpyzIGRDxLPJ3NdZNhvA="; + }; + }; + "valheim.craftyboxes" = { + pname = "valheim.craftyboxes"; + version = "1.8.4"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.4/"; + sha256 = "sha256-8bvHmONHuc9K0cgT42+W4oxQ6MusAv8v0IIVMerdYSA="; + }; + }; + "valheim.extendedinv" = { + pname = "valheim.extendedinv"; + version = "1.4.9"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/1.4.9/"; + sha256 = "sha256-Xd7KdUm3c14iQBST31DAqs+bQF9hwYhUxE66o3lusrA="; + }; + }; + "valheim.jotunn" = { + pname = "valheim.jotunn"; + version = "2.25.0"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.25.0/"; + sha256 = "sha256-Tso4/Sf4Evt5kpBrVqZrjE9Qs2MSZV04WB1w+uX+TX8="; + }; + }; + "valheim.multiuserchest" = { + pname = "valheim.multiuserchest"; + version = "0.6.1"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/MSchmoecker/MultiUserChest/0.6.1/"; + sha256 = "sha256-PhXW6vBtEMnhE93RAALEucPU9q3VpdMrooFawWYXl2A="; + }; + }; + "valheim.quickteleport" = { + pname = "valheim.quickteleport"; + version = "1.1.0"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/OdinPlus/QuickTeleport/1.1.0/"; + sha256 = "sha256-YSAVthV994do/atQA+wGfillXeSYFlLJK6VyMcQNVKE="; + }; + }; + "valheim.reclaim" = { + pname = "valheim.reclaim"; + version = "1.3.6"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.3.6/"; + sha256 = "sha256-2cWdmspwid2h1ekfDFAngN25402pQnxZQhm4rX6BNhw="; + }; + }; + "valheim.seedbed" = { + pname = "valheim.seedbed"; + version = "1.2.7"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/blacks7ar/SeedBed/1.2.7/"; + sha256 = "sha256-wm2gGSyMQ6r3lLpbpXtZYG7s+fFYvw5nZGmSW54Ayt4="; + }; + }; + "valheim.servercharacters" = { + pname = "valheim.servercharacters"; + version = "1.4.16"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Smoothbrain/ServerCharacters/1.4.16/"; + sha256 = "sha256-aSB+G4nK3gf0yvMYWbICMFe3A0aCSr7nBH45G9ZdE9g="; + }; + }; + "valheim.smoothsave" = { + pname = "valheim.smoothsave"; + version = "1.0.5"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/Smoothbrain/SmoothSave/1.0.5/"; + sha256 = "sha256-v5Zn+0O0au8VDzO+302oCE7Z9s87I3nq+eK2WbVVyFo="; + }; + }; + "valheim.swim" = { + pname = "valheim.swim"; + version = "1.3.8"; + src = fetchTarball { + url = "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.3.8/"; + sha256 = "sha256-QCEYnx0I6onWEAJy851wS0WdC35L18DyJL1wAAwHFaU="; + }; + }; + "vesktop.micfix" = { + pname = "vesktop.micfix"; + version = "1.0.1"; + src = fetchurl { + url = "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch"; + sha256 = "sha256-eNOKW43LQdJp2GFHqe3RxAhMwkNulrotIOMByosen84="; + }; + }; +} diff --git a/flake.lock b/flake.lock index 4bc5125..6250aa7 100644 --- a/flake.lock +++ b/flake.lock @@ -448,7 +448,8 @@ "nix-minecraft": "nix-minecraft", "nixpkgs": "nixpkgs_3", "sops-nix": "sops-nix", - "stylix": "stylix" + "stylix": "stylix", + "valheim-server": "valheim-server" } }, "sops-nix": { @@ -471,6 +472,27 @@ "type": "github" } }, + "steam-fetcher": { + "inputs": { + "nixpkgs": [ + "valheim-server", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714795926, + "narHash": "sha256-PkgC9jqoN6cJ8XYzTA2PlrWs7aPJkM3BGiTxNqax0cA=", + "owner": "nix-community", + "repo": "steam-fetcher", + "rev": "12f66eafb7862d91b3e30c14035f96a21941bd9c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "steam-fetcher", + "type": "github" + } + }, "stylix": { "inputs": { "base16": "base16", @@ -638,6 +660,27 @@ "repo": "treefmt-nix", "type": "github" } + }, + "valheim-server": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "steam-fetcher": "steam-fetcher" + }, + "locked": { + "lastModified": 1744964760, + "narHash": "sha256-VSy6SZqDDMqrFlf6gw3xA/u3WEu3thjGOh3akIJEWW4=", + "owner": "kmjayadeep", + "repo": "valheim-server-flake", + "rev": "5b95198dca8af8287108b610432d88aef5fa29fc", + "type": "github" + }, + "original": { + "owner": "kmjayadeep", + "repo": "valheim-server-flake", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 2830dce..f4a1be4 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,9 @@ stylix.url = "github:danth/stylix"; nix-minecraft.url = "git+https://codeberg.org/nix-astral/nix-minecraft.git"; nix-alien.url = "github:thiagokokada/nix-alien"; + + valheim-server.url = "github:kmjayadeep/valheim-server-flake"; + valheim-server.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs@{ nixpkgs, home-manager, stylix, ... }: @@ -19,7 +22,11 @@ pkgs = import inputs.nixpkgs { inherit system; }; - utils = import ./utils.nix { inherit inputs system; }; + sources = import ./_sources/generated.nix { + inherit (pkgs) fetchurl fetchgit fetchFromGitHub dockerTools; + }; + + utils = import ./utils.nix { inherit inputs system sources; }; in { nixosConfigurations = { # desktop diff --git a/hosts/muho/configuration.nix b/hosts/muho/configuration.nix index 9395cb7..6664a05 100644 --- a/hosts/muho/configuration.nix +++ b/hosts/muho/configuration.nix @@ -36,18 +36,17 @@ in { mods.server.grav.enable = true; mods.server.homebox.enable = true; - mods.server.share.enable = true; + mods.server.share.enable = false; mods.server.vault.enable = true; mods.server.git.enable = true; mods.server.cal.enable = true; mods.server.chat.enable = true; mods.server.ntfy.enable = true; + mods.server.lemmy.enable = true; - mods.server.dash.enable = true; + mods.server.dash.enable = false; mods.server.nginx.ports.dash = 3009; - mods.server.vrising.enable = true; - mods.tailscale.enable = true; mods.wireguard.id = 3; @@ -60,6 +59,9 @@ in { mods.unfree.steam.enable = false; mods.unfree.nvidia.enable = false; mods.unfree.minecraft.enable = false; + mods.unfree.valheim.enable = true; + + mods.server.vrising.enable = false; # Hardware preferences @@ -124,5 +126,5 @@ in { # hardware.nvidia.powerManagement.enable = false; # Version of first install - system.stateVersion = "23.05"; + system.stateVersion = "23.11"; } diff --git a/hosts/ports.nix b/hosts/ports.nix index c620c36..215d18f 100644 --- a/hosts/ports.nix +++ b/hosts/ports.nix @@ -1,18 +1,32 @@ { pkgs, lib, config, ... }: { - mods.server.nginx.ports = { - photos = 3001; - homebox = 3002; - # immich-machine-learning = 3003; - share = 3004; - vault = 3005; - git = 3006; - cal = 3007; - chat = 3008; - # dash = 3009; - ntfy = 3010; + options.mods.server = with lib; { + local.ports = mkOption { + type = types.attrsOf (types.ints.u16); + default = { }; + }; + }; + config = { + mods.server.nginx.ports = { + photos = 3001; + homebox = 3002; + # immich-machine-learning = 3003; + share = 3004; + vault = 3005; + git = 3006; + cal = 3007; + chat = 3008; + # dash = 3009; + ntfy = 3010; - search = 8081; - videos = 8082; - reddit = 8083; + search = 8081; + videos = 8082; + reddit = 8083; + }; + mods.server.local.ports = { + # grav = 5001 + lemmy-api = 5002; + lemmy-ui = 5003; + pict-rs = 5004; + }; }; } diff --git a/modules/home/desktop/social.nix b/modules/home/desktop/social.nix index 3f84ec0..170857b 100644 --- a/modules/home/desktop/social.nix +++ b/modules/home/desktop/social.nix @@ -1,12 +1,7 @@ -{ pkgs, lib, config, ... }: +{ pkgs, lib, config, sources, ... }: let vesktop-nogain = (pkgs.vesktop.overrideAttrs (previousAttrs: { - patches = previousAttrs.patches ++ [ - (builtins.fetchurl { - url = "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch"; - sha256 = "1klz3s5wl0g340nvm5kf8g14q264s7nsjiv1v1lx4hfbimdqmlvq"; - }) - ]; + patches = previousAttrs.patches ++ [ sources."vesktop.micfix".src ]; })); in { options.mods.social.enable = diff --git a/modules/home/terminal/development.nix b/modules/home/terminal/development.nix index 425f790..be3c0bb 100644 --- a/modules/home/terminal/development.nix +++ b/modules/home/terminal/development.nix @@ -1,29 +1,4 @@ -{ pkgs, lib, config, ... }: -let - wgsl_analyzer = with pkgs; - stdenv.mkDerivation rec { - pname = "wgsl_analyzer"; - version = "0.8.1"; - - src = fetchurl { - url = - "https://github.com/wgsl-analyzer/wgsl-analyzer/releases/download/v${version}/${pname}-linux-x64"; - hash = "sha256-WRc9fHUw9/KHD5BzUX3nd+0sRkc7i8axsXhHUZFOUeY="; - }; - - nativeBuildInputs = [ autoPatchelfHook ]; - - buildInputs = [ openssl zlib ]; - - sourceRoot = "."; - phases = [ "installPhase" "patchPhase" ]; - installPhase = '' - mkdir -p $out/bin - cp $src $out/bin/${pname} - chmod +x $out/bin/${pname} - ''; - }; -in { +{ pkgs, lib, config, ... }: { options.mods.terminal.development.enable = lib.mkEnableOption "enables cli editor"; @@ -38,7 +13,7 @@ in { # Shaders glsl_analyzer - # wgsl_analyzer + wgsl-analyzer # Python black @@ -79,7 +54,7 @@ in { languages.language-server = { glsl.command = "${pkgs.glsl_analyzer}/bin/glsl_analyzer"; - wgsl.command = "${wgsl_analyzer}/bin/wgsl_analyzer"; + wgsl.command = "${pkgs.wgsl-analyzer}/bin/wgsl_analyzer"; }; languages.language = [ diff --git a/modules/nixos/server/default.nix b/modules/nixos/server/default.nix index 212b477..3d1168e 100644 --- a/modules/nixos/server/default.nix +++ b/modules/nixos/server/default.nix @@ -22,5 +22,6 @@ ./dash.nix ./nvr.nix ./ntfy.nix + ./lemmy.nix ]; } diff --git a/modules/nixos/server/grav/service.nix b/modules/nixos/server/grav/service.nix index 6ca3167..c9b90f5 100644 --- a/modules/nixos/server/grav/service.nix +++ b/modules/nixos/server/grav/service.nix @@ -6,7 +6,7 @@ let generators mapAttrs mkDefault mkEnableOption mkIf mkPackageOption mkOption types; - cfg = config.services.grav; + cfg = config.mods.services.grav; # yamlFormat = pkgs.formats.yaml { }; diff --git a/modules/nixos/server/lemmy.nix b/modules/nixos/server/lemmy.nix new file mode 100644 index 0000000..d8c7fe9 --- /dev/null +++ b/modules/nixos/server/lemmy.nix @@ -0,0 +1,87 @@ +{ pkgs, lib, config, ... }: +let + inherit (lib) mkEnableOption; + cfg = config.mods.server.lemmy; + port = config.mods.server.local.ports.lemmy-api; + port-ui = config.mods.server.local.ports.lemmy-ui; + port-pict = config.mods.server.local.ports.pict-rs; + hostname = "lemmy.muon.host"; + bind = "0.0.0.0"; +in { + options.mods.server.lemmy = { + enable = mkEnableOption { + default = false; + description = "enables lemmy engine server"; + }; + }; + + config = { + services.lemmy = lib.mkIf cfg.enable { + enable = true; + + ui.port = port-ui; + + settings = { inherit port hostname bind; }; + + database.createLocally = true; + }; + + systemd.services.lemmy-ui = lib.mkIf cfg.enable { + environment = lib.mkForce { + LEMMY_UI_HOST = "${bind}:${toString port-ui}"; + LEMMY_UI_LEMMY_INTERNAL_HOST = "${bind}:${toString port}"; + LEMMY_UI_LEMMY_EXTERNAL_HOST = hostname; + LEMMY_UI_HTTPS = "false"; + NODE_ENV = "production"; + }; + }; + + services.pict-rs = lib.mkIf cfg.enable { + enable = true; + port = port-pict; + address = "0.0.0.0"; + }; + + # services.nginx.virtualHosts."${hostname}" = let + # ui = "http://10.0.0.3:${toString port-ui}"; + # backend = "http://10.0.0.3:${toString port}"; + # in lib.mkIf config.mods.server.nginx.enable { + # forceSSL = true; + # enableACME = true; + # locations = { + # "~ ^/(api|pictrs|feeds|nodeinfo|.well-known)" = { + # # backend requests + # proxyPass = backend; + # proxyWebsockets = true; + # recommendedProxySettings = true; + # }; + # "/" = { + # # mixed frontend and backend requests, based on the request headers + # extraConfig = '' + # set $proxpass "${ui}"; + # if ($http_accept = "application/activity+json") { + # set $proxpass "${backend}"; + # } + # if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { + # set $proxpass "${backend}"; + # } + # if ($request_method = POST) { + # set $proxpass "${backend}"; + # } + + # # Cuts off the trailing slash on URLs to make them valid + # rewrite ^(.+)/+$ $1 permanent; + + # proxy_pass $proxpass; + # # Proxied `Host` header is required to validate ActivityPub HTTP signatures for incoming events. + # # The other headers are optional, for the sake of better log data. + # proxy_set_header X-Real-IP $remote_addr; + # proxy_set_header Host $host; + # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # ''; + # }; + # }; + # }; + }; +} + diff --git a/modules/nixos/sops/default.nix b/modules/nixos/sops/default.nix index 30c4d4d..01891a7 100644 --- a/modules/nixos/sops/default.nix +++ b/modules/nixos/sops/default.nix @@ -14,5 +14,8 @@ in with lib; { owner = "radicale"; group = "radicale"; }; + secrets.lemmy-password = mkIf cfg.server.lemmy.enable { + + }; }; } diff --git a/modules/nixos/sops/secrets.yaml b/modules/nixos/sops/secrets.yaml index 631279b..11a90ca 100644 --- a/modules/nixos/sops/secrets.yaml +++ b/modules/nixos/sops/secrets.yaml @@ -1,11 +1,8 @@ muon-password: ENC[AES256_GCM,data:K2ifHvs8hQXK4//FXf3vfDliiklx0dTn8gpirTBT07Q1XIMJR1Vgn/f1uo62bu4a/bknAR5gEBfd/cSRUTdBBxd7Lec2k3fxQg==,iv:j1JTzyfjcKEqh+PK5tyCWBMV7MpwvIG9MJ9eiajksxM=,tag:ZcSEVBW1UOCvE40yIsaBFQ==,type:str] zipline-secret: ENC[AES256_GCM,data:cdqPWBUg6FZkBrUYNkm7imntc2hXUAxDjd1Ymr3j9y763cbXDYEu44wJF0W1Ng==,iv:sdjV4SkRCTO04AvXqtoPOPyASlitrS4nS+M0Z2lZURA=,tag:gNcOdJvg9PtrRlm84CdbsQ==,type:str] htpasswd: ENC[AES256_GCM,data:YbDNElLsvRtC1ezgxIYI6U+ZZES1Lr6BXamNdbxQibj0NfC9oobP7ed8MQpFTlhhJZx5I5Xa6XtFrvjdo13NtdU=,iv:P98P1XxtdCp7+TuAwKybzjcWGF1OQtnAuQs4ObZct7o=,tag:gXrQaBxUvuVSB5yYhWcihA==,type:str] +lemmy-password: ENC[AES256_GCM,data:VVPbhW6l+VYSUfmlySPSwITwonKQHaIY,iv:XcwM7Sz2novn3cHt4EK5HAZkYVPfPqwIcGtTWMQPByg=,tag:0b8epk98eTcx7b57yGcjpw==,type:str] sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] age: - recipient: age1m97a3eptxwpdd7h5kkqe9gkmhg6rquc64qjmlsfqfhfqv8q72crqrylhgc enc: | @@ -34,8 +31,7 @@ sops: cThxTVpmcEMrcG9Lczd3dkdyQ0paSHMKUfkx9jh7zIqBkUjxaH3dVKvNJG3Mipts OjmJ5aVVIR5U8MhgSgECb22mGlOgW8SU/x4gxcWgafZwbv2vbON6OA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-01-25T15:55:13Z" - mac: ENC[AES256_GCM,data:M/IPR1hqkiLHqt/fgmZ+HezGrmAKbu0LJJkMMr0895neP6WB571AQ29+VLRm+7jDp9qjKgelwDOU/t/UdUgKP1hSK0cOcHR1B7KecHVCFKHNdfaD70xzA4PUQpTFIc6bHyLSMeQAwoEDKkW3inuKwD6k1RVQmOOUMT9shs6Oe48=,iv:I6XbpfScaJwZPXyVkvreKL2tDwgt7p8Eub/pSD6Bm8g=,tag:6wdBYdoOgf9iX0cGT63v3Q==,type:str] - pgp: [] + lastmodified: "2025-05-17T09:59:07Z" + mac: ENC[AES256_GCM,data:ewURL+W/C0XnEJiXipeSXr5F5hItD3LPMdThjBg1ObY/N7Tb28Tm18vCOpbr37H0gDWnDjNu2rzVN3+XjrbVzXe7n4YUzN2sZa2zZEJhHDTyQWdiPtMpApXeu1Va621EQymDyTm7N2hJz3MvadiWYIv/ft685FPY7qRX7pluUFc=,iv:FIoClE4hX8+PBHY5LOFeSowxSrAHIaDPFblD6Pkakes=,tag:FepKajXRusCbLTlJGPKm6g==,type:str] unencrypted_suffix: _unencrypted - version: 3.9.3 + version: 3.10.2 diff --git a/modules/nixos/unfree/default.nix b/modules/nixos/unfree/default.nix index adeea05..d9f045f 100644 --- a/modules/nixos/unfree/default.nix +++ b/modules/nixos/unfree/default.nix @@ -4,10 +4,10 @@ let mkPackages = mod: if cfg.${mod}.enable then cfg.${mod}.packages else [ ]; in { - imports = [ ./steam.nix ./nvidia.nix ./minecraft.nix ]; + imports = [ ./steam.nix ./nvidia.nix ./minecraft.nix ./valheim.nix ]; nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) ((mkPackages "steam") ++ (mkPackages "minecraft") ++ (mkPackages "nvidia") - ++ [ "stremio-shell" "stremio-server" ]); + ++ (mkPackages "valheim") ++ [ "stremio-shell" "stremio-server" ]); } diff --git a/modules/nixos/unfree/valheim.nix b/modules/nixos/unfree/valheim.nix new file mode 100644 index 0000000..f78c1fe --- /dev/null +++ b/modules/nixos/unfree/valheim.nix @@ -0,0 +1,27 @@ +{ pkgs, lib, config, inputs, sources, ... }: { + options.mods.unfree.valheim = { + enable = lib.mkEnableOption { + default = false; + description = "enables valheim server"; + }; + packages = lib.mkOption { + default = [ "valheim-server" "steamworks-sdk-redist" ]; + description = "unfree packages"; + }; + }; + + imports = [ inputs.valheim-server.nixosModules.default ]; + + config = lib.mkIf config.mods.unfree.valheim.enable { + services.valheim = { + enable = true; + serverName = "Smorld"; + worldName = "Smorld"; + openFirewall = true; + password = "notbeempty"; + bepinexMods = lib.mapAttrsToList (name: value: value.src) + (lib.attrsets.filterAttrs (n: v: lib.strings.hasPrefix "valheim." n) + sources); + }; + }; +} diff --git a/nvfetcher.toml b/nvfetcher.toml new file mode 100644 index 0000000..dc06315 --- /dev/null +++ b/nvfetcher.toml @@ -0,0 +1,79 @@ +["vesktop.micfix"] +src.manual = "1.0.1" +fetch.url = "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch" + +["valheim.jotunn"] +src.webpage = "https://thunderstore.io/c/valheim/p/ValheimModding/Jotunn/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/ValheimModding/Jotunn/$ver/" + +["valheim.craftyboxes"] +src.webpage = "https://thunderstore.io/c/valheim/p/Azumatt/AzuCraftyBoxes/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/$ver/" + +["valheim.autostore"] +src.webpage = "https://thunderstore.io/c/valheim/p/Azumatt/AzuAutoStore/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/$ver/" + +["valheim.extendedinv"] +src.webpage = "https://thunderstore.io/c/valheim/p/Azumatt/AzuExtendedPlayerInventory/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/$ver/" + +["valheim.reclaim"] +src.webpage = "https://thunderstore.io/c/valheim/p/Azumatt/Recycle_N_Reclaim/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/$ver/" + +["valheim.aaacrafting"] +src.webpage = "https://thunderstore.io/c/valheim/p/Azumatt/AAA_Crafting/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/$ver/" + +["valheim.campsite"] +src.webpage = "https://thunderstore.io/c/valheim/p/OdinPlus/OdinCampsite/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/$ver/" + +["valheim.quickteleport"] +src.webpage = "https://thunderstore.io/c/valheim/p/OdinPlus/QuickTeleport/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/OdinPlus/QuickTeleport/$ver/" + +["valheim.multiuserchest"] +src.webpage = "https://thunderstore.io/c/valheim/p/MSchmoecker/MultiUserChest/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/MSchmoecker/MultiUserChest/$ver/" + +["valheim.cartography"] +src.webpage = "https://thunderstore.io/c/valheim/p/Advize/CartographySkill/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Advize/CartographySkill/$ver/" + +["valheim.swim"] +src.webpage = "https://thunderstore.io/c/valheim/p/blacks7ar/VikingsDoSwim/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/$ver/" + +["valheim.seedbed"] +src.webpage = "https://thunderstore.io/c/valheim/p/blacks7ar/SeedBed/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/blacks7ar/SeedBed/$ver/" + +["valheim.servercharacters"] +src.webpage = "https://thunderstore.io/c/valheim/p/Smoothbrain/ServerCharacters/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Smoothbrain/ServerCharacters/$ver/" + +["valheim.smoothsave"] +src.webpage = "https://thunderstore.io/c/valheim/p/Smoothbrain/SmoothSave/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/Smoothbrain/SmoothSave/$ver/" + +["valheim.betternetworking"] +src.webpage = "https://thunderstore.io/c/valheim/p/CW_Jesse/BetterNetworking_Valheim/" +src.regex = "v(\\d+\\.\\d+\\.\\d+)" +fetch.tarball = "https://thunderstore.io/package/download/CW_Jesse/BetterNetworking_Valheim/$ver/" + diff --git a/shell.nix b/shell.nix index b4d1f3e..5d84124 100644 --- a/shell.nix +++ b/shell.nix @@ -8,6 +8,7 @@ sops age + nvfetcher ]; }; } diff --git a/utils.nix b/utils.nix index d81775d..672e982 100644 --- a/utils.nix +++ b/utils.nix @@ -1,7 +1,7 @@ -{ inputs, system, ... }: { +{ inputs, system, sources, ... }: { mkHost = host: inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs system; }; + specialArgs = { inherit inputs system sources; }; modules = [ host