Compare commits

..

78 Commits

Author SHA1 Message Date
cbd4e7b4bb feat: disable prometheus for homeassistant
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-03-14 17:23:53 +05:30
a1057c5954 feat: added aria2
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m26s
2026-03-14 00:20:00 +05:30
2409574330 feat: Update flakes 2026-03-13 16:40:31 +05:30
6b09de5afc feat: Remove discord 2026-03-12 23:13:46 +05:30
e5ca18d368 feat: Update cinny to 4.11.1 2026-03-12 17:39:27 +05:30
68ac29b68b feat: Make /var a partition
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m25s
2026-03-12 16:35:16 +05:30
e89003a063 feat: added ironclaw 2026-03-12 13:40:10 +05:30
62072e71ea feat: Update cinny
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-03-11 13:32:24 +05:30
6bfb3286e3 feat: Remove openclaw
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-03-11 13:10:56 +05:30
325705f4cb feat: Disable ollama for shiro (mlx not working)
Some checks failed
Flake checker / Build Nix targets (push) Has been cancelled
2026-03-11 13:08:17 +05:30
96a92bd67f feat: Update openclaw stuff
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m22s
2026-03-11 12:45:24 +05:30
b17b2ab977 feat: Add openclaw for shiro
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m25s
2026-03-11 12:20:20 +05:30
2d2a7e6765 fix: Fixed the syntax for adding sunshine-beta and remove some packages
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m28s
2026-03-10 13:32:28 +05:30
a9dfdccf63 feat: Added sunshine in macos
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m30s
2026-03-09 20:12:17 +05:30
8a1ed7b0ab feat: Update cinny
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m28s
2026-03-09 17:20:22 +05:30
04a9d2ce76 chore: Remove iamb doesn't build on darwin
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m29s
2026-03-09 17:11:07 +05:30
d4d9e715ff chore: disable zed, yt-dlp and autossh scripts
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m26s
2026-03-09 16:56:19 +05:30
3b23c25509 feat: Update stuff
Some checks failed
Flake checker / Build Nix targets (push) Has been cancelled
2026-03-09 16:54:14 +05:30
0874bb6698 feat: Added stuff 2026-03-07 22:43:13 +05:30
316bffb9f5 feat: Remove deprecated togglesplit layout 2026-03-07 04:45:28 +05:30
b19be561bf feat: Update hyprland and add iamb 2026-03-07 04:31:44 +05:30
452426f363 feat: Added element
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m24s
2026-03-07 02:14:01 +05:30
a50801f5bb feat: Move to git lfs 2026-03-06 18:09:56 +05:30
dee3da3b12 feat: Update to nextcloud and tangled 2026-03-06 18:05:48 +05:30
8cdb41674c feat: Update wallpapers
All checks were successful
Flake checker / Build Nix targets (push) Successful in 22m43s
2026-03-05 18:04:01 +05:30
eaf994c5b5 feat: Remove lfs
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m29s
2026-03-05 02:48:26 +05:30
ccc7116c3f fix: possible fix for unreachable tangled
Some checks failed
Flake checker / Build Nix targets (push) Has been cancelled
2026-03-05 02:44:38 +05:30
7be66a5d2f feat: Added tangled 2026-03-05 02:00:19 +05:30
686501d464 feat: Added more zen search options and khal views
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m24s
2026-03-04 20:07:00 +05:30
09686e1ee6 feat: Disable stylix for global fish config
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-03-04 17:51:21 +05:30
7caf921746 feat: Generate completions for fish and sync khal properly 2026-03-04 17:43:52 +05:30
7b86a1cb21 feat: Added stuff to zen
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m28s
2026-03-04 15:30:05 +05:30
4f18892d1b feat: Added commented out ciny 2026-03-02 15:49:49 +05:30
580fcac817 feat: re-generated spaces
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m25s
2026-03-02 01:52:21 +05:30
8364bbb3cb fix: Cleanup Warnings
Some checks failed
Flake checker / Build Nix targets (push) Has been cancelled
2026-03-02 01:44:28 +05:30
e0e7f514ec feat(nixify): add home package and update lock entries
Some checks failed
Flake checker / Build Nix targets (push) Has been cancelled
2026-03-02 01:43:50 +05:30
82f69166c5 feat: Update caddy hash
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m34s
2026-03-02 01:16:54 +08:00
dce2e160da feat: Enable all substituters in all machines
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m31s
2026-03-01 21:35:46 +05:30
b10e5253f8 feat: Update all flakes
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-03-01 20:31:34 +05:30
d4a0ab60cf feat(programs): add codex
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m22s
2026-02-27 16:12:44 +05:30
5269b2ee10 feat(nix): add download buffer size config to NixOS and Darwin configuration files
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m26s
2026-02-27 12:36:33 +05:30
d9c9b55d49 feat: Automatically run fish if bash is in interactive mode
Some checks failed
Flake checker / Build Nix targets (push) Has been cancelled
2026-02-27 12:35:12 +05:30
fd5e28b368 feat: Added personal website
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-02-25 16:53:49 +05:30
da793b82e7 fix: Add cinny in matrix imports 2026-02-25 15:24:26 +05:30
c2e4fbb59f chore: move cinny to a different file
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m24s
2026-02-24 20:22:14 +05:30
25a7f185bc feat: Remove unused inputs
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m28s
2026-02-24 18:33:47 +05:30
044a0156df feat: Remove unused overlays
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-02-24 17:32:55 +05:30
4e0cb41780 feat: Update to cinny 4.10.5
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m25s
2026-02-24 17:03:46 +05:30
34737a5aef chore(kuro): remove unused macOS casks from Homebrew configuration
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-02-24 14:31:56 +05:30
81ea7f695e feat: Update cinny to use hashRouter and update caddy reverse proxy
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m22s
2026-02-24 13:50:59 +05:30
ea7707d050 feat: Use Grafana secretKey 2026-02-24 13:24:30 +05:30
30a54caa03 refactor(matrix): update matrix config to Cinny
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m32s
2026-02-24 13:06:04 +05:30
3ed6781ae1 chore: enable zen-browser flake on all devices
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m29s
2026-02-24 11:11:11 +05:30
3418e577c5 docs(AGENTS.md): update build & deploy commands and example IP 2026-02-24 10:29:37 +05:30
2741e25585 feat: enable stuff
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m23s
2026-02-23 18:42:31 +05:30
e9aed100af Merge pull request 'feat: add matrix-rtc' (#1) from matrix-rtc into master
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m28s
Reviewed-on: #1
2026-02-23 19:42:06 +08:00
1ac96316ea feat: re-enable affine service
All checks were successful
Flake checker / Build Nix targets (pull_request) Successful in 9m32s
2026-02-23 17:05:03 +05:30
8d636ce194 refactor(matrix): simplify LiveKit configuration to use services.livekit and services.lk-jwt-service 2026-02-23 16:32:14 +05:30
bbeed99f43 refactor(affine): use Docker network option instead of --network flag 2026-02-23 16:05:09 +05:30
7e6ece1b0d feat(matrix): add LiveKit support with firewall and systemd services 2026-02-23 15:49:50 +05:30
60952a0e7f feat(programs): add yq package to home programs 2026-02-23 14:43:49 +05:30
738013df66 refactor: update mbsync settings for Fastmail and Neomutt 2026-02-22 15:32:38 +05:30
34160d0de4 feat: Updated notifications
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m27s
2026-02-22 15:16:10 +05:30
02b8a16f41 feat(cargo): add pkgs metadata alias
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m33s
2026-02-20 03:42:46 +05:30
684f6fdea5 fix(apps): make playerctl conditional to ryu device only 2026-02-20 03:42:44 +05:30
7ef1785a0f feat: Added caldav 2026-02-20 03:08:24 +05:30
49c0c607d8 feat: Added stuff 2026-02-20 02:01:24 +05:30
ab52b423ee feat: Move stuff into programs / apps in ryu 2026-02-19 23:03:52 +05:30
f852a73d47 feat: Updated to latest nixpkgs-unstable 2026-02-19 21:16:08 +05:30
998ebc1164 feat(programs): add jujutsu(jj) package
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m41s
2026-02-19 13:51:12 +05:30
9acb378e5f feat: disable some services and disable root login from ssh altogether 2026-02-19 13:41:40 +05:30
dca434c0ba Enable Audacity and add local Ollama provider configuration
- Remove comment from audacity.nix to enable Audacity application
- Add Ollama provider configuration for local LLM access
- Configure glm-4.7-flash model with custom base URL
2026-02-19 00:19:08 +05:30
c22ff38874 feat: Added affine 2026-02-18 18:03:06 +05:30
0591868be3 feat: Added affine server 2026-02-18 17:23:05 +05:30
e249f13313 feat: Vertical to horizontal secondary monitor 3
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m37s
2026-02-16 03:17:34 +05:30
4ecf045deb feat: Added ip target for ignore ip 2026-02-16 02:48:03 +05:30
05d1890b01 feat: Added steamdeck deploy target
All checks were successful
Flake checker / Build Nix targets (push) Successful in 9m35s
2026-02-16 02:21:06 +05:30
2babff5576 feat: Added cloudflare cli to add / remove dns entries from cli 2026-02-12 19:04:13 +05:30
95 changed files with 2131 additions and 2116 deletions

View File

@@ -4,28 +4,8 @@ This repository contains NixOS, nix-darwin, and Home Manager configurations in N
## Build, Test, and Deployment Commands ## Build, Test, and Deployment Commands
### Build and Apply Configurations ### Build and Apply Configurations & Deploy to Remote Machines
Can use deploy for both local and remote hosts
**Linux (NixOS):**
```bash
just build # Build configuration
just install cores='32' # Apply with 32 cores
sudo nixos-rebuild test --fast --flake . # Test without activation
sudo nixos-rebuild switch --rollback --flake . # Rollback
```
**macOS (nix-darwin):**
```bash
just build # Build configuration
just install # Apply configuration
```
**Home Manager:**
```bash
just home
```
### Deploy to Remote Machines (deploy-rs)
```bash ```bash
deploy -s .#ryu # Desktop (x86_64-linux) deploy -s .#ryu # Desktop (x86_64-linux)
@@ -35,6 +15,23 @@ deploy -s .#kuro # MacBook M4 Pro (aarch64-darwin)
deploy -s .#shiro # Mac Mini M4 (aarch64-darwin) deploy -s .#shiro # Mac Mini M4 (aarch64-darwin)
``` ```
**Linux (NixOS):**
```bash
deploy -s .#ryu
deploy -s .#tako
deploy -s .#tako --builders '' --cores 32 # with no other builders and 32 cores
deploy -s .#ryu --max-jobs 4 --cores 32 # use 32 cores and 4 parallel derivations
sudo nixos-rebuild test --fast --flake . # Test without activation
sudo nixos-rebuild switch --rollback --flake . # Rollback
```
**macOS (nix-darwin):**
```bash
deploy -s .#kuro
deploy -s .#shiro
sudo nix-darwin test --fast --flake .
```
### Validation and Formatting ### Validation and Formatting
```bash ```bash
@@ -162,6 +159,11 @@ sessionVariables.BROWSER = if device.isDarwin then "open" else "xdg-open";
just add program myprogram # Creates home/programs/myprogram.nix and adds import just add program myprogram # Creates home/programs/myprogram.nix and adds import
``` ```
### Adding a new dns entry
```bash
cfcli add --type A foobar.bazbar.biz 100.102.64.19
```
### Creating a Module ### Creating a Module
1. Determine location: `modules/nixos/`, `modules/darwin/`, or `modules/home/` 1. Determine location: `modules/nixos/`, `modules/darwin/`, or `modules/home/`

View File

@@ -22,6 +22,7 @@
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
# "mirai:bcVPoFGBZ0i7JAKMXIqLj2GY3CulLC4kP7rQyqes1RM=" # "mirai:bcVPoFGBZ0i7JAKMXIqLj2GY3CulLC4kP7rQyqes1RM="
]; ];
download-buffer-size = 524288000;
}; };
extraOptions = '' extraOptions = ''
build-users-group = nixbld build-users-group = nixbld

