From ef91935d4b1cc02dd7afd65b12e2ac76dc2ba188 Mon Sep 17 00:00:00 2001 From: marty Date: Sat, 10 Jan 2026 19:21:12 +0100 Subject: [PATCH] hai! wo? ich bin ein fisch. --- flake.lock | 21 +++++++++ flake.nix | 4 ++ hosts/marty-latitude/default.nix | 5 ++- hosts/marty-latitude/home.nix | 1 + hosts/marty-pc/home.nix | 1 + hosts/marty-server/home.nix | 1 - modules/defaults/desktop.nix | 3 +- modules/defaults/laptop.nix | 3 +- modules/desktop/default.nix | 1 + modules/desktop/noctalia.nix | 22 +++++++++ modules/server/media/jellyfin.nix | 75 +++++++++++++++++++++++++++++++ modules/server/nginx.nix | 57 +++++++++++++++++++++++ modules/terminal/kitty.nix | 1 - system/display-manager.nix | 6 +++ 14 files changed, 196 insertions(+), 5 deletions(-) create mode 100644 modules/desktop/noctalia.nix create mode 100644 modules/server/media/jellyfin.nix create mode 100644 modules/server/nginx.nix diff --git a/flake.lock b/flake.lock index 236c678..524d8e5 100644 --- a/flake.lock +++ b/flake.lock @@ -721,6 +721,26 @@ "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": { "inputs": { "flake-compat": "flake-compat_3", @@ -772,6 +792,7 @@ "hyprland-plugins": "hyprland-plugins", "nixos-cli": "nixos-cli", "nixpkgs": "nixpkgs_6", + "noctalia": "noctalia", "walker": "walker", "zen-browser": "zen-browser" } diff --git a/flake.nix b/flake.nix index 0f48b44..3d2d0ae 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,10 @@ agenix = { url = "github:ryantm/agenix"; }; + noctalia = { + url = "github:noctalia-dev/noctalia-shell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = diff --git a/hosts/marty-latitude/default.nix b/hosts/marty-latitude/default.nix index 66ac63a..f70da1e 100644 --- a/hosts/marty-latitude/default.nix +++ b/hosts/marty-latitude/default.nix @@ -26,7 +26,10 @@ shell = pkgs.fish; }; - imports = [ ./hardware.nix ]; + imports = [ + ./hardware.nix + # ../../modules/server/nginx.nix + ]; programs = { light.enable = true; diff --git a/hosts/marty-latitude/home.nix b/hosts/marty-latitude/home.nix index 66c2bec..9f4b4ab 100644 --- a/hosts/marty-latitude/home.nix +++ b/hosts/marty-latitude/home.nix @@ -87,6 +87,7 @@ imports = [ inputs.walker.homeManagerModules.default + inputs.noctalia.homeModules.default ./../../modules ]; diff --git a/hosts/marty-pc/home.nix b/hosts/marty-pc/home.nix index 16ebc57..4e9b0bf 100644 --- a/hosts/marty-pc/home.nix +++ b/hosts/marty-pc/home.nix @@ -111,6 +111,7 @@ imports = [ inputs.walker.homeManagerModules.default + inputs.noctalia.homeModules.default ./../../modules ]; diff --git a/hosts/marty-server/home.nix b/hosts/marty-server/home.nix index 13cfd08..1252bf0 100644 --- a/hosts/marty-server/home.nix +++ b/hosts/marty-server/home.nix @@ -86,7 +86,6 @@ }; imports = [ - inputs.walker.homeManagerModules.default ./../../modules ]; diff --git a/modules/defaults/desktop.nix b/modules/defaults/desktop.nix index 3bfccbe..46a86e7 100644 --- a/modules/defaults/desktop.nix +++ b/modules/defaults/desktop.nix @@ -21,11 +21,12 @@ enable = true; numlock = true; }; - waybar.enable = true; + # waybar.enable = true; walker.enable = true; wallpaper.enable = true; grimblast.enable = true; audio.enable = true; + noctalia.enable = true; }; messaging.enable = true; internet = lib.mkDefault { diff --git a/modules/defaults/laptop.nix b/modules/defaults/laptop.nix index 4ad557f..cd4f4a0 100644 --- a/modules/defaults/laptop.nix +++ b/modules/defaults/laptop.nix @@ -21,11 +21,12 @@ hyprland = { enable = true; }; - waybar.enable = true; + # waybar.enable = true; walker.enable = true; wallpaper.enable = true; grimblast.enable = true; audio.enable = true; + noctalia.enable = true; }; messaging.enable = true; internet = lib.mkDefault { diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index aa22821..07f812b 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -14,6 +14,7 @@ ./wallpaper.nix ./grimblast.nix ./audio.nix + ./noctalia.nix ]; home.packages = with pkgs; [ wl-clipboard diff --git a/modules/desktop/noctalia.nix b/modules/desktop/noctalia.nix new file mode 100644 index 0000000..d2c2df7 --- /dev/null +++ b/modules/desktop/noctalia.nix @@ -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; + }; + }; +} diff --git a/modules/server/media/jellyfin.nix b/modules/server/media/jellyfin.nix new file mode 100644 index 0000000..71badce --- /dev/null +++ b/modules/server/media/jellyfin.nix @@ -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}"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/modules/server/nginx.nix b/modules/server/nginx.nix new file mode 100644 index 0000000..0cc6247 --- /dev/null +++ b/modules/server/nginx.nix @@ -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; + }; + }; + }; +} diff --git a/modules/terminal/kitty.nix b/modules/terminal/kitty.nix index 0fa9daf..a7824d3 100644 --- a/modules/terminal/kitty.nix +++ b/modules/terminal/kitty.nix @@ -26,7 +26,6 @@ size = 16; package = pkgs.nerd-fonts.fira-code; }; - themeFile = "Catppuccin-Mocha"; settings = { wayland_titlebar_color = "system"; macos_titlebar_color = "system"; diff --git a/system/display-manager.nix b/system/display-manager.nix index d5cf4a3..fad8f15 100644 --- a/system/display-manager.nix +++ b/system/display-manager.nix @@ -16,6 +16,12 @@ displayManager.ly = { enable = true; }; + power-profiles-daemon = { + enable = true; + }; + upower = { + enable = true; + }; }; programs.hyprland = { enable = true;