hai! wo? ich bin ein fisch.

This commit is contained in:
marty 2026-01-10 19:21:12 +01:00
parent eaea15fa3a
commit ef91935d4b
14 changed files with 196 additions and 5 deletions

21
flake.lock generated
View file

@ -721,6 +721,26 @@
"type": "github" "type": "github"
} }
}, },
"noctalia": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1768022677,
"narHash": "sha256-OhfqR3b/pESZOMwRpPBYbFJzKjVreok0+KEOFEUnVTk=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "8636e5be1debfc99ef50f16003d5d122b5f30f3d",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"type": "github"
}
},
"optnix": { "optnix": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
@ -772,6 +792,7 @@
"hyprland-plugins": "hyprland-plugins", "hyprland-plugins": "hyprland-plugins",
"nixos-cli": "nixos-cli", "nixos-cli": "nixos-cli",
"nixpkgs": "nixpkgs_6", "nixpkgs": "nixpkgs_6",
"noctalia": "noctalia",
"walker": "walker", "walker": "walker",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }

View file

@ -26,6 +26,10 @@
agenix = { agenix = {
url = "github:ryantm/agenix"; url = "github:ryantm/agenix";
}; };
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =

View file

@ -26,7 +26,10 @@
shell = pkgs.fish; shell = pkgs.fish;
}; };
imports = [ ./hardware.nix ]; imports = [
./hardware.nix
# ../../modules/server/nginx.nix
];
programs = { programs = {
light.enable = true; light.enable = true;

View file

@ -87,6 +87,7 @@
imports = [ imports = [
inputs.walker.homeManagerModules.default inputs.walker.homeManagerModules.default
inputs.noctalia.homeModules.default
./../../modules ./../../modules
]; ];

View file

@ -111,6 +111,7 @@
imports = [ imports = [
inputs.walker.homeManagerModules.default inputs.walker.homeManagerModules.default
inputs.noctalia.homeModules.default
./../../modules ./../../modules
]; ];

View file

@ -86,7 +86,6 @@
}; };
imports = [ imports = [
inputs.walker.homeManagerModules.default
./../../modules ./../../modules
]; ];

View file

@ -21,11 +21,12 @@
enable = true; enable = true;
numlock = true; numlock = true;
}; };
waybar.enable = true; # waybar.enable = true;
walker.enable = true; walker.enable = true;
wallpaper.enable = true; wallpaper.enable = true;
grimblast.enable = true; grimblast.enable = true;
audio.enable = true; audio.enable = true;
noctalia.enable = true;
}; };
messaging.enable = true; messaging.enable = true;
internet = lib.mkDefault { internet = lib.mkDefault {

View file

@ -21,11 +21,12 @@
hyprland = { hyprland = {
enable = true; enable = true;
}; };
waybar.enable = true; # waybar.enable = true;
walker.enable = true; walker.enable = true;
wallpaper.enable = true; wallpaper.enable = true;
grimblast.enable = true; grimblast.enable = true;
audio.enable = true; audio.enable = true;
noctalia.enable = true;
}; };
messaging.enable = true; messaging.enable = true;
internet = lib.mkDefault { internet = lib.mkDefault {

View file

@ -14,6 +14,7 @@
./wallpaper.nix ./wallpaper.nix
./grimblast.nix ./grimblast.nix
./audio.nix ./audio.nix
./noctalia.nix
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [
wl-clipboard wl-clipboard

View file

@ -0,0 +1,22 @@
{
pkgs,
inputs,
lib,
config,
...
}:
{
options = {
desktop = {
noctalia.enable = lib.mkEnableOption "enable noctalia";
};
};
config = lib.mkIf config.desktop.noctalia.enable {
programs.noctalia-shell = {
enable = true;
};
};
}

View file

@ -0,0 +1,75 @@
{
config,
lib,
pkgs,
...
}:
{
options.server = {
jellyfin = {
enable = lib.mkEnableOption "enable jelyfin";
port = lib.mkOption {
default = 8096;
description = "set jellyfin port"
};
public = {
enable = lib.mkEnableOption "make jellyfin public";
subdomain = lib.mkOption {
default = "watch";
description = "set jellyfin subdomain";
};
};
};
jellyseer = {
enable = lib.mkEnableOption "enable jellyseer";
port = lib.mkOption {
default = 8097;
description = "set jellyseer port"
};
public = {
enable = lib.mkEnableOption "make jellyseer public";
subdomain = lib.mkOption {
default = "jellyseer";
description = "set jellyseer subdomain";
};
};
};
};
config = {
environment.systemPackages = config.server.jellyfin.enable [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
services = {
jellyfin = lib.mkIf config.server.jellyfin.enable {
enable = true;
};
jellyseer = lib.mkIf config.server-jellyseer.enable {
enable = true;
};
nginx.virtualHosts = {
"${config.server.jellyfin.public.subdomain}.${config.domain}" =
lib.mkIf config.server.jellyfin.public.enable
{
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${config.server.jellyfin.port}";
};
};
"${config.server.jellyseer.public.subdomain}.${config.domain}" = lib.mkIf config.server.jellyfin.public.enable {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${config.server.jellyseer.port}";
};
};
};
};
};
};
};
}

57
modules/server/nginx.nix Normal file
View file

@ -0,0 +1,57 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
domain = lib.mkOption {
default = "example.com";
description = "set domain name";
};
email = lib.mkOption {
default = "${config.main-user.userName}.${config.domain}";
description = "set email";
};
nginx = {
};
};
config = {
users = {
users = {
nginx = {
group = "nginx";
extraGroups = [
"acme"
"users"
];
isSystemUser = true;
};
};
groups = {
nginx = { };
};
};
services = {
nginx = {
enable = true;
recommendedTlsSettings = true;
recommendedOptimisation = true;
recommendedGzipSettings = true;
recommendedProxySettings = true;
clientMaxBodySize = "10G";
statusPage = true;
};
};
security = {
acme = {
acceptTerms = true;
defaults.email = config.email;
};
};
};
}

View file

@ -26,7 +26,6 @@
size = 16; size = 16;
package = pkgs.nerd-fonts.fira-code; package = pkgs.nerd-fonts.fira-code;
}; };
themeFile = "Catppuccin-Mocha";
settings = { settings = {
wayland_titlebar_color = "system"; wayland_titlebar_color = "system";
macos_titlebar_color = "system"; macos_titlebar_color = "system";

View file

@ -16,6 +16,12 @@
displayManager.ly = { displayManager.ly = {
enable = true; enable = true;
}; };
power-profiles-daemon = {
enable = true;
};
upower = {
enable = true;
};
}; };
programs.hyprland = { programs.hyprland = {
enable = true; enable = true;