View File

@@ -6,10 +6,7 @@
casks = [ casks = [
"1password" "1password"
"lunar" "lunar"
"orcaslicer"
"raycast" "raycast"
"zed"
"zen"
]; ];
}; };
} }

View File

@@ -2,15 +2,12 @@
homebrew = { homebrew = {
enable = true; enable = true;
brews = [ brews = [
"docker-compose"
]; ];
casks = [ casks = [
"1password" "1password"
"docker"
"raycast" "raycast"
"lunar" "lunar"
"orcaslicer" "orcaslicer"
"zed"
"zen" "zen"
]; ];
}; };

View File

@@ -1,15 +1,18 @@
{...}: { {...}: {
imports = [ imports = [
# ../../../modules/darwin/caddy # ../../../modules/darwin/caddy
./yabai.nix
./skhd.nix
./tailscale.nix
./autossh.nix
# ./caddy.nix
./sops.nix
# ./lmstudio.nix
# ./colima.nix
# ./zerotier.nix
# ./aerospace.nix # ./aerospace.nix
# ./caddy.nix
# ./colima.nix
# ./lmstudio.nix
# ./zerotier.nix
./autossh.nix
./skhd.nix
./sops.nix
./sunshine.nix
./tailscale.nix
./yabai.nix
]; ];
} }

View File

@@ -0,0 +1,10 @@
{...}: {
homebrew = {
taps = [
"lizardbyte/homebrew"
];
brews = [
"lizardbyte/homebrew/sunshine-beta"
];
};
}

View File

@@ -5,14 +5,6 @@
... ...
}: { }: {
nodes = { nodes = {
mirai = {
hostname = "mirai.darksailor.dev";
profiles.system = {
sshUser = "fs0c131y";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.mirai;
user = "root";
};
};
tsuba = { tsuba = {
hostname = "tsuba.darksailor.dev"; hostname = "tsuba.darksailor.dev";
profiles.system = { profiles.system = {
@@ -55,13 +47,13 @@
user = "root"; user = "root";
}; };
}; };
# deck = { deck = {
# hostname = "steamdeck"; hostname = "sdeck";
# profiles.system = { profiles.system = {
# sshUser = "deck"; sshUser = "deck";
# path = deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.deck; path = deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.deck;
# user = "deck"; user = "deck";
# }; };
# }; };
}; };
} }

2213
flake.lock generated

File diff suppressed because it is too large Load Diff

126
flake.nix
View File

@@ -17,10 +17,6 @@
url = "github:nix-community/stylix"; url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
stylix-stable = {
url = "github:nix-community/stylix/release-25.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
home-manager-stable = { home-manager-stable = {
url = "github:nix-community/home-manager/release-25.11"; url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs-stable"; inputs.nixpkgs.follows = "nixpkgs-stable";
@@ -51,26 +47,10 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nur.url = "github:nix-community/nur"; nur.url = "github:nix-community/nur";
hyprland = {
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprlock = {
url = "github:hyprwm/hyprlock";
inputs.nixpkgs.follows = "nixpkgs";
};
zjstatus = { zjstatus = {
url = "github:dj95/zjstatus"; url = "github:dj95/zjstatus";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
openapi-tui = {
url = "github:zaghaghi/openapi-tui";
flake = false;
};
musnix = { musnix = {
url = "github:musnix/musnix"; url = "github:musnix/musnix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -83,26 +63,10 @@
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
csshacks = {
url = "github:MrOtherGuy/firefox-csshacks";
flake = false;
};
nno = { nno = {
url = "github:nvim-neorg/nixpkgs-neorg-overlay"; url = "github:nvim-neorg/nixpkgs-neorg-overlay";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
pets = {
url = "github:giusgad/pets.nvim";
flake = false;
};
rest-nvim = {
url = "github:rest-nvim/rest.nvim";
flake = false;
};
neogit = {
url = "github:NeogitOrg/neogit/nightly";
flake = false;
};
d2 = { d2 = {
url = "github:terrastruct/d2-vim"; url = "github:terrastruct/d2-vim";
flake = false; flake = false;
@@ -127,25 +91,6 @@
url = "github:pest-parser/tree-sitter-pest"; url = "github:pest-parser/tree-sitter-pest";
flake = false; flake = false;
}; };
navigator = {
url = "github:ray-x/navigator.lua";
flake = false;
};
guihua = {
url = "github:ray-x/guihua.lua";
flake = false;
};
ghostty = {
url = "github:ghostty-org/ghostty";
};
typr = {
url = "github:nvzone/typr";
flake = false;
};
volt = {
url = "github:nvzone/volt";
flake = false;
};
arion = { arion = {
url = "github:hercules-ci/arion"; url = "github:hercules-ci/arion";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -155,9 +100,9 @@
}; };
zen-browser = { zen-browser = {
url = "github:0xc000022070/zen-browser-flake"; url = "github:0xc000022070/zen-browser-flake";
# IMPORTANT: we're using "libgbm" and is only available in unstable so ensure # IMPORTANT: To ensure compatibility with the latest Firefox version, use nixpkgs-unstable.
# to have it up-to-date or simply don't specify the nixpkgs input
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
}; };
anyrun = { anyrun = {
@@ -169,18 +114,10 @@
url = "github:uttarayan21/anyrun-hyprwin"; url = "github:uttarayan21/anyrun-hyprwin";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
anyrun-rink = {
url = "github:uttarayan21/anyrun-rink";
inputs.nixpkgs.follows = "nixpkgs";
};
onepassword-shell-plugins = { onepassword-shell-plugins = {
url = "github:1Password/shell-plugins"; url = "github:1Password/shell-plugins";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
zeronsd = {
url = "github:uttarayan21/zeronsd";
inputs.nixpkgs.follows = "nixpkgs";
};
tmux-float = { tmux-float = {
url = "github:uttarayan21/tmux-float"; url = "github:uttarayan21/tmux-float";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -199,24 +136,6 @@
# url = "path:/home/servius/Projects/ALVR"; # url = "path:/home/servius/Projects/ALVR";
# inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
# }; # };
ik_llama = {
url = "github:ikawrakow/ik_llama.cpp?submodules=1";
# submodules = true;
inputs.nixpkgs.follows = "nixpkgs";
};
llama-cpp = {
# url = "https://github.com/ggml-org/llama.cpp";
url = "github:ggml-org/llama.cpp/b6178?submodules=1";
inputs.nixpkgs.follows = "nixpkgs";
};
yabai = {
url = "github:koekeishiya/yabai";
flake = false;
};
nix-auth = {
url = "github:numtide/nix-auth";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs-xr = { nixpkgs-xr = {
url = "github:nix-community/nixpkgs-xr"; url = "github:nix-community/nixpkgs-xr";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -241,16 +160,33 @@
url = "github:vicinaehq/vicinae"; url = "github:vicinaehq/vicinae";
# inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
}; };
wivrn = {
url = "github:uttarayan21/wivrn?submodules=1";
inputs.nixpkgs.follows = "nixpkgs";
};
eilmeldung = { eilmeldung = {
url = "github:christo-auer/eilmeldung"; url = "github:christo-auer/eilmeldung";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
hytale-launcher = { servius-website = {
url = "github:JPyke3/hytale-launcher-nix"; url = "git+https://git.darksailor.dev/servius/servius.neocities.org";
inputs.nixpkgs.follows = "nixpkgs";
};
nixify = {
url = "github:uttarayan21/nixify";
inputs.nixpkgs.follows = "nixpkgs";
};
tangled-core = {
url = "git+https://tangled.org/tangled.org/core";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland = {
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
iamb = {
url = "github:ulyssa/iamb/latest";
inputs.nixpkgs.follows = "nixpkgs";
};
cinny = {
url = "github:cinnyapp/cinny/dev";
flake = false;
}; };
}; };
@@ -429,16 +365,20 @@
}; };
config.allowUnfree = true; config.allowUnfree = true;
}; };
cratesNix = inputs.crates-nix.mkLib {inherit pkgs;};
in { in {
# packages = rec {
# default = neovim;
# neovim = pkgs.nixvim.makeNixvim (pkgs.callPackage ./neovim);
# };
devShells = { devShells = {
default = pkgs.mkShell { default = pkgs.mkShell {
packages = with pkgs; [sops just openssl ast-grep]; packages = with pkgs; [sops just openssl ast-grep];
}; };
}; };
packages = {
default = cratesNix.buildCrate "ironclaw" {
nativeBuildInputs = [pkgs.pkg-config];
buildInputs = [pkgs.openssl];
doCheck = false;
};
};
} }
); );
} }

View File

@@ -5,43 +5,65 @@
}: { }: {
sops = { sops = {
secrets."accounts/mail/fastmail" = {}; secrets."accounts/mail/fastmail" = {};
secrets."accounts/calendar/fastmail" = {};
}; };
accounts.email = { accounts = {
maildirBasePath = "Mail"; email = {
accounts = { maildirBasePath = "Mail";
fastmail = rec { accounts = {
maildir = { fastmail = rec {
path = "fastmail"; maildir = {
path = "fastmail";
};
primary = true;
address = "email@uttarayan.me";
aliases = ["servius@darksailor.dev"];
userName = address;
realName = "Uttarayan Mondal";
imap = {
host = "imap.fastmail.com";
port = 993;
tls.enable = true;
# authentication = "login";
};
smtp = {
host = "smtp.fastmail.com";
port = 465;
tls.enable = true;
};
passwordCommand = ["cat" "${config.sops.secrets."accounts/mail/fastmail".path}"];
mbsync = {
enable = true;
create = "both";
};
}; };
primary = true; };
address = "email@uttarayan.me"; };
aliases = ["servius@darksailor.dev"]; calendar = {
userName = address; basePath = "Calendar";
realName = "Uttarayan Mondal"; accounts = {
imap = { fastmail = {
host = "imap.fastmail.com"; remote = {
port = 993; url = "https://caldav.fastmail.com/dav/calendars/user/email@uttarayan.me";
tls.enable = true; userName = "email@uttarayan.me";
# authentication = "login"; passwordCommand = ["cat" "${config.sops.secrets."accounts/calendar/fastmail".path}"];
}; type = "caldav";
smtp = { };
host = "smtp.fastmail.com"; khal = {
port = 465; enable = true;
tls.enable = true; addresses = ["email@uttarayan.me"];
}; type = "discover";
imapnotify = { };
enable = true; vdirsyncer = {
}; enable = true;
passwordCommand = ["cat" "${config.sops.secrets."accounts/mail/fastmail".path}"]; conflictResolution = "remote wins";
mbsync = { collections = ["from a"];
enable = true; metadata = ["color" "displayname"];
create = "both"; };
}; };
}; };
}; };
}; };
programs.mbsync.enable = true;
services.mbsync.enable = pkgs.stdenv.isLinux;
# accounts.email.accounts.<name>.mbsync.create # accounts.email.accounts.<name>.mbsync.create
# services.mbsync.enable = true; # services.mbsync.enable = true;
} }

9
home/apps/affine.nix Normal file
View File

@@ -0,0 +1,9 @@
{
pkgs,
lib,
...
}: {
home.packages = lib.optionals pkgs.stdenv.isLinux [
pkgs.affine
];
}

1
home/apps/cinny.nix Normal file
View File

@@ -0,0 +1 @@
{pkgs, ...}: {home.packages = [pkgs.cinny-desktop];}

View File

@@ -7,42 +7,47 @@ lib.optionalAttrs device.hasGui {
imports = [ imports = [
# ./audacity.nix # ./audacity.nix
# ./bottles.nix # ./bottles.nix
# ./cinny.nix
# ./cursor.nix # ./cursor.nix
# ./gimp.nix # ./gimp.nix
# ./guitarix.nix # ./guitarix.nix
# ./ida.nix # ./ida.nix
# ./jellyflix.nix # ./jellyflix.nix
# ./kicad.nix # ./kicad.nix
# ./lmstudio.nix
# ./neovide.nix # ./neovide.nix
# ./openscad.nix # ./openscad.nix
# ./orcaslicer.nix
# ./pcsx2.nix # ./pcsx2.nix
# ./prismlauncher.nix
# ./rpcs3.nix # ./rpcs3.nix
# ./shadps4.nix
# ./thunderbird.nix # ./thunderbird.nix
# ./tsukimi.nix # ./tsukimi.nix
# ./vial.nix # ./vial.nix
# ./vlc.nix
# ./vscode.nix # ./vscode.nix
# ./zen.nix
./moonlight.nix
# ./zed.nix
./affine.nix
./blueman.nix ./blueman.nix
./chromium.nix ./chromium.nix
./discord.nix # ./discord.nix
./firefox.nix ./firefox.nix
./ghostty.nix ./ghostty.nix
./hyprpicker.nix ./hyprpicker.nix
./kitty.nix ./kitty.nix
./lmstudio.nix ./matrix.nix
./mpv.nix ./mpv.nix
./nextcloud.nix ./nextcloud.nix
./matrix.nix
./obs-studio.nix ./obs-studio.nix
./orcaslicer.nix
./prismlauncher.nix
./shadps4.nix
./slack.nix ./slack.nix
./vicinae.nix ./vicinae.nix
./vlc.nix
./wezterm.nix ./wezterm.nix
./zathura.nix ./zathura.nix
./zed.nix
./zen.nix ./zen.nix
]; ];
} }

View File

@@ -3,13 +3,13 @@
lib, lib,
... ...
}: { }: {
home.packages = lib.optionals pkgs.stdenv.isLinux [ # home.packages = lib.optionals pkgs.stdenv.isLinux [
(pkgs.discord.override { # (pkgs.discord.override {
withOpenASAR = true; # withOpenASAR = true;
withVencord = true; # withVencord = true;
}) # })
# pkgs.vesktop # # pkgs.vesktop
# pkgs.discord-canary # # pkgs.discord-canary
# pkgs.discord-ptb # # pkgs.discord-ptb
]; # ];
} }

View File

@@ -8,11 +8,8 @@
stylix.targets.kitty.enable = false; stylix.targets.kitty.enable = false;
programs.kitty = { programs.kitty = {
enable = true; enable = true;
# enable = false;
font = { font = {
# name = "FiraCode Nerd Font Mono";
name = "Hasklug Nerd Font Mono"; name = "Hasklug Nerd Font Mono";
# name = "Monaspace Krypton Var Light";
size = lib.mkForce 13; size = lib.mkForce 13;
}; };
settings = { settings = {

View File

@@ -6,7 +6,7 @@
}: { }: {
home.packages = lib.optionals (device.is "ryu") [ home.packages = lib.optionals (device.is "ryu") [
pkgs.fluffychat pkgs.fluffychat
pkgs.fractal pkgs.element-desktop
# pkgs.quaternion # pkgs.quaternion
]; ];
} }

8
home/apps/moonlight.nix Normal file
View File

@@ -0,0 +1,8 @@
{
lib,
pkgs,
device,
...
}: {
home.packages = lib.optionals (device.name == "ryu") [pkgs.moonlight-qt];
}

View File

@@ -8,20 +8,20 @@
loop-playlist = "inf"; loop-playlist = "inf";
}; };
profiles = { profiles = {
hdr = { # hdr = {
vo = "gpu-next"; # vo = "gpu-next";
gpu-api = "vulkan"; # gpu-api = "vulkan";
hdr-compute-peak = "yes"; # hdr-compute-peak = "yes";
hdr-peak-detect = "yes"; # hdr-peak-detect = "yes";
target-peak = 400; # target-peak = 400;
target-prim = "bt.2020"; # target-prim = "bt.2020";
target-trc = "pq"; # target-trc = "pq";
inverse-tone-mapping = "yes"; # inverse-tone-mapping = "yes";
tone-mapping = "spline"; # tone-mapping = "spline";
tone-mapping-mode = "auto"; # tone-mapping-mode = "auto";
target-colorspace-hint = "auto"; # target-colorspace-hint = "auto";
gamut-mapping = "desaturate"; # gamut-mapping = "desaturate";
}; # };
}; };
}; };
} }

View File

@@ -12,7 +12,9 @@
autoStart = true; autoStart = true;
}; };
}; };
home.packages = with pkgs; [ home.packages = with pkgs;
pulseaudio lib.optionals (device.is "ryu") [
]; # pulseaudio
playerctl
];
} }

