Compare commits
72 Commits
quickshell
...
fba506e06d
| Author | SHA1 | Date | |
|---|---|---|---|
|
fba506e06d
|
|||
|
8b303fb0f0
|
|||
|
49bbfe094a
|
|||
|
3c5c96d623
|
|||
|
5a5fb9a426
|
|||
|
82ba9038ed
|
|||
|
d22d597cf1
|
|||
|
c61b1e8961
|
|||
|
475acb7fd1
|
|||
|
3ef2f7da09
|
|||
|
fbc5a9ee8e
|
|||
|
f46ad8a2f3
|
|||
|
c14a3682ff
|
|||
|
f4a0e2a862
|
|||
|
df589d6797
|
|||
|
1da80c49db
|
|||
|
8080d174ae
|
|||
|
0d39e2869b
|
|||
|
953952f345
|
|||
|
1f60272f14
|
|||
| e5474ffd29 | |||
| dec6db7e8e | |||
| a966a7e81f | |||
| 67b27c4079 | |||
| e958163479 | |||
| 90cd4bdd84 | |||
| e1e3e96626 | |||
| 16f11262ff | |||
| a2b63259ed | |||
| ab539b82ca | |||
| 05c2bc3627 | |||
|
464a162703
|
|||
|
8385671c4f
|
|||
|
433e26edaa
|
|||
|
c28d386c29
|
|||
|
a149d2a3df
|
|||
|
ea02f5b023
|
|||
|
bf904ec38a
|
|||
|
c419ac3a30
|
|||
|
244844242f
|
|||
|
f730d8d118
|
|||
|
590343e5eb
|
|||
|
5da17890cb
|
|||
|
52692a4a47
|
|||
|
f2cb379100
|
|||
|
e6a2690baa
|
|||
|
f642f9c9cc
|
|||
|
7d08e1f5ef
|
|||
|
3cb73506f1
|
|||
|
4be7cd0c0f
|
|||
|
2d038b2ae2
|
|||
|
dd8afc8954
|
|||
|
e69600cc77
|
|||
|
17ef457181
|
|||
|
a39b966a91
|
|||
|
a0b044dbc9
|
|||
|
94764e7a5a
|
|||
|
fef786d317
|
|||
|
8ca0a6cc0f
|
|||
|
3263d72b59
|
|||
|
1c7e5b9f05
|
|||
|
1da34bf704
|
|||
|
88107f9fe7
|
|||
|
5d1f622782
|
|||
|
0ed99176ad
|
|||
|
4dddb0e803
|
|||
|
4353f9da34
|
|||
| 66e772ce62 | |||
| 422259838b | |||
| 390e75ce8e | |||
| a3b627359b | |||
| be75d12e9c |
10
.sops.yaml
10
.sops.yaml
@@ -1,13 +1,11 @@
|
||||
keys:
|
||||
- &imxyy-nix age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns
|
||||
- &imxyy-nix-server age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6
|
||||
- &imxyy-nix-x16 age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq
|
||||
- &imxyy-cloudwin age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8
|
||||
- &imxyy-nix ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
|
||||
- &imxyy-nix-server ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
|
||||
- &imxyy-nix-x16 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
|
||||
creation_rules:
|
||||
- path_regex: secrets/.*\.(yaml|toml|json|env|dae|txt|conf)$
|
||||
- path_regex: secrets/.*\..*
|
||||
key_groups:
|
||||
- age:
|
||||
- *imxyy-nix
|
||||
- *imxyy-nix-server
|
||||
- *imxyy-nix-x16
|
||||
- *imxyy-cloudwin
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
{ config, hostname, ... }:
|
||||
{
|
||||
config,
|
||||
hostname,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# I prefer this to the default issue text
|
||||
# ported from ArchLinux IIRC
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
enable = true;
|
||||
host = "127.0.0.1";
|
||||
port = 8089;
|
||||
package = pkgs.stable.open-webui;
|
||||
package = pkgs.open-webui;
|
||||
};
|
||||
services.caddy.virtualHosts."ai.imxyy.top" = {
|
||||
extraConfig = ''
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
sops.secrets.et-imxyy-nix-server-nixremote = {
|
||||
sopsFile = sopsRoot + /et-imxyy-nix-server-nixremote.toml;
|
||||
sopsFile = secrets.et-imxyy-nix-server-nixremote;
|
||||
format = "binary";
|
||||
};
|
||||
environment.systemPackages = [ pkgs.easytier ];
|
||||
@@ -15,10 +14,8 @@
|
||||
enable = true;
|
||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server-nixremote.path}";
|
||||
serviceConfig = {
|
||||
Restart = lib.mkOverride 500 "always";
|
||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
||||
RestartSec = lib.mkOverride 500 "100ms";
|
||||
RestartSteps = lib.mkOverride 500 9;
|
||||
Restart = "always";
|
||||
RestartSec = 30;
|
||||
User = "root";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
@@ -37,6 +34,7 @@
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
|
||||
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIENauvvhVMLsUwH9cPYsvnOg7VCL3a4yEiKm8I524TE efl@efl-nix"
|
||||
];
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
}
|
||||
];
|
||||
services.postgresql.ensureDatabases = [ "coder" ];
|
||||
virtualisation.oci-containers = {
|
||||
containers = {
|
||||
coder = {
|
||||
virtualisation.oci-containers.containers.coder = {
|
||||
image = "ghcr.io/coder/coder:latest";
|
||||
environment = {
|
||||
CODER_ACCESS_URL = "https://coder.imxyy.top";
|
||||
@@ -26,8 +24,6 @@
|
||||
];
|
||||
ports = [ "8086:8086" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
services.caddy.virtualHosts."coder.imxyy.top" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy :8086 {
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
{
|
||||
virtualisation.oci-containers = {
|
||||
containers = {
|
||||
sun-panel = {
|
||||
virtualisation.oci-containers.containers.sun-panel = {
|
||||
image = "hslr/sun-panel:latest";
|
||||
volumes = [
|
||||
"/var/lib/sun-panel:/app/conf"
|
||||
];
|
||||
ports = [ "8085:3002" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
services.caddy.virtualHosts."home.imxyy.top" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy :8085
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
{ ... }:
|
||||
{
|
||||
users.users.immich = {
|
||||
home = "/mnt/nas/immich";
|
||||
createHome = true;
|
||||
};
|
||||
services.immich = {
|
||||
enable = true;
|
||||
host = "127.0.0.1";
|
||||
|
||||
@@ -1,46 +1,59 @@
|
||||
{
|
||||
services.matrix-synapse = {
|
||||
enable = true;
|
||||
settings = {
|
||||
server_name = "matrix.imxyy.top";
|
||||
public_baseurl = "https://matrix.imxyy.top";
|
||||
listeners = [
|
||||
{
|
||||
port = 8094;
|
||||
bind_addresses = [ "127.0.0.1" ];
|
||||
type = "http";
|
||||
tls = false;
|
||||
x_forwarded = true;
|
||||
resources = [
|
||||
{
|
||||
names = [
|
||||
"client"
|
||||
"federation"
|
||||
];
|
||||
compress = true;
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
turn_uris = [ "turns:vkvm.imxyy.top:5349" ];
|
||||
turn_shared_secret = "ac779a48c03bb451839569d295a29aa6ab8c264277bec2df9c9c7f5e22936288";
|
||||
turn_user_lifetime = "1h";
|
||||
database_type = "psycopg2";
|
||||
database_args.database = "matrix-synapse";
|
||||
config,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
sops.secrets.tuwunel-reg-token = {
|
||||
sopsFile = secrets.tuwunel-reg-token;
|
||||
format = "binary";
|
||||
owner = config.services.matrix-tuwunel.user;
|
||||
group = config.services.matrix-tuwunel.group;
|
||||
};
|
||||
extraConfigFiles = [
|
||||
"/var/lib/matrix-synapse/secret"
|
||||
sops.secrets.tuwunel-turn-secret = {
|
||||
sopsFile = secrets.tuwunel-turn-secret;
|
||||
format = "binary";
|
||||
owner = config.services.matrix-tuwunel.user;
|
||||
group = config.services.matrix-tuwunel.group;
|
||||
};
|
||||
services.matrix-tuwunel = {
|
||||
enable = true;
|
||||
settings.global = {
|
||||
address = [ "127.0.0.1" ];
|
||||
port = [ 8094 ];
|
||||
server_name = "imxyy.top";
|
||||
allow_registration = true;
|
||||
registration_token_file = config.sops.secrets.tuwunel-reg-token.path;
|
||||
well_known = {
|
||||
server = "matrix.imxyy.top:443";
|
||||
client = "https://matrix.imxyy.top";
|
||||
};
|
||||
turn_uris = [
|
||||
"turn:hk.vkvm.imxyy.top?transport=udp"
|
||||
"turn:hk.vkvm.imxyy.top?transport=tcp"
|
||||
];
|
||||
turn_secret_file = config.sops.secrets.tuwunel-turn-secret.path;
|
||||
};
|
||||
};
|
||||
services.caddy.virtualHosts."imxyy.top" = {
|
||||
extraConfig = ''
|
||||
handle /.well-known/matrix/server {
|
||||
header Content-Type application/json
|
||||
header "Access-Control-Allow-Origin" "*"
|
||||
|
||||
respond `{"m.server": "matrix.imxyy.top:443"}` 200
|
||||
}
|
||||
handle /.well-known/matrix/client {
|
||||
header Content-Type application/json
|
||||
header "Access-Control-Allow-Origin" "*"
|
||||
|
||||
respond `{"m.homeserver": {"base_url": "https://matrix.imxyy.top/"}}` 200
|
||||
}
|
||||
'';
|
||||
};
|
||||
services.caddy.virtualHosts."matrix.imxyy.top" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy :8094
|
||||
handle_path /_matrix {
|
||||
reverse_proxy :8094
|
||||
}
|
||||
handle_path /_synapse/client {
|
||||
reverse_proxy :8094
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,9 +8,10 @@
|
||||
WorkingDirectory = "/opt/minecraft/fabric1.20.6";
|
||||
ExecStart = "${lib.getExe' pkgs.openjdk21 "java"} -Xms1G -Xmx5G -jar fabric-server-mc.1.20.6-loader.0.15.11-launcher.1.0.1.jar";
|
||||
Restart = "always";
|
||||
RestartSec = "10s";
|
||||
RestartSec = 120;
|
||||
};
|
||||
};
|
||||
|
||||
my.persist = {
|
||||
nixosDirs = [
|
||||
"/opt/minecraft"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, sopsRoot, ... }:
|
||||
{ config, secrets, ... }:
|
||||
{
|
||||
sops.secrets.minio-env = {
|
||||
sopsFile = sopsRoot + /minio.env;
|
||||
sopsFile = secrets.minio;
|
||||
format = "dotenv";
|
||||
};
|
||||
services.minio = {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
lib,
|
||||
pkgs,
|
||||
username,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -131,17 +131,17 @@
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
|
||||
];
|
||||
users.users.${username}.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
|
||||
];
|
||||
|
||||
sops.secrets.dae-imxyy-nix-server = {
|
||||
sopsFile = sopsRoot + /dae-imxyy-nix-server.dae;
|
||||
sopsFile = secrets.dae-imxyy-nix-server;
|
||||
format = "binary";
|
||||
};
|
||||
services.dae = {
|
||||
@@ -150,7 +150,7 @@
|
||||
};
|
||||
systemd.services.dae.after = [ "sops-nix.service" ];
|
||||
sops.secrets.mihomo = {
|
||||
sopsFile = sopsRoot + /mihomo.yaml;
|
||||
sopsFile = secrets.mihomo;
|
||||
format = "yaml";
|
||||
key = "";
|
||||
};
|
||||
@@ -162,7 +162,7 @@
|
||||
};
|
||||
|
||||
sops.secrets.frp-env = {
|
||||
sopsFile = sopsRoot + /frp.env;
|
||||
sopsFile = secrets.frp;
|
||||
format = "dotenv";
|
||||
};
|
||||
systemd.services.frp.serviceConfig.EnvironmentFile = [
|
||||
@@ -377,6 +377,20 @@
|
||||
customDomains = [ "sy.imxyy.top" ];
|
||||
}
|
||||
|
||||
{
|
||||
name = "matrix-root-http";
|
||||
type = "http";
|
||||
localIP = "127.0.0.1";
|
||||
localPort = 80;
|
||||
customDomains = [ "imxyy.top" ];
|
||||
}
|
||||
{
|
||||
name = "matrix-root-https";
|
||||
type = "https";
|
||||
localIP = "127.0.0.1";
|
||||
localPort = 443;
|
||||
customDomains = [ "imxyy.top" ];
|
||||
}
|
||||
{
|
||||
name = "matrix-http";
|
||||
type = "http";
|
||||
@@ -408,11 +422,18 @@
|
||||
}
|
||||
|
||||
{
|
||||
name = "minecraft";
|
||||
type = "tcp";
|
||||
name = "memo-http";
|
||||
type = "http";
|
||||
localIP = "127.0.0.1";
|
||||
localPort = 25565;
|
||||
remotePort = 25565;
|
||||
localPort = 80;
|
||||
customDomains = [ "memo.imxyy.top" ];
|
||||
}
|
||||
{
|
||||
name = "memo-https";
|
||||
type = "https";
|
||||
localIP = "127.0.0.1";
|
||||
localPort = 443;
|
||||
customDomains = [ "memo.imxyy.top" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
@@ -449,12 +470,6 @@
|
||||
};
|
||||
};
|
||||
systemd.services."headscale" = {
|
||||
serviceConfig = {
|
||||
Restart = lib.mkOverride 500 "always";
|
||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
||||
RestartSec = lib.mkOverride 500 "100ms";
|
||||
RestartSteps = lib.mkOverride 500 9;
|
||||
};
|
||||
after = [
|
||||
"podman-obligator.service"
|
||||
];
|
||||
@@ -464,7 +479,7 @@
|
||||
};
|
||||
|
||||
sops.secrets.et-imxyy-nix-server = {
|
||||
sopsFile = sopsRoot + /et-imxyy-nix-server.toml;
|
||||
sopsFile = secrets.et-imxyy-nix-server;
|
||||
format = "binary";
|
||||
};
|
||||
environment.systemPackages = [ pkgs.easytier ];
|
||||
@@ -472,10 +487,8 @@
|
||||
enable = true;
|
||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server.path}";
|
||||
serviceConfig = {
|
||||
Restart = lib.mkOverride 500 "always";
|
||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
||||
RestartSec = lib.mkOverride 500 "100ms";
|
||||
RestartSteps = lib.mkOverride 500 9;
|
||||
Restart = "always";
|
||||
RestartSec = 30;
|
||||
User = "root";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
@@ -485,9 +498,7 @@
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers = {
|
||||
containers = {
|
||||
obligator = {
|
||||
virtualisation.oci-containers.containers.obligator = {
|
||||
image = "anderspitman/obligator:latest";
|
||||
volumes = [
|
||||
"/var/lib/obligator:/data"
|
||||
@@ -505,8 +516,6 @@
|
||||
"1616"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
services.caddy.virtualHosts."headscale.imxyy.top" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy :8080 {
|
||||
@@ -571,6 +580,7 @@
|
||||
"ai"
|
||||
"sy"
|
||||
"minio"
|
||||
"immich"
|
||||
];
|
||||
in
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
lib,
|
||||
config,
|
||||
username,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -13,17 +13,16 @@
|
||||
timeout = 0;
|
||||
};
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
|
||||
systemd.services.nix-daemon = {
|
||||
environment.TMPDIR = "/var/cache/nix";
|
||||
serviceConfig.CacheDirectory = "nix";
|
||||
};
|
||||
environment.variables.NIX_REMOTE = "daemon";
|
||||
|
||||
my.audio.enable = false;
|
||||
|
||||
sops.secrets.imxyy-nix-server-hashed-password = {
|
||||
sopsFile = sopsRoot + /imxyy-nix-server-hashed-password.txt;
|
||||
sopsFile = secrets.imxyy-nix-server-hashed-password;
|
||||
format = "binary";
|
||||
neededForUsers = true;
|
||||
};
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
{
|
||||
config,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
sops.secrets = {
|
||||
flatnote-env = {
|
||||
sopsFile = sopsRoot + /flatnote.env;
|
||||
sopsFile = secrets.flatnote;
|
||||
format = "dotenv";
|
||||
};
|
||||
siyuan-env = {
|
||||
sopsFile = sopsRoot + /siyuan.env;
|
||||
sopsFile = secrets.siyuan;
|
||||
format = "dotenv";
|
||||
};
|
||||
};
|
||||
virtualisation.oci-containers = {
|
||||
containers = {
|
||||
virtualisation.oci-containers.containers = {
|
||||
flatnotes = {
|
||||
image = "dullage/flatnotes:latest";
|
||||
volumes = [
|
||||
@@ -44,6 +43,12 @@
|
||||
];
|
||||
ports = [ "8095:6806" ];
|
||||
};
|
||||
memos = {
|
||||
image = "neosmemo/memos:stable";
|
||||
volumes = [
|
||||
"/mnt/nas/memos:/var/opt/memos"
|
||||
];
|
||||
ports = [ "8097:5230" ];
|
||||
};
|
||||
};
|
||||
services.caddy.virtualHosts = {
|
||||
@@ -57,5 +62,10 @@
|
||||
reverse_proxy :8095
|
||||
'';
|
||||
};
|
||||
"memo.imxyy.top" = {
|
||||
extraConfig = ''
|
||||
reverse_proxy :8097
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, sopsRoot, ... }:
|
||||
{ config, secrets, ... }:
|
||||
{
|
||||
sops.secrets.vaultwarden-env = {
|
||||
sopsFile = sopsRoot + /vaultwarden.env;
|
||||
sopsFile = secrets.vaultwarden;
|
||||
format = "dotenv";
|
||||
};
|
||||
services.postgresql.ensureUsers = [
|
||||
|
||||
@@ -13,7 +13,7 @@ let
|
||||
in
|
||||
{
|
||||
boot = {
|
||||
initrd.kernelModules = [
|
||||
initrd.kernelModules = lib.mkBefore [
|
||||
"vfio_pci"
|
||||
"vfio"
|
||||
"vfio_iommu_type1"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
localproxy_on = "export http_proxy=http://192.168.128.1:7890 https_proxy=http://192.168.128.1:7890 all_proxy=socks://192.168.128.1:7890";
|
||||
};
|
||||
my = {
|
||||
sops.sshKeyPath = "/home/${username}/.ssh/id_ed25519";
|
||||
sops.sshKeyFile = "/home/${username}/.ssh/id_ed25519";
|
||||
coding.all.enable = true;
|
||||
coding.editor.vscode.enable = lib.mkForce false;
|
||||
cli.misc.enable = true;
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
@@ -10,8 +8,6 @@
|
||||
home.packages = with pkgs; [
|
||||
localsend
|
||||
|
||||
rclone
|
||||
|
||||
wpsoffice-cn
|
||||
wps-office-fonts
|
||||
ttf-wps-fonts
|
||||
@@ -20,24 +16,34 @@
|
||||
anki
|
||||
|
||||
ayugram-desktop
|
||||
telegram-desktop
|
||||
signal-desktop
|
||||
discord
|
||||
element-desktop
|
||||
fractal
|
||||
qq
|
||||
wechat
|
||||
|
||||
gnome-clocks
|
||||
|
||||
wineWowPackages.waylandFull
|
||||
|
||||
pavucontrol
|
||||
pamixer
|
||||
];
|
||||
programs.zsh = {
|
||||
sessionVariables = {
|
||||
PATH = "/home/${username}/bin:$PATH";
|
||||
};
|
||||
};
|
||||
|
||||
programs.niri.settings = {
|
||||
environment.STEAM_FORCE_DESKTOPUI_SCALING = "1.25";
|
||||
outputs = {
|
||||
eDP-1 = {
|
||||
enable = true;
|
||||
mode = {
|
||||
width = 1920;
|
||||
height = 1200;
|
||||
refresh = 60.002;
|
||||
};
|
||||
scale = 1.25;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
my = {
|
||||
@@ -45,8 +51,7 @@
|
||||
cli.all.enable = true;
|
||||
coding.all.enable = true;
|
||||
desktop.all.enable = true;
|
||||
|
||||
desktop.browser.librewolf.enable = lib.mkForce false;
|
||||
virt.moonlight.enable = true;
|
||||
|
||||
i18n.fcitx5.enable = true;
|
||||
|
||||
@@ -59,7 +64,7 @@
|
||||
imageviewer = [ "org.gnome.Shotwell-Viewer.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "nemo.desktop" ];
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
|
||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||
|
||||
@@ -92,15 +97,6 @@
|
||||
"image/png" = imageviewer;
|
||||
"image/webp" = imageviewer;
|
||||
};
|
||||
extraBookmarks =
|
||||
let
|
||||
homedir = config.my.home.home.homeDirectory;
|
||||
in
|
||||
[
|
||||
"file://${homedir}/NAS NAS"
|
||||
"file://${homedir}/NAS/imxyy_soope_ NAS imxyy_soope_"
|
||||
"file://${homedir}/NAS/imxyy_soope_/OS NAS OS"
|
||||
];
|
||||
};
|
||||
persist = {
|
||||
enable = true;
|
||||
@@ -118,23 +114,26 @@
|
||||
".local/state"
|
||||
".local/share/Anki2"
|
||||
".local/share/shotwell"
|
||||
".local/share/cheat.sh"
|
||||
".local/share/Kingsoft"
|
||||
|
||||
".local/share/AyuGramDesktop"
|
||||
".local/share/TelegramDesktop"
|
||||
".local/share/fractal"
|
||||
".config/Signal"
|
||||
".config/discord"
|
||||
".config/Element"
|
||||
".config/QQ"
|
||||
".xwechat"
|
||||
|
||||
".config/Kingsoft"
|
||||
".config/dconf"
|
||||
".config/gh"
|
||||
".config/pulse"
|
||||
".config/pip"
|
||||
".config/libreoffice"
|
||||
".config/sunshine"
|
||||
|
||||
".gemini"
|
||||
".claude"
|
||||
".claude-code-router"
|
||||
];
|
||||
homeFiles = [
|
||||
".claude.json"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -10,10 +9,51 @@
|
||||
"biosdevname=0"
|
||||
"net.ifnames=0"
|
||||
];
|
||||
networking.networkmanager.enable = true;
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = false;
|
||||
nftables = {
|
||||
enable = true;
|
||||
flushRuleset = true;
|
||||
ruleset = ''
|
||||
table inet firewall {
|
||||
set LANv4 {
|
||||
type ipv4_addr
|
||||
flags interval
|
||||
|
||||
elements = { 10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16 }
|
||||
}
|
||||
set LANv6 {
|
||||
type ipv6_addr
|
||||
flags interval
|
||||
|
||||
elements = { fd00::/8, fe80::/10 }
|
||||
}
|
||||
|
||||
chain output {
|
||||
type filter hook output priority 100; policy accept;
|
||||
}
|
||||
|
||||
chain input {
|
||||
type filter hook input priority 0; policy drop;
|
||||
iif lo accept
|
||||
ct state invalid drop
|
||||
ct state established,related accept
|
||||
|
||||
ip saddr @LANv4 accept
|
||||
ip6 saddr @LANv6 accept
|
||||
}
|
||||
|
||||
chain forward {
|
||||
type filter hook forward priority 0; policy drop;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
sops.secrets.dae-imxyy-nix-x16 = {
|
||||
sopsFile = sopsRoot + /dae-imxyy-nix-x16.dae;
|
||||
sopsFile = secrets.dae-imxyy-nix-x16;
|
||||
format = "binary";
|
||||
};
|
||||
services.dae = {
|
||||
@@ -22,7 +62,7 @@
|
||||
};
|
||||
systemd.services.dae.after = [ "sops-nix.service" ];
|
||||
sops.secrets.mihomo = {
|
||||
sopsFile = sopsRoot + /mihomo.yaml;
|
||||
sopsFile = secrets.mihomo;
|
||||
format = "yaml";
|
||||
key = "";
|
||||
};
|
||||
@@ -34,7 +74,7 @@
|
||||
};
|
||||
|
||||
sops.secrets.et-imxyy-nix-x16 = {
|
||||
sopsFile = sopsRoot + /et-imxyy-nix-x16.toml;
|
||||
sopsFile = secrets.et-imxyy-nix-x16;
|
||||
format = "binary";
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
@@ -44,10 +84,8 @@
|
||||
enable = true;
|
||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-x16.path}";
|
||||
serviceConfig = {
|
||||
Restart = lib.mkOverride 500 "always";
|
||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
||||
RestartSec = lib.mkOverride 500 "100ms";
|
||||
RestartSteps = lib.mkOverride 500 9;
|
||||
Restart = "always";
|
||||
RestartSec = 30;
|
||||
User = "root";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
username,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -36,36 +35,6 @@
|
||||
};
|
||||
environment.variables.NIX_REMOTE = "daemon";
|
||||
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = false;
|
||||
alsa.support32Bit = false;
|
||||
pulse.enable = false;
|
||||
audio.enable = false;
|
||||
};
|
||||
services.pulseaudio = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
extraConfig = ''
|
||||
load-module module-switch-on-connect
|
||||
unload-module module-suspend-on-idle
|
||||
'';
|
||||
};
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
Disable = "HeadSet";
|
||||
MultiProfile = "multiple";
|
||||
};
|
||||
};
|
||||
};
|
||||
users.extraUsers.${username}.extraGroups = [ "audio" ];
|
||||
|
||||
fonts = {
|
||||
enableDefaultPackages = false;
|
||||
fontDir.enable = true;
|
||||
@@ -102,6 +71,9 @@
|
||||
|
||||
services.printing.enable = true;
|
||||
|
||||
services.upower.enable = true;
|
||||
services.power-profiles-daemon.enable = true;
|
||||
|
||||
services.keyd = {
|
||||
enable = true;
|
||||
keyboards.default.settings = {
|
||||
@@ -134,7 +106,7 @@
|
||||
];
|
||||
|
||||
sops.secrets.imxyy-nix-rclone = {
|
||||
sopsFile = sopsRoot + /imxyy-nix-rclone.conf;
|
||||
sopsFile = secrets.imxyy-nix-rclone;
|
||||
format = "binary";
|
||||
};
|
||||
fileSystems = {
|
||||
@@ -154,21 +126,6 @@
|
||||
"vfs-cache-mode=full"
|
||||
];
|
||||
};
|
||||
"/home/${username}/NAS" = {
|
||||
device = "//10.0.0.1/share";
|
||||
fsType = "cifs";
|
||||
options = [
|
||||
"username=nas"
|
||||
"password=nasshare"
|
||||
"x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"
|
||||
"nodev"
|
||||
"nofail"
|
||||
"uid=1000"
|
||||
"gid=100"
|
||||
"vers=3"
|
||||
"rw"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
my.persist.nixosDirs = [ "/etc/NetworkManager/system-connections" ];
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
@@ -10,8 +8,6 @@
|
||||
home.packages = with pkgs; [
|
||||
localsend
|
||||
|
||||
rclone
|
||||
|
||||
wpsoffice-cn
|
||||
wps-office-fonts
|
||||
ttf-wps-fonts
|
||||
@@ -20,18 +16,13 @@
|
||||
anki
|
||||
|
||||
ayugram-desktop
|
||||
telegram-desktop
|
||||
signal-desktop
|
||||
discord
|
||||
element-desktop
|
||||
fractal
|
||||
qq
|
||||
wechat
|
||||
|
||||
gnome-clocks
|
||||
|
||||
wineWowPackages.waylandFull
|
||||
|
||||
pavucontrol
|
||||
pamixer
|
||||
];
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
@@ -91,8 +82,6 @@
|
||||
coding.all.enable = true;
|
||||
desktop.all.enable = true;
|
||||
|
||||
desktop.browser.librewolf.enable = lib.mkForce false;
|
||||
|
||||
i18n.fcitx5.enable = true;
|
||||
|
||||
xdg = {
|
||||
@@ -104,7 +93,7 @@
|
||||
imageviewer = [ "org.gnome.Shotwell-Viewer.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "nemo.desktop" ];
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
|
||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||
|
||||
@@ -137,16 +126,6 @@
|
||||
"image/png" = imageviewer;
|
||||
"image/webp" = imageviewer;
|
||||
};
|
||||
extraBookmarks =
|
||||
let
|
||||
homedir = config.my.home.home.homeDirectory;
|
||||
in
|
||||
[
|
||||
"file://${homedir}/Documents/%E7%8F%AD%E7%BA%A7%E4%BA%8B%E5%8A%A1 班级事务"
|
||||
"file://${homedir}/NAS NAS"
|
||||
"file://${homedir}/NAS/imxyy_soope_ NAS imxyy_soope_"
|
||||
"file://${homedir}/NAS/imxyy_soope_/OS NAS OS"
|
||||
];
|
||||
};
|
||||
persist = {
|
||||
enable = true;
|
||||
@@ -162,23 +141,21 @@
|
||||
".local/state"
|
||||
".local/share/Anki2"
|
||||
".local/share/shotwell"
|
||||
".local/share/cheat.sh"
|
||||
".local/share/Kingsoft"
|
||||
|
||||
".local/share/AyuGramDesktop"
|
||||
".local/share/TelegramDesktop"
|
||||
".local/share/fractal"
|
||||
".config/Signal"
|
||||
".config/discord"
|
||||
".config/Element"
|
||||
".config/QQ"
|
||||
".xwechat"
|
||||
|
||||
".config/Kingsoft"
|
||||
".config/dconf"
|
||||
".config/gh"
|
||||
".config/pulse"
|
||||
".config/pip"
|
||||
".config/libreoffice"
|
||||
".config/sunshine"
|
||||
|
||||
".gemini"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
sopsRoot,
|
||||
username,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -70,6 +69,7 @@
|
||||
chain input {
|
||||
type filter hook input priority 0; policy drop;
|
||||
iif lo accept
|
||||
iifname waydroid0 accept
|
||||
ct state invalid drop
|
||||
ct state established,related accept
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
|
||||
chain forward {
|
||||
type filter hook forward priority 0; policy drop;
|
||||
|
||||
iifname waydroid0 accept
|
||||
oifname waydroid0 accept
|
||||
}
|
||||
}
|
||||
'';
|
||||
@@ -86,7 +89,7 @@
|
||||
};
|
||||
|
||||
sops.secrets.dae-imxyy-nix = {
|
||||
sopsFile = sopsRoot + /dae-imxyy-nix.dae;
|
||||
sopsFile = secrets.dae-imxyy-nix;
|
||||
format = "binary";
|
||||
};
|
||||
services.dae = {
|
||||
@@ -95,7 +98,7 @@
|
||||
};
|
||||
systemd.services.dae.after = [ "sops-nix.service" ];
|
||||
sops.secrets.mihomo = {
|
||||
sopsFile = sopsRoot + /mihomo.yaml;
|
||||
sopsFile = secrets.mihomo;
|
||||
format = "yaml";
|
||||
key = "";
|
||||
};
|
||||
@@ -107,7 +110,7 @@
|
||||
};
|
||||
|
||||
sops.secrets.et-imxyy-nix = {
|
||||
sopsFile = sopsRoot + /et-imxyy-nix.toml;
|
||||
sopsFile = secrets.et-imxyy-nix;
|
||||
format = "binary";
|
||||
};
|
||||
environment.systemPackages = [ pkgs.easytier ];
|
||||
@@ -115,10 +118,8 @@
|
||||
enable = true;
|
||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix.path}";
|
||||
serviceConfig = {
|
||||
Restart = lib.mkOverride 500 "always";
|
||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
||||
RestartSec = lib.mkOverride 500 "100ms";
|
||||
RestartSteps = lib.mkOverride 500 9;
|
||||
Restart = "always";
|
||||
RestartSec = 30;
|
||||
User = "root";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
pkgs,
|
||||
config,
|
||||
username,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -22,7 +22,7 @@ let
|
||||
temp = line.split(" ")
|
||||
bus = temp[1]
|
||||
device = temp[3][:-1]
|
||||
subprocess.run(["${lib.getExe usbreset}", f"/dev/bus/usb/{bus}/{device}"])
|
||||
subprocess.run(["${lib.getExe' pkgs.usbutils "usbreset"}", f"{bus}/{device}"])
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
@@ -36,44 +36,6 @@ let
|
||||
with open("/tmp/.btreseted", "w"):
|
||||
...
|
||||
'';
|
||||
usbreset = pkgs.writeCBin "usbreset" ''
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include <linux/usbdevice_fs.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *filename;
|
||||
int fd;
|
||||
int rc;
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Usage: usbreset device-filename\n");
|
||||
return 1;
|
||||
}
|
||||
filename = argv[1];
|
||||
|
||||
fd = open(filename, O_WRONLY);
|
||||
if (fd < 0) {
|
||||
perror("Error opening output file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("Resetting USB device %s\n", filename);
|
||||
rc = ioctl(fd, USBDEVFS_RESET, 0);
|
||||
if (rc < 0) {
|
||||
perror("Error in ioctl");
|
||||
return 1;
|
||||
}
|
||||
printf("Reset successful\n");
|
||||
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
'';
|
||||
in
|
||||
{
|
||||
security.pam.loginLimits = [
|
||||
@@ -111,36 +73,6 @@ in
|
||||
};
|
||||
environment.variables.NIX_REMOTE = "daemon";
|
||||
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = false;
|
||||
alsa.support32Bit = false;
|
||||
pulse.enable = false;
|
||||
audio.enable = false;
|
||||
};
|
||||
services.pulseaudio = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
extraConfig = ''
|
||||
load-module module-switch-on-connect
|
||||
unload-module module-suspend-on-idle
|
||||
'';
|
||||
};
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
Disable = "HeadSet";
|
||||
MultiProfile = "multiple";
|
||||
};
|
||||
};
|
||||
};
|
||||
users.extraUsers.${username}.extraGroups = [ "audio" ];
|
||||
|
||||
fonts = {
|
||||
enableDefaultPackages = false;
|
||||
fontDir.enable = true;
|
||||
@@ -179,7 +111,8 @@ in
|
||||
|
||||
services.keyd = {
|
||||
enable = true;
|
||||
keyboards.default.settings = {
|
||||
keyboards = {
|
||||
default.settings = {
|
||||
main = {
|
||||
capslock = "overload(control, esc)";
|
||||
home = "end";
|
||||
@@ -191,6 +124,11 @@ in
|
||||
delete = "print";
|
||||
};
|
||||
};
|
||||
kone-pro-owl-eye = {
|
||||
ids = [ "1e7d:2dcd" ];
|
||||
settings.main.mouse2 = "rightmouse";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.gvfs.enable = true;
|
||||
@@ -199,6 +137,8 @@ in
|
||||
programs.wireshark.package = pkgs.wireshark;
|
||||
users.users.${username}.extraGroups = [ "wireshark" ];
|
||||
|
||||
virtualisation.waydroid.enable = true;
|
||||
|
||||
services.sunshine = {
|
||||
enable = true;
|
||||
autoStart = true;
|
||||
@@ -225,7 +165,7 @@ in
|
||||
];
|
||||
|
||||
sops.secrets.imxyy-nix-rclone = {
|
||||
sopsFile = sopsRoot + /imxyy-nix-rclone.conf;
|
||||
sopsFile = secrets.imxyy-nix-rclone;
|
||||
format = "binary";
|
||||
};
|
||||
fileSystems = {
|
||||
|
||||
266
flake.lock
generated
266
flake.lock
generated
@@ -37,11 +37,11 @@
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748408240,
|
||||
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=",
|
||||
"lastModified": 1752979451,
|
||||
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e",
|
||||
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -98,6 +98,26 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"catppuccin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755850042,
|
||||
"narHash": "sha256-YooO7k/ufm8KGVqSAV9edGkv3Cm07cvINSP478sWppo=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"rev": "233b344b42072b30a00fef1d8bb9ffb73bf1af3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"chaotic": {
|
||||
"inputs": {
|
||||
"flake-schemas": "flake-schemas",
|
||||
@@ -107,11 +127,11 @@
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752141190,
|
||||
"narHash": "sha256-RHNq77Z84BtLTwyRtrBffm5V9006Dqw4vh3vrvULlxM=",
|
||||
"lastModified": 1755859279,
|
||||
"narHash": "sha256-yWx8vuyIlIDitOREOBs/ZjU67bl6oPc74AfV0QxvraQ=",
|
||||
"owner": "chaotic-cx",
|
||||
"repo": "nyx",
|
||||
"rev": "ef0794b8e94eea166407141f7e92da75f6df925a",
|
||||
"rev": "a970ec75b7a3ca5192476330ff0d10c4c2fc029e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -128,11 +148,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750940343,
|
||||
"narHash": "sha256-qmc/jreM09MOwQ8dOa/+yyh99rU7TowSqo8L33VHfto=",
|
||||
"lastModified": 1754000084,
|
||||
"narHash": "sha256-m3UMp3dJfGptOR8WDGYgaHfax7Wpad0wKfOI8xZLC1s=",
|
||||
"owner": "Bali10050",
|
||||
"repo": "Darkly",
|
||||
"rev": "77770c8d3c35f7ad39da2c57122c360096df0aac",
|
||||
"rev": "39b4100b86c4531a5729e00e1584df9970b02468",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -171,11 +191,11 @@
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752129689,
|
||||
"narHash": "sha256-0Xq5tZbvgZvxbbxv6kRHFuZE4Tq2za016NXh32nX0+Q=",
|
||||
"lastModified": 1755585599,
|
||||
"narHash": "sha256-tl/0cnsqB/Yt7DbaGMel2RLa7QG5elA8lkaOXli6VdY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "70bb04a7de606a75ba0a2ee9d47b99802780b35d",
|
||||
"rev": "6ed03ef4c8ec36d193c18e06b9ecddde78fb7e42",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -273,27 +293,6 @@
|
||||
}
|
||||
},
|
||||
"flake-parts_3": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nur",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733312601,
|
||||
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_4": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"stylix",
|
||||
@@ -457,11 +456,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1748528448,
|
||||
"narHash": "sha256-Tyn+PgBm78Ibq28/WbEz8+pYJZMdbJKsyXMCpT6TjrM=",
|
||||
"lastModified": 1755219990,
|
||||
"narHash": "sha256-/znXwik9nC9TY6dwq0SR60MAi9IEZi2InRSRjfhKu1s=",
|
||||
"owner": "imxyy1soope1",
|
||||
"repo": "go-musicfox",
|
||||
"rev": "1870fd3501631577ad4daef1489b03885abcb037",
|
||||
"rev": "938c4d6bb2a318bc6251f3b11fa8cf54d29b4419",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -500,11 +499,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751824240,
|
||||
"narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=",
|
||||
"lastModified": 1755755322,
|
||||
"narHash": "sha256-spCxkNihCk3uT3LUrUwzdEAjLA/E0EtEgF3KVI05nlM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "fd9e55f5fac45a26f6169310afca64d56b681935",
|
||||
"rev": "282b4c98de97da6667cb03de4f427371734bc39c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -520,11 +519,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752202894,
|
||||
"narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=",
|
||||
"lastModified": 1755810213,
|
||||
"narHash": "sha256-QdenO8f0PTg+tC6HuSvngKcbRZA5oZKmjUT+MXKOLQg=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "fab659b346c0d4252208434c3c4b3983a4b38fec",
|
||||
"rev": "6911d3e7f475f7b3558b4f5a6aba90fa86099baa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -542,11 +541,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1743604125,
|
||||
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
|
||||
"lastModified": 1752603129,
|
||||
"narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
|
||||
"rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -595,11 +594,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751529406,
|
||||
"narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=",
|
||||
"lastModified": 1755670950,
|
||||
"narHash": "sha256-x84lAqhbz752SU6zZY1yixm9Cbz6kdHtJs/5XE1LKGk=",
|
||||
"owner": "Jovian-Experiments",
|
||||
"repo": "Jovian-NixOS",
|
||||
"rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d",
|
||||
"rev": "7caed3afea56de2b68b74d7a3b580d5b8ca8f445",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -658,21 +657,17 @@
|
||||
"inputs": {
|
||||
"niri-stable": "niri-stable",
|
||||
"niri-unstable": "niri-unstable",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"nixpkgs-stable"
|
||||
],
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752078530,
|
||||
"narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=",
|
||||
"lastModified": 1755846233,
|
||||
"narHash": "sha256-1+Jd9Jw4J7zZlaWKN3O5soybRguiOd4+PkkVPc3m5FM=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf",
|
||||
"rev": "1cf4c528db26dd5c429ca6807ba47ba79c88dea3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -701,11 +696,11 @@
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1750791124,
|
||||
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
|
||||
"lastModified": 1755842228,
|
||||
"narHash": "sha256-mEB25RQXApWIQq5RDNtUZgZW7UyT7kVOjAQmPoMopac=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
|
||||
"rev": "210d5e90fe00ae9add5d841e1752b7f8c4a639a7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -804,11 +799,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752199438,
|
||||
"narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=",
|
||||
"lastModified": 1755261305,
|
||||
"narHash": "sha256-EOqCupB5X5WoGVHVcfOZcqy0SbKWNuY3kq+lj1wHdu8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NixOS-WSL",
|
||||
"rev": "d34d9412556d3a896e294534ccd25f53b6822e80",
|
||||
"rev": "203a7b463f307c60026136dd1191d9001c43457f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -819,11 +814,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1751984180,
|
||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
||||
"lastModified": 1755615617,
|
||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
||||
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -847,11 +842,11 @@
|
||||
},
|
||||
"nixpkgs-master": {
|
||||
"locked": {
|
||||
"lastModified": 1752206449,
|
||||
"narHash": "sha256-NVAbC/s4CupABWGXF8M9mDiVw/n0YCftxwc1KatVjDk=",
|
||||
"lastModified": 1755876413,
|
||||
"narHash": "sha256-YN7Vxe4YfU6yw+nhcSlZnt2MD/It1wGF/JexQBlmCaE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1bd4d0d4a678d48b63eb18f457d74df2fcee6c69",
|
||||
"rev": "53203bd286108e01e4321728323e25bdb37e6c32",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -863,11 +858,27 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1752203688,
|
||||
"narHash": "sha256-uJ054F5PVGPu5SvLPMevhdY/EfK0X5DUyRtXhQYNUyo=",
|
||||
"lastModified": 1755704039,
|
||||
"narHash": "sha256-gKlP0LbyJ3qX0KObfIWcp5nbuHSb5EHwIvU6UcNBg2A=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9cb344e96d5b6918e94e1bca2d9f3ea1e9615545",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable_2": {
|
||||
"locked": {
|
||||
"lastModified": 1755872495,
|
||||
"narHash": "sha256-5+l/OdCHqvwlAC3Wjc4yH/A5CjvSlrhaorfPuV6olVM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a70a12c75e13aa546c20ce0fe515de634d52c39e",
|
||||
"rev": "413daa84dd16bb6ee08fc59c052a2376ef780ebe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -879,16 +890,16 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1752124863,
|
||||
"narHash": "sha256-5rWuf6RAlMDp/CAEuyYEz7ryxzgjxOCgUDhWEef864c=",
|
||||
"lastModified": 1755615617,
|
||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "40de82b434526744da778ed53c742c1282d9e75e",
|
||||
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable-small",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -943,40 +954,21 @@
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1751984180,
|
||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
||||
"owner": "nixos",
|
||||
"lastModified": 1755615617,
|
||||
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
||||
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_3",
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752207112,
|
||||
"narHash": "sha256-dnVoQSGQqEGJQzS6iHAG95c0oFrezzBinwu1bDLj9J4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "f166dc14862dfec043f9545e8291cc4402f8b866",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur_2": {
|
||||
"inputs": {
|
||||
"flake-parts": [
|
||||
"stylix",
|
||||
@@ -1001,28 +993,9 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"quickshell": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752146885,
|
||||
"narHash": "sha256-ZJK989GL+bTCQSxbG8v8/7tHMCEl/FPovkeDBNyClQE=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "d7079b75241c6e2b67f2429996fa7679ffc052e2",
|
||||
"revCount": 616,
|
||||
"type": "git",
|
||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"catppuccin": "catppuccin",
|
||||
"chaotic": "chaotic",
|
||||
"darkly": "darkly",
|
||||
"fenix": "fenix",
|
||||
@@ -1037,10 +1010,8 @@
|
||||
"nixpkgs-unstable"
|
||||
],
|
||||
"nixpkgs-master": "nixpkgs-master",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nur": "nur",
|
||||
"quickshell": "quickshell",
|
||||
"sops-nix": "sops-nix",
|
||||
"stylix": "stylix",
|
||||
"zen": "zen"
|
||||
@@ -1049,11 +1020,11 @@
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752086493,
|
||||
"narHash": "sha256-USpVUdiWXDfPoh+agbvoBQaBhg3ZdKZgHXo/HikMfVo=",
|
||||
"lastModified": 1755504847,
|
||||
"narHash": "sha256-VX0B9hwhJypCGqncVVLC+SmeMVd/GAYbJZ0MiiUn2Pk=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "6e3abe164b9036048dce1a3aa65a7e7e5200c0d3",
|
||||
"rev": "a905e3b21b144d77e1b304e49f3264f6f8d4db75",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1071,11 +1042,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751856221,
|
||||
"narHash": "sha256-/QE1eV0ckFvgRMcKjZqgdJDoXFNwSMepwRoBjaw2MCk=",
|
||||
"lastModified": 1755743804,
|
||||
"narHash": "sha256-M6qT02voARH5e9eTXQBzpYIE/hAp6jPgBCyxLmw5uBM=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "34cae4b56929c5b340e1c5b10d9a98a425b2a51e",
|
||||
"rev": "80322e975e27d834451d6b66e63f8abae9d74bf2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1091,15 +1062,16 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751606940,
|
||||
"narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
|
||||
"lastModified": 1755217133,
|
||||
"narHash": "sha256-rnc6cHwCz/o6/pjDiwODNXRxtKfewjho+2ogvDkbiBU=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
|
||||
"rev": "0936ef21bed8aae3cc15a913e1445f0df28e19dd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Mic92",
|
||||
"ref": "pull/779/merge",
|
||||
"repo": "sops-nix",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -1111,12 +1083,12 @@
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||
"flake-parts": "flake-parts_4",
|
||||
"flake-parts": "flake-parts_3",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": "nur_2",
|
||||
"nur": "nur",
|
||||
"systems": "systems_2",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
@@ -1125,11 +1097,11 @@
|
||||
"tinted-zed": "tinted-zed"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752201883,
|
||||
"narHash": "sha256-SZVbQ4YThvYU50cJ4W4GNMy7/rVOJI8qmXqbEcRNsug=",
|
||||
"lastModified": 1755708361,
|
||||
"narHash": "sha256-RmqBx2EamhIk0WVhQSNb8iehaVhilO7D0YAnMoFPqJQ=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "d395780b9c5c36f191b990b2021c71af180a1982",
|
||||
"rev": "2355da455d7188228aaf20ac16ea9386e5aa6f0c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1252,16 +1224,16 @@
|
||||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1748488455,
|
||||
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
|
||||
"lastModified": 1755491097,
|
||||
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
|
||||
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"ref": "v0.6",
|
||||
"ref": "v0.7",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -1269,11 +1241,11 @@
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1751228685,
|
||||
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
|
||||
"lastModified": 1755491097,
|
||||
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
|
||||
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1290,11 +1262,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752164817,
|
||||
"narHash": "sha256-LJFIx27IOUowLsJn5wci9mHZ4CesJsiAivQWDjnZPCc=",
|
||||
"lastModified": 1755836873,
|
||||
"narHash": "sha256-kqBx9zxViNZsg7rD2zqzOQgCWJF/VNrAn0/T1Q7RuBM=",
|
||||
"owner": "0xc000022070",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "9193992c4c2c4349b4280ec2b49648cae208fe63",
|
||||
"rev": "a1bb1b39bee59f537799d9937c6919544c841e5b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
46
flake.nix
46
flake.nix
@@ -3,7 +3,7 @@
|
||||
|
||||
inputs = {
|
||||
# Nixpkgs
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable-small";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/release-25.05";
|
||||
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
||||
# nixpkgs.follows = "nixpkgs-stable";
|
||||
@@ -13,8 +13,9 @@
|
||||
# Nyxpkgs
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
|
||||
# SOPS
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
# TODO: sops-nix: remove pr patch once merged
|
||||
# https://github.com/Mic92/sops-nix/pull/779
|
||||
sops-nix.url = "github:Mic92/sops-nix/pull/779/merge";
|
||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Home manager
|
||||
@@ -24,16 +25,8 @@
|
||||
# Impermanence
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
|
||||
# NUR
|
||||
nur.url = "github:nix-community/NUR";
|
||||
|
||||
# Niri
|
||||
niri.url = "github:sodiboo/niri-flake";
|
||||
niri.inputs.nixpkgs.follows = "nixpkgs";
|
||||
niri.inputs.nixpkgs-stable.follows = "nixpkgs-stable";
|
||||
|
||||
quickshell.url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||
quickshell.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
darkly.url = "github:Bali10050/Darkly";
|
||||
darkly.inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -55,6 +48,9 @@
|
||||
zen.url = "github:0xc000022070/zen-browser-flake";
|
||||
zen.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
catppuccin.url = "github:catppuccin/nix";
|
||||
catppuccin.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
infuse.url = "git+https://codeberg.org/amjoseph/infuse.nix";
|
||||
infuse.flake = false;
|
||||
|
||||
@@ -71,10 +67,10 @@
|
||||
let
|
||||
inherit (self) outputs;
|
||||
vars = import ./vars.nix;
|
||||
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
|
||||
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
|
||||
forAllHosts =
|
||||
mkSystem:
|
||||
nixpkgs.lib.attrsets.mergeAttrsList (
|
||||
lib.mergeAttrsList (
|
||||
builtins.map (hostname: {
|
||||
${hostname} = mkSystem hostname;
|
||||
}) (builtins.attrNames (builtins.readDir ./config/hosts))
|
||||
@@ -139,17 +135,6 @@
|
||||
darkly-qt5 = inputs.darkly.packages.${final.system}.darkly-qt5;
|
||||
darkly-qt6 = inputs.darkly.packages.${final.system}.darkly-qt6;
|
||||
})
|
||||
(final: prev: {
|
||||
quickshell = inputs.quickshell.packages.${final.system}.default.override {
|
||||
withJemalloc = true;
|
||||
withQtSvg = true;
|
||||
withWayland = true;
|
||||
withPipewire = false;
|
||||
withPam = false;
|
||||
withX11 = false;
|
||||
withHyprland = false;
|
||||
};
|
||||
})
|
||||
(final: prev: {
|
||||
inherit lib;
|
||||
})
|
||||
@@ -185,8 +170,16 @@
|
||||
outputs
|
||||
hostname
|
||||
;
|
||||
sopsRoot = ./secrets;
|
||||
} // vars;
|
||||
secrets =
|
||||
with lib.haumea;
|
||||
load {
|
||||
src = ./secrets;
|
||||
loader = [
|
||||
(matchers.always loaders.path)
|
||||
];
|
||||
};
|
||||
}
|
||||
// vars;
|
||||
modules =
|
||||
(lib.umport {
|
||||
paths = [ ./modules ];
|
||||
@@ -205,6 +198,7 @@
|
||||
inputs.impermanence.nixosModules.impermanence
|
||||
inputs.home-manager.nixosModules.default
|
||||
inputs.niri.nixosModules.niri
|
||||
inputs.catppuccin.nixosModules.catppuccin
|
||||
home
|
||||
pkgsConf
|
||||
];
|
||||
|
||||
26
modules/audio.nix
Normal file
26
modules/audio.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
inherit config;
|
||||
default = true;
|
||||
optionName = "default audio settings";
|
||||
optionPath = [ "audio" ];
|
||||
config' = {
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
audio.enable = true;
|
||||
};
|
||||
users.extraUsers.${username}.extraGroups = [ "audio" ];
|
||||
my.persist.homeDirs = [ ".local/state/wireplumber" ];
|
||||
my.home.home.packages = [ pkgs.pwvucontrol ];
|
||||
};
|
||||
}
|
||||
20
modules/bluetooth.nix
Normal file
20
modules/bluetooth.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ config, lib, ... }:
|
||||
lib.my.makeSwitch {
|
||||
inherit config;
|
||||
default = true;
|
||||
optionName = "default bluetooth settings";
|
||||
optionPath = [ "bluetooth" ];
|
||||
config' = {
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
Disable = "HeadSet";
|
||||
MultiProfile = "multiple";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -9,7 +9,6 @@ lib.my.makeSwitch {
|
||||
];
|
||||
config' = {
|
||||
my.cli.media = {
|
||||
cava.enable = true;
|
||||
go-musicfox.enable = true;
|
||||
mpd.enable = true;
|
||||
ffmpeg.enable = true;
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
|
||||
|
||||
|
||||
[general]
|
||||
|
||||
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'.
|
||||
mode = normal
|
||||
|
||||
# Accepts only non-negative values.
|
||||
framerate = 60
|
||||
|
||||
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
|
||||
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens.
|
||||
; autosens = 1
|
||||
; overshoot = 20
|
||||
|
||||
# Manual sensitivity in %. Autosens must be turned off for this to take effect.
|
||||
# 200 means double height. Accepts only non-negative values.
|
||||
; sensitivity = 100
|
||||
|
||||
# The number of bars (0-200). 0 sets it to auto (fill up console).
|
||||
# Bars' width and space between bars in number of characters.
|
||||
bars = 0
|
||||
bar_width = 5
|
||||
bar_spacing = 1
|
||||
|
||||
# Lower and higher cutoff frequencies for lowest and highest bars
|
||||
# the bandwidth of the visualizer.
|
||||
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
|
||||
# Cava will automatically increase the higher cutoff if a too low band is specified.
|
||||
; lower_cutoff_freq = 50
|
||||
; higher_cutoff_freq = 10000
|
||||
|
||||
|
||||
|
||||
[input]
|
||||
|
||||
# Audio capturing method. Possible methods are: 'pulse', 'alsa' or 'fifo'.
|
||||
# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
|
||||
#
|
||||
# All input methods uses the same config variable 'source'
|
||||
# to define where it should get the audio.
|
||||
#
|
||||
# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
|
||||
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
|
||||
#
|
||||
# For alsa 'source' will be the capture device.
|
||||
# For fifo 'source' will be the path to fifo-file.
|
||||
method = pulse
|
||||
source = auto
|
||||
|
||||
; method = alsa
|
||||
; source = hw:Loopback,1
|
||||
|
||||
; method = fifo
|
||||
; source = /tmp/mpd.fifo
|
||||
|
||||
|
||||
|
||||
[output]
|
||||
|
||||
# Ouput method. Can be 'ncurses', 'noncurses' or 'raw'.
|
||||
# 'noncurses' is for systems that does not suport ncurses.
|
||||
# 'raw' is a 16 bit data stream of the bar heights that can be used to send to other applications.
|
||||
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
|
||||
method = ncurses
|
||||
|
||||
# Visual styles. Can be 'stereo' or 'mono'.
|
||||
# 'stereo' mirrors both channels with low frequencies in center.
|
||||
# 'mono' averages both channels and outputs left to right lowest to highest frequencies.
|
||||
style = mono
|
||||
|
||||
# Raw output target. A fifo will be created if target does not exist.
|
||||
; raw_target = /dev/stdout
|
||||
|
||||
# Raw data format. Can be 'binary' or 'ascii'.
|
||||
; data_format = binary
|
||||
|
||||
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
|
||||
; bit_format = 16bit
|
||||
|
||||
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
|
||||
; ascii_max_range = 1000
|
||||
|
||||
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
|
||||
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
|
||||
; bar_delimiter = 59
|
||||
; frame_delimiter = 10
|
||||
|
||||
|
||||
|
||||
# [color]
|
||||
|
||||
# # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
|
||||
# # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires a
|
||||
# # terminal that can change color definitions such as Gnome-terminal or rxvt.
|
||||
# ; background = black
|
||||
# ; foreground = cyan
|
||||
|
||||
# # Gradient mode, only hex defined colors are supported, background must also be defined in hex
|
||||
# # or remain commented out. 1 = on, 0 = off. Warning: for certain terminal emulators cava will
|
||||
# # not able to restore color definitions on exit, simply restart your terminal to restore colors.
|
||||
# gradient = 1
|
||||
# gradient_color_1 = '#0099ff'
|
||||
# gradient_color_2 = '#ff3399'
|
||||
|
||||
|
||||
|
||||
[smoothing]
|
||||
|
||||
# Multiplier for the integral smoothing calculations. Takes values from 0-0.99.
|
||||
# Higher values means smoother, but less precise. Set to 0 to disable.
|
||||
; integral = 0.7
|
||||
|
||||
# Disables or enables the so-called "Monstercat smoothing". Set to 0 to disable.
|
||||
; monstercat = 1
|
||||
; waves = 1
|
||||
|
||||
# Set gravity multiplier for "drop off". Higher values means bars will drop faster.
|
||||
# Accepts only non-negative values. 0.5 means half gravity, 2 means double. Set to 0 to disable "drop off".
|
||||
; gravity = 2
|
||||
|
||||
|
||||
# In bar height, bars that would have been lower that this will not be drawn.
|
||||
; ignore = 0
|
||||
|
||||
|
||||
[eq]
|
||||
|
||||
# This one is tricky. You can have as much keys as you want.
|
||||
# Remember to uncomment more then one key! More keys = more precision.
|
||||
# Look at readme.md on github for further explanations and examples.
|
||||
#; 1 = 1 # bass
|
||||
#; 2 = 1
|
||||
#; 3 = 1 # midtone
|
||||
#; 4 = 1
|
||||
#; 5 = 1 # treble
|
||||
1=1
|
||||
2=1
|
||||
3=2
|
||||
4=1
|
||||
5=1
|
||||
|
||||
[color]
|
||||
|
||||
#background = '#191724'
|
||||
gradient = 1
|
||||
gradient_count = 6
|
||||
gradient_color_1 = '#31748f'
|
||||
gradient_color_2 = '#9ccfd8'
|
||||
gradient_color_3 = '#c4a7e7'
|
||||
gradient_color_4 = '#ebbcba'
|
||||
gradient_color_5 = '#f6c177'
|
||||
gradient_color_6 = '#eb6f92'
|
||||
|
||||
[color]
|
||||
|
||||
gradient = 1
|
||||
|
||||
gradient_color_1 = '#94e2d5'
|
||||
gradient_color_2 = '#89dceb'
|
||||
gradient_color_3 = '#74c7ec'
|
||||
gradient_color_4 = '#89b4fa'
|
||||
gradient_color_5 = '#cba6f7'
|
||||
gradient_color_6 = '#f5c2e7'
|
||||
gradient_color_7 = '#eba0ac'
|
||||
gradient_color_8 = '#f38ba8'
|
||||
@@ -1,167 +0,0 @@
|
||||
## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
|
||||
|
||||
|
||||
[general]
|
||||
|
||||
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'.
|
||||
mode = normal
|
||||
|
||||
# Accepts only non-negative values.
|
||||
framerate = 60
|
||||
|
||||
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
|
||||
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens.
|
||||
; autosens = 1
|
||||
; overshoot = 20
|
||||
|
||||
# Manual sensitivity in %. Autosens must be turned off for this to take effect.
|
||||
# 200 means double height. Accepts only non-negative values.
|
||||
; sensitivity = 100
|
||||
|
||||
# The number of bars (0-200). 0 sets it to auto (fill up console).
|
||||
# Bars' width and space between bars in number of characters.
|
||||
bars = 0
|
||||
bar_width = 2
|
||||
bar_spacing = 1
|
||||
|
||||
# Lower and higher cutoff frequencies for lowest and highest bars
|
||||
# the bandwidth of the visualizer.
|
||||
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
|
||||
# Cava will automatically increase the higher cutoff if a too low band is specified.
|
||||
; lower_cutoff_freq = 50
|
||||
; higher_cutoff_freq = 10000
|
||||
|
||||
|
||||
|
||||
[input]
|
||||
|
||||
# Audio capturing method. Possible methods are: 'pulse', 'alsa' or 'fifo'.
|
||||
# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
|
||||
#
|
||||
# All input methods uses the same config variable 'source'
|
||||
# to define where it should get the audio.
|
||||
#
|
||||
# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
|
||||
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
|
||||
#
|
||||
# For alsa 'source' will be the capture device.
|
||||
# For fifo 'source' will be the path to fifo-file.
|
||||
method = pulse
|
||||
source = auto
|
||||
|
||||
; method = alsa
|
||||
; source = hw:Loopback,1
|
||||
|
||||
; method = fifo
|
||||
; source = /tmp/mpd.fifo
|
||||
|
||||
|
||||
|
||||
[output]
|
||||
|
||||
# Ouput method. Can be 'ncurses', 'noncurses' or 'raw'.
|
||||
# 'noncurses' is for systems that does not suport ncurses.
|
||||
# 'raw' is a 16 bit data stream of the bar heights that can be used to send to other applications.
|
||||
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
|
||||
method = ncurses
|
||||
|
||||
# Visual styles. Can be 'stereo' or 'mono'.
|
||||
# 'stereo' mirrors both channels with low frequencies in center.
|
||||
# 'mono' averages both channels and outputs left to right lowest to highest frequencies.
|
||||
style = mono
|
||||
|
||||
# Raw output target. A fifo will be created if target does not exist.
|
||||
; raw_target = /dev/stdout
|
||||
|
||||
# Raw data format. Can be 'binary' or 'ascii'.
|
||||
; data_format = binary
|
||||
|
||||
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
|
||||
; bit_format = 16bit
|
||||
|
||||
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
|
||||
; ascii_max_range = 1000
|
||||
|
||||
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
|
||||
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
|
||||
; bar_delimiter = 59
|
||||
; frame_delimiter = 10
|
||||
|
||||
|
||||
|
||||
# [color]
|
||||
|
||||
# # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
|
||||
# # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires a
|
||||
# # terminal that can change color definitions such as Gnome-terminal or rxvt.
|
||||
# ; background = black
|
||||
# ; foreground = cyan
|
||||
|
||||
# # Gradient mode, only hex defined colors are supported, background must also be defined in hex
|
||||
# # or remain commented out. 1 = on, 0 = off. Warning: for certain terminal emulators cava will
|
||||
# # not able to restore color definitions on exit, simply restart your terminal to restore colors.
|
||||
# gradient = 1
|
||||
# gradient_color_1 = '#0099ff'
|
||||
# gradient_color_2 = '#ff3399'
|
||||
|
||||
|
||||
|
||||
[smoothing]
|
||||
|
||||
# Multiplier for the integral smoothing calculations. Takes values from 0-0.99.
|
||||
# Higher values means smoother, but less precise. Set to 0 to disable.
|
||||
; integral = 0.7
|
||||
|
||||
# Disables or enables the so-called "Monstercat smoothing". Set to 0 to disable.
|
||||
; monstercat = 1
|
||||
; waves = 1
|
||||
|
||||
# Set gravity multiplier for "drop off". Higher values means bars will drop faster.
|
||||
# Accepts only non-negative values. 0.5 means half gravity, 2 means double. Set to 0 to disable "drop off".
|
||||
; gravity = 1
|
||||
|
||||
|
||||
# In bar height, bars that would have been lower that this will not be drawn.
|
||||
; ignore = 0
|
||||
|
||||
|
||||
[eq]
|
||||
|
||||
# This one is tricky. You can have as much keys as you want.
|
||||
# Remember to uncomment more then one key! More keys = more precision.
|
||||
# Look at readme.md on github for further explanations and examples.
|
||||
#; 1 = 1 # bass
|
||||
#; 2 = 1
|
||||
#; 3 = 1 # midtone
|
||||
#; 4 = 1
|
||||
#; 5 = 1 # treble
|
||||
1=1
|
||||
2=1
|
||||
3=2
|
||||
4=1
|
||||
5=1
|
||||
|
||||
[color]
|
||||
|
||||
#background = '#191724'
|
||||
gradient = 1
|
||||
gradient_count = 6
|
||||
gradient_color_1 = '#31748f'
|
||||
gradient_color_2 = '#9ccfd8'
|
||||
gradient_color_3 = '#c4a7e7'
|
||||
gradient_color_4 = '#ebbcba'
|
||||
gradient_color_5 = '#f6c177'
|
||||
gradient_color_6 = '#eb6f92'
|
||||
|
||||
[color]
|
||||
|
||||
gradient = 1
|
||||
|
||||
gradient_color_1 = '#94e2d5'
|
||||
gradient_color_2 = '#89dceb'
|
||||
gradient_color_3 = '#74c7ec'
|
||||
gradient_color_4 = '#89b4fa'
|
||||
gradient_color_5 = '#cba6f7'
|
||||
gradient_color_6 = '#f5c2e7'
|
||||
gradient_color_7 = '#eba0ac'
|
||||
gradient_color_8 = '#f38ba8'
|
||||
@@ -1,79 +0,0 @@
|
||||
#version 330
|
||||
|
||||
in vec2 fragCoord;
|
||||
out vec4 fragColor;
|
||||
|
||||
// bar values. defaults to left channels first (low to high), then right (high to low).
|
||||
uniform float bars[512];
|
||||
|
||||
uniform int bars_count; // number of bars (left + right) (configurable)
|
||||
uniform int bar_width; // bar width (configurable), not used here
|
||||
uniform int bar_spacing; // space bewteen bars (configurable)
|
||||
|
||||
uniform vec3 u_resolution; // window resolution
|
||||
|
||||
//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
|
||||
uniform vec3 bg_color; // background color
|
||||
uniform vec3 fg_color; // foreground color
|
||||
|
||||
uniform int gradient_count;
|
||||
uniform vec3 gradient_colors[8]; // gradient colors
|
||||
|
||||
vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
|
||||
{
|
||||
//create color based on fraction of this color and next color
|
||||
float yr = (y - y_min) / (y_max - y_min);
|
||||
return col_1 * (1.0 - yr) + col_2 * yr;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
// find which bar to use based on where we are on the x axis
|
||||
float x = u_resolution.x * fragCoord.x;
|
||||
int bar = int(bars_count * fragCoord.x);
|
||||
|
||||
//calculate a bar size
|
||||
float bar_size = u_resolution.x / bars_count;
|
||||
|
||||
//the y coordinate and bar values are the same
|
||||
float y = bars[bar];
|
||||
|
||||
// make sure there is a thin line at bottom
|
||||
if (y * u_resolution.y < 1.0)
|
||||
{
|
||||
y = 1.0 / u_resolution.y;
|
||||
}
|
||||
|
||||
//draw the bar up to current height
|
||||
if (y > fragCoord.y)
|
||||
{
|
||||
//make some space between bars basen on settings
|
||||
if (x > (bar + 1) * (bar_size) - bar_spacing)
|
||||
{
|
||||
fragColor = vec4(bg_color,1.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gradient_count == 0)
|
||||
{
|
||||
fragColor = vec4(fg_color,1.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//find which color in the configured gradient we are at
|
||||
int color = int((gradient_count - 1) * fragCoord.y);
|
||||
|
||||
//find where on y this and next color is supposed to be
|
||||
float y_min = color / (gradient_count - 1.0);
|
||||
float y_max = (color + 1.0) / (gradient_count - 1.0);
|
||||
|
||||
//make color
|
||||
fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fragColor = vec4(bg_color,1.0);
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
#version 330
|
||||
|
||||
in vec2 fragCoord;
|
||||
out vec4 fragColor;
|
||||
|
||||
// bar values. defaults to left channels first (low to high), then right (high to low).
|
||||
uniform float bars[512];
|
||||
|
||||
uniform int bars_count; // number of bars (left + right) (configurable)
|
||||
|
||||
uniform vec3 u_resolution; // window resolution, not used here
|
||||
|
||||
//colors, configurable in cava config file
|
||||
uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
|
||||
uniform vec3 fg_color; // foreground color, not used here
|
||||
|
||||
float normalize_C(float x, float x_min, float x_max, float r_min, float r_max )
|
||||
{
|
||||
float xr;
|
||||
xr = (r_max-r_min) * (x - x_min) / (x_max - x_min) + r_min;
|
||||
return xr;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
// find which bar to use based on where we are on the x axis
|
||||
int bar = int(bars_count * fragCoord.x);
|
||||
|
||||
// create a normal along the y axis based on the bar height
|
||||
float x = normalize_C(fragCoord.y, 1.0, 0.0, 0.0, bars[bar]);
|
||||
|
||||
// set color
|
||||
fragColor.r=fg_color.x*x;
|
||||
fragColor.g=fg_color.y*x;
|
||||
fragColor.b=fg_color.z*x;
|
||||
fragColor.a=1.0;
|
||||
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
#version 330
|
||||
|
||||
in vec2 fragCoord;
|
||||
out vec4 fragColor;
|
||||
|
||||
// bar values. defaults to left channels first (low to high), then right (high to low).
|
||||
uniform float bars[512];
|
||||
|
||||
uniform int bars_count; // number of bars (left + right) (configurable)
|
||||
|
||||
uniform vec3 u_resolution; // window resolution, not used here
|
||||
|
||||
//colors, configurable in cava config file
|
||||
uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
|
||||
uniform vec3 fg_color; // foreground color, not used here
|
||||
|
||||
void main()
|
||||
{
|
||||
// find which bar to use based on where we are on the x axis
|
||||
int bar = int(bars_count * fragCoord.x);
|
||||
|
||||
float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0;
|
||||
float y = (bars[bar]) * bar_y;
|
||||
|
||||
float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count;
|
||||
float bar_r = 1.0 - abs((bar_x - 0.5)) * 2;
|
||||
|
||||
bar_r = bar_r * bar_r * 2;
|
||||
|
||||
// set color
|
||||
fragColor.r = fg_color.x * y * bar_r;
|
||||
fragColor.g = fg_color.y * y * bar_r;
|
||||
fragColor.b = fg_color.z * y * bar_r;
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#version 330
|
||||
|
||||
|
||||
// Input vertex data, different for all executions of this shader.
|
||||
layout(location = 0) in vec3 vertexPosition_modelspace;
|
||||
|
||||
// Output data ; will be interpolated for each fragment.
|
||||
out vec2 fragCoord;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = vec4(vertexPosition_modelspace,1);
|
||||
fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0;
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.my.makeHomePackageConfig {
|
||||
inherit config pkgs;
|
||||
packageName = "cava";
|
||||
packagePath = [ "cava" ];
|
||||
optionPath = [
|
||||
"cli"
|
||||
"media"
|
||||
"cava"
|
||||
];
|
||||
extraConfig = {
|
||||
my.home.xdg.configFile."cava" = {
|
||||
source = ./config;
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
@@ -19,7 +20,11 @@ lib.my.makeSwitch {
|
||||
playerctl
|
||||
go-musicfox
|
||||
];
|
||||
xdg.configFile."go-musicfox/go-musicfox.ini".source = ./go-musicfox.ini;
|
||||
sops.secrets.go-musicfox = {
|
||||
sopsFile = secrets."go-musicfox.ini";
|
||||
format = "binary";
|
||||
path = "${config.my.home.xdg.configHome}/go-musicfox/go-musicfox.ini";
|
||||
};
|
||||
};
|
||||
|
||||
cli.media.mpd.enable = true;
|
||||
@@ -1,97 +0,0 @@
|
||||
# 启动页配置
|
||||
[startup]
|
||||
# 是否显示启动页
|
||||
show=false
|
||||
# 启动页进度条是否有回弹效果
|
||||
progressOutBounce=true
|
||||
# 启动页时长
|
||||
loadingSeconds=2
|
||||
# 启动页欢迎语
|
||||
welcome=musicfox
|
||||
# 启动时自动签到
|
||||
signin=false
|
||||
|
||||
# 进度条配置
|
||||
[progress]
|
||||
# 进度条已加载字符
|
||||
fullChar=#
|
||||
# 进度条未加载字符
|
||||
emptyChar=
|
||||
|
||||
# 主页面配置
|
||||
[main]
|
||||
# 是否显示标题
|
||||
showTitle=true
|
||||
# 加载中提示
|
||||
loadingText=[加载中...]
|
||||
# 歌曲音质,可选项:standard, exhigh, lossless, hires, jyeffect(高清环绕声), sky(沉浸环绕声), jymaster(超清母带) 进行音质判断
|
||||
songLevel=hires
|
||||
# 主题颜色
|
||||
# 随机
|
||||
# primaryColor=random
|
||||
# 经典网易云音乐红
|
||||
#primaryColor="#ea403f"
|
||||
primaryColor="#6186D9"
|
||||
# 是否显示歌词
|
||||
showLyric=true
|
||||
# 歌词偏移 ms
|
||||
lyricOffset=0
|
||||
# 显示歌词翻译
|
||||
showLyricTrans=true
|
||||
# 是否显示通知信息
|
||||
showNotify=false
|
||||
# 开启pprof, --pprof时会开启
|
||||
pprofPort=9876
|
||||
# altScreen显示模式
|
||||
altScreen=true
|
||||
# 双列显示,开启务必使用等宽字体
|
||||
doubleColumn=true
|
||||
# 下载目录,默认为$HOME/.go-musicfox/download
|
||||
downloadDir=/home/imxyy/Music/go-musicfox
|
||||
# 缓存目录,默认为${MUSICFOX_ROOT}/cache
|
||||
cacheDir=/home/imxyy/Music/go-musicfox/.cache
|
||||
# 缓存大小(以MB为单位),0为不使用缓存,-1为不限制,默认为0
|
||||
cacheLimit=-1
|
||||
# 是否显示歌单下所有歌曲,默认不开启,仅获取歌单前1000首,开启后可能会占用更多内存(大量歌曲数据)和带宽(会同时发送多个请求获取歌单下歌曲数据)
|
||||
showAllSongsOfPlaylist=false
|
||||
# 动态显示menu行数
|
||||
dynamicMenuRows=true
|
||||
enableMouseEvent = false
|
||||
|
||||
[autoplay]
|
||||
# 是否开启自动播放,默认不开启
|
||||
autoPlay=true
|
||||
# 自动播放歌单,dailyReco,like,no(保持上次退出时的设置,无视offset),name:歌单名,默认dailyReco
|
||||
autoPlayList="no"
|
||||
# 播放偏移,0为第一首,-1为最后一首,默认为0
|
||||
offset=0
|
||||
# 播放模式,listLoop, order, singleLoop, random, intelligent(心动), last(上次退出时的模式),default,默认为last
|
||||
playMode=singleLoop
|
||||
|
||||
[player]
|
||||
# 播放引擎 beep / mpd(需要安装配置mpd) / osx(Mac才可用)
|
||||
# 不填Mac默认使用osx,其他系统默认使用beep(推荐的配置)
|
||||
engine=mpd
|
||||
# beep使用的mp3解码器,可选:go-mp3, minimp3 (minimp3更少的CPU占用,但是稳定性不如go-mp3)
|
||||
#beepMp3Decoder=go-mp3
|
||||
|
||||
# mpd配置
|
||||
mpdBin=mpd
|
||||
# !!!注意!!! 一定要在配置文件中设置pid_file,否则在退出时不会kill掉mpd进程
|
||||
mpdConfigFile=/home/imxyy/.config/mpd/mpd.conf
|
||||
mpdNetwork=tcp
|
||||
mpdAddr=127.0.0.1:6600
|
||||
|
||||
[unm]
|
||||
# UNM开关
|
||||
switch=true
|
||||
# UNM源: kuwo,kugou,migu,qq
|
||||
sources=kuwo,kugou
|
||||
# UNM搜索其他平台限制 0-3
|
||||
searchLimit=0
|
||||
# 解除会员限制
|
||||
enableLocalVip=true
|
||||
# 解除音质限制
|
||||
unlockSoundEffects=true
|
||||
# QQ音乐cookie文件
|
||||
qqCookieFile=
|
||||
@@ -23,8 +23,3 @@ audio_output {
|
||||
type "pipewire"
|
||||
name "pipewire"
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "pulse"
|
||||
name "pulseaudio"
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ lib.my.makeSwitch {
|
||||
dnsutils
|
||||
|
||||
killall
|
||||
|
||||
comma
|
||||
];
|
||||
|
||||
programs.dconf.enable = true;
|
||||
@@ -80,6 +82,10 @@ lib.my.makeSwitch {
|
||||
enableAutoUpdates = true;
|
||||
settings.updates.auto_update = true;
|
||||
};
|
||||
programs.television = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -44,11 +44,11 @@ lib.my.makeSwitch {
|
||||
jj = {
|
||||
ignore_timeout = true;
|
||||
description = "The current jj status";
|
||||
when = "jj root";
|
||||
symbol = " ";
|
||||
when = true;
|
||||
command = ''
|
||||
jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '
|
||||
separate(" ",
|
||||
" ",
|
||||
change_id.shortest(4),
|
||||
bookmarks,
|
||||
"|",
|
||||
@@ -64,19 +64,9 @@ lib.my.makeSwitch {
|
||||
"(no description set)",
|
||||
) ++ raw_escape_sequence("\x1b[0m"),
|
||||
)
|
||||
'
|
||||
' || (starship module git_branch && starship module git_status)
|
||||
'';
|
||||
};
|
||||
git_branch = {
|
||||
when = true;
|
||||
command = "jj root >/dev/null 2>&1 || starship module git_branch";
|
||||
description = "Only show git_branch if we're not in a jj repo";
|
||||
};
|
||||
git_status = {
|
||||
when = true;
|
||||
command = "jj root >/dev/null 2>&1 || starship module git_status";
|
||||
description = "Only show git_status if we're not in a jj repo";
|
||||
};
|
||||
};
|
||||
git_state.disabled = true;
|
||||
git_commit.disabled = true;
|
||||
@@ -88,7 +78,7 @@ lib.my.makeSwitch {
|
||||
};
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
dotDir = ".config/zsh";
|
||||
dotDir = "${config.my.home.xdg.configHome}/zsh";
|
||||
history = {
|
||||
path = "${stateHome}/zsh_history";
|
||||
ignorePatterns = [
|
||||
|
||||
@@ -26,6 +26,7 @@ lib.my.makeHomeProgramConfig {
|
||||
ui = {
|
||||
graph.style = "square";
|
||||
default-command = "status";
|
||||
conflict-marker-style = "snapshot";
|
||||
};
|
||||
signing = {
|
||||
backend = "ssh";
|
||||
|
||||
@@ -26,31 +26,9 @@ lib.my.makeHomeProgramConfig {
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
extraPackages = with pkgs; [
|
||||
gcc
|
||||
gnumake
|
||||
gcc # treesitter
|
||||
|
||||
pyright
|
||||
|
||||
clang-tools
|
||||
|
||||
rust-analyzer
|
||||
pest-ide-tools
|
||||
|
||||
nixd
|
||||
|
||||
gotools
|
||||
gopls
|
||||
|
||||
stylua
|
||||
lua-language-server
|
||||
|
||||
nodePackages.vscode-langservers-extracted
|
||||
nodePackages.typescript-language-server
|
||||
vue-language-server
|
||||
typescript
|
||||
nodejs
|
||||
|
||||
ripgrep
|
||||
ripgrep # telescope
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,5 +4,3 @@ require("core.keymaps")
|
||||
require("langs.langs-setup")
|
||||
|
||||
require("plugins.plugins-setup")
|
||||
|
||||
require("core.autostart")
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
-- Open tree when in config dir
|
||||
local configdir = vim.fn.system("echo $HOME/.config")
|
||||
configdir = string.sub(configdir, 1, string.len(configdir) - 1)
|
||||
if string.find(vim.fn.system("pwd"), configdir) ~= nil then
|
||||
vim.cmd("NvimTreeOpen")
|
||||
vim.cmd("NvimTmuxNavigateRight")
|
||||
end
|
||||
@@ -7,33 +7,21 @@ local buf_kill = globals.buf_kill
|
||||
|
||||
keymap.set("v", "<S-pageup>", ":m '<-2<CR>gv=gv", opt)
|
||||
keymap.set("v", "<S-pagedown>", ":m '>+1<CR>gv=gv", opt)
|
||||
keymap.set({ "i", "n", "v" }, "<S-up>", "<up>", opt)
|
||||
keymap.set({ "i", "n", "v" }, "<S-down>", "<down>", opt)
|
||||
|
||||
keymap.set("n", "<leader>nh", ":nohl<CR>", opt)
|
||||
|
||||
keymap.set("n", "<leader>sv", "<C-w>v", opt)
|
||||
keymap.set("n", "<leader>sh", "<C-w>s", opt)
|
||||
|
||||
keymap.set("i", "<S-up>", "<ESC>v<up>", opt)
|
||||
keymap.set("i", "<S-down>", "<ESC>v<down>", opt)
|
||||
keymap.set("n", "<S-up>", "v<up>", opt)
|
||||
keymap.set("n", "<S-down>", "v<down>", opt)
|
||||
keymap.set("v", "<S-up>", "<up>", opt)
|
||||
keymap.set("v", "<S-down>", "<down>", opt)
|
||||
|
||||
keymap.set("i", "<S-left>", "<ESC>v<left>", opt)
|
||||
keymap.set("i", "<S-right>", "<ESC>v<right>", opt)
|
||||
keymap.set("n", "<S-left>", "v<left>", opt)
|
||||
keymap.set("n", "<S-right>", "v<right>", opt)
|
||||
keymap.set("v", "<S-left>", "<left>", opt)
|
||||
keymap.set("v", "<S-right>", "<right>", opt)
|
||||
|
||||
keymap.set("v", ".", ">gv", opt)
|
||||
keymap.set("v", ",", "<gv", opt)
|
||||
|
||||
keymap.set({ "n", "v" }, "<pageup>", "9k", opt)
|
||||
keymap.set({ "n", "v" }, "<pagedown>", "9j", opt)
|
||||
keymap.set("i", "<pageup>", "<up><up><up><up><up><up><up><up><up>", opt)
|
||||
keymap.set("i", "<pagedown>", "<down><down><down><down><down><down><down><down><down>", opt)
|
||||
keymap.set("i", "<pageup>", string.rep("<up>", 9), opt)
|
||||
keymap.set("i", "<pagedown>", string.rep("<down>", 9), opt)
|
||||
|
||||
keymap.set("n", "<leader>ww", ":w<CR>", opt)
|
||||
keymap.set("n", "<leader>so", ":so<CR>", opt)
|
||||
@@ -54,15 +42,6 @@ keymap.set("n", "L", ":BufferLineCycleNext<CR>", opt)
|
||||
keymap.set("n", "<A-h>", ":BufferLineMovePrev<CR>", opt)
|
||||
keymap.set("n", "<A-l>", ":BufferLineMoveNext<CR>", opt)
|
||||
|
||||
-- reload config
|
||||
keymap.set("n", "<leader>rc", ":so ~/.config/nvim/init.lua<CR>", opt)
|
||||
keymap.set("n", "<leader>rp", ":so ~/.config/nvim/lua/plugins/plugins-setup.lua<CR>", opt)
|
||||
|
||||
-- Workspaces
|
||||
keymap.set("n", "<leader>wo", ":Telescope workspaces<CR>", opt)
|
||||
keymap.set("n", "<leader>wa", ":WorkspacesAdd<CR>", opt)
|
||||
keymap.set("n", "<leader>wr", ":WorkspacesRemove<CR>", opt)
|
||||
|
||||
-- Neovide config
|
||||
if vim.g.neovide then
|
||||
keymap.set("v", "<C-C>", '"+y', opt)
|
||||
|
||||
@@ -9,6 +9,7 @@ local servers = {
|
||||
"cssls",
|
||||
"nixd",
|
||||
"html",
|
||||
"java_language_server",
|
||||
}
|
||||
|
||||
local extra_config = {
|
||||
@@ -73,7 +74,6 @@ capabilities.textDocument.foldingRange = {
|
||||
dynamicRegistration = false,
|
||||
lineFoldingOnly = true,
|
||||
}
|
||||
local lspconfig = require("lspconfig")
|
||||
for _, server in ipairs(servers) do
|
||||
local extra = extra_config[server] or {}
|
||||
local config = {
|
||||
@@ -82,5 +82,6 @@ for _, server in ipairs(servers) do
|
||||
for k, v in pairs(extra) do
|
||||
config[k] = v
|
||||
end
|
||||
lspconfig[server].setup(config)
|
||||
vim.lsp.config(server, config)
|
||||
vim.lsp.enable(server)
|
||||
end
|
||||
|
||||
@@ -15,6 +15,7 @@ lib.my.makeSwitch {
|
||||
python.enable = true;
|
||||
rust.enable = true;
|
||||
lua.enable = true;
|
||||
java.enable = true;
|
||||
qml.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -14,6 +14,10 @@ lib.my.makeHomePackageConfig {
|
||||
"go"
|
||||
];
|
||||
extraConfig = {
|
||||
my.home.home.packages = with pkgs; [
|
||||
gotools
|
||||
gopls
|
||||
];
|
||||
my.persist.homeDirs = [
|
||||
"go"
|
||||
];
|
||||
|
||||
21
modules/coding/langs/java.nix
Normal file
21
modules/coding/langs/java.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
inherit config;
|
||||
optionName = "java";
|
||||
optionPath = [
|
||||
"coding"
|
||||
"langs"
|
||||
"java"
|
||||
];
|
||||
config' = {
|
||||
my.home.home.packages = with pkgs; [
|
||||
openjdk24
|
||||
java-language-server
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -16,9 +16,10 @@ lib.my.makeSwitch {
|
||||
my.home = {
|
||||
home.packages = with pkgs; [
|
||||
nodejs
|
||||
nodePackages.npm
|
||||
|
||||
typescript
|
||||
|
||||
nodePackages.typescript-language-server
|
||||
vue-language-server
|
||||
];
|
||||
home.file.".npmrc".text = ''
|
||||
prefix = ''${HOME}/.npm-global
|
||||
|
||||
@@ -15,6 +15,8 @@ lib.my.makeSwitch {
|
||||
config' = {
|
||||
my.home.home.packages = with pkgs; [
|
||||
luajit
|
||||
stylua
|
||||
lua-language-server
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ lib.my.makeHomePackageConfig {
|
||||
extraConfig = {
|
||||
my.home.home.packages = with pkgs; [
|
||||
uv
|
||||
pyright
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -21,8 +21,11 @@ lib.my.makeSwitch {
|
||||
"rust-src"
|
||||
"rustc"
|
||||
"rustfmt"
|
||||
"rust-analyzer"
|
||||
])
|
||||
evcxr # rust repl
|
||||
|
||||
pest-ide-tools
|
||||
];
|
||||
home.file.".cargo/config.toml".text = ''
|
||||
[source.crates-io]
|
||||
@@ -34,6 +37,9 @@ lib.my.makeSwitch {
|
||||
[net]
|
||||
git-fetch-with-cli = true
|
||||
'';
|
||||
programs.zsh.initContent = lib.mkAfter ''
|
||||
export PATH=$PATH:$HOME/.cargo/bin
|
||||
'';
|
||||
};
|
||||
my.persist.homeDirs = [
|
||||
".cargo"
|
||||
|
||||
@@ -16,7 +16,6 @@ lib.my.makeSwitch {
|
||||
terminal.all.enable = true;
|
||||
wm.all.enable = true;
|
||||
style.enable = true;
|
||||
quickshell.enable = true;
|
||||
wine.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,7 +10,6 @@ lib.my.makeSwitch {
|
||||
config' = {
|
||||
my.desktop.browser = {
|
||||
firefox.enable = true;
|
||||
librewolf.enable = true;
|
||||
chromium.enable = true;
|
||||
zen.enable = true;
|
||||
};
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
lib.my.makeHomeProgramConfig {
|
||||
inherit config;
|
||||
programName = "librewolf";
|
||||
optionPath = [
|
||||
"desktop"
|
||||
"browser"
|
||||
"librewolf"
|
||||
];
|
||||
extraConfig = {
|
||||
my.persist.homeDirs = [
|
||||
".librewolf"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -13,10 +13,8 @@ lib.my.makeSwitch {
|
||||
"minecraft"
|
||||
];
|
||||
config' = {
|
||||
my.home.home.packages = with pkgs; [
|
||||
hmcl
|
||||
|
||||
openjdk21
|
||||
my.home.home.packages = [
|
||||
pkgs.hmcl
|
||||
];
|
||||
|
||||
my.persist.homeDirs = [
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
import Quickshell
|
||||
import Quickshell.Services.UPower
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import org.kde.kirigami
|
||||
|
||||
Rectangle {
|
||||
id: bat
|
||||
|
||||
Layout.preferredWidth: batIcon.width
|
||||
Layout.fillHeight: true
|
||||
color: 'transparent'
|
||||
|
||||
readonly property var battery: UPower.displayDevice
|
||||
readonly property int percentage: Math.round(battery.percentage * 100)
|
||||
property var size: height * 0.4
|
||||
|
||||
visible: battery.isLaptopBattery
|
||||
|
||||
Icon {
|
||||
id: batIcon
|
||||
anchors.centerIn: parent
|
||||
|
||||
implicitHeight: bat.size
|
||||
implicitWidth: bat.size
|
||||
|
||||
// This recolors the entire svg, instead of only classless components.
|
||||
// Hopefully in the future classes can be selected for recoloring.
|
||||
isMask: true
|
||||
color: 'white'
|
||||
|
||||
source: {
|
||||
const nearestTen = Math.round(bat.percentage / 10) * 10;
|
||||
const number = nearestTen.toString().padStart(2, "0");
|
||||
let charging;
|
||||
|
||||
if (bat.battery.state == UPowerDeviceState.Charging) {
|
||||
charging = "-charging";
|
||||
} else if (bat.battery.state.toString() == UPowerDeviceState.FullyCharged) {
|
||||
charging = "-charged";
|
||||
} else {
|
||||
charging = "";
|
||||
}
|
||||
|
||||
return Quickshell.iconPath(`battery-level-${number}${charging}-symbolic`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import "../../utils"
|
||||
|
||||
Rectangle {
|
||||
Layout.fillHeight: true
|
||||
color: "transparent"
|
||||
implicitWidth: clockText.width
|
||||
|
||||
Text {
|
||||
id: clockText
|
||||
text: Time.time
|
||||
color: Colors.fg
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Rectangle {
|
||||
Layout.fillHeight: true
|
||||
color: "salmon"
|
||||
implicitWidth: mprisText.width
|
||||
|
||||
Text {
|
||||
id: mprisText
|
||||
text: "Mpris"
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import "../../utils"
|
||||
|
||||
Rectangle {
|
||||
id: resources
|
||||
|
||||
Layout.fillHeight: true
|
||||
color: "transparent"
|
||||
implicitWidth: rowLayout.width
|
||||
|
||||
property int valueSize: 8
|
||||
property int textSize: 6
|
||||
|
||||
property string valueColor: "white"
|
||||
property string textColor: "lightgray"
|
||||
|
||||
RowLayout {
|
||||
id: rowLayout
|
||||
anchors.centerIn: parent
|
||||
|
||||
ColumnLayout {
|
||||
id: cpuColumn
|
||||
Label {
|
||||
color: textColor
|
||||
font.pointSize: textSize
|
||||
text: "CPU"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
Label {
|
||||
color: valueColor
|
||||
font.pointSize: valueSize
|
||||
text: Resources.cpu_percent + "%"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Label {
|
||||
color: textColor
|
||||
font.pointSize: textSize
|
||||
text: "MEM"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
Label {
|
||||
color: valueColor
|
||||
font.pointSize: valueSize
|
||||
text: Resources.mem_percent + "%"
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import QtQuick
|
||||
|
||||
Text {
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Rectangle {
|
||||
Layout.fillHeight: true
|
||||
color: "lightblue"
|
||||
implicitWidth: trayText.width
|
||||
|
||||
Text {
|
||||
id: trayText
|
||||
text: "Tray"
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Rectangle {
|
||||
id: ws
|
||||
|
||||
property bool hovered: false
|
||||
|
||||
Layout.preferredWidth: parent.height * 0.4
|
||||
Layout.preferredHeight: parent.height * 0.4
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
radius: height / 2
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
|
||||
onEntered: () => {
|
||||
ws.hovered = true;
|
||||
}
|
||||
onExited: () => {
|
||||
ws.hovered = false;
|
||||
}
|
||||
onClicked: () => console.log(`workspace ?`)
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import "../../../utils"
|
||||
import Quickshell.Hyprland
|
||||
|
||||
Rectangle {
|
||||
id: workspaces
|
||||
|
||||
color: 'transparent'
|
||||
|
||||
width: workspacesRow.implicitWidth
|
||||
Layout.fillHeight: true
|
||||
|
||||
RowLayout {
|
||||
id: workspacesRow
|
||||
|
||||
height: parent.height
|
||||
implicitWidth: (parent.height * 0.5 + spacing) * 2 - spacing
|
||||
anchors.centerIn: parent
|
||||
|
||||
spacing: height / 7
|
||||
|
||||
Repeater {
|
||||
id: repeater
|
||||
|
||||
model: HyprlandUtils.maxWorkspace
|
||||
|
||||
Workspace {
|
||||
id: ws
|
||||
required property int index
|
||||
property HyprlandWorkspace currWorkspace: Hyprland.workspaces.values.find(e => e.id == index + 1) || null
|
||||
property bool nonexistent: currWorkspace === null
|
||||
property bool focused: index + 1 === Hyprland.focusedMonitor.activeWorkspace.id
|
||||
|
||||
Layout.preferredWidth: {
|
||||
if (focused) {
|
||||
return parent.height * 0.8;
|
||||
} else {
|
||||
return parent.height * 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
color: {
|
||||
if (nonexistent) {
|
||||
return Colors.bgBlur;
|
||||
} else {
|
||||
return Colors.monitorColors[Hyprland.monitors.values.indexOf(Hyprland.workspaces.values.find(e => e.id === index + 1).monitor)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import "./windows"
|
||||
import Quickshell // for ShellRoot and PanelWindow
|
||||
|
||||
ShellRoot {
|
||||
Bar {}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import Quickshell
|
||||
pragma Singleton
|
||||
|
||||
Singleton {
|
||||
property var bgBar: Qt.rgba(0, 0, 0, 0.21)
|
||||
property var bgBlur: Qt.rgba(0, 0, 0, 0.3)
|
||||
property var fg: "white"
|
||||
property list<var> monitorColors: ["#e06c75", "#e5c07b", "#98c379", "#61afef"]
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Hyprland
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
id: hyprland
|
||||
|
||||
property list<HyprlandWorkspace> workspaces: sortWorkspaces(Hyprland.workspaces.values)
|
||||
property HyprlandWorkspace focusedWorkspace: Hyprland.focusedMonitor?.activeWorkspace
|
||||
property int maxWorkspace: findMaxId()
|
||||
|
||||
function sortWorkspaces(ws) {
|
||||
return [...ws].sort((a, b) => a?.id - b?.id);
|
||||
}
|
||||
|
||||
function switchWorkspace(w: int): void {
|
||||
console.log(`workspace: focus ${focusedWorkspace.id} -> ${w}`);
|
||||
Hyprland.dispatch(`workspace ${w}`);
|
||||
}
|
||||
|
||||
function findMaxId(): int {
|
||||
let num = hyprland.workspaces.length;
|
||||
return hyprland.workspaces[num - 1]?.id;
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: Hyprland
|
||||
function onRawEvent(event) {
|
||||
// console.log("EVENT NAME", event.name);
|
||||
// consow.wg("EVENT DATA", event.data);
|
||||
let eventName = event.name;
|
||||
|
||||
switch (eventName) {
|
||||
// Both of these are required in order to detect workspace changes
|
||||
// even when switching monitors.
|
||||
// case "workspacev2":
|
||||
// {
|
||||
// // hyprland.focusedWorkspace = Hyprland.focusedMonitor?.activeWorkspace;
|
||||
// console.log(`workspace: ${hyprland.focusedWorkspace.id}`);
|
||||
// console.log(`num workspaces ${hyprland.workspaces.length}`)
|
||||
// console.log(`num workspaces (real) ${Hyprland.workspaces.values.length}`)
|
||||
// break;
|
||||
// }
|
||||
// case "focusedmonv2":
|
||||
// {
|
||||
// // hyprland.focusedWorkspace = Hyprland.focusedMonitor?.activeWorkspace;
|
||||
// console.log(`workspace: ${hyprland.focusedWorkspace.id}`);
|
||||
// console.log(`num workspaces ${hyprland.workspaces.length}`)
|
||||
// console.log(`num workspaces (real) ${Hyprland.workspaces.values.length}`)
|
||||
// break;
|
||||
// }
|
||||
case "createworkspacev2":
|
||||
{
|
||||
hyprland.workspaces = hyprland.sortWorkspaces(Hyprland.workspaces.values);
|
||||
hyprland.maxWorkspace = findMaxId();
|
||||
}
|
||||
case "destroyworkspacev2":
|
||||
{
|
||||
hyprland.workspaces = hyprland.sortWorkspaces(Hyprland.workspaces.values);
|
||||
hyprland.maxWorkspace = findMaxId();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
property int cpu_percent
|
||||
property string cpu_freq
|
||||
property int mem_percent
|
||||
property string mem_used
|
||||
|
||||
Process {
|
||||
id: process_cpu_percent
|
||||
running: true
|
||||
command: ["sh", "-c", "top -bn1 | rg '%Cpu' | awk '{print 100-$8}'"]
|
||||
stdout: SplitParser {
|
||||
onRead: data => cpu_percent = Math.round(data)
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: process_cpu_freq
|
||||
running: true
|
||||
command: ["sh", "-c", "lscpu --parse=MHZ"]
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
// delete the first 4 lines (comments)
|
||||
const mhz = data.split("\n").slice(4);
|
||||
// compute mean frequency
|
||||
const freq = mhz.reduce((acc, e) => acc + Number(e), 0) / mhz.length;
|
||||
|
||||
cpu_freq = Math.round(freq) + " MHz";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: process_mem_percent
|
||||
running: true
|
||||
command: ["sh", "-c", "free | awk 'NR==2{print $3/$2*100}'"]
|
||||
stdout: SplitParser {
|
||||
onRead: data => mem_percent = Math.round(data)
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: process_mem_used
|
||||
running: true
|
||||
command: ["sh", "-c", "free --si -h | awk 'NR==2{print $3}'"]
|
||||
stdout: SplitParser {
|
||||
onRead: data => mem_used = data
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
interval: 2000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: () => {
|
||||
process_cpu_percent.running = true
|
||||
process_cpu_freq.running = true
|
||||
process_mem_percent.running = true
|
||||
process_mem_used.running = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
property var locale: Qt.locale()
|
||||
|
||||
function createDate(): string {
|
||||
let date = new Date();
|
||||
let hh = date.getHours().toString().padStart(2, 0);
|
||||
let mm = date.getMinutes().toString().padStart(2, 0)
|
||||
let weekday = locale.dayName(date.getDay(), Locale.ShortFormat)
|
||||
let month = locale.monthName(date.getMonth(), Locale.ShortFormat)
|
||||
let day = date.getDate()
|
||||
|
||||
return `${weekday} ${month} ${day} ${hh}:${mm}`
|
||||
}
|
||||
|
||||
property var time: createDate()
|
||||
|
||||
Timer {
|
||||
interval: 1000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: time = createDate()
|
||||
}
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
//@ pragma NativeTextRendering
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import "../utils"
|
||||
import "../components/bar"
|
||||
import "../components/bar/workspaces"
|
||||
|
||||
Scope {
|
||||
PanelWindow {
|
||||
id: barWindow
|
||||
screen: Quickshell.screens[0]
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
height: 32
|
||||
|
||||
color: "transparent"
|
||||
|
||||
Rectangle {
|
||||
id: bar
|
||||
anchors.fill: parent
|
||||
|
||||
color: Colors.bgBlur
|
||||
|
||||
// left
|
||||
// RowLayout {
|
||||
// id: barLeft
|
||||
//
|
||||
// anchors.bottom: parent.bottom
|
||||
// anchors.left: parent.left
|
||||
// anchors.top: parent.top
|
||||
//
|
||||
// anchors.leftMargin: height / 4
|
||||
// anchors.rightMargin: height / 4
|
||||
// spacing: height / 4
|
||||
//
|
||||
// Workspaces {}
|
||||
// }
|
||||
|
||||
// middle
|
||||
RowLayout {
|
||||
id: barMiddle
|
||||
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
|
||||
anchors.leftMargin: height / 4
|
||||
anchors.rightMargin: height / 4
|
||||
spacing: height / 4
|
||||
|
||||
Mpris {}
|
||||
}
|
||||
|
||||
// right
|
||||
RowLayout {
|
||||
id: barRight
|
||||
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
|
||||
anchors.leftMargin: height / 4
|
||||
anchors.rightMargin: height / 4
|
||||
spacing: height / 4
|
||||
|
||||
Tray {}
|
||||
Resources {}
|
||||
Battery {}
|
||||
Clock {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
inherit config;
|
||||
default = false;
|
||||
optionName = "quickshell";
|
||||
optionPath = [
|
||||
"desktop"
|
||||
"quickshell"
|
||||
];
|
||||
config' = {
|
||||
my.home = {
|
||||
home.packages = [ pkgs.quickshell ];
|
||||
home.sessionVariables.QML2_IMPORT_PATH = lib.concatStringsSep ":" [
|
||||
"${pkgs.quickshell}/lib/qt-6/qml"
|
||||
"${pkgs.kdePackages.qtdeclarative}/lib/qt-6/qml"
|
||||
"${pkgs.kdePackages.kirigami.unwrapped}/lib/qt-6/qml"
|
||||
];
|
||||
xdg.configFile."quickshell" = {
|
||||
source = ./config;
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -12,6 +12,19 @@ lib.my.makeSwitch {
|
||||
"style"
|
||||
];
|
||||
config' = {
|
||||
catppuccin.sddm = {
|
||||
enable = true;
|
||||
font = "Jetbrains Mono";
|
||||
fontSize = "18";
|
||||
};
|
||||
services.displayManager.sddm = {
|
||||
package = pkgs.kdePackages.sddm;
|
||||
settings.Theme = {
|
||||
CursorTheme = "breeze-dark";
|
||||
CursorSize = 24;
|
||||
};
|
||||
};
|
||||
|
||||
my.home = {
|
||||
stylix = {
|
||||
enable = true;
|
||||
@@ -35,13 +48,17 @@ lib.my.makeSwitch {
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
package = pkgs.mono-gtk-theme;
|
||||
name = "MonoThemeDark";
|
||||
package = pkgs.gnome-themes-extra;
|
||||
name = "Adwaita";
|
||||
};
|
||||
gtk2 = {
|
||||
configLocation = "${config.my.home.xdg.configHome}/gtk-2.0/gtkrc";
|
||||
};
|
||||
gtk3 = {
|
||||
theme = {
|
||||
package = pkgs.adw-gtk3;
|
||||
name = "adw-gtk3";
|
||||
};
|
||||
extraConfig = {
|
||||
gtk-decoration-layout = ":none";
|
||||
gtk-application-prefer-dark-theme = 1;
|
||||
@@ -64,6 +81,15 @@ lib.my.makeSwitch {
|
||||
];
|
||||
platformTheme.name = "qtct";
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
"qt5ct/qt5ct.conf".source = pkgs.replaceVars ./qtct/qt5ct.conf {
|
||||
darker = pkgs.libsForQt5.qt5ct + /share/qt5ct/colors/darker.conf;
|
||||
};
|
||||
"qt6ct/qt6ct.conf".source = pkgs.replaceVars ./qtct/qt6ct.conf {
|
||||
darker = pkgs.qt6ct + /share/qt6ct/colors/darker.conf;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
32
modules/desktop/style/qtct/qt5ct.conf
Normal file
32
modules/desktop/style/qtct/qt5ct.conf
Normal file
@@ -0,0 +1,32 @@
|
||||
[Appearance]
|
||||
color_scheme_path=@darker@
|
||||
custom_palette=true
|
||||
icon_theme=Papirus-Dark
|
||||
standard_dialogs=xdgdesktopportal
|
||||
style=Darkly
|
||||
|
||||
[Fonts]
|
||||
fixed="Noto Sans CJK SC,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
general="Noto Sans CJK SC,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=1
|
||||
buttonbox_layout=0
|
||||
cursor_flash_time=1000
|
||||
dialog_buttons_have_icons=1
|
||||
double_click_interval=400
|
||||
gui_effects=@Invalid()
|
||||
keyboard_scheme=2
|
||||
menus_have_icons=true
|
||||
show_shortcuts_in_context_menus=true
|
||||
stylesheets=@Invalid()
|
||||
toolbutton_style=4
|
||||
underline_shortcut=1
|
||||
wheel_scroll_lines=3
|
||||
|
||||
[SettingsWindow]
|
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\t\0\0\x4\x1b\0\0\0\0\0\0\0\0\0\0\x3\t\0\0\x4\x1b\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\x3\t\0\0\x4\x1b)
|
||||
|
||||
[Troubleshooting]
|
||||
force_raster_widgets=1
|
||||
ignored_applications=@Invalid()
|
||||
32
modules/desktop/style/qtct/qt6ct.conf
Normal file
32
modules/desktop/style/qtct/qt6ct.conf
Normal file
@@ -0,0 +1,32 @@
|
||||
[Appearance]
|
||||
color_scheme_path=@darker@
|
||||
custom_palette=true
|
||||
icon_theme=Papirus-Dark
|
||||
standard_dialogs=xdgdesktopportal
|
||||
style=Darkly
|
||||
|
||||
[Fonts]
|
||||
fixed="Noto Sans CJK SC,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
general="Noto Sans CJK SC,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=1
|
||||
buttonbox_layout=0
|
||||
cursor_flash_time=1000
|
||||
dialog_buttons_have_icons=1
|
||||
double_click_interval=400
|
||||
gui_effects=@Invalid()
|
||||
keyboard_scheme=2
|
||||
menus_have_icons=true
|
||||
show_shortcuts_in_context_menus=true
|
||||
stylesheets=@Invalid()
|
||||
toolbutton_style=4
|
||||
underline_shortcut=1
|
||||
wheel_scroll_lines=3
|
||||
|
||||
[SettingsWindow]
|
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\t\0\0\x4\x1b\0\0\0\0\0\0\0\0\0\0\x3\t\0\0\x4\x1b\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\x3\t\0\0\x4\x1b)
|
||||
|
||||
[Troubleshooting]
|
||||
force_raster_widgets=1
|
||||
ignored_applications=@Invalid()
|
||||
@@ -6,7 +6,6 @@
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
inherit config;
|
||||
default = true;
|
||||
optionName = "wine";
|
||||
optionPath = [
|
||||
"desktop"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
input = {
|
||||
focus-follows-mouse = {
|
||||
enable = true;
|
||||
max-scroll-amount = "40%";
|
||||
max-scroll-amount = "0%";
|
||||
};
|
||||
workspace-auto-back-and-forth = true;
|
||||
};
|
||||
@@ -39,7 +39,7 @@
|
||||
{ proportion = 0.6; }
|
||||
{ proportion = 0.66667; }
|
||||
];
|
||||
default-column-width.proportion = 0.4;
|
||||
default-column-width.proportion = 1.0;
|
||||
background-color = "transparent";
|
||||
};
|
||||
|
||||
@@ -63,6 +63,10 @@
|
||||
matches = [ { namespace = "^wallpaper$"; } ];
|
||||
place-within-backdrop = true;
|
||||
}
|
||||
{
|
||||
matches = [ { namespace = "^waybar$"; } ];
|
||||
opacity = 0.99;
|
||||
}
|
||||
];
|
||||
overview.workspace-shadow.enable = false;
|
||||
|
||||
@@ -82,7 +86,7 @@
|
||||
opacity = 0.8;
|
||||
}
|
||||
{
|
||||
matches = [ { app-id = "org.gnome.Nautilus|nemo"; } ];
|
||||
matches = [ { app-id = "org.gnome.Nautilus"; } ];
|
||||
opacity = 0.6;
|
||||
}
|
||||
];
|
||||
@@ -136,7 +140,7 @@
|
||||
"kitty"
|
||||
];
|
||||
"Mod+G".action.spawn = [ "zen-beta" ];
|
||||
"Mod+E".action.spawn = [ "nemo" ];
|
||||
"Mod+E".action.spawn = [ "nautilus" ];
|
||||
"Mod+R".action.spawn = [
|
||||
"sh"
|
||||
"-c"
|
||||
@@ -151,17 +155,19 @@
|
||||
"XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"pamixer"
|
||||
"-i"
|
||||
"2"
|
||||
"wpctl"
|
||||
"set-volume"
|
||||
"@DEFAULT_SINK@"
|
||||
"2%+"
|
||||
];
|
||||
};
|
||||
"XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"pamixer"
|
||||
"-d"
|
||||
"2"
|
||||
"wpctl"
|
||||
"set-volume"
|
||||
"@DEFAULT_SINK@"
|
||||
"2%-"
|
||||
];
|
||||
};
|
||||
"XF86AudioMute" = {
|
||||
@@ -173,7 +179,7 @@
|
||||
"play-pause"
|
||||
];
|
||||
};
|
||||
"Mod+XF86AudioRaiseVolume" = {
|
||||
"Super+XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"playerctl"
|
||||
@@ -182,7 +188,7 @@
|
||||
"next"
|
||||
];
|
||||
};
|
||||
"Mod+XF86AudioLowerVolume" = {
|
||||
"Super+XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"playerctl"
|
||||
@@ -192,6 +198,39 @@
|
||||
];
|
||||
};
|
||||
|
||||
"XF86MonBrightnessUp" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"brightnessctl"
|
||||
"set"
|
||||
"+5%"
|
||||
];
|
||||
};
|
||||
"XF86MonBrightnessDown" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"brightnessctl"
|
||||
"set"
|
||||
"5%-"
|
||||
];
|
||||
};
|
||||
"Alt+XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"brightnessctl"
|
||||
"set"
|
||||
"+5%"
|
||||
];
|
||||
};
|
||||
"Alt+XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action.spawn = [
|
||||
"brightnessctl"
|
||||
"set"
|
||||
"5%-"
|
||||
];
|
||||
};
|
||||
|
||||
"Mod+Q".action = close-window;
|
||||
|
||||
"Mod+Left".action = focus-column-left;
|
||||
|
||||
@@ -2,7 +2,6 @@ args@{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -28,11 +27,7 @@ in
|
||||
niri = {
|
||||
default = [
|
||||
"gnome"
|
||||
"gtk"
|
||||
];
|
||||
"org.freedesktop.impl.portal.Access" = [ "gtk" ];
|
||||
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
|
||||
"org.freedesktop.impl.portal.Notification" = [ "gtk" ];
|
||||
"org.freedesktop.impl.portal.RemoteDesktop" = [ "gnome" ];
|
||||
"org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ];
|
||||
"org.freedesktop.impl.portal.Screenshot" = [ "gnome" ];
|
||||
@@ -40,33 +35,34 @@ in
|
||||
};
|
||||
};
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-gnome
|
||||
];
|
||||
};
|
||||
systemd.user.services.niri-flake-polkit.serviceConfig.ExecStart =
|
||||
lib.mkForce "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
package = pkg;
|
||||
};
|
||||
services.displayManager = {
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = username;
|
||||
};
|
||||
sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
autoLogin.relogin = true;
|
||||
};
|
||||
};
|
||||
my.home = {
|
||||
home.packages = with pkgs; [
|
||||
xwayland-satellite-unstable
|
||||
|
||||
wlr-randr
|
||||
wl-clipboard
|
||||
cliphist
|
||||
playerctl
|
||||
brightnessctl
|
||||
|
||||
swaynotificationcenter
|
||||
nemo-with-extensions
|
||||
xwayland-satellite-unstable
|
||||
nautilus
|
||||
];
|
||||
programs.wofi.enable = true;
|
||||
xdg.configFile."wofi" = {
|
||||
|
||||
@@ -19,8 +19,8 @@ _: {
|
||||
modules-right = [
|
||||
"custom/notification"
|
||||
"tray"
|
||||
"pulseaudio"
|
||||
"pulseaudio#microphone"
|
||||
"wireplumber"
|
||||
"wireplumber#source"
|
||||
];
|
||||
|
||||
"niri/workspaces" = {
|
||||
@@ -73,7 +73,6 @@ _: {
|
||||
stopped = "";
|
||||
};
|
||||
tooltip = false;
|
||||
toottip-format = "{status_icon} Musicfox {artist} - {album} - {title}";
|
||||
on-scroll-up = "playerctl -p musicfox volume 0.05+";
|
||||
on-scroll-down = "playerctl -p musicfox volume 0.05-";
|
||||
};
|
||||
@@ -81,37 +80,21 @@ _: {
|
||||
format = " {:%H:%M %m.%d}";
|
||||
tooltip = false;
|
||||
};
|
||||
pulseaudio = {
|
||||
format = "{icon} {volume}%";
|
||||
wireplumber = {
|
||||
format = " {volume}%";
|
||||
tooltip = false;
|
||||
format-muted = " Muted";
|
||||
on-click = "pamixer -t";
|
||||
on-click-middle = "pavucontrol & disown";
|
||||
on-scroll-up = "pamixer -i 5";
|
||||
on-scroll-down = "pamixer -d 5";
|
||||
on-click = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
||||
on-click-middle = "pwvucontrol";
|
||||
scroll-step = 5;
|
||||
format-icons = {
|
||||
headphone = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
portable = "";
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
};
|
||||
"pulseaudio#microphone" = {
|
||||
format = "{format_source}";
|
||||
"wireplumber#source" = {
|
||||
node-type = "Audio/Source";
|
||||
format = " {volume}%";
|
||||
tooltip = false;
|
||||
format-source = " {volume}%";
|
||||
format-source-muted = " Muted";
|
||||
on-click = "pamixer --default-source -t";
|
||||
on-scroll-up = "pamixer --default-source -i 5";
|
||||
on-scroll-down = "pamixer --default-source -d 5";
|
||||
format-muted = " Muted";
|
||||
on-click = "wpctl set-mute @DEFAULT_SOURCE@ toggle";
|
||||
on-click-middle = "pwvucontrol";
|
||||
scroll-step = 5;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ tooltip * {
|
||||
#window,
|
||||
#clock,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#network,
|
||||
#workspaces,
|
||||
#taskbar,
|
||||
@@ -219,13 +219,13 @@ window#waybar.empty #window {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
#wireplumber {
|
||||
color: #89b4fa;
|
||||
border-right: 0px;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
}
|
||||
|
||||
#pulseaudio.microphone {
|
||||
#wireplumber.source {
|
||||
color: #cba6f7;
|
||||
margin-right: 5px;
|
||||
border-left: 0px;
|
||||
@@ -238,10 +238,3 @@ window#waybar.empty #window {
|
||||
margin-right: 10px;
|
||||
border-left: 0px;
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
@@ -11,8 +11,7 @@ let
|
||||
cfg = config.my.autologin;
|
||||
gettycfg = config.services.getty;
|
||||
|
||||
baseArgs =
|
||||
[
|
||||
baseArgs = [
|
||||
"--login-program"
|
||||
"${gettycfg.loginProgram}"
|
||||
]
|
||||
|
||||
@@ -18,7 +18,6 @@ lib.my.makeSwitch {
|
||||
fcitx5 = {
|
||||
addons = with pkgs; [
|
||||
fcitx5-chinese-addons # fcitx5-mozc
|
||||
fluent-fcitx5
|
||||
fcitx5-lightly
|
||||
];
|
||||
waylandFrontend = true;
|
||||
@@ -102,6 +101,99 @@ lib.my.makeSwitch {
|
||||
ignoreUserConfig = true;
|
||||
};
|
||||
};
|
||||
nixpkgs.overlays = [
|
||||
(
|
||||
final: prev:
|
||||
lib.mergeAttrsList (
|
||||
map
|
||||
(
|
||||
{
|
||||
pkg,
|
||||
exe,
|
||||
desktop,
|
||||
}:
|
||||
{
|
||||
|
||||
${pkg} = final.stdenvNoCC.mkDerivation {
|
||||
inherit (prev.${pkg}) pname version;
|
||||
src = prev.${pkg};
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
"installPhase"
|
||||
];
|
||||
nativeBuildInputs = [ final.makeWrapper ];
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
substituteInPlace $out/share/applications/${desktop}.desktop --replace-quiet "${prev.${pkg}}" $out
|
||||
wrapProgram $out/bin/${exe} --add-flags "--wayland-text-input-version=3"
|
||||
'';
|
||||
};
|
||||
}
|
||||
)
|
||||
[
|
||||
{
|
||||
pkg = "qq";
|
||||
exe = "qq";
|
||||
desktop = "qq";
|
||||
}
|
||||
{
|
||||
pkg = "vscodium";
|
||||
exe = "codium";
|
||||
desktop = "codium";
|
||||
}
|
||||
{
|
||||
pkg = "signal-desktop";
|
||||
exe = "signal-desktop";
|
||||
desktop = "signal";
|
||||
}
|
||||
]
|
||||
)
|
||||
)
|
||||
(
|
||||
final: prev:
|
||||
lib.mergeAttrsList (
|
||||
map
|
||||
(
|
||||
{ pkg, desktops }:
|
||||
{
|
||||
|
||||
${pkg} = final.stdenvNoCC.mkDerivation {
|
||||
inherit (prev.${pkg}) pname version;
|
||||
src = prev.${pkg};
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
"installPhase"
|
||||
];
|
||||
installPhase =
|
||||
"cp -r . $out \n"
|
||||
+ lib.concatLines (
|
||||
map (
|
||||
desktop:
|
||||
"substituteInPlace $out/share/applications/${desktop}.desktop --replace-fail 'Exec=' 'Exec=env QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx '"
|
||||
) desktops
|
||||
);
|
||||
};
|
||||
}
|
||||
)
|
||||
[
|
||||
{
|
||||
pkg = "wechat";
|
||||
desktops = [ "wechat" ];
|
||||
}
|
||||
{
|
||||
pkg = "wpsoffice-cn";
|
||||
desktops = map (app: "wps-office-${app}") [
|
||||
"et"
|
||||
"pdf"
|
||||
"prometheus"
|
||||
"wpp"
|
||||
"wps"
|
||||
];
|
||||
}
|
||||
]
|
||||
)
|
||||
)
|
||||
];
|
||||
my.home.programs.niri.settings = {
|
||||
binds."Mod+Space".action.spawn = [
|
||||
"fcitx5-remote"
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
secrets,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
@@ -34,11 +36,9 @@ lib.my.makeSwitch {
|
||||
nix.settings = {
|
||||
# Enable flakes and new 'nix' command
|
||||
experimental-features = "nix-command flakes";
|
||||
# Deduplicate and optimize nix store
|
||||
auto-optimise-store = true;
|
||||
substituters = [
|
||||
"https://mirror.sjtu.edu.cn/nix-channels/store"
|
||||
"https://mirrors.sjtug.sjtu.edu.cn/nix-channels/store"
|
||||
"https://mirror.sjtu.edu.cn/nix-channels/store"
|
||||
"https://mirrors.ustc.edu.cn/nix-channels/store"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org"
|
||||
@@ -48,6 +48,19 @@ lib.my.makeSwitch {
|
||||
];
|
||||
};
|
||||
|
||||
sops.secrets.nix-github-token = {
|
||||
sopsFile = secrets.nix-github-token;
|
||||
format = "binary";
|
||||
owner = username;
|
||||
group = "users";
|
||||
mode = "0400";
|
||||
};
|
||||
my.home.nix.extraOptions = ''
|
||||
!include ${config.sops.secrets.nix-github-token.path}
|
||||
'';
|
||||
|
||||
my.home.home.packages = [ pkgs.nixd ];
|
||||
|
||||
# uncomment to enable auto gc
|
||||
/*
|
||||
nix.gc = {
|
||||
|
||||
@@ -14,25 +14,21 @@ in
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
sshKeyPath = lib.mkOption {
|
||||
sshKeyFile = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${config.my.persist.location}/home/${username}/.ssh/id_ed25519";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
sops.age.sshKeyPaths = [
|
||||
cfg.sshKeyPath
|
||||
];
|
||||
sops.age.sshKeyFile = cfg.sshKeyFile;
|
||||
users.users.${username}.extraGroups = [ "keys" ];
|
||||
environment.variables.SOPS_AGE_KEY_FILE = "/run/secrets.d/age-keys.txt";
|
||||
my.home = {
|
||||
sops.age.sshKeyPaths = [
|
||||
cfg.sshKeyPath
|
||||
];
|
||||
sops.age.sshKeyFile = cfg.sshKeyFile;
|
||||
home.packages = [
|
||||
pkgs.sops
|
||||
];
|
||||
home.sessionVariables.SOPS_AGE_SSH_PRIVATE_KEY_FILE = cfg.sshKeyFile;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
pkgs,
|
||||
username,
|
||||
userdesc,
|
||||
sopsRoot,
|
||||
secrets,
|
||||
...
|
||||
}:
|
||||
lib.my.makeSwitch {
|
||||
@@ -16,7 +16,7 @@ lib.my.makeSwitch {
|
||||
programs.zsh.enable = true;
|
||||
|
||||
sops.secrets.imxyy-nix-hashed-password = {
|
||||
sopsFile = sopsRoot + /imxyy-nix-hashed-password.txt;
|
||||
sopsFile = secrets.imxyy-nix-hashed-password;
|
||||
format = "binary";
|
||||
neededForUsers = true;
|
||||
};
|
||||
|
||||
@@ -220,11 +220,14 @@ in
|
||||
(lib.mkIf cfg.enable {
|
||||
virtualisation.libvirtd = {
|
||||
enable = true;
|
||||
qemu.verbatimConfig = ''
|
||||
qemu = {
|
||||
package = pkgs.qemu_kvm;
|
||||
verbatimConfig = ''
|
||||
dynamic_ownership = 0
|
||||
remember_owner = 0
|
||||
'';
|
||||
};
|
||||
};
|
||||
programs.virt-manager.enable = true;
|
||||
users.users.${username}.extraGroups = [ "libvirtd" ];
|
||||
environment.systemPackages = with pkgs; [ virglrenderer ];
|
||||
|
||||
@@ -53,10 +53,6 @@ in
|
||||
"file://${homedir}/Videos 视频"
|
||||
"file://${homedir}/Music 音乐"
|
||||
"file://${homedir}/workspace 工作空间"
|
||||
"file://${homedir}/Documents/%E7%8F%AD%E7%BA%A7%E4%BA%8B%E5%8A%A1 班级事务"
|
||||
"file://${homedir}/NAS NAS"
|
||||
"file://${homedir}/NAS/imxyy_soope_ NAS imxyy_soope_"
|
||||
"file://${homedir}/NAS/imxyy_soope_/OS NAS OS"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -22,11 +22,6 @@
|
||||
cage.__output.patches.__append = [ ./cage-specify-output-name.patch ];
|
||||
matrix-synapse.__assign = final.stable.matrix-synapse;
|
||||
bottles.__input.removeWarningPopup.__assign = true;
|
||||
qq.__output.preInstall.__append = ''
|
||||
gappsWrapperArgs+=(
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--wayland-text-input-version=3}}"
|
||||
)
|
||||
'';
|
||||
|
||||
sing-box.__assign = prev.sing-box.overrideAttrs (finalAttrs: {
|
||||
version = "1.11.14";
|
||||
@@ -64,6 +59,4 @@
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
|
||||
nur-packages = inputs.nur.overlays.default;
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "fcitx5-themes";
|
||||
version = "unstable-2022-09-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thep0y";
|
||||
repo = "fcitx5-themes";
|
||||
rev = "9d6e437289aa8de61d2c198b2e6ce4b5edea204f";
|
||||
hash = "sha256-iNOquWc6d1rgdWeGPBQ6na/bq+ZOV9cx4MCLf3SdBLg=";
|
||||
};
|
||||
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
"installPhase"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
rm -rf images README.md install.sh
|
||||
|
||||
mkdir -p $out/share/fcitx5/themes
|
||||
cp -r * $out/share/fcitx5/themes
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "fcitx5的简约风格皮肤——四季";
|
||||
homepage = "https://github.com/thep0y/fcitx5";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "fluent-fcitx5";
|
||||
version = "unstable-2024-03-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Reverier-Xu";
|
||||
repo = "Fluent-fcitx5";
|
||||
rev = "e4745fd598ddfd4b26f693cfb951cd028575a1f0";
|
||||
hash = "sha256-tVPp6kFgsWlSLcEUffOvXCWDEV0y7qcSqYKQkGO7lrM=";
|
||||
};
|
||||
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
"installPhase"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/fcitx5/themes
|
||||
cp -r Fluent* $out/share/fcitx5/themes
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Fluent-Design theme with blur effect and shadow. ";
|
||||
homepage = "https://github.com/Reverier-Xu/Fluent-fcitx5";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "translate-shell";
|
||||
version = "0.9.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "soimort";
|
||||
repo = pname;
|
||||
rev = "gh-pages";
|
||||
hash = "sha256-YQevXwslWzHen9n+Fn0a+oNx/EKg0Kd/Ge8ksYP0ekY=";
|
||||
};
|
||||
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
"installPhase"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
patchShebangs ./trans
|
||||
cp ./trans $out/bin/trans
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Command-line translator using Google Translate, Bing Translator, Yandex.Translate, etc.";
|
||||
homepage = "https://github.com/soimort/translate-shell";
|
||||
license = lib.licenses.unlicense;
|
||||
};
|
||||
}
|
||||
@@ -3,20 +3,16 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrU0tyT3hYaXpqeWlpSENr\nVk5FVUdtZXhCdTlhNExqYm90NkIyOUdLQ3hjClRTUTYxeTdwTDgxcElkMUlPOFJI\nRHFWYzh4cEdDd3AwcG1od2Z4Ty9JS3MKLS0tIG1nUEI5MG5uNnhUcTNLeE83ejZB\nRmp1L3dmY2FNNWRZbDVUN09zWTNXQjAKIP8ydrd2QpqhlNRcNeeyNd2v5nkLgv0v\nR9K6YKnc0VSh2gJBcJpW8cChB5kGpHw9+mhZm7XGoWxkM6JlyRrpdA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSAxam1X\nTlg4aEpIZ2hMYzFGbUNRVjVkaUlONldydDllWmZ3SUVBVDNvS0hJClNadnM4dUtP\nZ1NJMUZtTnRseGg4cFo5M0Y0cU0yRjkzQVR5SkczOVBrQ3MKLS0tIG5rU2xXRWV3\nV2hBZWV2L3IwVmJPdCtFMVlpa0tsLy82RVRpYjA0TTBvWFUKTFOeZFlejKGhp5ia\nCJXYhJkfRVZvacaCUyV40h28FqRrKyLIFcgjPpCG+77XzdHG4rZR7mw2+ybsBde7\n6+21lg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpRDhPQXY4aWFyZTNhVExx\nUVlJOXhCQ3FmME1SRC9Qd1FLUzBiSnZnUm13Ci9TODhRT3Y1ZHBSVHBOd0hNTGtG\nbmxIaSt4N1BNbEZFdlJpNDZWbGFwNDgKLS0tIE1LSW9uRDYxWUpLeUZZbm1RWGJE\nSjlyVGZ2NjhLdzRQZ2hnamhnNTZNcUkKSHIovzfFzM8HLIPxSOUwpsrfR5qobhgR\nYnfCPFT3Uadf1/ehQZst3O/KHi48YJLxA5uU9GIoM58rNYqIPevSMQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyB3TEtJ\ncjFqUThZSkVrT25nMnpFRExKdWZkaXBidlByR2g0WXVsQUtHdHhFCk5WL20vK04w\nV3NjS1p4TzV4MWFES3dtbmVIYWEraWQyazhqNGNUbmpiM0UKLS0tIGxZWW01QVFz\ncXZRTlBicFlXYS9yTW9zYVIvcXBraU81d2NNS2l6WFRSbVEK9xh6F4/ePk8WF4lF\nxmvZs3/jLsQYUtXkNnAUQU5EvD7cubQX8J5EhUTkjzCOzeEWXfK56tcgaJZQWVW1\ns8QrNA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUQzVFeCtHSmRUQ0ZXdlla\nbTBhUXFXeCtmaTh1SmRVQXlJZmpkUU01UERJCmpncU5oSzcxVDBZdlpzREhZWnhr\naWhMT1picXA3T0EzRlpnVmZrQjVobGMKLS0tIHZoYUttcHZoMkROYVE3YSt6QWNp\nak9LOGppQjBoZG5zalAvQzFLSkRiSWMKeUaKHUGR0eLo+MgomJW3sfIs5xHQ3Hcj\nDlkbty7WsI1aGZ/+pEq9dAg/bNfrLNMvKSOYFKvTJs33GEJfRC0j5Q==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArakRPZWFaZkZRZG5Pc2pl\nRVVFRnZjK0RleDRpSXBMK2tVYWVtRzRRdTI4CjFWUUxsWUJleENHc1lSUkUwVmdm\nZVpHOEloSDJDNW1TZUVSV0pTcnJhVm8KLS0tIDBUOFpMY2tsQUx5anpPWHlWK0U2\nV2JaSTMvbUJteFNOTm1mYzBmYWRXTWsK1lnXL0j5a6mBVfmsJLJ7JcSd8XIsXC+f\n7veQtqb7ADAFcxtreKMXfAKalyyJu4HcXc0JSvvurAUOBTARPV4oeA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyArQkg0\nMkdBbTdQNWdXRFRxK0NUS3Y5NXE3MElqdWN2bjdxdVZBN3dSMFJrClMyS2FxZVFQ\nOEFjR3B5RVZwUWltSjdoTFRpc0VJcTkyOVRXWmdGT3N0WnMKLS0tIExSZWtSSFox\nVnFvNy9GcEg4ZkM3ZmQ4T2VzVHFuMUw3RkFRVlQ2cEZmNGcKWuK7dtmMWQ77/Uyw\nesW/oM50irkONmxTKOggpo6gmJ9YvOPRHybvBwOifIIRCj+dvKFC/a0wAhgfpDcP\nMXEfPA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-06-08T04:38:03Z",
|
||||
|
||||
@@ -3,20 +3,16 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6Rkd2QndUdGxqV1BHOXh2\neXp5MTM0c3FkS0NnNzIvZ2NFUi93bEJHS3hBCkExVjZVUjFoZ3V3TGFVWHNZUmJw\nSzMvdVpuL05QYXNaQ0FQcElnZHhsYVkKLS0tIHNSVHdhaHZYZ0lodzhTODkwQnNP\nQ0RJOXJvSkh2akRRc0NhSUVmNUU0dDQKtVlaZs3yTJUWP802nfaX5ql5WKvn13Eu\n2Cn/jS/HSB5muU89rsJqe0mSZlOjrqyErtiF3hVDFOqODEkFb0EmsQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSBDN0Va\nSlREWkhkc2dWZTBzWnlRWE1lUzh1eVJ3dXN5TWR0Z2J4aWMrbHdRClJidG9wMHMy\nMldWbTJLN2tjVlRlQ0QyekRibDRRbWFsNlZnZDFUR2dMemsKLS0tIHFPU28ya0FB\nOUVxMnBBZUp6MG1HTFhWRklTbFB5aGlTTGhvOEFOOVJHVkkKSEqFAPJi3FgDAIl+\n8oB7Xnlj32CO6XjDOb07ZWrTCSTEXnu+ICvW10yJPlkKBw01xhEkMUBAPaYWIiUs\n/I4ziA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTbUtrV2oyMHVvR3RjRDVH\nV2tHajZZT1h6UzMvVVNIbFkyQnJ5Mm1raUFJCitjRllhbU53ZUdjMXJoNk5lc3du\nM3lDSFFXSTZmOVI5dS9sOS84RVY2dTQKLS0tIFVPL3g0NTBDTnI3WWlOMWptL1Vn\nSnZYUHpxZmp1ckYxYWxERFJQQXZFTjAKezXPfvGON1KJAnH4fJ5y1otrMLQubR08\nLiJFBpGIft6YKWQq/Nc9Fnkar8WasUneGGR6a6A+xx7eEibrEapJuQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBNenJm\nS3BNZ3lucllPUWM0ZnJGajhpU3EzRFhNVVNlWHhPb1FueU9ZTEVFCndGNFY2ekpK\nZGxaZlhCbExGbWxMVUJWWFljdTZaZTdhZHJtYWc3YlF5eXMKLS0tIGM2amVwd0xH\nVXF5WS84NjVoN2VEODBwZG5adjB3TzdkbkZUU3lBMHpQVEkKEZ8O2V2W6gN1/v1S\n2FaNPMEyIBPrB4B2cEFvFi0awKyZcirxIcE1nlqkEo2urXhV42QqIvJbeF88pSuT\njY8ZEg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2MDFId3R4dGJiVDFETlNj\nSmg5QzRabm1odytXVk83cWVTclRCN3k2MGt3CnBLYlMxMlF5a1lTZCs1cXdjT3Nz\neGwvQTJZdG5SMWVVbmFXbWRGWEZ2aUUKLS0tIEpvSTBJVkRCNjBpNEx1bzJqTWdB\nK0VaL3JpeTB4T3FSYTdmaEozQklFWmMKYHga2PwW6ZdHrSczVviS/Z0utfAF9Z+J\nzGctQj+Xo748ItLYnIOCFST4BltlPo8SD0fzlaEnR5bTJuWNDnA2TA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSaTc2SUxJd1doeDRZelBR\nM3FLVjlsZTJHUThRaVA4K0lMTXl0allIc0ZzClIxT3BpWllEcnM2Y3JKbXBTY2xK\nUXk5TDlzVXdlSFlaUEg3cG1XSUdoQ1EKLS0tIEo1Y3c2OHJMUnExMmF0cGxuVlpH\ncEFoSDkwOFR1a3ExOXBSNlF5b0ZiNzQKBfjzWTcX5mpuMOu0+RnuTdwLyTQo+cQa\n3s3eiUuwMITf9OZJsV9GX+GDfpkM3ioK6GIdiJB3qcTb+i+rnpGP8Q==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBSbDkv\nWE8raHdHNVJpZTJFam5ZOTJWL3Zzb0ZjYlV4R21MeFBUaEpqVWpZCnVtZmppc09R\nNFhHUUs5YkdITFoyS1UrVy9nOFgzVkRTRTJzalhxSnBJdUEKLS0tIGZYUjdpblRi\nUWZiZ0oyQjF0dVQwbmJjbzdhZUJPeEpTbnNUWTFHT1BVdmMK1Hmu1aWvvgTZo/ea\nIKeEWeXR3/j2Xi4w3JIy/rjrYGdA6oVfEWvib0qkGM9D4/UcOVkBc7+rrfAwTmL+\nc6988A==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-07-12T12:32:11Z",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3,20 +3,16 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvQmk1OU5hcXpMSGhHQWcx\nVlFHN3c4a2pIekpUL3FEUnlVUXBwdjJlT0RZClhteUdNMGdMQWl0WTRGK0p5czFv\nTTh3WkR4dlMwTmFzTTkvekgzREhZY2sKLS0tIDA1K2tSQWxhNlM4djByV1RaT1NC\nNXdNR0poRlpMOVJsQURMbDF2OXN2aEkKcgwIWqVHG6iIgfWvZBmbthlyusIECSHl\n1dPrE3nOx8X2vfl5vwP0w0uOTaAaHrI0Afnh6mnIz1d/qIbzGycYjA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSBlWDB3\nZU1jL29uVlZKL0hndnBGd0dvQXFXMmxyOXUrWXU4NDVIejM0QVRJCmNUTkowbGVn\nUWkyRnBheWlkeUw4a2UrdGlDVG9MV2ZDb0xIMHhJSVlMbEUKLS0tIDB1OXd3RU96\nU3Y3dHJsMEtGa29iczI2d09PbURHcHUzVHl6TmFTQ2xaV2MKgmMcJlyI7HMNfa5u\nsnbfX7qSAa/zhwLmtGxRWp0FIPCbVDbitVYffUXilJ9/WF2vqgo5RC9uZXN7gvT+\n3i+HgA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2dmVrN045MGpsZHNCZTV1\nVFZkZ1JVTXhzWE1VQ3cwYTBLQ2JsS2xrTjJnClZwWjVJY3NYVytnL2NoMDVHR2c4\nMVU1WlBYaEFDL20yZkxYR0J2MTVMbXcKLS0tIDlsOTBtREZWNGthTytGOUNxSnlS\nTkc1NDZrK0FlRGJkSzBibkZxQ0R3T0kK/em5c4vwXA25vtDduSsKPzKSXWUqvTqa\nZQ2pzhqwM3O5XGd3VySQRnzdAOcdLfvPMQEDTHwlNk5bj5i8fWShUA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyB1bzRY\nUU1Tb3RGS1Y0VnlqM3Fjd1BWWFc2Y3BwUUh1ek14T2NvVTc0UWxFCnhqMG5WUkgx\nMXFCYXR2M0VOQ3NYVDdWejdCRVoyMVBjTnJ6UG1aUDBUWjQKLS0tIER5aHptcWcx\nbnlMU09oem4zTTlvMThmb0VEYWpWZ05LUHhKR1VjMkdVSXMKG4xMqepfQYcWtQGW\nn0dF0xA9v91heF11UHWF/hnLfsoBfL4G+om8NIpsMqBvIu3SnDRjx6t8JJT9XYZ5\nPGfyaw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBZVZDMlo5ajRyakZwcC9W\nY2RWT3ZtdE9qUUZ1WE8reEZna3pvbnVHR1FFCnVqQlo4eXdZUWxibm9TcnFGemN6\nNXZjTHd4TTUxdFpPc2dITTMyYnhXS00KLS0tIHJ4SERnZy9FUjhVZkVveXFMTzdo\nTlg0MnNJbFBzdWM3WEJLSlFXSzdGdk0K/CpPqIi2zloQrdE/sE2vobrXcgOIl28l\nmokeEUrGLpcnJIHue0eq9YBWXJBFDxoRyPtLvP89LScu5K6gmq0h4Q==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3OEtWNFpDWVdTcnNnN2d6\nVEVSR240VHRQdUFIa2ZKWUcrTjMxM2UrRG5zCnk5aU5DdzdoNGN3d2NQKzRMS1Vv\nTnpWUDBCVW5xK3d3Z1BET1laTUVsZUUKLS0tIFRMb09RbTlDQ1l2RWpQamZPa2Jk\nRURYUFhpUmpUbkdQSDdOTStOa3ZCZzgK/bt8btAM5jbeXiDcMhjKOphMIBOh/lFQ\n8sNVTESTUWWu53FPkeMA+sDrsG5iM/5q+57OXN+X/SxIcyVzklkpJQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBSSEdH\nOGZDWDFhMzB2aVErTDU0Vk1WbnBSa0hmTGNMaXI3aTBuQWMvQkRJCnFpYkRFblZV\nRzF1eGdmTzFQcGhTWFZKdmhyNzRHdEFFSjh2Tnl1NXlpSkUKLS0tIHFLSVJiRkpw\nV2taUVdlS1h1V1Y4aE5JUWVmK1d5UjRleVY1Y0VvcmQrMnMKpD5nffC057mv+1wz\nXL8bOS3vBFoupi7IbKw56e0nGkRuMq+Hf2eCKZDRRlLbIi353xXFki7PKDk7ltu9\n2olKQQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-06-28T15:14:52Z",
|
||||
|
||||
@@ -3,20 +3,16 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFY3lTTjRKSmxZMFhXYzNO\nQ2NIQ2ZrUWNEUTMxL09aWW02RXE2NGhJbEdnCkJpaE8yaTVTWDJZQzJFUW5zN05j\nV2FVSmIvVllJa2M2OWpuMWpTTFRRcTgKLS0tIG5PYXcweHNsYUNPRVYzMTBHYmFp\nUUxFMnlXdDFUUjFQM1hRKytGMWEraWMKiUfQEFQYezVH+sd/bJbCMcOMt79+XjK+\nTOZazSVg7ZSu7VsXv0h/uMWNpQZc6y7Nq/hEalMcpwHpdPCjp5HRNA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSBXV0RH\nbkZTSWVZdTV4dzVCRUU3Kyt3c0l3NFFocVhaMzQvSXlUSGc4Z3cwCkVMdk5uMlUv\nQklQSHZzbzJyWlRHWTlXcE9qL0Z4MW1DL2p6QWRqQVlneVkKLS0tIFFNNVJFZ0py\nYTR6SXpHSEpvSmxqM0x0SG5EajR6dnB3Q0czckpjMWZmQUUKdVbsotKQxQqTXQE+\nvxIprPHlBMKFrD0r8uVIu0Trojb4aiSQxpnRtx22FeWe+Xg5E62uKpsLgQugIsID\nsi+EqQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhek1aeW9nRXpTOTBHV0Fq\nRmNvZHFnaHJhUXdRMWo3QTlYMEljQitobXg0CmxTTkxOenFhZHlsMFpPMVgzSk1G\nQi96Y245a3VWL2dZcUk3MndmRTlhVTAKLS0tIDZIMkJwYVNZTDdua1BjRm15V2Ft\nbEppeFBRb1hrTVFiU0VGT01vWDF2QlUKxVgS3L/kU0+N1KqzJxHokzj1zAuvlzlA\nv44bTVEA1p5Z1LGB8yswQS7zQRh7S0spgJukZfcqlzsMDpf9RY5TVA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyA5SGVI\nZzl1UG8yNkhRdWZQcFRNNUJFTnBsdldNU05HYnhIVGhzZHVuN0dJCkJiQzc2UVZV\nMU12am5mMkpWY2Z5S2JKYUJRY0FRUXhKK1ZDQTFqZlpLcjQKLS0tIGJBL2NVY3lX\nSnEvNFJubDFkSG5tVC96OVNjZlpLNUpPeXdCakFzTjlBT28Kkulsz5fDYbyuJNv5\nOG/zikwE66A/GXk6iW1cy3WRUS1kWSTnEEd5Ke4UWW14k6AtBC+rhI3hYwKY4c8s\n1OC8og==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0U3hMOWFWWHlXWFBnV3do\na3kzNmtnT0VMOUprT21scmtDQVBxRVhZQmo4CkhQdDBibE10aUJtTXlBbkY3bU5Y\nY1VVVElVdkp4c1QzTnhPVG9hM0orem8KLS0tIFJJRllZZjd3bHFyV3FEREZ3djc5\nbE83bHk3anhUcDNKd0NmeXppcU9mc3cKrMmYNq/R0gr8ZKm0+xP9nFay+FW+2LhU\ndrbXL5zN4qVFT51uxDQLnaoTHs86gZbYrK4bciLtQgQJTZ0ppiDWAw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvVzBRaDM5ZmlrS2hBMjd0\nQi8rZE9DOEE2UllhYlh0SzluYjZXQXFMUVJBCktoWWl2UGwvbWxES0ltUnhQWXFp\nWkFkOEpOTWg3b1U2QjJlY2RMRGY5TUUKLS0tIC9rOUt6WkVnaHhsUlJIQ1NKOGJ4\nQ2YraElCai9XZkNONjhXNkpxUHhyRlkKi/poARA4FzYojwF+tcgZRiS1z0vCbG5T\nmofxZ1JYWLbqIc+aP2r3sD/gle4v2BpMJ63KuC9R0rtWCdClQYAVtA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBFZ1J2\nNk9yWUNaemVBOFRiVmdmWGdRWVN0UG5Hc1lZRTBiaHdnS0E2UlN3CitPUmdjdVdu\nS1FXbjVCRkxZUk5KdW0xRzNheWJ1TWVYcUJMK3k0TlRFSWsKLS0tIFJSTlN4a29x\nWG8zUlcvYmlZQkQwT3hlWFlOVUIwSkt3SE5RTzhQWVIxUkUKVSMJtNCEZ1KpcUgQ\nkuTFjaBHvizq980kkbNbD4FgeCAPZ3CwXA8/nKhN03iPeFqwX5AsO0n3+ge/qMnO\nkoRc/Q==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-05-28T10:44:26Z",
|
||||
|
||||
@@ -3,20 +3,16 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByWCtldEc5SkxxMUtUZTI3\nTExjbFRUSngwdmszMVFyYXlLTkNDSHU4SUFRClp2Sk9MWktQdnRNR1RMaUpNOHZM\ncm93Y0R0OXB4L0xvdGlLOEEyRlo4WEEKLS0tIHhQOFF2cExJTC8wYWY1RU5BWkd2\nblpFRFdpenkrSnh4bXE4RG8xZmt1d1EKgNNSj6Fpx1bnlPOXXt+l2lgH4kS8PrIe\nZhU0Y6yM60G6qpV4mrOWy+JEOAtSrZU5K48DOgZl+Us0ZuRO1jXTKg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSBVM2lu\nL3EwVFg3WjdSN0REaGFndmtNN1BmNjloWU10NFlEaGZtaDdOK3pFCm5aRGdpZU9o\nR1FXQ20yVXkzakh2Ty9qVlpqMllJZWRjbE1PR0FGMkpKSHMKLS0tIDlvdjNPNmdP\nb2ZYYnR2UXBoTGFmQkd5S2J1U3pQRjlUUFFrd1JnUFJRdEEKhwlcJwXav7f4bVmb\nMumds5QXYwiT4MtGlVsA1DRRW1y9DTgUpgHw972Fqwml8kzfrgJcaAX4VbDPkPRE\nsWgeOg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWSXZxSk5rZTZCMnkyNVZj\nK0Q5MURqNzJwRnIrZmgyeHVrOWFIcy91VERFCkhvT1Nac211OC9BWVlOUmd6amMy\neW90czl1alZ4R25VcGlIcmY0R0VwTWsKLS0tIGJEcXB0Sk9meURpcm00eTkyei9h\nNnpWTG5vYk5iVHdITVlvQkpnUGVLVVEK/UDh251NXPc9hnnmTVFRnR2yUufRRVKR\nMNJBH2Ku0IcpJFiYQ+xNonIQKmZCg5zP3Ncqj/teKOkA9lx7CL4Ncg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBYbGpr\ndTJUSVV3dzdwdUZwdmFsQmhIL3J2MXZEWlJiZ2JBZlJZSVRtejBrCnZEUHFYdndK\nMG1mc2EycWdNTlVaK3BnMm9jZnViOGNNUWVtc0Ryc1R0c0kKLS0tIGlIalM0NFJJ\nZmdMVWp6Q0JRb2RqeDhLTktWaWgyQ0poMEcxMmlPak9sb2cKKH7wFJS0uFyxtfvY\nWzYwiJNv0oc6ArCPCFL7s0ygKdj8352baOPi4HMtT2kLgXiaW/g0JM++ODkpJxGv\nu32UCA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzN2ppQUltaFFpVFNIdWNo\ndFNrYnl0enNKdnRBQ2dyWVRzdjlMUThnRmdjClZTazNOVlNXeVRwNG9wenZJcXBM\ndnBqUWZTTlRBeHl3ZFE2c3lnUERwZUkKLS0tIFA0cVV6d285L3cyNkcyeFZUWDRm\nVHdveTRxRys2a1dDcU0zaWdTeHVlb2sK5c/jnmcwSn0BhATWbN/mVoRt59hQ3v7F\nAwdVdqGzFqiMVDIooMNTSFhrIRiq2W2YtmzkMW358ur69CD/85e0YQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2aE5yVkdEVUtENCtxZTZB\nOG1lMWdoWmJ5MWx1SUtuSk1ZVDhPeGhtL3c4CmNTWnl6Q0FWaHlVanhxRVdlTHFj\nTmRWKy82Y3RVVVZ4L1Znd0ZkbWs5dTQKLS0tIHFSMzJtY1R2WHorNHVnRzRjd3U4\nZytia05EbFBDQ1V5RnBLOHc5TFpYSjAKbtlr4VIM6MCohc11RIJ21lOMvPnJfNSL\n1j0niVAToYLPH5U7ZmZb6QO0xsB3QQxe0O8+SjkW0RQ8rXu5CDd36g==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyB5RjZU\nR0RVcTg3L3RQSmZnQnJhNm5vaW5URkNySUNORVJTRzVyWVVHdHdvCkd6Y2tvV1Av\nSjF6NkVNNjdKWnZyNi96bU9sY2VkalJNdWpxQUcyT2R3MFkKLS0tIEpkeFpWUE9t\nY0ROMS84QmM2U3M5aUN3ZkdQZi9JYnZCRzl4eDg4NzlrUW8KcuCDvvHFl/oyjVAo\nDlH1OOwPELWVWqckshUkX1MCMW+Qcv5R52jICVlyBVsyb+eiX4Bxgo4KM352KhWB\n5hPnIg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-05-28T10:44:37Z",
|
||||
|
||||
@@ -3,20 +3,16 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByWCtldEc5SkxxMUtUZTI3\nTExjbFRUSngwdmszMVFyYXlLTkNDSHU4SUFRClp2Sk9MWktQdnRNR1RMaUpNOHZM\ncm93Y0R0OXB4L0xvdGlLOEEyRlo4WEEKLS0tIHhQOFF2cExJTC8wYWY1RU5BWkd2\nblpFRFdpenkrSnh4bXE4RG8xZmt1d1EKgNNSj6Fpx1bnlPOXXt+l2lgH4kS8PrIe\nZhU0Y6yM60G6qpV4mrOWy+JEOAtSrZU5K48DOgZl+Us0ZuRO1jXTKg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSBCUjFJ\nYXB0ZkRudjZRcXBRY3RZNUNFVk1aUHI1eDF3MENvNnNqNFF1akI0CnZBN1pqLzBD\nZnIyVGs1V0hxREJtTEllSURLQ3JJNVBNcDhTQTBYOGxjQWcKLS0tIExLL2pPeVVR\nVW9UdmFMdUlNMGxRS1Ura251QzEvMTQ0c01sU0JPVmxtN1UKQxAjmEgeSgocSA9Q\nbngYGWx6sSomaBaqBRWhxCeyvnP+M5sZkBI6bEDVvfqly6yfPb43xKxh4LrOv0te\nfJzWcg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWSXZxSk5rZTZCMnkyNVZj\nK0Q5MURqNzJwRnIrZmgyeHVrOWFIcy91VERFCkhvT1Nac211OC9BWVlOUmd6amMy\neW90czl1alZ4R25VcGlIcmY0R0VwTWsKLS0tIGJEcXB0Sk9meURpcm00eTkyei9h\nNnpWTG5vYk5iVHdITVlvQkpnUGVLVVEK/UDh251NXPc9hnnmTVFRnR2yUufRRVKR\nMNJBH2Ku0IcpJFiYQ+xNonIQKmZCg5zP3Ncqj/teKOkA9lx7CL4Ncg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBmZUxB\na2h2WGVySHQ5RFFTQmloT2pYMTZVcU8vc25wbUZmUWRvK25TMnpvClE4QVZEdnpB\nVDEzSnIxN0ZpTkxyclZRL1NRNHNJbVhvRVdCSUNubzBNMG8KLS0tIEZWbk5sc3U1\nOERuZVBPZ1g2U2VKSVF2dFJ4OUEyeW91V3VFMHdPaVhWZUEKLbQAvuT6WeoJl49G\ntmPO4rAiGFc2/Psoq1ShBRk/RbyBB9248ttaiyLgVNFnE0J825ade5B2wcf6+Pfq\nZV2UEw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzN2ppQUltaFFpVFNIdWNo\ndFNrYnl0enNKdnRBQ2dyWVRzdjlMUThnRmdjClZTazNOVlNXeVRwNG9wenZJcXBM\ndnBqUWZTTlRBeHl3ZFE2c3lnUERwZUkKLS0tIFA0cVV6d285L3cyNkcyeFZUWDRm\nVHdveTRxRys2a1dDcU0zaWdTeHVlb2sK5c/jnmcwSn0BhATWbN/mVoRt59hQ3v7F\nAwdVdqGzFqiMVDIooMNTSFhrIRiq2W2YtmzkMW358ur69CD/85e0YQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2aE5yVkdEVUtENCtxZTZB\nOG1lMWdoWmJ5MWx1SUtuSk1ZVDhPeGhtL3c4CmNTWnl6Q0FWaHlVanhxRVdlTHFj\nTmRWKy82Y3RVVVZ4L1Znd0ZkbWs5dTQKLS0tIHFSMzJtY1R2WHorNHVnRzRjd3U4\nZytia05EbFBDQ1V5RnBLOHc5TFpYSjAKbtlr4VIM6MCohc11RIJ21lOMvPnJfNSL\n1j0niVAToYLPH5U7ZmZb6QO0xsB3QQxe0O8+SjkW0RQ8rXu5CDd36g==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyA4RjNs\nWlYvc0tEN2hOUTA5SEV6MUhTeFViRTBqVWJLcGVDZ0JROCtONlQ0CnU0Z2FWQUlw\nakt0dk1nbVFHaVlyMjBqS3hCSDdHZEYwT0pXaXhOclFvSjgKLS0tIG9ZZUQ2dTI5\nWFVJanhac0QxVHM2b04wNE1jcHdHa3JJYzBlTE1iS1ZPTHcKZPvA9MwYT4JfG3/F\nqSI09TWeEv7TAWGeZr6OS++egtpdVoM3hF8s1B1TZb3bf/BMqo49NEkvD56pOKvo\no0jjHw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-05-28T10:44:37Z",
|
||||
|
||||
@@ -3,14 +3,12 @@ FLATNOTES_PASSWORD=ENC[AES256_GCM,data:jC/lVZPDGvcYzXhdnvjs,iv:0O6nNNlWjD5OWIa2o
|
||||
FLATNOTES_SECRET_KEY=ENC[AES256_GCM,data:I8zrSTMRnPNWn7u+KZiQW2YdpAkKOBxRKv7ov7dLLNA=,iv:I4YP4KqyMR6jfofEdYxQ+I9PQjTNQwCgnTUfHnDW55A=,tag:P7QcugaQWMCfb5+G5JdMXw==,type:str]
|
||||
PUID=ENC[AES256_GCM,data:ZA==,iv:xfnOzfWvf7gozw9YMTAw2uarfsGHRpx3rsEN5ja1k7w=,tag:yuXkWMkXAUpF7h+AaYW14g==,type:str]
|
||||
PGID=ENC[AES256_GCM,data:RA==,iv:m8CO/d9Gh0cjc4QYX6CsUx87Vu5iqtU0uVOsA3AeWgs=,tag:Ri0arOjuwRC83fz4EynVtg==,type:str]
|
||||
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiWm9aaVVCa3V2Z1RYTVpi\nd055ZUk0ZXd3eFl5dEM3R0N1THVmRENrNFNRCkVPNTVIRWRFVVhoa1BSRWVvN1RP\nMmZldUsrSVhQa1RWd0YrZmRvR2RPOUUKLS0tIGpqK2doVDdwTDV6MXh4TUpQbnU5\nc1ZORHAvR0tCZ0RLVkpqNm96OW5nR3MKkw9A7/3o3XVxLr6xVXAsS29PgWw1RiuJ\nRM7riGPrQIPuiNqwOIRR5PnWXKsWLeoE7ybQ/NJuxEFBbW+KP4LzPA==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_0__map_recipient=age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns
|
||||
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDVWhuUTFJS2R0MjNKbUNY\nZDllbXowY2NLWnBkbC9qY25jNVR5RHFKUmxNCjl2bnlOVTc3Q0hqT2x0MDFWcG4r\nV3o1MlJqdkpwNnp5d2pqN2loNTNkZzQKLS0tIGQ5TjBVakEwQkxKcytqeEVQYVVM\nRzBUN0ZoeG5ydUk0UHAvOTZxb3JMZkEKejQzUpkFJdx0xUVpVOZ7CH5fqGY2SZ+i\nBoUjB4UxwENQ3jVVfJUzmY81O4HYr9NW2lUj4gwIHFMcG6DQ6Q7AaQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_1__map_recipient=age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6
|
||||
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArVFRwWXowT0RWbERmc0FJ\ndUxUMXA1NWk2bEcvWnVNem5zTmVuMCtmMTEwClZCZGZzd3J2cWxscS96U0ppOUtO\nQ2FwY05PeDM4cE5SNzFwZC84WFdoeTQKLS0tIDJkTmtxTXJSbktJcjRyNWNMcHNB\nRWUzeUIxbVh2anJDUDFKTXl1VnU2K0UKHN3kcm4XGU2gDSuMt2UftaaBKbPHq2rI\n6LCPtG4caf+kTieQMgZ6x3ofmKpKOoW4xFGf77aGaMFA7i3cdbS3IQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_2__map_recipient=age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq
|
||||
sops_age__list_3__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUblBoSUkwS21VbkNXMm1u\nZ1BDZi9NUEZQWjFacW1FV1NDaDVYYzBxaHdrCkVqTUJLZ0lZcHdkMUxSL2k1SVox\nWFE1SXJGejlYKzRkaHhLREIrR3dPNFUKLS0tIGwvU25POS9yMTFZTVBoZDhtRXh4\nWGlzZ2RKWWFFckt0OGtYVVc5eTBSazgKRZVGa+o9qY8bOKuQAH7dqmp4/qR/le7W\ns06L5qs1429IHinhmoEjauQmnSl5nS4YDq0K9pEr+JW9g/aiNWZhNQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_3__map_recipient=age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8
|
||||
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSAyc05U\nSVFwU1hUdzZveUsxaUJKbFAvdlN3UzIvdStXcDkvUlBEaXdXNWlFCmZ4eWlKVklQ\nNHlUYlpFRUJmNmllbDNyckFQQ1crRjF2VUFNZFJqdU9wbDQKLS0tIERVNWpyTTUr\ncUhzeU9FcXZURUNnVXB2SDI0aFljQkNGcWtRb2poaTJuVmsKEHX7jAOPXij+us4Z\nAG7t2j0X4JMi1xDOEaYvfL7GZJ3FQKzDpiyx7ifDp9HUVOrnBidKGC08CZgkCvzj\nl2+42Q==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
|
||||
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBCM24z\nd1RGdnJNQ05mVHRVNDkwZnZMaVBIa3JSR2I3bzJ0NE5UMkNsRWhzClZIMXRwbHQ3\neTdIRUlYSEtaenVMa2dEMkZXblhoSE9TcWo3bGk2OXJrZG8KLS0tIGgwMjg4TnFh\nc1Bkd2FYdStZWktBd21GVHNxZ0FsdVU2aHVnZlFQelgzRUkKIzTyudaXGk1sESbn\noLXLtgjZJFBZRV5s/+bBMgZ81zk5s1O4/vm/HDgxxM4y1VVmss/toxpQUGuAR3gd\ntlvEEQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
|
||||
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBLV25m\nakVoSjQ3VFBadTk1OUJVcDg0b1huajZDVmtIK2pUb1MxS0g1RjBJCllpdjBpK3lx\nV2ZVa0dPNmFIN3dCeDRvZHpPRW1Wa2dJVlo0dkhLVllwSHMKLS0tIHRHYytINXF1\ncGZLWjdPMHZJM0s3TlRxd3g4VnhkckRUTWRjN0d5OWdUbzgKXaSeWmzdFcW6AEjZ\nIkRk/alyOFnI+18jibEBJaZNo87tAzpVHQxN7mA1mpoMNbqK/Co1Ut3/Q1J/McB7\nqeg//Q==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
|
||||
sops_lastmodified=2025-03-02T03:46:13Z
|
||||
sops_mac=ENC[AES256_GCM,data:j/JqiPLHw6a21iJV/qNhAr+4kVkCnXG0uYGEJ4m5K5UerN/nXLzVafa7ciaMzBC1k6KBZwSyuKcQxJt3Q5+R733AD97VgrClSAU8w1pQhlWAUpzD959PwW5dTX8N9G+gih0xcJ5RsMALfWppeTImAAyAoKo1mtxE2MtfQZw1DU4=,iv:jYM3YfA2cbDjKVLHhQ8Rzv90Rg2R4iiY6zFL1N8knv0=,tag:8wRhD2XDZXI9v2j5XHKtqQ==,type:str]
|
||||
sops_unencrypted_suffix=_unencrypted
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
FRP_AUTH_TOKEN=ENC[AES256_GCM,data:CXFJwOOHEbtn1PI0TQc=,iv:yItYliwZGxZs8YAWksV7BqJP3TUBadxXpf99J5nXR3A=,tag:9earTQfuoLO132UZnTjlWQ==,type:str]
|
||||
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5cFA1K1RGbkxpYmgwMGJo\naGdYYzVZNVljcEJWbUNBNUZZbWoxTHBDcEVFCm1BNTgyU21IeXE1bjQ2ZlU5VTJp\nMFpXUXIrQ1JuQ3hydXBzREhkMWRacFkKLS0tIHJYMG9HS0xydW5IYW5Bd0pNd3F2\nK3U3WWFSV2U4dEpadmFaRW9RdGJ5amMKt+lVGKjc8Mh3EfkDlFrHB6hMMlwNc9g7\nc+s5I7ivWqkKMBW0yzdLZbv4xBc8fbgjnCAp01PMTLgh+kFGWmktlQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_0__map_recipient=age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns
|
||||
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkam5kT2tBQzg5RjA5ZEFn\nZnhqaXo1NTg3emtpVENkUGpNVGhPV0N4MFVZClFMZFI5OFFhaCtRQlUvU201cjcy\nUnoyZzQzQ0w1eU90cm5uelBxOVF3LzgKLS0tIHJ3b2lmOXdGVGZBYnk2a29nRjFv\nKzMxQVlQK3c5OFJlQ21KYytmZS9tZXMKaqcjYNcNV9EY8zBxpqSYQzZ8jlx4usoq\nHKfa1/fVNSGt3Zr5tbTuXExGdfQvsyVI+2TpVMMALBj8/vonjsnWpg==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_1__map_recipient=age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6
|
||||
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmQnYwOW5USUNkRGpwYlZj\nVHVGY2VabDMyRUlQb2ZrbmNRL3NJbWwrb2djCk0ycWtlZEtDcDVpc3poZTJ3TnhK\nN1hnU01SWGZFUlJsSDZaemR4SGs3c2sKLS0tIDhOV2RDc0JRbkIrM2NabE9oQXRn\nR3VUdDYrVG52QVd3bC9EY21qQTdhR00KPAv1yi75FhrOtdZEEQQExSkZ8wxkFxjA\n1ze4YARfnkrkILs1C/wtULc9lHr4pzTF4+B4aql42GKcuv3n798pzA==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_2__map_recipient=age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq
|
||||
sops_age__list_3__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIalYrWEZLc2tZUUw1YUYx\ncHJyRFY0eUZZU28yU21wN0dFbUFTUGRpUlhVClJTSVVONGJQY3B6eEkzcG5yUndN\naURMNVhNc3B4V2JkU0F0R0hqbWgwY0EKLS0tIHJ1ZVVrRjRjZEFjSmJHS2M0dFBZ\nWFhuSGJpaFhDTXkwM3JwanlPM1RKZ00KL9ts0rd+CUg1jeh9K3nMVUaoIduwB/8X\nyyVEUXH+Z6AHN9RB+eCbxhPBwdU0wI4FJdATkpDXFSTW0eBMkrnlcw==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_3__map_recipient=age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8
|
||||
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSA3MGVN\nU2NSR2F1R3g0dldCbGtaZGRtRCt3NGg2YnZQTGVDN3RtaEhUMkVzCnJrdzlRSTB4\nVG14KzNXUHlib1RGTy9DVnJwdDRaaTZ5ZGVoWWUvNm9KSncKLS0tIGVpMlQzQ24v\nRVhVVTVSTWNlUVN3L0x0dFJMN3JxODZBTHdIUFJxZEViWjQKv+64wRf+a0Ci4XXp\nesM8zaQXeFPIstdsOJCj8yD5ARZi4kUnhRjRK1/xmjyLmh9h8rZ3QQyUF4uh+Jhi\nQJ0Qkw==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_0__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
|
||||
sops_age__list_1__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBKMXhO\ndk85UUUrYkgyRHp5OUFidGNXU3NQRk5VYlAwMVFkcUwvUndsendzCmpudHEwbTMw\nT3UxaS96US9yT1FsZGZjc3V3dWFmak1tdWZCdlREV2I5N0UKLS0tIGpXV20remtx\najFHR1kydHJNYWlveG9zUDhUUkRWOXRuQklBdCswZ3hBWkEKiGzMkWCaGb+v01ym\nwGIRjyp8StrSOJRYit8xnoM42ozJLBf/HDuWdSfu/VQuKGNVTRDLY7T5PNrzCVIj\n9sFh6Q==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_1__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
|
||||
sops_age__list_2__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyAwZFFW\ncERDSnRiL0dMbmVQMGhDMWNSbXpUVVhXeXJreEVzN2dmNlJpWG5nCmV2OGVUMmZ3\nQjRqdGlnc3FtWVpxbHhnMk9xeW9BVUdoTlFud3RKRHNKcVUKLS0tIHZpbTltYnNk\nZEVqUWlhdmloRGVQU05YMkF5aUdmNExPVysxZm55czdZVEEKWo3hFbF1007tSgYq\nzVK1ycmeQglKDNPS1yVedBoF/gj1L69EmjhiOLMMwAetMINufQQpcFRR88VQlqQp\nMPaXMQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
|
||||
sops_lastmodified=2025-04-13T06:57:07Z
|
||||
sops_mac=ENC[AES256_GCM,data:WJ9FCO78LRFbU7o9uEZ70s/OJIHN5/UQVKrgt/Zve6x9yVChaRtHmvk7kF/SoRsheLIbeYoY8RI0rUn3Sx7Y7o/ib/u9dMAec0xGt0K6+yde0DUO/uH1KpjXd6WHRPjoMERld6xA1fWVRu7G+gXrEZA1dN5Jbs8ZWVYGF6IBw2A=,iv:r4eYeCDJOw40hK7cyIEbEW+Pq+VFgUOJr1ydkSyjaEg=,tag:ucFH1pNqAHg7eWm1tYYi/g==,type:str]
|
||||
sops_unencrypted_suffix=_unencrypted
|
||||
|
||||
23
secrets/go-musicfox.ini.txt
Normal file
23
secrets/go-musicfox.ini.txt
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user