Update Cfg and add proxy/wsl
This commit is contained in:
@@ -22,6 +22,9 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
nix-colors.url = "github:misterio77/nix-colors";
|
||||||
|
nixos-wsl.url = "github:nix-community/nixos-wsl";
|
||||||
|
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs:
|
outputs = inputs:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
nameValuePair = name: value: { inherit name value; };
|
nameValuePair = name: value: { inherit name value; };
|
||||||
in ({
|
in ({
|
||||||
"nixos" = inputs.nixpkgs.lib.nixosSystem {
|
"nixos" = inputs.nixpkgs.lib.nixosSystem {
|
||||||
system = syscfg.syscfg.system;
|
system = "x86_64-linux";
|
||||||
specialArgs = { inherit inputs; };
|
specialArgs = { inherit inputs; };
|
||||||
modules = [
|
modules = [
|
||||||
./modules/shared/syscfg
|
./modules/shared/syscfg
|
||||||
@@ -15,6 +15,10 @@
|
|||||||
./systems/${host}
|
./systems/${host}
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
|
||||||
|
(if (syscfg.syscfg.extra.wsl) then inputs.nixos-wsl.nixosModules.wsl else "")
|
||||||
|
(if (syscfg.syscfg.extra.wsl) then inputs.vscode-server.nixosModules.default else "")
|
||||||
|
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
@@ -28,7 +32,6 @@
|
|||||||
syscfg
|
syscfg
|
||||||
{ usercfg = userConfig; }
|
{ usercfg = userConfig; }
|
||||||
inputs.nix-colors.homeManagerModule
|
inputs.nix-colors.homeManagerModule
|
||||||
# inputs.hyprland.homeManagerModules.default
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
];
|
];
|
||||||
}) syscfg.syscfg.users);
|
}) syscfg.syscfg.users);
|
||||||
@@ -37,7 +40,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
"macos" = inputs.darwin.lib.darwinSystem {
|
"macos" = inputs.darwin.lib.darwinSystem {
|
||||||
system = syscfg.system;
|
system = "x86_64-darwin";
|
||||||
modules = [
|
modules = [
|
||||||
./modules/shared/syscfg
|
./modules/shared/syscfg
|
||||||
./modules/shared/sops
|
./modules/shared/sops
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{ ... }: { imports = [ ./base ./boot ./fs ./graphics ./power ./udev ./virt ]; }
|
{ ... }: { imports = [ ./base ./boot ./fs ./graphics ./power ./udev ./virt ./wsl ]; }
|
||||||
|
|||||||
13
modules/nixos/system/hw/wsl/default.nix
Normal file
13
modules/nixos/system/hw/wsl/default.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ lib, config, pkgs, ... }: {
|
||||||
|
config = lib.mkIf (config.syscfg.extra.wsl) {
|
||||||
|
wsl.enable = true;
|
||||||
|
wsl.defaultUser = config.syscfg.defaultUser;
|
||||||
|
wsl.extraBin = with pkgs; [
|
||||||
|
{ src = "${coreutils}/bin/uname"; }
|
||||||
|
{ src = "${coreutils}/bin/dirname"; }
|
||||||
|
{ src = "${coreutils}/bin/readlink"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
wsl.wslConf.network.generateHosts = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,9 +1,19 @@
|
|||||||
{ config, ... }: {
|
{ lib, config, ... }: {
|
||||||
networking = {
|
networking = {
|
||||||
hostName = config.syscfg.hostname;
|
hostName = config.syscfg.hostname;
|
||||||
useDHCP = true;
|
useDHCP = true;
|
||||||
nameservers = [ "1.1.1.1" "9.9.9.9" ];
|
nameservers = [ "1.1.1.1" "9.9.9.9" ];
|
||||||
|
|
||||||
|
extraHosts = ''
|
||||||
|
${lib.concatStringsSep "\n" config.syscfg.extra.hosts}
|
||||||
|
'';
|
||||||
|
|
||||||
|
proxy = lib.mkIf (config.syscfg.extra.proxy.domain != "") {
|
||||||
|
default = "http://${config.syscfg.extra.proxy.domain}:${config.syscfg.extra.proxy.port or "8080"}";
|
||||||
|
noProxy = "${config.syscfg.extra.proxy.noProxy}";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedUDPPorts =
|
allowedUDPPorts =
|
||||||
|
|||||||
@@ -37,5 +37,40 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
programs.nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
libraries = with pkgs; [
|
||||||
|
# Correctly namespaced X11 dependencies
|
||||||
|
xorg.libX11 xorg.libxcb xorg.libXi xorg.libXext xorg.libxkbfile xorg.xcbutilcursor
|
||||||
|
libpng libdrm libpulseaudio nss nspr expat libbsd
|
||||||
|
|
||||||
|
# Core system requirements
|
||||||
|
# stdenv.cc.cc
|
||||||
|
# zlib
|
||||||
|
# fuse3
|
||||||
|
# alsa-lib
|
||||||
|
# openssl
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# xorg.libXdamage
|
||||||
|
# xorg.libXfixes
|
||||||
|
# xorg.libXcomposite
|
||||||
|
# xorg.libXcursor
|
||||||
|
# xorg.libXrandr
|
||||||
|
#
|
||||||
|
# xorg.libXtst
|
||||||
|
|
||||||
|
# # Graphics and system audio/menus
|
||||||
|
# libGL
|
||||||
|
# dbus
|
||||||
|
# fontconfig
|
||||||
|
# freetype
|
||||||
|
# glib
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
];
|
||||||
|
};
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,13 @@ in {
|
|||||||
|
|
||||||
imports = [ ./ollama ];
|
imports = [ ./ollama ];
|
||||||
config = lib.mkIf (config.syscfg.make.develop) {
|
config = lib.mkIf (config.syscfg.make.develop) {
|
||||||
|
|
||||||
|
services.vscode-server = lib.mkIf (config.syscfg.extra.wsl) {
|
||||||
|
enable = true;
|
||||||
|
enableFHS = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs;
|
environment.systemPackages = with pkgs;
|
||||||
[
|
[
|
||||||
# android-tools
|
# android-tools
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{ config, containerCfg, pkgs, lib, builder, name,... }:
|
{ config, containerCfg, pkgs, lib, builder, name,... }:
|
||||||
let
|
let
|
||||||
|
version = "latest";
|
||||||
serverCfg = config.syscfg.server;
|
serverCfg = config.syscfg.server;
|
||||||
image = pkgs.dockerTools.streamLayeredImage {
|
image = pkgs.dockerTools.streamLayeredImage {
|
||||||
name = "EXAMPLE";
|
name = "EXAMPLE";
|
||||||
@@ -9,7 +10,8 @@ let
|
|||||||
Entrypoint = [ "echo 1" ];
|
Entrypoint = [ "echo 1" ];
|
||||||
ExposedPorts = { };
|
ExposedPorts = { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
settings = pkgs.writeText "settings.yaml" ...;
|
||||||
templateData = builder.mkData { name = "template"; dir = "template"; vars = {
|
templateData = builder.mkData { name = "template"; dir = "template"; vars = {
|
||||||
_ARGUMENT = "template";
|
_ARGUMENT = "template";
|
||||||
};
|
};
|
||||||
@@ -25,7 +27,8 @@ in {
|
|||||||
containers = {
|
containers = {
|
||||||
server = builder.mkContainer {
|
server = builder.mkContainer {
|
||||||
subdomain = containerCfg.subdomain;
|
subdomain = containerCfg.subdomain;
|
||||||
imageStream = image;
|
# imageStream = image;
|
||||||
|
image = "....:${version}";
|
||||||
port = 8080;
|
port = 8080;
|
||||||
secret = name;
|
secret = name;
|
||||||
extraEnv = { };
|
extraEnv = { };
|
||||||
|
|||||||
40
modules/server/containers/apps/homepage.nix
Normal file
40
modules/server/containers/apps/homepage.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{ config, containerCfg, pkgs, lib, builder, name,... }:
|
||||||
|
let
|
||||||
|
version = "latest";
|
||||||
|
serverCfg = config.syscfg.server;
|
||||||
|
|
||||||
|
settings = pkgs.writers.writeYAML "settings.yaml" {
|
||||||
|
title = "My Self-Hosted Dashboard";
|
||||||
|
base = "";
|
||||||
|
theme = "dark";
|
||||||
|
|
||||||
|
# Nested structures transfer natively to YAML blocks
|
||||||
|
# layout = {
|
||||||
|
# Infrastructure = {
|
||||||
|
# style = "grid";
|
||||||
|
# columns = 3;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
sops = false;
|
||||||
|
db = false;
|
||||||
|
|
||||||
|
containers = {
|
||||||
|
server = builder.mkContainer {
|
||||||
|
subdomain = containerCfg.subdomain;
|
||||||
|
image = "ghcr.io/gethomepage/homepage:${version}";
|
||||||
|
port = 3000;
|
||||||
|
# extraEnv = { };
|
||||||
|
extraLabels = {
|
||||||
|
"traefik.http.routers.${containerCfg.subdomain}.service" = "${containerCfg.subdomain}";
|
||||||
|
};
|
||||||
|
overrides = {
|
||||||
|
volumes = [
|
||||||
|
"${settings}:/app/config/settings.yaml:ro"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,10 +14,6 @@ in with lib; {
|
|||||||
type = types.enum [ "nixos" "macos" "home" ];
|
type = types.enum [ "nixos" "macos" "home" ];
|
||||||
default = "nixos";
|
default = "nixos";
|
||||||
};
|
};
|
||||||
system = mkOption {
|
|
||||||
type = types.enum [ "x86_64-linux" "x86_64-darwin" "-" ];
|
|
||||||
default = "x86_64-linux";
|
|
||||||
};
|
|
||||||
defaultUser = mkOption { type = types.str; };
|
defaultUser = mkOption { type = types.str; };
|
||||||
make = import ./make.nix {inherit lib;};
|
make = import ./make.nix {inherit lib;};
|
||||||
net = import ./net.nix {inherit lib;};
|
net = import ./net.nix {inherit lib;};
|
||||||
@@ -32,5 +28,6 @@ in with lib; {
|
|||||||
type = types.oneOf [ types.bool (types.submodule { options = import ./server.nix {inherit lib;}; }) ];
|
type = types.oneOf [ types.bool (types.submodule { options = import ./server.nix {inherit lib;}; }) ];
|
||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
extra = import ./extra.nix {inherit lib;};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
11
modules/shared/syscfg/extra.nix
Normal file
11
modules/shared/syscfg/extra.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ lib,... }:
|
||||||
|
with lib; {
|
||||||
|
wsl = mkOption { type = types.bool; default = false; };
|
||||||
|
hosts = mkOption { type = types.listOf (types.str); default = []; };
|
||||||
|
proxy = {
|
||||||
|
domain = mkOption { type = types.str; default = ""; };
|
||||||
|
port = mkOption { type = types.str; default = ""; };
|
||||||
|
noProxy = mkOption { type = types.str; default = ""; };
|
||||||
|
cert = mkOption { type = types.path; default = null; };
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,6 +3,5 @@
|
|||||||
hostname = "asgard";
|
hostname = "asgard";
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
type = "macos";
|
type = "macos";
|
||||||
system = "x86_64-darwin";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
syscfg = {
|
syscfg = {
|
||||||
hostname = "avalon";
|
hostname = "avalon";
|
||||||
system = "x86_64-linux";
|
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
users = [
|
users = [
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
syscfg = {
|
syscfg = {
|
||||||
hostname = "ci";
|
hostname = "ci";
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
system = "x86_64-linux";
|
|
||||||
defaultUser = "ci";
|
defaultUser = "ci";
|
||||||
users = [{
|
users = [{
|
||||||
username = "ci";
|
username = "ci";
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
syscfg = {
|
syscfg = {
|
||||||
hostname = "gateway";
|
hostname = "gateway";
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
system = "x86_64-linux";
|
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
users = [{
|
users = [{
|
||||||
username = "sora";
|
username = "sora";
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
syscfg = {
|
syscfg = {
|
||||||
hostname = "iriy";
|
hostname = "iriy";
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
system = "x86_64-linux";
|
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
users = [{
|
users = [{
|
||||||
username = "sora";
|
username = "sora";
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
syscfg = {
|
syscfg = {
|
||||||
hostname = "sandbox";
|
hostname = "sandbox";
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
system = "x86_64-linux";
|
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
users = [{
|
users = [{
|
||||||
username = "sora";
|
username = "sora";
|
||||||
@@ -38,6 +37,7 @@
|
|||||||
umami.subdomain = "umami";
|
umami.subdomain = "umami";
|
||||||
authentik.subdomain = "sso";
|
authentik.subdomain = "sso";
|
||||||
searxng.subdomain = "searx";
|
searxng.subdomain = "searx";
|
||||||
|
homepage.subdomain = "home";
|
||||||
# ===== CLOUD =====
|
# ===== CLOUD =====
|
||||||
# nextcloud.subdomain = "cloud";
|
# nextcloud.subdomain = "cloud";
|
||||||
# collabora.subdomain = "office";
|
# collabora.subdomain = "office";
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
# ===== DEV =====
|
# ===== DEV =====
|
||||||
gitea.subdomain = "git";
|
gitea.subdomain = "git";
|
||||||
# ===== HOME =====
|
# ===== HOME =====
|
||||||
openhab.subdomain = "hab";
|
# openhab.subdomain = "hab";
|
||||||
# trmnl = { subdomain = "hass"; subpath = "trmnl"; };
|
# trmnl = { subdomain = "hass"; subpath = "trmnl"; };
|
||||||
influx.subdomain = "metrum";
|
influx.subdomain = "metrum";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
syscfg = {
|
syscfg = {
|
||||||
hostname = "valinor";
|
hostname = "valinor";
|
||||||
type = "nixos";
|
type = "nixos";
|
||||||
system = "x86_64-linux";
|
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
users = [{
|
users = [{
|
||||||
username = "sora";
|
username = "sora";
|
||||||
|
|||||||
Reference in New Issue
Block a user