View File

@@ -2,26 +2,151 @@
pkgs, pkgs,
inputs, inputs,
device, device,
config,
... ...
}: { }: {
imports = [ imports = [
inputs.zen-browser.homeModules.beta inputs.zen-browser.homeModules.beta
]; ];
programs.zen-browser.darwinDefaultsId = "org.mozilla.firefox.plist";
programs.zen-browser = { programs.zen-browser = {
enable = device.isLinux; enable = true;
profiles.default = { profiles.default = rec {
containersForce = true;
containers = {
Personal = {
color = "purple";
icon = "fingerprint";
id = 1;
};
Work = {
color = "blue";
icon = "briefcase";
id = 2;
};
Shopping = {
color = "yellow";
icon = "dollar";
id = 3;
};
};
spacesForce = true;
spaces = let
containers = config.programs.zen-browser.profiles."default".containers;
in {
"Personal" = {
id = "0b4dab19-9b39-4f2c-8ad1-0268d9fa2e49";
icon = "👤";
container = containers."Personal".id;
position = 1000;
};
"Work" = {
id = "8f687163-6b15-4c3c-885f-8ffe465b386f";
icon = "💼";
container = containers."Work".id;
position = 2000;
};
"Shopping" = {
id = "74f46a1b-cdd7-408c-98d7-382a2b11bd51";
icon = "💸";
container = containers."Shopping".id;
position = 3000;
};
};
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
privacy-badger
violentmonkey
tridactyl
clearurls clearurls
onepassword-password-manager floccus
ublock-origin
i-dont-care-about-cookies i-dont-care-about-cookies
keepa keepa
onepassword-password-manager
privacy-badger
sponsorblock sponsorblock
floccus tridactyl
ublock-origin
violentmonkey
]; ];
search = {
force = true;
default = "ddg";
engines = {
mynixos = {
name = "My NixOS";
urls = [
{
template = "https://mynixos.com/search?q={searchTerms}";
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@nx"]; # Keep in mind that aliases defined here only work if they start with "@"
};
hm = {
name = "Home Manager Options";
urls = [
{
template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master";
}
];
definedAliases = ["@hm"];
};
nv = {
name = "NixVim";
urls = [
{
template = "https://nix-community.github.io/nixvim/search";
params = [
{
name = "query";
value = "{searchTerms}";
}
];
}
];
definedAliases = ["@nv"];
};
lib = {
name = "Lib.rs";
urls = [
{
template = "https://lib.rs/search";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
];
definedAliases = ["@lib"];
};
searchix = {
name = "Searchix";
urls = [
{
template = "https://searchix.ovh/?query={searchTerms}";
}
];
definedAliases = ["sx"];
};
};
};
pins = {
dashboard = {
id = "d163f090-67b7-47d2-8f76-7d638b9f742b";
workspace = spaces.Personal.id;
url = "https://dashboard.darksailor.dev";
isEssential = true;
position = 101;
};
github = {
id = "db2f3e36-9279-4b8d-8b5d-52a90f34ea0d";
workspace = spaces.Personal.id;
url = "https://github.com";
isEssential = true;
position = 102;
};
};
pinsForce = true;
}; };
nativeMessagingHosts = [pkgs.tridactyl-native]; nativeMessagingHosts = [pkgs.tridactyl-native];
policies = { policies = {

View File

@@ -27,6 +27,7 @@
home-manager = { home-manager = {
enable = true; enable = true;
}; };
man.generateCaches = true;
}; };
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;

View File

@@ -0,0 +1,17 @@
{pkgs, ...}: {
programs.khal = {
enable = true;
settings = {
default = {
# default_calendar = "fastmail";
};
view = {
agenda_event_format = "{calendar-color}{cancelled}{start-end-time-style} {title}{repeat-symbol}{reset}";
};
};
};
programs.qcal.enable = true;
programs.vdirsyncer.enable = true;
services.vdirsyncer.enable = true;
accounts.calendar.accounts.fastmail.qcal.enable = true;
}

View File

@@ -1,13 +1,8 @@
{ {...}: {
pkgs,
lib,
device,
...
}: {
programs. programs.
carapace = { carapace = {
enable = false; enable = false;
enableFishIntegration = true; enableFishIntegration = false;
enableNushellIntegration = true; enableNushellIntegration = true;
}; };
} }

View File

@@ -4,7 +4,9 @@
cratesNix, cratesNix,
... ...
}: let }: let
cargo-credential-1password = cratesNix.buildCrate "cargo-credential-1password" {}; cargo-credential-1password = cratesNix.buildCrate "cargo-credential-1password" {
meta.mainProgram = "cargo-credential-1password";
};
in in
lib.mkIf (!device.isServer) { lib.mkIf (!device.isServer) {
home.file.".cargo/config.toml".text = home.file.".cargo/config.toml".text =
@@ -13,6 +15,7 @@ in
[alias] [alias]
lldb = ["with", "rust-lldb", "--"] lldb = ["with", "rust-lldb", "--"]
t = ["nextest", "run"] t = ["nextest", "run"]
pkgs = ["metadata", "--no-deps", "--format-version", "1"]
[net] [net]
git-fetch-with-cli = true git-fetch-with-cli = true

27
home/programs/cfcli.nix Normal file
View File

@@ -0,0 +1,27 @@
{
pkgs,
lib,
config,
...
}: {
sops.secrets."cloudflare/darksailor_dev_api_key" = {};
home.packages = [
# (pkgs.stdenv.mkDerivation {
# pname = "cfcli";
# version = "0.1.0";
# buildInputs = [pkgs.cloudflare-cli];
# nativeBuildInputs = [pkgs.makeWrapper];
# installPhase = ''
# $out/bin/cfcli \
# --run "export CF_API_KEY=\`cat -v ${config.sops.secrets."cloudflare/darksailor_dev_api_key".path}\`"
# '';
# })
(pkgs.writeShellScriptBin
"cfcli"
''
#!/bin/sh
export CF_API_KEY="$(cat -v ${config.sops.secrets."cloudflare/darksailor_dev_api_key".path})"
exec ${pkgs.cloudflare-cli}/bin/cfcli "$@"
'')
];
}

1
home/programs/codex.nix Normal file
View File

@@ -0,0 +1 @@
{pkgs, ...}: {home.packages = [pkgs.codex];}

View File

@@ -7,6 +7,7 @@
# ./bluetui.nix # ./bluetui.nix
# ./goread.nix # ./goread.nix
# ./helix.nix # ./helix.nix
# ./iamb.nix
# ./magika.nix # ./magika.nix
# ./mpd.nix # ./mpd.nix
# ./mpris-scrobbler.nix # ./mpris-scrobbler.nix
@@ -19,6 +20,7 @@
# ./template.nix # ./template.nix
# ./tuifeed.nix # ./tuifeed.nix
# ./xh.nix # ./xh.nix
# ./yt-dlp.nix
# ./zellij.nix # ./zellij.nix
../../modules ../../modules
@@ -28,6 +30,7 @@
./alejandra.nix ./alejandra.nix
./aria2.nix ./aria2.nix
./ast-grep.nix ./ast-grep.nix
./attic.nix
./atuin.nix ./atuin.nix
./bat.nix ./bat.nix
./binwalk.nix ./binwalk.nix
@@ -35,8 +38,11 @@
./bottom.nix ./bottom.nix
./btop.nix ./btop.nix
./cachix.nix ./cachix.nix
./calendar.nix
./carapace.nix ./carapace.nix
./cargo.nix ./cargo.nix
./cfcli.nix
./codex.nix
./ddcbacklight.nix ./ddcbacklight.nix
./deploy-rs.nix ./deploy-rs.nix
./direnv.nix ./direnv.nix
@@ -55,11 +61,13 @@
./himalaya.nix ./himalaya.nix
./hyprshade.nix ./hyprshade.nix
./jq.nix ./jq.nix
./jujutsu.nix
./just.nix ./just.nix
./ncpamixer.nix ./ncpamixer.nix
./neomutt.nix ./neomutt.nix
./neovim.nix ./neovim.nix
./nix-index.nix ./nix-index.nix
./nixify.nix
./nushell.nix ./nushell.nix
./omnix.nix ./omnix.nix
./opencode.nix ./opencode.nix
@@ -76,8 +84,7 @@
./tmux.nix ./tmux.nix
./uv.nix ./uv.nix
./yazi.nix ./yazi.nix
./yt-dlp.nix ./yq.nix
./zoxide.nix ./zoxide.nix
./attic.nix
]; ];
} }

View File

@@ -1 +1,8 @@
{pkgs, ...}: {home.packages = [pkgs.deploy-rs.deploy-rs];} {
pkgs,
lib,
device,
...
}: {
home.packages = lib.optionals (device.is "ryu") [pkgs.deploy-rs.deploy-rs];
}

View File

@@ -23,6 +23,7 @@
j = "just --choose"; j = "just --choose";
# t = "zellij a -c --index 0"; # t = "zellij a -c --index 0";
t = "tmux"; t = "tmux";
neorg = "nvim -c ':Neorg index'";
}; };
shellAliases = { shellAliases = {
g = "git"; g = "git";
@@ -33,7 +34,7 @@
''; '';
# ${pkgs.spotify-player}/bin/spotify_player generate fish | source # ${pkgs.spotify-player}/bin/spotify_player generate fish | source
interactiveShellInit = '' interactiveShellInit = ''
if test -n "$TMUX"; ${lib.getExe pkgs.fastfetch} --logo-type sixel; else ${lib.getExe pkgs.fastfetch}; end if test -n "$TMUX"; ${lib.getExe pkgs.fastfetch} --logo-type kitty-icat; 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") ''
@@ -43,6 +44,16 @@
''} ''}
''; '';
}; };
home.shell.enableFishIntegration = true;
# programs.bash = {
# enable = true;
# initExtra = ''
# if [[ $- == *i* && -z "$FISH_VERSION" ]]; then
# ${lib.getExe pkgs.fish}
# fi
# '';
# };
} }
// lib.optionalAttrs (!(device.is "tsuba")) { // lib.optionalAttrs (!(device.is "tsuba")) {
stylix.targets.fish.enable = false; stylix.targets.fish.enable = false;

3
home/programs/iamb.nix Normal file
View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
home.packages = [pkgs.iamb];
}

View File

@@ -0,0 +1 @@
{pkgs, ...}: {home.packages = [pkgs.jujutsu];}

View File

@@ -1,4 +1,9 @@
{pkgs, ...}: { {pkgs, ...}: let
theme = builtins.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/neomutt/refs/heads/main/neomuttrc";
sha256 = "sha256:1q086p5maqwxa4gh6z8g7h3nfavdmkbql025ibdhglpz46hsq0hs";
};
in {
programs.neomutt = { programs.neomutt = {
enable = true; enable = true;
vimKeys = true; vimKeys = true;
@@ -6,6 +11,9 @@
sidebar = { sidebar = {
enable = true; enable = true;
}; };
extraConfig = ''
source ${theme}
'';
}; };
programs.notmuch = { programs.notmuch = {
enable = true; enable = true;
@@ -17,4 +25,38 @@
enable = true; enable = true;
neomutt.enable = true; neomutt.enable = true;
}; };
services.imapnotify = {
enable = true;
path = [pkgs.coreutils pkgs.isync pkgs.libnotify];
};
accounts.email.accounts.fastmail.imapnotify = {
enable = true;
boxes = ["Inbox"];
onNotify = "${pkgs.writeShellScript "mbsync-notify" ''
${pkgs.isync}/bin/mbsync $1
${pkgs.libnotify}/bin/notify-send "New Mail" "New email in $1"
''} %s";
};
programs.mbsync.enable = true;
services.mbsync.enable = pkgs.stdenv.isLinux;
# launchd.agents.mbsync = {
# 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";
# };
# };
} }

9
home/programs/nixify.nix Normal file
View File

@@ -0,0 +1,9 @@
{
pkgs,
inputs,
...
}: {
home.packages = [
inputs.nixify.packages.${pkgs.system}.default
];
}

View File

@@ -26,4 +26,5 @@
} }
''; '';
}; };
home.shell.enableNushellIntegration = true;
} }

View File

@@ -6,5 +6,20 @@
lib.optionalAttrs (device.is "ryu" || device.is "kuro") { lib.optionalAttrs (device.is "ryu" || device.is "kuro") {
programs.opencode = { programs.opencode = {
enable = true; enable = true;
settings.provider = {
ollama = {
models = {
"glm-4.7-flash" = {
# "_launch" = true;
name = "glm-4.7-flash";
};
};
name = "Ollama (local)";
npm = "@ai-sdk/openai-compatible";
options = {
baseURL = "https://ollama.darksailor.dev/v1";
};
};
};
}; };
} }

View File

@@ -16,11 +16,6 @@
user = "git"; user = "git";
host = "github.com"; host = "github.com";
}; };
# mirai = {
# user = "fs0c131y";
# hostname = "mirai.darksailor.dev";
# forwardAgent = true;
# };
tako = { tako = {
user = "servius"; user = "servius";
hostname = "tako.darksailor.dev"; hostname = "tako.darksailor.dev";

View File

@@ -17,5 +17,6 @@
cache_dir = config.home.homeDirectory + "/.cache/yazi/previews"; cache_dir = config.home.homeDirectory + "/.cache/yazi/previews";
}; };
}; };
shellWrapperName = "yy";
}; };
} }

1
home/programs/yq.nix Normal file
View File

@@ -0,0 +1 @@
{pkgs, ...}: {home.packages = [pkgs.yq];}

View File

@@ -36,11 +36,11 @@ in {
pkgs.writeShellApplication { pkgs.writeShellApplication {
name = "git-install-prepare-commit-msg"; name = "git-install-prepare-commit-msg";
text = '' text = ''
cp ${../scripts/prepare-commit-msg} .git/hooks/prepare-commit-msg ln -sf ${../scripts/prepare-commit-msg} .git/hooks/prepare-commit-msg
''; '';
} }
) )
(mkScript ../scripts/yt-dlp.sh (with pkgs; [yt-dlp])) # (mkScript ../scripts/yt-dlp.sh (with pkgs; [yt-dlp]))
(mkScript ../scripts/autossh.sh (with pkgs; [autossh openssh])) # (mkScript ../scripts/autossh.sh (with pkgs; [autossh openssh]))
]; ];
} }

View File

@@ -1,18 +1,20 @@
{...}: { {...}: {
imports = [ imports = [
./gtk.nix
./gui.nix
./hyprland.nix
./hyprmon.nix
./hyprpaper.nix
./ironbar
./kdeconnect.nix
./remmina.nix
# ./ollama.nix
./swaync.nix ./swaync.nix
./swayosd.nix ./swayosd.nix
./kdeconnect.nix
./gtk.nix
# ./anyrun.nix
./ironbar
./gui.nix
# ./eww.nix
./xdg.nix ./xdg.nix
./hyprmon.nix ./ironclaw.nix
./hyprland.nix # ./anyrun.nix
./hyprpaper.nix # ./eww.nix
./remmina.nix
# ./wallpaperengine.nix # ./wallpaperengine.nix
]; ];
} }

View File

