current
linted
This commit is contained in:
parent
4e99a0e323
commit
7485de646a
95 changed files with 2743 additions and 2282 deletions
|
@ -2,10 +2,12 @@
|
|||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
port = 3021;
|
||||
in {
|
||||
imports = [./ollama.nix];
|
||||
in
|
||||
{
|
||||
imports = [ ./ollama.nix ];
|
||||
|
||||
localWebApps = {
|
||||
anything-llm = {
|
||||
|
@ -13,43 +15,50 @@ in {
|
|||
genericName = "Chatbot";
|
||||
icon = ../icons/anythingllm.png;
|
||||
inherit port;
|
||||
requires.containers = ["anything-llm" "ollama"];
|
||||
requires.containers = [
|
||||
"anything-llm"
|
||||
"ollama"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.podman.containers.anything-llm = let
|
||||
str = builtins.toString;
|
||||
username = config.mainUser;
|
||||
in {
|
||||
image = "docker.io/mintplexlabs/anythingllm";
|
||||
devices = ["nvidia.com/gpu=all"];
|
||||
ports = ["${str port}:3001"];
|
||||
autoStart = false;
|
||||
autoUpdate = "registry";
|
||||
network = ["ollama"];
|
||||
volumes = let
|
||||
home = "/home/${username}";
|
||||
share = "${home}/.local/share/anything-llm";
|
||||
in [
|
||||
"${share}:/app/server/storage"
|
||||
"${share}/.env:/app/server/.env"
|
||||
"${share}/config:/home/anythingllm/.config/anythingllm-desktop"
|
||||
"${share}/config:/home/${username}/.config/anythingllm-desktop"
|
||||
];
|
||||
environment = {
|
||||
STORAGE_DIR = "/app/server/storage";
|
||||
LLM_PROVIDER = "ollama";
|
||||
OLLAMA_BASE_PATH = "http://ollama:11434";
|
||||
EMBEDDING_ENGINE = "ollama";
|
||||
EMBEDDING_BASE_PATH = "http://ollama:11434";
|
||||
VECTOR_DB = "lancedb";
|
||||
WHISPER_PROVIDER = "local";
|
||||
TTS_PROVIDER = "native";
|
||||
services.podman.containers.anything-llm =
|
||||
let
|
||||
str = builtins.toString;
|
||||
username = config.mainUser;
|
||||
in
|
||||
{
|
||||
image = "docker.io/mintplexlabs/anythingllm";
|
||||
devices = [ "nvidia.com/gpu=all" ];
|
||||
ports = [ "${str port}:3001" ];
|
||||
autoStart = false;
|
||||
autoUpdate = "registry";
|
||||
network = [ "ollama" ];
|
||||
volumes =
|
||||
let
|
||||
home = "/home/${username}";
|
||||
share = "${home}/.local/share/anything-llm";
|
||||
in
|
||||
[
|
||||
"${share}:/app/server/storage"
|
||||
"${share}/.env:/app/server/.env"
|
||||
"${share}/config:/home/anythingllm/.config/anythingllm-desktop"
|
||||
"${share}/config:/home/${username}/.config/anythingllm-desktop"
|
||||
];
|
||||
environment = {
|
||||
STORAGE_DIR = "/app/server/storage";
|
||||
LLM_PROVIDER = "ollama";
|
||||
OLLAMA_BASE_PATH = "http://ollama:11434";
|
||||
EMBEDDING_ENGINE = "ollama";
|
||||
EMBEDDING_BASE_PATH = "http://ollama:11434";
|
||||
VECTOR_DB = "lancedb";
|
||||
WHISPER_PROVIDER = "local";
|
||||
TTS_PROVIDER = "native";
|
||||
};
|
||||
extraConfig.Unit.Requires = [ "podman-ollama.service" ];
|
||||
extraPodmanArgs = [
|
||||
"--health-cmd"
|
||||
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/3001'")
|
||||
];
|
||||
};
|
||||
extraConfig.Unit.Requires = ["podman-ollama.service"];
|
||||
extraPodmanArgs = [
|
||||
"--health-cmd"
|
||||
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/3001'")
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{...}: {
|
||||
_:
|
||||
{
|
||||
programs.atuin = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
officialAddon = name: {
|
||||
install_url = lib.strings.concatStrings ["https://addons.mozilla.org/firefox/downloads/latest/" name "/latest.xpi"];
|
||||
install_url = lib.strings.concatStrings [
|
||||
"https://addons.mozilla.org/firefox/downloads/latest/"
|
||||
name
|
||||
"/latest.xpi"
|
||||
];
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
lock-false = {
|
||||
|
@ -15,7 +19,8 @@
|
|||
Value = true;
|
||||
Status = "locked";
|
||||
};
|
||||
in {
|
||||
in
|
||||
{
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
||||
|
|
|
@ -3,16 +3,19 @@
|
|||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
|
||||
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
|
||||
in {
|
||||
in
|
||||
{
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
themes = with palette-hex; {
|
||||
nix-rice = {
|
||||
"attribute" = bright.cyan;
|
||||
"keyword" = {fg = normal.red;};
|
||||
"keyword" = {
|
||||
fg = normal.red;
|
||||
};
|
||||
"keyword.directive" = normal.red;
|
||||
"namespace" = bright.cyan;
|
||||
"punctuation" = bright.yellow;
|
||||
|
@ -27,29 +30,31 @@ in {
|
|||
"type.builtin" = normal.yellow;
|
||||
"constructor" = {
|
||||
fg = bright.magenta;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"function" = {
|
||||
fg = normal.green;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"function.macro" = bright.cyan;
|
||||
"function.builtin" = normal.yellow;
|
||||
"tag" = normal.red;
|
||||
"comment" = {
|
||||
fg = normal.magenta;
|
||||
modifiers = ["italic"];
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"constant" = {
|
||||
fg = bright.magenta;
|
||||
};
|
||||
"constant" = {fg = bright.magenta;};
|
||||
"constant.builtin" = {
|
||||
fg = bright.magenta;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"string" = normal.green;
|
||||
"constant.numeric" = bright.magenta;
|
||||
"constant.character.escape" = {
|
||||
fg = bright.white;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"label" = bright.cyan;
|
||||
"module" = bright.cyan;
|
||||
|
@ -60,64 +65,86 @@ in {
|
|||
"error" = bright.red;
|
||||
"info" = bright.cyan;
|
||||
"hint" = bright.blue;
|
||||
"ui.background" = {bg = util.bg;};
|
||||
"ui.linenr" = {fg = normal.cyan;};
|
||||
"ui.background" = {
|
||||
inherit (util) bg;
|
||||
};
|
||||
"ui.linenr" = {
|
||||
fg = normal.cyan;
|
||||
};
|
||||
"ui.linenr.selected" = {
|
||||
fg = normal.yellow;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.cursorline" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.cursorline" = {bg = normal.black;};
|
||||
"ui.statusline" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.black;
|
||||
};
|
||||
"ui.statusline.normal" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.black;
|
||||
};
|
||||
"ui.statusline.insert" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = normal.blue;
|
||||
};
|
||||
"ui.statusline.select" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.yellow;
|
||||
};
|
||||
"ui.statusline.inactive" = {
|
||||
fg = normal.white;
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.popup" = {bg = normal.black;};
|
||||
"ui.window" = {bg = normal.black;};
|
||||
"ui.popup" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.window" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.help" = {
|
||||
bg = normal.black;
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
};
|
||||
"ui.text" = {
|
||||
inherit (util) fg;
|
||||
};
|
||||
"ui.text.focus" = {
|
||||
inherit (util) fg;
|
||||
};
|
||||
"ui.text" = {fg = util.fg;};
|
||||
"ui.text.focus" = {fg = util.fg;};
|
||||
"ui.selection" = {
|
||||
# modifiers = ["reversed"];
|
||||
bg = bright.yellow;
|
||||
};
|
||||
"ui.selection.primary" = {modifiers = ["reversed"];};
|
||||
"ui.selection.primary" = {
|
||||
modifiers = [ "reversed" ];
|
||||
};
|
||||
# "ui.selection.primary" = { bg = bright.cyan; };
|
||||
"ui.cursor.primary" = {
|
||||
bg = normal.white;
|
||||
fg = normal.black;
|
||||
};
|
||||
"ui.cursor.match" = {bg = bright.cyan;};
|
||||
"ui.cursor.match" = {
|
||||
bg = bright.cyan;
|
||||
};
|
||||
"ui.menu" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.black;
|
||||
};
|
||||
"ui.menu.selected" = {
|
||||
fg = bright.black;
|
||||
bg = bright.blue;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.virtual.whitespace" = bright.black;
|
||||
"ui.virtual.ruler" = {bg = normal.black;};
|
||||
"ui.virtual.inlay-hint" = {fg = normal.magenta;};
|
||||
"ui.virtual.ruler" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.virtual.inlay-hint" = {
|
||||
fg = normal.magenta;
|
||||
};
|
||||
"diagnostic.warning" = {
|
||||
underline = {
|
||||
color = bright.yellow;
|
||||
|
@ -143,12 +170,18 @@ in {
|
|||
};
|
||||
};
|
||||
"markup.heading" = bright.cyan;
|
||||
"markup.bold" = {modifiers = ["bold"];};
|
||||
"markup.italic" = {modifiers = ["italic"];};
|
||||
"markup.strikethrough" = {modifiers = ["crossed_out"];};
|
||||
"markup.bold" = {
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"markup.italic" = {
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"markup.strikethrough" = {
|
||||
modifiers = [ "crossed_out" ];
|
||||
};
|
||||
"markup.link.url" = {
|
||||
fg = bright.green;
|
||||
modifiers = ["underlined"];
|
||||
modifiers = [ "underlined" ];
|
||||
};
|
||||
"markup.link.text" = bright.red;
|
||||
"markup.raw" = bright.red;
|
||||
|
@ -184,17 +217,28 @@ in {
|
|||
normal = "block";
|
||||
select = "underline";
|
||||
};
|
||||
statusline.left = ["mode" "spinner" "version-control" "file-name" "file-modification-indicator"];
|
||||
statusline.left = [
|
||||
"mode"
|
||||
"spinner"
|
||||
"version-control"
|
||||
"file-name"
|
||||
"file-modification-indicator"
|
||||
];
|
||||
lsp.display-messages = true;
|
||||
keys = let
|
||||
extend = {
|
||||
"A-x" = "extend_to_line_bounds";
|
||||
"X" = ["extend_line_up" "extend_to_line_bounds"];
|
||||
keys =
|
||||
let
|
||||
extend = {
|
||||
"A-x" = "extend_to_line_bounds";
|
||||
"X" = [
|
||||
"extend_line_up"
|
||||
"extend_to_line_bounds"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
normal = extend;
|
||||
select = extend;
|
||||
};
|
||||
in {
|
||||
normal = extend;
|
||||
select = extend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -202,13 +246,19 @@ in {
|
|||
language = [
|
||||
{
|
||||
name = "rust";
|
||||
language-servers = ["rust-analyzer" "lsp-ai"];
|
||||
language-servers = [
|
||||
"rust-analyzer"
|
||||
"lsp-ai"
|
||||
];
|
||||
auto-format = true;
|
||||
}
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = ["nixd" "lsp-ai"];
|
||||
file-types = ["nix"];
|
||||
language-servers = [
|
||||
"nixd"
|
||||
"lsp-ai"
|
||||
];
|
||||
file-types = [ "nix" ];
|
||||
# auto-format = true;
|
||||
formatter = {
|
||||
command = "alejandra";
|
||||
|
@ -216,8 +266,14 @@ in {
|
|||
}
|
||||
{
|
||||
name = "ocaml";
|
||||
language-servers = ["ocamllsp" "lsp-ai"];
|
||||
file-types = ["ml" "mli"];
|
||||
language-servers = [
|
||||
"ocamllsp"
|
||||
"lsp-ai"
|
||||
];
|
||||
file-types = [
|
||||
"ml"
|
||||
"mli"
|
||||
];
|
||||
auto-format = true;
|
||||
formatter = {
|
||||
command = "ocamlformat";
|
||||
|
@ -233,7 +289,7 @@ in {
|
|||
lsp-ai = {
|
||||
command = "lsp-ai";
|
||||
config = {
|
||||
memory.fileStore = {};
|
||||
memory.fileStore = { };
|
||||
models = {
|
||||
llama32 = {
|
||||
type = "ollama";
|
||||
|
@ -285,7 +341,7 @@ in {
|
|||
};
|
||||
};
|
||||
};
|
||||
}; #language-server
|
||||
}; #languages
|
||||
}; #helix config
|
||||
}; # language-server
|
||||
}; # languages
|
||||
}; # helix config
|
||||
}
|
||||
|
|
|
@ -3,16 +3,19 @@
|
|||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
|
||||
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
|
||||
in {
|
||||
in
|
||||
{
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
themes = with palette-hex; {
|
||||
nix-rice = {
|
||||
"attribute" = bright.cyan;
|
||||
"keyword" = {fg = normal.red;};
|
||||
"keyword" = {
|
||||
fg = normal.red;
|
||||
};
|
||||
"keyword.directive" = normal.red;
|
||||
"namespace" = bright.cyan;
|
||||
"punctuation" = bright.yellow;
|
||||
|
@ -27,29 +30,31 @@ in {
|
|||
"type.builtin" = normal.yellow;
|
||||
"constructor" = {
|
||||
fg = bright.magenta;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"function" = {
|
||||
fg = normal.green;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"function.macro" = bright.cyan;
|
||||
"function.builtin" = normal.yellow;
|
||||
"tag" = normal.red;
|
||||
"comment" = {
|
||||
fg = normal.magenta;
|
||||
modifiers = ["italic"];
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"constant" = {
|
||||
fg = bright.magenta;
|
||||
};
|
||||
"constant" = {fg = bright.magenta;};
|
||||
"constant.builtin" = {
|
||||
fg = bright.magenta;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"string" = normal.green;
|
||||
"constant.numeric" = bright.magenta;
|
||||
"constant.character.escape" = {
|
||||
fg = bright.white;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"label" = bright.cyan;
|
||||
"module" = bright.cyan;
|
||||
|
@ -60,64 +65,86 @@ in {
|
|||
"error" = bright.red;
|
||||
"info" = bright.cyan;
|
||||
"hint" = bright.blue;
|
||||
"ui.background" = {bg = util.bg;};
|
||||
"ui.linenr" = {fg = normal.cyan;};
|
||||
"ui.background" = {
|
||||
inherit (util) bg;
|
||||
};
|
||||
"ui.linenr" = {
|
||||
fg = normal.cyan;
|
||||
};
|
||||
"ui.linenr.selected" = {
|
||||
fg = normal.yellow;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.cursorline" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.cursorline" = {bg = normal.black;};
|
||||
"ui.statusline" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.black;
|
||||
};
|
||||
"ui.statusline.normal" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.black;
|
||||
};
|
||||
"ui.statusline.insert" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = normal.blue;
|
||||
};
|
||||
"ui.statusline.select" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.yellow;
|
||||
};
|
||||
"ui.statusline.inactive" = {
|
||||
fg = normal.white;
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.popup" = {bg = normal.black;};
|
||||
"ui.window" = {bg = normal.black;};
|
||||
"ui.popup" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.window" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.help" = {
|
||||
bg = normal.black;
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
};
|
||||
"ui.text" = {
|
||||
inherit (util) fg;
|
||||
};
|
||||
"ui.text.focus" = {
|
||||
inherit (util) fg;
|
||||
};
|
||||
"ui.text" = {fg = util.fg;};
|
||||
"ui.text.focus" = {fg = util.fg;};
|
||||
"ui.selection" = {
|
||||
# modifiers = ["reversed"];
|
||||
bg = bright.yellow;
|
||||
};
|
||||
"ui.selection.primary" = {modifiers = ["reversed"];};
|
||||
"ui.selection.primary" = {
|
||||
modifiers = [ "reversed" ];
|
||||
};
|
||||
# "ui.selection.primary" = { bg = bright.cyan; };
|
||||
"ui.cursor.primary" = {
|
||||
bg = normal.white;
|
||||
fg = normal.black;
|
||||
};
|
||||
"ui.cursor.match" = {bg = bright.cyan;};
|
||||
"ui.cursor.match" = {
|
||||
bg = bright.cyan;
|
||||
};
|
||||
"ui.menu" = {
|
||||
fg = util.fg;
|
||||
inherit (util) fg;
|
||||
bg = bright.black;
|
||||
};
|
||||
"ui.menu.selected" = {
|
||||
fg = bright.black;
|
||||
bg = bright.blue;
|
||||
modifiers = ["bold"];
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"ui.virtual.whitespace" = bright.black;
|
||||
"ui.virtual.ruler" = {bg = normal.black;};
|
||||
"ui.virtual.inlay-hint" = {fg = normal.magenta;};
|
||||
"ui.virtual.ruler" = {
|
||||
bg = normal.black;
|
||||
};
|
||||
"ui.virtual.inlay-hint" = {
|
||||
fg = normal.magenta;
|
||||
};
|
||||
"diagnostic.warning" = {
|
||||
underline = {
|
||||
color = bright.yellow;
|
||||
|
@ -143,12 +170,18 @@ in {
|
|||
};
|
||||
};
|
||||
"markup.heading" = bright.cyan;
|
||||
"markup.bold" = {modifiers = ["bold"];};
|
||||
"markup.italic" = {modifiers = ["italic"];};
|
||||
"markup.strikethrough" = {modifiers = ["crossed_out"];};
|
||||
"markup.bold" = {
|
||||
modifiers = [ "bold" ];
|
||||
};
|
||||
"markup.italic" = {
|
||||
modifiers = [ "italic" ];
|
||||
};
|
||||
"markup.strikethrough" = {
|
||||
modifiers = [ "crossed_out" ];
|
||||
};
|
||||
"markup.link.url" = {
|
||||
fg = bright.green;
|
||||
modifiers = ["underlined"];
|
||||
modifiers = [ "underlined" ];
|
||||
};
|
||||
"markup.link.text" = bright.red;
|
||||
"markup.raw" = bright.red;
|
||||
|
@ -168,7 +201,13 @@ in {
|
|||
normal = "block";
|
||||
select = "underline";
|
||||
};
|
||||
statusline.left = ["mode" "spinner" "version-control" "file-name" "file-modification-indicator"];
|
||||
statusline.left = [
|
||||
"mode"
|
||||
"spinner"
|
||||
"version-control"
|
||||
"file-name"
|
||||
"file-modification-indicator"
|
||||
];
|
||||
lsp.display-messages = true;
|
||||
# keys = let
|
||||
# extend = {
|
||||
|
@ -186,15 +225,15 @@ in {
|
|||
language = [
|
||||
{
|
||||
name = "rust";
|
||||
language-servers = ["rust-analyzer"];
|
||||
language-servers = [ "rust-analyzer" ];
|
||||
}
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = ["nil"];
|
||||
file-types = ["nix"];
|
||||
# auto-format = true;
|
||||
language-servers = [ "nil" ];
|
||||
file-types = [ "nix" ];
|
||||
auto-format = true;
|
||||
formatter = {
|
||||
command = "alejandra";
|
||||
command = "nixfmt";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
@ -219,7 +258,7 @@ in {
|
|||
};
|
||||
};
|
||||
};
|
||||
}; #language-server
|
||||
}; #languages
|
||||
}; #helix config
|
||||
}; # language-server
|
||||
}; # languages
|
||||
}; # helix config
|
||||
}
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
|
||||
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
|
||||
in {
|
||||
in
|
||||
{
|
||||
programs.kitty = with pkgs.rice; {
|
||||
enable = true;
|
||||
font = with fonts; {
|
||||
name = monospace.name;
|
||||
size = monospace.size;
|
||||
inherit (monospace) name;
|
||||
inherit (monospace) size;
|
||||
};
|
||||
settings = with palette-hex; {
|
||||
foreground = util.fg;
|
||||
background = util.bg;
|
||||
cursor = util.cursor;
|
||||
inherit (util) cursor;
|
||||
cursor_text = util.bg;
|
||||
selection_foreground = util.fg_sel;
|
||||
selection_background = util.bg_sel;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{pkgs, ...}: {
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.murex = {
|
||||
enable = true;
|
||||
direnv = true;
|
||||
|
@ -60,25 +61,28 @@
|
|||
|
||||
fresh
|
||||
'';
|
||||
plugins = let
|
||||
inherit
|
||||
(pkgs)
|
||||
plugins =
|
||||
let
|
||||
inherit (pkgs)
|
||||
murex-jump
|
||||
murex-starship
|
||||
;
|
||||
in
|
||||
[
|
||||
murex-jump
|
||||
murex-starship
|
||||
;
|
||||
in [
|
||||
murex-jump
|
||||
murex-starship
|
||||
];
|
||||
];
|
||||
};
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.packages = let
|
||||
inherit (pkgs) jump;
|
||||
in [
|
||||
jump
|
||||
];
|
||||
home.packages =
|
||||
let
|
||||
inherit (pkgs) jump;
|
||||
in
|
||||
[
|
||||
jump
|
||||
];
|
||||
}
|
||||
|
|
|
@ -3,71 +3,76 @@
|
|||
lib,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
}:
|
||||
{
|
||||
xdg.desktopEntries.ollama = {
|
||||
name = "Ollama";
|
||||
type = "Application";
|
||||
icon = ../icons/ollama.png;
|
||||
exec = let
|
||||
inherit (lib) getExe getExe';
|
||||
notify-send = "${getExe' pkgs.libnotify "notify-send"} -a \"Ollama\"";
|
||||
systemctl = "${getExe' pkgs.systemd "systemctl"}";
|
||||
podman = "${getExe pkgs.podman}";
|
||||
in "${pkgs.writeShellScript "ollama" ''
|
||||
set -euo pipefail
|
||||
exec =
|
||||
let
|
||||
inherit (lib) getExe getExe';
|
||||
notify-send = "${getExe' pkgs.libnotify "notify-send"} -a \"Ollama\"";
|
||||
systemctl = "${getExe' pkgs.systemd "systemctl"}";
|
||||
podman = "${getExe pkgs.podman}";
|
||||
in
|
||||
"${pkgs.writeShellScript "ollama" ''
|
||||
set -euo pipefail
|
||||
|
||||
exit_error() {
|
||||
${notify-send} -w "Failure" $1
|
||||
exit 1
|
||||
}
|
||||
exit_error() {
|
||||
${notify-send} -w "Failure" $1
|
||||
exit 1
|
||||
}
|
||||
|
||||
container_checks() {
|
||||
if [ "$(${podman} inspect -f {{.State.Health.Status}} ollama)" == "healthy" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
container_checks() {
|
||||
if [ "$(${podman} inspect -f {{.State.Health.Status}} ollama)" == "healthy" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
${notify-send} "Launching Ollama.." "Please be patient."
|
||||
${notify-send} "Launching Ollama.." "Please be patient."
|
||||
|
||||
${systemctl} --user start podman-ollama
|
||||
checks=0
|
||||
until container_checks; do
|
||||
sleep 2
|
||||
checks=$((checks+1))
|
||||
if [ $((checks%10)) -eq 0 ]; then
|
||||
${notify-send} "Launching.."
|
||||
fi
|
||||
if [ $checks -ge 60 ]; then
|
||||
${systemctl} --no-block --user stop podman-ollama.target
|
||||
exit_error "Failed to launch!"
|
||||
fi
|
||||
done
|
||||
${systemctl} --user start podman-ollama
|
||||
checks=0
|
||||
until container_checks; do
|
||||
sleep 2
|
||||
checks=$((checks+1))
|
||||
if [ $((checks%10)) -eq 0 ]; then
|
||||
${notify-send} "Launching.."
|
||||
fi
|
||||
if [ $checks -ge 60 ]; then
|
||||
${systemctl} --no-block --user stop podman-ollama.target
|
||||
exit_error "Failed to launch!"
|
||||
fi
|
||||
done
|
||||
|
||||
${notify-send} "Ollama serving on port 11434."
|
||||
''}";
|
||||
${notify-send} "Ollama serving on port 11434."
|
||||
''}";
|
||||
};
|
||||
|
||||
services.podman = {
|
||||
containers.ollama = let
|
||||
username = config.mainUser;
|
||||
in {
|
||||
image = "docker.io/ollama/ollama:latest";
|
||||
devices = ["nvidia.com/gpu=all"];
|
||||
autoStart = false;
|
||||
autoUpdate = "registry";
|
||||
network = ["ollama"];
|
||||
ports = ["11434:11434"];
|
||||
volumes = [
|
||||
"/home/${username}/.local/share/ollama:/models"
|
||||
];
|
||||
environment.OLLAMA_MODELS = "/models";
|
||||
extraPodmanArgs = [
|
||||
"--health-cmd"
|
||||
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/11434'")
|
||||
];
|
||||
};
|
||||
containers.ollama =
|
||||
let
|
||||
username = config.mainUser;
|
||||
in
|
||||
{
|
||||
image = "docker.io/ollama/ollama:latest";
|
||||
devices = [ "nvidia.com/gpu=all" ];
|
||||
autoStart = false;
|
||||
autoUpdate = "registry";
|
||||
network = [ "ollama" ];
|
||||
ports = [ "11434:11434" ];
|
||||
volumes = [
|
||||
"/home/${username}/.local/share/ollama:/models"
|
||||
];
|
||||
environment.OLLAMA_MODELS = "/models";
|
||||
extraPodmanArgs = [
|
||||
"--health-cmd"
|
||||
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/11434'")
|
||||
];
|
||||
};
|
||||
|
||||
networks.ollama = {
|
||||
subnet = "192.168.10.0/24";
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
port = 3021;
|
||||
in {
|
||||
imports = [./ollama.nix];
|
||||
in
|
||||
{
|
||||
imports = [ ./ollama.nix ];
|
||||
|
||||
localWebApps = {
|
||||
openwebui = {
|
||||
|
@ -13,28 +14,35 @@ in {
|
|||
genericName = "LLM";
|
||||
icon = ../icons/openwebui.png;
|
||||
inherit port;
|
||||
requires.containers = ["openwebui" "ollama"];
|
||||
requires.containers = [
|
||||
"openwebui"
|
||||
"ollama"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.podman = {
|
||||
containers.openwebui = let
|
||||
str = builtins.toString;
|
||||
in {
|
||||
# serviceName = "openwebui";
|
||||
image = "ghcr.io/open-webui/open-webui:main";
|
||||
ports = ["${str port}:${str port}"];
|
||||
environment = {
|
||||
WEBUI_AUTH = "False";
|
||||
PORT = "${str port}";
|
||||
containers.openwebui =
|
||||
let
|
||||
str = builtins.toString;
|
||||
in
|
||||
{
|
||||
# serviceName = "openwebui";
|
||||
image = "ghcr.io/open-webui/open-webui:main";
|
||||
ports = [ "${str port}:${str port}" ];
|
||||
environment = {
|
||||
WEBUI_AUTH = "False";
|
||||
PORT = "${str port}";
|
||||
};
|
||||
autoStart = false;
|
||||
networks = [ "ollama" ];
|
||||
unitConfig = {
|
||||
Requires = [ "podman-ollama.service" ];
|
||||
};
|
||||
extraOptions = [
|
||||
"--health-cmd"
|
||||
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/${str port}'")
|
||||
];
|
||||
};
|
||||
autoStart = false;
|
||||
networks = ["ollama"];
|
||||
unitConfig = {Requires = ["podman-ollama.service"];};
|
||||
extraOptions = [
|
||||
"--health-cmd"
|
||||
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/${str port}'")
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) getExe;
|
||||
inherit (config.home) homeDirectory;
|
||||
in {
|
||||
}:
|
||||
{
|
||||
localWebApps = {
|
||||
stable-diffusion = {
|
||||
name = "Stable Diffusion";
|
||||
|
@ -14,7 +11,7 @@ in {
|
|||
icon = ../icons/comfyui.png;
|
||||
id = 5;
|
||||
port = 7860;
|
||||
requires = ["stable-diffusion"];
|
||||
requires = [ "stable-diffusion" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
{pkgs, ...}: {
|
||||
{ pkgs, inputs, ... }:
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
extensions = with inputs.nix-vscode.extensions.x86_64-linux.vscode-marketplace; [
|
||||
rust-lang.rust-analyzer
|
||||
serayuzgur.crates
|
||||
ocamllabs.ocaml-platform
|
||||
jnoortheen.nix-ide
|
||||
# arrterian.nix-env-selector
|
||||
mkhl.direnv
|
||||
continue.continue
|
||||
# silverquark.dancehelix
|
||||
# gregoire.dance
|
||||
barbosshack.crates-io
|
||||
vadimcn.vscode-lldb
|
||||
kamadorueda.alejandra
|
||||
kend.dancehelixkey
|
||||
hikionori.kanagawa-vscode-theme
|
||||
];
|
||||
mutableExtensionsDir = true;
|
||||
mutableExtensionsDir = false;
|
||||
userSettings = {
|
||||
"window.titleBarStyle" = "custom";
|
||||
"editor.fontFamily" = "${pkgs.rice.fonts.monospace.name}";
|
||||
|
|
|
@ -1,39 +1,43 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
|
||||
in {
|
||||
in
|
||||
{
|
||||
programs.wlogout = {
|
||||
enable = true;
|
||||
package = pkgs.wleave;
|
||||
layout = builtins.fromJSON (builtins.readFile ../dots/wlogout/layout);
|
||||
style = with palette-hex; (builtins.replaceStrings
|
||||
[
|
||||
"/usr/share/wlogout"
|
||||
"/etc/wlogout"
|
||||
"#WINBG"
|
||||
"#BTNCOL"
|
||||
"#BTNBG"
|
||||
"#BTNFOCUSBG"
|
||||
"#WINLOGO"
|
||||
]
|
||||
[
|
||||
"${pkgs.wlogout}/share/wlogout"
|
||||
"${pkgs.wlogout}/etc/wlogout"
|
||||
util.bg
|
||||
bright.yellow
|
||||
util.bg
|
||||
normal.black
|
||||
(builtins.path {
|
||||
name = "winlogo";
|
||||
path = ../icons/winlogo.png;
|
||||
sha256 = "7c1ff96b553c7a7ca3a7b7cf8efe830ab7feea92355aed288a10ee7347c24108";
|
||||
})
|
||||
]
|
||||
(builtins.readFile ../dots/wlogout/style.css));
|
||||
style =
|
||||
with palette-hex;
|
||||
(builtins.replaceStrings
|
||||
[
|
||||
"/usr/share/wlogout"
|
||||
"/etc/wlogout"
|
||||
"#WINBG"
|
||||
"#BTNCOL"
|
||||
"#BTNBG"
|
||||
"#BTNFOCUSBG"
|
||||
"#WINLOGO"
|
||||
]
|
||||
[
|
||||
"${pkgs.wlogout}/share/wlogout"
|
||||
"${pkgs.wlogout}/etc/wlogout"
|
||||
util.bg
|
||||
bright.yellow
|
||||
util.bg
|
||||
normal.black
|
||||
(builtins.path {
|
||||
name = "winlogo";
|
||||
path = ../icons/winlogo.png;
|
||||
sha256 = "7c1ff96b553c7a7ca3a7b7cf8efe830ab7feea92355aed288a10ee7347c24108";
|
||||
})
|
||||
]
|
||||
(builtins.readFile ../dots/wlogout/style.css)
|
||||
);
|
||||
};
|
||||
# xdg.configFile = {
|
||||
# "wleave/layout".text = builtins.readFile ../dots/wlogout/layout;
|
||||
|
@ -63,5 +67,5 @@ in {
|
|||
# (builtins.readFile ../dots/wlogout/style.css));
|
||||
# };
|
||||
|
||||
home.packages = [pkgs.wlogout];
|
||||
home.packages = [ pkgs.wlogout ];
|
||||
}
|
||||
|
|
|
@ -3,11 +3,13 @@
|
|||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
inherit (lib) getExe;
|
||||
inherit (config.home) homeDirectory;
|
||||
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
|
||||
in {
|
||||
in
|
||||
{
|
||||
ezOneShots = with pkgs; {
|
||||
xrdb = "${getExe xorg.xrdb} -load ${homeDirectory}/.Xresources";
|
||||
};
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
|
||||
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
|
||||
in {
|
||||
}:
|
||||
{
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
autosuggestion.enable = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue