Compare commits
18 Commits
c51f4ad65b
...
23c8076e4d
Author | SHA1 | Date | |
---|---|---|---|
23c8076e4d | |||
75ae399b5a | |||
87ddad27a4 | |||
8dd2a00123 | |||
944a783ff2 | |||
c2cb43fd2c | |||
02b2fb6309 | |||
b43660aaef | |||
567d755850 | |||
adc9b9f2b7 | |||
9181e3bfa3 | |||
9845270512 | |||
b3b3044690 | |||
fb1970c316 | |||
34f1edf3b3 | |||
823f0a6ef2 | |||
00d2ccc684 | |||
b2acaff783 |
@ -4,7 +4,7 @@
|
||||
- `/common` - common configuration imported into all `/machines`
|
||||
- `/boot` - config related to bootloaders, cpu microcode, and unlocking LUKS root disks over tor
|
||||
- `/network` - config for tailscale, and NixOS container with automatic vpn tunneling via PIA
|
||||
- `/pc` - config that a graphical desktop computer should have. Use `de.enable = true;` to enable everthing.
|
||||
- `/pc` - config that a graphical PC should have. Have the `personal` role set in the machine's `properties.nix` to enable everthing.
|
||||
- `/server` - config that creates new nixos services or extends existing ones to meet my needs
|
||||
- `/machines` - all my NixOS machines along with their machine unique configuration for hardware and services
|
||||
- `/kexec` - a special machine for generating minimal kexec images. Does not import `/common`
|
||||
|
@ -98,4 +98,9 @@
|
||||
|
||||
security.acme.acceptTerms = true;
|
||||
security.acme.defaults.email = "zuckerberg@neet.dev";
|
||||
|
||||
# Enable Desktop Environment if this is a PC (machine role is "personal")
|
||||
de.enable = (
|
||||
builtins.elem config.networking.hostName config.machines.roles.personal
|
||||
);
|
||||
}
|
||||
|
@ -13,12 +13,6 @@ in
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
|
||||
# pin nixpkgs for system commands such as "nix shell"
|
||||
registry.nixpkgs.flake = config.inputs.nixpkgs;
|
||||
|
||||
# pin system nixpkgs to the same version as the flake input
|
||||
nixPath = [ "nixpkgs=${config.inputs.nixpkgs}" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -22,8 +22,8 @@ in
|
||||
services.pipewire.extraConfig.pipewire."92-fix-wine-audio" = {
|
||||
context.properties = {
|
||||
default.clock.rate = 48000;
|
||||
default.clock.quantum = 2048;
|
||||
default.clock.min-quantum = 512;
|
||||
default.clock.quantum = 256;
|
||||
default.clock.min-quantum = 256;
|
||||
default.clock.max-quantum = 2048;
|
||||
};
|
||||
};
|
||||
|
@ -6,12 +6,10 @@ in
|
||||
{
|
||||
imports = [
|
||||
./kde.nix
|
||||
# ./xfce.nix
|
||||
./yubikey.nix
|
||||
./chromium.nix
|
||||
./firefox.nix
|
||||
./audio.nix
|
||||
# ./torbrowser.nix
|
||||
./pithos.nix
|
||||
./vscodium.nix
|
||||
./discord.nix
|
||||
@ -27,6 +25,11 @@ in
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
# https://github.com/NixOS/nixpkgs/pull/328086#issuecomment-2235384618
|
||||
gparted
|
||||
];
|
||||
|
||||
# Applications
|
||||
users.users.googlebot.packages = with pkgs; [
|
||||
chromium
|
||||
@ -38,7 +41,6 @@ in
|
||||
mpv
|
||||
nextcloud-client
|
||||
signal-desktop
|
||||
gparted
|
||||
libreoffice-fresh
|
||||
thunderbird
|
||||
spotify
|
||||
@ -52,6 +54,8 @@ in
|
||||
|
||||
# For Nix IDE
|
||||
nixpkgs-fmt
|
||||
nixd
|
||||
nil
|
||||
];
|
||||
|
||||
# Networking
|
||||
|
@ -14,7 +14,7 @@ in
|
||||
# akonadi
|
||||
# kmail
|
||||
# plasma5Packages.kmail-account-wizard
|
||||
kate
|
||||
kdePackages.kate
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -1,25 +0,0 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.de;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
nixpkgs.overlays = [
|
||||
(self: super: {
|
||||
tor-browser-bundle-bin = super.tor-browser-bundle-bin.overrideAttrs (old: rec {
|
||||
version = "10.0.10";
|
||||
lang = "en-US";
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
|
||||
sha256 = "vYWZ+NsGN8YH5O61+zrUjlFv3rieaBqjBQ+a18sQcZg=";
|
||||
};
|
||||
});
|
||||
})
|
||||
];
|
||||
|
||||
users.users.googlebot.packages = with pkgs; [
|
||||
tor-browser-bundle-bin
|
||||
];
|
||||
};
|
||||
}
|
@ -1,13 +1,9 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.de.touchpad;
|
||||
cfg = config.de;
|
||||
in
|
||||
{
|
||||
options.de.touchpad = {
|
||||
enable = lib.mkEnableOption "enable touchpad";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.libinput.enable = true;
|
||||
services.libinput.touchpad.naturalScrolling = true;
|
||||
|
@ -13,6 +13,7 @@ let
|
||||
ms-vscode.cpptools
|
||||
rust-lang.rust-analyzer
|
||||
vadimcn.vscode-lldb
|
||||
tauri-apps.tauri-vscode
|
||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "platformio-ide";
|
||||
@ -26,6 +27,12 @@ let
|
||||
version = "0.8.1";
|
||||
sha256 = "ckclcxdUxhjWlPnDFVleLCWgWxUEENe0V328cjaZv+Y=";
|
||||
}
|
||||
{
|
||||
name = "volar";
|
||||
publisher = "Vue";
|
||||
version = "2.2.4";
|
||||
sha256 = "FHS/LNjSUVfCb4SVF9naR4W0JqycWzSWiK54jfbRagA=";
|
||||
}
|
||||
];
|
||||
|
||||
vscodium-with-extensions = pkgs.vscode-with-extensions.override {
|
||||
|
@ -1,23 +0,0 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.de;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager = {
|
||||
xterm.enable = false;
|
||||
xfce.enable = true;
|
||||
};
|
||||
displayManager.sddm.enable = true;
|
||||
};
|
||||
|
||||
# xfce apps
|
||||
# TODO for some reason whiskermenu needs to be global for it to work
|
||||
environment.systemPackages = with pkgs; [
|
||||
xfce.xfce4-whiskermenu-plugin
|
||||
];
|
||||
};
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.dashy;
|
||||
in
|
||||
{
|
||||
options.services.dashy = {
|
||||
enable = mkEnableOption "dashy";
|
||||
imageTag = mkOption {
|
||||
type = types.str;
|
||||
default = "latest";
|
||||
};
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 56815;
|
||||
};
|
||||
configFile = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = "Path to the YAML configuration file";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
virtualisation.oci-containers.containers = {
|
||||
dashy = {
|
||||
image = "lissy93/dashy:${cfg.imageTag}";
|
||||
environment = {
|
||||
TZ = "${config.time.timeZone}";
|
||||
};
|
||||
ports = [
|
||||
"127.0.0.1:${toString cfg.port}:80"
|
||||
];
|
||||
volumes = [
|
||||
"${cfg.configFile}:/app/public/conf.yml"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -18,7 +18,6 @@
|
||||
./iodine.nix
|
||||
./searx.nix
|
||||
./gitea-actions-runner.nix
|
||||
./dashy.nix
|
||||
./librechat.nix
|
||||
./actualbudget.nix
|
||||
./unifi.nix
|
||||
|
@ -24,7 +24,7 @@ in
|
||||
SHOW_FOOTER_VERSION = false;
|
||||
};
|
||||
ui = {
|
||||
DEFAULT_THEME = "arc-green";
|
||||
DEFAULT_THEME = "gitea-dark";
|
||||
};
|
||||
service = {
|
||||
DISABLE_REGISTRATION = true;
|
||||
|
@ -21,11 +21,17 @@ in
|
||||
config = mkIf cfg.enable {
|
||||
virtualisation.oci-containers.containers = {
|
||||
librechat = {
|
||||
image = "ghcr.io/danny-avila/librechat:v0.6.6";
|
||||
image = "ghcr.io/danny-avila/librechat:v0.7.7";
|
||||
environment = {
|
||||
HOST = "0.0.0.0";
|
||||
MONGO_URI = "mongodb://host.containers.internal:27017/LibreChat";
|
||||
ENDPOINTS = "openAI,google,bingAI,gptPlugins";
|
||||
OPENAI_MODELS = lib.concatStringsSep "," [
|
||||
"gpt-4o-mini"
|
||||
"o3-mini"
|
||||
"gpt-4o"
|
||||
"o1"
|
||||
];
|
||||
REFRESH_TOKEN_EXPIRY = toString (1000 * 60 * 60 * 24 * 30); # 30 days
|
||||
};
|
||||
environmentFiles = [
|
||||
|
26
flake.lock
generated
26
flake.lock
generated
@ -3,7 +3,9 @@
|
||||
"agenix": {
|
||||
"inputs": {
|
||||
"darwin": "darwin",
|
||||
"home-manager": "home-manager",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
@ -51,11 +53,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1651719222,
|
||||
"narHash": "sha256-p/GY5vOP+HUlxNL4OtEhmBNEVQsedOHXEmjfCGONVmE=",
|
||||
"lastModified": 1739947126,
|
||||
"narHash": "sha256-JoiddH5H9up8jC/VKU8M7wDlk/bstKoJ3rHj+TkW4Zo=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "1290ddd9a2ff2bf2d0f702750768312b80efcd34",
|
||||
"revCount": 19,
|
||||
"rev": "ea1ad60f1c6662103ef4a3705d8e15aa01219529",
|
||||
"revCount": 20,
|
||||
"type": "git",
|
||||
"url": "https://git.neet.dev/zuckerberg/dailybot.git"
|
||||
},
|
||||
@ -151,16 +153,15 @@
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"agenix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1703113217,
|
||||
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||
"lastModified": 1740845322,
|
||||
"narHash": "sha256-AXEgFj3C0YJhu9k1OhbRhiA6FnDr81dQZ65U3DhaWpw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||
"rev": "fcac3d6d88302a5e64f6cb8014ac785e08874c8d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -207,11 +208,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1731278633,
|
||||
"narHash": "sha256-3yxgMFssoDGm9rWJiAGfJRPctr06gaefjnpUltphkAQ=",
|
||||
"lastModified": 1740374225,
|
||||
"narHash": "sha256-Dnmzy5YWUVj3BNaZo5jRpZslXexbNKEk3ADGGcz9RpY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "871087c18d344abaa569e7d1b7c1af576aab877f",
|
||||
"rev": "3349acd765bdffe454f7c8bbc450855577c1a6cf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -269,6 +270,7 @@
|
||||
"deploy-rs": "deploy-rs",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"home-manager": "home-manager",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
|
24
flake.nix
24
flake.nix
@ -17,6 +17,12 @@
|
||||
# NixOS hardware
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
|
||||
# Home Manager
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# Mail Server
|
||||
simple-nixos-mailserver = {
|
||||
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master";
|
||||
@ -33,6 +39,7 @@
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
systems.follows = "systems";
|
||||
home-manager.follows = "home-manager";
|
||||
};
|
||||
};
|
||||
|
||||
@ -81,7 +88,9 @@
|
||||
{
|
||||
inherit nixpkgs;
|
||||
assertionsModule = "${nixpkgs}/nixos/modules/misc/assertions.nix";
|
||||
}).machines.hosts;
|
||||
}).machines;
|
||||
machineHosts = machines.hosts;
|
||||
machineRoles = machines.roles;
|
||||
in
|
||||
{
|
||||
nixosConfigurations =
|
||||
@ -92,6 +101,7 @@
|
||||
agenix.nixosModules.default
|
||||
dailybuild_modules.nixosModule
|
||||
nix-index-database.nixosModules.nix-index
|
||||
home-manager.nixosModules.home-manager
|
||||
self.nixosModules.kernel-modules
|
||||
({ lib, ... }: {
|
||||
config = {
|
||||
@ -102,6 +112,13 @@
|
||||
];
|
||||
|
||||
networking.hostName = hostname;
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.googlebot = import ./home/googlebot.nix {
|
||||
inherit hostname;
|
||||
inherit machineRoles;
|
||||
};
|
||||
};
|
||||
|
||||
# because nixos specialArgs doesn't work for containers... need to pass in inputs a different way
|
||||
@ -120,6 +137,7 @@
|
||||
src = nixpkgs;
|
||||
patches = [
|
||||
./patches/gamepadui.patch
|
||||
./patches/dont-break-nix-serve.patch
|
||||
];
|
||||
};
|
||||
patchedNixpkgs = nixpkgs.lib.fix (self: (import "${patchedNixpkgsSrc}/flake.nix").outputs { self = nixpkgs; });
|
||||
@ -139,7 +157,7 @@
|
||||
nixpkgs.lib.mapAttrs
|
||||
(hostname: cfg:
|
||||
mkSystem cfg.arch nixpkgs cfg.configurationPath hostname)
|
||||
machines;
|
||||
machineHosts;
|
||||
|
||||
packages =
|
||||
let
|
||||
@ -176,7 +194,7 @@
|
||||
nixpkgs.lib.mapAttrs
|
||||
(hostname: cfg:
|
||||
mkDeploy hostname cfg.arch (builtins.head cfg.hostNames))
|
||||
machines;
|
||||
machineHosts;
|
||||
|
||||
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) inputs.deploy-rs.lib;
|
||||
|
||||
|
83
home/googlebot.nix
Normal file
83
home/googlebot.nix
Normal file
@ -0,0 +1,83 @@
|
||||
{ hostname, machineRoles }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
# Check if the current machine has the role "personal"
|
||||
thisMachineIsPersonal = builtins.elem hostname machineRoles.personal;
|
||||
in
|
||||
{
|
||||
home.username = "googlebot";
|
||||
home.homeDirectory = "/home/googlebot";
|
||||
|
||||
home.stateVersion = "24.11";
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
programs.zed-editor = {
|
||||
enable = thisMachineIsPersonal;
|
||||
extensions = [
|
||||
"nix"
|
||||
"toml"
|
||||
"html"
|
||||
"make"
|
||||
"git-firefly"
|
||||
"vue"
|
||||
"scss"
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
assistant = {
|
||||
enabled = true;
|
||||
version = "2";
|
||||
default_model = {
|
||||
provider = "openai";
|
||||
model = "gpt-4-turbo";
|
||||
};
|
||||
};
|
||||
|
||||
features = {
|
||||
edit_prediction_provider = "zed";
|
||||
};
|
||||
|
||||
node = {
|
||||
path = lib.getExe pkgs.nodejs;
|
||||
npm_path = lib.getExe' pkgs.nodejs "npm";
|
||||
};
|
||||
|
||||
auto_update = false;
|
||||
|
||||
terminal = {
|
||||
blinking = "off";
|
||||
copy_on_select = false;
|
||||
};
|
||||
|
||||
lsp = {
|
||||
rust-analyzer = {
|
||||
# binary = {
|
||||
# path = lib.getExe pkgs.rust-analyzer;
|
||||
# };
|
||||
binary = {
|
||||
path = "/run/current-system/sw/bin/nix";
|
||||
arguments = [ "develop" "--command" "rust-analyzer" ];
|
||||
};
|
||||
initialization_options = {
|
||||
cargo = {
|
||||
features = "all";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# tell zed to use direnv and direnv can use a flake.nix enviroment.
|
||||
load_direnv = "shell_hook";
|
||||
|
||||
base_keymap = "VSCode";
|
||||
theme = {
|
||||
mode = "system";
|
||||
light = "One Light";
|
||||
dark = "Andrometa";
|
||||
};
|
||||
ui_font_size = 12;
|
||||
buffer_font_size = 12;
|
||||
};
|
||||
};
|
||||
}
|
@ -8,6 +8,5 @@
|
||||
# don't use remote builders
|
||||
nix.distributedBuilds = lib.mkForce false;
|
||||
|
||||
de.enable = true;
|
||||
de.touchpad.enable = true;
|
||||
nix.gc.automatic = lib.mkForce false;
|
||||
}
|
||||
|
@ -9,7 +9,4 @@
|
||||
|
||||
networking.hostName = "nat";
|
||||
networking.interfaces.ens160.useDHCP = true;
|
||||
|
||||
de.enable = true;
|
||||
de.touchpad.enable = true;
|
||||
}
|
||||
|
@ -10,6 +10,8 @@
|
||||
# p2p mesh network
|
||||
services.tailscale.exitNode = true;
|
||||
|
||||
services.iperf3.enable = true;
|
||||
|
||||
# email server
|
||||
mailserver.enable = true;
|
||||
|
||||
|
307
machines/storage/s0/dashy.nix
Normal file
307
machines/storage/s0/dashy.nix
Normal file
@ -0,0 +1,307 @@
|
||||
{
|
||||
appConfig = {
|
||||
theme = "vaporware";
|
||||
customColors = {
|
||||
"material-dark-original" = {
|
||||
primary = "#f36558";
|
||||
background = "#39434C";
|
||||
"background-darker" = "#eb615c";
|
||||
"material-light" = "#f36558";
|
||||
"item-text-color" = "#ff948a";
|
||||
"curve-factor" = "5px";
|
||||
};
|
||||
};
|
||||
enableErrorReporting = false;
|
||||
layout = "auto";
|
||||
iconSize = "large";
|
||||
language = "en";
|
||||
startingView = "default";
|
||||
defaultOpeningMethod = "sametab";
|
||||
statusCheck = true;
|
||||
statusCheckInterval = 20;
|
||||
faviconApi = "faviconkit";
|
||||
routingMode = "history";
|
||||
enableMultiTasking = false;
|
||||
webSearch = {
|
||||
disableWebSearch = false;
|
||||
searchEngine = "duckduckgo";
|
||||
openingMethod = "sametab";
|
||||
searchBangs = { };
|
||||
};
|
||||
enableFontAwesome = true;
|
||||
cssThemes = [ ];
|
||||
externalStyleSheet = [ ];
|
||||
hideComponents = {
|
||||
hideHeading = false;
|
||||
hideNav = false;
|
||||
hideSearch = false;
|
||||
hideSettings = false;
|
||||
hideFooter = false;
|
||||
hideSplashScreen = false;
|
||||
};
|
||||
auth = {
|
||||
enableGuestAccess = false;
|
||||
users = [ ];
|
||||
enableKeycloak = false;
|
||||
keycloak = { };
|
||||
};
|
||||
allowConfigEdit = true;
|
||||
enableServiceWorker = false;
|
||||
disableContextMenu = false;
|
||||
disableUpdateChecks = false;
|
||||
disableSmartSort = false;
|
||||
};
|
||||
|
||||
pageInfo = {
|
||||
title = "s0";
|
||||
description = "s0";
|
||||
};
|
||||
|
||||
sections = [
|
||||
(
|
||||
let
|
||||
# Define the media section items once.
|
||||
mediaItems = {
|
||||
jellyfin = {
|
||||
title = "Jellyfin";
|
||||
icon = "hl-jellyfin";
|
||||
url = "https://jellyfin.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "0_1956_jellyfin";
|
||||
};
|
||||
sonarr = {
|
||||
title = "Sonarr";
|
||||
description = "Manage TV";
|
||||
icon = "hl-sonarr";
|
||||
url = "https://sonarr.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "1_1956_sonarr";
|
||||
};
|
||||
radarr = {
|
||||
title = "Radarr";
|
||||
description = "Manage Movies";
|
||||
icon = "hl-radarr";
|
||||
url = "https://radarr.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "2_1956_radarr";
|
||||
};
|
||||
lidarr = {
|
||||
title = "Lidarr";
|
||||
description = "Manage Music";
|
||||
icon = "hl-lidarr";
|
||||
url = "https://lidarr.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "3_1956_lidarr";
|
||||
};
|
||||
prowlarr = {
|
||||
title = "Prowlarr";
|
||||
description = "Indexers";
|
||||
icon = "hl-prowlarr";
|
||||
url = "https://prowlarr.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "4_1956_prowlarr";
|
||||
};
|
||||
bazarr = {
|
||||
title = "Bazarr";
|
||||
description = "Subtitles";
|
||||
icon = "hl-bazarr";
|
||||
url = "https://bazarr.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "5_1956_bazarr";
|
||||
};
|
||||
navidrome = {
|
||||
title = "Navidrome";
|
||||
description = "Play Music";
|
||||
icon = "hl-navidrome";
|
||||
url = "https://music.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "6_1956_navidrome";
|
||||
};
|
||||
transmission = {
|
||||
title = "Transmission";
|
||||
description = "Torrenting";
|
||||
icon = "hl-transmission";
|
||||
url = "https://transmission.s0.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "7_1956_transmission";
|
||||
};
|
||||
};
|
||||
# Build the list once.
|
||||
mediaList = [
|
||||
mediaItems.jellyfin
|
||||
mediaItems.sonarr
|
||||
mediaItems.radarr
|
||||
mediaItems.lidarr
|
||||
mediaItems.prowlarr
|
||||
mediaItems.bazarr
|
||||
mediaItems.navidrome
|
||||
mediaItems.transmission
|
||||
];
|
||||
in
|
||||
{
|
||||
name = "Media & Entertainment";
|
||||
icon = "fas fa-photo-video";
|
||||
displayData = {
|
||||
sortBy = "most-used";
|
||||
cols = 1;
|
||||
rows = 1;
|
||||
collapsed = false;
|
||||
hideForGuests = false;
|
||||
};
|
||||
items = mediaList;
|
||||
filteredItems = mediaList;
|
||||
}
|
||||
)
|
||||
(
|
||||
let
|
||||
networkItems = {
|
||||
gateway = {
|
||||
title = "Gateway";
|
||||
description = "openwrt";
|
||||
icon = "hl-openwrt";
|
||||
url = "http://openwrt.lan/";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "0_746_gateway";
|
||||
};
|
||||
wireless = {
|
||||
title = "Wireless";
|
||||
description = "openwrt (ish)";
|
||||
icon = "hl-openwrt";
|
||||
url = "http://PacketProvocateur.lan";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "1_746_wireless";
|
||||
};
|
||||
};
|
||||
networkList = [
|
||||
networkItems.gateway
|
||||
networkItems.wireless
|
||||
];
|
||||
in
|
||||
{
|
||||
name = "Network";
|
||||
icon = "fas fa-network-wired";
|
||||
items = networkList;
|
||||
filteredItems = networkList;
|
||||
displayData = {
|
||||
sortBy = "default";
|
||||
rows = 1;
|
||||
cols = 1;
|
||||
collapsed = false;
|
||||
hideForGuests = false;
|
||||
};
|
||||
}
|
||||
)
|
||||
|
||||
(
|
||||
let
|
||||
servicesItems = {
|
||||
matrix = {
|
||||
title = "Matrix";
|
||||
description = "";
|
||||
icon = "hl-matrix";
|
||||
url = "https://chat.neet.space";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "0_836_matrix";
|
||||
};
|
||||
radio = {
|
||||
title = "Radio";
|
||||
description = "Radio service";
|
||||
icon = "generative";
|
||||
url = "https://radio.runyan.org";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "1_836_radio";
|
||||
};
|
||||
mumble = {
|
||||
title = "Mumble";
|
||||
description = "voice.neet.space";
|
||||
icon = "hl-mumble";
|
||||
url = "https://voice.neet.space";
|
||||
target = "sametab";
|
||||
statusCheck = false;
|
||||
id = "2_836_mumble";
|
||||
};
|
||||
irc = {
|
||||
title = "IRC";
|
||||
description = "irc.neet.dev";
|
||||
icon = "hl-thelounge";
|
||||
url = "https://irc.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "3_836_irc";
|
||||
};
|
||||
git = {
|
||||
title = "Git";
|
||||
description = "git.neet.dev";
|
||||
icon = "hl-gitea";
|
||||
url = "https://git.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "4_836_git";
|
||||
};
|
||||
nextcloud = {
|
||||
title = "Nextcloud";
|
||||
description = "neet.cloud";
|
||||
icon = "hl-nextcloud";
|
||||
url = "https://neet.cloud";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "5_836_nextcloud";
|
||||
};
|
||||
roundcube = {
|
||||
title = "Roundcube";
|
||||
description = "mail.neet.dev";
|
||||
icon = "hl-roundcube";
|
||||
url = "https://mail.neet.dev";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "6_836_roundcube";
|
||||
};
|
||||
jitsimeet = {
|
||||
title = "Jitsi Meet";
|
||||
description = "meet.neet.space";
|
||||
icon = "hl-jitsimeet";
|
||||
url = "https://meet.neet.space";
|
||||
target = "sametab";
|
||||
statusCheck = true;
|
||||
id = "7_836_jitsimeet";
|
||||
};
|
||||
};
|
||||
servicesList = [
|
||||
servicesItems.matrix
|
||||
servicesItems.radio
|
||||
servicesItems.mumble
|
||||
servicesItems.irc
|
||||
servicesItems.git
|
||||
servicesItems.nextcloud
|
||||
servicesItems.roundcube
|
||||
servicesItems.jitsimeet
|
||||
];
|
||||
in
|
||||
{
|
||||
name = "Services";
|
||||
icon = "fas fa-monitor-heart-rate";
|
||||
items = servicesList;
|
||||
filteredItems = servicesList;
|
||||
displayData = {
|
||||
sortBy = "default";
|
||||
rows = 1;
|
||||
cols = 1;
|
||||
collapsed = false;
|
||||
hideForGuests = false;
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
}
|
@ -1,241 +0,0 @@
|
||||
appConfig:
|
||||
theme: vaporware
|
||||
customColors:
|
||||
material-dark-original:
|
||||
primary: '#f36558'
|
||||
background: '#39434C'
|
||||
background-darker: '#eb615c'
|
||||
material-light: '#f36558'
|
||||
item-text-color: '#ff948a'
|
||||
curve-factor: 5px
|
||||
enableErrorReporting: false
|
||||
layout: auto
|
||||
iconSize: large
|
||||
language: en
|
||||
startingView: default
|
||||
defaultOpeningMethod: sametab
|
||||
statusCheck: true
|
||||
statusCheckInterval: 20
|
||||
faviconApi: faviconkit
|
||||
routingMode: history
|
||||
enableMultiTasking: false
|
||||
webSearch:
|
||||
disableWebSearch: false
|
||||
searchEngine: duckduckgo
|
||||
openingMethod: sametab
|
||||
searchBangs: {}
|
||||
enableFontAwesome: true
|
||||
cssThemes: []
|
||||
externalStyleSheet: []
|
||||
hideComponents:
|
||||
hideHeading: false
|
||||
hideNav: false
|
||||
hideSearch: false
|
||||
hideSettings: false
|
||||
hideFooter: false
|
||||
hideSplashScreen: false
|
||||
auth:
|
||||
enableGuestAccess: false
|
||||
users: []
|
||||
enableKeycloak: false
|
||||
keycloak: {}
|
||||
allowConfigEdit: true
|
||||
enableServiceWorker: false
|
||||
disableContextMenu: false
|
||||
disableUpdateChecks: false
|
||||
disableSmartSort: false
|
||||
pageInfo:
|
||||
title: s0
|
||||
description: s0
|
||||
sections:
|
||||
- name: Media & Entertainment
|
||||
icon: fas fa-photo-video
|
||||
displayData:
|
||||
sortBy: most-used
|
||||
cols: 1
|
||||
rows: 1
|
||||
collapsed: false
|
||||
hideForGuests: false
|
||||
items:
|
||||
- &ref_0
|
||||
title: Jellyfin
|
||||
icon: hl-jellyfin
|
||||
url: https://jellyfin.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 0_1956_jellyfin
|
||||
- &ref_1
|
||||
title: Sonarr
|
||||
description: Manage TV
|
||||
icon: hl-sonarr
|
||||
url: https://sonarr.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 1_1956_sonarr
|
||||
- &ref_2
|
||||
title: Radarr
|
||||
description: Manage Movies
|
||||
icon: hl-radarr
|
||||
url: https://radarr.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 2_1956_radarr
|
||||
- &ref_3
|
||||
title: Lidarr
|
||||
description: Manage Music
|
||||
icon: hl-lidarr
|
||||
url: https://lidarr.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 3_1956_lidarr
|
||||
- &ref_4
|
||||
title: Prowlarr
|
||||
description: Indexers
|
||||
icon: hl-prowlarr
|
||||
url: https://prowlarr.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 4_1956_prowlarr
|
||||
- &ref_5
|
||||
title: Bazarr
|
||||
description: Subtitles
|
||||
icon: hl-bazarr
|
||||
url: https://bazarr.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 5_1956_bazarr
|
||||
- &ref_6
|
||||
title: Navidrome
|
||||
description: Play Music
|
||||
icon: hl-navidrome
|
||||
url: https://music.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 6_1956_navidrome
|
||||
- &ref_7
|
||||
title: Transmission
|
||||
description: Torrenting
|
||||
icon: hl-transmission
|
||||
url: https://transmission.s0.neet.dev
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 7_1956_transmission
|
||||
filteredItems:
|
||||
- *ref_0
|
||||
- *ref_1
|
||||
- *ref_2
|
||||
- *ref_3
|
||||
- *ref_4
|
||||
- *ref_5
|
||||
- *ref_6
|
||||
- *ref_7
|
||||
- name: Network
|
||||
icon: fas fa-network-wired
|
||||
items:
|
||||
- &ref_8
|
||||
title: Gateway
|
||||
description: openwrt
|
||||
icon: hl-openwrt
|
||||
url: http://openwrt.lan/
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 0_746_gateway
|
||||
- &ref_9
|
||||
title: Wireless
|
||||
description: openwrt (ish)
|
||||
icon: hl-openwrt
|
||||
url: http://PacketProvocateur.lan
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 1_746_wireless
|
||||
filteredItems:
|
||||
- *ref_8
|
||||
- *ref_9
|
||||
displayData:
|
||||
sortBy: default
|
||||
rows: 1
|
||||
cols: 1
|
||||
collapsed: false
|
||||
hideForGuests: false
|
||||
- name: Services
|
||||
icon: fas fa-monitor-heart-rate
|
||||
items:
|
||||
- &ref_10
|
||||
title: Matrix
|
||||
description: ''
|
||||
icon: hl-matrix
|
||||
url: https://chat.neet.space
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 0_836_matrix
|
||||
- &ref_11
|
||||
title: Radio
|
||||
description: Radio service
|
||||
icon: generative
|
||||
url: https://radio.runyan.org
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 1_836_radio
|
||||
- &ref_12
|
||||
title: Mumble
|
||||
description: voice.neet.space
|
||||
icon: hl-mumble
|
||||
url: https://voice.neet.space
|
||||
target: sametab
|
||||
statusCheck: false
|
||||
id: 2_836_mumble
|
||||
- &ref_13
|
||||
title: IRC
|
||||
description: irc.neet.dev
|
||||
icon: hl-thelounge
|
||||
url: https://irc.neet.dev
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 3_836_irc
|
||||
- &ref_14
|
||||
title: Git
|
||||
description: git.neet.dev
|
||||
icon: hl-gitea
|
||||
url: https://git.neet.dev
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 4_836_git
|
||||
- &ref_15
|
||||
title: Nextcloud
|
||||
description: neet.cloud
|
||||
icon: hl-nextcloud
|
||||
url: https://neet.cloud
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 5_836_nextcloud
|
||||
- &ref_16
|
||||
title: Roundcube
|
||||
description: mail.neet.dev
|
||||
icon: hl-roundcube
|
||||
url: https://mail.neet.dev
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 6_836_roundcube
|
||||
- &ref_17
|
||||
title: Jitsi Meet
|
||||
description: meet.neet.space
|
||||
icon: hl-jitsimeet
|
||||
url: https://meet.neet.space
|
||||
target: sametab
|
||||
statusCheck: true
|
||||
id: 7_836_jitsimeet
|
||||
filteredItems:
|
||||
- *ref_10
|
||||
- *ref_11
|
||||
- *ref_12
|
||||
- *ref_13
|
||||
- *ref_14
|
||||
- *ref_15
|
||||
- *ref_16
|
||||
- *ref_17
|
||||
displayData:
|
||||
sortBy: default
|
||||
rows: 1
|
||||
cols: 1
|
||||
collapsed: false
|
||||
hideForGuests: false
|
@ -171,16 +171,23 @@
|
||||
openFirewall = false; # All nginx services are internal
|
||||
virtualHosts =
|
||||
let
|
||||
mkVirtualHost = external: internal:
|
||||
mkHost = external: config:
|
||||
{
|
||||
${external} = {
|
||||
useACMEHost = "s0.neet.dev"; # Use wildcard cert
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
locations."/" = config;
|
||||
};
|
||||
};
|
||||
mkVirtualHost = external: internal:
|
||||
mkHost external {
|
||||
proxyPass = internal;
|
||||
proxyWebsockets = true;
|
||||
};
|
||||
};
|
||||
mkStaticHost = external: static:
|
||||
mkHost external {
|
||||
root = static;
|
||||
tryFiles = "$uri /index.html ";
|
||||
};
|
||||
in
|
||||
lib.mkMerge [
|
||||
@ -193,7 +200,7 @@
|
||||
(mkVirtualHost "unifi.s0.neet.dev" "https://localhost:8443")
|
||||
(mkVirtualHost "music.s0.neet.dev" "http://localhost:4533")
|
||||
(mkVirtualHost "jellyfin.s0.neet.dev" "http://localhost:8096")
|
||||
(mkVirtualHost "s0.neet.dev" "http://localhost:56815")
|
||||
(mkStaticHost "s0.neet.dev" config.services.dashy.finalDrv)
|
||||
{
|
||||
# Landing page LAN redirect
|
||||
"s0" = {
|
||||
@ -213,6 +220,7 @@
|
||||
};
|
||||
}
|
||||
(mkVirtualHost "vacuum.s0.neet.dev" "http://192.168.1.125") # valetudo
|
||||
(mkVirtualHost "sandman.s0.neet.dev" "http://192.168.9.14:3000") # es
|
||||
(mkVirtualHost "todo.s0.neet.dev" "http://localhost:${toString config.services.vikunja.port}")
|
||||
];
|
||||
|
||||
@ -254,7 +262,7 @@
|
||||
virtualisation.podman.dockerSocket.enable = true; # TODO needed?
|
||||
services.dashy = {
|
||||
enable = true;
|
||||
configFile = ./dashy.yaml;
|
||||
settings = import ./dashy.nix;
|
||||
};
|
||||
|
||||
services.unifi = {
|
||||
|
@ -36,6 +36,11 @@ let
|
||||
record = "preset-record-generic-audio-copy";
|
||||
};
|
||||
};
|
||||
detect = {
|
||||
width = 1280;
|
||||
height = 720;
|
||||
fps = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
services.go2rtc.settings.streams = lib.mkMerge [
|
||||
@ -54,7 +59,7 @@ let
|
||||
# - go2rtc: ${VAR}
|
||||
# - frigate: {VAR}
|
||||
primaryUrl = "rtsp://admin:\${FRIGATE_RTSP_PASSWORD}@${address}/cam/realmonitor?channel=1&subtype=0";
|
||||
detectUrl = "rtsp://admin:{FRIGATE_RTSP_PASSWORD}@${address}/cam/realmonitor?channel=1&subtype=1";
|
||||
detectUrl = "rtsp://admin:{FRIGATE_RTSP_PASSWORD}@${address}/cam/realmonitor?channel=1&subtype=3";
|
||||
in
|
||||
mkCamera name primaryUrl detectUrl;
|
||||
|
||||
@ -95,8 +100,9 @@ lib.mkMerge [
|
||||
enabled = true;
|
||||
# sync_recordings = true; # detect if recordings were deleted outside of frigate (expensive)
|
||||
retain = {
|
||||
days = 2; # Keep video for 2 days
|
||||
mode = "motion";
|
||||
days = 7; # Keep video for 7 days
|
||||
mode = "all";
|
||||
# mode = "motion";
|
||||
};
|
||||
events = {
|
||||
retain = {
|
||||
@ -108,7 +114,7 @@ lib.mkMerge [
|
||||
};
|
||||
# Make frigate aware of the go2rtc streams
|
||||
go2rtc.streams = config.services.go2rtc.settings.streams;
|
||||
detect.enabled = true;
|
||||
detect.enabled = false; # :(
|
||||
objects = {
|
||||
track = [ "person" "dog" ];
|
||||
};
|
||||
|
@ -58,12 +58,43 @@
|
||||
};
|
||||
swapDevices = [ ];
|
||||
|
||||
networking.vlans = {
|
||||
networking = {
|
||||
dhcpcd.enable = false;
|
||||
|
||||
vlans = {
|
||||
iot = {
|
||||
id = 2;
|
||||
interface = "eth1";
|
||||
};
|
||||
};
|
||||
|
||||
interfaces.eth1.ipv4.addresses = [{
|
||||
address = "192.168.1.2";
|
||||
prefixLength = 21;
|
||||
}];
|
||||
interfaces.iot.ipv4.addresses = [{
|
||||
address = "192.168.9.8";
|
||||
prefixLength = 22;
|
||||
}];
|
||||
|
||||
defaultGateway = "192.168.1.1";
|
||||
nameservers = [ "1.1.1.1" "8.8.8.8" ];
|
||||
};
|
||||
|
||||
# networking = {
|
||||
# vlans = {
|
||||
# iot = {
|
||||
# id = 2;
|
||||
# interface = "eth1";
|
||||
# };
|
||||
# };
|
||||
|
||||
# defaultGateway = {
|
||||
# interface = "eth1";
|
||||
# address = "192.168.1.1";
|
||||
# metric = 10; # always use this route as default gateway
|
||||
# };
|
||||
# };
|
||||
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
}
|
||||
|
@ -5,8 +5,6 @@
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
de.enable = true;
|
||||
|
||||
# Login DE Option: Steam
|
||||
programs.steam.gamescopeSession.enable = true;
|
||||
# programs.gamescope.capSysNice = true;
|
||||
|
@ -6,4 +6,8 @@ let
|
||||
in
|
||||
{
|
||||
actual-server = prev.callPackage ./actualbudget { };
|
||||
|
||||
# Copied entire package from nixpkgs to downgrade to python 3.11 since 3.12 is broken.
|
||||
# See: https://github.com/Py-KMS-Organization/py-kms/issues/117
|
||||
pykms = prev.callPackage ./pykms.nix { };
|
||||
}
|
||||
|
103
overlays/pykms.nix
Normal file
103
overlays/pykms.nix
Normal file
@ -0,0 +1,103 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, python311
|
||||
, writeText
|
||||
, writeShellScript
|
||||
, sqlite
|
||||
, nixosTests
|
||||
}:
|
||||
let
|
||||
pypkgs = python311.pkgs;
|
||||
|
||||
dbSql = writeText "create_pykms_db.sql" ''
|
||||
CREATE TABLE clients(
|
||||
clientMachineId TEXT,
|
||||
machineName TEXT,
|
||||
applicationId TEXT,
|
||||
skuId TEXT,
|
||||
licenseStatus TEXT,
|
||||
lastRequestTime INTEGER,
|
||||
kmsEpid TEXT,
|
||||
requestCount INTEGER
|
||||
);
|
||||
'';
|
||||
|
||||
dbScript = writeShellScript "create_pykms_db.sh" ''
|
||||
set -eEuo pipefail
|
||||
|
||||
db=''${1:-/var/lib/pykms/clients.db}
|
||||
|
||||
if [ ! -e $db ] ; then
|
||||
${lib.getBin sqlite}/bin/sqlite3 $db < ${dbSql}
|
||||
fi
|
||||
'';
|
||||
|
||||
in
|
||||
pypkgs.buildPythonApplication rec {
|
||||
pname = "pykms";
|
||||
version = "unstable-2024-05-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Py-KMS-Organization";
|
||||
repo = "py-kms";
|
||||
rev = "646f4766f4195dbea0695700a7ddaac70a3294f9";
|
||||
hash = "sha256-YCqPo7WkCfXyuTjL4IYapdcUN/Vj465Jz6XhQessyz0=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/py-kms";
|
||||
|
||||
propagatedBuildInputs = with pypkgs; [
|
||||
systemd
|
||||
pytz
|
||||
tzlocal
|
||||
dnspython
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
siteDir=$out/${python311.sitePackages}
|
||||
|
||||
substituteInPlace pykms_DB2Dict.py \
|
||||
--replace "'KmsDataBase.xml'" "'$siteDir/KmsDataBase.xml'"
|
||||
'';
|
||||
|
||||
format = "other";
|
||||
|
||||
# there are no tests
|
||||
doCheck = false;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $siteDir
|
||||
|
||||
PYTHONPATH="$PYTHONPATH:$siteDir"
|
||||
|
||||
mv * $siteDir
|
||||
for b in Client Server ; do
|
||||
makeWrapper ${python311.interpreter} $out/bin/''${b,,} \
|
||||
--argv0 pykms-''${b,,} \
|
||||
--add-flags $siteDir/pykms_$b.py \
|
||||
--set PYTHONPATH $PYTHONPATH
|
||||
done
|
||||
|
||||
install -Dm755 ${dbScript} $out/libexec/create_pykms_db.sh
|
||||
|
||||
install -Dm644 ../README.md -t $out/share/doc/pykms
|
||||
|
||||
${python311.interpreter} -m compileall $siteDir
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.tests = { inherit (nixosTests) pykms; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Windows KMS (Key Management Service) server written in Python";
|
||||
homepage = "https://github.com/Py-KMS-Organization/py-kms";
|
||||
license = licenses.unlicense;
|
||||
maintainers = with maintainers; [
|
||||
peterhoeg
|
||||
zopieux
|
||||
];
|
||||
};
|
||||
}
|
15
patches/dont-break-nix-serve.patch
Normal file
15
patches/dont-break-nix-serve.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/nixos/modules/services/video/frigate.nix b/nixos/modules/services/video/frigate.nix
|
||||
index 49f8ed673816..643b59d68dde 100644
|
||||
--- a/nixos/modules/services/video/frigate.nix
|
||||
+++ b/nixos/modules/services/video/frigate.nix
|
||||
@@ -482,10 +482,6 @@ in
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
- # Frigate wants to connect on 127.0.0.1:5000 for unauthenticated requests
|
||||
- # https://github.com/NixOS/nixpkgs/issues/370349
|
||||
- listen 127.0.0.1:5000;
|
||||
-
|
||||
# vod settings
|
||||
vod_base_url "";
|
||||
vod_segments_base_url "";
|
Loading…
x
Reference in New Issue
Block a user