@@ -2,6 +2,7 @@
pkgs, pkgs,
device, device,
lib, lib,
inputs,
... ...
}: }:
# lib.optionalAttrs device.isNix # lib.optionalAttrs device.isNix
@@ -31,6 +32,8 @@
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = device.is "ryu"; enable = device.is "ryu";
systemd.enable = true; systemd.enable = true;
package = pkgs.hyprland;
portalPackage = pkgs.xdph;
settings = { settings = {
# source = "${pkgs.catppuccinThemes.hyprland}/themes/mocha.conf"; # source = "${pkgs.catppuccinThemes.hyprland}/themes/mocha.conf";
@@ -61,9 +64,9 @@
{ {
output = device.monitors.secondary; output = device.monitors.secondary;
mode = "2560x1440@170"; mode = "2560x1440@170";
position = "-1440x-1120"; position = "-2560x0";
scale = 1; scale = 1;
transform = 1; transform = 0;
} }
{ {
output = device.monitors.tertiary; output = device.monitors.tertiary;
@@ -172,7 +175,7 @@
exec-once = [ exec-once = [
# "${pkgs.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1" # "${pkgs.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
"${pkgs.mate.mate-polkit}/libexec/polkit-mate-authentication-agent-1" "${pkgs.mate-polkit}/libexec/polkit-mate-authentication-agent-1"
# "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
# "${pkgs.swww}/bin/swww init; swww img ~/.local/share/dotfiles/images/wallpaper.jpg" # "${pkgs.swww}/bin/swww init; swww img ~/.local/share/dotfiles/images/wallpaper.jpg"
# "${pkgs.ironbar}/bin/ironbar" # "${pkgs.ironbar}/bin/ironbar"
@@ -203,7 +206,7 @@
"$mainMod, d, exec, ${lib.getExe pkgs.vicinae} toggle" "$mainMod, d, exec, ${lib.getExe pkgs.vicinae} toggle"
"$mainMod, Space, exec, ${lib.getExe pkgs.vicinae} toggle" "$mainMod, Space, exec, ${lib.getExe pkgs.vicinae} toggle"
"$mainMod, p, pseudo, # dwindle" "$mainMod, p, pseudo, # dwindle"
"$mainMod, v, togglesplit," "$mainMod, v, layoutmsg, togglesplit"
"$mainMod, a, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t" "$mainMod, a, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t"
"$mainMod, Tab, cyclenext" "$mainMod, Tab, cyclenext"
# Audio # Audio

View File

@@ -8,8 +8,10 @@
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";
bocchiVertical = nextcloudWallpapers "bocchi-vertical.jpg";
silksongShadeLord = nextcloudWallpapers "silksong-shadelord.jpg"; # The artist https://www.bilibili.com/video/BV1s44y1S7MM/
bocchiVertical = nextcloudWallpapers "bocchi-guitar.jpg";
frieren = nextcloudWallpapers "frieren.png";
in { in {
enable = device.is "ryu"; enable = device.is "ryu";
settings = { settings = {
@@ -17,12 +19,12 @@
wallpaper = [ wallpaper = [
{ {
monitor = device.monitors.primary; monitor = device.monitors.primary;
path = silksongShadeLord; path = wallpapers.moon;
fit_mode = "cover"; fit_mode = "cover";
} }
{ {
monitor = device.monitors.secondary; monitor = device.monitors.secondary;
path = wallpapers.frieren_3; path = frieren;
fit_mode = "cover"; fit_mode = "cover";
} }
{ {

View File

@@ -0,0 +1,12 @@
{
pkgs,
lib,
device,
...
}: {
home.packages =
lib.optionals (device.is "ryu")
[
pkgs.ironclaw
];
}

7
home/services/ollama.nix Normal file
View File

@@ -0,0 +1,7 @@
{
pkgs,
device,
...
}: {
services.ollama.enable = device.is "shiro";
}

View File

@@ -2,6 +2,7 @@
pkgs, pkgs,
lib, lib,
device, device,
inputs,
... ...
}: { }: {
xdg.portal = { xdg.portal = {
@@ -10,10 +11,9 @@
hyprland.default = ["hyprland"]; hyprland.default = ["hyprland"];
common.default = ["*" "hyprland"]; common.default = ["*" "hyprland"];
}; };
extraPortals = with pkgs; [
kdePackages.xdg-desktop-portal-kde
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
];
}; };
} }
# // lib.optionalAttrs (device.is "ryu") {
# environment.pathsToLink = ["/share/xdg-desktop-portal" "/share/applications"];
# }

162
modules/nixos/affine.nix Normal file
View File

@@ -0,0 +1,162 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.services.affine;
dbName = "affine";
dbUser = "affine";
in {
options.services.affine = {
enable = mkEnableOption "AFFiNE self-hosted workspace";
port = mkOption {
type = types.port;
default = 3010;
description = "Port for the AFFiNE server to listen on";
};
domain = mkOption {
type = types.str;
description = "Public domain for AFFiNE (e.g. notes.darksailor.dev)";
};
imageTag = mkOption {
type = types.str;
default = "stable";
description = "Docker image tag for AFFiNE (stable, beta, canary)";
};
dataDir = mkOption {
type = types.str;
default = "/var/lib/affine";
description = "Base data directory for AFFiNE storage";
};
environmentFiles = mkOption {
type = types.listOf types.path;
default = [];
description = "Environment files containing secrets (DB password, etc.)";
};
};
config = mkIf cfg.enable {
# Create data directories
systemd.tmpfiles.rules = [
"d ${cfg.dataDir} 0755 root root -"
"d ${cfg.dataDir}/storage 0755 root root -"
"d ${cfg.dataDir}/config 0755 root root -"
"d ${cfg.dataDir}/postgres 0700 root root -"
"d ${cfg.dataDir}/redis 0755 root root -"
];
virtualisation.oci-containers = {
backend = "docker";
containers = {
affine-postgres = {
image = "pgvector/pgvector:pg16";
volumes = [
"${cfg.dataDir}/postgres:/var/lib/postgresql/data"
];
environment = {
POSTGRES_USER = dbUser;
POSTGRES_DB = dbName;
POSTGRES_INITDB_ARGS = "--data-checksums";
POSTGRES_HOST_AUTH_METHOD = "trust";
};
environmentFiles = cfg.environmentFiles;
extraOptions = [
"--health-cmd=pg_isready -U ${dbUser} -d ${dbName}"
"--health-interval=10s"
"--health-timeout=5s"
"--health-retries=5"
];
networks = ["affine-net"];
};
affine-redis = {
image = "redis:7";
volumes = [
"${cfg.dataDir}/redis:/data"
];
networks = ["affine-net"];
extraOptions = [
"--health-cmd=redis-cli --raw incr ping"
"--health-interval=10s"
"--health-timeout=5s"
"--health-retries=5"
];
};
affine = {
image = "ghcr.io/toeverything/affine:${cfg.imageTag}";
ports = ["127.0.0.1:${toString cfg.port}:3010"];
dependsOn = [
"affine-postgres"
"affine-redis"
"affine-migration"
];
volumes = [
"${cfg.dataDir}/storage:/root/.affine/storage"
"${cfg.dataDir}/config:/root/.affine/config"
];
environment = {
AFFINE_SERVER_PORT = "3010";
AFFINE_SERVER_HOST = cfg.domain;
AFFINE_SERVER_HTTPS = "true";
AFFINE_SERVER_EXTERNAL_URL = "https://${cfg.domain}";
REDIS_SERVER_HOST = "affine-redis";
DATABASE_URL = "postgresql://${dbUser}:$${AFFINE_DB_PASSWORD:-affine}@affine-postgres:5432/${dbName}";
AFFINE_INDEXER_ENABLED = "false";
};
environmentFiles = cfg.environmentFiles;
networks = ["affine-net"];
};
affine-migration = {
image = "ghcr.io/toeverything/affine:${cfg.imageTag}";
dependsOn = [
"affine-postgres"
"affine-redis"
];
volumes = [
"${cfg.dataDir}/storage:/root/.affine/storage"
"${cfg.dataDir}/config:/root/.affine/config"
];
cmd = ["sh" "-c" "node ./scripts/self-host-predeploy.js"];
environment = {
REDIS_SERVER_HOST = "affine-redis";
DATABASE_URL = "postgresql://${dbUser}:$${AFFINE_DB_PASSWORD:-affine}@affine-postgres:5432/${dbName}";
AFFINE_INDEXER_ENABLED = "false";
};
environmentFiles = cfg.environmentFiles;
networks = ["affine-net"];
};
};
};
# Create the Docker network
# systemd.services.affine-network = {
# description = "Create AFFiNE Docker network";
# after = ["docker.service"];
# wantedBy = ["multi-user.target"];
# serviceConfig = {
# Type = "oneshot";
# RemainAfterExit = true;
# # ExecStart = "${config.virtualisation.docker.package}/bin/docker network create affine-net";
# # ExecStop = "${config.virtualisation.docker.package}/bin/docker network remove affine-net";
# };
# };
#
# Ensure containers start after the network is created
# systemd.services.docker-affine.after = ["affine-network.service"];
# systemd.services.docker-affine.requires = ["affine-network.service"];
# systemd.services.docker-affine-postgres.after = ["affine-network.service"];
# systemd.services.docker-affine-postgres.requires = ["affine-network.service"];
# systemd.services.docker-affine-redis.after = ["affine-network.service"];
# systemd.services.docker-affine-redis.requires = ["affine-network.service"];
# systemd.services.docker-affine-migration.after = ["affine-network.service"];
# systemd.services.docker-affine-migration.requires = ["affine-network.service"];
};
}

View File

@@ -1,50 +1,19 @@
{ {...}: {
config,
lib,
...
}:
with lib; let
cfg = config.nix.substituters;
in {
options.nix.substituters = {
enableCuda = mkOption {
type = types.bool;
default = false;
description = "Enable NixOS CUDA cache";
};
enableLlamaCpp = mkOption {
type = types.bool;
default = false;
description = "Enable llama-cpp cache";
};
};
config = { config = {
nix.settings = { nix.settings = {
trusted-substituters = trusted-substituters = [
[ "https://nix-community.cachix.org"
"https://nix-community.cachix.org" "https://nixos-raspberrypi.cachix.org"
"https://nixos-raspberrypi.cachix.org" "https://llama-cpp.cachix.org"
] "https://cache.nixos-cuda.org"
++ optionals cfg.enableLlamaCpp [ ];
"https://llama-cpp.cachix.org"
]
++ optionals cfg.enableCuda [
"https://cache.nixos-cuda.org"
];
trusted-public-keys = trusted-public-keys = [
[ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" "llama-cpp.cachix.org-1:H75X+w83wUKTIPSO1KWy9ADUrzThyGs8P5tmAbkWhQc="
] "cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
++ optionals cfg.enableLlamaCpp [ ];
"llama-cpp.cachix.org-1:H75X+w83wUKTIPSO1KWy9ADUrzThyGs8P5tmAbkWhQc="
]
++ optionals cfg.enableCuda [
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
];
}; };
}; };
} }

View File

@@ -289,7 +289,7 @@ in {
"core.keybinds" = { "core.keybinds" = {
config = { config = {
default_keybinds = true; default_keybinds = true;
neorg_leader = "<C-m>"; neorg_leader = "<C-i>";
}; };
}; };
"core.integrations.treesitter" = { "core.integrations.treesitter" = {
@@ -620,6 +620,21 @@ in {
}; };
sources = { sources = {
cmdline = []; cmdline = [];
# default =
# rawLua
# /*
# lua
# */
# ''
# function(ctx)
# local success, node = pcall(vim.treesitter.get_node)
# if success and node and vim.tbl_contains({ 'comment', 'line_comment', 'block_comment' }, node:type()) then
# return { 'buffer' }
# else
# return { 'git', 'lsp', 'path', 'snippets', 'buffer', 'dictionary', 'ripgrep', 'tmux' }
# end
# end
# '';
default = [ default = [
"git" "git"
"lsp" "lsp"
@@ -628,6 +643,7 @@ in {
"path" "path"
"buffer" "buffer"
"ripgrep" "ripgrep"
# "tmux"
]; ];
providers = { providers = {
buffer = { buffer = {
@@ -639,23 +655,30 @@ in {
path = {}; path = {};
dictionary = { dictionary = {
module = "blink-cmp-dictionary"; module = "blink-cmp-dictionary";
name = "Dict"; name = "dict";
min_keyword_length = 3; min_keyword_length = 3;
opts = { opts = {
}; };
}; };
git = { git = {
module = "blink-cmp-git"; module = "blink-cmp-git";
name = "Git"; name = "git";
opts = { opts = {
# -- options for the blink-cmp-git # -- options for the blink-cmp-git
}; };
}; };
ripgrep = { ripgrep = {
module = "blink-ripgrep"; module = "blink-ripgrep";
name = "Ripgrep"; name = "ripgrep";
opts = {}; opts = {};
}; };
# tmux = {
# module = "blink-cmp-tmux";
# name = "tmux";
# opts = {
# triggered_only = false;
# };
# };
}; };
}; };
}; };
@@ -663,8 +686,9 @@ in {
blink-ripgrep.enable = true; blink-ripgrep.enable = true;
blink-cmp-git.enable = true; blink-cmp-git.enable = true;
blink-cmp-dictionary.enable = true; blink-cmp-dictionary.enable = true;
blink-cmp-copilot.enable = true; # blink-cmp-copilot.enable = true;
blink-cmp-spell.enable = true; blink-cmp-spell.enable = true;
blink-cmp-tmux.enable = true;
blink-compat = { blink-compat = {
enable = true; enable = true;
settings.impersonate_nvim_cmp = true; settings.impersonate_nvim_cmp = true;

View File

@@ -42,8 +42,8 @@
}; };
}; };
in [ in [
inputs.nno.overlays.default
inputs.nixvim.overlays.default inputs.nixvim.overlays.default
vimPlugins inputs.nno.overlays.default
tree-sitter-grammars tree-sitter-grammars
vimPlugins
] ]

View File

@@ -28,6 +28,7 @@
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.headplane.nixosModules.headplane inputs.headplane.nixosModules.headplane
inputs.tangled-core.nixosModules.knot
./${device.name}/configuration.nix ./${device.name}/configuration.nix
../home/module.nix ../home/module.nix

View File

@@ -4,4 +4,5 @@
documentation.dev.enable = true; documentation.dev.enable = true;
documentation.doc.enable = true; documentation.doc.enable = true;
documentation.nixos.enable = true; documentation.nixos.enable = true;
documentation.man.cache.enable = true;
} }

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [crosspipe];
}

View File

@@ -7,6 +7,11 @@
# ./alvr.nix # ./alvr.nix
./easyeffects.nix ./easyeffects.nix
./vr.nix ./vr.nix
./helvum.nix ./crosspipe.nix
# ./wine.nix
# ./virt.nix
./gparted.nix
./nvtop.nix
# ./qpwgraph.nix
]; ];
} }

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [gparted];
}

View File

@@ -1,3 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [helvum];
}

3
nixos/ryu/apps/nvtop.nix Normal file
View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [nvtopPackages.nvidia];
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [qpwgraph];
}

6
nixos/ryu/apps/virt.nix Normal file
View File

@@ -0,0 +1,6 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
virt-manager
quickemu
];
}

7
nixos/ryu/apps/wine.nix Normal file
View File

@@ -0,0 +1,7 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
wine-wayland
winetricks
wineWowPackages.waylandFull
];
}

View File

