Compare commits
49 Commits
1cec36e736
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 2913f0c8e1 | |||
| fb7c219cf2 | |||
| 581fa74f19 | |||
| 3f1f23391a | |||
| ddb0345587 | |||
| 99494b8777 | |||
| 4c385b2653 | |||
| f32d7d3643 | |||
| ab4c22592a | |||
| 869778df2a | |||
| 0a2ad32dfb | |||
| 230547eb92 | |||
| 3beb85c474 | |||
| 101331cbc9 | |||
| d803dd9dc8 | |||
| 509a9b49ed | |||
| a97ff2c46d | |||
| 6453bb62a1 | |||
| 67305549bc | |||
| 6ff14a1aa4 | |||
| 9a6d19b101 | |||
| 2494e8ce83 | |||
| f90f84b3f7 | |||
| 3db69c9e41 | |||
| ac55fa4426 | |||
| 5a195af336 | |||
| e0f79ae04b | |||
| 74d5ec1426 | |||
| 124e3fedfd | |||
| 34c0bf9616 | |||
| 5eb002fe8b | |||
| fd2ea0ba07 | |||
| 165dff7faa | |||
| 49ad26ac1c | |||
| 01e0349610 | |||
| 9ca0e4fa5b | |||
| 0a95fbd703 | |||
| 04a08d3107 | |||
|
|
0d14b6bffc | ||
| 7b717f95ab | |||
|
|
f9a7c9ae52 | ||
|
|
5d48a7ed38 | ||
|
|
99b4fb3ad1 | ||
|
|
741cfc163e | ||
|
|
b9a684f4e9 | ||
|
|
253d600448 | ||
|
|
1f537d6189 | ||
|
|
97dd599e03 | ||
|
|
ac69625809 |
8
Makefile
8
Makefile
@@ -1,9 +1,9 @@
|
|||||||
.PHONY: darwin home default nixos just
|
.PHONY: darwin home default nixos install
|
||||||
|
|
||||||
default: just
|
default: install
|
||||||
|
|
||||||
just:
|
install:
|
||||||
just
|
sudo nixos-rebuild switch --flake . --builders '' --max-jobs 1
|
||||||
|
|
||||||
build:
|
build:
|
||||||
sudo nixos-rebuild build --flake . --show-trace
|
sudo nixos-rebuild build --flake . --show-trace
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Machines
|
# Machines
|
||||||
|
|
||||||
1. Ryu Dektop (Intel i9-14900KS / Nvidia 5090 / DDR5 64GB CL36@6000MTs)
|
1. Ryu Dektop (Intel i9-14900KS / Nvidia RTX 5090 / DDR5 64GB CL36@6000MTs)
|
||||||
```
|
```
|
||||||
deploy -s .#ryu
|
deploy -s .#ryu
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
inputs,
|
inputs,
|
||||||
nix-darwin,
|
nix-darwin,
|
||||||
overlays,
|
overlays,
|
||||||
|
nixpkgs,
|
||||||
...
|
...
|
||||||
}: (builtins.mapAttrs (
|
}: (builtins.mapAttrs (
|
||||||
name: device:
|
name: device:
|
||||||
@@ -11,6 +12,7 @@
|
|||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit device inputs;
|
inherit device inputs;
|
||||||
stablePkgs = inputs.nixpkgs-stable.legacyPackages.${device.system};
|
stablePkgs = inputs.nixpkgs-stable.legacyPackages.${device.system};
|
||||||
|
cratesNix = inputs.crates-nix.mkLib {pkgs = nixpkgs.legacyPackages.${device.system};};
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
inputs.home-manager.darwinModules.home-manager
|
inputs.home-manager.darwinModules.home-manager
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
extra-nix-path = nixpkgs=flake:nixpkgs
|
extra-nix-path = nixpkgs=flake:nixpkgs
|
||||||
builders-use-substitutes = true
|
builders-use-substitutes = true
|
||||||
'';
|
'';
|
||||||
package = pkgs.nixVersions.latest;
|
package = pkgs.nixVersions.nix_2_32;
|
||||||
buildMachines = [
|
buildMachines = [
|
||||||
../../builders/tako.nix
|
../../builders/tako.nix
|
||||||
../../builders/shiro.nix
|
../../builders/shiro.nix
|
||||||
|
|||||||
@@ -8,11 +8,8 @@
|
|||||||
"lunar"
|
"lunar"
|
||||||
"orcaslicer"
|
"orcaslicer"
|
||||||
"raycast"
|
"raycast"
|
||||||
"shapr3d"
|
|
||||||
"vlc"
|
|
||||||
"zed"
|
"zed"
|
||||||
"zen"
|
"zen"
|
||||||
"lm-studio"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{stablePkgs, ...}: {
|
{...}: {
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = stablePkgs.tailscale;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,10 @@
|
|||||||
"docker-compose"
|
"docker-compose"
|
||||||
];
|
];
|
||||||
casks = [
|
casks = [
|
||||||
|
"1password"
|
||||||
"docker"
|
"docker"
|
||||||
"raycast"
|
"raycast"
|
||||||
"lunar"
|
"lunar"
|
||||||
"virtual-desktop-streamer"
|
|
||||||
"kicad"
|
|
||||||
"shapr3d"
|
|
||||||
"orcaslicer"
|
"orcaslicer"
|
||||||
"zed"
|
"zed"
|
||||||
"zen"
|
"zen"
|
||||||
|
|||||||
937
flake.lock
generated
937
flake.lock
generated
File diff suppressed because it is too large
Load Diff
25
flake.nix
25
flake.nix
@@ -3,7 +3,7 @@
|
|||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
disko = {
|
disko = {
|
||||||
url = "github:nix-community/disko/latest";
|
url = "github:nix-community/disko/latest";
|
||||||
@@ -18,11 +18,11 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
stylix-stable = {
|
stylix-stable = {
|
||||||
url = "github:nix-community/stylix/release-25.05";
|
url = "github:nix-community/stylix/release-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
};
|
};
|
||||||
home-manager-stable = {
|
home-manager-stable = {
|
||||||
url = "github:nix-community/home-manager/release-25.05";
|
url = "github:nix-community/home-manager/release-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
};
|
};
|
||||||
nix-darwin = {
|
nix-darwin = {
|
||||||
@@ -189,11 +189,6 @@
|
|||||||
url = "github:uttarayan21/ddcbacklight";
|
url = "github:uttarayan21/ddcbacklight";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
command-runner = {
|
|
||||||
url = "github:uttarayan21/command-runner";
|
|
||||||
# url = "path:/home/servius/Projects/command-runner";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
hyprmonitors = {
|
hyprmonitors = {
|
||||||
url = "git+https://git.darksailor.dev/servius/hyprmonitors";
|
url = "git+https://git.darksailor.dev/servius/hyprmonitors";
|
||||||
# url = "path:/home/servius/Projects/hyprmonitors";
|
# url = "path:/home/servius/Projects/hyprmonitors";
|
||||||
@@ -230,7 +225,14 @@
|
|||||||
url = "github:xatuke/handoff";
|
url = "github:xatuke/handoff";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
crates-nix.url = "github:uttarayan21/crates.nix";
|
crates-io-index = {
|
||||||
|
url = "git+https://github.com/rust-lang/crates.io-index?shallow=1";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
crates-nix = {
|
||||||
|
url = "github:uttarayan21/crates.nix";
|
||||||
|
inputs.crates-io-index.follows = "crates-io-index";
|
||||||
|
};
|
||||||
headplane = {
|
headplane = {
|
||||||
url = "github:tale/headplane";
|
url = "github:tale/headplane";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -247,6 +249,9 @@
|
|||||||
url = "github:christo-auer/eilmeldung";
|
url = "github:christo-auer/eilmeldung";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
hytale-launcher = {
|
||||||
|
url = "github:JPyke3/hytale-launcher-nix";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
@@ -431,7 +436,7 @@
|
|||||||
# };
|
# };
|
||||||
devShells = {
|
devShells = {
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
packages = with pkgs; [sops just openssl];
|
packages = with pkgs; [sops just openssl ast-grep];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
};
|
};
|
||||||
primary = true;
|
primary = true;
|
||||||
address = "email@uttarayan.me";
|
address = "email@uttarayan.me";
|
||||||
|
aliases = ["servius@darksailor.dev"];
|
||||||
userName = address;
|
userName = address;
|
||||||
realName = "Uttarayan Mondal";
|
realName = "Uttarayan Mondal";
|
||||||
imap = {
|
imap = {
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ lib.optionalAttrs device.hasGui {
|
|||||||
./discord.nix
|
./discord.nix
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
./ghostty.nix
|
./ghostty.nix
|
||||||
./gimp.nix
|
# ./gimp.nix
|
||||||
# ./guitarix.nix
|
# ./guitarix.nix
|
||||||
./hyprpicker.nix
|
./hyprpicker.nix
|
||||||
./ida.nix
|
# ./ida.nix
|
||||||
# ./jellyflix.nix
|
# ./jellyflix.nix
|
||||||
# ./kicad.nix
|
# ./kicad.nix
|
||||||
./kitty.nix
|
./kitty.nix
|
||||||
@@ -26,7 +26,7 @@ lib.optionalAttrs device.hasGui {
|
|||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
./obs-studio.nix
|
./obs-studio.nix
|
||||||
# ./openscad.nix
|
# ./openscad.nix
|
||||||
# ./orcaslicer.nix
|
./orcaslicer.nix
|
||||||
# ./pcsx2.nix
|
# ./pcsx2.nix
|
||||||
./prismlauncher.nix
|
./prismlauncher.nix
|
||||||
# ./rpcs3.nix
|
# ./rpcs3.nix
|
||||||
@@ -37,7 +37,7 @@ lib.optionalAttrs device.hasGui {
|
|||||||
# ./vial.nix
|
# ./vial.nix
|
||||||
./vicinae.nix
|
./vicinae.nix
|
||||||
./vlc.nix
|
./vlc.nix
|
||||||
./vscode.nix
|
# ./vscode.nix
|
||||||
./wezterm.nix
|
./wezterm.nix
|
||||||
./zathura.nix
|
./zathura.nix
|
||||||
./zed.nix
|
./zed.nix
|
||||||
|
|||||||
@@ -4,9 +4,12 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = lib.optionals pkgs.stdenv.isLinux [
|
home.packages = lib.optionals pkgs.stdenv.isLinux [
|
||||||
pkgs.discord
|
(pkgs.discord.override {
|
||||||
pkgs.vesktop
|
withOpenASAR = true;
|
||||||
pkgs.discord-canary
|
withVencord = true;
|
||||||
pkgs.discord-ptb
|
})
|
||||||
|
# pkgs.vesktop
|
||||||
|
# pkgs.discord-canary
|
||||||
|
# pkgs.discord-ptb
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,63 @@
|
|||||||
"Hasklug Nerd Font Mono"
|
"Hasklug Nerd Font Mono"
|
||||||
];
|
];
|
||||||
window-decoration = false;
|
window-decoration = false;
|
||||||
title = "";
|
title = "ghostty";
|
||||||
command = "fish";
|
command = "fish";
|
||||||
background-opacity = 0.8;
|
background-opacity = 0.8;
|
||||||
theme = "catppuccin-mocha";
|
theme = "catppuccin-mocha";
|
||||||
|
custom-shader = "~/.config/ghostty/shader.glsl";
|
||||||
|
# custom-shader = toString (pkgs.writeText "shader.glsl"
|
||||||
|
# /*
|
||||||
|
# glsl
|
||||||
|
# */
|
||||||
|
# ''
|
||||||
|
# const float CURSOR_ANIMATION_SPEED = 150.0; // ms
|
||||||
|
# const float TRAILING_CURSORS = 3.0;
|
||||||
|
# bool at_pos(vec2 fragCoord, vec2 pos, vec2 size) {
|
||||||
|
# return (pos.x <= fragCoord.x && fragCoord.x <= pos.x + size.x &&
|
||||||
|
# pos.y - size.y <= fragCoord.y && fragCoord.y <= pos.y);
|
||||||
|
# }
|
||||||
|
# void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
||||||
|
# // Normalized pixel coordinates (from 0 to 1)
|
||||||
|
# vec2 uv = fragCoord / iResolution.xy;
|
||||||
|
# vec2 current_cursor = iCurrentCursor.xy;
|
||||||
|
# vec2 previous_cursor = iPreviousCursor.xy;
|
||||||
|
# float time_passed = (iTime - iTimeCursorChange) * 1000.0; // in ms
|
||||||
|
#
|
||||||
|
# if (time_passed > CURSOR_ANIMATION_SPEED) {
|
||||||
|
# // No animation, just render normally
|
||||||
|
# fragColor = texture(iChannel0, uv);
|
||||||
|
# return;
|
||||||
|
# }
|
||||||
|
# // Animate cursor meovement
|
||||||
|
# vec4 col = texture(iChannel0, uv);
|
||||||
|
# // linear interpolation between current and previous cursor position based on time passed
|
||||||
|
# vec2 animated_cursor_pos = mix(previous_cursor, current_cursor, time_passed / CURSOR_ANIMATION_SPEED);
|
||||||
|
# // make 3 trailing cursors for smoother animation
|
||||||
|
# for (int i = 1; i <= int(TRAILING_CURSORS); i++) {
|
||||||
|
# float t = float(i) / TRAILING_CURSORS;
|
||||||
|
# vec2 trail_pos = mix(previous_cursor, current_cursor, (time_passed / CURSOR_ANIMATION_SPEED) * t);
|
||||||
|
# if (at_pos(fragCoord, trail_pos, iCurrentCursor.zw)) {
|
||||||
|
# col = mix(col, iCurrentCursorColor, t);
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# // vec4 cursor_color = mix(iPreviousCursorColor, iCurrentCursorColor, time_passed / CURSOR_ANIMATION_SPEED);
|
||||||
|
# vec4 cursor_color = iCurrentCursorColor; // no color animation for now
|
||||||
|
# vec2 cursor_size = iCurrentCursor.zw;
|
||||||
|
# // check if fragCoord is within the animated cursor rectangle
|
||||||
|
# // y is in the negative direction
|
||||||
|
# // if (animated_cursor_pos.x <= fragCoord.x && fragCoord.x <= animated_cursor_pos.x + cursor_size.x &&
|
||||||
|
# // animated_cursor_pos.y - cursor_size.y <= fragCoord.y && fragCoord.y <= animated_cursor_pos.y) {
|
||||||
|
# // col = cursor_color;
|
||||||
|
# // }
|
||||||
|
# if (at_pos(fragCoord, animated_cursor_pos, cursor_size)) {
|
||||||
|
# col = cursor_color;
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# fragColor = col;
|
||||||
|
# }
|
||||||
|
# '');
|
||||||
};
|
};
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
themes = {
|
themes = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
programs.mpv = {
|
programs.mpv = {
|
||||||
enable = true;
|
enable = pkgs.stdenv.isLinux;
|
||||||
config = {
|
config = {
|
||||||
vo = "gpu-next";
|
vo = "gpu-next";
|
||||||
gpu-api = "vulkan";
|
gpu-api = "vulkan";
|
||||||
@@ -23,10 +23,5 @@
|
|||||||
gamut-mapping = "desaturate";
|
gamut-mapping = "desaturate";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
package =
|
|
||||||
if pkgs.stdenv.isLinux
|
|
||||||
then pkgs.mpv-unwrapped.wrapper {mpv = pkgs.mpv-unwrapped.override {sixelSupport = true;};}
|
|
||||||
else pkgs.mpv;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,122 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
shadps4_qtlauncher = pkgs.fetchFromGitHub {
|
||||||
|
owner = "shadps4-emu";
|
||||||
|
repo = "shadps4-qtlauncher";
|
||||||
|
rev = "1f4e59f6110d5f991cead5a3e9f72671fced2c70";
|
||||||
|
sha256 = "sha256-AAxj3Eqp7iGJgRgJki/93fln5Z6ae8AydJLGZ6Dbb00=";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
# diegolixShadps4 = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "diegolix";
|
||||||
|
# repo = "shadps4-qtlauncher";
|
||||||
|
# rev = "a1b2c3d4e5f67890123456789abcdef01234567";
|
||||||
|
# sha256 = "sha256-PLACEHOLDERFORHASHVALUE1234567890ABCDEFGH=";
|
||||||
|
# fetchSubmodules = true;
|
||||||
|
# };
|
||||||
|
bblauncher = pkgs.fetchFromGitHub {
|
||||||
|
owner = "rainmakerv3";
|
||||||
|
repo = "BB_Launcher";
|
||||||
|
rev = "2280c90974d2d741ce927dfc88f0ecf98c8bd2df";
|
||||||
|
sha256 = "sha256-jPcIQp2EBAEiaTLvC/OBH0BgcfYv3zo2H7akHJSlPaI=";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
in {
|
||||||
home.packages = lib.optionals pkgs.stdenv.isLinux [
|
home.packages = lib.optionals pkgs.stdenv.isLinux [
|
||||||
(pkgs.shadps4.overrideAttrs
|
(pkgs.shadps4.overrideAttrs
|
||||||
(oldAttrs: {
|
(oldAttrs: {
|
||||||
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [pkgs.cudatoolkit];
|
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [pkgs.cudatoolkit];
|
||||||
buildInputs = oldAttrs.buildInputs ++ [pkgs.cudatoolkit];
|
buildInputs = oldAttrs.buildInputs ++ [pkgs.cudatoolkit];
|
||||||
}))
|
}))
|
||||||
|
(pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "shadps4-qt";
|
||||||
|
version = "1.0.0";
|
||||||
|
src = shadps4_qtlauncher;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.cmake
|
||||||
|
pkgs.pkg-config
|
||||||
|
pkgs.qt6.wrapQtAppsHook
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.alsa-lib
|
||||||
|
pkgs.ffmpeg
|
||||||
|
pkgs.fmt
|
||||||
|
pkgs.glslang
|
||||||
|
pkgs.jack2
|
||||||
|
pkgs.libedit
|
||||||
|
pkgs.libevdev
|
||||||
|
pkgs.libpng
|
||||||
|
pkgs.libpulseaudio
|
||||||
|
pkgs.libxkbcommon
|
||||||
|
pkgs.openal
|
||||||
|
pkgs.openssl
|
||||||
|
pkgs.qt6.qtbase
|
||||||
|
pkgs.qt6.qtmultimedia
|
||||||
|
pkgs.qt6.qttools
|
||||||
|
pkgs.qt6.qtwayland
|
||||||
|
pkgs.SDL2
|
||||||
|
pkgs.sdl3
|
||||||
|
pkgs.sndio
|
||||||
|
pkgs.stb
|
||||||
|
pkgs.udev
|
||||||
|
pkgs.vulkan-headers
|
||||||
|
pkgs.vulkan-tools
|
||||||
|
pkgs.vulkan-utility-libraries
|
||||||
|
pkgs.wayland
|
||||||
|
pkgs.wayland-protocols
|
||||||
|
pkgs.xorg.libxcb
|
||||||
|
pkgs.xorg.xcbutil
|
||||||
|
pkgs.xorg.xcbutilkeysyms
|
||||||
|
pkgs.xorg.xcbutilwm
|
||||||
|
pkgs.zlib
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
|
(pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "BBLauncher";
|
||||||
|
version = "1.0.0";
|
||||||
|
src = bblauncher;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.cmake
|
||||||
|
pkgs.pkg-config
|
||||||
|
pkgs.qt6.wrapQtAppsHook
|
||||||
|
];
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.alsa-lib
|
||||||
|
pkgs.ffmpeg
|
||||||
|
pkgs.fmt
|
||||||
|
pkgs.glslang
|
||||||
|
pkgs.jack2
|
||||||
|
pkgs.libedit
|
||||||
|
pkgs.libevdev
|
||||||
|
pkgs.libpng
|
||||||
|
pkgs.libpulseaudio
|
||||||
|
pkgs.libxkbcommon
|
||||||
|
pkgs.openal
|
||||||
|
pkgs.openssl
|
||||||
|
pkgs.qt6.qtbase
|
||||||
|
pkgs.qt6.qtmultimedia
|
||||||
|
pkgs.qt6.qttools
|
||||||
|
pkgs.qt6.qtwayland
|
||||||
|
pkgs.qt6.qtwebview
|
||||||
|
pkgs.SDL2
|
||||||
|
pkgs.sdl3
|
||||||
|
pkgs.sndio
|
||||||
|
pkgs.stb
|
||||||
|
pkgs.udev
|
||||||
|
pkgs.vulkan-headers
|
||||||
|
pkgs.vulkan-tools
|
||||||
|
pkgs.vulkan-utility-libraries
|
||||||
|
pkgs.wayland
|
||||||
|
pkgs.wayland-protocols
|
||||||
|
pkgs.xorg.libxcb
|
||||||
|
pkgs.xorg.xcbutil
|
||||||
|
pkgs.xorg.xcbutilkeysyms
|
||||||
|
pkgs.xorg.xcbutilwm
|
||||||
|
pkgs.zlib
|
||||||
|
];
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,16 +11,8 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
};
|
};
|
||||||
extensions = [];
|
|
||||||
settings = {
|
|
||||||
theme = {
|
|
||||||
dark = {
|
|
||||||
name = "catppuccin-mocha";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# package = pkgs.vicinae.overrideAttrs (old: {
|
|
||||||
# patches = [../../patches/vicinae-ctrl-np.patch];
|
|
||||||
# });
|
|
||||||
};
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pulseaudio
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
package = stablePkgs.zed-editor;
|
package = pkgs.zed-editor;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
nixd
|
nixd
|
||||||
nil
|
nil
|
||||||
|
|||||||
@@ -15,12 +15,12 @@
|
|||||||
./scripts.nix
|
./scripts.nix
|
||||||
./services
|
./services
|
||||||
./accounts
|
./accounts
|
||||||
|
./fonts.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
xdg.userDirs = {
|
xdg.userDirs = {
|
||||||
enable = device.isLinux;
|
enable = device.isLinux;
|
||||||
# music = "${config.home.homeDirectory}/Nextcloud/Music";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
@@ -35,26 +35,6 @@
|
|||||||
username = device.user;
|
username = device.user;
|
||||||
homeDirectory = lib.mkForce device.home;
|
homeDirectory = lib.mkForce device.home;
|
||||||
|
|
||||||
file = {
|
|
||||||
".config/fish/themes".source = pkgs.catppuccinThemes.fish + "/themes";
|
|
||||||
".cargo/config.toml".text =
|
|
||||||
# toml
|
|
||||||
''
|
|
||||||
[alias]
|
|
||||||
lldb = ["with", "rust-lldb", "--"]
|
|
||||||
t = ["nextest", "run"]
|
|
||||||
|
|
||||||
[net]
|
|
||||||
git-fetch-with-cli = true
|
|
||||||
|
|
||||||
[registries.catscii]
|
|
||||||
index = "https://git.shipyard.rs/catscii/crate-index.git"
|
|
||||||
|
|
||||||
[http]
|
|
||||||
user-agent = "shipyard J0/QFq2Sa5y6nTxJQAb8t+e/3qLSub1/sa3zn0leZv6LKG/zmQcoikT9U3xPwbzp8hQ="
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
EDITOR = "nvim";
|
EDITOR = "nvim";
|
||||||
SHELL = "${pkgs.bash}/bin/bash";
|
SHELL = "${pkgs.bash}/bin/bash";
|
||||||
|
|||||||
20
home/fonts.nix
Normal file
20
home/fonts.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
device,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs;
|
||||||
|
lib.optionals (!device.isServer) [
|
||||||
|
monaspace
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.hasklug
|
||||||
|
nerd-fonts.symbols-only
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-color-emoji
|
||||||
|
liberation_ttf
|
||||||
|
fira-code
|
||||||
|
fira-code-symbols
|
||||||
|
mplus-outline-fonts.githubRelease
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
device,
|
device,
|
||||||
inputs,
|
inputs,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit device;
|
inherit device;
|
||||||
stablePkgs = inputs.nixpkgs-stable.legacyPackages.${device.system};
|
stablePkgs = inputs.nixpkgs-stable.legacyPackages.${device.system};
|
||||||
|
cratesNix = inputs.crates-nix.mkLib {inherit pkgs;};
|
||||||
};
|
};
|
||||||
users.${device.user}.imports = [
|
users.${device.user}.imports = [
|
||||||
inputs.nixvim.homeModules.nixvim
|
inputs.nixvim.homeModules.nixvim
|
||||||
|
|||||||
5
home/programs/1password-cli.nix
Normal file
5
home/programs/1password-cli.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = [
|
||||||
|
pkgs._1password-cli
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
{config, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
sops = {
|
sops = {
|
||||||
secrets."llama/api_key" = {};
|
secrets."llama/api_key" = {};
|
||||||
secrets."openai/api_key" = {};
|
secrets."openai/api_key" = {};
|
||||||
@@ -16,25 +20,30 @@
|
|||||||
enableNushellIntegration = false;
|
enableNushellIntegration = false;
|
||||||
settings = {
|
settings = {
|
||||||
save_session = true;
|
save_session = true;
|
||||||
# model = "openai:gpt-4o";
|
model = "ryu:qwen3:30b-a3b";
|
||||||
model = "ryu:qwen3-coder-30b";
|
rag_embedding_model = "ryu:RobinBially/nomic-embed-text-8k";
|
||||||
rag_embedding_model = "ollama:RobinBially/nomic-embed-text-8k";
|
|
||||||
clients = [
|
clients = [
|
||||||
{
|
{
|
||||||
type = "openai-compatible";
|
type = "openai-compatible";
|
||||||
name = "mirai";
|
name = "ryu";
|
||||||
api_base = "https://ollama.darksailor.dev/v1";
|
api_base = "https://ollama.darksailor.dev/v1";
|
||||||
api_key_cmd = "cat ${config.sops.secrets."llama/api_key".path}";
|
api_key_cmd = "cat ${config.sops.secrets."llama/api_key".path}";
|
||||||
models = [
|
models = [
|
||||||
# {
|
|
||||||
# name = "RobinBially/nomic-embed-text-8k";
|
|
||||||
# type = "embedding";
|
|
||||||
# default_chunk_size = 8000;
|
|
||||||
# }
|
|
||||||
{
|
{
|
||||||
name = "gpt-oss-20b";
|
name = "gpt-oss:20b";
|
||||||
type = "chat";
|
type = "chat";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "qwen3:30b-a3b";
|
||||||
|
type = "chat";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "RobinBially/nomic-embed-text-8k";
|
||||||
|
type = "embedding";
|
||||||
|
default_chunk_size = 1000;
|
||||||
|
max_tokens_per_chunk = 8192;
|
||||||
|
max_batch_size = 100;
|
||||||
|
}
|
||||||
# {
|
# {
|
||||||
# name = "deepseek-r1:14b";
|
# name = "deepseek-r1:14b";
|
||||||
# type = "chat";
|
# type = "chat";
|
||||||
@@ -45,42 +54,6 @@
|
|||||||
# }
|
# }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
|
||||||
type = "openai-compatible";
|
|
||||||
name = "ryu";
|
|
||||||
api_base = "https://llama.ryu.darksailor.dev/v1";
|
|
||||||
models = [
|
|
||||||
{
|
|
||||||
name = "qwen3-coder-30b";
|
|
||||||
type = "chat";
|
|
||||||
}
|
|
||||||
# {
|
|
||||||
# name = "RobinBially/nomic-embed-text-8k";
|
|
||||||
# type = "embedding";
|
|
||||||
# default_chunk_size = 8000;
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "deepseek-r1:7b";
|
|
||||||
# type = "chat";
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "qwen3:30b-a3b";
|
|
||||||
# type = "chat";
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "deepseek-r1:14b";
|
|
||||||
# type = "chat";
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "qwen3:8b";
|
|
||||||
# type = "chat";
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "qwen3:14b";
|
|
||||||
# type = "chat";
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
type = "gemini";
|
type = "gemini";
|
||||||
name = "gemini";
|
name = "gemini";
|
||||||
@@ -166,18 +139,29 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
document_loaders = {
|
||||||
|
git =
|
||||||
|
/*
|
||||||
|
sh
|
||||||
|
*/
|
||||||
|
''sh -c "yek $1 --json | jq '[.[] | { path: .filename, contents: .content }]'"'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
roles = {
|
roles = {
|
||||||
"%git-commit%" =
|
"git-commit" =
|
||||||
/*
|
/*
|
||||||
md
|
md
|
||||||
*/
|
*/
|
||||||
''
|
''
|
||||||
---
|
---
|
||||||
model: ryu:qwen3-coder-30b
|
model: ryu:gpt-oss:20b
|
||||||
---
|
---
|
||||||
Your task is to generate a concise and informative commit message based on the provided diff. Use the conventional commit format, which includes a type (feat, fix, chore, docs, style, refactor, perf, test) and an optional scope. The message should be in the imperative mood and should not exceed 72 characters in the subject line. Do not under any circumstance include any additional text or explanations, just add the commit message.
|
Your task is to generate a concise and informative commit message based on the provided diff. Use the conventional commit format, which includes a type (feat, fix, chore, docs, style, refactor, perf, test) and an optional scope. The message should be in the imperative mood and should not exceed 72 characters in the subject line. Do not under any circumstance include any additional text or explanations, just add the commit message.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
jq
|
||||||
|
yek
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
1
home/programs/alejandra.nix
Normal file
1
home/programs/alejandra.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.alejandra];}
|
||||||
1
home/programs/aria2.nix
Normal file
1
home/programs/aria2.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.aria2];}
|
||||||
1
home/programs/ast-grep.nix
Normal file
1
home/programs/ast-grep.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.ast-grep];}
|
||||||
@@ -9,9 +9,49 @@
|
|||||||
auto_sync = true;
|
auto_sync = true;
|
||||||
sync_frequency = "1m";
|
sync_frequency = "1m";
|
||||||
sync_address = "https://atuin.darksailor.dev";
|
sync_address = "https://atuin.darksailor.dev";
|
||||||
|
sync = {
|
||||||
|
records = true;
|
||||||
|
};
|
||||||
|
daemon = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
enableNushellIntegration = true;
|
enableNushellIntegration = true;
|
||||||
};
|
};
|
||||||
|
systemd.user.services.atuin-daemon = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Atuin Daemon";
|
||||||
|
After = ["network.target"];
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["default.target"];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.atuin}/bin/atuin daemon";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "10s";
|
||||||
|
# Environment = lib.mkForce "ATUIN_DATA_DIR=${device.home}/.local/share/atuin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
launchd.agents.atuin-daemon = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
# A label for the service
|
||||||
|
Label = "dev.darksailor.atuin-daemon";
|
||||||
|
# The command to run
|
||||||
|
ProgramArguments = [
|
||||||
|
"${pkgs.atuin}/bin/atuin"
|
||||||
|
"daemon"
|
||||||
|
];
|
||||||
|
# Run the service when you log in
|
||||||
|
RunAtLoad = true;
|
||||||
|
# Keep the process alive, or restart if it dies
|
||||||
|
KeepAlive = true;
|
||||||
|
# Log files
|
||||||
|
StandardOutPath = "${device.home}/Library/Logs/atuin-daemon.log";
|
||||||
|
StandardErrorPath = "${device.home}/Library/Logs/atuin-daemon.error.log";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
{
|
{...}: {
|
||||||
pkgs,
|
programs.bat = {
|
||||||
lib,
|
|
||||||
device,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.
|
|
||||||
bat = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
# extraPackages = with pkgs.bat-extras; [batman batgrep batwatch];
|
# extraPackages = with pkgs.bat-extras; [batman batgrep batwatch];
|
||||||
};
|
};
|
||||||
|
|||||||
1
home/programs/binwalk.nix
Normal file
1
home/programs/binwalk.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.binwalk];}
|
||||||
1
home/programs/bottom.nix
Normal file
1
home/programs/bottom.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.bottom];}
|
||||||
1
home/programs/btop.nix
Normal file
1
home/programs/btop.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.btop];}
|
||||||
1
home/programs/cachix.nix
Normal file
1
home/programs/cachix.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.cachix];}
|
||||||
27
home/programs/cargo.nix
Normal file
27
home/programs/cargo.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
device,
|
||||||
|
cratesNix,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
lib.mkIf (!device.isServer) {
|
||||||
|
home.file.".cargo/config.toml".text =
|
||||||
|
# toml
|
||||||
|
''
|
||||||
|
[alias]
|
||||||
|
lldb = ["with", "rust-lldb", "--"]
|
||||||
|
t = ["nextest", "run"]
|
||||||
|
|
||||||
|
[net]
|
||||||
|
git-fetch-with-cli = true
|
||||||
|
|
||||||
|
[registries.kellnr]
|
||||||
|
index = "sparse+https://crates.darksailor.dev/api/v1/crates/"
|
||||||
|
|
||||||
|
[registry]
|
||||||
|
global-credential-providers = ["cargo:token", "/etc/profiles/per-user/fs0c131y/bin/cargo-credential-1password --account my.1password.com"]
|
||||||
|
'';
|
||||||
|
home.packages = [
|
||||||
|
(cratesNix.buildCrate "cargo-credential-1password" {})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -5,94 +5,75 @@
|
|||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules
|
../../modules
|
||||||
|
./1password-cli.nix
|
||||||
./aichat.nix
|
./aichat.nix
|
||||||
|
./alejandra.nix
|
||||||
|
./aria2.nix
|
||||||
|
./ast-grep.nix
|
||||||
./atuin.nix
|
./atuin.nix
|
||||||
./bat.nix
|
./bat.nix
|
||||||
# ./bluetui.nix
|
./bottom.nix
|
||||||
|
./btop.nix
|
||||||
|
./cachix.nix
|
||||||
./carapace.nix
|
./carapace.nix
|
||||||
./ddcbacklight.nix
|
./ddcbacklight.nix
|
||||||
|
./deploy-rs.nix
|
||||||
./direnv.nix
|
./direnv.nix
|
||||||
|
./dust.nix
|
||||||
|
./eilmeldung.nix
|
||||||
./eza.nix
|
./eza.nix
|
||||||
./fastfetch.nix
|
./fastfetch.nix
|
||||||
|
./fd.nix
|
||||||
|
./file.nix
|
||||||
./fish.nix
|
./fish.nix
|
||||||
./fzf.nix
|
./fzf.nix
|
||||||
./gh.nix
|
./gh.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
|
./gnupg.nix
|
||||||
./himalaya.nix
|
./himalaya.nix
|
||||||
./mpd.nix
|
./hyprshade.nix
|
||||||
|
./jq.nix
|
||||||
|
./just.nix
|
||||||
./ncpamixer.nix
|
./ncpamixer.nix
|
||||||
./neomutt.nix
|
./neomutt.nix
|
||||||
./neovim.nix
|
./neovim.nix
|
||||||
./nh.nix
|
|
||||||
./nix-index.nix
|
./nix-index.nix
|
||||||
./nushell.nix
|
./nushell.nix
|
||||||
./omnix.nix
|
|
||||||
./opencode.nix
|
./opencode.nix
|
||||||
./retroarch.nix
|
./p7zip.nix
|
||||||
|
./pkg-config.nix
|
||||||
|
./ripgrep.nix
|
||||||
./rustup.nix
|
./rustup.nix
|
||||||
./ryujinx.nix
|
./sd.nix
|
||||||
./sops.nix
|
./sops.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
./sxiv.nix
|
|
||||||
./tea.nix
|
|
||||||
./television.nix
|
./television.nix
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
./tuifeed.nix
|
|
||||||
./uv.nix
|
./uv.nix
|
||||||
./xh.nix
|
|
||||||
./yazi.nix
|
./yazi.nix
|
||||||
./yt-dlp.nix
|
./yt-dlp.nix
|
||||||
./zoxide.nix
|
./zoxide.nix
|
||||||
./eilmeldung.nix
|
# ./bluetui.nix
|
||||||
|
|
||||||
# ./goread.nix
|
# ./goread.nix
|
||||||
# ./helix.nix
|
# ./helix.nix
|
||||||
# ./magika.nix
|
# ./magika.nix
|
||||||
|
# ./mpd.nix
|
||||||
# ./mpris-scrobbler.nix
|
# ./mpris-scrobbler.nix
|
||||||
# ./ncmpcpp.nix
|
# ./ncmpcpp.nix
|
||||||
# ./neomutt.nix
|
|
||||||
# ./neovim.nix
|
|
||||||
# ./newsboat.nix
|
# ./newsboat.nix
|
||||||
|
# ./nh.nix
|
||||||
|
# ./omnix.nix
|
||||||
|
# ./retroarch.nix
|
||||||
|
# ./ryujinx.nix
|
||||||
|
# ./sxiv.nix
|
||||||
|
# ./tea.nix
|
||||||
# ./template.nix
|
# ./template.nix
|
||||||
|
# ./tuifeed.nix
|
||||||
|
# ./xh.nix
|
||||||
# ./zellij.nix
|
# ./zellij.nix
|
||||||
|
./dysk.nix
|
||||||
|
./binwalk.nix
|
||||||
|
./cargo.nix
|
||||||
];
|
];
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
_1password-cli
|
|
||||||
alejandra
|
|
||||||
aria2
|
|
||||||
bottom
|
|
||||||
btop
|
|
||||||
cachix
|
|
||||||
deploy-rs.deploy-rs
|
|
||||||
dust
|
|
||||||
fd
|
|
||||||
file
|
|
||||||
fzf
|
|
||||||
gnupg
|
|
||||||
jq
|
|
||||||
just
|
|
||||||
macchina
|
|
||||||
p7zip
|
|
||||||
pfetch-rs
|
|
||||||
pkg-config
|
|
||||||
ripgrep
|
|
||||||
sd
|
|
||||||
]
|
|
||||||
++ lib.optionals (!device.isServer) [
|
|
||||||
monaspace
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
nerd-fonts.hasklug
|
|
||||||
nerd-fonts.symbols-only
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-color-emoji
|
|
||||||
liberation_ttf
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
mplus-outline-fonts.githubRelease
|
|
||||||
]
|
|
||||||
++ lib.optionals device.isLinux []
|
|
||||||
++ lib.optionals device.isDarwin [];
|
|
||||||
}
|
}
|
||||||
|
|||||||
1
home/programs/deploy-rs.nix
Normal file
1
home/programs/deploy-rs.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.deploy-rs.deploy-rs];}
|
||||||
1
home/programs/dust.nix
Normal file
1
home/programs/dust.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.dust];}
|
||||||
1
home/programs/dysk.nix
Normal file
1
home/programs/dysk.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.dysk];}
|
||||||
1
home/programs/fd.nix
Normal file
1
home/programs/fd.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.fd];}
|
||||||
1
home/programs/file.nix
Normal file
1
home/programs/file.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.file];}
|
||||||
@@ -4,8 +4,11 @@
|
|||||||
device,
|
device,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
stylix.targets.fish.enable = false;
|
{
|
||||||
|
home.file = {
|
||||||
|
".config/fish/themes".source = pkgs.catppuccinThemes.fish + "/themes";
|
||||||
|
};
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAbbrs = {
|
shellAbbrs = {
|
||||||
@@ -21,13 +24,8 @@
|
|||||||
# t = "zellij a -c --index 0";
|
# t = "zellij a -c --index 0";
|
||||||
t = "tmux";
|
t = "tmux";
|
||||||
};
|
};
|
||||||
shellAliases =
|
shellAliases = {
|
||||||
{
|
|
||||||
g = "git";
|
g = "git";
|
||||||
}
|
|
||||||
// lib.optionalAttrs pkgs.stdenv.isLinux {
|
|
||||||
kmpv = "mpv --vo-kitty-use-shm=yes --vo=kitty --really-quiet";
|
|
||||||
smpv = "mpv --vo-sixel-buffered=yes --vo=sixel --profile=sw-fast";
|
|
||||||
};
|
};
|
||||||
shellInit = ''
|
shellInit = ''
|
||||||
set fish_greeting
|
set fish_greeting
|
||||||
@@ -35,7 +33,7 @@
|
|||||||
'';
|
'';
|
||||||
# ${pkgs.spotify-player}/bin/spotify_player generate fish | source
|
# ${pkgs.spotify-player}/bin/spotify_player generate fish | source
|
||||||
interactiveShellInit = ''
|
interactiveShellInit = ''
|
||||||
${lib.getExe pkgs.fastfetch}
|
if test -n "$TMUX"; ${lib.getExe pkgs.fastfetch} --logo-type sixel; else ${lib.getExe pkgs.fastfetch}; end
|
||||||
# ${pkgs.nb}/bin/nb todo undone
|
# ${pkgs.nb}/bin/nb todo undone
|
||||||
${lib.optionalString (device.isLinux && !device.isNix) "source /etc/profile.d/nix-daemon.fish"}
|
${lib.optionalString (device.isLinux && !device.isNix) "source /etc/profile.d/nix-daemon.fish"}
|
||||||
${lib.optionalString (device.is "ryu") ''
|
${lib.optionalString (device.is "ryu") ''
|
||||||
@@ -46,3 +44,6 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// lib.optionalAttrs (!(device.is "tsuba")) {
|
||||||
|
stylix.targets.fish.enable = false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,13 +1 @@
|
|||||||
{
|
{pkgs, ...}: { home.packages = [pkgs.fzf];}
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
device,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.fzf = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.fzf;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
tmux.enableShellIntegration = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ lib.optionalAttrs (!(device.is "tsuba")) {
|
|||||||
enable = true;
|
enable = true;
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
user.name = "uttarayan21";
|
user.name = "servius";
|
||||||
user.email = config.accounts.email.accounts.fastmail.address;
|
user.email = builtins.elemAt config.accounts.email.accounts.fastmail.aliases 0;
|
||||||
user.signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJfKKrX8yeIHUUury0aPwMY6Ha+BJyUR7P0Gqid90ik/";
|
user.signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJfKKrX8yeIHUUury0aPwMY6Ha+BJyUR7P0Gqid90ik/";
|
||||||
color.ui = true;
|
color.ui = true;
|
||||||
core.editor = "nvim";
|
core.editor = "nvim";
|
||||||
|
|||||||
1
home/programs/gnupg.nix
Normal file
1
home/programs/gnupg.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.gnupg];}
|
||||||
10
home/programs/hyprshade.nix
Normal file
10
home/programs/hyprshade.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
device,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs;
|
||||||
|
lib.mkIf (device.is "ryu") [
|
||||||
|
hyprshade
|
||||||
|
];
|
||||||
|
}
|
||||||
1
home/programs/jq.nix
Normal file
1
home/programs/jq.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.jq];}
|
||||||
1
home/programs/just.nix
Normal file
1
home/programs/just.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.just];}
|
||||||
@@ -4,8 +4,8 @@
|
|||||||
stablePkgs,
|
stablePkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
stylix.targets.nixvim.enable = false;
|
{
|
||||||
programs = lib.optionalAttrs (device.is "ryu" || device.is "kuro" || device.is "mirai" || device.is "tako" || device.is "shiro") {
|
programs = lib.optionalAttrs (device.is "ryu" || device.is "kuro" || device.is "mirai" || device.is "tako" || device.is "shiro") {
|
||||||
nixvim =
|
nixvim =
|
||||||
{
|
{
|
||||||
@@ -19,3 +19,6 @@
|
|||||||
// (import ./../../neovim {inherit pkgs stablePkgs;});
|
// (import ./../../neovim {inherit pkgs stablePkgs;});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// lib.optionalAttrs (!(device.is "tsuba")) {
|
||||||
|
stylix.targets.nixvim.enable = false;
|
||||||
|
}
|
||||||
|
|||||||
1
home/programs/p7zip.nix
Normal file
1
home/programs/p7zip.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.p7zip];}
|
||||||
1
home/programs/pkg-config.nix
Normal file
1
home/programs/pkg-config.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.pkg-config];}
|
||||||
1
home/programs/ripgrep.nix
Normal file
1
home/programs/ripgrep.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.ripgrep];}
|
||||||
1
home/programs/sd.nix
Normal file
1
home/programs/sd.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{pkgs, ...}: {home.packages = [pkgs.sd];}
|
||||||
@@ -12,4 +12,12 @@
|
|||||||
defaultSopsFormat = "yaml";
|
defaultSopsFormat = "yaml";
|
||||||
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
|
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
|
||||||
};
|
};
|
||||||
|
launchd.agents.sops-nix = pkgs.lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
EnvironmentVariables = {
|
||||||
|
PATH = pkgs.lib.mkForce "/usr/bin:/bin:/usr/sbin:/sbin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
lib,
|
lib,
|
||||||
device,
|
device,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
stylix.targets.starship.enable = false;
|
{
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
@@ -30,3 +30,6 @@
|
|||||||
(pkgs.catppuccinThemes.starship + /palettes/${flavour}.toml));
|
(pkgs.catppuccinThemes.starship + /palettes/${flavour}.toml));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// lib.optionalAttrs (!(device.is "tsuba")) {
|
||||||
|
stylix.targets.starship.enable = false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{...}: {
|
{config, ...}: {
|
||||||
programs. yazi = {
|
programs. yazi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
@@ -13,6 +13,9 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
preview = {
|
||||||
|
cache_dir = config.home.homeDirectory + "/.cache/yazi/previews";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
inputs.command-runner.homeManagerModules.command-runner
|
|
||||||
];
|
|
||||||
services.command-runner = {
|
|
||||||
enable = true;
|
|
||||||
port = 5599;
|
|
||||||
database.path = "${config.home.homeDirectory}/.local/share/command-runner.db";
|
|
||||||
commands = let
|
|
||||||
hyprctl = "${pkgs.hyprland}/bin/hyprctl";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"display_on" = [hyprctl "-i" "{instance}" "dispatch" "dpms" "on"];
|
|
||||||
"display_off" = [hyprctl "-i" "{instance}" "dispatch" "dpms" "off"];
|
|
||||||
"display_toggle" = [hyprctl "-i" "{instance}" "dispatch" "dpms" "toggle"];
|
|
||||||
"display_status" = [hyprctl "-i" "{instance}" "-j" "monitors"];
|
|
||||||
"hyprland_instance" = [hyprctl "-j" "instances"];
|
|
||||||
}
|
|
||||||
// (builtins.foldl' (acc: elem: acc // elem) {} (lib.map (name: {
|
|
||||||
"display_on_${name}" = [hyprctl "-i" "{instance}" "dispatch" "dpms" "on" name];
|
|
||||||
"display_off_${name}" = [hyprctl "-i" "{instance}" "dispatch" "dpms" "off" name];
|
|
||||||
"display_toggle_${name}" = [hyprctl "-i" "{instance}" "dispatch" "dpms" "toggle" name];
|
|
||||||
}) ["HDMI-A-1" "DP-3" "DP-1"]));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -4,10 +4,10 @@
|
|||||||
./swayosd.nix
|
./swayosd.nix
|
||||||
./kdeconnect.nix
|
./kdeconnect.nix
|
||||||
./gtk.nix
|
./gtk.nix
|
||||||
./anyrun.nix
|
# ./anyrun.nix
|
||||||
./ironbar
|
./ironbar
|
||||||
./gui.nix
|
./gui.nix
|
||||||
./eww.nix
|
# ./eww.nix
|
||||||
./xdg.nix
|
./xdg.nix
|
||||||
./hyprmon.nix
|
./hyprmon.nix
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
|
|||||||
@@ -2,24 +2,8 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
device,
|
device,
|
||||||
lib,
|
lib,
|
||||||
inputs,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
systemd.user.services.onepassword-gui = lib.optionalAttrs (device.is "ryu") {
|
|
||||||
Unit = {
|
|
||||||
Description = "1Password GUI";
|
|
||||||
BindsTo = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session-pre.target"];
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs._1password-gui}/bin/1password";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs;
|
home.packages = with pkgs;
|
||||||
lib.optionals (device.is "ryu") [
|
lib.optionals (device.is "ryu") [
|
||||||
nautilus
|
nautilus
|
||||||
|
|||||||
@@ -35,13 +35,15 @@
|
|||||||
settings = {
|
settings = {
|
||||||
# source = "${pkgs.catppuccinThemes.hyprland}/themes/mocha.conf";
|
# source = "${pkgs.catppuccinThemes.hyprland}/themes/mocha.conf";
|
||||||
render = {
|
render = {
|
||||||
direct_scanout = true;
|
cm_enabled = true;
|
||||||
cm_fs_passthrough = 1;
|
direct_scanout = 2; # 0 - off; 1 - on; 2 - auto based on `game`
|
||||||
cm_auto_hdr = 1;
|
cm_fs_passthrough = 1; # 0 - off; 1 - always; 2 - hdr only
|
||||||
};
|
send_content_type = true; # automatic monitor mode switch
|
||||||
experimental = {
|
cm_auto_hdr = 1; # 0 - off; 1 - switch to cm,hdr 2; 2 - switch to cm,hdredid
|
||||||
xx_color_management_v4 = true;
|
|
||||||
};
|
};
|
||||||
|
# experimental = {
|
||||||
|
# xx_color_management_v4 = true;
|
||||||
|
# };
|
||||||
monitorv2 = [
|
monitorv2 = [
|
||||||
{
|
{
|
||||||
output = device.monitors.primary;
|
output = device.monitors.primary;
|
||||||
@@ -123,12 +125,12 @@
|
|||||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||||
|
|
||||||
animation = [
|
animation = [
|
||||||
"windows, 1, 7, myBezier"
|
"windows, 1, 2, myBezier"
|
||||||
"windowsOut, 1, 7, default, popin 80%"
|
"windowsOut, 1, 2, default, popin 80%"
|
||||||
"border, 1, 10, default"
|
"border, 1, 10, default"
|
||||||
"borderangle, 1, 8, default"
|
"borderangle, 1, 8, default"
|
||||||
"fade, 1, 7, default"
|
"fade, 1, 2, default"
|
||||||
"workspaces, 1, 6, default"
|
"workspaces, 1, 2, default"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -188,8 +190,8 @@
|
|||||||
];
|
];
|
||||||
bind = [
|
bind = [
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
"$mainMod, Return, exec, ${lib.getExe pkgs.wezterm}"
|
"$mainMod, Return, exec, ${lib.getExe pkgs.kitty}"
|
||||||
"$mainModShift, Return, exec, ${lib.getExe pkgs.kitty}"
|
"$mainModShift, Return, exec, ${lib.getExe pkgs.ghostty}"
|
||||||
# "$mainModShift, Return, exec, ${pkgs.foot}/bin/foot"
|
# "$mainModShift, Return, exec, ${pkgs.foot}/bin/foot"
|
||||||
"$mainModShift, Q, killactive,"
|
"$mainModShift, Q, killactive,"
|
||||||
"$mainModShift, s, exec, ${lib.getExe pkgs.hyprshot} -m region -o ~/Pictures/Screenshots/"
|
"$mainModShift, s, exec, ${lib.getExe pkgs.hyprshot} -m region -o ~/Pictures/Screenshots/"
|
||||||
|
|||||||
@@ -4,25 +4,31 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
services.hyprpaper = let
|
||||||
../../modules/hyprpaper.nix
|
|
||||||
];
|
|
||||||
programs.hyprpaper = let
|
|
||||||
wallpapers = import ../../utils/wallhaven.nix {inherit pkgs;};
|
wallpapers = import ../../utils/wallhaven.nix {inherit pkgs;};
|
||||||
nextcloudWallpapers = name: config.home.homeDirectory + "/Nextcloud/Wallpapers/" + name;
|
nextcloudWallpapers = name: config.home.homeDirectory + "/Nextcloud/Wallpapers/" + name;
|
||||||
silksongFleas = nextcloudWallpapers "silksong-fleas.jpg";
|
silksongFleas = nextcloudWallpapers "silksong-fleas.jpg";
|
||||||
silksongShadeLord = nextcloudWallpapers "silksong-shadelord.jpg";
|
silksongShadeLord = nextcloudWallpapers "silksong-shadelord.jpg";
|
||||||
in rec {
|
in {
|
||||||
enable = device.is "ryu";
|
enable = device.is "ryu";
|
||||||
systemd.enable = true;
|
settings = {
|
||||||
systemd.target = "hyprland-session.target";
|
wallpaper = [
|
||||||
settings.preload =
|
{
|
||||||
wallpapers.all
|
monitor = device.monitors.primary;
|
||||||
++ pkgs.lib.mapAttrsToList (_: value: value) settings.wallpapers;
|
path = silksongShadeLord;
|
||||||
settings.wallpapers = {
|
fit_mode = "cover";
|
||||||
"${device.monitors.primary}" = silksongShadeLord;
|
}
|
||||||
"${device.monitors.secondary}" = wallpapers.frieren_3;
|
{
|
||||||
"${device.monitors.tertiary}" = silksongFleas;
|
monitor = device.monitors.secondary;
|
||||||
|
path = wallpapers.frieren_3;
|
||||||
|
fit_mode = "cover";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = device.monitors.tertiary;
|
||||||
|
path = silksongFleas;
|
||||||
|
fit_mode = "cover";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{...}: {
|
{device, ...}: {
|
||||||
services.remmina = {
|
services.remmina = {
|
||||||
enable = true;
|
enable = device.is "ryu";
|
||||||
systemdService.enable = true;
|
systemdService.enable = true;
|
||||||
addRdpMimeTypeAssoc = true;
|
addRdpMimeTypeAssoc = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,12 +3,11 @@
|
|||||||
lib,
|
lib,
|
||||||
device,
|
device,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
lib.optionalAttrs (device.is "ryu") {
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = device.is "ryu";
|
||||||
config = {
|
config = {
|
||||||
hyprland.default = ["kde" "hyprland"];
|
hyprland.default = ["hyprland"];
|
||||||
common.default = ["*" "hyprland"];
|
common.default = ["*" "hyprland"];
|
||||||
};
|
};
|
||||||
extraPortals = with pkgs; [
|
extraPortals = with pkgs; [
|
||||||
|
|||||||
15
justfile
15
justfile
@@ -1,12 +1,13 @@
|
|||||||
set dotenv-load
|
set dotenv-load
|
||||||
|
|
||||||
|
|
||||||
[macos]
|
[macos]
|
||||||
install:
|
install:
|
||||||
sudo nix run nix-darwin -- switch --flake .
|
sudo nix run nix-darwin -- switch --flake .
|
||||||
|
|
||||||
[linux]
|
[linux]
|
||||||
install:
|
install cores='32':
|
||||||
sudo nixos-rebuild switch --flake . --builders '' --max-jobs 1
|
sudo nixos-rebuild switch --flake . --builders '' --max-jobs 1 --cores {{cores}}
|
||||||
|
|
||||||
[macos]
|
[macos]
|
||||||
build:
|
build:
|
||||||
@@ -30,3 +31,13 @@ nvim:
|
|||||||
[linux]
|
[linux]
|
||||||
rollback:
|
rollback:
|
||||||
sudo nixos-rebuild switch --rollback --flake .
|
sudo nixos-rebuild switch --rollback --flake .
|
||||||
|
|
||||||
|
|
||||||
|
add program:
|
||||||
|
echo '{pkgs, ...}: { home.packages = [pkgs.{{program}}];}' > home/programs/{{program}}.nix
|
||||||
|
# https://ast-grep.github.io/advanced/pattern-parse.html#incomplete-pattern-code
|
||||||
|
# Since the imports doesn't match the whole pattern we need to use the selector binding and the attr expression to match it properly.
|
||||||
|
ast-grep run -p '{ imports = [$$$ITEMS] }' --selector binding --rewrite 'imports = [$$$ITEMS ./{{program}}.nix ]' home/programs/default.nix -i
|
||||||
|
alejandra fmt home/programs/{{program}}.nix home/programs/default.nix
|
||||||
|
git add home/programs/{{program}}.nix
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,14 @@ in {
|
|||||||
type = lib.types.attrsOf lib.types.str;
|
type = lib.types.attrsOf lib.types.str;
|
||||||
description = "Roles for the AI chat clients";
|
description = "Roles for the AI chat clients";
|
||||||
};
|
};
|
||||||
|
extraPackages = mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [];
|
||||||
|
example = literalExpression "with pkgs; [ jq yek ];";
|
||||||
|
description = ''
|
||||||
|
Additional packages to install.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -99,7 +107,7 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
home.packages = mkIf cfg.enable [aichat-wrapped];
|
home.packages = mkIf cfg.enable ([aichat-wrapped] ++ cfg.extraPackages);
|
||||||
|
|
||||||
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration fishIntegration;
|
programs.fish.interactiveShellInit = mkIf cfg.enableFishIntegration fishIntegration;
|
||||||
programs.bash.initExtra = mkIf cfg.enableBashIntegration bashIntegration;
|
programs.bash.initExtra = mkIf cfg.enableBashIntegration bashIntegration;
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
./goread.nix
|
# ./goread.nix
|
||||||
./hyprpaper.nix
|
# ./hyprpaper.nix
|
||||||
# ./aichat.nix
|
# ./aichat.nix
|
||||||
./tuifeed.nix
|
# ./tuifeed.nix
|
||||||
#./ghostty.nix
|
#./ghostty.nix
|
||||||
# ./sketchybar.nix
|
# ./sketchybar.nix
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.programs.hyprpaper;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
programs.hyprpaper = {
|
|
||||||
enable = mkEnableOption "Hyprpaper - Wayland wallpaper utility";
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
enable = mkEnableOption "autostart service for Hyprpaper";
|
|
||||||
|
|
||||||
target = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "graphical-session.target";
|
|
||||||
example = "hyprland-session.target";
|
|
||||||
description = ''
|
|
||||||
The systemd target that will automatically start the Hyprpaper service.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = with types; {
|
|
||||||
preload = mkOption {
|
|
||||||
type = listOf path;
|
|
||||||
default = [];
|
|
||||||
description = ''
|
|
||||||
Wallpaper images that should be preloaded into memory
|
|
||||||
'';
|
|
||||||
example = [./wallpapers/tensura.png];
|
|
||||||
};
|
|
||||||
|
|
||||||
wallpapers = mkOption {
|
|
||||||
type = attrsOf str;
|
|
||||||
default = {};
|
|
||||||
example = {"DP-1" = ./wallpapers/tensura.png;};
|
|
||||||
description = ''
|
|
||||||
Wallpaper to monitor mapper
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = mkOption {
|
|
||||||
type = str;
|
|
||||||
default = "";
|
|
||||||
description = "Check https://github.com/hyprwm/hyprpaper#usage for info";
|
|
||||||
example = ''
|
|
||||||
newConfigOption = foo,bar
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
home.packages = mkIf cfg.enable [pkgs.hyprpaper];
|
|
||||||
|
|
||||||
systemd.user.services.hyprpaper = mkIf cfg.systemd.enable {
|
|
||||||
Unit = {
|
|
||||||
Description = "autostart service for Hyprpaper";
|
|
||||||
Documentation = "https://github.com/hyprwm/hyprpaper";
|
|
||||||
BindsTo = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session-pre.target"];
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper";
|
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID";
|
|
||||||
Restart = "on-failure";
|
|
||||||
KillMode = "mixed";
|
|
||||||
};
|
|
||||||
|
|
||||||
Install = {WantedBy = [cfg.systemd.target];};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = mkIf cfg.enable {
|
|
||||||
"hypr/hyprpaper.conf".text = ''
|
|
||||||
# Auto-generated by Nix home-manager module
|
|
||||||
|
|
||||||
# hyprpaper.settings.preload
|
|
||||||
${(lists.foldl (acc: v:
|
|
||||||
acc
|
|
||||||
+ ''
|
|
||||||
preload = ${v}
|
|
||||||
'') ""
|
|
||||||
cfg.settings.preload)}
|
|
||||||
|
|
||||||
# hyprpaper.settings.wallpapers
|
|
||||||
${(lists.foldl (acc: v:
|
|
||||||
acc
|
|
||||||
+ ''
|
|
||||||
wallpaper = ${v}
|
|
||||||
'') "" (pkgs.lib.attrsets.mapAttrsToList (name: val: name + "," + val)
|
|
||||||
cfg.settings.wallpapers))}
|
|
||||||
|
|
||||||
# hyprpaper.settings.extraConfig
|
|
||||||
${cfg.settings.extraConfig}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,4 @@
|
|||||||
{
|
{pkgs, ...}: let
|
||||||
pkgs,
|
|
||||||
stablePkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
mkMappings = mappings:
|
mkMappings = mappings:
|
||||||
[]
|
[]
|
||||||
++ (pkgs.lib.optionals (builtins.hasAttr "normal" mappings) (mkMode mappings.normal "n"))
|
++ (pkgs.lib.optionals (builtins.hasAttr "normal" mappings) (mkMode mappings.normal "n"))
|
||||||
@@ -17,16 +13,6 @@
|
|||||||
mode = mode;
|
mode = mode;
|
||||||
})
|
})
|
||||||
mappings;
|
mappings;
|
||||||
border = [
|
|
||||||
"╭"
|
|
||||||
"─"
|
|
||||||
"╮"
|
|
||||||
"│"
|
|
||||||
"╯"
|
|
||||||
"─"
|
|
||||||
"╰"
|
|
||||||
"│"
|
|
||||||
];
|
|
||||||
rawLua = lua: {
|
rawLua = lua: {
|
||||||
"__raw" = ''
|
"__raw" = ''
|
||||||
${lua}
|
${lua}
|
||||||
@@ -60,7 +46,20 @@ in {
|
|||||||
colorschemes = {
|
colorschemes = {
|
||||||
catppuccin = {
|
catppuccin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.flavour = "mocha";
|
settings = {
|
||||||
|
flavour = "mocha";
|
||||||
|
integrations = {
|
||||||
|
cmp = true;
|
||||||
|
gitsigns = true;
|
||||||
|
nvimtree = true;
|
||||||
|
treesitter = true;
|
||||||
|
notify = true;
|
||||||
|
mini = {
|
||||||
|
enabled = true;
|
||||||
|
indentscope_color = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
keymaps = mkMappings {
|
keymaps = mkMappings {
|
||||||
@@ -330,10 +329,6 @@ in {
|
|||||||
settings.image_provider = "image.nvim";
|
settings.image_provider = "image.nvim";
|
||||||
};
|
};
|
||||||
|
|
||||||
markdown-preview = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
noice = {
|
noice = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -363,17 +358,17 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
folding.enable = true;
|
folding.enable = true;
|
||||||
grammarPackages =
|
# grammarPackages =
|
||||||
(with pkgs.tree-sitter-grammars; [
|
# (with pkgs.tree-sitter-grammars; [
|
||||||
tree-sitter-norg
|
# tree-sitter-norg
|
||||||
tree-sitter-norg-meta
|
# tree-sitter-norg-meta
|
||||||
tree-sitter-just
|
# tree-sitter-just
|
||||||
tree-sitter-nu
|
# tree-sitter-nu
|
||||||
tree-sitter-pest
|
# tree-sitter-pest
|
||||||
tree-sitter-slint
|
# tree-sitter-slint
|
||||||
])
|
# ])
|
||||||
++ pkgs.vimPlugins.nvim-treesitter.allGrammars;
|
# ++ pkgs.vimPlugins.nvim-treesitter.allGrammars;
|
||||||
nixGrammars = true;
|
# nixGrammars = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
telescope = {
|
telescope = {
|
||||||
@@ -407,6 +402,15 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
tv = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global_keybindings = {
|
||||||
|
channels = "<leader>tv";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
fidget = {
|
fidget = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.notification.override_vim_notify = true;
|
settings.notification.override_vim_notify = true;
|
||||||
@@ -543,6 +547,8 @@ in {
|
|||||||
sqls.enable = true;
|
sqls.enable = true;
|
||||||
pyright.enable = true;
|
pyright.enable = true;
|
||||||
slint_lsp.enable = true;
|
slint_lsp.enable = true;
|
||||||
|
wgsl_analyzer.enable = true;
|
||||||
|
glsl_analyzer.enable = true;
|
||||||
# sourcekit.enable = true;
|
# sourcekit.enable = true;
|
||||||
openscad_lsp.enable = true;
|
openscad_lsp.enable = true;
|
||||||
tinymist.enable = true;
|
tinymist.enable = true;
|
||||||
@@ -851,6 +857,5 @@ in {
|
|||||||
pkgs.lua
|
pkgs.lua
|
||||||
pkgs.ripgrep
|
pkgs.ripgrep
|
||||||
pkgs.nodejs-slim
|
pkgs.nodejs-slim
|
||||||
pkgs.qwen-code
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,36 +47,3 @@ in [
|
|||||||
vimPlugins
|
vimPlugins
|
||||||
tree-sitter-grammars
|
tree-sitter-grammars
|
||||||
]
|
]
|
||||||
# tree-sitter-grammars = final: prev: {
|
|
||||||
# tree-sitter-grammars =
|
|
||||||
# prev.tree-sitter-grammars
|
|
||||||
# // {
|
|
||||||
# # tree-sitter-just = final.pkgs.tree-sitter.buildGrammar {
|
|
||||||
# # language = "just";
|
|
||||||
# # version = "1";
|
|
||||||
# # src = inputs.tree-sitter-just;
|
|
||||||
# # };
|
|
||||||
# # tree-sitter-nu = final.pkgs.tree-sitter.buildGrammar {
|
|
||||||
# # language = "nu";
|
|
||||||
# # version = "1";
|
|
||||||
# # src = inputs.tree-sitter-nu;
|
|
||||||
# # };
|
|
||||||
# tree-sitter-d2 = final.pkgs.tree-sitter.buildGrammar {
|
|
||||||
# language = "d2";
|
|
||||||
# version = "1";
|
|
||||||
# src = inputs.tree-sitter-d2;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# vimPlugins = final: prev: {
|
|
||||||
# vimPlugins =
|
|
||||||
# prev.vimPlugins
|
|
||||||
# // {
|
|
||||||
# d2 = final.pkgs.vimUtils.buildVimPlugin {
|
|
||||||
# name = "d2";
|
|
||||||
# version = "1";
|
|
||||||
# src = inputs.d2;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
wlx-overlay-s
|
wayvr
|
||||||
wayvr-dashboard
|
# wlx-overlay-s
|
||||||
bs-manager
|
# wayvr-dashboard
|
||||||
|
# bs-manager
|
||||||
monado-vulkan-layers
|
monado-vulkan-layers
|
||||||
# envision
|
# envision
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
./programs
|
./programs
|
||||||
./containers
|
./containers
|
||||||
./apps
|
./apps
|
||||||
# ./vms
|
./vms
|
||||||
|
./games
|
||||||
];
|
];
|
||||||
|
|
||||||
security.tpm2 = {
|
security.tpm2 = {
|
||||||
@@ -25,6 +26,7 @@
|
|||||||
withUWSM = true;
|
withUWSM = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
|
uwsm.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
|
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
|
||||||
@@ -67,7 +69,7 @@
|
|||||||
dates = "daily";
|
dates = "daily";
|
||||||
options = "--delete-older-than +5";
|
options = "--delete-older-than +5";
|
||||||
};
|
};
|
||||||
package = pkgs.nixVersions.latest; # deploy-rs doesn't work with nix >= 2.32
|
package = pkgs.nixVersions.nix_2_32; # deploy-rs doesn't work with nix >= 2.33
|
||||||
buildMachines = [
|
buildMachines = [
|
||||||
../../builders/tako.nix
|
../../builders/tako.nix
|
||||||
../../builders/shiro.nix
|
../../builders/shiro.nix
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{device, ...}: {
|
{device, ...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./immich-machine-learning.nix
|
# ./immich-machine-learning.nix
|
||||||
];
|
];
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
docker.enable = true;
|
docker.enable = true;
|
||||||
|
|||||||
@@ -2,12 +2,11 @@
|
|||||||
port = 3003;
|
port = 3003;
|
||||||
in {
|
in {
|
||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers = {
|
||||||
backend = "docker";
|
|
||||||
containers = {
|
containers = {
|
||||||
immich-machine-learning = {
|
immich-machine-learning = {
|
||||||
image = "ghcr.io/immich-app/immich-machine-learning:v${pkgs.immich.version}-cuda";
|
image = "ghcr.io/immich-app/immich-machine-learning:v${pkgs.immich.version}-cuda";
|
||||||
ports = [
|
ports = [
|
||||||
"0.0.0.0:${toString port}:3003"
|
"127.0.0.1:${toString port}:3003"
|
||||||
];
|
];
|
||||||
volumes = [
|
volumes = [
|
||||||
"model-cache:/cache"
|
"model-cache:/cache"
|
||||||
@@ -20,7 +19,4 @@ in {
|
|||||||
nvidia-docker
|
nvidia-docker
|
||||||
nvidia-container-toolkit
|
nvidia-container-toolkit
|
||||||
];
|
];
|
||||||
# services.caddy.virtualHosts."ml.ryu.darksailor.dev".extraConfig = ''
|
|
||||||
# reverse_proxy localhost:${toString port}
|
|
||||||
# '';
|
|
||||||
}
|
}
|
||||||
|
|||||||
5
nixos/ryu/games/default.nix
Normal file
5
nixos/ryu/games/default.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./hytale.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
499
nixos/ryu/games/hytale.nix
Normal file
499
nixos/ryu/games/hytale.nix
Normal file
@@ -0,0 +1,499 @@
|
|||||||
|
# {pkgs, ...}: let
|
||||||
|
# version = "2026.01.21-11273a4";
|
||||||
|
# hytale-launcher = pkgs.fetchzip {
|
||||||
|
# url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-${version}.zip";
|
||||||
|
# sha256 = "sha256-PPdYmLxAVyqSkhulZXLcaEuhofCHZ4JcDJXIQ+lBhFg=";
|
||||||
|
# };
|
||||||
|
# in {
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# # (pkgs.buildFHSEnv {
|
||||||
|
# # pname = "hytale";
|
||||||
|
# # inherit version;
|
||||||
|
# # targetPkgs = p:
|
||||||
|
# # with p; [
|
||||||
|
# # # Launcher
|
||||||
|
# # libsoup_3
|
||||||
|
# # gdk-pixbuf
|
||||||
|
# # glib
|
||||||
|
# # gtk3
|
||||||
|
# # webkitgtk_4_1
|
||||||
|
# #
|
||||||
|
# # # Game
|
||||||
|
# # alsa-lib
|
||||||
|
# # icu
|
||||||
|
# # libGL
|
||||||
|
# # openssl
|
||||||
|
# # udev
|
||||||
|
# # xorg.libX11
|
||||||
|
# # xorg.libXcursor
|
||||||
|
# # xorg.libXrandr
|
||||||
|
# # xorg.libXi
|
||||||
|
# # ];
|
||||||
|
# # runScript = "${hytale-launcher}/hytale-launcher";
|
||||||
|
# # })
|
||||||
|
# hytale-launcher
|
||||||
|
# ];
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# { pkgs }:
|
||||||
|
#
|
||||||
|
# let
|
||||||
|
# # === AUTO-UPDATE MARKERS - DO NOT MODIFY FORMAT ===
|
||||||
|
# version = "2026.01.24-997c2cb";
|
||||||
|
# sha256 = "sha256-G+FFMOtLVPH2zaWQ87jymf6+JUAVFEKA4SMyuYE9MZ0=";
|
||||||
|
# # === END AUTO-UPDATE MARKERS ===
|
||||||
|
#
|
||||||
|
# pname = "hytale-launcher";
|
||||||
|
# downloadUrl = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-${version}.zip";
|
||||||
|
#
|
||||||
|
# # Unwrapped derivation - extracts and patches the binary
|
||||||
|
# hytale-launcher-unwrapped = pkgs.stdenv.mkDerivation {
|
||||||
|
# pname = "${pname}-unwrapped";
|
||||||
|
# inherit version;
|
||||||
|
#
|
||||||
|
# src = pkgs.fetchurl {
|
||||||
|
# url = downloadUrl;
|
||||||
|
# inherit sha256;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# nativeBuildInputs = with pkgs; [
|
||||||
|
# autoPatchelfHook
|
||||||
|
# unzip
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# unpackPhase = ''
|
||||||
|
# runHook preUnpack
|
||||||
|
# unzip $src -d .
|
||||||
|
# runHook postUnpack
|
||||||
|
# '';
|
||||||
|
#
|
||||||
|
# buildInputs = with pkgs; [
|
||||||
|
# webkitgtk_4_1
|
||||||
|
# gtk3
|
||||||
|
# glib
|
||||||
|
# gdk-pixbuf
|
||||||
|
# libsoup_3
|
||||||
|
# cairo
|
||||||
|
# pango
|
||||||
|
# at-spi2-atk
|
||||||
|
# harfbuzz
|
||||||
|
# glibc
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# runtimeDependencies = with pkgs; [
|
||||||
|
# libGL
|
||||||
|
# libxkbcommon
|
||||||
|
# xorg.libX11
|
||||||
|
# xorg.libXcomposite
|
||||||
|
# xorg.libXdamage
|
||||||
|
# xorg.libXext
|
||||||
|
# xorg.libXfixes
|
||||||
|
# xorg.libXrandr
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# # No build phase needed - just unpack and install
|
||||||
|
# dontBuild = true;
|
||||||
|
#
|
||||||
|
# installPhase = ''
|
||||||
|
# runHook preInstall
|
||||||
|
#
|
||||||
|
# mkdir -p $out/lib/hytale-launcher
|
||||||
|
# install -m755 hytale-launcher $out/lib/hytale-launcher/
|
||||||
|
#
|
||||||
|
# runHook postInstall
|
||||||
|
# '';
|
||||||
|
#
|
||||||
|
# meta = with pkgs.lib; {
|
||||||
|
# description = "Official launcher for Hytale game (unwrapped)";
|
||||||
|
# homepage = "https://hytale.com";
|
||||||
|
# license = licenses.unfree;
|
||||||
|
# sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||||
|
# maintainers = [{
|
||||||
|
# name = "Jacob Pyke";
|
||||||
|
# email = "github@pyk.ee";
|
||||||
|
# github = "JPyke3";
|
||||||
|
# githubId = 13283054;
|
||||||
|
# }];
|
||||||
|
# platforms = [ "x86_64-linux" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# # FHS-wrapped derivation - allows self-updates to work
|
||||||
|
# hytale-launcher = pkgs.buildFHSEnv {
|
||||||
|
# name = "hytale-launcher";
|
||||||
|
# inherit version;
|
||||||
|
#
|
||||||
|
# targetPkgs = pkgs: with pkgs; [
|
||||||
|
# # Core dependencies
|
||||||
|
# hytale-launcher-unwrapped
|
||||||
|
#
|
||||||
|
# # WebKit/GTK stack (for launcher UI)
|
||||||
|
# webkitgtk_4_1
|
||||||
|
# gtk3
|
||||||
|
# glib
|
||||||
|
# gdk-pixbuf
|
||||||
|
# libsoup_3
|
||||||
|
# cairo
|
||||||
|
# pango
|
||||||
|
# at-spi2-atk
|
||||||
|
# harfbuzz
|
||||||
|
#
|
||||||
|
# # Graphics - OpenGL/Vulkan/EGL (for game client via SDL3)
|
||||||
|
# libGL
|
||||||
|
# libGLU
|
||||||
|
# libglvnd
|
||||||
|
# mesa
|
||||||
|
# vulkan-loader
|
||||||
|
# egl-wayland
|
||||||
|
#
|
||||||
|
# # X11 (SDL3 dlopens these)
|
||||||
|
# xorg.libX11
|
||||||
|
# xorg.libXcomposite
|
||||||
|
# xorg.libXdamage
|
||||||
|
# xorg.libXext
|
||||||
|
# xorg.libXfixes
|
||||||
|
# xorg.libXrandr
|
||||||
|
# xorg.libXcursor
|
||||||
|
# xorg.libXi
|
||||||
|
# xorg.libxcb
|
||||||
|
# xorg.libXScrnSaver
|
||||||
|
# xorg.libXinerama
|
||||||
|
# xorg.libXxf86vm
|
||||||
|
#
|
||||||
|
# # Wayland (SDL3 can use Wayland backend)
|
||||||
|
# wayland
|
||||||
|
# libxkbcommon
|
||||||
|
#
|
||||||
|
# # Audio (for game client via bundled OpenAL)
|
||||||
|
# alsa-lib
|
||||||
|
# pipewire
|
||||||
|
# pulseaudio
|
||||||
|
#
|
||||||
|
# # System libraries
|
||||||
|
# dbus
|
||||||
|
# fontconfig
|
||||||
|
# freetype
|
||||||
|
# glibc
|
||||||
|
# nspr
|
||||||
|
# nss
|
||||||
|
# systemd
|
||||||
|
# zlib
|
||||||
|
#
|
||||||
|
# # C++ runtime (needed by libNoesis.so, libopenal.so in game client)
|
||||||
|
# stdenv.cc.cc.lib
|
||||||
|
#
|
||||||
|
# # .NET runtime dependencies (HytaleClient is a .NET application)
|
||||||
|
# icu
|
||||||
|
# openssl
|
||||||
|
# krb5
|
||||||
|
#
|
||||||
|
# # TLS/SSL support for GLib networking (launcher)
|
||||||
|
# glib-networking
|
||||||
|
# cacert
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# runScript = pkgs.writeShellScript "hytale-launcher-wrapper" ''
|
||||||
|
# # Hytale data directory
|
||||||
|
# LAUNCHER_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/Hytale"
|
||||||
|
# LAUNCHER_BIN="$LAUNCHER_DIR/hytale-launcher"
|
||||||
|
# BUNDLED_HASH_FILE="$LAUNCHER_DIR/.bundled_hash"
|
||||||
|
# BUNDLED_BIN="${hytale-launcher-unwrapped}/lib/hytale-launcher/hytale-launcher"
|
||||||
|
#
|
||||||
|
# mkdir -p "$LAUNCHER_DIR"
|
||||||
|
#
|
||||||
|
# # Compute hash of bundled binary to detect Nix package updates
|
||||||
|
# BUNDLED_HASH=$(sha256sum "$BUNDLED_BIN" | cut -d" " -f1)
|
||||||
|
#
|
||||||
|
# # Copy bundled binary if needed (new install or Nix package update)
|
||||||
|
# if [ ! -x "$LAUNCHER_BIN" ] || [ ! -f "$BUNDLED_HASH_FILE" ] || [ "$(cat "$BUNDLED_HASH_FILE")" != "$BUNDLED_HASH" ]; then
|
||||||
|
# install -m755 "$BUNDLED_BIN" "$LAUNCHER_BIN"
|
||||||
|
# echo "$BUNDLED_HASH" > "$BUNDLED_HASH_FILE"
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# # Required environment variable from Flatpak metadata
|
||||||
|
# export WEBKIT_DISABLE_COMPOSITING_MODE=1
|
||||||
|
#
|
||||||
|
# # Enable GLib TLS backend (glib-networking)
|
||||||
|
# export GIO_MODULE_DIR=/usr/lib/gio/modules
|
||||||
|
#
|
||||||
|
# # SSL certificates
|
||||||
|
# export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt
|
||||||
|
#
|
||||||
|
# exec "$LAUNCHER_BIN" "$@"
|
||||||
|
# '';
|
||||||
|
#
|
||||||
|
# extraInstallCommands = ''
|
||||||
|
# # Install desktop file
|
||||||
|
# mkdir -p $out/share/applications
|
||||||
|
# cat > $out/share/applications/hytale-launcher.desktop << EOF
|
||||||
|
# [Desktop Entry]
|
||||||
|
# Name=Hytale Launcher
|
||||||
|
# Comment=Official launcher for Hytale
|
||||||
|
# Exec=$out/bin/hytale-launcher
|
||||||
|
# Icon=hytale-launcher
|
||||||
|
# Terminal=false
|
||||||
|
# Type=Application
|
||||||
|
# Categories=Game;
|
||||||
|
# Keywords=hytale;game;launcher;hypixel;
|
||||||
|
# StartupWMClass=com.hypixel.HytaleLauncher
|
||||||
|
# EOF
|
||||||
|
#
|
||||||
|
# '';
|
||||||
|
#
|
||||||
|
# meta = with pkgs.lib; {
|
||||||
|
# description = "Official launcher for Hytale game";
|
||||||
|
# longDescription = ''
|
||||||
|
# The official launcher for Hytale, developed by Hypixel Studios.
|
||||||
|
# This package wraps the launcher from the official distribution,
|
||||||
|
# providing FHS compatibility for self-updates.
|
||||||
|
# '';
|
||||||
|
# homepage = "https://hytale.com";
|
||||||
|
# license = licenses.unfree;
|
||||||
|
# sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||||
|
# maintainers = [{
|
||||||
|
# name = "Jacob Pyke";
|
||||||
|
# email = "github@pyk.ee";
|
||||||
|
# github = "JPyke3";
|
||||||
|
# githubId = 13283054;
|
||||||
|
# }];
|
||||||
|
# platforms = [ "x86_64-linux" ];
|
||||||
|
# mainProgram = "hytale-launcher";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# in {
|
||||||
|
# inherit hytale-launcher hytale-launcher-unwrapped;
|
||||||
|
# }
|
||||||
|
{pkgs, ...}: let
|
||||||
|
# === AUTO-UPDATE MARKERS - DO NOT MODIFY FORMAT ===
|
||||||
|
version = "2026.01.24-997c2cb";
|
||||||
|
sha256 = "sha256-G+FFMOtLVPH2zaWQ87jymf6+JUAVFEKA4SMyuYE9MZ0=";
|
||||||
|
# === END AUTO-UPDATE MARKERS ===
|
||||||
|
|
||||||
|
pname = "hytale-launcher";
|
||||||
|
downloadUrl = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-${version}.zip";
|
||||||
|
|
||||||
|
# Unwrapped derivation - extracts and patches the binary
|
||||||
|
hytale-launcher-unwrapped = pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "${pname}-unwrapped";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url = downloadUrl;
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
autoPatchelfHook
|
||||||
|
unzip
|
||||||
|
];
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
runHook preUnpack
|
||||||
|
unzip $src -d .
|
||||||
|
runHook postUnpack
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
webkitgtk_4_1
|
||||||
|
gtk3
|
||||||
|
glib
|
||||||
|
gdk-pixbuf
|
||||||
|
libsoup_3
|
||||||
|
cairo
|
||||||
|
pango
|
||||||
|
at-spi2-atk
|
||||||
|
harfbuzz
|
||||||
|
glibc
|
||||||
|
];
|
||||||
|
|
||||||
|
runtimeDependencies = with pkgs; [
|
||||||
|
libGL
|
||||||
|
libxkbcommon
|
||||||
|
# xorg.libX11
|
||||||
|
# xorg.libXcomposite
|
||||||
|
# xorg.libXdamage
|
||||||
|
# xorg.libXext
|
||||||
|
# xorg.libXfixes
|
||||||
|
# xorg.libXrandr
|
||||||
|
];
|
||||||
|
|
||||||
|
# No build phase needed - just unpack and install
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/lib/hytale-launcher
|
||||||
|
install -m755 hytale-launcher $out/lib/hytale-launcher/
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with pkgs.lib; {
|
||||||
|
description = "Official launcher for Hytale game (unwrapped)";
|
||||||
|
homepage = "https://hytale.com";
|
||||||
|
license = licenses.unfree;
|
||||||
|
sourceProvenance = with sourceTypes; [binaryNativeCode];
|
||||||
|
maintainers = [
|
||||||
|
{
|
||||||
|
name = "Jacob Pyke";
|
||||||
|
email = "github@pyk.ee";
|
||||||
|
github = "JPyke3";
|
||||||
|
githubId = 13283054;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# FHS-wrapped derivation - allows self-updates to work
|
||||||
|
hytale-launcher = pkgs.buildFHSEnv {
|
||||||
|
name = "hytale-launcher";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
targetPkgs = pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
# Core dependencies
|
||||||
|
hytale-launcher-unwrapped
|
||||||
|
|
||||||
|
# WebKit/GTK stack (for launcher UI)
|
||||||
|
webkitgtk_4_1
|
||||||
|
gtk3
|
||||||
|
glib
|
||||||
|
gdk-pixbuf
|
||||||
|
libsoup_3
|
||||||
|
cairo
|
||||||
|
pango
|
||||||
|
at-spi2-atk
|
||||||
|
harfbuzz
|
||||||
|
|
||||||
|
# Graphics - OpenGL/Vulkan/EGL (for game client via SDL3)
|
||||||
|
libGL
|
||||||
|
libGLU
|
||||||
|
libglvnd
|
||||||
|
mesa
|
||||||
|
vulkan-loader
|
||||||
|
egl-wayland
|
||||||
|
|
||||||
|
# X11 (SDL3 dlopens these)
|
||||||
|
# xorg.libX11
|
||||||
|
# xorg.libXcomposite
|
||||||
|
# xorg.libXdamage
|
||||||
|
# xorg.libXext
|
||||||
|
# xorg.libXfixes
|
||||||
|
# xorg.libXrandr
|
||||||
|
# xorg.libXcursor
|
||||||
|
# xorg.libXi
|
||||||
|
# xorg.libxcb
|
||||||
|
# xorg.libXScrnSaver
|
||||||
|
# xorg.libXinerama
|
||||||
|
# xorg.libXxf86vm
|
||||||
|
|
||||||
|
# Wayland (SDL3 can use Wayland backend)
|
||||||
|
wayland
|
||||||
|
libxkbcommon
|
||||||
|
|
||||||
|
# Audio (for game client via bundled OpenAL)
|
||||||
|
alsa-lib
|
||||||
|
pipewire
|
||||||
|
pulseaudio
|
||||||
|
|
||||||
|
# System libraries
|
||||||
|
dbus
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
glibc
|
||||||
|
nspr
|
||||||
|
nss
|
||||||
|
systemd
|
||||||
|
zlib
|
||||||
|
|
||||||
|
# C++ runtime (needed by libNoesis.so, libopenal.so in game client)
|
||||||
|
stdenv.cc.cc.lib
|
||||||
|
|
||||||
|
# .NET runtime dependencies (HytaleClient is a .NET application)
|
||||||
|
icu
|
||||||
|
openssl
|
||||||
|
krb5
|
||||||
|
|
||||||
|
# TLS/SSL support for GLib networking (launcher)
|
||||||
|
glib-networking
|
||||||
|
cacert
|
||||||
|
];
|
||||||
|
|
||||||
|
runScript = pkgs.writeShellScript "hytale-launcher-wrapper" ''
|
||||||
|
# Hytale data directory
|
||||||
|
LAUNCHER_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/Hytale"
|
||||||
|
LAUNCHER_BIN="$LAUNCHER_DIR/hytale-launcher"
|
||||||
|
BUNDLED_HASH_FILE="$LAUNCHER_DIR/.bundled_hash"
|
||||||
|
BUNDLED_BIN="${hytale-launcher-unwrapped}/lib/hytale-launcher/hytale-launcher"
|
||||||
|
|
||||||
|
mkdir -p "$LAUNCHER_DIR"
|
||||||
|
|
||||||
|
# Compute hash of bundled binary to detect Nix package updates
|
||||||
|
BUNDLED_HASH=$(sha256sum "$BUNDLED_BIN" | cut -d" " -f1)
|
||||||
|
|
||||||
|
# Copy bundled binary if needed (new install or Nix package update)
|
||||||
|
if [ ! -x "$LAUNCHER_BIN" ] || [ ! -f "$BUNDLED_HASH_FILE" ] || [ "$(cat "$BUNDLED_HASH_FILE")" != "$BUNDLED_HASH" ]; then
|
||||||
|
install -m755 "$BUNDLED_BIN" "$LAUNCHER_BIN"
|
||||||
|
echo "$BUNDLED_HASH" > "$BUNDLED_HASH_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Required environment variable from Flatpak metadata
|
||||||
|
export WEBKIT_DISABLE_COMPOSITING_MODE=1
|
||||||
|
|
||||||
|
# Enable GLib TLS backend (glib-networking)
|
||||||
|
export GIO_MODULE_DIR=/usr/lib/gio/modules
|
||||||
|
|
||||||
|
# SSL certificates
|
||||||
|
export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt
|
||||||
|
|
||||||
|
exec "$LAUNCHER_BIN" "$@"
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraInstallCommands = ''
|
||||||
|
# Install desktop file
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
cat > $out/share/applications/hytale-launcher.desktop << EOF
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Hytale Launcher
|
||||||
|
Comment=Official launcher for Hytale
|
||||||
|
Exec=$out/bin/hytale-launcher
|
||||||
|
Icon=hytale-launcher
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Game;
|
||||||
|
Keywords=hytale;game;launcher;hypixel;
|
||||||
|
StartupWMClass=com.hypixel.HytaleLauncher
|
||||||
|
EOF
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with pkgs.lib; {
|
||||||
|
description = "Official launcher for Hytale game";
|
||||||
|
longDescription = ''
|
||||||
|
The official launcher for Hytale, developed by Hypixel Studios.
|
||||||
|
This package wraps the launcher from the official distribution,
|
||||||
|
providing FHS compatibility for self-updates.
|
||||||
|
'';
|
||||||
|
homepage = "https://hytale.com";
|
||||||
|
license = licenses.unfree;
|
||||||
|
sourceProvenance = with sourceTypes; [binaryNativeCode];
|
||||||
|
maintainers = [
|
||||||
|
{
|
||||||
|
name = "Jacob Pyke";
|
||||||
|
email = "github@pyk.ee";
|
||||||
|
github = "JPyke3";
|
||||||
|
githubId = 13283054;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
platforms = ["x86_64-linux"];
|
||||||
|
mainProgram = "hytale-launcher";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
hytale-launcher
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
{...}: {
|
{pkgs, ...}: {
|
||||||
programs.adb.enable = true;
|
environment.systemPackages = [
|
||||||
|
pkgs.android-tools
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,5 +10,7 @@
|
|||||||
./nix-ld.nix
|
./nix-ld.nix
|
||||||
./gamemode.nix
|
./gamemode.nix
|
||||||
./droidcam.nix
|
./droidcam.nix
|
||||||
|
./wireshark.nix
|
||||||
|
./flatpak.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
5
nixos/ryu/programs/flatpak.nix
Normal file
5
nixos/ryu/programs/flatpak.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{...}: {
|
||||||
|
services.flatpak = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
14
nixos/ryu/programs/wireshark.nix
Normal file
14
nixos/ryu/programs/wireshark.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
device,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.wireshark = {
|
||||||
|
enable = true;
|
||||||
|
dumpcap.enable = true;
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wireshark-qt
|
||||||
|
];
|
||||||
|
users.users.${device.user}.extraGroups = ["wireshark"];
|
||||||
|
}
|
||||||
@@ -52,6 +52,8 @@
|
|||||||
# nixpkgs.crossSystem = {system = "aarch64-linux";};
|
# nixpkgs.crossSystem = {system = "aarch64-linux";};
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
||||||
boot.loader.systemd-boot.consoleMode = "max";
|
boot.loader.systemd-boot.consoleMode = "max";
|
||||||
|
boot.loader.systemd-boot.netbootxyz.enable = true;
|
||||||
|
boot.loader.systemd-boot.memtest86.enable = true;
|
||||||
|
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
LIBVA_DRIVER_NAME = "nvidia";
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
@@ -136,7 +138,7 @@
|
|||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{
|
{
|
||||||
device = "/var/lib/swapfile";
|
device = "/home/swapfile";
|
||||||
size = 64 * 1024;
|
size = 64 * 1024;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,27 +1,26 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
# ./rsyncd.nix
|
# ./rsyncd.nix
|
||||||
# ./sunshine.nix
|
|
||||||
# ./zerotier.nix
|
# ./zerotier.nix
|
||||||
# ./dnscrypt.nix
|
# ./dnscrypt.nix
|
||||||
./llama.nix
|
|
||||||
./ollama.nix
|
|
||||||
./tailscale.nix
|
|
||||||
./samba.nix
|
|
||||||
./mullvad.nix
|
|
||||||
./openrgb.nix
|
|
||||||
./command-runner.nix
|
|
||||||
./resolved.nix
|
|
||||||
./minecraft.nix
|
|
||||||
./fwupd.nix
|
|
||||||
./caddy.nix
|
./caddy.nix
|
||||||
./monitoring.nix
|
./command-runner.nix
|
||||||
./wivrn.nix
|
|
||||||
./sshd.nix
|
|
||||||
./fprintd.nix
|
|
||||||
./handoff.nix
|
|
||||||
./gstreamer.nix
|
|
||||||
./dualsense.nix
|
./dualsense.nix
|
||||||
|
./fprintd.nix
|
||||||
|
./fwupd.nix
|
||||||
|
./gstreamer.nix
|
||||||
|
./handoff.nix
|
||||||
|
./minecraft.nix
|
||||||
|
./monitoring.nix
|
||||||
|
./mullvad.nix
|
||||||
|
./ollama.nix
|
||||||
|
./openrgb.nix
|
||||||
./openssh.nix
|
./openssh.nix
|
||||||
|
./resolved.nix
|
||||||
|
./samba.nix
|
||||||
|
./sshd.nix
|
||||||
|
# ./sunshine.nix
|
||||||
|
./tailscale.nix
|
||||||
|
./wivrn.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# llama-cpp = {
|
|
||||||
# enable = false;
|
|
||||||
# port = 11345;
|
|
||||||
# # model = "/nix/store/ch6z9di3l0k54ad29pzv8k3zv47q30d1-Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf";
|
|
||||||
# model = pkgs.fetchurl {
|
|
||||||
# # url = "https://huggingface.co/lmstudio-community/gpt-oss-20b-GGUF/resolve/main/gpt-oss-20b-MXFP4.gguf";
|
|
||||||
# # sha256 = "65d06d31a3977d553cb3af137b5c26b5f1e9297a6aaa29ae7caa98788cde53ab";
|
|
||||||
# url = "https://huggingface.co/lmstudio-community/Qwen3-Coder-30B-A3B-Instruct-GGUF/resolve/main/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf";
|
|
||||||
# sha256 = "79ad15a5ee3caddc3f4ff0db33a14454a5a3eb503d7fa1c1e35feafc579de486";
|
|
||||||
# };
|
|
||||||
# extraFlags = [
|
|
||||||
# "-c"
|
|
||||||
# "98304"
|
|
||||||
# "--jinja"
|
|
||||||
# "--chat-template-file"
|
|
||||||
# "${../../../assets/chat.hbs}"
|
|
||||||
# # "/nix/store/4zk1p50hrzghp3jzzysz96pa64i2kmjl-promp.hbs"
|
|
||||||
# ];
|
|
||||||
# # package = inputs.llama-cpp.packages.${pkgs.system}.cuda;
|
|
||||||
# };
|
|
||||||
services = {
|
|
||||||
caddy = {
|
|
||||||
virtualHosts."llama.ryu.darksailor.dev".extraConfig = ''
|
|
||||||
import cloudflare
|
|
||||||
reverse_proxy localhost:11345
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -4,43 +4,55 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
sops = {
|
||||||
|
secrets."openai/api_key" = {};
|
||||||
|
secrets."llama/api_key".owner = config.services.caddy.user;
|
||||||
|
templates = {
|
||||||
|
"LLAMA_API_KEY.env".content = ''
|
||||||
|
LLAMA_API_KEY=${config.sops.placeholder."llama/api_key"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
services = {
|
services = {
|
||||||
ollama = {
|
ollama = {
|
||||||
enable = true;
|
enable = true;
|
||||||
host = "0.0.0.0";
|
host = "0.0.0.0";
|
||||||
# loadModels = ["deepseek-r1:7b" "deepseek-r1:14b" "RobinBially/nomic-embed-text-8k" "qwen3:8b" "qwen3:14b"];
|
# loadModels = ["deepseek-r1:7b" "deepseek-r1:14b" "RobinBially/nomic-embed-text-8k" "qwen3:8b" "qwen3:14b"];
|
||||||
# loadModels = ["deepseek-r1:7b" "deepseek-r1:14b" "RobinBially/nomic-embed-text-8k" "qwen3:8b" "qwen3:14b"];
|
|
||||||
port = 11434;
|
port = 11434;
|
||||||
# acceleration = "cuda";
|
# acceleration = "cuda";
|
||||||
environmentVariables = {
|
environmentVariables = {
|
||||||
OLLAMA_ORIGINS = "*";
|
OLLAMA_ORIGINS = "*";
|
||||||
OLLAMA_LLM_LIBRARY = "cuda";
|
OLLAMA_LLM_LIBRARY = "cuda";
|
||||||
LD_LIBRARY_PATH = "run/opengl-driver/lib";
|
LD_LIBRARY_PATH = "run/opengl-driver/lib";
|
||||||
HTTP_PROXY = "https://ollama.ryu.darksailor.dev";
|
HTTP_PROXY = "https://ollama.darksailor.dev";
|
||||||
|
OLLAMA_CONTEXT_LENGTH = "32000";
|
||||||
|
OLLAMA_KEEP_ALIVE = "30m";
|
||||||
};
|
};
|
||||||
package = pkgs.ollama-cuda;
|
package = pkgs.ollama-cuda;
|
||||||
};
|
};
|
||||||
# open-webui = {
|
|
||||||
# enable = false;
|
|
||||||
# environment = {
|
|
||||||
# OLLAMA_BASE_URL = "http://127.0.0.1:11434";
|
|
||||||
# WEBUI_AUTH = "False";
|
|
||||||
# ENABLE_LOGIN_FORM = "False";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
caddy = {
|
caddy = {
|
||||||
# virtualHosts."llama.ryu.darksailor.dev".extraConfig = ''
|
virtualHosts."ollama.darksailor.dev".extraConfig = ''
|
||||||
# import cloudflare
|
|
||||||
# forward_auth tako:5555 {
|
|
||||||
# uri /api/authz/forward-auth
|
|
||||||
# copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
|
|
||||||
# }
|
|
||||||
# reverse_proxy localhost:${builtins.toString config.services.open-webui.port}
|
|
||||||
# '';
|
|
||||||
virtualHosts."ollama.ryu.darksailor.dev".extraConfig = ''
|
|
||||||
import cloudflare
|
import cloudflare
|
||||||
|
@apikey {
|
||||||
|
header Authorization "Bearer {env.LLAMA_API_KEY}"
|
||||||
|
}
|
||||||
|
|
||||||
|
handle @apikey {
|
||||||
|
header {
|
||||||
|
# Set response headers or proxy to a different service if API key is valid
|
||||||
|
Access-Control-Allow-Origin *
|
||||||
|
-Authorization "Bearer {env.LLAMA_API_KEY}" # Remove the header after validation
|
||||||
|
}
|
||||||
reverse_proxy localhost:${builtins.toString config.services.ollama.port}
|
reverse_proxy localhost:${builtins.toString config.services.ollama.port}
|
||||||
|
}
|
||||||
|
|
||||||
|
respond "Unauthorized" 403
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
systemd.services.caddy = {
|
||||||
|
serviceConfig = {
|
||||||
|
EnvironmentFile = config.sops.templates."LLAMA_API_KEY.env".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,21 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
libvirtd = {
|
# libvirtd = {
|
||||||
enable = true;
|
|
||||||
qemu = {
|
|
||||||
runAsRoot = true;
|
|
||||||
swtpm.enable = true;
|
|
||||||
# ovmf = {
|
|
||||||
# enable = true;
|
# enable = true;
|
||||||
|
# qemu = {
|
||||||
|
# runAsRoot = true;
|
||||||
|
# swtpm.enable = true;
|
||||||
|
# # ovmf = {
|
||||||
|
# # enable = true;
|
||||||
|
# # };
|
||||||
# };
|
# };
|
||||||
|
# };
|
||||||
|
waydroid = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.waydroid-nftables;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
# imports = [
|
||||||
imports = [
|
# ./win11.nix
|
||||||
./win11.nix
|
# ];
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
dates = "daily";
|
dates = "daily";
|
||||||
options = "--delete-older-than 5d";
|
options = "--delete-older-than 5d";
|
||||||
};
|
};
|
||||||
package = pkgs.nixVersions.latest; # deploy-rs doesn't work with nix >= 2.32
|
package = pkgs.nixVersions.nix_2_32; # deploy-rs doesn't work with nix >= 2.32
|
||||||
distributedBuilds = true;
|
distributedBuilds = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
19
nixos/tako/services/blocky.nix
Normal file
19
nixos/tako/services/blocky.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
device,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services = {
|
||||||
|
blocky = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ports.dns = 53;
|
||||||
|
ports.http = 83838;
|
||||||
|
ports.dohPath = "/dns-query";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
caddy.virtualHosts."blocky.${device.domain}".extraConfig = ''
|
||||||
|
reverse_proxy localhost:83838
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./games
|
./games
|
||||||
# ./headscale.nix
|
# ./headscale.nix
|
||||||
# ./llama.nix
|
./llms.nix
|
||||||
# ./monitoring.nix
|
# ./monitoring.nix
|
||||||
# ./paperless.nix
|
# ./paperless.nix
|
||||||
./navidrome.nix
|
./navidrome.nix
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
./resolved.nix
|
./resolved.nix
|
||||||
./searxng.nix
|
./searxng.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
|
./kellnr.nix
|
||||||
];
|
];
|
||||||
services = {
|
services = {
|
||||||
nix-serve = {
|
nix-serve = {
|
||||||
|
|||||||
0
nixos/tako/services/games/hytale.nix
Normal file
0
nixos/tako/services/games/hytale.nix
Normal file
@@ -24,6 +24,7 @@
|
|||||||
icon = "jellyfin.png";
|
icon = "jellyfin.png";
|
||||||
description = "Jellyfin Media Server";
|
description = "Jellyfin Media Server";
|
||||||
href = "https://jellyfin.tsuba.darksailor.dev";
|
href = "https://jellyfin.tsuba.darksailor.dev";
|
||||||
|
siteMonitor = "https://jellyfin.tsuba.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -31,6 +32,7 @@
|
|||||||
icon = "sonarr.png";
|
icon = "sonarr.png";
|
||||||
description = "Sonarr: TV Series Management";
|
description = "Sonarr: TV Series Management";
|
||||||
href = "https://sonarr.tsuba.darksailor.dev";
|
href = "https://sonarr.tsuba.darksailor.dev";
|
||||||
|
siteMonitor = "https://sonarr.tsuba.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -38,6 +40,7 @@
|
|||||||
icon = "bazarr.png";
|
icon = "bazarr.png";
|
||||||
description = "Bazarr: Subtitles and Metadata";
|
description = "Bazarr: Subtitles and Metadata";
|
||||||
href = "https://bazarr.tsuba.darksailor.dev";
|
href = "https://bazarr.tsuba.darksailor.dev";
|
||||||
|
siteMonitor = "https://bazarr.tsuba.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -45,6 +48,7 @@
|
|||||||
icon = "radarr.png";
|
icon = "radarr.png";
|
||||||
description = "Radarr: Movie Management";
|
description = "Radarr: Movie Management";
|
||||||
href = "https://radarr.tsuba.darksailor.dev";
|
href = "https://radarr.tsuba.darksailor.dev";
|
||||||
|
siteMonitor = "https://radarr.tsuba.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -52,13 +56,7 @@
|
|||||||
icon = "deluge.png";
|
icon = "deluge.png";
|
||||||
description = "Deluge: Torrent Client";
|
description = "Deluge: Torrent Client";
|
||||||
href = "https://deluge.tsuba.darksailor.dev";
|
href = "https://deluge.tsuba.darksailor.dev";
|
||||||
};
|
siteMonitor = "https://deluge.tsuba.darksailor.dev";
|
||||||
}
|
|
||||||
{
|
|
||||||
"Prowlarr" = {
|
|
||||||
icon = "prowlarr.png";
|
|
||||||
description = "Prowlarr: Indexer Manager";
|
|
||||||
href = "https://prowlarr.tsuba.darksailor.dev";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -66,6 +64,15 @@
|
|||||||
icon = "home-assistant.png";
|
icon = "home-assistant.png";
|
||||||
description = "Home Automation";
|
description = "Home Automation";
|
||||||
href = "https://home.darksailor.dev";
|
href = "https://home.darksailor.dev";
|
||||||
|
siteMonitor = "https://home.darksailor.dev";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Pi Hole" = {
|
||||||
|
icon = "pi-hole.png";
|
||||||
|
description = "Pi-hole: Network-wide Ad Blocker";
|
||||||
|
href = "https://pihole.darksailor.dev";
|
||||||
|
siteMonitor = "https://pihole.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -77,6 +84,7 @@
|
|||||||
icon = "gitea.png";
|
icon = "gitea.png";
|
||||||
description = "Gitea Code Hosting";
|
description = "Gitea Code Hosting";
|
||||||
href = "https://git.darksailor.dev";
|
href = "https://git.darksailor.dev";
|
||||||
|
siteMonitor = "https://git.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -84,6 +92,7 @@
|
|||||||
icon = "nextcloud.png";
|
icon = "nextcloud.png";
|
||||||
description = "Nextcloud Suite";
|
description = "Nextcloud Suite";
|
||||||
href = "https://cloud.darksailor.dev";
|
href = "https://cloud.darksailor.dev";
|
||||||
|
siteMonitor = "https://cloud.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -91,13 +100,15 @@
|
|||||||
icon = "immich.png";
|
icon = "immich.png";
|
||||||
description = "Immich: Self-hosted Photo and Video Backup";
|
description = "Immich: Self-hosted Photo and Video Backup";
|
||||||
href = "https://photos.darksailor.dev";
|
href = "https://photos.darksailor.dev";
|
||||||
|
siteMonitor = "https://photos.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
"Excalidraw" = {
|
"Excalidraw" = {
|
||||||
icon = "excalidraw.png";
|
icon = "excalidraw.png";
|
||||||
description = "Excalidraw: Self-hosted Collaborative Whiteboard";
|
description = "Excalidraw: Self-hosted Whiteboard";
|
||||||
href = "https://draw.darksailor.dev";
|
href = "https://draw.darksailor.dev";
|
||||||
|
siteMonitor = "https://draw.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -105,6 +116,23 @@
|
|||||||
icon = "navidrome.png";
|
icon = "navidrome.png";
|
||||||
description = "A self-hosted music server and streamer.";
|
description = "A self-hosted music server and streamer.";
|
||||||
href = "https://music.darksailor.dev";
|
href = "https://music.darksailor.dev";
|
||||||
|
siteMonitor = "https://music.darksailor.dev";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"OpenwebUI" = {
|
||||||
|
icon = "open-webui.png";
|
||||||
|
description = "OpenwebUI: Self-hosted AI chat interface";
|
||||||
|
href = "https://chat.darksailor.dev";
|
||||||
|
siteMonitor = "https://chat.darksailor.dev";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Prowlarr" = {
|
||||||
|
icon = "prowlarr.png";
|
||||||
|
description = "Prowlarr: Indexer Manager";
|
||||||
|
href = "https://prowlarr.darksailor.dev";
|
||||||
|
siteMonitor = "https://prowlarr.darksailor.dev";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -159,23 +187,22 @@
|
|||||||
};
|
};
|
||||||
caddy = {
|
caddy = {
|
||||||
virtualHosts."dashboard.darksailor.dev".extraConfig = ''
|
virtualHosts."dashboard.darksailor.dev".extraConfig = ''
|
||||||
# import auth
|
|
||||||
reverse_proxy localhost:${builtins.toString config.services.homepage-dashboard.listenPort}
|
reverse_proxy localhost:${builtins.toString config.services.homepage-dashboard.listenPort}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
authelia = {
|
# authelia = {
|
||||||
instances.darksailor = {
|
# instances.darksailor = {
|
||||||
settings = {
|
# settings = {
|
||||||
access_control = {
|
# access_control = {
|
||||||
rules = [
|
# rules = [
|
||||||
{
|
# {
|
||||||
domain = "dashboard.darksailor.dev";
|
# domain = "dashboard.darksailor.dev";
|
||||||
policy = "one_factor";
|
# policy = "one_factor";
|
||||||
}
|
# }
|
||||||
];
|
# ];
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
57
nixos/tako/services/kellnr.nix
Normal file
57
nixos/tako/services/kellnr.nix
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# docker run --rm -it \
|
||||||
|
# -p 8000:8000 \
|
||||||
|
# -e "KELLNR_ORIGIN__HOSTNAME=kellnr.example.com" \
|
||||||
|
# -v $(pwd):/opt/kdata ghcr.io/kellnr/kellnr:5
|
||||||
|
# E.g. docker run -v /path/to/config.toml:/usr/local/cargo/config.toml:ro ghcr.io/kellnr/kellnr:5.2.4
|
||||||
|
{config, ...}: let
|
||||||
|
port = 8899;
|
||||||
|
domain = "crates.darksailor.dev";
|
||||||
|
in {
|
||||||
|
sops = {
|
||||||
|
secrets."kellnr/password" = {};
|
||||||
|
secrets."kellnr/token" = {};
|
||||||
|
templates."kellnr.env".content = ''
|
||||||
|
KELLNR_SETUP__ADMIN_PWD=${config.sops.placeholder."kellnr/password"}
|
||||||
|
KELLNR_SETUP__ADMIN_TOKEN=${config.sops.placeholder."kellnr/token"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
virtualisation.oci-containers = {
|
||||||
|
backend = "docker";
|
||||||
|
containers = {
|
||||||
|
kellnr = {
|
||||||
|
image = "ghcr.io/kellnr/kellnr:5";
|
||||||
|
ports = ["127.0.0.1:${toString port}:8000"];
|
||||||
|
volumes = [
|
||||||
|
"/var/lib/kellnr:/opt/kdata"
|
||||||
|
];
|
||||||
|
environment = {
|
||||||
|
KELLNR_ORIGIN__HOSTNAME = domain;
|
||||||
|
KELLNR_DOCS__ENABLED = "true";
|
||||||
|
KELLNR_ORIGIN__PROTOCOL = "https";
|
||||||
|
KELLNR_ORIGIN__PORT = "443";
|
||||||
|
};
|
||||||
|
environmentFiles = [
|
||||||
|
config.sops.templates."kellnr.env".path
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.caddy.virtualHosts."${domain}".extraConfig = ''
|
||||||
|
# import auth
|
||||||
|
reverse_proxy localhost:${toString port}
|
||||||
|
'';
|
||||||
|
# services.authelia = {
|
||||||
|
# instances.darksailor = {
|
||||||
|
# settings = {
|
||||||
|
# access_control = {
|
||||||
|
# rules = [
|
||||||
|
# {
|
||||||
|
# inherit domain;
|
||||||
|
# policy = "one_factor";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
sops = {
|
|
||||||
secrets."llama/api_key".owner = config.services.caddy.user;
|
|
||||||
secrets."llama/user".owner = config.services.caddy.user;
|
|
||||||
secrets."openai/api_key" = {};
|
|
||||||
templates = {
|
|
||||||
"LLAMA_API_KEY.env".content = ''
|
|
||||||
LLAMA_API_KEY=${config.sops.placeholder."llama/api_key"}
|
|
||||||
'';
|
|
||||||
api_key_env.owner = config.services.caddy.user;
|
|
||||||
"OPENAI_API_KEY.env".content = ''
|
|
||||||
OPENAI_API_KEY="${config.sops.placeholder."openai/api_key"}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
llama-cpp = {
|
|
||||||
enable = false;
|
|
||||||
port = 11435;
|
|
||||||
model = pkgs.fetchurl {
|
|
||||||
url = "https://huggingface.co/lmstudio-community/gpt-oss-20b-GGUF/resolve/main/gpt-oss-20b-MXFP4.gguf";
|
|
||||||
sha256 = "65d06d31a3977d553cb3af137b5c26b5f1e9297a6aaa29ae7caa98788cde53ab";
|
|
||||||
};
|
|
||||||
# package = pkgs.ik_llama;
|
|
||||||
};
|
|
||||||
ollama = {
|
|
||||||
enable = false;
|
|
||||||
loadModels = [
|
|
||||||
"deepseek-r1:7b"
|
|
||||||
"deepseek-r1:14b"
|
|
||||||
"RobinBially/nomic-embed-text-8k"
|
|
||||||
"qwen3:8b"
|
|
||||||
];
|
|
||||||
port = 11434;
|
|
||||||
host = "0.0.0.0";
|
|
||||||
environmentVariables = {
|
|
||||||
OLLAMA_ORIGINS = "*";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
open-webui = {
|
|
||||||
enable = false;
|
|
||||||
port = 7070;
|
|
||||||
environment = {
|
|
||||||
SCARF_NO_ANALYTICS = "True";
|
|
||||||
DO_NOT_TRACK = "True";
|
|
||||||
ANONYMIZED_TELEMETRY = "False";
|
|
||||||
WEBUI_AUTH = "False";
|
|
||||||
ENABLE_LOGIN_FORM = "False";
|
|
||||||
WEBUI_URL = "https://llama.darksailor.dev";
|
|
||||||
OPENAI_BASE_URL = "https://ollama.darksailor.dev/v1";
|
|
||||||
OLLAMA_API_BASE_URL = "https://ollama.ryu.darksailor.dev";
|
|
||||||
};
|
|
||||||
environmentFile = "${config.sops.templates."LLAMA_API_KEY.env".path}";
|
|
||||||
};
|
|
||||||
|
|
||||||
caddy = {
|
|
||||||
virtualHosts."llama.darksailor.dev".extraConfig = ''
|
|
||||||
import auth
|
|
||||||
reverse_proxy localhost:${builtins.toString config.services.open-webui.port}
|
|
||||||
'';
|
|
||||||
virtualHosts."ollama.darksailor.dev".extraConfig = ''
|
|
||||||
@apikey {
|
|
||||||
header Authorization "Bearer {env.LLAMA_API_KEY}"
|
|
||||||
}
|
|
||||||
|
|
||||||
handle @apikey {
|
|
||||||
header {
|
|
||||||
# Set response headers or proxy to a different service if API key is valid
|
|
||||||
Access-Control-Allow-Origin *
|
|
||||||
-Authorization "Bearer {env.LLAMA_API_KEY}" # Remove the header after validation
|
|
||||||
}
|
|
||||||
reverse_proxy localhost:${builtins.toString config.services.llama-cpp.port}
|
|
||||||
}
|
|
||||||
|
|
||||||
respond "Unauthorized" 403
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
authelia = {
|
|
||||||
instances.darksailor = {
|
|
||||||
settings = {
|
|
||||||
access_control = {
|
|
||||||
rules = [
|
|
||||||
{
|
|
||||||
domain = "llama.darksailor.dev";
|
|
||||||
policy = "one_factor";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.services.caddy = {
|
|
||||||
serviceConfig = {
|
|
||||||
EnvironmentFile = config.sops.templates."LLAMA_API_KEY.env".path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
54
nixos/tako/services/llms.nix
Normal file
54
nixos/tako/services/llms.nix
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{config, ...}: {
|
||||||
|
sops = {
|
||||||
|
secrets."llama/api_key".owner = config.services.caddy.user;
|
||||||
|
secrets."openai/api_key" = {};
|
||||||
|
templates = {
|
||||||
|
"ollama.env".content = ''
|
||||||
|
LLAMA_API_KEY=${config.sops.placeholder."llama/api_key"}
|
||||||
|
OPENAI_API_KEYS=${config.sops.placeholder."openai/api_key"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
open-webui = {
|
||||||
|
enable = true;
|
||||||
|
port = 7070;
|
||||||
|
environment = {
|
||||||
|
SCARF_NO_ANALYTICS = "True";
|
||||||
|
DO_NOT_TRACK = "True";
|
||||||
|
ANONYMIZED_TELEMETRY = "False";
|
||||||
|
WEBUI_AUTH = "False";
|
||||||
|
ENABLE_LOGIN_FORM = "False";
|
||||||
|
WEBUI_URL = "https://chat.darksailor.dev";
|
||||||
|
OLLAMA_BASE_URL = "https://ollama.darksailor.dev";
|
||||||
|
};
|
||||||
|
environmentFile = "${config.sops.templates."ollama.env".path}";
|
||||||
|
};
|
||||||
|
|
||||||
|
caddy = {
|
||||||
|
virtualHosts."chat.darksailor.dev".extraConfig = ''
|
||||||
|
import auth
|
||||||
|
reverse_proxy localhost:${builtins.toString config.services.open-webui.port}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
authelia = {
|
||||||
|
instances.darksailor = {
|
||||||
|
settings = {
|
||||||
|
access_control = {
|
||||||
|
rules = [
|
||||||
|
{
|
||||||
|
domain = "chat.darksailor.dev";
|
||||||
|
policy = "one_factor";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.services.caddy = {
|
||||||
|
serviceConfig = {
|
||||||
|
EnvironmentFile = config.sops.templates."ollama.env".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -5,8 +5,6 @@
|
|||||||
device,
|
device,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
virtualisation.oci-containers.backend = "docker";
|
|
||||||
users.extraUsers.servius.extraGroups = ["docker"];
|
users.extraUsers.servius.extraGroups = ["docker"];
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
inputs,
|
inputs,
|
||||||
overlays,
|
overlays,
|
||||||
home-manager-stable,
|
home-manager-stable,
|
||||||
|
nixpkgs,
|
||||||
nur,
|
nur,
|
||||||
nixos-raspberrypi,
|
nixos-raspberrypi,
|
||||||
...
|
...
|
||||||
@@ -15,13 +16,14 @@
|
|||||||
inherit device;
|
inherit device;
|
||||||
unstablePkgs = inputs.nixpkgs.legacyPackages.${device.system};
|
unstablePkgs = inputs.nixpkgs.legacyPackages.${device.system};
|
||||||
masterPkgs = inputs.nixpkgs-master.legacyPackages.${device.system};
|
masterPkgs = inputs.nixpkgs-master.legacyPackages.${device.system};
|
||||||
|
cratesNix = inputs.crates-nix.mkLib {pkgs = nixpkgs.legacyPackages.${device.system};};
|
||||||
};
|
};
|
||||||
system = device.system;
|
system = device.system;
|
||||||
modules = [
|
modules = [
|
||||||
inputs.arion.nixosModules.arion
|
inputs.arion.nixosModules.arion
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.stylix-stable.nixosModules.stylix
|
# inputs.stylix-stable.nixosModules.stylix
|
||||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||||
nur.modules.nixos.default
|
nur.modules.nixos.default
|
||||||
home-manager-stable.nixosModules.home-manager
|
home-manager-stable.nixosModules.home-manager
|
||||||
@@ -40,6 +42,7 @@
|
|||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit device;
|
inherit device;
|
||||||
stablePkgs = inputs.nixpkgs-stable.legacyPackages.${device.system};
|
stablePkgs = inputs.nixpkgs-stable.legacyPackages.${device.system};
|
||||||
|
cratesNix = inputs.crates-nix.mkLib {pkgs = nixpkgs.legacyPackages.${device.system};};
|
||||||
};
|
};
|
||||||
users.${device.user}.imports = [
|
users.${device.user}.imports = [
|
||||||
inputs.nixvim.homeModules.nixvim
|
inputs.nixvim.homeModules.nixvim
|
||||||
@@ -53,7 +56,7 @@
|
|||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
./${name}.nix
|
./${name}.nix
|
||||||
../../sops.nix
|
../../sops.nix
|
||||||
../../stylix.nix
|
# ../../stylix.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,5 +12,6 @@
|
|||||||
./monitoring.nix
|
./monitoring.nix
|
||||||
./pihole.nix
|
./pihole.nix
|
||||||
./resolved.nix
|
./resolved.nix
|
||||||
|
./docker.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
21
nixos/tsuba/services/docker.nix
Normal file
21
nixos/tsuba/services/docker.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
virtualisation.oci-containers.backend = "docker";
|
||||||
|
systemd.services.docker-prune-image = {
|
||||||
|
description = "Docker prune unused images";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${pkgs.docker}/bin/docker image prune -f";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.timers.docker-prune-image = {
|
||||||
|
description = "Timer for docker image prune";
|
||||||
|
wantedBy = ["timers.target"];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "Mon *-*-* 02:00:00";
|
||||||
|
OnUnitInactiveSec = "6d";
|
||||||
|
Persistent = true;
|
||||||
|
RandomizedDelaySec = "1h";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
unstablePkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
@@ -46,4 +46,24 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
systemd.services.jellyfin-image-update = {
|
||||||
|
description = "Pull latest Jellyfin Docker image";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${pkgs.docker}/bin/docker pull jellyfin/jellyfin:latest";
|
||||||
|
ExecStartPost = "${pkgs.systemd}/bin/systemctl restart docker-jellyfin.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Systemd timer to run the update service every 5 days
|
||||||
|
systemd.timers.jellyfin-image-update = {
|
||||||
|
description = "Timer for Jellyfin image updates";
|
||||||
|
wantedBy = ["timers.target"];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "Mon *-*-* 02:00:00";
|
||||||
|
OnUnitInactiveSec = "5d";
|
||||||
|
Persistent = true;
|
||||||
|
RandomizedDelaySec = "1h";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
44
overlays.nix
44
overlays.nix
@@ -164,8 +164,7 @@
|
|||||||
# alvr-master = inputs.alvr.packages.${prev.system}.default;
|
# alvr-master = inputs.alvr.packages.${prev.system}.default;
|
||||||
caddyWithCloudflare = inputs.nixpkgs.legacyPackages.${final.system}.caddy.withPlugins {
|
caddyWithCloudflare = inputs.nixpkgs.legacyPackages.${final.system}.caddy.withPlugins {
|
||||||
plugins = ["github.com/caddy-dns/cloudflare@v0.2.2"];
|
plugins = ["github.com/caddy-dns/cloudflare@v0.2.2"];
|
||||||
hash = "sha256-ea8PC/+SlPRdEVVF/I3c1CBprlVp1nrumKM5cMwJJ3U=";
|
hash = "sha256-dnhEjopeA0UiI+XVYHYpsjcEI6Y1Hacbi28hVKYQURg=";
|
||||||
# hash = "sha256-Z8nPh4OI3/R1nn667ZC5VgE+Q9vDenaQ3QPKxmqPNkc=";
|
|
||||||
};
|
};
|
||||||
nix-auth = inputs.nix-auth.packages.${prev.system}.nix-auth;
|
nix-auth = inputs.nix-auth.packages.${prev.system}.nix-auth;
|
||||||
kitty = inputs.nixpkgs-stable.legacyPackages.${prev.system}.kitty;
|
kitty = inputs.nixpkgs-stable.legacyPackages.${prev.system}.kitty;
|
||||||
@@ -220,24 +219,25 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
libfprint = final: prev: {
|
libfprint = final: prev: {
|
||||||
# libfprint = prev.libfprint.overrideAttrs (oldAttrs: {
|
libfprint = prev.libfprint.overrideAttrs (oldAttrs: {
|
||||||
# version = "git";
|
version = "git";
|
||||||
# src = final.fetchFromGitHub {
|
# https://github.com/archeYR/libfprint-CS9711/commits/cs9711-rebase/
|
||||||
# owner = "ericlinagora";
|
src = final.fetchFromGitHub {
|
||||||
# repo = "libfprint-CS9711";
|
owner = "archeYR";
|
||||||
# rev = "03ace5b20146eb01c77fb3ea63e1909984d6d377";
|
repo = "libfprint-CS9711";
|
||||||
# sha256 = "sha256-gr3UvFB6D04he/9zawvQIuwfv0B7fEZb6BGiNAbLids";
|
rev = "c2d163fbb06d33e80a5177815bb0b8ca2f01739f";
|
||||||
# };
|
sha256 = "sha256-JygOJ3SybXKR3CjLxLbAZDaYCl9LuQYDQfFC8Si5oaw";
|
||||||
# buildInputs = oldAttrs.buildInputs ++ [final.nss_latest];
|
};
|
||||||
# nativeBuildInputs =
|
buildInputs = oldAttrs.buildInputs ++ [final.nss_latest];
|
||||||
# oldAttrs.nativeBuildInputs
|
nativeBuildInputs =
|
||||||
# ++ [
|
oldAttrs.nativeBuildInputs
|
||||||
# final.opencv
|
++ [
|
||||||
# final.cmake
|
final.opencv
|
||||||
# final.doctest
|
final.cmake
|
||||||
# ];
|
final.doctest
|
||||||
# });
|
];
|
||||||
# # fprintd = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fprintd;
|
});
|
||||||
|
# fprintd = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fprintd;
|
||||||
# fprintd = prev.fprintd.overrideAttrs (oldAttrs: {
|
# fprintd = prev.fprintd.overrideAttrs (oldAttrs: {
|
||||||
# src = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fprintd.src;
|
# src = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fprintd.src;
|
||||||
# });
|
# });
|
||||||
@@ -273,8 +273,12 @@
|
|||||||
# });
|
# });
|
||||||
wivrn-nightly = inputs.wivrn.packages.${prev.system}.default;
|
wivrn-nightly = inputs.wivrn.packages.${prev.system}.default;
|
||||||
};
|
};
|
||||||
|
games = final: prev: {
|
||||||
|
hytale-launcher = inputs.hytale-launcher.packages.${prev.system}.default;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
[
|
[
|
||||||
|
games
|
||||||
vr
|
vr
|
||||||
anyrun-overlay
|
anyrun-overlay
|
||||||
catppuccinThemes
|
catppuccinThemes
|
||||||
|
|||||||
3400
patches/markdown-preview.patch
Normal file
3400
patches/markdown-preview.patch
Normal file
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@ SHA1=$3
|
|||||||
if [[ -z "$COMMIT_SOURCE" ]]
|
if [[ -z "$COMMIT_SOURCE" ]]
|
||||||
then
|
then
|
||||||
DIFF_OUTPUT=$(git diff --cached)
|
DIFF_OUTPUT=$(git diff --cached)
|
||||||
AI_CHAT_OUTPUT=$(echo "$DIFF_OUTPUT" | aichat --role %git-commit%)
|
AI_CHAT_OUTPUT=$(echo "$DIFF_OUTPUT" | aichat --role git-commit)
|
||||||
CURRENT_MSG=$(cat "$COMMIT_MSG_FILE")
|
CURRENT_MSG=$(cat "$COMMIT_MSG_FILE")
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -80,6 +80,9 @@ pihole:
|
|||||||
password: ENC[AES256_GCM,data:xOpsEFN6zbgPwYnSudmFqlYOghY=,iv:isO0RtKgi8G8noumyhIfLLfmH9w5ybt9NVxh7bRVykM=,tag:17UcPypyqquJDTFZAc5iyA==,type:str]
|
password: ENC[AES256_GCM,data:xOpsEFN6zbgPwYnSudmFqlYOghY=,iv:isO0RtKgi8G8noumyhIfLLfmH9w5ybt9NVxh7bRVykM=,tag:17UcPypyqquJDTFZAc5iyA==,type:str]
|
||||||
nas:
|
nas:
|
||||||
password: ENC[AES256_GCM,data:lWb/l3srLrA=,iv:SN8+ziMJZZ1F+RT6JhoqWXcr1c4pSAkiT6gYfsi2LS4=,tag:g5Whb9nV8FHrOA5/Nbg0Fw==,type:str]
|
password: ENC[AES256_GCM,data:lWb/l3srLrA=,iv:SN8+ziMJZZ1F+RT6JhoqWXcr1c4pSAkiT6gYfsi2LS4=,tag:g5Whb9nV8FHrOA5/Nbg0Fw==,type:str]
|
||||||
|
kellnr:
|
||||||
|
token: ENC[AES256_GCM,data:te5psUTLr8+NLsliJAgz71j8AT3BUkJ8f0eGgnsRbbk2zF9fH3cCfZbry+mmxwvhmwL8ktNexaPUixatNDrWpA==,iv:Ao6Iqr3z8/3azo9H9lPUeVwto7nQMlMuAZp4Q9fIwJE=,tag:r2FXoxgrvlaCnQlngg12qg==,type:str]
|
||||||
|
password: ENC[AES256_GCM,data:OZkfHckKHu/EM6+PquknU+aKmyyFw5o25ZENqNGc0d/vYiNBo4FBdCZwj1W0efo43+hTgsxVj7QCDSxFgROdOg==,iv:2G3fy5dIufL7tXEgRaOGBFNaVoKbfKqcFnRiZN1I1F4=,tag:iyHQD5oXy44tL18W7Fw35g==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1pw7kluxp7872c63ne4jecq75glj060jkmqwzkk6esatuyck9egfswufdpk
|
- recipient: age1pw7kluxp7872c63ne4jecq75glj060jkmqwzkk6esatuyck9egfswufdpk
|
||||||
@@ -91,7 +94,7 @@ sops:
|
|||||||
VGZKdHpVeFRpQUxtSEkyaEhLMlBJcGsKLb0DvPNZosPBUuiX6qz1s5IO5INQh8CK
|
VGZKdHpVeFRpQUxtSEkyaEhLMlBJcGsKLb0DvPNZosPBUuiX6qz1s5IO5INQh8CK
|
||||||
ZtXTVClwMSmaUYhdSB2gKFrKVZHXTJZ4oAL5t/BpC0pOHyr+o96T3Q==
|
ZtXTVClwMSmaUYhdSB2gKFrKVZHXTJZ4oAL5t/BpC0pOHyr+o96T3Q==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-12-30T01:39:33Z"
|
lastmodified: "2026-01-23T07:40:21Z"
|
||||||
mac: ENC[AES256_GCM,data:dD0EYgJ7vD4bH5l36XJZO5LA495tVCeh5bMUBhKaOoZgf2LmgNXz5oBHwIof1ZrhZ6cYMKCxvt+hllAL5u2N+hE/JjJLDxPj3DS/BXhTzp/OoQohKdLrYoj6IAUfTQppmLj06WLKR+5TCEzOuG01Y/SkAM9tqk3himfrx7guxUQ=,iv:U7a+4syPkM9R9ksIVJ3/vnFi0iS1uPH2rulpWOayPgs=,tag:2r2rrUg6wEC1zqRpeU2GJA==,type:str]
|
mac: ENC[AES256_GCM,data:lmpI0sQJbEz0U8oxJ+gLZTfFBwCyJYdaiCmKcRU1juL7/mqyRYrB4Dh8lMMmW5I+n0Z1P0zZ5+CD/WnRXcqdZ/Yj40ZlaUgIdsH1qMImvdv1wld0OIThDWKxoTSywGcbaMz7PpAsC5FNoRo5v/uBT9y42xBXoxw8urdHCrIi21Y=,iv:KFL4fuyqv1TKg36kHxSZiiHTi4MoGEnRP5JyB6BQq78=,tag:sVbK6UwRC+f0Z3HSCtZ2qQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.11.0
|
||||||
|
|||||||
Reference in New Issue
Block a user