fix llm stuff

This commit is contained in:
atagen 2024-09-11 10:15:54 +10:00
parent ad421cea84
commit 5786863608
12 changed files with 131 additions and 95 deletions

90
flake.lock generated
View file

@ -238,11 +238,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1724856988,
"narHash": "sha256-JBLe2CxAhG+J8+x8qmbzkGHNYmGcSiuY2QO4Zhb72lI=",
"lastModified": 1725976743,
"narHash": "sha256-pLQQbiC9uO4lF58fAnlcDxlbsBB1XFWswsU1oZOIVqU=",
"owner": "helix-editor",
"repo": "helix",
"rev": "1b5295a3f3d7cccd96eed5bfd394807a4dae87fc",
"rev": "237cbe4bca46eed52efed39ed75eb44aaccbdde3",
"type": "github"
},
"original": {
@ -258,11 +258,11 @@
]
},
"locked": {
"lastModified": 1724571060,
"narHash": "sha256-2imeYQr9eHrump44kCGdACJXCdjpHgaK9wSsHSl32FQ=",
"lastModified": 1725406787,
"narHash": "sha256-ifkeLCv4vcsDC7MgvGGb++crmUeJ0+QG8L4mg8Bn7GM=",
"owner": "n-hass",
"repo": "home-manager",
"rev": "87d0708ccc4e4281b8e70b6144cb579228e21154",
"rev": "df5d577ff94303f7f4ffc58e83986274ecec924c",
"type": "github"
},
"original": {
@ -291,11 +291,11 @@
"lix": {
"flake": false,
"locked": {
"lastModified": 1725228396,
"narHash": "sha256-QBXwqyPuHUKBiuyzHBxqH/MpjPY9DQiY2M81P2t6b/0=",
"rev": "02eb07cfd539c34c080cb1baf042e5e780c1fcc2",
"lastModified": 1725927421,
"narHash": "sha256-tiQ9OxiuTb/02xEU2ceo9MIxWBS5Rm/IAhv6QshH8K0=",
"rev": "cc183fdbc14ce105a5661d646983f791978b9d5c",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/02eb07cfd539c34c080cb1baf042e5e780c1fcc2.tar.gz?rev=02eb07cfd539c34c080cb1baf042e5e780c1fcc2"
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/cc183fdbc14ce105a5661d646983f791978b9d5c.tar.gz?rev=cc183fdbc14ce105a5661d646983f791978b9d5c"
},
"original": {
"type": "tarball",
@ -314,11 +314,11 @@
]
},
"locked": {
"lastModified": 1723511483,
"narHash": "sha256-rT/OkVXKkns2YvyF1nFvl+8Gc3sld1c1sXPtGkbqaDY=",
"rev": "cecf70b77539c1a593f60ec9d0305b5e537ab6a9",
"lastModified": 1725836728,
"narHash": "sha256-dCbHCwqrzcHlEsRilMX+KM3IfRV46ieGqDyAD3GgCSs=",
"rev": "353b25f0b6da5ede15206d416345a2ec4195b5c8",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/cecf70b77539c1a593f60ec9d0305b5e537ab6a9.tar.gz?rev=cecf70b77539c1a593f60ec9d0305b5e537ab6a9"
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/353b25f0b6da5ede15206d416345a2ec4195b5c8.tar.gz?rev=353b25f0b6da5ede15206d416345a2ec4195b5c8"
},
"original": {
"type": "tarball",
@ -360,8 +360,8 @@
"utils": "utils"
},
"locked": {
"lastModified": 1725322213,
"narHash": "sha256-qK1dfFB5i0MpSy4O7M9EcBnMPWqkqoIFbAAwVdYtBfM=",
"lastModified": 1726012053,
"narHash": "sha256-wGfFI8ZD3+TisEW2cFUABbtWYpn0N71CpkiXuITOk88=",
"path": "/home/bolt/code/meat",
"type": "path"
},
@ -375,11 +375,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1725287741,
"narHash": "sha256-ZxyB7BwxQjoMz5lUnsb+KuTWfRyPtJVqEjnlOoABSUE=",
"lastModified": 1725746760,
"narHash": "sha256-p38Uini6lChBCF0mZndHXTAy7ZH/OQLY696BFCHg92g=",
"owner": "viperML",
"repo": "nh",
"rev": "5dd64eb04fddeac2eb08c018212cc58978934920",
"rev": "7650b372e55a36d7765ee0a5e59b142731bc8b3d",
"type": "github"
},
"original": {
@ -393,11 +393,11 @@
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1725161148,
"narHash": "sha256-WfAHq3Ag3vLNFfWxKHjFBFdPI6JIideWFJod9mx1eoo=",
"lastModified": 1725765290,
"narHash": "sha256-hwX53i24KyWzp2nWpQsn8lfGQNCP0JoW/bvQmcR1DPY=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "32058e9138248874773630c846563b1a78ee7a5b",
"rev": "642275444c5a9defce57219c944b3179bf2adaa9",
"type": "github"
},
"original": {
@ -438,15 +438,15 @@
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1724271552,
"narHash": "sha256-xn0dC4M3mfItxP+s3/v3Hz/CSKp74VH/gMfufKxl9/4=",
"owner": "Mic92",
"lastModified": 1725635983,
"narHash": "sha256-haSfwdurfltqQ/7YEmDcmWLnWwvAgelIHnXsHG34P1k=",
"owner": "lilyinstarlight",
"repo": "nix-update",
"rev": "737121eccb67542e8c004c64da833fede2e80c64",
"rev": "ed54a7546affb3f8c9c3e10a6fa6fdb21756ec8f",
"type": "github"
},
"original": {
"owner": "Mic92",
"owner": "lilyinstarlight",
"repo": "nix-update",
"type": "github"
}
@ -481,11 +481,11 @@
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1725237037,
"narHash": "sha256-rz7xUgTUHKvRsTFQocpespVloYpJ4tIsXmgU1fdXCPw=",
"lastModified": 1726010864,
"narHash": "sha256-bOn5vl87FYeTqR0ymYJxYHFrIdjTSeN3GtqlPlK+2os=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "27ca5fbf0f51d3f02bb0274b0ce9012e5c079fe9",
"rev": "f6c0035d0ab8a689d32128bb10e5c6b9fca78e9d",
"type": "github"
},
"original": {
@ -561,11 +561,11 @@
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1725001927,
"narHash": "sha256-eV+63gK0Mp7ygCR0Oy4yIYSNcum2VQwnZamHxYTNi+M=",
"lastModified": 1725826545,
"narHash": "sha256-L64N1rpLlXdc94H+F6scnrbuEu+utC03cDDVvvJGOME=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6e99f2a27d600612004fbd2c3282d614bfee6421",
"rev": "f4c846aee8e1e29062aa8514d5e0ab270f4ec2f9",
"type": "github"
},
"original": {
@ -593,11 +593,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1724819573,
"narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
"lastModified": 1725634671,
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github"
},
"original": {
@ -641,11 +641,11 @@
},
"nixpkgs_6": {
"locked": {
"lastModified": 1724819573,
"narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
"lastModified": 1725634671,
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github"
},
"original": {
@ -657,11 +657,11 @@
},
"nur": {
"locked": {
"lastModified": 1725321983,
"narHash": "sha256-k+f0FddjJX4mkEx0he7sLT2yYHv4dVmf63YH6zSbIWo=",
"lastModified": 1726004797,
"narHash": "sha256-EjbaRc4eu8cnR4rF5y6EMWZG8mtJa9BQq4z0hsQMIZg=",
"owner": "nix-community",
"repo": "NUR",
"rev": "03d44a70b0d8113225a167c9f1751ad5b4c09481",
"rev": "7992767e0d354cfedc418887d4c10aed4515c962",
"type": "github"
},
"original": {
@ -753,11 +753,11 @@
]
},
"locked": {
"lastModified": 1724984647,
"narHash": "sha256-BC6MUq0CTdmAu/cueVcdWTI+S95s0mJcn19SoEgd7gU=",
"lastModified": 1725848835,
"narHash": "sha256-u4lCr+tOEWhsFiww5G04U5jUNzaQJi0/ZMIDGiLeT14=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "87b6cffc276795b46ef544d7ed8d7fed6ad9c8e4",
"rev": "2ef910a6276a2f34513d18f2f826a8dea72c3b3f",
"type": "github"
},
"original": {

View file

@ -74,7 +74,8 @@
inherit (lib) mapAttrs;
sharedModules = [
meat.nixosModules.meat
lix-module.nixosModules.default
# comes with meat
# lix-module.nixosModules.default
madness.nixosModules.madness
nur.nixosModules.nur
nix-index-database.nixosModules.nix-index

View file

@ -8,10 +8,7 @@
./programs/anything-llm.nix
];
home = {
username = "bolt";
homeDirectory = "/home/bolt";
};
mainUser = "bolt";
home.packages = with pkgs; [
nicotine-plus

View file

@ -17,6 +17,7 @@ in {
./util/flatpak.nix
./util/cosmic.nix
./util/murex.nix # TODO use these options, write plugin pkgs, etc
./util/name.nix
inputs.nix-index-database.hmModules.nix-index
];

View file

@ -1,13 +1,13 @@
{pkgs, ...}: {
home.packages = with pkgs; [
gtk-engine-murrine
];
# home.packages = with pkgs; [
# gtk-engine-murrine
# ];
fonts.fontconfig.enable = true;
qt = {
enable = true;
style.name = "adwaita-dark";
platformTheme.name = "adwaita";
# style.name = "adwaita-dark";
# platformTheme.name = "adwaita";
};
gtk = with pkgs;
@ -16,10 +16,10 @@
# theme = with gtk-theme; {
# inherit package name;
# };
theme = {
name = "adw-gtk3-dark";
package = adw-gtk3; # cosmic
};
# theme = {
# name = "adw-gtk3-dark";
# package = adw-gtk3; # cosmic
# };
iconTheme = with icons; {
inherit package name;
};

View file

@ -1,6 +1,6 @@
{
lib,
pkgs,
config,
...
}: let
port = 3021;
@ -17,19 +17,25 @@ in {
};
};
services.podman = {
containers.anything-llm = let
str = builtins.toString;
in {
image = "mintplexlabs/anythingllm";
ports = ["${str port}:3001"];
autostart = false;
networks = ["ollama"];
unitConfig = {Requires = ["podman-ollama.service"];};
extraOptions = [
"--health-cmd"
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/3001'")
];
};
services.podman.containers.anything-llm = let
str = builtins.toString;
username = config.mainUser;
in {
image = "mintplexlabs/anythingllm";
ports = ["${str port}:3001"];
autostart = false;
networks = ["ollama"];
volumes = let
share = "/home/${username}/.local/share/anything-llm";
in [
"${share}:/storage"
"${share}/.env:/app/server/.env"
];
environment.STORAGE_LOCATION = "/storage";
unitConfig = {Requires = ["podman-ollama.service"];};
extraOptions = [
"--health-cmd"
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/3001'")
];
};
}

View file

@ -1,19 +1,24 @@
{
lib,
pkgs,
config,
...
}: {
services.podman = {
containers.ollama = {
containers.ollama = let
username = config.mainUser;
in {
image = "ollama/ollama:latest";
devices = ["nvidia.com/gpu=all"];
autostart = false;
networks = ["ollama"];
volumes = [
"/home/${username}/.local/share/ollama:/models"
];
environment.OLLAMA_MODELS = "/models";
extraOptions = [
"--health-cmd"
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/11434'")
];
# TODO make a volume lol
};
networks.ollama = {
@ -21,10 +26,4 @@
Gateway = "192.168.10.1";
};
};
# containers.ollama = {
# image = "ollama/ollama:latest";
# # TODO: volume for models!
# extraOptions = ["--network=host" "--device=nvidia.com/gpu=all"];
# };
}

View file

@ -303,7 +303,7 @@
++ map escapeShellArg container.cmd
);
inherit (lib) concatStringsSep escapeShellArg optional optionalAttrs optionalString mapAttrsToList;
inherit (lib) concatStringsSep escapeShellArg optional mapAttrsToList;
in {
Unit = {
WantedBy = [] ++ lib.optional (container.autoStart) "default.target"; # graphical-session instead maybe?

View file

@ -4,9 +4,22 @@
lib,
...
}: let
inherit (lib) mkOption;
inherit (lib.attrsets) mapAttrs mapAttrs' nameValuePair;
inherit (lib) getExe getExe';
inherit
(lib)
mkOption
mkForce
getExe
getExe'
listToAttrs
flatten
mapAttrsToList
mapAttrs
mapAttrs'
nameValuePair
toLower
replaceStrings
concatMapStringsSep
;
# make a firefox webapp + hidden .desktop entry for the client app
make-firefox = cfg:
mapAttrs' (
@ -31,7 +44,7 @@
nameValuePair "${cfg.name}-frontend" {
Unit = {
Description = "${cfg.name} Frontend";
WantedBy = lib.mkForce [];
WantedBy = mkForce [];
};
Service = cfg.service;
@ -41,13 +54,13 @@
cfg;
# modify systemd units to be PartOf this target
modify-systemd-services = cfg:
lib.listToAttrs (lib.flatten (lib.mapAttrsToList (
listToAttrs (flatten (mapAttrsToList (
name: cfg: (map (
req: {
name = "${req}";
value = {
Unit = {
PartOf = "${lib.toLower cfg.name}.target";
PartOf = "${replaceStrings [" "] ["-"] (toLower cfg.name)}.target";
};
};
}
@ -56,13 +69,13 @@
)
cfg));
modify-quadlets = cfg:
lib.listToAttrs (lib.flatten (lib.mapAttrsToList (
listToAttrs (flatten (mapAttrsToList (
name: cfg: (map (
req: {
name = "${req}";
value = {
unitConfig = {
PartOf = "${lib.toLower cfg.name}.target";
PartOf = "${toLower cfg.name}.target";
};
};
}
@ -76,7 +89,7 @@
name: cfg: {
Unit = {
Description = "${cfg.name} Target";
WantedBy = lib.mkForce [];
WantedBy = mkForce [];
Requires =
(map (req: req + ".service") cfg.requires.services)
++ (map (req: "podman-" + req + ".service") cfg.requires.containers);
@ -105,7 +118,7 @@
''
container_checks() {
if ''
+ (lib.concatMapStringsSep " && "
+ (concatMapStringsSep " && "
(container: makeContainerCheck container)
cfg.requires.containers)
+ ''

17
home/util/name.nix Normal file
View file

@ -0,0 +1,17 @@
{
lib,
config,
...
}: let
inherit (lib) mkOption;
in {
options.mainUser = mkOption {
type = lib.types.str;
};
config.home = let
inherit (config) mainUser;
in {
username = mainUser;
homeDirectory = "/home/${mainUser}";
};
}

View file

@ -11,7 +11,8 @@
inputs.nix-rice.overlays.default
inputs.helix.overlays.default
inputs.nixd.overlays.default
inputs.nh.overlays.default
# meat overlay includes this
# inputs.nh.overlays.default
outputs.overlays.additions
outputs.overlays.rice
];

View file

@ -2,6 +2,7 @@
murex = pkgs.murex.overrideAttrs {
passthru = {
shellPath = "/bin/murex";
overrideModAttrs = {};
};
};
in {