@@ -2,6 +2,8 @@
pkgs, pkgs,
lib, lib,
device, device,
config,
inputs,
... ...
}: { }: {
imports = [ imports = [
@@ -21,15 +23,6 @@
tctiEnvironment.enable = true; tctiEnvironment.enable = true;
}; };
programs = {
hyprland = {
enable = true;
withUWSM = 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;
# systemd.tmpfiles.rules = [ # systemd.tmpfiles.rules = [
# "L+ /etc/gdm/.config/monitors.xml - - - - ${./monitors.xml}" # "L+ /etc/gdm/.config/monitors.xml - - - - ${./monitors.xml}"
@@ -47,6 +40,8 @@
auto-optimise-store = true; auto-optimise-store = true;
extra-experimental-features = "nix-command flakes auto-allocate-uids"; extra-experimental-features = "nix-command flakes auto-allocate-uids";
trusted-users = [device.user]; trusted-users = [device.user];
extra-sandbox-paths = [config.programs.ccache.cacheDir];
download-buffer-size = 524288000;
}; };
extraOptions = '' extraOptions = ''
build-users-group = nixbld build-users-group = nixbld
@@ -65,11 +60,6 @@
# ../../builders/tsuba.nix # ../../builders/tsuba.nix
]; ];
distributedBuilds = true; distributedBuilds = true;
# Enable CUDA and llama-cpp caches
substituters = {
enableCuda = true;
enableLlamaCpp = true;
};
}; };
users.users.${device.user} = { users.users.${device.user} = {
@@ -291,42 +281,6 @@
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
fonts.fontDir.enable = true; fonts.fontDir.enable = true;
environment = { environment = {
# List packages installed in system profile. To search, run:
# $ nix search wget
systemPackages = with pkgs; [
v4l-utils
polychromatic
openrazer-daemon
cudatoolkit
# Wine
wine-wayland
winetricks
wineWowPackages.waylandFull
virt-manager
gparted
nvtopPackages.nvidia
quickemu
# (nixvim.makeNixvim (import ../../neovim))
qpwgraph
hyprland
xorg.xhost
foot
git
fish
nushell
# (pkgs.wrapFirefox
# (pkgs.firefox-unwrapped.override {pipewireSupport = true;})
# {})
gnumake
python3
nerd-fonts.fira-code
nerd-fonts.hasklug
nerd-fonts.symbols-only
monaspace
ddcutil
libnotify
];
sessionVariables = { sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";

View File

@@ -1,5 +1,5 @@
{...}: { {...}: {
imports = [ imports = [
./hytale.nix # ./hytale.nix
]; ];
} }

View File

@@ -0,0 +1,6 @@
{...}: {
programs.ccache = {
enable = true;
packageNames = ["ollama" "orca-slicer" "opencv" "onnxruntime" "obs-studio" "llama-cpp"];
};
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [cudatoolkit];
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [ddcutil];
}

View File

@@ -4,7 +4,7 @@
./steam.nix ./steam.nix
./1password.nix ./1password.nix
./localsend.nix ./localsend.nix
./appimage.nix # ./appimage.nix
./obs-studio.nix ./obs-studio.nix
./gnome-disks.nix ./gnome-disks.nix
./nix-ld.nix ./nix-ld.nix
@@ -12,5 +12,16 @@
./droidcam.nix ./droidcam.nix
./wireshark.nix ./wireshark.nix
./flatpak.nix ./flatpak.nix
./v4l-utils.nix
./razer.nix
./cuda.nix
./fonts.nix
./dev.nix
./shells.nix
./hyprland.nix
./foot.nix
./ddcutil.nix
./libnotify.nix
./fish.nix
]; ];
} }

View File

@@ -0,0 +1,7 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
git
gnumake
python3
];
}

View File

@@ -0,0 +1,7 @@
{...}: {
programs.fish = {
enable = true;
generateCompletions = true;
};
stylix.targets.fish.enable = false;
}

View File

@@ -0,0 +1,8 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.hasklug
nerd-fonts.symbols-only
monaspace
];
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [foot];
}

View File

@@ -1,6 +1,7 @@
{ {
pkgs, pkgs,
device, device,
lib,
... ...
}: { }: {
programs.gamemode = { programs.gamemode = {
@@ -12,7 +13,7 @@
custom = { custom = {
start = let start = let
out = pkgs.writeScriptBin "gamemode-start" '' out = pkgs.writeScriptBin "gamemode-start" ''
${pkgs.lmstudio}/bin/lms unload ${lib.getExe pkgs.ollama} ps | tail +2 | cut -d' ' -f1 | xargs ${lib.getExe pkgs.ollama} stop
${pkgs.libnotify}/bin/notify-send 'GameMode started' ${pkgs.libnotify}/bin/notify-send 'GameMode started'
''; '';
in "${out}/bin/gamemode-start"; in "${out}/bin/gamemode-start";

View File

@@ -0,0 +1,19 @@
{
pkgs,
inputs,
...
}: {
environment.systemPackages = with pkgs; [
xhost
];
programs = {
hyprland = {
enable = true;
withUWSM = true;
xwayland.enable = true;
package = pkgs.hyprland;
portalPackage = pkgs.xdph;
};
uwsm.enable = true;
};
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [libnotify];
}

View File

@@ -0,0 +1,6 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
polychromatic
openrazer-daemon
];
}

View File

@@ -0,0 +1,6 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
fish
nushell
];
}

View File

@@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [v4l-utils];
}

View File

@@ -7,8 +7,5 @@
enable = true; enable = true;
dumpcap.enable = true; dumpcap.enable = true;
}; };
environment.systemPackages = with pkgs; [
wireshark-qt
];
users.users.${device.user}.extraGroups = ["wireshark"]; users.users.${device.user}.extraGroups = ["wireshark"];
} }

View File

@@ -130,11 +130,10 @@
options = ["nofail"]; options = ["nofail"];
}; };
# fileSystems."/volumes/windows-games" = { fileSystems."/var" = {
# device = "/dev/disk/by-partuuid/56359fb7-7d33-44d2-bebd-b0c53daeeb73"; device = "/dev/disk/by-uuid/ff874913-dc21-43f3-82f8-cdf45dd888f7";
# fsType = "ntfs3"; fsType = "ext4";
# options = ["nofail"]; };
# };
swapDevices = [ swapDevices = [
{ {

View File

@@ -57,9 +57,6 @@
}; };
package = pkgs.nixVersions.nix_2_32; # 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;
substituters = {
enableCuda = true;
};
}; };
users.users.${device.user} = { users.users.${device.user} = {

View File

@@ -0,0 +1,89 @@
{config, ...}: let
domain = "notes.darksailor.dev";
in {
imports = [
../../../modules/nixos/affine.nix
];
# SOPS secrets
sops = {
secrets = {
"affine/db_password" = {};
"authelia/oidc/affine/client_id" = {
owner = config.systemd.services.authelia-darksailor.serviceConfig.User;
mode = "0440";
restartUnits = ["authelia-darksailor.service"];
};
"authelia/oidc/affine/client_secret" = {
owner = config.systemd.services.authelia-darksailor.serviceConfig.User;
mode = "0440";
restartUnits = ["authelia-darksailor.service"];
};
};
templates."affine.env".content = ''
AFFINE_DB_PASSWORD=${config.sops.placeholder."affine/db_password"}
POSTGRES_PASSWORD=${config.sops.placeholder."affine/db_password"}
AFFINE_SERVER_EXTERNAL_URL=https://${domain}
'';
};
# Enable AFFiNE service
services.affine = {
enable = true;
inherit domain;
environmentFiles = [
config.sops.templates."affine.env".path
];
};
# Caddy reverse proxy with SSO forward auth
services.caddy.virtualHosts."${domain}".extraConfig = ''
reverse_proxy localhost:${toString config.services.affine.port}
'';
# Authelia access control rules
services.authelia.instances.darksailor.settings = {
access_control.rules = [
{
inherit domain;
policy = "bypass";
resources = [
"^/api/(sync|awareness)([/?].*)?$"
"^/socket\\.io([/?].*)?$"
];
}
{
inherit domain;
policy = "one_factor";
}
];
# OIDC client for AFFiNE
identity_providers.oidc.clients = [
{
client_name = "AFFiNE: Darksailor";
client_id = ''{{ secret "${config.sops.secrets."authelia/oidc/affine/client_id".path}" }}'';
client_secret = ''{{ secret "${config.sops.secrets."authelia/oidc/affine/client_secret".path}" }}'';
public = false;
authorization_policy = "one_factor";
require_pkce = false;
redirect_uris = [
"https://${domain}/oauth/callback"
];
scopes = [
"openid"
"email"
"profile"
];
response_types = ["code"];
grant_types = ["authorization_code"];
userinfo_signed_response_alg = "none";
token_endpoint_auth_method = "client_secret_post";
}
];
};
# Ensure containers start after secrets are available
systemd.services.docker-affine.after = ["sops-install-secrets.service"];
systemd.services.docker-affine-migration.after = ["sops-install-secrets.service"];
systemd.services.docker-affine-postgres.after = ["sops-install-secrets.service"];
}

View File

@@ -1,31 +1,35 @@
{...}: { {...}: {
imports = [ imports = [
./attic.nix
./atuin.nix ./atuin.nix
./authelia.nix ./authelia.nix
./caddy.nix ./caddy.nix
./excalidraw.nix
./fail2ban.nix ./fail2ban.nix
./flaresolverr.nix
./games
./gitea.nix
./homepage.nix ./homepage.nix
./immich.nix
./kellnr.nix
./lldap.nix ./lldap.nix
./llms.nix
./matrix
./monitoring.nix
./navidrome.nix ./navidrome.nix
./nextcloud.nix ./nextcloud.nix
./openssh.nix ./openssh.nix
./prowlarr.nix
./resolved.nix ./resolved.nix
./searxng.nix
./shitpost.nix
./tailscale.nix ./tailscale.nix
./gitea.nix
./knot.nix
./affine.nix
./attic.nix
./excalidraw.nix
./flaresolverr.nix
# ./games
# ./headscale.nix # ./headscale.nix
./immich.nix
./kellnr.nix
./llms.nix
./matrix
./monitoring.nix
# ./servius-website.nix
# ./paperless.nix # ./paperless.nix
./prowlarr.nix
# ./searxng.nix
./shitpost.nix
]; ];
services = { services = {
nix-serve = { nix-serve = {

View File

@@ -16,6 +16,7 @@
ignoreIP = [ ignoreIP = [
"106.219.121.52" "106.219.121.52"
"106.219.122.125" "106.219.122.125"
"106.219.122.221"
]; ];
}; };
}; };

View File

@@ -34,12 +34,12 @@
}; };
}; };
}; };
# headplane = { headplane = {
# enable = true; enable = true;
# settings = { settings = {
# server.port = 42562; server.port = 42562;
# }; };
# }; };
caddy = { caddy = {
virtualHosts."headscale.darksailor.dev".extraConfig = '' virtualHosts."headscale.darksailor.dev".extraConfig = ''
reverse_proxy localhost:${toString config.services.headplane.settings.server.port} reverse_proxy localhost:${toString config.services.headplane.settings.server.port}

View File

@@ -59,6 +59,14 @@
siteMonitor = "https://deluge.tsuba.darksailor.dev"; siteMonitor = "https://deluge.tsuba.darksailor.dev";
}; };
} }
{
"Aria2" = {
icon = "aria2.png";
description = "Aria2: Download Manager";
href = "https://aria2.tsuba.darksailor.dev";
siteMonitor = "https://aria2.tsuba.darksailor.dev";
};
}
{ {
"Home Assistant" = { "Home Assistant" = {
icon = "home-assistant.png"; icon = "home-assistant.png";
@@ -198,19 +206,19 @@
reverse_proxy localhost:${builtins.toString config.services.homepage-dashboard.listenPort} reverse_proxy localhost:${builtins.toString config.services.homepage-dashboard.listenPort}
''; '';
}; };
# authelia = { authelia = {
# instances.darksailor = { instances.darksailor = {
# settings = { settings = {
# access_control = { access_control = {
# rules = [ rules = [
# { {
# domain = "dashboard.darksailor.dev"; domain = "dashboard.darksailor.dev";
# policy = "one_factor"; policy = "one_factor";
# } }
# ]; ];
# }; };
# }; };
# }; };
# }; };
}; };
} }

View File

