mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-06-16 01:55:13 -05:00
refactor: cleaned up nixos dir
This commit is contained in:
parent
89814be57c
commit
2000adb56a
77 changed files with 422 additions and 464 deletions
25
flake.nix
25
flake.nix
|
@ -75,11 +75,9 @@
|
||||||
./profiles/user0
|
./profiles/user0
|
||||||
./profiles/user1
|
./profiles/user1
|
||||||
config.nixosModules.desktop
|
config.nixosModules.desktop
|
||||||
config.nixosModules.hyprland
|
config.nixosModules.core
|
||||||
config.nixosModules.wayland
|
|
||||||
config.nixosModules.personal
|
|
||||||
config.nixosModules.shared
|
|
||||||
config.nixosModules.sops
|
config.nixosModules.sops
|
||||||
|
config.nixosModules.system
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.lix-module.nixosModules.default
|
inputs.lix-module.nixosModules.default
|
||||||
inputs.nur.modules.nixos.default
|
inputs.nur.modules.nixos.default
|
||||||
|
@ -89,10 +87,9 @@
|
||||||
./systems/fallaryn
|
./systems/fallaryn
|
||||||
./profiles/user2
|
./profiles/user2
|
||||||
config.nixosModules.fallaryn
|
config.nixosModules.fallaryn
|
||||||
config.nixosModules.personal
|
config.nixosModules.core
|
||||||
config.nixosModules.plasma
|
|
||||||
config.nixosModules.shared
|
|
||||||
config.nixosModules.sops
|
config.nixosModules.sops
|
||||||
|
config.nixosModules.system
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.lix-module.nixosModules.default
|
inputs.lix-module.nixosModules.default
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
@ -101,9 +98,10 @@
|
||||||
./systems/laptop
|
./systems/laptop
|
||||||
./profiles/user0
|
./profiles/user0
|
||||||
./profiles/user1
|
./profiles/user1
|
||||||
config.nixosModules.personal
|
config.nixosModules.laptop
|
||||||
config.nixosModules.shared
|
config.nixosModules.core
|
||||||
config.nixosModules.sops
|
config.nixosModules.sops
|
||||||
|
config.nixosModules.system
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.lix-module.nixosModules.default
|
inputs.lix-module.nixosModules.default
|
||||||
inputs.nur.modules.nixos.default
|
inputs.nur.modules.nixos.default
|
||||||
|
@ -112,9 +110,9 @@
|
||||||
bartholomew = inputs.self.lib.mkLinuxSystem [
|
bartholomew = inputs.self.lib.mkLinuxSystem [
|
||||||
./systems/bartholomew
|
./systems/bartholomew
|
||||||
./profiles/user1
|
./profiles/user1
|
||||||
config.nixosModules.gnome
|
config.nixosModules.laptop
|
||||||
config.nixosModules.personal
|
config.nixosModules.core
|
||||||
config.nixosModules.shared
|
config.nixosModules.system
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.lix-module.nixosModules.default
|
inputs.lix-module.nixosModules.default
|
||||||
];
|
];
|
||||||
|
@ -122,8 +120,9 @@
|
||||||
./systems/server
|
./systems/server
|
||||||
./profiles/user0
|
./profiles/user0
|
||||||
config.nixosModules.server
|
config.nixosModules.server
|
||||||
config.nixosModules.shared
|
config.nixosModules.core
|
||||||
config.nixosModules.sops
|
config.nixosModules.sops
|
||||||
|
config.nixosModules.system
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.lix-module.nixosModules.default
|
inputs.lix-module.nixosModules.default
|
||||||
inputs.ngipkgs.nixosModules."services.peertube"
|
inputs.ngipkgs.nixosModules."services.peertube"
|
||||||
|
|
148
nixos/default.nix
Executable file → Normal file
148
nixos/default.nix
Executable file → Normal file
|
@ -1,66 +1,38 @@
|
||||||
let
|
let
|
||||||
modulesPath = ./modules;
|
collectDirs =
|
||||||
moduleImport =
|
path:
|
||||||
path: nameTransform:
|
let
|
||||||
|
content = builtins.readDir path;
|
||||||
|
subdirs = builtins.filter (name: content.${name} == "directory") (builtins.attrNames content);
|
||||||
|
buildPath = name: path + "/${name}";
|
||||||
|
|
||||||
|
thisDirs = map buildPath subdirs;
|
||||||
|
subDirs = builtins.concatMap collectDirs thisDirs;
|
||||||
|
in
|
||||||
|
[ path ] ++ subDirs;
|
||||||
|
|
||||||
|
directoryImport =
|
||||||
|
path:
|
||||||
builtins.listToAttrs (
|
builtins.listToAttrs (
|
||||||
map
|
map (dir: {
|
||||||
(name: {
|
name = baseNameOf (toString dir);
|
||||||
name = nameTransform name;
|
value = import dir;
|
||||||
value = import (path + "/${name}");
|
}) (collectDirs path)
|
||||||
})
|
|
||||||
(
|
|
||||||
builtins.filter (
|
|
||||||
name: (builtins.readDir path).${name} == "regular" && builtins.match ".*\\.nix$" name != null
|
|
||||||
) (builtins.attrNames (builtins.readDir path))
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
modules =
|
|
||||||
moduleImport modulesPath (name: builtins.replaceStrings [ ".nix" ] [ "" ] name)
|
modules = directoryImport ./.;
|
||||||
// (
|
|
||||||
path:
|
|
||||||
builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(name: {
|
|
||||||
name = name;
|
|
||||||
value = import (path + "/${name}");
|
|
||||||
})
|
|
||||||
(
|
|
||||||
builtins.filter (name: (builtins.readDir path).${name} == "directory") (
|
|
||||||
builtins.attrNames (builtins.readDir path)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
modulesPath;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
flake.nixosModules = {
|
flake.nixosModules = {
|
||||||
personal = {
|
|
||||||
imports = builtins.attrValues {
|
|
||||||
inherit (modules)
|
|
||||||
android
|
|
||||||
audio
|
|
||||||
bluetooth
|
|
||||||
corectrl
|
|
||||||
dconf
|
|
||||||
disks
|
|
||||||
firejail
|
|
||||||
flatpak
|
|
||||||
fonts
|
|
||||||
printing
|
|
||||||
steam
|
|
||||||
sysstat
|
|
||||||
virtualization
|
|
||||||
;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
desktop = {
|
desktop = {
|
||||||
imports = builtins.attrValues {
|
imports = builtins.attrValues {
|
||||||
inherit (modules)
|
inherit (modules)
|
||||||
|
hypr
|
||||||
|
wayland
|
||||||
mullvad
|
mullvad
|
||||||
syncthing
|
syncthing
|
||||||
ollama
|
ollama
|
||||||
|
xserver
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -68,48 +40,18 @@ in
|
||||||
fallaryn = {
|
fallaryn = {
|
||||||
imports = builtins.attrValues {
|
imports = builtins.attrValues {
|
||||||
inherit (modules)
|
inherit (modules)
|
||||||
|
plasma
|
||||||
|
sddm
|
||||||
tablet
|
tablet
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
plasma = {
|
laptop = {
|
||||||
imports = builtins.attrValues {
|
|
||||||
inherit (modules)
|
|
||||||
plasma
|
|
||||||
sddm
|
|
||||||
;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gnome = {
|
|
||||||
imports = builtins.attrValues {
|
imports = builtins.attrValues {
|
||||||
inherit (modules)
|
inherit (modules)
|
||||||
gnome
|
gnome
|
||||||
;
|
xserver
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hyprland = {
|
|
||||||
imports = builtins.attrValues {
|
|
||||||
inherit (modules)
|
|
||||||
hyprland
|
|
||||||
;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
river = {
|
|
||||||
imports = builtins.attrValues {
|
|
||||||
inherit (modules)
|
|
||||||
river
|
|
||||||
;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland = {
|
|
||||||
imports = builtins.attrValues {
|
|
||||||
inherit (modules)
|
|
||||||
wayland
|
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -117,7 +59,18 @@ in
|
||||||
server = {
|
server = {
|
||||||
imports = builtins.attrValues {
|
imports = builtins.attrValues {
|
||||||
inherit (modules)
|
inherit (modules)
|
||||||
services
|
acme
|
||||||
|
caddy
|
||||||
|
jellyfin
|
||||||
|
logrotate
|
||||||
|
mastodon
|
||||||
|
minecraft
|
||||||
|
ollama
|
||||||
|
website
|
||||||
|
postgresql
|
||||||
|
samba
|
||||||
|
vaultwarden
|
||||||
|
forgejo
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -130,20 +83,19 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
shared = {
|
system = {
|
||||||
imports = builtins.attrValues {
|
imports = builtins.attrValues {
|
||||||
inherit (modules)
|
inherit (modules)
|
||||||
accounts
|
hardware
|
||||||
doas
|
programs
|
||||||
environment
|
;
|
||||||
gvfs
|
};
|
||||||
home-manager
|
};
|
||||||
locale
|
|
||||||
nh
|
core = {
|
||||||
nix
|
imports = builtins.attrValues {
|
||||||
rsyncd
|
inherit (modules)
|
||||||
ssh
|
core
|
||||||
system
|
|
||||||
xserver
|
xserver
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
10
nixos/modules/core/default.nix
Executable file
10
nixos/modules/core/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
{flake, ...}: {
|
{ flake, ... }:
|
||||||
|
{
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
30
nixos/modules/core/locale/default.nix
Executable file
30
nixos/modules/core/locale/default.nix
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
time.timeZone = "America/Winnipeg";
|
||||||
|
|
||||||
|
i18n =
|
||||||
|
let
|
||||||
|
locale = "en_CA.UTF-8";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
defaultLocale = locale;
|
||||||
|
|
||||||
|
extraLocaleSettings = builtins.listToAttrs (
|
||||||
|
map
|
||||||
|
(option: {
|
||||||
|
name = option;
|
||||||
|
value = locale;
|
||||||
|
})
|
||||||
|
[
|
||||||
|
"LC_ADDRESS"
|
||||||
|
"LC_IDENTIFICATION"
|
||||||
|
"LC_MEASUREMENT"
|
||||||
|
"LC_MONETARY"
|
||||||
|
"LC_NAME"
|
||||||
|
"LC_NUMERIC"
|
||||||
|
"LC_PAPER"
|
||||||
|
"LC_TELEPHONE"
|
||||||
|
"LC_TIME"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
1
nixos/modules/core/system/default.nix
Executable file
1
nixos/modules/core/system/default.nix
Executable file
|
@ -0,0 +1 @@
|
||||||
|
_: { }
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
}
|
|
10
nixos/modules/default.nix
Executable file
10
nixos/modules/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
10
nixos/modules/desktop/default.nix
Executable file
10
nixos/modules/desktop/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
|
@ -20,6 +20,7 @@
|
||||||
gnome-settings-daemon
|
gnome-settings-daemon
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
gvfs.enable = true;
|
||||||
};
|
};
|
||||||
environment = {
|
environment = {
|
||||||
variables = {
|
variables = {
|
||||||
|
@ -50,4 +51,5 @@
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
programs.dconf.enable = true;
|
||||||
}
|
}
|
10
nixos/modules/desktop/hypr/default.nix
Executable file
10
nixos/modules/desktop/hypr/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
|
@ -1,10 +1,10 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
services = {
|
services = {
|
||||||
desktopManager.plasma6.enable = true;
|
desktopManager.plasma6.enable = true;
|
||||||
};
|
};
|
||||||
environment.plasma6.excludePackages = builtins.attrValues {
|
environment.plasma6.excludePackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs.kdePackages)
|
||||||
(pkgs.kdePackages)
|
|
||||||
plasma-browser-integration
|
plasma-browser-integration
|
||||||
konsole
|
konsole
|
||||||
kate
|
kate
|
10
nixos/modules/desktop/wayland/default.nix
Executable file
10
nixos/modules/desktop/wayland/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
services.gvfs.enable = true;
|
|
||||||
}
|
|
|
@ -1,11 +1,11 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs = {
|
programs = {
|
||||||
adb.enable = true;
|
adb.enable = true;
|
||||||
droidcam.enable = true;
|
droidcam.enable = true;
|
||||||
};
|
};
|
||||||
services.udev.packages = builtins.attrValues {
|
services.udev.packages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
android-udev-rules
|
android-udev-rules
|
||||||
;
|
;
|
||||||
};
|
};
|
10
nixos/modules/hardware/default.nix
Executable file
10
nixos/modules/hardware/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
imports = map (file: ./${file}.nix) [
|
|
||||||
"hypridle"
|
|
||||||
"hyprland"
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
time.timeZone = "America/Winnipeg";
|
|
||||||
|
|
||||||
i18n = let
|
|
||||||
locale = "en_CA.UTF-8";
|
|
||||||
in {
|
|
||||||
defaultLocale = locale;
|
|
||||||
|
|
||||||
extraLocaleSettings =
|
|
||||||
builtins.listToAttrs
|
|
||||||
(map (option: {
|
|
||||||
name = option;
|
|
||||||
value = locale;
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"LC_ADDRESS"
|
|
||||||
"LC_IDENTIFICATION"
|
|
||||||
"LC_MEASUREMENT"
|
|
||||||
"LC_MONETARY"
|
|
||||||
"LC_NAME"
|
|
||||||
"LC_NUMERIC"
|
|
||||||
"LC_PAPER"
|
|
||||||
"LC_TELEPHONE"
|
|
||||||
"LC_TIME"
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
{
|
|
||||||
flake,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (flake.config.services.instances)
|
|
||||||
ollama
|
|
||||||
web
|
|
||||||
;
|
|
||||||
service = ollama;
|
|
||||||
localhost = web.localhost.address0;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
ollama = {
|
|
||||||
acceleration = "rocm";
|
|
||||||
package = pkgs.ollama.override {
|
|
||||||
config = {
|
|
||||||
rocmSupport = true;
|
|
||||||
cudaSupport = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
enable = true;
|
|
||||||
group = service.name;
|
|
||||||
host = "http://${localhost}";
|
|
||||||
models = service.paths.path1;
|
|
||||||
user = service.name;
|
|
||||||
};
|
|
||||||
open-webui = {
|
|
||||||
enable = true;
|
|
||||||
host = localhost;
|
|
||||||
port = service.ports.port0;
|
|
||||||
environment = {
|
|
||||||
ENABLE_OLLAMA_API = "True";
|
|
||||||
ANONYMIZED_TELEMETRY = "False";
|
|
||||||
DO_NOT_TRACK = "True";
|
|
||||||
SCARF_NO_ANALYTICS = "True";
|
|
||||||
OLLAMA_BASE_URL = "http://${localhost}:${toString service.ports.port1}";
|
|
||||||
WEBUI_AUTH = "True";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.${service.name}.extraGroups = [
|
|
||||||
"users"
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"Z ${service.paths.path1} 0777 ${service.name} ${service.name} -"
|
|
||||||
];
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
firewall = {
|
|
||||||
allowedTCPPorts = [
|
|
||||||
# 8080
|
|
||||||
service.ports.port0
|
|
||||||
service.ports.port1
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs.corectrl = {
|
programs.corectrl = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.corectrl;
|
package = pkgs.corectrl;
|
10
nixos/modules/programs/default.nix
Executable file
10
nixos/modules/programs/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = importList;
|
||||||
|
}
|
|
@ -1,12 +1,12 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs = {
|
programs = {
|
||||||
steam = {
|
steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
remotePlay.openFirewall = true;
|
remotePlay.openFirewall = true;
|
||||||
dedicatedServer.openFirewall = true;
|
dedicatedServer.openFirewall = true;
|
||||||
extraPackages = builtins.attrValues {
|
extraPackages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
curl
|
curl
|
||||||
;
|
;
|
||||||
};
|
};
|
|
@ -1,6 +1,6 @@
|
||||||
{flake, ...}: let
|
{ flake, ... }:
|
||||||
inherit
|
let
|
||||||
(flake.config.services.instances)
|
inherit (flake.config.services.instances)
|
||||||
caddy
|
caddy
|
||||||
web
|
web
|
||||||
;
|
;
|
||||||
|
@ -8,7 +8,8 @@
|
||||||
domain0 = web.domains.url0;
|
domain0 = web.domains.url0;
|
||||||
|
|
||||||
service = caddy;
|
service = caddy;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services.caddy = {
|
services.caddy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
|
@ -1,22 +1,10 @@
|
||||||
|
let
|
||||||
|
content = builtins.readDir ./.;
|
||||||
|
|
||||||
|
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||||
|
|
||||||
|
importList = map (name: ./. + "/${name}") dirContent;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports =
|
imports = importList;
|
||||||
(map (folder: ./${folder}) [
|
|
||||||
"mastodon"
|
|
||||||
])
|
|
||||||
++ (map (file: ./${file}.nix) [
|
|
||||||
"acme"
|
|
||||||
"caddy"
|
|
||||||
"jellyfin"
|
|
||||||
"logrotate"
|
|
||||||
"minecraft"
|
|
||||||
"ollama"
|
|
||||||
"upRootNutrition"
|
|
||||||
# "peertube"
|
|
||||||
"postgresql"
|
|
||||||
# "owncast"
|
|
||||||
"samba"
|
|
||||||
"vaultwarden"
|
|
||||||
"forgejo"
|
|
||||||
# "nextcloud"
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,20 @@
|
||||||
{flake, ...}: let
|
{ flake, ... }:
|
||||||
inherit
|
let
|
||||||
(flake.config.people)
|
inherit (flake.config.people)
|
||||||
user0
|
user0
|
||||||
;
|
;
|
||||||
inherit
|
inherit (flake.config.machines.devices)
|
||||||
(flake.config.machines.devices)
|
|
||||||
server
|
server
|
||||||
;
|
;
|
||||||
inherit
|
inherit (flake.config.services.instances)
|
||||||
(flake.config.services.instances)
|
|
||||||
jellyfin
|
jellyfin
|
||||||
web
|
web
|
||||||
;
|
;
|
||||||
service = jellyfin;
|
service = jellyfin;
|
||||||
localhost = web.localhost.address0;
|
localhost = web.localhost.address0;
|
||||||
host = "${service.subdomain}.${web.domains.url0}";
|
host = "${service.subdomain}.${web.domains.url0}";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services = {
|
services = {
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -42,28 +41,26 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = let
|
fileSystems =
|
||||||
settings = {
|
let
|
||||||
fsType = "none";
|
settings = {
|
||||||
options = [
|
fsType = "none";
|
||||||
"bind"
|
options = [
|
||||||
];
|
"bind"
|
||||||
depends = [
|
];
|
||||||
server.storage0.mount
|
depends = [
|
||||||
];
|
server.storage0.mount
|
||||||
};
|
];
|
||||||
in {
|
};
|
||||||
"/var/lib/${service.name}" =
|
in
|
||||||
{
|
{
|
||||||
|
"/var/lib/${service.name}" = {
|
||||||
device = service.paths.path0;
|
device = service.paths.path0;
|
||||||
}
|
} // settings;
|
||||||
// settings;
|
"/var/cache/${service.name}" = {
|
||||||
"/var/cache/${service.name}" =
|
|
||||||
{
|
|
||||||
device = "${service.paths.path0}/cache";
|
device = "${service.paths.path0}/cache";
|
||||||
}
|
} // settings;
|
||||||
// settings;
|
};
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"Z ${service.paths.path0} 0755 ${user0} ${service.name} -"
|
"Z ${service.paths.path0} 0755 ${user0} ${service.name} -"
|
|
@ -2,17 +2,17 @@
|
||||||
config,
|
config,
|
||||||
flake,
|
flake,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
inherit
|
let
|
||||||
(flake.config.machines.devices)
|
inherit (flake.config.machines.devices)
|
||||||
server
|
server
|
||||||
;
|
;
|
||||||
inherit
|
inherit (flake.config.services.instances)
|
||||||
(flake.config.services.instances)
|
|
||||||
minecraft
|
minecraft
|
||||||
;
|
;
|
||||||
service = minecraft;
|
service = minecraft;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services = {
|
services = {
|
||||||
minecraft-server = {
|
minecraft-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -55,24 +55,26 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
sops = let
|
sops =
|
||||||
sopsPath = secret: {
|
let
|
||||||
path = "${service.sops.path0}/${service.name}-${secret}";
|
sopsPath = secret: {
|
||||||
owner = service.name;
|
path = "${service.sops.path0}/${service.name}-${secret}";
|
||||||
mode = "600";
|
owner = service.name;
|
||||||
|
mode = "600";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
secrets = builtins.listToAttrs (
|
||||||
|
map
|
||||||
|
(secret: {
|
||||||
|
name = "${service.name}-${secret}";
|
||||||
|
value = sopsPath secret;
|
||||||
|
})
|
||||||
|
[
|
||||||
|
"pass"
|
||||||
|
]
|
||||||
|
);
|
||||||
};
|
};
|
||||||
in {
|
|
||||||
secrets = builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(secret: {
|
|
||||||
name = "${service.name}-${secret}";
|
|
||||||
value = sopsPath secret;
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"pass"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/var/lib/${service.name}" = {
|
fileSystems."/var/lib/${service.name}" = {
|
||||||
device = service.paths.path0;
|
device = service.paths.path0;
|
|
@ -3,21 +3,18 @@
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
inherit
|
let
|
||||||
(flake.config.people)
|
inherit (flake.config.people)
|
||||||
user0
|
user0
|
||||||
;
|
;
|
||||||
inherit
|
inherit (flake.config.people.users.${user0})
|
||||||
(flake.config.people.users.${user0})
|
|
||||||
name
|
name
|
||||||
;
|
;
|
||||||
inherit
|
inherit (flake.config.machines.devices)
|
||||||
(flake.config.machines.devices)
|
|
||||||
server
|
server
|
||||||
;
|
;
|
||||||
inherit
|
inherit (flake.config.services.instances)
|
||||||
(flake.config.services.instances)
|
|
||||||
nextcloud
|
nextcloud
|
||||||
nginx
|
nginx
|
||||||
web
|
web
|
||||||
|
@ -25,7 +22,8 @@
|
||||||
service = nextcloud;
|
service = nextcloud;
|
||||||
localhost = web.localhost.address0;
|
localhost = web.localhost.address0;
|
||||||
host = "${service.subdomain}.${web.domains.url1}";
|
host = "${service.subdomain}.${web.domains.url1}";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services = {
|
services = {
|
||||||
nextcloud = {
|
nextcloud = {
|
||||||
appstoreEnable = true;
|
appstoreEnable = true;
|
||||||
|
@ -38,8 +36,7 @@ in {
|
||||||
phpOptions."opcache.interned_strings_buffer" = "24";
|
phpOptions."opcache.interned_strings_buffer" = "24";
|
||||||
extraAppsEnable = true;
|
extraAppsEnable = true;
|
||||||
extraApps = {
|
extraApps = {
|
||||||
inherit
|
inherit (config.services.service.package.packages.apps)
|
||||||
(config.services.service.package.packages.apps)
|
|
||||||
contacts
|
contacts
|
||||||
calendar
|
calendar
|
||||||
;
|
;
|
||||||
|
@ -88,24 +85,26 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sops = let
|
sops =
|
||||||
sopsPath = secret: {
|
let
|
||||||
path = "${service.sops.path0}/${service.name}-${secret}";
|
sopsPath = secret: {
|
||||||
owner = service.name;
|
path = "${service.sops.path0}/${service.name}-${secret}";
|
||||||
mode = "600";
|
owner = service.name;
|
||||||
|
mode = "600";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
secrets = builtins.listToAttrs (
|
||||||
|
map
|
||||||
|
(secret: {
|
||||||
|
name = "${service.name}-${secret}";
|
||||||
|
value = sopsPath secret;
|
||||||
|
})
|
||||||
|
[
|
||||||
|
"pass"
|
||||||
|
]
|
||||||
|
);
|
||||||
};
|
};
|
||||||
in {
|
|
||||||
secrets = builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(secret: {
|
|
||||||
name = "${service.name}-${secret}";
|
|
||||||
value = sopsPath secret;
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"pass"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/var/lib/${service.name}" = {
|
fileSystems."/var/lib/${service.name}" = {
|
||||||
device = service.paths.path0;
|
device = service.paths.path0;
|
|
@ -1,75 +0,0 @@
|
||||||
{flake, ...}: let
|
|
||||||
inherit
|
|
||||||
(flake.config.machines.devices)
|
|
||||||
server
|
|
||||||
;
|
|
||||||
inherit
|
|
||||||
(flake.config.services.instances)
|
|
||||||
ollama
|
|
||||||
web
|
|
||||||
;
|
|
||||||
service = ollama;
|
|
||||||
localhost = web.localhost.address0;
|
|
||||||
host = "${service.subdomain}.${web.domains.url0}";
|
|
||||||
in {
|
|
||||||
services = {
|
|
||||||
ollama = {
|
|
||||||
acceleration = false;
|
|
||||||
enable = true;
|
|
||||||
group = service.name;
|
|
||||||
host = "http://${localhost}";
|
|
||||||
port = service.ports.port1;
|
|
||||||
user = service.name;
|
|
||||||
};
|
|
||||||
|
|
||||||
open-webui = {
|
|
||||||
enable = true;
|
|
||||||
host = localhost;
|
|
||||||
port = service.ports.port0;
|
|
||||||
environment = {
|
|
||||||
ENABLE_OLLAMA_API = "True";
|
|
||||||
ANONYMIZED_TELEMETRY = "False";
|
|
||||||
DO_NOT_TRACK = "True";
|
|
||||||
SCARF_NO_ANALYTICS = "True";
|
|
||||||
OLLAMA_BASE_URL = "http://${localhost}:${toString service.ports.port1}";
|
|
||||||
WEBUI_AUTH = "True";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
caddy = {
|
|
||||||
virtualHosts = {
|
|
||||||
${host} = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy ${localhost}:${toString service.ports.port0}
|
|
||||||
|
|
||||||
tls ${service.ssl.cert} ${service.ssl.key}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/var/lib/${service.name}" = {
|
|
||||||
device = service.paths.path0;
|
|
||||||
fsType = "none";
|
|
||||||
options = [
|
|
||||||
"bind"
|
|
||||||
];
|
|
||||||
depends = [
|
|
||||||
server.storage0.mount
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"Z ${service.paths.path0} 0755 ${service.name} ${service.name} -"
|
|
||||||
];
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
firewall = {
|
|
||||||
allowedTCPPorts = [
|
|
||||||
service.ports.port0
|
|
||||||
service.ports.port1
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
117
nixos/modules/services/ollama/default.nix
Executable file
117
nixos/modules/services/ollama/default.nix
Executable file
|
@ -0,0 +1,117 @@
|
||||||
|
{
|
||||||
|
flake,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (flake.config.machines.devices)
|
||||||
|
desktop
|
||||||
|
server
|
||||||
|
;
|
||||||
|
inherit (flake.config.services.instances)
|
||||||
|
ollama
|
||||||
|
web
|
||||||
|
;
|
||||||
|
service = ollama;
|
||||||
|
localhost = web.localhost.address0;
|
||||||
|
hostname = config.networking.hostName;
|
||||||
|
host = "${service.subdomain}.${web.domains.url0}";
|
||||||
|
|
||||||
|
caddyLogic =
|
||||||
|
if hostname == server.name then
|
||||||
|
{
|
||||||
|
caddy = {
|
||||||
|
virtualHosts = {
|
||||||
|
${host} = {
|
||||||
|
extraConfig = ''
|
||||||
|
reverse_proxy ${localhost}:${toString service.ports.port0}
|
||||||
|
|
||||||
|
tls ${service.ssl.cert} ${service.ssl.key}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ };
|
||||||
|
|
||||||
|
mountLogic =
|
||||||
|
if hostname == server.name then
|
||||||
|
{
|
||||||
|
"/var/lib/${service.name}" = {
|
||||||
|
device = service.paths.path0;
|
||||||
|
fsType = "none";
|
||||||
|
options = [
|
||||||
|
"bind"
|
||||||
|
];
|
||||||
|
depends = [
|
||||||
|
server.storage0.mount
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
ollama =
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
group = service.name;
|
||||||
|
host = "http://${localhost}";
|
||||||
|
user = service.name;
|
||||||
|
}
|
||||||
|
// (
|
||||||
|
if hostname == desktop.name then
|
||||||
|
{
|
||||||
|
acceleration = "rocm";
|
||||||
|
package = pkgs.ollama.override {
|
||||||
|
config = {
|
||||||
|
rocmSupport = true;
|
||||||
|
cudaSupport = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
port = service.ports.port1;
|
||||||
|
acceleration = false;
|
||||||
|
models = service.paths.path1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
open-webui = {
|
||||||
|
enable = true;
|
||||||
|
host = localhost;
|
||||||
|
port = service.ports.port0;
|
||||||
|
environment = {
|
||||||
|
ENABLE_OLLAMA_API = "True";
|
||||||
|
ANONYMIZED_TELEMETRY = "False";
|
||||||
|
DO_NOT_TRACK = "True";
|
||||||
|
SCARF_NO_ANALYTICS = "True";
|
||||||
|
OLLAMA_BASE_URL = "http://${localhost}:${toString service.ports.port1}";
|
||||||
|
WEBUI_AUTH = "True";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} // caddyLogic;
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
(
|
||||||
|
if hostname == desktop.name then
|
||||||
|
"Z ${service.paths.path1} 0777 ${service.name} ${service.name} -"
|
||||||
|
else
|
||||||
|
"Z ${service.paths.path0} 0755 ${service.name} ${service.name} -"
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
firewall = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
# 8080
|
||||||
|
service.ports.port0
|
||||||
|
service.ports.port1
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fileSystems = mountLogic;
|
||||||
|
}
|
|
@ -1,13 +1,14 @@
|
||||||
{flake, ...}: let
|
{ flake, ... }:
|
||||||
inherit
|
let
|
||||||
(flake.config.services.instances)
|
inherit (flake.config.services.instances)
|
||||||
owncast
|
owncast
|
||||||
web
|
web
|
||||||
;
|
;
|
||||||
service = owncast;
|
service = owncast;
|
||||||
localhost = web.localhost.address1;
|
localhost = web.localhost.address1;
|
||||||
host = "${service.subdomain}.${web.domains.url1}";
|
host = "${service.subdomain}.${web.domains.url1}";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services = {
|
services = {
|
||||||
owncast = {
|
owncast = {
|
||||||
enable = true;
|
enable = true;
|
|
@ -2,14 +2,15 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
flake,
|
flake,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
inherit
|
let
|
||||||
(flake.config.services.instances)
|
inherit (flake.config.services.instances)
|
||||||
samba
|
samba
|
||||||
jellyfin
|
jellyfin
|
||||||
;
|
;
|
||||||
service = samba;
|
service = samba;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
# If you ever need to start fresh, you need to add yourself to the Samba users database:
|
# If you ever need to start fresh, you need to add yourself to the Samba users database:
|
||||||
# sudo smbpasswd -a username
|
# sudo smbpasswd -a username
|
||||||
services = {
|
services = {
|
|
@ -1,12 +1,13 @@
|
||||||
{flake, ...}: let
|
{ flake, ... }:
|
||||||
inherit
|
let
|
||||||
(flake.config.services.instances)
|
inherit (flake.config.services.instances)
|
||||||
upRootNutrition
|
upRootNutrition
|
||||||
web
|
web
|
||||||
;
|
;
|
||||||
service = upRootNutrition;
|
service = upRootNutrition;
|
||||||
host = web.domains.url3;
|
host = web.domains.url3;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services = {
|
services = {
|
||||||
caddy = {
|
caddy = {
|
||||||
virtualHosts = {
|
virtualHosts = {
|
|
@ -25,7 +25,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
sops = {
|
sops = {
|
||||||
defaultSopsFile = ../../secrets/secrets.yaml;
|
defaultSopsFile = ../../../secrets/secrets.yaml;
|
||||||
validateSopsFiles = false;
|
validateSopsFiles = false;
|
||||||
age = {
|
age = {
|
||||||
keyFile = "/var/lib/sops-nix/key.txt";
|
keyFile = "/var/lib/sops-nix/key.txt";
|
|
@ -1 +0,0 @@
|
||||||
_: {}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
imports = map (file: ./${file}.nix) [
|
|
||||||
"geoclue2"
|
|
||||||
"greetd"
|
|
||||||
"network"
|
|
||||||
"regreet"
|
|
||||||
"swaylock"
|
|
||||||
"thunar"
|
|
||||||
"wayland"
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -2,18 +2,21 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
pkgs-stable,
|
pkgs-stable,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
devShells = {
|
devShells = {
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
packages = builtins.attrValues {
|
packages = builtins.attrValues {
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
age
|
||||||
just
|
just
|
||||||
nixd
|
|
||||||
nil
|
nil
|
||||||
|
nixd
|
||||||
|
sops
|
||||||
|
ssh-to-age
|
||||||
|
nixfmt-rfc-style
|
||||||
;
|
;
|
||||||
inherit
|
inherit (pkgs-stable.elmPackages)
|
||||||
(pkgs-stable.elmPackages)
|
|
||||||
elm
|
elm
|
||||||
elm-format
|
elm-format
|
||||||
elm-land
|
elm-land
|
||||||
|
@ -21,8 +24,7 @@
|
||||||
elm-review
|
elm-review
|
||||||
elm-test
|
elm-test
|
||||||
;
|
;
|
||||||
inherit
|
inherit (pkgs.haskellPackages)
|
||||||
(pkgs.haskellPackages)
|
|
||||||
nixfmt
|
nixfmt
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,57 +2,38 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
haskellProjects.default = {
|
haskellProjects.default = {
|
||||||
devShell = {
|
devShell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
tools = hp: {
|
tools = hp: {
|
||||||
inherit
|
inherit (hp)
|
||||||
(hp)
|
|
||||||
cabal-fmt
|
cabal-fmt
|
||||||
haskell-language-server
|
haskell-language-server
|
||||||
;
|
;
|
||||||
|
|
||||||
inherit
|
inherit (pkgs)
|
||||||
(pkgs)
|
|
||||||
dhall
|
dhall
|
||||||
dhall-json
|
dhall-json
|
||||||
dhall-lsp-server
|
dhall-lsp-server
|
||||||
helix-gpt
|
helix-gpt
|
||||||
nixd
|
age
|
||||||
just
|
just
|
||||||
libz
|
|
||||||
ngrep
|
|
||||||
nil
|
nil
|
||||||
|
nixd
|
||||||
sops
|
sops
|
||||||
ssh-to-age
|
ssh-to-age
|
||||||
|
nixfmt-rfc-style
|
||||||
|
libz
|
||||||
|
ngrep
|
||||||
stripe-cli
|
stripe-cli
|
||||||
vscode-langservers-extracted
|
vscode-langservers-extracted
|
||||||
zlib
|
zlib
|
||||||
;
|
;
|
||||||
|
|
||||||
inherit
|
inherit (pkgs.haskellPackages)
|
||||||
(pkgs.elmPackages)
|
|
||||||
elm
|
|
||||||
elm-format
|
|
||||||
elm-land
|
|
||||||
elm-language-server
|
|
||||||
elm-review
|
|
||||||
elm-test
|
|
||||||
;
|
|
||||||
|
|
||||||
inherit
|
|
||||||
(pkgs.nodePackages_latest)
|
|
||||||
"@commitlint/config-conventional"
|
|
||||||
dotenv-cli
|
|
||||||
forever
|
|
||||||
nodejs
|
|
||||||
npm
|
|
||||||
typescript-language-server
|
|
||||||
;
|
|
||||||
inherit
|
|
||||||
(pkgs.haskellPackages)
|
|
||||||
nixfmt
|
nixfmt
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue