Compare commits
68 Commits
8bd6da8f75
...
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 | ||
|
|
1cec36e736 | ||
|
|
5f243fda02 | ||
|
|
67cc456503 | ||
|
|
e8aece3f47 | ||
|
|
0fa7586c97 | ||
|
|
f3c22f29bf | ||
|
|
9fb2079375 | ||
|
|
d109ceb7fd | ||
|
|
5862504957 | ||
|
|
b7c7a875f6 | ||
|
|
59eee40635 | ||
|
|
ab1c940aef | ||
|
|
e6e4a58d70 | ||
|
|
6c9ea5bd8f | ||
|
|
59e0ffc1ae | ||
|
|
edf2e5834a | ||
|
|
42dac8b4d2 | ||
|
|
ceddbd9132 | ||
|
|
c9456966bf |
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
|
||||||
|
|||||||
23
README.md
23
README.md
@@ -1,11 +1,22 @@
|
|||||||
# Machines
|
# Machines
|
||||||
|
|
||||||
1. Ryu Dektop (Intel i9-14900KS / Nvidia 5090 / 64GB CL36@6000MTs)
|
1. Ryu Dektop (Intel i9-14900KS / Nvidia RTX 5090 / DDR5 64GB CL36@6000MTs)
|
||||||
```
|
```
|
||||||
deploy -s .#ryu
|
deploy -s .#ryu
|
||||||
```
|
```
|
||||||
2. Mirai Server (AMD Ryzen 7 7700 / 64GB@5200MHz)
|
2. Tako Server (Intel Xeon E-2236 / DDR5 64GB)
|
||||||
3. Tako Server (Intel Xeon E-2236 / 64GB)
|
```
|
||||||
4. Tsuba Server (Raspberry Pi 5 / 8GB)
|
deploy -s .#tako
|
||||||
5. Kuro Laptop (Apple M4 Pro macbook / 24GB)
|
```
|
||||||
6. Shiro Desktop (Apple M4 macmini / 16GB)
|
3. Tsuba Server (Raspberry Pi 5 / 8GB)
|
||||||
|
```
|
||||||
|
deploy -s .#tsuba
|
||||||
|
```
|
||||||
|
4. Kuro Laptop (Apple M4 Pro macbook / 24GB)
|
||||||
|
```
|
||||||
|
deploy -s .#kuro
|
||||||
|
```
|
||||||
|
5. Shiro Desktop (Apple M4 macmini / 16GB)
|
||||||
|
```
|
||||||
|
deploy -s .#shiro
|
||||||
|
```
|
||||||
|
|||||||
@@ -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,3 +1,5 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
services.tailscale.enable = true;
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
distributedBuilds = true;
|
distributedBuilds = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.servius = {
|
users.users.${device.user} = {
|
||||||
# isNormalUser = true;
|
# isNormalUser = true;
|
||||||
openssh.authorizedKeys.keyFiles = [
|
openssh.authorizedKeys.keyFiles = [
|
||||||
../../secrets/id_ed25519.pub
|
../../secrets/id_ed25519.pub
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
1185
flake.lock
generated
1185
flake.lock
generated
File diff suppressed because it is too large
Load Diff
47
flake.nix
47
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";
|
||||||
@@ -240,9 +242,16 @@
|
|||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
wivrn = {
|
wivrn = {
|
||||||
url = "github:wivrn/wivrn?submodules=1";
|
url = "github:uttarayan21/wivrn?submodules=1";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
eilmeldung = {
|
||||||
|
url = "github:christo-auer/eilmeldung";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
hytale-launcher = {
|
||||||
|
url = "github:JPyke3/hytale-launcher-nix";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
@@ -338,6 +347,14 @@
|
|||||||
if isDarwin
|
if isDarwin
|
||||||
then "/Users/${device.user}"
|
then "/Users/${device.user}"
|
||||||
else "/home/${device.user}";
|
else "/home/${device.user}";
|
||||||
|
uid =
|
||||||
|
if (builtins.hasAttr "uid" device)
|
||||||
|
then device.uid
|
||||||
|
else 1000;
|
||||||
|
gid =
|
||||||
|
if (builtins.hasAttr "gid" device)
|
||||||
|
then device.gid
|
||||||
|
else 1000;
|
||||||
# output =
|
# output =
|
||||||
# if isDarwin
|
# if isDarwin
|
||||||
# then self.darwinConfigurations."${device.name}"
|
# then self.darwinConfigurations."${device.name}"
|
||||||
@@ -413,13 +430,13 @@
|
|||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
packages = rec {
|
# packages = rec {
|
||||||
default = neovim;
|
# default = neovim;
|
||||||
neovim = pkgs.nixvim.makeNixvim (pkgs.callPackage ./neovim);
|
# neovim = pkgs.nixvim.makeNixvim (pkgs.callPackage ./neovim);
|
||||||
};
|
# };
|
||||||
devShells = {
|
devShells = {
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
packages = with pkgs; [sops just openssl];
|
packages = with pkgs; [sops just openssl ast-grep];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{config, ...}: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
sops = {
|
sops = {
|
||||||
secrets."accounts/mail/fastmail" = {};
|
secrets."accounts/mail/fastmail" = {};
|
||||||
};
|
};
|
||||||
@@ -11,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 = {
|
||||||
@@ -35,5 +40,8 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
programs.mbsync.enable = true;
|
||||||
|
services.mbsync.enable = pkgs.stdenv.isLinux;
|
||||||
|
# accounts.email.accounts.<name>.mbsync.create
|
||||||
# services.mbsync.enable = true;
|
# services.mbsync.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,17 +6,17 @@
|
|||||||
lib.optionalAttrs device.hasGui {
|
lib.optionalAttrs device.hasGui {
|
||||||
imports = [
|
imports = [
|
||||||
# ./audacity.nix
|
# ./audacity.nix
|
||||||
./blueman.nix
|
# ./blueman.nix
|
||||||
# ./bottles.nix
|
# ./bottles.nix
|
||||||
./chromium.nix
|
./chromium.nix
|
||||||
# ./cursor.nix
|
# ./cursor.nix
|
||||||
./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
|
||||||
@@ -30,14 +30,14 @@ lib.optionalAttrs device.hasGui {
|
|||||||
# ./pcsx2.nix
|
# ./pcsx2.nix
|
||||||
./prismlauncher.nix
|
./prismlauncher.nix
|
||||||
# ./rpcs3.nix
|
# ./rpcs3.nix
|
||||||
# ./shadps4.nix
|
./shadps4.nix
|
||||||
./slack.nix
|
./slack.nix
|
||||||
# ./thunderbird.nix
|
# ./thunderbird.nix
|
||||||
# ./tsukimi.nix
|
# ./tsukimi.nix
|
||||||
# ./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
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
device,
|
device,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
stylix.targets.ghostty.enable = false;
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = device.is "ryu";
|
enable = device.is "ryu";
|
||||||
installBatSyntax = false;
|
installBatSyntax = false;
|
||||||
@@ -11,9 +12,92 @@
|
|||||||
"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";
|
||||||
|
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;
|
||||||
|
themes = {
|
||||||
|
catppuccin-mocha = {
|
||||||
|
# background = "1e1e2e";
|
||||||
|
background = "000000";
|
||||||
|
cursor-color = "f5e0dc";
|
||||||
|
foreground = "cdd6f4";
|
||||||
|
palette = [
|
||||||
|
"0=#45475a"
|
||||||
|
"1=#f38ba8"
|
||||||
|
"2=#a6e3a1"
|
||||||
|
"3=#f9e2af"
|
||||||
|
"4=#89b4fa"
|
||||||
|
"5=#f5c2e7"
|
||||||
|
"6=#94e2d5"
|
||||||
|
"7=#bac2de"
|
||||||
|
"8=#585b70"
|
||||||
|
"9=#f38ba8"
|
||||||
|
"10=#a6e3a1"
|
||||||
|
"11=#f9e2af"
|
||||||
|
"12=#89b4fa"
|
||||||
|
"13=#f5c2e7"
|
||||||
|
"14=#94e2d5"
|
||||||
|
"15=#a6adc8"
|
||||||
|
];
|
||||||
|
selection-background = "353749";
|
||||||
|
selection-foreground = "cdd6f4";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
];
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,12 @@
|
|||||||
imports = [inputs.vicinae.homeManagerModules.default];
|
imports = [inputs.vicinae.homeManagerModules.default];
|
||||||
services.vicinae = {
|
services.vicinae = {
|
||||||
enable = device.is "ryu";
|
enable = device.is "ryu";
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
extensions = [];
|
|
||||||
# package = pkgs.vicinae.overrideAttrs (old: {
|
|
||||||
# patches = [../../patches/vicinae-ctrl-np.patch];
|
|
||||||
# });
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pulseaudio
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
colors = {
|
colors = {
|
||||||
background = "#000000",
|
background = "#000000",
|
||||||
},
|
},
|
||||||
font_size = 16,
|
font_size = 13,
|
||||||
initial_cols = 200,
|
initial_cols = 200,
|
||||||
hide_tab_bar_if_only_one_tab = true,
|
hide_tab_bar_if_only_one_tab = true,
|
||||||
window_background_opacity = 0.8,
|
window_background_opacity = 0.8,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
device,
|
device,
|
||||||
|
stablePkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
@@ -174,6 +175,7 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
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,99 +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
|
||||||
./nh.nix
|
./neomutt.nix
|
||||||
|
./neovim.nix
|
||||||
./nix-index.nix
|
./nix-index.nix
|
||||||
./nushell.nix
|
./nushell.nix
|
||||||
./omnix.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
|
||||||
./neovim.nix
|
# ./bluetui.nix
|
||||||
./opencode.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
|
|
||||||
asciidoctor
|
|
||||||
alejandra
|
|
||||||
aria2
|
|
||||||
ast-grep
|
|
||||||
bottom
|
|
||||||
btop
|
|
||||||
cachix
|
|
||||||
deploy-rs.deploy-rs
|
|
||||||
dust
|
|
||||||
fd
|
|
||||||
file
|
|
||||||
fzf
|
|
||||||
gnupg
|
|
||||||
gpg-tui
|
|
||||||
jq
|
|
||||||
just
|
|
||||||
macchina
|
|
||||||
nb
|
|
||||||
p7zip
|
|
||||||
pandoc
|
|
||||||
pfetch-rs
|
|
||||||
pkg-config
|
|
||||||
ripgrep
|
|
||||||
sd
|
|
||||||
tldr
|
|
||||||
# vcpkg-tool
|
|
||||||
]
|
|
||||||
++ 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];}
|
||||||
41
home/programs/eilmeldung.nix
Normal file
41
home/programs/eilmeldung.nix
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
device,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
inputs.eilmeldung.homeManager.default
|
||||||
|
];
|
||||||
|
programs.eilmeldung = {
|
||||||
|
enable = device.is "ryu";
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
refresh_fps = 60;
|
||||||
|
article_scope = "unread";
|
||||||
|
|
||||||
|
theme = {
|
||||||
|
color_palette = {
|
||||||
|
background = "#1e1e2e";
|
||||||
|
# // ...
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
input_config.mappings = {
|
||||||
|
"q" = ["quit"];
|
||||||
|
"j" = ["down"];
|
||||||
|
"k" = ["up"];
|
||||||
|
"g g" = ["gotofirst"];
|
||||||
|
"G" = ["gotolast"];
|
||||||
|
"o" = ["open" "read" "nextunread"];
|
||||||
|
};
|
||||||
|
|
||||||
|
feed_list = [
|
||||||
|
"query: \"Today Unread\" today unread"
|
||||||
|
"query: \"Today Marked\" today marked"
|
||||||
|
"feeds"
|
||||||
|
"* categories"
|
||||||
|
"tags"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@ in {
|
|||||||
settings = {
|
settings = {
|
||||||
logo = lib.mkIf (device.is "ryu") {
|
logo = lib.mkIf (device.is "ryu") {
|
||||||
source = nextcloudWallpapers "hornet.png";
|
source = nextcloudWallpapers "hornet.png";
|
||||||
|
type = "kitty";
|
||||||
width = 70;
|
width = 70;
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
|
|||||||
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 = ''
|
||||||
${pkgs.pfetch-rs}/bin/pfetch
|
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];}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
{device, ...}: {
|
{config, ...}: {
|
||||||
programs.himalaya = {
|
programs.himalaya = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
accounts.email.accounts.fastmail.himalaya = {
|
accounts.email.accounts.fastmail.himalaya = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
downloads-dir = "${device.home}/Mail";
|
downloads-dir = "${config.home.homeDirectory}/Mail/fastmail";
|
||||||
backend.type = "maildir";
|
backend.type = "maildir";
|
||||||
backend.root-dir = "~/Mail";
|
backend.root-dir = "${config.home.homeDirectory}/Mail/fastmail";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
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];}
|
||||||
@@ -1,9 +1,20 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
programs.neomutt = {
|
programs.neomutt = {
|
||||||
enable = false;
|
enable = true;
|
||||||
vimKeys = true;
|
vimKeys = true;
|
||||||
editor = "nvim";
|
editor = "nvim";
|
||||||
# sidebar = {
|
sidebar = {
|
||||||
# };
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.notmuch = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
accounts.email.accounts.fastmail.neomutt = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
accounts.email.accounts.fastmail.notmuch = {
|
||||||
|
enable = true;
|
||||||
|
neomutt.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,14 +4,15 @@
|
|||||||
./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
|
||||||
./hyprpaper.nix
|
./hyprpaper.nix
|
||||||
|
./remmina.nix
|
||||||
# ./wallpaperengine.nix
|
# ./wallpaperengine.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
|
||||||
@@ -28,7 +12,7 @@
|
|||||||
# polkit_gnome
|
# polkit_gnome
|
||||||
seahorse
|
seahorse
|
||||||
signal-desktop
|
signal-desktop
|
||||||
# sony-headphones-client
|
sony-headphones-client
|
||||||
spotify
|
spotify
|
||||||
steam-run
|
steam-run
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
|||||||
@@ -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"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -189,7 +191,7 @@
|
|||||||
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.kitty}"
|
"$mainMod, Return, exec, ${lib.getExe pkgs.kitty}"
|
||||||
"$mainModShift, Return, exec, ${lib.getExe pkgs.wezterm}"
|
"$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";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
7
home/services/remmina.nix
Normal file
7
home/services/remmina.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{device, ...}: {
|
||||||
|
services.remmina = {
|
||||||
|
enable = device.is "ryu";
|
||||||
|
systemdService.enable = 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 = {
|
||||||
@@ -362,18 +357,18 @@ in {
|
|||||||
additional_vim_regex_highlighting = true;
|
additional_vim_regex_highlighting = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
folding = 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
|
||||||
@@ -77,6 +79,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
users.users.${device.user} = {
|
users.users.${device.user} = {
|
||||||
|
uid = device.uid;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = ["wheel" "audio" "i2c" "media" "video" "tss"];
|
extraGroups = ["wheel" "audio" "i2c" "media" "video" "tss"];
|
||||||
openssh.authorizedKeys.keyFiles = [
|
openssh.authorizedKeys.keyFiles = [
|
||||||
@@ -86,6 +89,10 @@
|
|||||||
};
|
};
|
||||||
users.groups.i2c = {};
|
users.groups.i2c = {};
|
||||||
users.groups.media = {};
|
users.groups.media = {};
|
||||||
|
users.groups.${device.user} = {
|
||||||
|
gid = device.gid;
|
||||||
|
members = [device.user];
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
devmon.enable = true;
|
devmon.enable = true;
|
||||||
@@ -103,7 +110,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
displayManager.gdm.enable = true;
|
displayManager.gdm.enable = true;
|
||||||
desktopManager.gnome.enable = true;
|
# desktopManager.gnome.enable = true;
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
@@ -176,7 +183,7 @@
|
|||||||
};
|
};
|
||||||
hostName = "ryu"; # Define your hostname.
|
hostName = "ryu"; # Define your hostname.
|
||||||
# nameservers = ["1.1.1.1" "8.8.8.8"];
|
# nameservers = ["1.1.1.1" "8.8.8.8"];
|
||||||
nameservers = ["1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one"];
|
# nameservers = ["1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one"];
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
# Configure network proxy if necessary
|
||||||
# proxy.default = "http://user:password@proxy:port/";
|
# proxy.default = "http://user:password@proxy:port/";
|
||||||
@@ -187,14 +194,37 @@
|
|||||||
hostId = "1349f9f0";
|
hostId = "1349f9f0";
|
||||||
# Enable networking
|
# Enable networking
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
|
nftables = {
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
# firewall.allowedTCPPorts = [ ... ];
|
# firewall.allowedTCPPorts = [ ... ];
|
||||||
# firewall.allowedUDPPorts = [ ... ];
|
# firewall.allowedUDPPorts = [ ... ];
|
||||||
# firewall.enable = false;
|
# firewall.enable = false;
|
||||||
nftables.enable = true;
|
enable = true;
|
||||||
|
flushRuleset = true;
|
||||||
|
tables = {
|
||||||
|
"mullvad_tailscale" = {
|
||||||
|
enable = true;
|
||||||
|
family = "inet";
|
||||||
|
content = ''
|
||||||
|
chain output {
|
||||||
|
type route hook output priority 0; policy accept;
|
||||||
|
ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# ruleset = ''
|
||||||
|
# table inet mullvad_tailscale {
|
||||||
|
# chain output {
|
||||||
|
# type route hook output priority 0; policy accept;
|
||||||
|
# ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# '';
|
||||||
|
};
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = false;
|
enable = true;
|
||||||
trustedInterfaces = [
|
trustedInterfaces = [
|
||||||
"tailscale0"
|
"tailscale0"
|
||||||
];
|
];
|
||||||
@@ -202,7 +232,10 @@
|
|||||||
9 # Wake on LAN
|
9 # Wake on LAN
|
||||||
4950 # Warframe
|
4950 # Warframe
|
||||||
4955 # Warframe
|
4955 # Warframe
|
||||||
3113 # Other
|
];
|
||||||
|
allowedTCPPorts = [
|
||||||
|
3113 # Hyprmonitors
|
||||||
|
11345 # lmstudio
|
||||||
];
|
];
|
||||||
allowedTCPPortRanges = [
|
allowedTCPPortRanges = [
|
||||||
{
|
{
|
||||||
@@ -216,14 +249,6 @@
|
|||||||
to = 1764;
|
to = 1764;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
# extraInputRules = ''
|
|
||||||
# table inet mullvad_tailscale {
|
|
||||||
# chain output {
|
|
||||||
# type route hook output priority 0; policy accept;
|
|
||||||
# ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# '';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,7 +8,9 @@
|
|||||||
extraCompatPackages = [
|
extraCompatPackages = [
|
||||||
pkgs.proton-ge-bin
|
pkgs.proton-ge-bin
|
||||||
pkgs.gamescope
|
pkgs.gamescope
|
||||||
|
pkgs.gamescope-wsi
|
||||||
pkgs.mangohud
|
pkgs.mangohud
|
||||||
|
pkgs.vulkan-tools
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
programs.gamescope = {
|
programs.gamescope = {
|
||||||
@@ -17,5 +19,8 @@
|
|||||||
};
|
};
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.protonup-qt
|
pkgs.protonup-qt
|
||||||
|
pkgs.vulkan-tools
|
||||||
|
pkgs.gamescope
|
||||||
|
pkgs.gamescope-wsi
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
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"];
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
|
device,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
@@ -51,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";
|
||||||
@@ -59,7 +62,7 @@
|
|||||||
NIXOS_OZONE_WL = "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.extraUsers.servius.extraGroups = ["libvirtd" "adbusers" "kvm"];
|
users.extraUsers.${device.user}.extraGroups = ["libvirtd" "adbusers" "kvm"];
|
||||||
|
|
||||||
boot.extraModprobeConfig = ''
|
boot.extraModprobeConfig = ''
|
||||||
options kvm_intel nested=1
|
options kvm_intel nested=1
|
||||||
@@ -127,13 +130,18 @@
|
|||||||
options = ["nofail"];
|
options = ["nofail"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/volumes/windows-games" = {
|
# fileSystems."/volumes/windows-games" = {
|
||||||
device = "/dev/disk/by-partuuid/56359fb7-7d33-44d2-bebd-b0c53daeeb73";
|
# device = "/dev/disk/by-partuuid/56359fb7-7d33-44d2-bebd-b0c53daeeb73";
|
||||||
fsType = "ntfs3";
|
# fsType = "ntfs3";
|
||||||
options = ["nofail"];
|
# options = ["nofail"];
|
||||||
};
|
# };
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/home/swapfile";
|
||||||
|
size = 64 * 1024;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|||||||
@@ -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
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
# USB
|
# USB
|
||||||
ATTRS{name}=="Sony Interactive Entertainment DualSense Wireless Controller Touchpad", ENV{LIBINPUT_IGNORE_DEVICE}="1"
|
ATTRS{name}=="Sony Interactive Entertainment DualSense Wireless Controller Touchpad", ENV{LIBINPUT_IGNORE_DEVICE}="1"
|
||||||
# Bluetooth
|
# Bluetooth
|
||||||
ATTRS{name}=="DualSense Wireless Controller", ENV{LIBINPUT_IGNORE_DEVICE}="1"
|
ATTRS{name}=="DualSense Wireless Controller Touchpad", ENV{LIBINPUT_IGNORE_DEVICE}="1"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
services.airpods-handoff = {
|
services.airpods-handoff = {
|
||||||
enable = true;
|
enable = false;
|
||||||
user = "servius";
|
user = "servius";
|
||||||
macAddress = "14:14:7D:E5:1A:AC";
|
macAddress = "14:14:7D:E5:1A:AC";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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,9 +1,11 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
|
# Disable all the dns stuff in favour of tailscale's DNS
|
||||||
services.resolved = {
|
services.resolved = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dnssec = "true";
|
dnssec = "true";
|
||||||
dnsovertls = "true";
|
dnsovertls = "true";
|
||||||
domains = ["lemur-newton.ts.net"];
|
domains = ["lemur-newton.ts.net"];
|
||||||
fallbackDns = ["1.1.1.1"];
|
fallbackDns = [];
|
||||||
};
|
};
|
||||||
|
networking.nameservers = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,30 @@
|
|||||||
{...}: {
|
{
|
||||||
# services = {
|
lib,
|
||||||
# samba = {
|
config,
|
||||||
# enable = false;
|
device,
|
||||||
# openFirewall = true;
|
...
|
||||||
# settings = {
|
}: {
|
||||||
# global = {
|
# networking.firewall.allowPing = true;
|
||||||
# "workgroup" = "WORKGROUP";
|
sops = {
|
||||||
# "server string" = "smbnix";
|
secrets."nas/password" = {};
|
||||||
# "netbios name" = "smbnix";
|
templates."nas-credentials".content = ''
|
||||||
# "security" = "user";
|
username=${device.user}
|
||||||
# "hosts allow" = "192.168.11. 127.0.0.1 localhost";
|
domain=WORKGROUP
|
||||||
# "hosts deny" = "0.0.0.0/0";
|
password=${config.sops.placeholder."nas/password"}
|
||||||
# "guest account" = "nobody";
|
'';
|
||||||
# "map to guest" = "bad user";
|
};
|
||||||
# };
|
fileSystems."/volumes/nas" = {
|
||||||
#
|
device = "//tsuba.darksailor.dev/nas";
|
||||||
# public = {
|
fsType = "cifs";
|
||||||
# "path" = "/media";
|
|
||||||
# "browseable" = "yes";
|
options = let
|
||||||
# "read only" = "no";
|
options = "nofail,x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
|
||||||
# "guest ok" = "yes";
|
uid = toString config.users.users.servius.uid;
|
||||||
# "create mask" = "0644";
|
gid = toString config.users.groups.servius.gid;
|
||||||
# "directory mask" = "0755";
|
check = lib.asserts.assertMsg (
|
||||||
# # "force user" = "username";
|
uid != "" && gid != ""
|
||||||
# # "force group" = "groupname";
|
) "User ${device.user} must have uid ang gid set to mount NAS as user.";
|
||||||
# };
|
in
|
||||||
# };
|
lib.optionals check ["${options},credentials=${config.sops.templates."nas-credentials".path},uid=${uid},gid=${gid}"];
|
||||||
# };
|
};
|
||||||
# samba-wsdd = {
|
|
||||||
# enable = true;
|
|
||||||
# openFirewall = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
networking.firewall.allowPing = true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,5 +13,6 @@
|
|||||||
importOXRRuntimes = true;
|
importOXRRuntimes = true;
|
||||||
};
|
};
|
||||||
highPriority = true;
|
highPriority = true;
|
||||||
|
# package = pkgs.wivrn-nightly;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -159,6 +159,7 @@
|
|||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
networking.firewall.allowedTCPPorts = [22 80 443];
|
networking.firewall.allowedTCPPorts = [22 80 443];
|
||||||
|
networking.firewall.allowedUDPPorts = [8766 27016 9700];
|
||||||
|
|
||||||
# Copy the NixOS configuration file and link it from the resulting system
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
|||||||
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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
# ./games
|
./games
|
||||||
# ./headscale.nix
|
# ./headscale.nix
|
||||||
# ./llama.nix
|
./llms.nix
|
||||||
# ./monitoring.nix
|
# ./monitoring.nix
|
||||||
# ./paperless.nix
|
# ./paperless.nix
|
||||||
|
./navidrome.nix
|
||||||
./shitpost.nix
|
./shitpost.nix
|
||||||
./atuin.nix
|
./atuin.nix
|
||||||
./authelia.nix
|
./authelia.nix
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
./resolved.nix
|
./resolved.nix
|
||||||
./searxng.nix
|
./searxng.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
|
./kellnr.nix
|
||||||
];
|
];
|
||||||
services = {
|
services = {
|
||||||
nix-serve = {
|
nix-serve = {
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
{...}: {
|
{pkgs, ...}: {
|
||||||
imports = [
|
imports = [
|
||||||
# ./minecraft.nix
|
# ./minecraft.nix
|
||||||
# ./satisfactory.nix
|
# ./satisfactory.nix
|
||||||
# ./terraria.nix
|
./terraria.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
steamcmd
|
||||||
|
steam-tui
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
0
nixos/tako/services/games/hytale.nix
Normal file
0
nixos/tako/services/games/hytale.nix
Normal file
@@ -1,7 +1,9 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
services.terraria = {
|
services.terraria = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# port = 7777;
|
|
||||||
autoCreatedWorldSize = "large";
|
autoCreatedWorldSize = "large";
|
||||||
|
secure = true;
|
||||||
|
openFirewall = true;
|
||||||
|
password = "foobar12";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user