Compare commits
7 Commits
14fb9504a7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
e79146364c
|
|||
|
a93ff98461
|
|||
|
cce3c78ae5
|
|||
|
47c31cc539
|
|||
|
b8c6862880
|
|||
|
1f4f716de1
|
|||
|
d05b4a8483
|
@@ -0,0 +1,144 @@
|
|||||||
|
# Doloro's Dotfiles
|
||||||
|
|
||||||
|
NixOS dotfiles managed via **flake-parts** + **den** (custom flake framework). Multi-host: desktop, laptop, WSL, RPi5 server.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
dotfiles/
|
||||||
|
├── flake.nix # Entry point: `outputs = inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config);`
|
||||||
|
├── .sops.yaml # Age-encrypted secrets (6 keys: desktop/laptop user+system, rpi5)
|
||||||
|
├── config/
|
||||||
|
│ ├── dendritic.nix # Root config import
|
||||||
|
│ ├── inputs.nix # Flake input definitions
|
||||||
|
│ ├── namespace.nix # Namespace setup
|
||||||
|
│ ├── defaults.nix # Default values
|
||||||
|
│ ├── hosts/
|
||||||
|
│ │ ├── computers.nix # desktop (x86_64), laptop (aarch64), wsl (aarch64), doloro-bootable
|
||||||
|
│ │ ├── servers.nix # rpi5 (aarch64)
|
||||||
|
│ │ └── aspects/ # Host-specific configurations
|
||||||
|
│ │ ├── doloro-shared.nix # Common to all doloro hosts (nixvim, tmux, git, ssh, hyfetch)
|
||||||
|
│ │ ├── doloro-desktop/ # Desktop-specific (disko, hardware, home, host)
|
||||||
|
│ │ ├── doloro-laptop/ # Laptop-specific (disko, hardware, home, host, power-management)
|
||||||
|
│ │ ├── doloro-wsl/ # WSL-specific (home, host)
|
||||||
|
│ │ ├── doloro-bootable/ # Bootable USB (home, host)
|
||||||
|
│ │ └── servers/rpi5.nix # Raspberry Pi 5
|
||||||
|
│ └── modules/ # Reusable configuration modules
|
||||||
|
│ ├── ai/ # AI tools (pi-coding-agent, OpenMeteo)
|
||||||
|
│ ├── gaming/ # Steam, gamemode, gamepad
|
||||||
|
│ ├── hyprland/ # Window manager
|
||||||
|
│ ├── niri/ # Alternative WM
|
||||||
|
│ ├── nixvim/ # Neovim config
|
||||||
|
│ ├── power-management/ # TLP, auto-cpufreq, battery targets
|
||||||
|
│ ├── secrets/ # SOPS-managed secrets
|
||||||
|
│ ├── services/ # Caddy, DDNS, Home Assistant, Traefik, RTMP
|
||||||
|
│ └── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Hosts
|
||||||
|
|
||||||
|
| Host | Arch | Type | Key Modules |
|
||||||
|
| ------ | ------ | ------ | ------------- |
|
||||||
|
| `desktop` | x86_64 | NixOS + HM | Hyprland, gaming, disko, full stack |
|
||||||
|
| `laptop` | aarch64 | NixOS + HM | Power management, Hyprland |
|
||||||
|
| `wsl` | aarch64 | NixOS | WSL setup |
|
||||||
|
| `doloro-bootable` | x86_64 | NixOS | Bootable USB recovery |
|
||||||
|
| `rpi5` | aarch64 | NixOS | Server, no GUI |
|
||||||
|
|
||||||
|
## Key Tools & Stack
|
||||||
|
|
||||||
|
- **Window Manager**: Hyprland (primary), Niri (alternative)
|
||||||
|
- **Editor**: Nixvim (Neovim) — Gruvbox Material, LSP (rust-analyzer, nixd, tsserver), Treesitter, Lualine, Telescope, LazyGit
|
||||||
|
- **Shell**: Fish
|
||||||
|
- **AI**: Pi Coding Agent v0.81.1 (LiteLLM via `scuggo` proxy)
|
||||||
|
- Models: meow (litellm), claude-opus-4-8, gpt-5.5, gpt-5.4-mini (recap/title)
|
||||||
|
- Skills: pi-lens, pi-lean-ctx, pi-vitals, pi-spark, pi-caveman, pi-pretty, pi-context-engineering
|
||||||
|
- **Terminal**: Kitty
|
||||||
|
- **Browser**: Zen Browser, Helium
|
||||||
|
- **Music**: Spicetify (Spotify)
|
||||||
|
- **Aurora**: Stylix (themes), NixOS-Hardware
|
||||||
|
- **Container**: Podman
|
||||||
|
- **Flatpak**: nix-flatpak
|
||||||
|
- **Secrets**: SOPS + Age (6 keys for desktop/laptop user+system, rpi5)
|
||||||
|
- **Nerd Fonts**: Custom patched (Doloro1978/nix-nerd-fonts-patcher)
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
|
||||||
|
1. **Never edit `flake.nix` directly** — run `nix run .#write-flake` to regenerate
|
||||||
|
2. **Secrets** live in `config/modules/secrets/` — encrypted via SOPS age keys in `.sops.yaml`
|
||||||
|
3. **Modules** are modular: split by concern (ai, gaming, hyprland, power-management, services)
|
||||||
|
4. **Hosts** split into `computers.nix` and `servers.nix` — each host gets `aspect` references
|
||||||
|
5. **Shared config** lives in `doloro-shared.nix` — imported by all doloro hosts
|
||||||
|
6. **Disko** handles disk layouts for desktop/laptop
|
||||||
|
7. **Power management** is laptop-specific: TLP, auto-cpufreq, battery AC targets, Intel GPU, TDP
|
||||||
|
8. **CachyOS kernel** available as module for desktop
|
||||||
|
|
||||||
|
## Common Operations
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Apply configuration
|
||||||
|
sudo nixos-rebuild switch --flake .#desktop
|
||||||
|
|
||||||
|
# Home Manager (doloro user)
|
||||||
|
home-manager switch --flake .#doloro-desktop
|
||||||
|
|
||||||
|
# Update flake inputs
|
||||||
|
nix flake update
|
||||||
|
|
||||||
|
# Write regenerated flake.nix
|
||||||
|
nix run .#write-flake
|
||||||
|
|
||||||
|
# Encrypt a secret
|
||||||
|
nix run .#sops-encrypt <file>
|
||||||
|
|
||||||
|
# Enter development shell
|
||||||
|
nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
## Validating Config Changes
|
||||||
|
|
||||||
|
Standard validation sequence before relying on any edit to a `.nix` module (used for opencode, ai, and other module changes):
|
||||||
|
|
||||||
|
1. **Parse check** (fast, catches syntax/brace errors):
|
||||||
|
```bash
|
||||||
|
nix-instantiate --parse config/modules/ai/ai.nix >/dev/null && echo "PARSE OK"
|
||||||
|
```
|
||||||
|
2. **Hash verification** for any downloaded file pinned via `pkgs.fetchurl` — compute the sha256 locally and confirm it matches the `sha256` in the module:
|
||||||
|
```bash
|
||||||
|
nix hash file token-tracker.tsx # or: sha256sum token-tracker.tsx
|
||||||
|
```
|
||||||
|
3. **Flake evaluation** — full `nix flake check` may fail on unrelated pre-existing issues (e.g. `<den/primary-user>` not on NIX_PATH in pure mode). Distinguish pre-existing failures from edit-induced ones before touching the code. `nix flake show --impure` lists the configuration names (`nixosConfigurations: desktop, doloro-bootable, laptop, rpi5, wsl`).
|
||||||
|
4. **Runtime output check** — the generated config is a home-manager symlink into `/nix/store`. After a rebuild, confirm the live files actually contain the change:
|
||||||
|
```bash
|
||||||
|
readlink -f ~/.config/opencode/opencode.json # → /nix/store/...-opencode.json
|
||||||
|
rg -n "my-change" "$(readlink -f ~/.config/opencode/opencode.json)"
|
||||||
|
```
|
||||||
|
Also verify supporting files that the change depends on (plugins dir, extra packages, etc.):
|
||||||
|
```bash
|
||||||
|
ls -la ~/.config/opencode/plugins/ && readlink -f ~/.config/opencode/plugins/*.tsx
|
||||||
|
```
|
||||||
|
5. **Cache check** for npm-resolved opencode plugins — confirm opencode actually downloaded the package into its plugin cache:
|
||||||
|
```bash
|
||||||
|
ls ~/.cache/opencode/packages/ | rg "plugin-name"
|
||||||
|
```
|
||||||
|
If the package is absent or an old version, the plugin won't load regardless of config.
|
||||||
|
6. **Log check** — search opencode's log for plugin-load errors, filtering out your own tool-call noise:
|
||||||
|
```bash
|
||||||
|
rg -i "plugin" ~/.local/share/opencode/log/opencode.log | rg -v "evaluated permission" | tail -30
|
||||||
|
```
|
||||||
|
7. **Config is loaded once at startup** — a running opencode session keeps the config it loaded at launch. After changing any config file, restart opencode (and run a home-manager rebuild first) before expecting the change to take effect.
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- `allowUnfree = true` globally for proprietary packages (Steam, Spotify, etc.)
|
||||||
|
- Multiple cachix substitutes configured for speed (hyprland, nix-community, niri, raspberrypi, cuda)
|
||||||
|
- Pi coding agent uses `scuggo` LiteLLM proxy at `https://9f5db439.fwds.scug.io`
|
||||||
|
- API key via env var `$SCUG_IO_API_KEY`
|
||||||
|
- WSL host uses `nixos-wsl` flake input
|
||||||
|
- RPi5 uses `nixos-raspberrypi` and `raspberry-pi-nix`
|
||||||
|
|
||||||
|
## File Rules
|
||||||
|
|
||||||
|
- `.gitignore`: exclude `nix/result`, `result`, `nvim`, `tmux/plugins`, `modules/quickshell/quickshell/.qmlls.ini`
|
||||||
|
- `.new` file exists (empty) — likely a marker
|
||||||
|
- `.claude/` directory present (Claude Code config)
|
||||||
@@ -38,10 +38,13 @@
|
|||||||
modules.spotify
|
modules.spotify
|
||||||
# modules.easyeffects
|
# modules.easyeffects
|
||||||
# modules.lavd
|
# modules.lavd
|
||||||
modules.ai
|
<modules/ai/secrets>
|
||||||
|
# modules.ai
|
||||||
|
modules.pi-coding # inactive: swapped to opencode
|
||||||
# modules.omp
|
# modules.omp
|
||||||
modules.podman
|
modules.podman
|
||||||
<modules/ai/ollama-cuda>
|
modules.wivrn
|
||||||
|
# <modules/ai/ollama-cuda>
|
||||||
];
|
];
|
||||||
nixos =
|
nixos =
|
||||||
{
|
{
|
||||||
@@ -75,23 +78,23 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings = {
|
xdg.configFile."hypr/hyprland-local.lua" = {
|
||||||
monitor = [
|
text = ''
|
||||||
"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
-- Host overrides (desktop): pin workspaces to monitors.
|
||||||
"DP-2, 1920x1080@120, 1920x0, 1"
|
-- HDMI-A-1 (left) shows workspace 1, DP-2 (right) shows workspace 2.
|
||||||
];
|
hl.workspace_rule({ workspace = "name:1", monitor = "HDMI-A-1" })
|
||||||
exec-once = [
|
hl.workspace_rule({ workspace = "name:2", monitor = "DP-2" })
|
||||||
"hyprctl dispatch workspace 2" # shit solution to get quickshell on the right monitor
|
|
||||||
];
|
-- Autostart (workspace placement applies only to these spawned windows)
|
||||||
workspace = [
|
hl.on("hyprland.start", function()
|
||||||
"name:2, monitor:DP-2"
|
hl.exec_cmd("steam", { workspace = "6 silent" })
|
||||||
];
|
hl.exec_cmd("telegram-desktop", { workspace = "8 silent" })
|
||||||
input = {
|
hl.exec_cmd("equibop", { workspace = "8 silent" })
|
||||||
kb_layout = "gb";
|
hl.exec_cmd("spotify", { workspace = "9 silent" })
|
||||||
follow_mouse = 2;
|
hl.exec_cmd("obs", { workspace = "10 silent" })
|
||||||
sensitivity = -0.5;
|
end)
|
||||||
};
|
'';
|
||||||
};
|
};
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
equibop
|
equibop
|
||||||
telegram-desktop
|
telegram-desktop
|
||||||
@@ -108,7 +111,6 @@
|
|||||||
krita
|
krita
|
||||||
# (tetrio-desktop.override { withTetrioPlus = true; })
|
# (tetrio-desktop.override { withTetrioPlus = true; })
|
||||||
# bottles
|
# bottles
|
||||||
# pi-coding-agent
|
|
||||||
# orca-slicer's wrapGAppsHook does not actually wrap the installed
|
# orca-slicer's wrapGAppsHook does not actually wrap the installed
|
||||||
# binary, so neither the GSettings schema path nor the NVIDIA/zink
|
# binary, so neither the GSettings schema path nor the NVIDIA/zink
|
||||||
# workaround env from `withNvidiaGLWorkaround` reach the process.
|
# workaround env from `withNvidiaGLWorkaround` reach the process.
|
||||||
@@ -135,11 +137,11 @@
|
|||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
# Skipping tests while upstream sorts it out, revert once
|
# Skipping tests while upstream sorts it out, revert once
|
||||||
# Hydra consistently builds openldap green.
|
# Hydra consistently builds openldap green.
|
||||||
(final: prev: {
|
# (final: prev: {
|
||||||
openldap = prev.openldap.overrideAttrs (_: {
|
# openldap = prev.openldap.overrideAttrs (_: {
|
||||||
doCheck = false;
|
# doCheck = false;
|
||||||
});
|
# });
|
||||||
})
|
# })
|
||||||
];
|
];
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nixpkgs.config.problems.handlers = {
|
nixpkgs.config.problems.handlers = {
|
||||||
|
|||||||
@@ -38,14 +38,26 @@
|
|||||||
"rd.systemd.show_status=auto"
|
"rd.systemd.show_status=auto"
|
||||||
];
|
];
|
||||||
|
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
configPackages = [ pkgs.xdg-desktop-portal-wlr ];
|
||||||
|
wlr = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
environment.systemPackages = with pkgs; [ polkit_gnome ];
|
||||||
|
|
||||||
hardware.graphics = {
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
libva-minimal
|
libva-minimal
|
||||||
|
|||||||
@@ -37,23 +37,13 @@
|
|||||||
homeManager =
|
homeManager =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings = {
|
xdg.configFile."hypr/hyprland-local.lua" = {
|
||||||
# monitor = [
|
text = ''
|
||||||
# "eDP-1, 2880x1800@120, 0x0, 2"
|
-- Host overrides (laptop)
|
||||||
# ];
|
hl.config({ ["decoration.blur.enabled"] = false })
|
||||||
input = {
|
hl.config({ ["input.sensitivity"] = 0 })
|
||||||
kb_layout = "gb";
|
hl.device({ name = "default", sensitivity = 0 })
|
||||||
follow_mouse = 2;
|
'';
|
||||||
sensitivity = 0;
|
|
||||||
};
|
|
||||||
decoration = {
|
|
||||||
blur = lib.mkForce {
|
|
||||||
enabled = false;
|
|
||||||
passes = 1;
|
|
||||||
new_optimizations = true;
|
|
||||||
ignore_opacity = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
telegram-desktop
|
telegram-desktop
|
||||||
|
|||||||
@@ -30,7 +30,8 @@
|
|||||||
};
|
};
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
};
|
};
|
||||||
nixos = {lib, ...}: {
|
nixos = { lib, ... }: {
|
||||||
|
boot.kernelModules = [ "ntsync" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,5 +6,6 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
|
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
|
||||||
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+25
-43
@@ -15,22 +15,8 @@
|
|||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.claude-code
|
pkgs.claude-code
|
||||||
|
pkgs.snip
|
||||||
];
|
];
|
||||||
sops = {
|
|
||||||
secrets.scug-io-ai-key = {
|
|
||||||
# sopsFile = ./secrets.yaml;
|
|
||||||
# Decrypted file path (available at runtime, not eval time)
|
|
||||||
path = config.home.homeDirectory + "/.secrets/scug_io_api_key";
|
|
||||||
sopsFile = ../secrets/content/secrets.yaml;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.fish = {
|
|
||||||
shellInit = ''
|
|
||||||
if test -f "$HOME/.secrets/scug_io_api_key"
|
|
||||||
set -x SCUG_IO_API_KEY (cat "$HOME/.secrets/scug_io_api_key")
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
programs.opencode = {
|
programs.opencode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -55,7 +41,15 @@
|
|||||||
"@xberg-io/opencode-crawlberg"
|
"@xberg-io/opencode-crawlberg"
|
||||||
"@xberg-io/opencode-html-to-markdown"
|
"@xberg-io/opencode-html-to-markdown"
|
||||||
"@xberg-io/opencode-liter-llm"
|
"@xberg-io/opencode-liter-llm"
|
||||||
|
"opencode-plugin-litellm@latest"
|
||||||
"@xberg-io/opencode-tree-sitter-language-pack"
|
"@xberg-io/opencode-tree-sitter-language-pack"
|
||||||
|
# Token slimming: filters shell command output via snip CLI
|
||||||
|
# (https://github.com/VincentHardouin/opencode-snip)
|
||||||
|
"opencode-snip@latest"
|
||||||
|
# Replace/extend the per-model system prompt via
|
||||||
|
# ~/.config/opencode/system-prompts.json
|
||||||
|
# (https://github.com/kmcquade/opencode-sysprompt-override-plugin)
|
||||||
|
"opencode-sysprompt-override@latest"
|
||||||
];
|
];
|
||||||
provider.litellm = {
|
provider.litellm = {
|
||||||
npm = "@ai-sdk/openai-compatible";
|
npm = "@ai-sdk/openai-compatible";
|
||||||
@@ -64,37 +58,25 @@
|
|||||||
baseURL = "https://9f5db439.fwds.scug.io/v1";
|
baseURL = "https://9f5db439.fwds.scug.io/v1";
|
||||||
apiKey = "{env:SCUG_IO_API_KEY}";
|
apiKey = "{env:SCUG_IO_API_KEY}";
|
||||||
};
|
};
|
||||||
models = {
|
};
|
||||||
"openai/Qwen3.6-35B-A3B" = {
|
# Built-in OpenCode Go provider (https://opencode.ai/zen/go) —
|
||||||
id = "Qwen3.6-35B-A3B";
|
# key from sops secret opencode-go-zen-key via $OPENCODE_GO_API_KEY
|
||||||
name = "Qwen3.6-35B-A3B";
|
provider.opencode-go = {
|
||||||
family = "Qwen";
|
options = {
|
||||||
limit = {
|
apiKey = "{env:OPENCODE_GO_API_KEY}";
|
||||||
context = 262144;
|
|
||||||
input = 262144;
|
|
||||||
output = 16384;
|
|
||||||
};
|
|
||||||
cost = {
|
|
||||||
input = 0.00002;
|
|
||||||
output = 0.00006;
|
|
||||||
};
|
|
||||||
provider = {
|
|
||||||
api = "openai";
|
|
||||||
};
|
|
||||||
modalities = {
|
|
||||||
input = [ "text" ];
|
|
||||||
output = [ "text" ];
|
|
||||||
};
|
|
||||||
status = "active";
|
|
||||||
reasoning = true;
|
|
||||||
temperature = false;
|
|
||||||
tool_call = true;
|
|
||||||
attachment = false;
|
|
||||||
experimental = false;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# TUI plugin: token-tracker (https://github.com/eserete/opencode-token-tracker)
|
||||||
|
tui = {
|
||||||
|
plugin = [ "./plugins/token-tracker.tsx" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg.configFile."opencode/plugins/token-tracker.tsx" = {
|
||||||
|
source = pkgs.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/eserete/opencode-token-tracker/main/token-tracker.tsx";
|
||||||
|
sha256 = "a1d56f6d86f512ca2e81653a57ff372c2ea0a3398bcdbebda6de9f9ed89ee45a";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
/**
|
||||||
|
* Model cost display extension - shows cost info in status bar.
|
||||||
|
*
|
||||||
|
* Format: "$X.XX (Y.YY) in" where Y.YY is cache write cost if present.
|
||||||
|
*
|
||||||
|
* Usage: pi -e ./model-cost.ts
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type {
|
||||||
|
ExtensionAPI,
|
||||||
|
ModelSelectEvent,
|
||||||
|
UIContext,
|
||||||
|
} from "@earendil-works/pi-coding-agent";
|
||||||
|
|
||||||
|
export default function (pi: ExtensionAPI) {
|
||||||
|
const modelSelectHandler = async (
|
||||||
|
event: ModelSelectEvent,
|
||||||
|
ctx: UIContext,
|
||||||
|
) => {
|
||||||
|
const { model } = event;
|
||||||
|
|
||||||
|
// Get cost data from model config
|
||||||
|
const cost = getModelCost(model);
|
||||||
|
|
||||||
|
if (cost) {
|
||||||
|
ctx.ui.setStatus("model", cost);
|
||||||
|
} else {
|
||||||
|
ctx.ui.setStatus("model", "");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
pi.on("model_select", modelSelectHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getModelCost(model: any): string {
|
||||||
|
if (!model?.cost) return "";
|
||||||
|
|
||||||
|
const { input, output, cacheRead, cacheWrite } = model.cost;
|
||||||
|
|
||||||
|
// Only show if there's actual cost data
|
||||||
|
const hasCost =
|
||||||
|
input !== 0 || output !== 0 || cacheRead !== 0 || cacheWrite !== 0;
|
||||||
|
if (!hasCost) return "";
|
||||||
|
|
||||||
|
// Format: "$X.XX (Y.YY) in"
|
||||||
|
const parts: string[] = [];
|
||||||
|
|
||||||
|
if (input !== 0) {
|
||||||
|
const cachePrefix = cacheRead > 0 ? ` (↙${cacheRead}) ` : "";
|
||||||
|
parts.push(`$${input}${cachePrefix}in`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (output !== 0) {
|
||||||
|
const cachePrefix = cacheWrite > 0 ? ` (↗${cacheWrite}) ` : "";
|
||||||
|
parts.push(`$${output}${cachePrefix}out`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parts.length === 0) return "";
|
||||||
|
|
||||||
|
return parts.join(" / ");
|
||||||
|
}
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
// @ts-nocheck — jiti-loaded pi extension: package imports resolve via pi's
|
||||||
|
// extension loader aliases at runtime, not from this directory. No typecheck.
|
||||||
|
import fs from "node:fs";
|
||||||
|
import os from "node:os";
|
||||||
|
import path from "node:path";
|
||||||
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
||||||
|
import { getBuiltinModels } from "@earendil-works/pi-ai/providers/all";
|
||||||
|
import type { Model } from "@earendil-works/pi-ai";
|
||||||
|
|
||||||
|
interface ProviderFilter {
|
||||||
|
/** Keep only models whose cost is all zero (free). */
|
||||||
|
freeOnly?: boolean;
|
||||||
|
/** Keep only these model ids. */
|
||||||
|
keep?: string[];
|
||||||
|
/** Drop these model ids. */
|
||||||
|
drop?: string[];
|
||||||
|
/** Keep only models whose id contains any of these substrings. */
|
||||||
|
keepIdContaining?: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const isFree = (m: Model): boolean => {
|
||||||
|
const c = m.cost;
|
||||||
|
const baseFree =
|
||||||
|
c.input === 0 && c.output === 0 && c.cacheRead === 0 && c.cacheWrite === 0;
|
||||||
|
// A model with cost tiers is not free: tiers kick in above a token threshold.
|
||||||
|
return baseFree && !(c.tiers && c.tiers.length > 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
const matches = (m: Model, f: ProviderFilter): boolean => {
|
||||||
|
if (f.freeOnly && !isFree(m)) return false;
|
||||||
|
if (f.keep && f.keep.length > 0 && !f.keep.includes(m.id)) return false;
|
||||||
|
if (f.drop && f.drop.includes(m.id)) return false;
|
||||||
|
if (f.keepIdContaining && f.keepIdContaining.length > 0) {
|
||||||
|
if (!f.keepIdContaining.some((s) => m.id.includes(s))) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function (pi: ExtensionAPI): void {
|
||||||
|
const configPath = path.join(
|
||||||
|
os.homedir(),
|
||||||
|
".pi",
|
||||||
|
"agent",
|
||||||
|
"model-filters.json",
|
||||||
|
);
|
||||||
|
let config: { providers?: Record<string, ProviderFilter> };
|
||||||
|
try {
|
||||||
|
config = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
||||||
|
} catch {
|
||||||
|
return; // no config, no-op
|
||||||
|
}
|
||||||
|
for (const [providerId, filter] of Object.entries(config.providers ?? {})) {
|
||||||
|
const all = getBuiltinModels(providerId);
|
||||||
|
if (all.length === 0) {
|
||||||
|
console.warn(
|
||||||
|
"[model-filter] no built-in catalog for provider: " + providerId,
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const models = all.filter((m) => matches(m, filter));
|
||||||
|
// registerProvider with `models` replaces the provider's full model list;
|
||||||
|
// auth and streaming are inherited from the built-in provider.
|
||||||
|
pi.registerProvider(providerId, { models });
|
||||||
|
console.log(
|
||||||
|
"[model-filter] " +
|
||||||
|
providerId +
|
||||||
|
": " +
|
||||||
|
all.length +
|
||||||
|
" -> " +
|
||||||
|
models.length +
|
||||||
|
" models",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
+244
-5
@@ -1,10 +1,249 @@
|
|||||||
{ den, modules, ... }:
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
modules.pi-coding = {
|
modules.pi-coding = {
|
||||||
homeManager = {
|
homeManager =
|
||||||
programs.pi-coding-agent = {
|
{ pkgs, config, ... }:
|
||||||
enable = true;
|
{
|
||||||
|
programs.pi-coding-agent = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = [
|
||||||
|
pkgs.nodejs
|
||||||
|
# pkgs.lean-lsp-mcp
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
"litellm" = {
|
||||||
|
"providers" = {
|
||||||
|
"litellm" = {
|
||||||
|
"displayName" = "scuggo";
|
||||||
|
"baseUrl" = "https://ai-proxy.fwds.scug.io";
|
||||||
|
"apiKey" = "$SCUG_IO_API_KEY";
|
||||||
|
"compat" = {
|
||||||
|
"sendSessionAffinityHeaders" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"skills" = {
|
||||||
|
"enabled" = true;
|
||||||
|
};
|
||||||
|
"compat" = {
|
||||||
|
"sendSessionAffinityHeaders" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"mcp" = {
|
||||||
|
"enabled" = true;
|
||||||
|
};
|
||||||
|
"uiMode" = "fullscreen";
|
||||||
|
"showCacheMissNotices" = true;
|
||||||
|
"vstack" = {
|
||||||
|
"extensionManager" = {
|
||||||
|
"config" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
packages = [
|
||||||
|
# "npm:@odinlayer/pi-provider-litellm"
|
||||||
|
"npm:pi-provider-litellm"
|
||||||
|
# Web search / content extraction (opencode-crawlberg + opencode-html-to-markdown equivalent)
|
||||||
|
"npm:pi-web-access"
|
||||||
|
# Local document parsing / OCR (opencode-xberg equivalent)
|
||||||
|
"npm:pi-docparser"
|
||||||
|
# "npm:@gotgenes/pi-permission-system"
|
||||||
|
"npm:@vanillagreen/pi-extension-manager"
|
||||||
|
# "npm:@vanillagreen/pi-qol"
|
||||||
|
"npm:pi-vitals"
|
||||||
|
"npm:pi-spark"
|
||||||
|
# "npm:pi-caveman"
|
||||||
|
"npm:@tmustier/pi-usage-extension"
|
||||||
|
"npm:@heyhuynhgiabuu/pi-pretty"
|
||||||
|
"npm:pi-lens"
|
||||||
|
# "npm:pi-lean-ctx"
|
||||||
|
# "npm:@rohaquinlop/pi-deepseek-cache"
|
||||||
|
"npm:pi-cache-optimizer"
|
||||||
|
"npm:pi-opencode-go-cache"
|
||||||
|
"npm:@pi-vault/pi-dcp"
|
||||||
|
"git:github.com/DietrichGebert/ponytail"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
context = ''
|
||||||
|
Core Directive: precise execution, strict safety, long-term solutions.
|
||||||
|
1. Standards: hard fail unless overridden; files <=300 lines (refactor if exceeded); no hardcoding — config/env/consts only; no defaults — fail on missing config; no legacy/shims/auto-migrations, assume clean state; root fixes only, no cosmetic patches (report unrelated bugs).
|
||||||
|
2. Safety: never run destructive ops (rm, reset --hard, deletions) without explicit prior approval; respect sandbox mode (ro/write), request approval if blocked; new code = creative, existing code = minimal deltas (no style/rename drift).
|
||||||
|
3. Tools: todowrite for multi-step — exactly one in_progress, update on completion; rg for search; outputs truncated (~256 lines/10KB), read large files in chunks (<250 lines); edit = trust tool, no re-read, no added headers/comments; build/test/lint before yielding, yield only after todowrite done.
|
||||||
|
4. Communication: AGENTS.md governs — deepest file wins, user prompt overrides; 1-sentence next-action preamble before any tool call; final output GFM with clickable file refs (src/main.ts:50), no file://, technical/dense/impersonal.
|
||||||
|
|
||||||
|
[CORE TOOLING DOCTRINE]
|
||||||
|
- Files: read truncates at 2000 lines/50KB (use offset/limit); write creates/overwrites/auto-parents; edit = smallest unique oldText, merge nearby, never include huge unchanged regions. Never cat/echo/tee/sed -i/head/tail for file content.
|
||||||
|
- Search: rg -n for text; grep tool (glob filter) for content; find tool for glob discovery only.
|
||||||
|
- Navigation: symbol_search → module_report → read_symbol/read_enclosing; never find + manual parsing.
|
||||||
|
- Diagnostics: lens_diagnostics (delta=this turn, all=session, full=project-wide before done); lsp_diagnostics before builds.
|
||||||
|
- Context: recall_context(id) to recover compressed/expired/truncated content.
|
||||||
|
- bash: only for git/nix/builds/scripts/network/system mgmt; set timeout for long ops.
|
||||||
|
- CRITICAL: never find on /nix/store — unpruned walk locks up execution; ls known paths, ask user for unknown paths. ABSOLUTE.
|
||||||
|
- You have a web-search tool. Use it sparingly but reach for it in situations where info isnt directly known. (i.e, "common problem" -> get from memory, think hard if needed, "hard problem that isnt in your training data or request for you to read docs for a lib or program" -> search online)
|
||||||
|
- Searching for anything (including with wildcards ("/nix/store/*/**" or others)) isnt permitted at all. You must find paths inside the project, such a result/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# pi-vitals config
|
||||||
|
home.file.".pi/agent/powerline.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
leftSegments = [
|
||||||
|
"pi"
|
||||||
|
"separator"
|
||||||
|
"model"
|
||||||
|
"thinking"
|
||||||
|
"ext_status"
|
||||||
|
"separator"
|
||||||
|
"path"
|
||||||
|
"git"
|
||||||
|
"separator"
|
||||||
|
"token_total"
|
||||||
|
"token_in"
|
||||||
|
"token_out"
|
||||||
|
"cache_read"
|
||||||
|
"cache_write"
|
||||||
|
];
|
||||||
|
rightSegments = [
|
||||||
|
"separator"
|
||||||
|
"cost"
|
||||||
|
"model_cost"
|
||||||
|
"context_pct"
|
||||||
|
];
|
||||||
|
icons = {
|
||||||
|
pi = "π";
|
||||||
|
model = "◈";
|
||||||
|
thinking = "🧠";
|
||||||
|
folder = "📁";
|
||||||
|
repo = "📦";
|
||||||
|
git = "⎇";
|
||||||
|
tokens = "⊛";
|
||||||
|
input = "↑";
|
||||||
|
output = "↓";
|
||||||
|
cacheRead = "↙";
|
||||||
|
cacheWrite = "↗";
|
||||||
|
contextPct = "◫";
|
||||||
|
cost = "$";
|
||||||
|
modelCost = "(in/out)";
|
||||||
|
separator = "│";
|
||||||
|
};
|
||||||
|
colors = {
|
||||||
|
pi = "accent";
|
||||||
|
model = "#d787af";
|
||||||
|
path = "#00afaf";
|
||||||
|
git = "success";
|
||||||
|
gitDirty = "warning";
|
||||||
|
gitClean = "success";
|
||||||
|
thinking = "muted";
|
||||||
|
context = "dim";
|
||||||
|
contextWarn = "warning";
|
||||||
|
contextError = "error";
|
||||||
|
cost = "text";
|
||||||
|
modelCost = "text";
|
||||||
|
tokens = "muted";
|
||||||
|
separator = "dim";
|
||||||
|
};
|
||||||
|
segmentOptions = {
|
||||||
|
path = {
|
||||||
|
mode = "basename";
|
||||||
|
};
|
||||||
|
git = {
|
||||||
|
showBranch = true;
|
||||||
|
showStaged = true;
|
||||||
|
showUnstaged = true;
|
||||||
|
showUntracked = true;
|
||||||
|
};
|
||||||
|
context_pct = {
|
||||||
|
showAutoIcon = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.file.".pi/agent/auth.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
"opencode-go" = {
|
||||||
|
"type" = "api_key";
|
||||||
|
"key" = "$OPENCODE_GO_API_KEY";
|
||||||
|
};
|
||||||
|
"opencode" = {
|
||||||
|
"type" = "api_key";
|
||||||
|
"key" = "$OPENCODE_GO_API_KEY";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Cache/routing compat overrides (provider-level minimal)
|
||||||
|
home.file.".pi/agent/models.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
providers = {
|
||||||
|
"opencode-go" = {
|
||||||
|
compat = {
|
||||||
|
supportsLongCacheRetention = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Restrict providers to a subset of their built-in models.
|
||||||
|
# Filter config: ~/.pi/agent/model-filters.json (see below).
|
||||||
|
home.file.".pi/agent/extensions/model-filter.ts" = {
|
||||||
|
source = ./model-filter.ts;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Show model cost in status bar
|
||||||
|
home.file.".pi/agent/extensions/model-cost.ts" = {
|
||||||
|
source = ./model-cost.ts;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Model filter config: per-provider filters applied by model-filter.ts
|
||||||
|
home.file.".pi/agent/model-filters.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
providers = {
|
||||||
|
# opencode: only free models (all cost zero)
|
||||||
|
opencode = {
|
||||||
|
freeOnly = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# pi-web-access config: raw results, no curator / no AI summarising
|
||||||
|
home.file.".pi/web-search.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
workflow = "none";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# pi-spark config
|
||||||
|
home.file.".pi/agent/spark.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
editor = {
|
||||||
|
spinner = "tildes";
|
||||||
|
};
|
||||||
|
footer = false;
|
||||||
|
presets = {
|
||||||
|
"scuggo" = {
|
||||||
|
provider = "litellm";
|
||||||
|
model = "Ornith-1.0-9B";
|
||||||
|
thinkingLevel = "medium";
|
||||||
|
};
|
||||||
|
"claude" = {
|
||||||
|
provider = "anthropic";
|
||||||
|
model = "claude-opus-4-8";
|
||||||
|
thinkingLevel = "high";
|
||||||
|
};
|
||||||
|
"gpt" = {
|
||||||
|
provider = "openai-codex";
|
||||||
|
model = "gpt-5.5";
|
||||||
|
thinkingLevel = "medium";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{ modules, ... }:
|
||||||
|
{
|
||||||
|
modules.ai = {
|
||||||
|
provides = {
|
||||||
|
secrets = {
|
||||||
|
homeManager =
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
sops = {
|
||||||
|
secrets.scug-io-ai-key = {
|
||||||
|
# Decrypted file path (available at runtime, not eval time)
|
||||||
|
path = config.home.homeDirectory + "/.secrets/scug_io_api_key";
|
||||||
|
sopsFile = ../secrets/content/secrets.yaml;
|
||||||
|
};
|
||||||
|
secrets.opencode-go-zen-key = {
|
||||||
|
# Decrypted file path (available at runtime, not eval time)
|
||||||
|
path = config.home.homeDirectory + "/.secrets/opencode-go-zen-key";
|
||||||
|
sopsFile = ../secrets/content/secrets.yaml;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.fish = {
|
||||||
|
shellInit = ''
|
||||||
|
if test -f "$HOME/.secrets/scug_io_api_key"
|
||||||
|
set -x SCUG_IO_API_KEY (cat "$HOME/.secrets/scug_io_api_key")
|
||||||
|
end
|
||||||
|
if test -f "$HOME/.secrets/opencode-go-zen-key"
|
||||||
|
set -x OPENCODE_GO_API_KEY (cat "$HOME/.secrets/opencode-go-zen-key")
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
homeManager = {
|
homeManager = {
|
||||||
services.dunst = {
|
services.dunst = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# systemd.enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
global = {
|
global = {
|
||||||
font = "Noto Nerd Font 8";
|
font = "Noto Nerd Font 8";
|
||||||
|
|||||||
@@ -54,11 +54,15 @@
|
|||||||
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
|
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
|
||||||
text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}'';
|
text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}'';
|
||||||
};
|
};
|
||||||
wayland.windowManager.hyprland.settings = lib.mkIf settings.default {
|
wayland.windowManager.hyprland.extraLuaFiles = lib.mkIf settings.default {
|
||||||
binds = [
|
"helium-bind.lua" = {
|
||||||
"$mainMod, E, exec, helium"
|
autoLoad = true;
|
||||||
];
|
content = ''
|
||||||
};
|
-- Helium launcher bind (lua config: settings.bind cannot express dispatchers)
|
||||||
|
hl.bind("SUPER + E", hl.dsp.exec_cmd("helium"))
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,187 @@
|
|||||||
home,
|
home,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
tofiCfg = pkgs.writeTextFile {
|
||||||
|
name = "hyprland-tofi-config";
|
||||||
|
text = ''
|
||||||
|
width = 100%
|
||||||
|
height = 100%
|
||||||
|
border-width = 0
|
||||||
|
outline-width = 0
|
||||||
|
padding-left = 35%
|
||||||
|
padding-top = 35%
|
||||||
|
result-spacing = 25
|
||||||
|
num-results = 5
|
||||||
|
font = monospace
|
||||||
|
background-color = #000A
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
meowScript = pkgs.writeShellScript "meow" ''
|
||||||
|
fish -c 'grim -g $(slurp) -t png - &| wl-copy -t image/png; killall wayfreeze'
|
||||||
|
'';
|
||||||
|
mreowScript = pkgs.writeShellScript "mreow" ''
|
||||||
|
exec $(tofi-drun -c ${tofiCfg})
|
||||||
|
'';
|
||||||
|
mainMod = "SUPER";
|
||||||
|
hlBind = key: dispatcher: "hl.bind(\"${key}\", ${dispatcher})";
|
||||||
|
workspaceLines = pkgs.lib.concatLists (
|
||||||
|
builtins.genList (
|
||||||
|
i:
|
||||||
|
let
|
||||||
|
ws = toString (i + 1);
|
||||||
|
in
|
||||||
|
[
|
||||||
|
(hlBind "${mainMod} + ${ws}" "hl.dsp.focus({ workspace = ${ws} })")
|
||||||
|
(hlBind "${mainMod} + SHIFT + ${ws}" "hl.dsp.window.move({ workspace = ${ws} })")
|
||||||
|
]
|
||||||
|
) 9
|
||||||
|
);
|
||||||
|
hlBindCode = pkgs.lib.concatStringsSep "\n" (
|
||||||
|
[
|
||||||
|
"-- Hyprland configuration"
|
||||||
|
""
|
||||||
|
"local mainMod = \"${mainMod}\""
|
||||||
|
""
|
||||||
|
"-- Config"
|
||||||
|
"hl.config({"
|
||||||
|
" general = {"
|
||||||
|
" gaps_in = 1,"
|
||||||
|
" gaps_out = 1,"
|
||||||
|
" border_size = 1,"
|
||||||
|
" resize_on_border = false,"
|
||||||
|
" allow_tearing = true,"
|
||||||
|
" layout = \"dwindle\","
|
||||||
|
" },"
|
||||||
|
" input = {"
|
||||||
|
" follow_mouse = 2,"
|
||||||
|
" kb_layout = \"gb\","
|
||||||
|
" },"
|
||||||
|
" decoration = {"
|
||||||
|
" rounding = 4,"
|
||||||
|
" rounding_power = 1,"
|
||||||
|
" active_opacity = 1.0,"
|
||||||
|
" inactive_opacity = 1.0,"
|
||||||
|
" shadow = {"
|
||||||
|
" enabled = false,"
|
||||||
|
" },"
|
||||||
|
" blur = {"
|
||||||
|
" enabled = true,"
|
||||||
|
" passes = 1,"
|
||||||
|
" new_optimizations = true,"
|
||||||
|
" ignore_opacity = false,"
|
||||||
|
" },"
|
||||||
|
" },"
|
||||||
|
" cursor = {"
|
||||||
|
" no_hardware_cursors = false,"
|
||||||
|
" },"
|
||||||
|
" dwindle = {"
|
||||||
|
" preserve_split = true,"
|
||||||
|
" },"
|
||||||
|
" misc = {"
|
||||||
|
" force_default_wallpaper = -1,"
|
||||||
|
" disable_hyprland_logo = false,"
|
||||||
|
" enable_anr_dialog = false,"
|
||||||
|
" },"
|
||||||
|
"})"
|
||||||
|
""
|
||||||
|
"-- Monitors"
|
||||||
|
"hl.monitor({ output = \"HDMI-A-1\", mode = \"1920x1080@60\", position = \"0x0\", scale = \"1\" })"
|
||||||
|
"hl.monitor({ output = \"DP-2\", mode = \"1920x1080@120\", position = \"1920x0\", scale = \"1\" })"
|
||||||
|
""
|
||||||
|
"-- Input"
|
||||||
|
"hl.device({ name = \"default\", kb_layout = \"gb\", sensitivity = -0.5 })"
|
||||||
|
""
|
||||||
|
"-- Curves"
|
||||||
|
"hl.curve(\"easeOutQuint\", { type = \"bezier\", points = { {0.23, 1}, {0.32, 1} } })"
|
||||||
|
"hl.curve(\"easeInOutCubic\", { type = \"bezier\", points = { {0.65, 0.05}, {0.36, 1} } })"
|
||||||
|
"hl.curve(\"linear\", { type = \"bezier\", points = { {0, 0}, {1, 1} } })"
|
||||||
|
"hl.curve(\"almostLinear\", { type = \"bezier\", points = { {0.5, 0.5}, {0.75, 1} } })"
|
||||||
|
"hl.curve(\"quick\", { type = \"bezier\", points = { {0.15, 0}, {0.1, 1} } })"
|
||||||
|
""
|
||||||
|
"-- Animations"
|
||||||
|
"hl.animation({ leaf = \"global\", enabled = true, speed = 10, bezier = \"default\" })"
|
||||||
|
"hl.animation({ leaf = \"border\", enabled = true, speed = 5.39, bezier = \"easeOutQuint\" })"
|
||||||
|
"hl.animation({ leaf = \"windows\", enabled = true, speed = 2.79, bezier = \"easeOutQuint\" })"
|
||||||
|
"hl.animation({ leaf = \"windowsIn\", enabled = true, speed = 1, bezier = \"easeOutQuint\", style = \"popin 87%\" })"
|
||||||
|
"hl.animation({ leaf = \"windowsOut\", enabled = true, speed = 1, bezier = \"linear\", style = \"popin 87%\" })"
|
||||||
|
"hl.animation({ leaf = \"windowsMove\", enabled = true, speed = 1, bezier = \"easeInOutCubic\" })"
|
||||||
|
"hl.animation({ leaf = \"fadeIn\", enabled = true, speed = 0.5, bezier = \"almostLinear\" })"
|
||||||
|
"hl.animation({ leaf = \"fadeOut\", enabled = true, speed = 0.5, bezier = \"almostLinear\" })"
|
||||||
|
"hl.animation({ leaf = \"fade\", enabled = true, speed = 1, bezier = \"quick\" })"
|
||||||
|
"hl.animation({ leaf = \"layers\", enabled = true, speed = 3.81, bezier = \"easeOutQuint\" })"
|
||||||
|
"hl.animation({ leaf = \"layersIn\", enabled = true, speed = 4, bezier = \"easeOutQuint\", style = \"fade\" })"
|
||||||
|
"hl.animation({ leaf = \"layersOut\", enabled = true, speed = 1.5, bezier = \"linear\", style = \"fade\" })"
|
||||||
|
"hl.animation({ leaf = \"fadeLayersIn\", enabled = true, speed = 1.79, bezier = \"almostLinear\" })"
|
||||||
|
"hl.animation({ leaf = \"fadeLayersOut\", enabled = true, speed = 1.39, bezier = \"almostLinear\" })"
|
||||||
|
"hl.animation({ leaf = \"workspaces\", enabled = true, speed = 1, bezier = \"almostLinear\", style = \"slide\" })"
|
||||||
|
"hl.animation({ leaf = \"workspacesIn\", enabled = true, speed = 1, bezier = \"easeInOutCubic\", style = \"slide\" })"
|
||||||
|
"hl.animation({ leaf = \"workspacesOut\", enabled = true, speed = 1, bezier = \"easeInOutCubic\", style = \"slide\" })"
|
||||||
|
"hl.animation({ leaf = \"zoomFactor\", enabled = true, speed = 7, bezier = \"quick\" })"
|
||||||
|
""
|
||||||
|
"-- Binds"
|
||||||
|
(hlBind "${mainMod} + R" "hl.dsp.exec_cmd(\"${mreowScript}\")")
|
||||||
|
(hlBind "${mainMod} + C" "hl.dsp.window.close()")
|
||||||
|
(hlBind "${mainMod} + M" "hl.dsp.exec_cmd(\"uwsm stop\")")
|
||||||
|
(hlBind "${mainMod} + Q" "hl.dsp.exec_cmd(\"kitty\")")
|
||||||
|
(hlBind "${mainMod} + V" "hl.dsp.window.float({ action = \"toggle\" })")
|
||||||
|
(hlBind "${mainMod} + left" "hl.dsp.focus({ direction = \"left\" })")
|
||||||
|
(hlBind "${mainMod} + right" "hl.dsp.focus({ direction = \"right\" })")
|
||||||
|
(hlBind "${mainMod} + up" "hl.dsp.focus({ direction = \"up\" })")
|
||||||
|
(hlBind "${mainMod} + down" "hl.dsp.focus({ direction = \"down\" })")
|
||||||
|
(hlBind "${mainMod} + L" "hl.dsp.exec_cmd(\"wlogout\")")
|
||||||
|
(hlBind "${mainMod} + S" "hl.dsp.exec_cmd(\"wayfreeze --after-freeze-cmd '${meowScript}'\")")
|
||||||
|
(hlBind "${mainMod} + F" "hl.dsp.window.fullscreen({ action = \"toggle\" })")
|
||||||
|
(hlBind "${mainMod} + SHIFT + Q" "hl.dsp.window.close()")
|
||||||
|
(hlBind "${mainMod} + mouse_down" "hl.dsp.focus({ workspace = \"e+1\" })")
|
||||||
|
(hlBind "${mainMod} + mouse_up" "hl.dsp.focus({ workspace = \"e-1\" })")
|
||||||
|
""
|
||||||
|
"-- Mouse binds"
|
||||||
|
(hlBind "${mainMod} + mouse:272" "hl.dsp.window.drag()")
|
||||||
|
(hlBind "${mainMod} + mouse:273" "hl.dsp.window.resize()")
|
||||||
|
""
|
||||||
|
"-- Media keys"
|
||||||
|
(hlBind "XF86AudioLowerVolume" "hl.dsp.exec_cmd(\"wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-\")")
|
||||||
|
(hlBind "XF86AudioRaiseVolume" "hl.dsp.exec_cmd(\"wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+\")")
|
||||||
|
(hlBind "XF86AudioMute" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle\")")
|
||||||
|
(hlBind "XF86AudioPlay" "hl.dsp.exec_cmd(\"playerctl play-pause\")")
|
||||||
|
(hlBind "XF86AudioNext" "hl.dsp.exec_cmd(\"playerctl next\")")
|
||||||
|
(hlBind "XF86AudioPrev" "hl.dsp.exec_cmd(\"playerctl previous\")")
|
||||||
|
(hlBind "XF86AudioMicMute" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle\")")
|
||||||
|
(hlBind "home" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle\")")
|
||||||
|
(hlBind "end" "hl.dsp.exec_cmd(\"wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle\")")
|
||||||
|
(hlBind "F8" "hl.dsp.pass({ window = [[match:class:^(com.obsproject.Studio)$]] })")
|
||||||
|
""
|
||||||
|
"-- Workspaces"
|
||||||
|
(hlBind "${mainMod} + 0" "hl.dsp.focus({ workspace = 10 })")
|
||||||
|
(hlBind "${mainMod} + SHIFT + 0" "hl.dsp.window.move({ workspace = 10 })")
|
||||||
|
]
|
||||||
|
++ workspaceLines
|
||||||
|
++ [
|
||||||
|
""
|
||||||
|
"-- Window rules"
|
||||||
|
"hl.window_rule({ suppress_event = \"maximize\" })"
|
||||||
|
"hl.window_rule({ match = { class = \"gamescope\" }, workspace = \"5\", immediate = true, confine_pointer = true })"
|
||||||
|
"hl.window_rule({ match = { initial_title = \"OBS Studio Crash Detected\" }, pin = true })"
|
||||||
|
"hl.window_rule({ match = { initial_title = \"Discord Popout\" }, workspace = \"1 silent\" })"
|
||||||
|
""
|
||||||
|
"-- Layer rules"
|
||||||
|
"hl.layer_rule({ match = { namespace = \"notifications\" }, no_screen_share = true })"
|
||||||
|
""
|
||||||
|
"-- Host-specific overrides: load ~/.config/hypr/hyprland-local.lua if present (must be valid Lua)"
|
||||||
|
"local home = os.getenv(\"HOME\")"
|
||||||
|
"if home then"
|
||||||
|
" local localPath = home .. '/.config/hypr/hyprland-local.lua'"
|
||||||
|
" local f = io.open(localPath, 'r')"
|
||||||
|
" if f then"
|
||||||
|
" f:close()"
|
||||||
|
" local chunk, err = loadfile(localPath)"
|
||||||
|
" if chunk then chunk() else io.stderr:write('hyprland-local.lua error: ' .. err .. '\\n') end"
|
||||||
|
" end"
|
||||||
|
"end"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
in
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.hyprcursor
|
pkgs.hyprcursor
|
||||||
@@ -44,177 +225,17 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
wayland.windowManager.hyprland.settings = {
|
# systemd.user.services.hyprpaper = {
|
||||||
env = [
|
# partOf = [ "hyprland-session.target" ];
|
||||||
"XCURSOR_THEME,BreezeX-RosePine-Linux"
|
# after = [ "hyprland-session.target" ];
|
||||||
"XCURSOR_SIZE,24"
|
# };
|
||||||
"HYPRCURSOR_SIZE,24"
|
# Hand-written config as extraLuaFile so Home Manager still
|
||||||
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
# generates hypr/hyprland.lua itself, including the systemd
|
||||||
"WEBKIT_DISABLE_DMABUF_RENDERER,1" # maybe disable if nixos fixes alcom
|
# session activation hooks (hyprland-session.target start/stop
|
||||||
];
|
# + dbus-update-activation-environment --systemd --all).
|
||||||
general = {
|
wayland.windowManager.hyprland.extraLuaFiles."hl-main.lua" = {
|
||||||
gaps_in = 1;
|
autoLoad = true;
|
||||||
gaps_out = 1;
|
content = hlBindCode;
|
||||||
border_size = 1;
|
|
||||||
# "col.active_border" =
|
|
||||||
# "rgb(${toString base16.rgb."base06".r},${toString base16.rgb."base06".g},${toString base16.rgb."base06".b})";
|
|
||||||
# "col.inactive_border" =
|
|
||||||
# "rgb(${toString base16.rgb."base03".r},${toString base16.rgb."base03".g},${toString base16.rgb."base03".b})";
|
|
||||||
resize_on_border = false;
|
|
||||||
allow_tearing = true;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
decoration = {
|
|
||||||
rounding = 4;
|
|
||||||
rounding_power = 1;
|
|
||||||
active_opacity = 1.0;
|
|
||||||
inactive_opacity = 1.0;
|
|
||||||
|
|
||||||
shadow = {
|
|
||||||
enabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
passes = 1;
|
|
||||||
new_optimizations = true;
|
|
||||||
ignore_opacity = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
no_hardware_cursors = false;
|
|
||||||
};
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = [
|
|
||||||
"easeOutQuint,0.23,1,0.32,1"
|
|
||||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
|
||||||
"linear,0,0,1,1"
|
|
||||||
"almostLinear,0.5,0.5,0.75,1.0"
|
|
||||||
"quick,0.15,0,0.1,1"
|
|
||||||
];
|
|
||||||
animation = [
|
|
||||||
"global, 1, 10, default"
|
|
||||||
"border, 1, 5.39, easeOutQuint"
|
|
||||||
"windows, 1, 2.79, easeOutQuint"
|
|
||||||
"windowsIn, 1, 1, easeOutQuint, popin 87%"
|
|
||||||
"windowsOut, 1, 1, linear, popin 87%"
|
|
||||||
"windowsMove, 1, 1, easeInOutCubic"
|
|
||||||
"fadeIn, 1, 0.5, almostLinear"
|
|
||||||
"fadeOut, 1, 0.5, almostLinear"
|
|
||||||
"fade, 1, 1, quick"
|
|
||||||
"layers, 1, 3.81, easeOutQuint"
|
|
||||||
"layersIn, 1, 4, easeOutQuint, fade"
|
|
||||||
"layersOut, 1, 1.5, linear, fade"
|
|
||||||
"fadeLayersIn, 1, 1.79, almostLinear"
|
|
||||||
"fadeLayersOut, 1, 1.39, almostLinear"
|
|
||||||
"workspaces, 1, 1, almostLinear, slide"
|
|
||||||
"workspacesIn, 1, 1, easeInOutCubic, slide"
|
|
||||||
"workspacesOut, 1, 1, easeInOutCubic, slide"
|
|
||||||
"zoomFactor, 1, 7, quick"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
dwindle = {
|
|
||||||
# pseudotile = true;
|
|
||||||
preserve_split = true;
|
|
||||||
};
|
|
||||||
# master = {
|
|
||||||
# new_status = master;
|
|
||||||
# };
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = -1;
|
|
||||||
disable_hyprland_logo = false;
|
|
||||||
enable_anr_dialog = false;
|
|
||||||
# vfr = true;
|
|
||||||
};
|
|
||||||
"$mainMod" = "SUPER";
|
|
||||||
bind = [
|
|
||||||
(
|
|
||||||
let
|
|
||||||
config = pkgs.writeTextFile {
|
|
||||||
name = "config";
|
|
||||||
text = ''
|
|
||||||
width = 100%
|
|
||||||
height = 100%
|
|
||||||
border-width = 0
|
|
||||||
outline-width = 0
|
|
||||||
padding-left = 35%
|
|
||||||
padding-top = 35%
|
|
||||||
result-spacing = 25
|
|
||||||
num-results = 5
|
|
||||||
font = monospace
|
|
||||||
background-color = #000A
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
script = pkgs.writeShellScript "mreow" ''
|
|
||||||
exec $(tofi-drun -c ${config})
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
"$mainMod, R, exec, ${script}"
|
|
||||||
)
|
|
||||||
"$mainMod, C, killactive"
|
|
||||||
"$mainMod, M, exec, uwsm stop"
|
|
||||||
"$mainMod, Q, exec, kitty"
|
|
||||||
"$mainMod, V, togglefloating,"
|
|
||||||
# "$mainMod, P, pseudo, # dwindle"
|
|
||||||
# "$mainMod, J, togglesplit, # dwindle"
|
|
||||||
"$mainMod, left, movefocus, l"
|
|
||||||
"$mainMod, right, movefocus, r"
|
|
||||||
"$mainMod, up, movefocus, u"
|
|
||||||
"$mainMod, down, movefocus, d"
|
|
||||||
"$mainMod, L, exec, wlogout"
|
|
||||||
(
|
|
||||||
let
|
|
||||||
script = pkgs.writeShellScript "meow" ''
|
|
||||||
fish -c 'grim -g $(slurp) -t png - &| wl-copy -t image/png; killall wayfreeze'
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
"$mainMod, S, exec, " + "wayfreeze --after-freeze-cmd '${script}'"
|
|
||||||
)
|
|
||||||
"$mainMod, F, fullscreen"
|
|
||||||
"$mainMod, mouse_down, workspace, e+1"
|
|
||||||
"$mainMod, mouse_up, workspace, e-1"
|
|
||||||
", home, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
", end, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
|
||||||
", F8, pass, class:^(com\.obsproject\.Studio)$"
|
|
||||||
"$mainMod, 0, workspace, 10"
|
|
||||||
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
|
||||||
]
|
|
||||||
++ (builtins.concatLists (
|
|
||||||
builtins.genList (
|
|
||||||
i:
|
|
||||||
let
|
|
||||||
ws = i + 1;
|
|
||||||
in
|
|
||||||
[
|
|
||||||
"$mainMod, ${toString ws}, workspace, ${toString ws}"
|
|
||||||
"$mainMod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
|
|
||||||
]
|
|
||||||
) 9
|
|
||||||
));
|
|
||||||
bindm = [
|
|
||||||
"$mainMod, mouse:272, movewindow"
|
|
||||||
"$mainMod, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
windowrule = [
|
|
||||||
"match:class .*, suppress_event maximize"
|
|
||||||
"match:class ^(gamescope)$, workspace 5"
|
|
||||||
"match:class ^(gamescope)$, immediate true"
|
|
||||||
"match:class ^(gamescope)$, confine_pointer true"
|
|
||||||
"match:class ^(steam)$, workspace 6 silent"
|
|
||||||
"match:class ^(vesktop)$, workspace 8 silent"
|
|
||||||
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
|
|
||||||
"match:class ^(com.obsproject.Studio)$, workspace 10 silent"
|
|
||||||
"match:initial_title ^(OBS Studio Crash Detected)$, pin true"
|
|
||||||
"match:initial_title ^(Discord Popout)$, workspace 1 silent"
|
|
||||||
];
|
|
||||||
layerrule = [
|
|
||||||
"match:namespace ^(notifications)$, no_screen_share true"
|
|
||||||
# "match:namespace ^(quickshell)$, blur true"
|
|
||||||
];
|
|
||||||
# exec-once = [
|
|
||||||
# ];
|
|
||||||
# we need to auto launch: quickshell, steam, ar_rpc (maybe), vesktop, telegram, qbit, and obs
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,56 +3,62 @@
|
|||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
};
|
};
|
||||||
modules.hyprland = {
|
modules.hyprland = {
|
||||||
nixos = {pkgs, ...}: {
|
nixos =
|
||||||
imports = [inputs.hyprland.nixosModules.default];
|
{ pkgs, ... }:
|
||||||
environment.systemPackages = with pkgs; [
|
{
|
||||||
wayfreeze
|
imports = [ inputs.hyprland.nixosModules.default ];
|
||||||
grim
|
environment.systemPackages = with pkgs; [
|
||||||
slurp
|
wayfreeze
|
||||||
wlogout
|
grim
|
||||||
ranger
|
slurp
|
||||||
];
|
wlogout
|
||||||
programs.xwayland.enable = true;
|
ranger
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
# withUWSM = true;
|
|
||||||
# set the flake package
|
|
||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
||||||
# make sure to also set the portal package, so that they are in sync
|
|
||||||
portalPackage =
|
|
||||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
|
||||||
};
|
|
||||||
# gtk.enable = lib.mkForce false;
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = [
|
|
||||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
|
||||||
];
|
];
|
||||||
};
|
programs.xwayland.enable = true;
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
programs.hyprland = {
|
||||||
hardware.graphics = {
|
enable = true;
|
||||||
# package = pkgs-unstable.mesa;
|
# withUWSM = true;
|
||||||
|
# set the flake package
|
||||||
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
# make sure to also set the portal package, so that they are in sync
|
||||||
|
portalPackage =
|
||||||
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
# gtk.enable = lib.mkForce false;
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
||||||
|
];
|
||||||
|
};
|
||||||
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
hardware.graphics = {
|
||||||
|
# package = pkgs-unstable.mesa;
|
||||||
|
|
||||||
# if you also want 32-bit support (e.g for Steam)
|
# if you also want 32-bit support (e.g for Steam)
|
||||||
# enable32Bit = true;
|
# enable32Bit = true;
|
||||||
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
|
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
homeManager =
|
||||||
homeManager = {pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
gtk = {
|
{
|
||||||
enable = true;
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
# backupFileExtension = "backupHM";
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
systemd.variables = [ "--all" ];
|
||||||
|
configType = "lua";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
# backupFileExtension = "backupHM";
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
systemd.variables = ["--all"];
|
|
||||||
configType = "hyprlang";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
den,
|
den,
|
||||||
modules,
|
modules,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
modules.kitty = {
|
modules.kitty = {
|
||||||
homeManager = {
|
homeManager = {
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
@@ -16,6 +17,9 @@
|
|||||||
background_opacity = 0.6;
|
background_opacity = 0.6;
|
||||||
cursor_trail = 1;
|
cursor_trail = 1;
|
||||||
auto_reload_config = -1;
|
auto_reload_config = -1;
|
||||||
|
input_delay = 1;
|
||||||
|
repaint_delay = 2;
|
||||||
|
wayland_enable_ime = "no";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
nixvim = {
|
nixvim = {
|
||||||
url = "github:nix-community/nixvim";
|
url = "github:nix-community/nixvim";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
modules = {
|
modules = {
|
||||||
@@ -44,7 +43,7 @@
|
|||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
};
|
};
|
||||||
# source = inputs.nixpkgs;
|
source = inputs.nixpkgs;
|
||||||
};
|
};
|
||||||
colorschemes.gruvbox-material.enable = true;
|
colorschemes.gruvbox-material.enable = true;
|
||||||
# colorschemes.melange = {
|
# colorschemes.melange = {
|
||||||
|
|||||||
@@ -11,12 +11,17 @@
|
|||||||
{
|
{
|
||||||
programs.quickshell = {
|
programs.quickshell = {
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
|
systemd.target = "hyprland-session.target";
|
||||||
enable = true;
|
enable = true;
|
||||||
activeConfig = "main";
|
activeConfig = "main";
|
||||||
configs = {
|
configs = {
|
||||||
main = config.lib.file.mkOutOfStoreSymlink "/home/doloro/dotfiles/config/modules/quickshell/quickshell";
|
main = config.lib.file.mkOutOfStoreSymlink "/home/doloro/dotfiles/config/modules/quickshell/quickshell";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# systemd.user.services.quickshell = {
|
||||||
|
# partOf = [ "hyprland-session.target" ];
|
||||||
|
# after = [ "hyprland-session.target" ];
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ root-hashed_password: ENC[AES256_GCM,data:vzVtz1Ht4XD+omdKjU/Zvoaftq8jKE4kxOjAGZ
|
|||||||
wakatime-scug-io-api-key: ENC[AES256_GCM,data:XQUccNW4210U8ZpHSGVcsdbAirzyTvmcy4y6emk7n4N6MO/W,iv:9/f9ceLshA7l8hJB+IDIPvEwYwSkFlPOLmpvtYXLTpU=,tag:x7hESZCouzYVNef2C+iCSA==,type:str]
|
wakatime-scug-io-api-key: ENC[AES256_GCM,data:XQUccNW4210U8ZpHSGVcsdbAirzyTvmcy4y6emk7n4N6MO/W,iv:9/f9ceLshA7l8hJB+IDIPvEwYwSkFlPOLmpvtYXLTpU=,tag:x7hESZCouzYVNef2C+iCSA==,type:str]
|
||||||
meow: ENC[AES256_GCM,data:JVzenw==,iv:oCOo9//r5s2K4pSeH5UNEj0LL+9h2yq0G0DPOfwjmyQ=,tag:0gu9FNOrjQ8fpB+B+RbGSg==,type:str]
|
meow: ENC[AES256_GCM,data:JVzenw==,iv:oCOo9//r5s2K4pSeH5UNEj0LL+9h2yq0G0DPOfwjmyQ=,tag:0gu9FNOrjQ8fpB+B+RbGSg==,type:str]
|
||||||
meoww: ENC[AES256_GCM,data:WPeszDfMWxY=,iv:JJMOror5wj7cTNKfrUj2LDXlO3WCKzb7jk4AeZ0oD+Q=,tag:qs3oyM7K1FGy5cXvS6OHpQ==,type:str]
|
meoww: ENC[AES256_GCM,data:WPeszDfMWxY=,iv:JJMOror5wj7cTNKfrUj2LDXlO3WCKzb7jk4AeZ0oD+Q=,tag:qs3oyM7K1FGy5cXvS6OHpQ==,type:str]
|
||||||
scug-io-ai-key: ENC[AES256_GCM,data:15YxkgOe2+Kia9z52bYbmrc8SQzpjrZKmQ==,iv:+iMkNsqGVC32THO0nvDBrRby+mKj09DvWEQJn+K6at8=,tag:mI7EvyasCKHhNc55UScCXA==,type:str]
|
scug-io-ai-key: ENC[AES256_GCM,data:b2AT2+A5eoGa1eZsCYKDFg449sOgffDcQA==,iv:NDIS3x1unq6/UtjtsyBTHx5v12utagDA3BbNzs5v3L0=,tag:MhbJGATIDWyOZUqXqRAeVA==,type:str]
|
||||||
|
opencode-go-zen-key: ENC[AES256_GCM,data:fwgV/QK+4tpizC6J3evbGxD57BQCWn5Eyex7iIeNYCQHk6ZD8eTukqhUbLcfXyO4RQot3B1B2xbQVVBsuOWWcQYQKA==,iv:aKwQM8d0gP+MyuqWFk2VfOWDgKPcE/HAvL0I0r6o1nU=,tag:/AeSgscy0mxUMwoP8LaCXg==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- enc: |
|
- enc: |
|
||||||
@@ -69,7 +70,7 @@ sops:
|
|||||||
61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g==
|
61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
|
recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
|
||||||
lastmodified: "2026-07-17T08:50:10Z"
|
lastmodified: "2026-08-01T18:33:13Z"
|
||||||
mac: ENC[AES256_GCM,data:WQJ8Ez/0iaRSvziyanxNUmrahir/Ocu+Dysh+qtj3FFhLMhLtPZqoX92L6Eia5pbfXOZcYZUN7uUMmSBn22JCiYUtgoeVjXV8el6GVfi1LHCGKfL25ohsjsTczJXV/+tBlVrrB3MGls9AjFqDV9QnoS/3X/a1MIRGKS3GY+OMAg=,iv:Id9I6BlrzfLpMcy1EmdVGgr9jYSf9JCsOrSiIglRTNc=,tag:gXkaSz5Z8K38Cde6gy3Zvg==,type:str]
|
mac: ENC[AES256_GCM,data:sTTpvCTBPsY4OABqIvgujUT2+Yye+H44mxN3G3ybhoj05omgFajYN86sc3zL9vbiTl7SNxCWMkGCerCvS4QrtRZ0vRTNuYNkFPNHDKniSybbxKzjHqyXWGCOoNYqHW211ktB9vmiXQd+zYart87kUU6d6p2FrVDBLU03eQwJO6k=,iv:8zT8W34A8f/EXRYxFeK2PC2Ko6UrjFrPL5+lwNXpb4Q=,tag:WugeYbmrVcUZ9xVC+r3c7w==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.13.2
|
version: 3.13.3
|
||||||
|
|||||||
@@ -15,12 +15,13 @@
|
|||||||
minimal-tmux-status
|
minimal-tmux-status
|
||||||
];
|
];
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
set-option -g default-terminal "tmux-256color"
|
set-option -g default-terminal "tmux-256color"
|
||||||
set -as terminal-features ",xterm-256color:RGB"
|
set -as terminal-features ",xterm-256color:RGB"
|
||||||
set -g status-bg black
|
set -g status-bg black
|
||||||
set -g status-fg white
|
set -g status-fg white
|
||||||
set -g mouse on
|
set -g mouse on
|
||||||
set -g extended-keys on
|
set -g extended-keys on
|
||||||
|
set -g allow-passthrough on
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
{ den, modules, ... }:
|
||||||
|
{
|
||||||
|
modules.wivrn = {
|
||||||
|
homeManager =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
wivrn
|
||||||
|
wayvr
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos =
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
services.wivrn = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
autoStart = true;
|
||||||
|
highPriority = true;
|
||||||
|
|
||||||
|
# Low-latency encoder config
|
||||||
|
extraServerFlags = [ ];
|
||||||
|
|
||||||
|
monadoEnvironment = {
|
||||||
|
# Monado OpenXR runtime env vars
|
||||||
|
};
|
||||||
|
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
importOXRRuntimes = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optimal config for low latency:
|
||||||
|
# - Vulkan encoder (newer kernels) or vaapi (AMD/Intel)
|
||||||
|
# - H265 codec (3ms overhead, better quality than H264)
|
||||||
|
# - 90Hz refresh rate (balance quality/battery)
|
||||||
|
# - 140% render resolution with quality supersampling
|
||||||
|
# - Up to 200Mbit/s bitrate on good networks
|
||||||
|
config.enable = true;
|
||||||
|
config.json = {
|
||||||
|
encoder = {
|
||||||
|
encoder = "nvenc";
|
||||||
|
codec = "h265";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable mDNS discovery
|
||||||
|
"publish-service" = "avahi";
|
||||||
|
|
||||||
|
# High priority for async reprojection
|
||||||
|
highPriority = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Include monado-vulkan-layers for VR rendering
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
monado-vulkan-layers
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -42,11 +42,15 @@
|
|||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings = lib.mkIf settings.default {
|
wayland.windowManager.hyprland.extraLuaFiles = lib.mkIf settings.default {
|
||||||
bind = [
|
"zen-browser-bind.lua" = {
|
||||||
"$mainMod, E, exec, zen"
|
autoLoad = true;
|
||||||
];
|
content = ''
|
||||||
};
|
-- Zen launcher bind (lua config: settings.bind cannot express dispatchers)
|
||||||
|
hl.bind("SUPER + E", hl.dsp.exec_cmd("zen"))
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(pkgs.wrapFirefox
|
(pkgs.wrapFirefox
|
||||||
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped
|
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped
|
||||||
|
|||||||
Generated
+143
-144
@@ -117,38 +117,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cachyos-kernel": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1783566754,
|
|
||||||
"narHash": "sha256-EyVTx67qTNB2utnXRUgOWnaZxV6c07XE2rVCq/qgWxI=",
|
|
||||||
"owner": "CachyOS",
|
|
||||||
"repo": "linux-cachyos",
|
|
||||||
"rev": "4065d7e175fb182a2e30b982b0d8121c97c8d46b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "CachyOS",
|
|
||||||
"repo": "linux-cachyos",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cachyos-kernel-patches": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1783564544,
|
|
||||||
"narHash": "sha256-oOgjJXRLkTDfOcgPQpHF7MwIBPOf1pHT77EC/YVfkm4=",
|
|
||||||
"owner": "CachyOS",
|
|
||||||
"repo": "kernel-patches",
|
|
||||||
"rev": "c624c9c8cffc11dd619a7d37f903556c60d24e9c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "CachyOS",
|
|
||||||
"repo": "kernel-patches",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"den": {
|
"den": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775551420,
|
"lastModified": 1775551420,
|
||||||
@@ -172,11 +140,11 @@
|
|||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783857890,
|
"lastModified": 1785395241,
|
||||||
"narHash": "sha256-rD4KU1jXXUuUP7ZWuxp8xoroXEne+NCeGrb77ZGhGvM=",
|
"narHash": "sha256-33LyV3D5zCpFXeh6L7QBe+Syb2zWPfeEFgaJb9E8ucU=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "direnv-instant",
|
"repo": "direnv-instant",
|
||||||
"rev": "4d440be96bc6294c891f309d3c944bef64879c9a",
|
"rev": "c4231a4244dde9b85fa6ee39535f28f525596cd3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -206,11 +174,11 @@
|
|||||||
"firefox-gnome-theme": {
|
"firefox-gnome-theme": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779670703,
|
"lastModified": 1782007937,
|
||||||
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
|
"narHash": "sha256-PbnJr+eB+9Czol3ReI83dUgEhcn0sDK6TSy6ODTQm88=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "firefox-gnome-theme",
|
"repo": "firefox-gnome-theme",
|
||||||
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
|
"rev": "981bd332015397fb1ca033fa982bd61635160c78",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -284,11 +252,11 @@
|
|||||||
},
|
},
|
||||||
"flake-file": {
|
"flake-file": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784255282,
|
"lastModified": 1785282747,
|
||||||
"narHash": "sha256-srM+PTqxfyvbQ0BevsOtP8vQv/Ox6OMtY4DktoDxLKg=",
|
"narHash": "sha256-ZwdMXUu0Udb4yzI65+psyJeUF+wexByNEvTUSx1xjVs=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "flake-file",
|
"repo": "flake-file",
|
||||||
"rev": "66ddd2f69a5c4677f0095c6f70eea1217dc45749",
|
"rev": "56c46842d70754345c4a4581b8cbebe87b8fc067",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -385,11 +353,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778716662,
|
"lastModified": 1782949081,
|
||||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -453,18 +421,20 @@
|
|||||||
"gnome-shell": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767737596,
|
"host": "gitlab.gnome.org",
|
||||||
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
|
"lastModified": 1776175984,
|
||||||
|
"narHash": "sha256-RJFlFW8GiMei6oqUGrMkGEvVqOH8U7Q8abc1yK4VKD8=",
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
"rev": "e0fdc4c13250e9a9b8ea9594c83925274f4a5dca",
|
||||||
"type": "github"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
"host": "gitlab.gnome.org",
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
|
"ref": "50.1",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
"type": "gitlab"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"heliumFlake": {
|
"heliumFlake": {
|
||||||
@@ -476,11 +446,11 @@
|
|||||||
"utils": "utils"
|
"utils": "utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784431410,
|
"lastModified": 1785004096,
|
||||||
"narHash": "sha256-G671MLe+jUgQWte0S182mDB8vlxfbyY9hH88N5ZjLXU=",
|
"narHash": "sha256-8stbyRwnEwPMmni/U6iHGGBbi3uebfq60qlKXPgYwWI=",
|
||||||
"owner": "vikingnope",
|
"owner": "vikingnope",
|
||||||
"repo": "helium-browser-nix-flake",
|
"repo": "helium-browser-nix-flake",
|
||||||
"rev": "52e6bfd6e6b5eaab2e96095f7d936e5bf6a72f24",
|
"rev": "b356d11eff33ec730a51f9c88d258fdd72efe587",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -496,11 +466,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784546264,
|
"lastModified": 1785496534,
|
||||||
"narHash": "sha256-jxVr5EHMYAOkFvS2k0abIvt6NqyshyWmiHHzV17sT2g=",
|
"narHash": "sha256-EASdusMYLuPhOCrE3LmsAGOvGhX3vnKBLxFvj9lI8tU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "e3dea8e4792b09a6c0eb5836b0284ad05b1acba0",
|
"rev": "e8827fbbb12015a8dd9f66285aec79d655bcb9f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -584,11 +554,11 @@
|
|||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784574265,
|
"lastModified": 1785434837,
|
||||||
"narHash": "sha256-3YP21xUS7i/FOZRNh3SqXAw7Icw8biu3BWN+YWqLMkI=",
|
"narHash": "sha256-5xgKSbsFzLC9XvMH3iRhYuVBn4w0eo6LzuxY21uRIVw=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "2174f26a142d32823ceb8d7039e39eef52dbd050",
|
"rev": "8668a5392179f99fb9ab3699ede233484bee0b51",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -833,11 +803,11 @@
|
|||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784109236,
|
"lastModified": 1785342502,
|
||||||
"narHash": "sha256-2scKSCd++nRhdi4WhPw7h8HqYraM1wvR/SvT+rBBV90=",
|
"narHash": "sha256-qu4abwEmOHOzpdBUigpLfmHObkRgJp5sRjbnnyEKzSo=",
|
||||||
"owner": "JPyke3",
|
"owner": "JPyke3",
|
||||||
"repo": "hytale-launcher-nix",
|
"repo": "hytale-launcher-nix",
|
||||||
"rev": "1e3c190d0297fb0c28fee17a7204d41f4416f84e",
|
"rev": "2bc2d0dd6fcd4c4a61d9ab33b2149b21286e79d1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -903,11 +873,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784576541,
|
"lastModified": 1785501161,
|
||||||
"narHash": "sha256-rYziS/48KX8dhQtoLwUJxbMQb7rDiRm27zaxE72rhWw=",
|
"narHash": "sha256-7RfISc8VQOaA3U85FIE6zYqkTAaF+b6RLnQvPAlAmts=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "10568239ced64ba5d249f4c85f1c9f7dda81d137",
|
"rev": "3fee7b017c11b03421768580e201bbb94f6bd3e5",
|
||||||
"revCount": 79,
|
"revCount": 80,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.scug.io/nikkuss/pkgs.git"
|
"url": "https://git.scug.io/nikkuss/pkgs.git"
|
||||||
},
|
},
|
||||||
@@ -929,11 +899,11 @@
|
|||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784541752,
|
"lastModified": 1785494453,
|
||||||
"narHash": "sha256-iONvlcXqaIUzEwZHabWLMtE90kqH3/iBmg5lQHZ1StY=",
|
"narHash": "sha256-nK6DCmFpPgaHweU2Y8BMxutfTihwXJ2XkxaoMZPBpMQ=",
|
||||||
"owner": "sodiboo",
|
"owner": "sodiboo",
|
||||||
"repo": "niri-flake",
|
"repo": "niri-flake",
|
||||||
"rev": "85a12e471a13eff3a3c476783a5d1cb0702c9da9",
|
"rev": "68414146fbe13d8fce7748cf2f4e9e46e4834e2e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -962,11 +932,11 @@
|
|||||||
"niri-unstable": {
|
"niri-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784456420,
|
"lastModified": 1784570726,
|
||||||
"narHash": "sha256-38yvDuO09V/GG19oJO+B5nn38NhvvZEWKRGFE4WPUi4=",
|
"narHash": "sha256-9EMn69JBcFWFgUM7f0VBAX+jBby5b9H3M59U75+5yI4=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "f036de655d309edc13fef545a3809330796cbe83",
|
"rev": "7f26c3ee804fb6ed458ef7fb0e3c794f14e0b3bc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -977,18 +947,16 @@
|
|||||||
},
|
},
|
||||||
"nix-cachyos-kernel": {
|
"nix-cachyos-kernel": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"cachyos-kernel": "cachyos-kernel",
|
|
||||||
"cachyos-kernel-patches": "cachyos-kernel-patches",
|
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-parts": "flake-parts_3",
|
"flake-parts": "flake-parts_3",
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": "nixpkgs_6"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783794640,
|
"lastModified": 1785437982,
|
||||||
"narHash": "sha256-SgzzS5GtMFv323ritWP8A3rwhjphB7AYTfHLNSXGX3c=",
|
"narHash": "sha256-m0mLVZc4RmzlBMjPOFh+rnALT92jMXJqQtLBMP9jo90=",
|
||||||
"owner": "xddxdd",
|
"owner": "xddxdd",
|
||||||
"repo": "nix-cachyos-kernel",
|
"repo": "nix-cachyos-kernel",
|
||||||
"rev": "6472f543b68e0b874603ad944419747815cfeb7a",
|
"rev": "8dfc5b3a553819ba50f601d804a3df64360bd5d8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1019,11 +987,11 @@
|
|||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_7"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784310968,
|
"lastModified": 1785232496,
|
||||||
"narHash": "sha256-rkSPTePrKqs4dg+i7ZFCq93+HrClac6oSwXX927SVjA=",
|
"narHash": "sha256-65EQYIRRpTdpH8lUiB6Mvo5uBkG60aBIzAJuALfx+O0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "779c32a00155994c86cde8213a8dd4df139d4355",
|
"rev": "2e790b0a6be8ec2b76174ac0931b8ff11919ec98",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1087,11 +1055,11 @@
|
|||||||
"nixpkgs": "nixpkgs_9"
|
"nixpkgs": "nixpkgs_9"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784058842,
|
"lastModified": 1784642409,
|
||||||
"narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=",
|
"narHash": "sha256-hcbDqFuySAJawljt5r0sKBCJKYnbtGD0T/ZIozH1Dq0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad",
|
"rev": "eaeb18da90024448a60eb1ec7132eafa4003404e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1102,11 +1070,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783776592,
|
"lastModified": 1785318670,
|
||||||
"narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=",
|
"narHash": "sha256-dN6Ou5x/+23FZLEpYP3IffO+NyJFzUlGumt1uu3MMaY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3",
|
"rev": "0954f7ee2f6bb3dc7d4e3d0d8bcb8fd4bde4cfc5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1118,11 +1086,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-darwin": {
|
"nixpkgs-darwin": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784255083,
|
"lastModified": 1784834831,
|
||||||
"narHash": "sha256-0Jz8G3+3g6i/l4aISUri0EidLnREelCff0m6+pE6aZg=",
|
"narHash": "sha256-yj0LPLnsmYoLmA3FGANjeTEwej0/DHjZBXWnDQDUuIs=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "fc51889f81924f15fba77a3c0b79cfb3f78fe0d4",
|
"rev": "51fe96f9107566e6b8eeb7fc4ba696c01e548b04",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1147,6 +1115,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-master": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1785500885,
|
||||||
|
"narHash": "sha256-iNwmTIXImHMnlXNG4EuTZOuvwt9qZAUM6GnRakZ5fc0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "24692924db907f18d3b4cf3ef52e7909b02ce40c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782847189,
|
"lastModified": 1782847189,
|
||||||
@@ -1165,11 +1149,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_10": {
|
"nixpkgs_10": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784497964,
|
"lastModified": 1785454630,
|
||||||
"narHash": "sha256-vlHUuqAcbcH2RKmHbPiuQzbv1pnzzavXnI62RD0bqCU=",
|
"narHash": "sha256-LQy14TZp77TwbQf40gg1V3jo8FwJG0jGDkAH+zRHqg8=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "241313f4e8e508cb9b13278c2b0fa25b9ca27163",
|
"rev": "1559d3daa3ecc813a650b79375ea61b6741b8746",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1180,6 +1164,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_11": {
|
"nixpkgs_11": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1784555310,
|
||||||
|
"narHash": "sha256-/FCliTPgiuV1owejZFNx3Ch9irdvkOfOFl+HHZ+DrtM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "421eebfd0ec7bccd4abe826ce62d7e6e83129493",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_12": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774709303,
|
"lastModified": 1774709303,
|
||||||
"narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=",
|
"narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=",
|
||||||
@@ -1195,7 +1195,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_12": {
|
"nixpkgs_13": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1745279238,
|
"lastModified": 1745279238,
|
||||||
"narHash": "sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo=",
|
"narHash": "sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo=",
|
||||||
@@ -1211,13 +1211,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_13": {
|
"nixpkgs_14": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784356753,
|
"lastModified": 1784796856,
|
||||||
"narHash": "sha256-zupdTm41be2fY8cexroEOGjopl3F2Gqs3gk7ieqaM3s=",
|
"narHash": "sha256-vwxWgF+Gj276WznzGb1LxGsK/39HaQwgQXiU3EkC844=",
|
||||||
"rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
|
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1036777.61b7c44c4073/nixexprs.tar.xz"
|
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1040357.e2587caef70c/nixexprs.tar.xz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
@@ -1271,11 +1271,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783224372,
|
"lastModified": 1785090369,
|
||||||
"narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
|
"narHash": "sha256-m0pDuRJG7EDo9ri+4Ksu83VsI+PlxNC9lNBfydejce4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d407951447dcd00442e97087bf374aad70c04cea",
|
"rev": "624af665418d3c65d544145b4d34ad696439570e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1287,11 +1287,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783760736,
|
"lastModified": 1785382966,
|
||||||
"narHash": "sha256-PEXS6z/zIvH+O7J3Ua3N2OUE7IvMhhghwtKxZhVfm5U=",
|
"narHash": "sha256-TzNPxZZV/qnV8U5fEtrvcMF/GppHnlWm16RDHddPOyE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "bbb4df715cb62e53cd329090c2b69eb07f2bddac",
|
"rev": "ba889d5db7c07eaf5cb8f37835d447d935c51b21",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1349,17 +1349,15 @@
|
|||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_4",
|
"flake-parts": "flake-parts_4",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_11",
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems_4"
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784057377,
|
"lastModified": 1785364321,
|
||||||
"narHash": "sha256-yycNej5//EsRbV10moBoh+/63vXEwZD1ZFEiRm6C9rQ=",
|
"narHash": "sha256-BLuHl+nZKb+FDq3GAM6L+UBEiyVepXANA31fT1F56pw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "07180a087e4a00720dc0731cbcd8dec796974381",
|
"rev": "acd69cc15d57004e8cb4495034320263a3d362ea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1380,11 +1378,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780281641,
|
"lastModified": 1783439237,
|
||||||
"narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=",
|
"narHash": "sha256-WUr8JF2v3n4Y30E5dxv4sAgNJXpVDBoCQNoQ/V4+n4o=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01",
|
"rev": "b70bb66c7bcd162642f3a609bc16843c7059f503",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1395,14 +1393,14 @@
|
|||||||
},
|
},
|
||||||
"omp-nix": {
|
"omp-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_11"
|
"nixpkgs": "nixpkgs_12"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784415854,
|
"lastModified": 1785431079,
|
||||||
"narHash": "sha256-PShHg/pFS4owK770E5HLOEViJNWl51hcEPNUO7edk2w=",
|
"narHash": "sha256-qeUK5296t82+fZR9cWWNLK/u1+ZEuBYmhJFWDtWzzc0=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "93a71a0ab703bfb44bef2645a45dba120560877c",
|
"rev": "fef8579df5738a03eeac3b7ee0ac76a248903d7e",
|
||||||
"revCount": 286,
|
"revCount": 331,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.molez.org/mandlm/omp-nix"
|
"url": "https://git.molez.org/mandlm/omp-nix"
|
||||||
},
|
},
|
||||||
@@ -1438,7 +1436,7 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"libcamera-src": "libcamera-src",
|
"libcamera-src": "libcamera-src",
|
||||||
"libpisp-src": "libpisp-src",
|
"libpisp-src": "libpisp-src",
|
||||||
"nixpkgs": "nixpkgs_12",
|
"nixpkgs": "nixpkgs_13",
|
||||||
"rpi-bluez-firmware-src": "rpi-bluez-firmware-src",
|
"rpi-bluez-firmware-src": "rpi-bluez-firmware-src",
|
||||||
"rpi-firmware-nonfree-src": "rpi-firmware-nonfree-src",
|
"rpi-firmware-nonfree-src": "rpi-firmware-nonfree-src",
|
||||||
"rpi-firmware-src": "rpi-firmware-src",
|
"rpi-firmware-src": "rpi-firmware-src",
|
||||||
@@ -1480,6 +1478,7 @@
|
|||||||
"nixos-raspberrypi": "nixos-raspberrypi",
|
"nixos-raspberrypi": "nixos-raspberrypi",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"nixpkgs": "nixpkgs_10",
|
"nixpkgs": "nixpkgs_10",
|
||||||
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"omp-nix": "omp-nix",
|
"omp-nix": "omp-nix",
|
||||||
"raspberry-pi-nix": "raspberry-pi-nix",
|
"raspberry-pi-nix": "raspberry-pi-nix",
|
||||||
@@ -1597,15 +1596,15 @@
|
|||||||
},
|
},
|
||||||
"spicetify-nix": {
|
"spicetify-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_13",
|
"nixpkgs": "nixpkgs_14",
|
||||||
"systems": "systems_5"
|
"systems": "systems_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784481035,
|
"lastModified": 1785048222,
|
||||||
"narHash": "sha256-nC0QN+GPTnA5i+WBx8S2rG8+VFh+EeBnEe5mU3hlAcQ=",
|
"narHash": "sha256-LjFVfwxensz76SjnvofF1Jsw+xTLd8Qp31W0J6nh2XI=",
|
||||||
"owner": "Gerg-L",
|
"owner": "Gerg-L",
|
||||||
"repo": "spicetify-nix",
|
"repo": "spicetify-nix",
|
||||||
"rev": "a6baa7464f9b21a106dcfabb0bdcfe96fb434409",
|
"rev": "17e524f330c282d31c32dfe076222d4a12277886",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1634,11 +1633,11 @@
|
|||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784059683,
|
"lastModified": 1784676123,
|
||||||
"narHash": "sha256-q5MZrmKlg9A4ORx3EQcr7qkuidMU1gVZ+xJ3nCK+xgc=",
|
"narHash": "sha256-ndyanKzw90yX2nUVFmTuYqXidUNymtMfgmIHyNdhht0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "c8ccc31f3ea29dc3eb5b54945e5eb549529491d6",
|
"rev": "66714e5ce44269ecc58c20d9196da8dbe1b27a31",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1757,11 +1756,11 @@
|
|||||||
"tinted-schemes": {
|
"tinted-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777806186,
|
"lastModified": 1781968807,
|
||||||
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
|
"narHash": "sha256-yYO3Vw2M0y3TAUqt+9+Mj0zwP3XDTF5/PXcPhhFQ1ZM=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "schemes",
|
"repo": "schemes",
|
||||||
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
|
"rev": "2ccef2f4b22e3cab5a9292811f7133a07eeba4a7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1773,11 +1772,11 @@
|
|||||||
"tinted-tmux": {
|
"tinted-tmux": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778379944,
|
"lastModified": 1782012462,
|
||||||
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
|
"narHash": "sha256-2iDiD8DQLwS1lGuD9TS8WlvNyDoTs6krWntJbtB2zGo=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "tinted-tmux",
|
"repo": "tinted-tmux",
|
||||||
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
|
"rev": "8c4e750f738a742bd73377ee41d3dadedebedef4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1789,11 +1788,11 @@
|
|||||||
"tinted-zed": {
|
"tinted-zed": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778378178,
|
"lastModified": 1782009766,
|
||||||
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
|
"narHash": "sha256-VUhBjpGvWqHI7rWeyMYb/u87YJSXHKfVV6S+IelWeO8=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-zed",
|
"repo": "base16-zed",
|
||||||
"rev": "9cd816033ff969415b190722cddf134e78a5665f",
|
"rev": "5e8350bcd354e3241ab681a265fa6ef060c40be1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1810,11 +1809,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780220602,
|
"lastModified": 1785360170,
|
||||||
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
|
"narHash": "sha256-XE1lKgQ3eIO3E7zWryqcRsax+mYXod/5RHBn4YaR9YE=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
|
"rev": "d1187f8bc71fb8aab02395869ec3f5c1920f75c0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1917,11 +1916,11 @@
|
|||||||
"xwayland-satellite-unstable": {
|
"xwayland-satellite-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1783895132,
|
"lastModified": 1784679892,
|
||||||
"narHash": "sha256-Dl0Gvrig3EpE962hzF3ETPhUztlfuRhcmlpd8ioHN54=",
|
"narHash": "sha256-Mb7jpqnrcYCfNSItIkkHpuR3YxWFxPuIBfcwNKlRBkk=",
|
||||||
"owner": "Supreeeme",
|
"owner": "Supreeeme",
|
||||||
"repo": "xwayland-satellite",
|
"repo": "xwayland-satellite",
|
||||||
"rev": "a2b5c635d8c8c99b286967658d0d177044887eb8",
|
"rev": "8d135d3b2854b30fd01ea6cd6c27e523dd50a839",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1937,11 +1936,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784354557,
|
"lastModified": 1785480078,
|
||||||
"narHash": "sha256-z2XthIV/68GNghbqmaPVrShPIfMPwpZKTA47REKC5bA=",
|
"narHash": "sha256-wWRW/Teo+58EMeTpVVEAqYid1qLzpB/PViQJCv7Xxvc=",
|
||||||
"owner": "youwen5",
|
"owner": "youwen5",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "239dc504b56eabcfc1dce945e7e22ca99694be89",
|
"rev": "b7d4cc2778143a228675cd8bb7efdfa111638ac8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -37,10 +37,8 @@
|
|||||||
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
|
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
|
||||||
nixos-wsl.url = "github:nix-community/NixOS-WSL";
|
nixos-wsl.url = "github:nix-community/NixOS-WSL";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixvim = {
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
url = "github:nix-community/nixvim";
|
nixvim.url = "github:nix-community/nixvim";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
omp-nix.url = "git+https://git.molez.org/mandlm/omp-nix?ref=main";
|
omp-nix.url = "git+https://git.molez.org/mandlm/omp-nix?ref=main";
|
||||||
raspberry-pi-nix.url = "github:cmyk/raspberry-pi-nix";
|
raspberry-pi-nix.url = "github:cmyk/raspberry-pi-nix";
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
|
|||||||
Reference in New Issue
Block a user