@@ -0,0 +1,31 @@
{
config,
inputs,
pkgs,
...
}: {
services.tangled.knot = {
enable = true;
package = inputs.tangled-core.packages.${pkgs.system}.knot;
server = {
hostname = "tangled.darksailor.dev";
owner = "did:plc:tllyvpa5oxw6fwwhkj3kv6dr";
listenAddr = "127.0.0.1:5969";
};
};
services.caddy.virtualHosts."tangled.darksailor.dev".extraConfig = ''
reverse_proxy ${config.services.tangled.knot.server.listenAddr} {
header_up Host {host}
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
handle /events/* {
reverse_proxy ${config.services.tangled.knot.server.listenAddr} {
header_up X-Forwarded-For {remote}
header_up Host {host}
}
}
'';
}

View File

@@ -0,0 +1,66 @@
{
pkgs,
config,
inputs,
...
}: let
base_domain = "darksailor.dev";
cinnyConfig = builtins.toJSON {
defaultHomeserver = 0;
homeserverList = ["darksailor.dev" "matrix.org"];
allowCustomHomeservers = false;
hashRouter = {
enabled = true;
basename = "/";
};
};
cinnyConfigFile = pkgs.writeText "cinny-config.json" cinnyConfig;
cinny = with pkgs;
buildNpmPackage rec {
pname = "cinny-unwrapped";
version = "4.11.1";
src = inputs.cinny;
nodejs = nodejs_22;
npmDepsHash = "sha256-27WFjb08p09aJRi0S2PvYq3bivEuG5+z2QhFahTSj4Q=";
nativeBuildInputs = [
python3
pkg-config
];
buildInputs =
[
pixman
cairo
pango
]
++ lib.optionals stdenv.hostPlatform.isDarwin [giflib];
installPhase = ''
runHook preInstall
cp -r dist $out
runHook postInstall
'';
};
in {
services.caddy.virtualHosts = {
"matrix.${base_domain}".extraConfig = ''
handle /_matrix/* {
reverse_proxy /_matrix/* localhost:${toString (builtins.elemAt config.services.matrix-tuwunel.settings.global.port 0)}
}
handle_path /config.json {
file_server
root ${cinnyConfigFile}
}
handle {
root * ${cinny}
try_files {path} /index.html
file_server
}
'';
};
}

View File

@@ -1,7 +1,8 @@
{...}: { {...}: {
imports = [ imports = [
./tuwunel.nix ./tuwunel.nix
# ./signal.nix // libolm deprecated ./cinny.nix
# ./signal.nix
# ./discord.nix # ./discord.nix
]; ];
} }

View File

@@ -6,19 +6,8 @@
port = 6167; port = 6167;
base_domain = "darksailor.dev"; base_domain = "darksailor.dev";
client_id = "tuwunel"; client_id = "tuwunel";
elementConfig = builtins.toJSON { rtc_domain = "matrix-rtc.${base_domain}";
default_server_config = { jwt_port = 8081;
"m.homeserver" = {
base_url = "https://matrix.${base_domain}";
};
};
sso_redirect_options = {
immediate = false;
on_welcome_page = true;
on_login_page = true;
};
};
elementConfigFile = pkgs.writeText "element-config.json" elementConfig;
in { in {
sops = { sops = {
secrets."tuwunel/client_id" = { secrets."tuwunel/client_id" = {
@@ -32,6 +21,11 @@ in {
mode = "0440"; mode = "0440";
}; };
secrets."tuwunel/registration_token".owner = config.services.matrix-tuwunel.user; secrets."tuwunel/registration_token".owner = config.services.matrix-tuwunel.user;
secrets."livekit/key_name" = {};
secrets."livekit/key_secret" = {};
templates."livekit-keys".content = ''
${config.sops.placeholder."livekit/key_name"}: ${config.sops.placeholder."livekit/key_secret"}
'';
}; };
services.matrix-tuwunel = { services.matrix-tuwunel = {
enable = true; enable = true;
@@ -56,31 +50,91 @@ in {
well_known = { well_known = {
client = "https://matrix.${base_domain}"; client = "https://matrix.${base_domain}";
server = "matrix.${base_domain}:443"; server = "matrix.${base_domain}:443";
rtc_transports = [
{
type = "livekit";
livekit_service_url = "https://${rtc_domain}";
}
];
}; };
}; };
package = pkgs.matrix-tuwunel; package = pkgs.matrix-tuwunel;
}; };
services.caddy.virtualHosts = { services.caddy.virtualHosts = {
"matrix.${base_domain}".extraConfig = '' # "matrix.${base_domain}".extraConfig = ''
reverse_proxy /_matrix/* localhost:${toString port} # handle /_matrix/* {
handle_path /config.json { # reverse_proxy /_matrix/* localhost:${toString port}
file_server # }
root ${elementConfigFile} # handle_path /config.json {
} # file_server
root * ${pkgs.element-web} # root ${cinnyConfigFile}
file_server # }
''; # handle {
# root * ${cinny}
# try_files {path} /index.html
# file_server
# }
# '';
"${base_domain}".extraConfig = '' "${base_domain}".extraConfig = ''
reverse_proxy /.well-known/* localhost:${toString port} reverse_proxy /.well-known/* localhost:${toString port}
''; '';
# "matrix.${base_domain}:8448".extraConfig = '' "${rtc_domain}".extraConfig = ''
# reverse_proxy /_matrix/* localhost:${toString port} @jwt_service {
# ''; path /sfu/get* /healthz*
}
handle @jwt_service {
reverse_proxy localhost:${toString jwt_port}
}
handle {
reverse_proxy localhost:${toString config.services.livekit.settings.port} {
header_up Connection "upgrade"
header_up Upgrade {http.request.header.Upgrade}
}
}
'';
};
networking.firewall = {
allowedTCPPorts = [8448 7881];
allowedUDPPorts = [3478];
allowedUDPPortRanges = [
{
from = 50300;
to = 65535;
}
];
}; };
networking.firewall.allowedTCPPorts = [8448];
users.users.${config.services.caddy.user}.extraGroups = [config.services.matrix-tuwunel.group]; users.users.${config.services.caddy.user}.extraGroups = [config.services.matrix-tuwunel.group];
services.livekit = {
enable = true;
keyFile = config.sops.templates."livekit-keys".path;
openFirewall = true;
settings = {
rtc = {
tcp_port = 7881;
port_range_start = 50100;
port_range_end = 50200;
use_external_ip = true;
enable_loopback_candidate = false;
};
turn = {
enabled = true;
udp_port = 3478;
relay_range_start = 50300;
relay_range_end = 65535;
domain = rtc_domain;
};
};
};
services.lk-jwt-service = {
enable = true;
port = jwt_port;
livekitUrl = "wss://${rtc_domain}";
keyFile = config.sops.templates."livekit-keys".path;
};
services = { services = {
authelia = { authelia = {
instances.darksailor = { instances.darksailor = {

View File

@@ -23,6 +23,9 @@
caddy = 2019; caddy = 2019;
}; };
in { in {
sops.secrets."grafana/secret_key" = {
owner = "grafana";
};
# Grafana configuration with Authelia integration # Grafana configuration with Authelia integration
services.grafana = { services.grafana = {
enable = true; enable = true;
@@ -54,6 +57,7 @@ in {
security = { security = {
disable_gravatar = true; disable_gravatar = true;
cookie_secure = true; cookie_secure = true;
secret_key = ''$__file{${config.sops.secrets."grafana/secret_key".path}}'';
}; };
analytics = { analytics = {
@@ -281,7 +285,7 @@ in {
{ {
targets = [ targets = [
"tsuba:8096" # jellyfin (built-in /metrics endpoint) "tsuba:8096" # jellyfin (built-in /metrics endpoint)
"tsuba:8123" # homeassistant (configure prometheus integration) # "tsuba:8123" # homeassistant (configure prometheus integration)
"tsuba:9617" # pihole-exporter "tsuba:9617" # pihole-exporter
]; ];
labels = { labels = {
@@ -298,12 +302,12 @@ in {
target_label = "__metrics_path__"; target_label = "__metrics_path__";
replacement = "/metrics"; replacement = "/metrics";
} }
{ # {
source_labels = ["__address__"]; # source_labels = ["__address__"];
regex = "tsuba:8123"; # regex = "tsuba:8123";
target_label = "__metrics_path__"; # target_label = "__metrics_path__";
replacement = "/api/prometheus"; # replacement = "/api/prometheus";
} # }
]; ];
} }

View File

@@ -17,7 +17,7 @@
services = { services = {
nextcloud = { nextcloud = {
enable = true; enable = true;
package = pkgs.nextcloud32; package = pkgs.nextcloud33;
extraApps = { extraApps = {
inherit (config.services.nextcloud.package.packages.apps) contacts calendar bookmarks user_oidc; inherit (config.services.nextcloud.package.packages.apps) contacts calendar bookmarks user_oidc;
}; };

View File

@@ -2,6 +2,6 @@
services.openssh = { services.openssh = {
enable = true; enable = true;
settings.PasswordAuthentication = false; settings.PasswordAuthentication = false;
settings.PermitRootLogin = "prohibit-password"; settings.PermitRootLogin = "no";
}; };
} }

View File

@@ -0,0 +1,12 @@
{
inputs,
pkgs,
...
}: let
website = inputs.servius-website.packages.${pkgs.system}.default;
in {
services.caddy.virtualHosts."servius.darksailor.dev".extraConfig = ''
root * ${website}
file_server
'';
}

View File

@@ -0,0 +1,33 @@
{
pkgs,
config,
...
}: {
sops.secrets."aria2/rpc-secret" = {};
services.aria2 = {
enable = true;
rpcSecretFile = config.sops.secrets."aria2/rpc-secret".path;
settings = {
continue = true;
dir = "/media/downloads";
enable-rpc = true;
file-allocation = "none";
max-concurrent-downloads = 5;
max-connection-per-server = 16;
rpc-listen-all = true;
rpc-listen-port = 6809;
split = 16;
};
};
services.caddy.virtualHosts."aria2.tsuba.darksailor.dev".extraConfig = ''
import cloudflare
root * ${pkgs.ariang}/share/ariang
file_server
'';
services.caddy.virtualHosts."aria2.tsuba.darksailor.dev:6800".extraConfig = ''
import cloudflare
reverse_proxy localhost:${toString config.services.aria2.settings.rpc-listen-port}
'';
}

View File

@@ -6,6 +6,7 @@
./caddy.nix ./caddy.nix
./servarr.nix ./servarr.nix
./deluge.nix ./deluge.nix
./aria2.nix
./homeassistant.nix ./homeassistant.nix
./flaresolverr.nix ./flaresolverr.nix
./caddy.nix ./caddy.nix

View File

@@ -1,5 +1,7 @@
{inputs, ...} @ self: let {inputs, ...} @ self: let
shell-scipts = final: prev: { cratesNix = pkgs: inputs.crates-nix.mkLib {inherit pkgs;};
# --- Shell / CLI utilities ---
shell-scripts = final: prev: {
handlr-xdg = final.pkgs.writeShellApplication { handlr-xdg = final.pkgs.writeShellApplication {
name = "xdg-open"; name = "xdg-open";
runtimeInputs = [final.pkgs.handlr-regex]; runtimeInputs = [final.pkgs.handlr-regex];
@@ -8,184 +10,9 @@
''; '';
}; };
}; };
misc-applications = final: prev: {
command-runner = inputs.command-runner.packages.${prev.system}.command-runner;
goread = final.pkgs.buildGoModule {
pname = "goread";
version = "v1.6.4";
vendorHash = "sha256-/kxEnw8l9S7WNMcPh1x7xqiQ3L61DSn6DCIvJlyrip0";
src = final.pkgs.fetchFromGitHub {
owner = "TypicalAM";
repo = "goread";
rev = "v1.6.4";
sha256 = "sha256-m6reRaJNeFhJBUatfPNm66LwTXPdD/gioT8HTv52QOw";
};
patches = [patches/goread.patch];
checkPhase = null;
};
music-player-git = inputs.music-player.packages.${prev.system}.default;
davis = let
davis-src = final.pkgs.fetchFromGitHub {
owner = "SimonPersson";
repo = "davis";
rev = "main";
sha256 = "sha256-p4l1nF6M28OyIaPorgsyR7NJtmVwpmuws67KvVnJa8s";
};
cargoToml =
builtins.fromTOML (builtins.readFile "${davis-src}/Cargo.toml");
in
final.rustPlatform.buildRustPackage {
pname = cargoToml.package.name;
version = cargoToml.package.version;
src = davis-src;
cargoLock = {lockFile = "${davis-src}/Cargo.lock";};
buildPhase = ''
runHook cargoBuildHook
runHook cargoInstallPostBuildHook
'';
runtimeInputs = [final.pkgs.picat];
buildInputs = [final.pkgs.picat];
installPhase = ''
mkdir -p $out/bin
cp $bins $out/bin
cp $src/subcommands/cur/davis-cur-vertical $out/bin
cp $src/subcommands/cur/davis-cur-horizontal $out/bin
cp $src/subcommands/cover/davis-cover $out/bin
'';
};
openapi-tui = let # --- Terminal multiplexers ---
cargoToml = builtins.fromTOML (builtins.readFile "${inputs.openapi-tui}/Cargo.toml"); terminal = final: prev: {
in
final.rustPlatform.buildRustPackage {
pname = cargoToml.package.name;
version = cargoToml.package.version;
src = inputs.openapi-tui;
cargoLock = {lockFile = "${inputs.openapi-tui}/Cargo.lock";};
buildInputs = with final;
pkgs.lib.optionals pkgs.stdenv.isDarwin [
pkgs.apple-sdk_13
]
++ pkgs.lib.optionals pkgs.stdenv.isLinux [
pkgs.openssl
];
PKG_CONFIG_PATH = with final; pkgs.lib.makeSearchPath "lib/pkgconfig" [pkgs.openssl.dev];
nativeBuildInputs = with final; [pkgs.pkg-config];
};
picat = let
picat-src = final.pkgs.fetchFromGitHub {
owner = "SimonPersson";
repo = "picat";
rev = "main";
sha256 = "sha256-HheBinHW4RLjRtiE8Xe5BoEuSCdtZTA9XkRJgtDkXaM";
};
cargoToml =
builtins.fromTOML (builtins.readFile "${picat-src}/Cargo.toml");
in
final.rustPlatform.buildRustPackage {
pname = cargoToml.package.name;
version = cargoToml.package.version;
src = picat-src;
cargoLock = {lockFile = "${picat-src}/Cargo.lock";};
};
psst =
if final.pkgs.stdenv.isLinux
then
(prev.psst.overrideAttrs (finalAttrs: prevAttrs: {
postInstall =
(prevAttrs.postInstall or "")
+ ''
patch $out/share/applications/Psst.desktop < ${./patches/psst.patch}
'';
}))
else
final.rustPlatform.buildRustPackage rec {
pname = "psst";
version = "1";
src = final.pkgs.fetchFromGitHub {
owner = "jpochyla";
repo = "psst";
rev = "master";
sha256 = "sha256-W+MFToyvYDQuC/8DqigvENxzJ6QGQOAeAdmdWG6+qZk";
};
buildInputs = with final; [
pkgs.apple-sdk_13
];
cargoLock = {
lockFile = "${src}/Cargo.lock";
outputHashes = {
"cubeb-0.10.3" = "sha256-gV1KHOhq678E/Rj+u8jX9Fw+TepPwuZdV5y/D+Iby+o";
"druid-0.8.3" = "sha256-hTB9PQf2TAhcLr64VjjQIr18mczwcNogDSRSN5dQULA";
"druid-enums-0.1.0" = "sha256-KJvAgKxicx/g+4QRZq3iHt6MGVQbfOpyN+EhS6CyDZk";
};
};
};
ddcbacklight = inputs.ddcbacklight.packages.${prev.system}.ddcbacklight;
# ik_llama = prev.llama-cpp.overrideAttrs (oldAttrs: {
# src = inputs.ik_llama;
# version = "5995";
# });
# llama-cpp = prev.llama-cpp.overrideAttrs (oldAttrs: {
# src = inputs.llama-cpp;
# version = "6178";
# cmakeFlags = oldAttrs.cmakeFlags;
# });
python312 = prev.python312.override {
packageOverrides = final: prev: {
pysaml2 = prev.pysaml2.overridePythonAttrs (orig: {
doCheck = false;
# disabledTests =
# orig.disabledTests
# ++ [
# "test_encrypted_response_6"
# "test_validate_cert_chains"
# "test_validate_with_root_cert"
# ];
});
};
};
zeronsd = let
src = inputs.zeronsd;
in
final.rustPlatform.buildRustPackage {
inherit src;
pname = "zeronsd";
version = "0.6";
strictDeps = true;
buildInputs = [final.pkgs.openssl];
nativeBuildInputs = [final.pkgs.pkg-config];
doCheck = false;
RUSTFMT = "${final.pkgs.rustfmt}/bin/rustfmt";
cargoLock = {lockFile = "${src}/Cargo.lock";};
};
# alvr-master = inputs.alvr.packages.${prev.system}.default;
caddyWithCloudflare = inputs.nixpkgs.legacyPackages.${final.system}.caddy.withPlugins {
plugins = ["github.com/caddy-dns/cloudflare@v0.2.2"];
hash = "sha256-dnhEjopeA0UiI+XVYHYpsjcEI6Y1Hacbi28hVKYQURg=";
};
nix-auth = inputs.nix-auth.packages.${prev.system}.nix-auth;
kitty = inputs.nixpkgs-stable.legacyPackages.${prev.system}.kitty;
yabai = prev.yabai.overrideAttrs (oldAttrs: rec {
version = "7.1.16";
src = final.fetchzip {
url = "https://github.com/koekeishiya/yabai/releases/download/v${version}/yabai-v${version}.tar.gz";
hash = "sha256-rEO+qcat6heF3qrypJ02Ivd2n0cEmiC/cNUN53oia4w=";
};
});
};
anyrun-overlay = final: prev: {
anyrun =
inputs.anyrun.packages.${prev.system}.anyrun.overrideAttrs
(finalAttrs: prevAttrs: {patches = [./patches/ctrl-np.patch];});
hyprwin = inputs.anyrun-hyprwin.packages.${prev.system}.hyprwin;
nixos-options = inputs.anyrun-nixos-options.packages.${prev.system}.default;
anyrun-rink = inputs.anyrun-rink.packages.${prev.system}.default;
};
tmuxPlugins = final: prev: {
tmuxPlugins = tmuxPlugins =
prev.tmuxPlugins prev.tmuxPlugins
// { // {
@@ -200,28 +27,18 @@
}; };
}; };
}; };
tmux-float = inputs.tmux-float.packages.${prev.system}.default; tmux-float = inputs.tmux-float.packages.${prev.stdenv.hostPlatform.system}.default;
};
catppuccinThemes = final: prev: {
catppuccinThemes = import ./themes/catppuccin.nix {pkgs = final.pkgs;};
};
nix-index-db = final: prev: {
nix-index-database = final.runCommandLocal "nix-index-database" {} ''
mkdir -p $out
ln -s ${
inputs.nix-index-database.legacyPackages.${prev.system}.database
} $out/files
'';
};
zellij = final: prev: {
zellijPlugins = { zellijPlugins = {
zjstatus = inputs.zjstatus.packages.${prev.system}.default; zjstatus = inputs.zjstatus.packages.${prev.stdenv.hostPlatform.system}.default;
}; };
}; };
libfprint = final: prev: {
# --- System libraries ---
system-libs = final: prev: {
# Custom libfprint with CS9711 fingerprint reader support
# https://github.com/archeYR/libfprint-CS9711/commits/cs9711-rebase/
libfprint = prev.libfprint.overrideAttrs (oldAttrs: { libfprint = prev.libfprint.overrideAttrs (oldAttrs: {
version = "git"; version = "git";
# https://github.com/archeYR/libfprint-CS9711/commits/cs9711-rebase/
src = final.fetchFromGitHub { src = final.fetchFromGitHub {
owner = "archeYR"; owner = "archeYR";
repo = "libfprint-CS9711"; repo = "libfprint-CS9711";
@@ -237,66 +54,73 @@
final.doctest final.doctest
]; ];
}); });
# fprintd = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fprintd;
# fprintd = prev.fprintd.overrideAttrs (oldAttrs: {
# src = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fprintd.src;
# });
}; };
csshacks = final: prev: {
csshacks = inputs.csshacks; # --- Networking ---
networking = final: prev: {
caddyWithCloudflare = inputs.nixpkgs.legacyPackages.${prev.stdenv.hostPlatform.system}.caddy.withPlugins {
plugins = ["github.com/caddy-dns/cloudflare@v0.2.2"];
hash = "sha256-Gb1nC5fZfj7IodQmKmEPGygIHNYhKWV1L0JJiqnVtbs=";
};
}; };
jellyfin = final: prev: {
jellyfin-web = prev.jellyfin-web.overrideAttrs (finalAttrs: previousAttrs: {
installPhase = ''
runHook preInstall
# this is the important line # --- Media ---
sed -i "s#</head>#<script src=\"configurationpage?name=skip-intro-button.js\"></script></head>#" dist/index.html media = final: prev: {
ddcbacklight = inputs.ddcbacklight.packages.${prev.stdenv.hostPlatform.system}.ddcbacklight;
music-player-git = inputs.music-player.packages.${prev.stdenv.hostPlatform.system}.default;
};
mkdir -p $out/share # --- macOS-specific ---
cp -a dist $out/share/jellyfin-web darwin = final: prev: {
kitty = inputs.nixpkgs-stable.legacyPackages.${prev.stdenv.hostPlatform.system}.kitty;
runHook postInstall yabai = prev.yabai.overrideAttrs (oldAttrs: rec {
''; version = "7.1.16";
src = final.fetchzip {
url = "https://github.com/koekeishiya/yabai/releases/download/v${version}/yabai-v${version}.tar.gz";
hash = "sha256-rEO+qcat6heF3qrypJ02Ivd2n0cEmiC/cNUN53oia4w=";
};
}); });
}; };
# immich = final: prev: {
# immich-latest = prev.immich.overrideAttrs (oldAttrs: { applications = final: prev: {
# version = "v1.142.0"; iamb = inputs.iamb.packages.${prev.stdenv.hostPlatform.system}.default;
# src = inputs.immich; hyprland = inputs.hyprland.packages.${prev.stdenv.hostPlatform.system}.hyprland;
# }); xdg-desktop-portal-hyprland = prev.enableDebugging inputs.hyprland.packages.${prev.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
# }; xdph = inputs.nixpkgs-master.legacyPackages.${prev.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
vr = final: prev: { ironclaw = (cratesNix prev).buildCrate "ironclaw" {
# wivrn-nightly = prev.wivrn.overrideAttrs (oldAttrs: { nativeBuildInputs = [prev.pkg-config];
# version = "v25.11.1"; buildInputs = [prev.openssl];
# src = inputs.wivrn; doCheck = false;
# }); };
wivrn-nightly = inputs.wivrn.packages.${prev.system}.default;
}; };
games = final: prev: {
hytale-launcher = inputs.hytale-launcher.packages.${prev.system}.default; # --- Themes and assets ---
themes = final: prev: {
catppuccinThemes = import ./themes/catppuccin.nix {pkgs = final.pkgs;};
nix-index-database = final.runCommandLocal "nix-index-database" {} ''
mkdir -p $out
ln -s ${inputs.nix-index-database.legacyPackages.${prev.stdenv.hostPlatform.system}.database} $out/files
'';
}; };
in in
[ [
games # Local overlays
vr shell-scripts
anyrun-overlay terminal
catppuccinThemes system-libs
csshacks networking
media
darwin
themes
applications
# External input overlays
inputs.deploy-rs.overlays.default inputs.deploy-rs.overlays.default
inputs.nix-minecraft.overlay inputs.eilmeldung.overlays.default
inputs.nur.overlays.default
inputs.rust-overlay.overlays.default
inputs.handoff.overlays.default inputs.handoff.overlays.default
inputs.headplane.overlays.default inputs.headplane.overlays.default
inputs.nix-minecraft.overlay
inputs.nur.overlays.default
inputs.vicinae.overlays.default inputs.vicinae.overlays.default
inputs.eilmeldung.overlays.default
jellyfin
libfprint
misc-applications
nix-index-db
shell-scipts
tmuxPlugins
zellij
] ]
++ (import ./neovim/overlays.nix {inherit inputs;}) ++ (import ./neovim/overlays.nix {inherit inputs;})

File diff suppressed because one or more lines are too long