Compare commits
87 Commits
quickshell
...
d61cd261e0
| Author | SHA1 | Date | |
|---|---|---|---|
|
d61cd261e0
|
|||
|
3f206e08c2
|
|||
|
2677ed4594
|
|||
|
905274fe73
|
|||
|
23b30d3a84
|
|||
|
5bead3c20f
|
|||
|
dd2f880a3b
|
|||
|
1869ae86f1
|
|||
|
b7d6cd3dbf
|
|||
|
900b66796b
|
|||
|
44a479d6b4
|
|||
|
b5dca35878
|
|||
|
a1fa09008b
|
|||
|
375c9b59b9
|
|||
|
90f0b4aa63
|
|||
|
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:
|
keys:
|
||||||
- &imxyy-nix age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns
|
- &imxyy-nix ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO
|
||||||
- &imxyy-nix-server age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6
|
- &imxyy-nix-server ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire
|
||||||
- &imxyy-nix-x16 age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq
|
- &imxyy-nix-x16 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
|
||||||
- &imxyy-cloudwin age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: secrets/.*\.(yaml|toml|json|env|dae|txt|conf)$
|
- path_regex: secrets/.*\..*
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *imxyy-nix
|
- *imxyy-nix
|
||||||
- *imxyy-nix-server
|
- *imxyy-nix-server
|
||||||
- *imxyy-nix-x16
|
- *imxyy-nix-x16
|
||||||
- *imxyy-cloudwin
|
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{ config, hostname, ... }:
|
{
|
||||||
|
config,
|
||||||
|
hostname,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
# I prefer this to the default issue text
|
# I prefer this to the default issue text
|
||||||
# ported from ArchLinux IIRC
|
# ported from ArchLinux IIRC
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
host = "127.0.0.1";
|
host = "127.0.0.1";
|
||||||
port = 8089;
|
port = 8089;
|
||||||
package = pkgs.stable.open-webui;
|
package = pkgs.open-webui;
|
||||||
};
|
};
|
||||||
services.caddy.virtualHosts."ai.imxyy.top" = {
|
services.caddy.virtualHosts."ai.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
sops.secrets.et-imxyy-nix-server-nixremote = {
|
sops.secrets.et-imxyy-nix-server-nixremote = {
|
||||||
sopsFile = sopsRoot + /et-imxyy-nix-server-nixremote.toml;
|
sopsFile = secrets.et-imxyy-nix-server-nixremote;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.easytier ];
|
environment.systemPackages = [ pkgs.easytier ];
|
||||||
@@ -15,10 +14,8 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server-nixremote.path}";
|
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server-nixremote.path}";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = lib.mkOverride 500 "always";
|
Restart = "always";
|
||||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
RestartSec = 30;
|
||||||
RestartSec = lib.mkOverride 500 "100ms";
|
|
||||||
RestartSteps = lib.mkOverride 500 9;
|
|
||||||
User = "root";
|
User = "root";
|
||||||
};
|
};
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
@@ -37,6 +34,7 @@
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
|
||||||
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIENauvvhVMLsUwH9cPYsvnOg7VCL3a4yEiKm8I524TE efl@efl-nix"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIENauvvhVMLsUwH9cPYsvnOg7VCL3a4yEiKm8I524TE efl@efl-nix"
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -7,9 +7,7 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
services.postgresql.ensureDatabases = [ "coder" ];
|
services.postgresql.ensureDatabases = [ "coder" ];
|
||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers.containers.coder = {
|
||||||
containers = {
|
|
||||||
coder = {
|
|
||||||
image = "ghcr.io/coder/coder:latest";
|
image = "ghcr.io/coder/coder:latest";
|
||||||
environment = {
|
environment = {
|
||||||
CODER_ACCESS_URL = "https://coder.imxyy.top";
|
CODER_ACCESS_URL = "https://coder.imxyy.top";
|
||||||
@@ -26,8 +24,6 @@
|
|||||||
];
|
];
|
||||||
ports = [ "8086:8086" ];
|
ports = [ "8086:8086" ];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
|
||||||
services.caddy.virtualHosts."coder.imxyy.top" = {
|
services.caddy.virtualHosts."coder.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
reverse_proxy :8086 {
|
reverse_proxy :8086 {
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
./vault.nix
|
./vault.nix
|
||||||
./homepage.nix
|
./homepage.nix
|
||||||
./code.nix
|
./code.nix
|
||||||
./yesplaymusic.nix
|
|
||||||
./ai.nix
|
./ai.nix
|
||||||
./grafana.nix
|
./grafana.nix
|
||||||
./note.nix
|
./note.nix
|
||||||
@@ -23,5 +22,7 @@
|
|||||||
./minio.nix
|
./minio.nix
|
||||||
./build.nix
|
./build.nix
|
||||||
./immich.nix
|
./immich.nix
|
||||||
|
|
||||||
|
./efl.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,5 +5,10 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
dockerCompat = true;
|
dockerCompat = true;
|
||||||
dockerSocket.enable = true;
|
dockerSocket.enable = true;
|
||||||
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
# avoid collision with dnsmasq
|
||||||
|
virtualisation.containers = {
|
||||||
|
containersConf.settings.network.dns_bind_port = 5353;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
52
config/hosts/imxyy-nix-server/efl.nix
Normal file
52
config/hosts/imxyy-nix-server/efl.nix
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{ config, secrets, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets.efl-tuwunel-env = {
|
||||||
|
sopsFile = secrets.efl-tuwunel;
|
||||||
|
format = "dotenv";
|
||||||
|
};
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
tuwunel = {
|
||||||
|
image = "jevolk/tuwunel:latest";
|
||||||
|
volumes = [
|
||||||
|
"tuwunel_db:/var/lib/tuwunel"
|
||||||
|
];
|
||||||
|
ports = [ "6167:6167" ];
|
||||||
|
networks = [ "podman" ];
|
||||||
|
environment = {
|
||||||
|
TUWUNEL_SERVER_NAME = "mtx.eflx.top";
|
||||||
|
TUWUNEL_PORT = "6167";
|
||||||
|
TUWUNEL_ADDRESS = "0.0.0.0";
|
||||||
|
};
|
||||||
|
environmentFiles = [
|
||||||
|
config.sops.secrets.efl-tuwunel-env.path
|
||||||
|
];
|
||||||
|
};
|
||||||
|
mautrix-telegram = {
|
||||||
|
image = "dock.mau.dev/mautrix/telegram:latest";
|
||||||
|
ports = [ "8099:8099" ];
|
||||||
|
networks = [ "podman" ];
|
||||||
|
extraOptions = [ "--ip=10.88.0.254" ];
|
||||||
|
volumes = [ "/var/lib/efl-mautrix-telegram:/data" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
send = {
|
||||||
|
image = "lanol/filecodebox:latest";
|
||||||
|
ports = [ "12345:12345" ];
|
||||||
|
volumes = [ "/var/lib/send:/app/data:rw" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.caddy.virtualHosts."mtx.eflx.top" = {
|
||||||
|
extraConfig = ''
|
||||||
|
reverse_proxy :6167 {
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
services.caddy.virtualHosts."send.eflx.top" = {
|
||||||
|
extraConfig = ''
|
||||||
|
reverse_proxy :12345 {
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,15 +1,11 @@
|
|||||||
{
|
{
|
||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers.containers.sun-panel = {
|
||||||
containers = {
|
|
||||||
sun-panel = {
|
|
||||||
image = "hslr/sun-panel:latest";
|
image = "hslr/sun-panel:latest";
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/lib/sun-panel:/app/conf"
|
"/var/lib/sun-panel:/app/conf"
|
||||||
];
|
];
|
||||||
ports = [ "8085:3002" ];
|
ports = [ "8085:3002" ];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
|
||||||
services.caddy.virtualHosts."home.imxyy.top" = {
|
services.caddy.virtualHosts."home.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
reverse_proxy :8085
|
reverse_proxy :8085
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
|
users.users.immich = {
|
||||||
|
home = "/mnt/nas/immich";
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
services.immich = {
|
services.immich = {
|
||||||
enable = true;
|
enable = true;
|
||||||
host = "127.0.0.1";
|
host = "127.0.0.1";
|
||||||
|
|||||||
@@ -1,46 +1,102 @@
|
|||||||
{
|
{
|
||||||
services.matrix-synapse = {
|
config,
|
||||||
enable = true;
|
secrets,
|
||||||
settings = {
|
...
|
||||||
server_name = "matrix.imxyy.top";
|
}:
|
||||||
public_baseurl = "https://matrix.imxyy.top";
|
{
|
||||||
listeners = [
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
{
|
"olm-3.2.16"
|
||||||
port = 8094;
|
|
||||||
bind_addresses = [ "127.0.0.1" ];
|
|
||||||
type = "http";
|
|
||||||
tls = false;
|
|
||||||
x_forwarded = true;
|
|
||||||
resources = [
|
|
||||||
{
|
|
||||||
names = [
|
|
||||||
"client"
|
|
||||||
"federation"
|
|
||||||
];
|
];
|
||||||
compress = true;
|
sops.secrets.tuwunel-reg-token = {
|
||||||
}
|
sopsFile = secrets.tuwunel-reg-token;
|
||||||
];
|
format = "binary";
|
||||||
}
|
owner = config.services.matrix-tuwunel.user;
|
||||||
];
|
group = config.services.matrix-tuwunel.group;
|
||||||
turn_uris = [ "turns:vkvm.imxyy.top:5349" ];
|
|
||||||
turn_shared_secret = "ac779a48c03bb451839569d295a29aa6ab8c264277bec2df9c9c7f5e22936288";
|
|
||||||
turn_user_lifetime = "1h";
|
|
||||||
database_type = "psycopg2";
|
|
||||||
database_args.database = "matrix-synapse";
|
|
||||||
};
|
};
|
||||||
extraConfigFiles = [
|
sops.secrets.tuwunel-turn-secret = {
|
||||||
"/var/lib/matrix-synapse/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";
|
||||||
|
well_known = {
|
||||||
|
server = "matrix.imxyy.top:443";
|
||||||
|
client = "https://matrix.imxyy.top";
|
||||||
|
};
|
||||||
|
|
||||||
|
allow_registration = true;
|
||||||
|
registration_token_file = config.sops.secrets.tuwunel-reg-token.path;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
new_user_displayname_suffix = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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" = {
|
services.caddy.virtualHosts."matrix.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
reverse_proxy :8094
|
reverse_proxy :8094
|
||||||
handle_path /_matrix {
|
|
||||||
reverse_proxy :8094
|
|
||||||
}
|
|
||||||
handle_path /_synapse/client {
|
|
||||||
reverse_proxy :8094
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sops.secrets.mautrix-telegram = {
|
||||||
|
sopsFile = secrets.mautrix-telegram;
|
||||||
|
format = "dotenv";
|
||||||
|
owner = "mautrix-telegram";
|
||||||
|
group = "mautrix-telegram";
|
||||||
|
};
|
||||||
|
services.mautrix-telegram = {
|
||||||
|
enable = true;
|
||||||
|
environmentFile = config.sops.secrets.mautrix-telegram.path;
|
||||||
|
settings = {
|
||||||
|
homeserver = {
|
||||||
|
address = "http://127.0.0.1:8094";
|
||||||
|
domain = "imxyy.top";
|
||||||
|
};
|
||||||
|
appservice = {
|
||||||
|
address = "http://127.0.0.1:8098";
|
||||||
|
hostname = "127.0.0.1";
|
||||||
|
port = "8098";
|
||||||
|
bot_username = "telegrambot";
|
||||||
|
};
|
||||||
|
bridge = {
|
||||||
|
username_template = "telegram_{userid}";
|
||||||
|
alias_template = "telegram_{groupname}";
|
||||||
|
displayname_template = "{displayname} (Telegram)";
|
||||||
|
permissions = {
|
||||||
|
"@imxyy_soope_:imxyy.top" = "admin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
telegram = {
|
||||||
|
# borrowed from https://github.com/telegramdesktop/tdesktop/blob/9bdc19e2fd4d497c8f403891848383a88faadc25/snap/snapcraft.yaml#L134-L135
|
||||||
|
api_id = "611335";
|
||||||
|
api_hash = "d524b414d21f4d37f08684c1df41ac9c";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,10 @@
|
|||||||
WorkingDirectory = "/opt/minecraft/fabric1.20.6";
|
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";
|
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";
|
Restart = "always";
|
||||||
RestartSec = "10s";
|
RestartSec = 120;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
my.persist = {
|
my.persist = {
|
||||||
nixosDirs = [
|
nixosDirs = [
|
||||||
"/opt/minecraft"
|
"/opt/minecraft"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ config, sopsRoot, ... }:
|
{ config, secrets, ... }:
|
||||||
{
|
{
|
||||||
sops.secrets.minio-env = {
|
sops.secrets.minio-env = {
|
||||||
sopsFile = sopsRoot + /minio.env;
|
sopsFile = secrets.minio;
|
||||||
format = "dotenv";
|
format = "dotenv";
|
||||||
};
|
};
|
||||||
services.minio = {
|
services.minio = {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
username,
|
username,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -131,26 +131,29 @@
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
"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 = [
|
users.users.${username}.openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
|
"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 = {
|
sops.secrets.dae-imxyy-nix-server = {
|
||||||
sopsFile = sopsRoot + /dae-imxyy-nix-server.dae;
|
sopsFile = secrets.dae-imxyy-nix-server;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
services.dae = {
|
services.dae = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configFile = config.sops.secrets.dae-imxyy-nix-server.path;
|
configFile = config.sops.secrets.dae-imxyy-nix-server.path;
|
||||||
};
|
};
|
||||||
systemd.services.dae.after = [ "sops-nix.service" ];
|
systemd.services.dae = {
|
||||||
|
after = [ "sops-nix.service" ];
|
||||||
|
serviceConfig.MemoryMax = "1G";
|
||||||
|
};
|
||||||
sops.secrets.mihomo = {
|
sops.secrets.mihomo = {
|
||||||
sopsFile = sopsRoot + /mihomo.yaml;
|
sopsFile = secrets.mihomo;
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "";
|
key = "";
|
||||||
};
|
};
|
||||||
@@ -162,7 +165,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.frp-env = {
|
sops.secrets.frp-env = {
|
||||||
sopsFile = sopsRoot + /frp.env;
|
sopsFile = secrets.frp;
|
||||||
format = "dotenv";
|
format = "dotenv";
|
||||||
};
|
};
|
||||||
systemd.services.frp.serviceConfig.EnvironmentFile = [
|
systemd.services.frp.serviceConfig.EnvironmentFile = [
|
||||||
@@ -302,21 +305,6 @@
|
|||||||
customDomains = [ "coder.imxyy.top" ];
|
customDomains = [ "coder.imxyy.top" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
name = "music-http";
|
|
||||||
type = "http";
|
|
||||||
localIP = "127.0.0.1";
|
|
||||||
localPort = 80;
|
|
||||||
customDomains = [ "music.imxyy.top" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "music-https";
|
|
||||||
type = "https";
|
|
||||||
localIP = "127.0.0.1";
|
|
||||||
localPort = 443;
|
|
||||||
customDomains = [ "music.imxyy.top" ];
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "ai-http";
|
name = "ai-http";
|
||||||
type = "http";
|
type = "http";
|
||||||
@@ -347,21 +335,6 @@
|
|||||||
customDomains = [ "grafana.imxyy.top" ];
|
customDomains = [ "grafana.imxyy.top" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
name = "note-http";
|
|
||||||
type = "http";
|
|
||||||
localIP = "127.0.0.1";
|
|
||||||
localPort = 80;
|
|
||||||
customDomains = [ "note.imxyy.top" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "note-https";
|
|
||||||
type = "https";
|
|
||||||
localIP = "127.0.0.1";
|
|
||||||
localPort = 443;
|
|
||||||
customDomains = [ "note.imxyy.top" ];
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "siyuan-http";
|
name = "siyuan-http";
|
||||||
type = "http";
|
type = "http";
|
||||||
@@ -377,6 +350,20 @@
|
|||||||
customDomains = [ "sy.imxyy.top" ];
|
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";
|
name = "matrix-http";
|
||||||
type = "http";
|
type = "http";
|
||||||
@@ -408,11 +395,47 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "minecraft";
|
name = "memo-http";
|
||||||
type = "tcp";
|
type = "http";
|
||||||
localIP = "127.0.0.1";
|
localIP = "127.0.0.1";
|
||||||
localPort = 25565;
|
localPort = 80;
|
||||||
remotePort = 25565;
|
customDomains = [ "memo.imxyy.top" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "memo-https";
|
||||||
|
type = "https";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 443;
|
||||||
|
customDomains = [ "memo.imxyy.top" ];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "efl-matrix-http";
|
||||||
|
type = "http";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 80;
|
||||||
|
customDomains = [ "mtx.eflx.top" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "efl-matrix-https";
|
||||||
|
type = "https";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 443;
|
||||||
|
customDomains = [ "mtx.eflx.top" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "efl-send-http";
|
||||||
|
type = "http";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 80;
|
||||||
|
customDomains = [ "send.eflx.top" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "efl-send-https";
|
||||||
|
type = "https";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 443;
|
||||||
|
customDomains = [ "send.eflx.top" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -449,12 +472,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.services."headscale" = {
|
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 = [
|
after = [
|
||||||
"podman-obligator.service"
|
"podman-obligator.service"
|
||||||
];
|
];
|
||||||
@@ -464,7 +481,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.et-imxyy-nix-server = {
|
sops.secrets.et-imxyy-nix-server = {
|
||||||
sopsFile = sopsRoot + /et-imxyy-nix-server.toml;
|
sopsFile = secrets.et-imxyy-nix-server;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.easytier ];
|
environment.systemPackages = [ pkgs.easytier ];
|
||||||
@@ -472,10 +489,8 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server.path}";
|
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server.path}";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = lib.mkOverride 500 "always";
|
Restart = "always";
|
||||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
RestartSec = 30;
|
||||||
RestartSec = lib.mkOverride 500 "100ms";
|
|
||||||
RestartSteps = lib.mkOverride 500 9;
|
|
||||||
User = "root";
|
User = "root";
|
||||||
};
|
};
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
@@ -485,9 +500,7 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers.containers.obligator = {
|
||||||
containers = {
|
|
||||||
obligator = {
|
|
||||||
image = "anderspitman/obligator:latest";
|
image = "anderspitman/obligator:latest";
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/lib/obligator:/data"
|
"/var/lib/obligator:/data"
|
||||||
@@ -505,8 +518,6 @@
|
|||||||
"1616"
|
"1616"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
|
||||||
services.caddy.virtualHosts."headscale.imxyy.top" = {
|
services.caddy.virtualHosts."headscale.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
reverse_proxy :8080 {
|
reverse_proxy :8080 {
|
||||||
@@ -524,9 +535,10 @@
|
|||||||
|
|
||||||
systemd.services.ddns-go =
|
systemd.services.ddns-go =
|
||||||
let
|
let
|
||||||
ddns-go = pkgs.buildGoModule rec {
|
|
||||||
pname = "ddns-go";
|
|
||||||
version = "6.6.7";
|
version = "6.6.7";
|
||||||
|
ddns-go = pkgs.buildGoModule {
|
||||||
|
inherit version;
|
||||||
|
pname = "ddns-go";
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
owner = "jeessy2";
|
owner = "jeessy2";
|
||||||
repo = "ddns-go";
|
repo = "ddns-go";
|
||||||
@@ -570,23 +582,22 @@
|
|||||||
"music"
|
"music"
|
||||||
"ai"
|
"ai"
|
||||||
"sy"
|
"sy"
|
||||||
"minio"
|
"immich"
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
resolveLocalQueries = false;
|
resolveLocalQueries = false;
|
||||||
settings = {
|
settings = {
|
||||||
server = [
|
no-resolv = true;
|
||||||
"120.53.53.53"
|
server = [ "192.168.3.1" ];
|
||||||
"223.5.5.5"
|
|
||||||
];
|
|
||||||
address = map (sub: "/${sub}.imxyy.top/192.168.3.2") subDomains ++ [
|
address = map (sub: "/${sub}.imxyy.top/192.168.3.2") subDomains ++ [
|
||||||
"/imxyy-nix-server/192.168.3.2"
|
"/imxyy-nix-server/192.168.3.2"
|
||||||
"/imxyy-cloudwin/192.168.3.4"
|
"/imxyy-cloudwin/192.168.3.4"
|
||||||
"/printer.home/192.168.3.53"
|
"/printer.home/192.168.3.53"
|
||||||
];
|
];
|
||||||
cache-size = 0;
|
cache-size = 0;
|
||||||
|
log-queries = "extra";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
username,
|
username,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -13,17 +13,16 @@
|
|||||||
timeout = 0;
|
timeout = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
hardware.bluetooth.powerOnBoot = true;
|
|
||||||
|
|
||||||
systemd.services.nix-daemon = {
|
systemd.services.nix-daemon = {
|
||||||
environment.TMPDIR = "/var/cache/nix";
|
environment.TMPDIR = "/var/cache/nix";
|
||||||
serviceConfig.CacheDirectory = "nix";
|
serviceConfig.CacheDirectory = "nix";
|
||||||
};
|
};
|
||||||
environment.variables.NIX_REMOTE = "daemon";
|
environment.variables.NIX_REMOTE = "daemon";
|
||||||
|
|
||||||
|
my.audio.enable = false;
|
||||||
|
|
||||||
sops.secrets.imxyy-nix-server-hashed-password = {
|
sops.secrets.imxyy-nix-server-hashed-password = {
|
||||||
sopsFile = sopsRoot + /imxyy-nix-server-hashed-password.txt;
|
sopsFile = secrets.imxyy-nix-server-hashed-password;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
neededForUsers = true;
|
neededForUsers = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,31 +1,16 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
flatnote-env = {
|
|
||||||
sopsFile = sopsRoot + /flatnote.env;
|
|
||||||
format = "dotenv";
|
|
||||||
};
|
|
||||||
siyuan-env = {
|
siyuan-env = {
|
||||||
sopsFile = sopsRoot + /siyuan.env;
|
sopsFile = secrets.siyuan;
|
||||||
format = "dotenv";
|
format = "dotenv";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
virtualisation.oci-containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
containers = {
|
|
||||||
flatnotes = {
|
|
||||||
image = "dullage/flatnotes:latest";
|
|
||||||
volumes = [
|
|
||||||
"/mnt/nas/flatnotes/data:/data"
|
|
||||||
];
|
|
||||||
environmentFiles = [
|
|
||||||
"${config.sops.secrets.flatnote-env.path}"
|
|
||||||
];
|
|
||||||
ports = [ "8093:8080" ];
|
|
||||||
};
|
|
||||||
siyuan = {
|
siyuan = {
|
||||||
image = "apkdv/siyuan-unlock:v3.1.30";
|
image = "apkdv/siyuan-unlock:v3.1.30";
|
||||||
volumes = [
|
volumes = [
|
||||||
@@ -44,18 +29,24 @@
|
|||||||
];
|
];
|
||||||
ports = [ "8095:6806" ];
|
ports = [ "8095:6806" ];
|
||||||
};
|
};
|
||||||
|
memos = {
|
||||||
|
image = "neosmemo/memos:stable";
|
||||||
|
volumes = [
|
||||||
|
"/mnt/nas/memos:/var/opt/memos"
|
||||||
|
];
|
||||||
|
ports = [ "8097:5230" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.caddy.virtualHosts = {
|
services.caddy.virtualHosts = {
|
||||||
"note.imxyy.top" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy :8093
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"sy.imxyy.top" = {
|
"sy.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
reverse_proxy :8095
|
reverse_proxy :8095
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
"memo.imxyy.top" = {
|
||||||
|
extraConfig = ''
|
||||||
|
reverse_proxy :8097
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ config, sopsRoot, ... }:
|
{ config, secrets, ... }:
|
||||||
{
|
{
|
||||||
sops.secrets.vaultwarden-env = {
|
sops.secrets.vaultwarden-env = {
|
||||||
sopsFile = sopsRoot + /vaultwarden.env;
|
sopsFile = secrets.vaultwarden;
|
||||||
format = "dotenv";
|
format = "dotenv";
|
||||||
};
|
};
|
||||||
services.postgresql.ensureUsers = [
|
services.postgresql.ensureUsers = [
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
initrd.kernelModules = [
|
initrd.kernelModules = lib.mkBefore [
|
||||||
"vfio_pci"
|
"vfio_pci"
|
||||||
"vfio"
|
"vfio"
|
||||||
"vfio_iommu_type1"
|
"vfio_iommu_type1"
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
virtualisation.oci-containers.containers."YesPlayMusic" = {
|
|
||||||
image = "git.imxyy.top/imxyy1soope1/yesplaymusic:latest";
|
|
||||||
environment = {
|
|
||||||
"NODE_TLS_REJECT_UNAUTHORIZED" = "0";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"/etc/localtime:/etc/localtime:ro"
|
|
||||||
];
|
|
||||||
ports = [
|
|
||||||
"8088:80/tcp"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.caddy.virtualHosts."music.imxyy.top" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy :8088 {
|
|
||||||
header_up X-Real-IP {remote_host}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -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";
|
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 = {
|
my = {
|
||||||
sops.sshKeyPath = "/home/${username}/.ssh/id_ed25519";
|
sops.sshKeyFile = "/home/${username}/.ssh/id_ed25519";
|
||||||
coding.all.enable = true;
|
coding.all.enable = true;
|
||||||
coding.editor.vscode.enable = lib.mkForce false;
|
coding.editor.vscode.enable = lib.mkForce false;
|
||||||
cli.misc.enable = true;
|
cli.misc.enable = true;
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
username,
|
username,
|
||||||
...
|
...
|
||||||
@@ -10,8 +8,6 @@
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
localsend
|
localsend
|
||||||
|
|
||||||
rclone
|
|
||||||
|
|
||||||
wpsoffice-cn
|
wpsoffice-cn
|
||||||
wps-office-fonts
|
wps-office-fonts
|
||||||
ttf-wps-fonts
|
ttf-wps-fonts
|
||||||
@@ -20,24 +16,34 @@
|
|||||||
anki
|
anki
|
||||||
|
|
||||||
ayugram-desktop
|
ayugram-desktop
|
||||||
telegram-desktop
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
discord
|
element-desktop
|
||||||
|
fractal
|
||||||
qq
|
qq
|
||||||
wechat
|
wechat
|
||||||
|
|
||||||
gnome-clocks
|
gnome-clocks
|
||||||
|
|
||||||
wineWowPackages.waylandFull
|
|
||||||
|
|
||||||
pavucontrol
|
|
||||||
pamixer
|
|
||||||
];
|
];
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
PATH = "/home/${username}/bin:$PATH";
|
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 = {
|
my = {
|
||||||
@@ -45,8 +51,7 @@
|
|||||||
cli.all.enable = true;
|
cli.all.enable = true;
|
||||||
coding.all.enable = true;
|
coding.all.enable = true;
|
||||||
desktop.all.enable = true;
|
desktop.all.enable = true;
|
||||||
|
virt.moonlight.enable = true;
|
||||||
desktop.browser.librewolf.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
i18n.fcitx5.enable = true;
|
i18n.fcitx5.enable = true;
|
||||||
|
|
||||||
@@ -59,7 +64,7 @@
|
|||||||
imageviewer = [ "org.gnome.Shotwell-Viewer.desktop" ];
|
imageviewer = [ "org.gnome.Shotwell-Viewer.desktop" ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"inode/directory" = [ "nemo.desktop" ];
|
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||||
|
|
||||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||||
|
|
||||||
@@ -92,15 +97,6 @@
|
|||||||
"image/png" = imageviewer;
|
"image/png" = imageviewer;
|
||||||
"image/webp" = 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 = {
|
persist = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -118,23 +114,26 @@
|
|||||||
".local/state"
|
".local/state"
|
||||||
".local/share/Anki2"
|
".local/share/Anki2"
|
||||||
".local/share/shotwell"
|
".local/share/shotwell"
|
||||||
".local/share/cheat.sh"
|
|
||||||
".local/share/Kingsoft"
|
".local/share/Kingsoft"
|
||||||
|
|
||||||
".local/share/AyuGramDesktop"
|
".local/share/AyuGramDesktop"
|
||||||
".local/share/TelegramDesktop"
|
".local/share/fractal"
|
||||||
".config/Signal"
|
".config/Signal"
|
||||||
".config/discord"
|
".config/Element"
|
||||||
".config/QQ"
|
".config/QQ"
|
||||||
".xwechat"
|
".xwechat"
|
||||||
|
|
||||||
".config/Kingsoft"
|
".config/Kingsoft"
|
||||||
".config/dconf"
|
".config/dconf"
|
||||||
".config/gh"
|
|
||||||
".config/pulse"
|
|
||||||
".config/pip"
|
".config/pip"
|
||||||
".config/libreoffice"
|
|
||||||
".config/sunshine"
|
".config/sunshine"
|
||||||
|
|
||||||
|
".gemini"
|
||||||
|
".claude"
|
||||||
|
".claude-code-router"
|
||||||
|
];
|
||||||
|
homeFiles = [
|
||||||
|
".claude.json"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -10,10 +9,51 @@
|
|||||||
"biosdevname=0"
|
"biosdevname=0"
|
||||||
"net.ifnames=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 = {
|
sops.secrets.dae-imxyy-nix-x16 = {
|
||||||
sopsFile = sopsRoot + /dae-imxyy-nix-x16.dae;
|
sopsFile = secrets.dae-imxyy-nix-x16;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
services.dae = {
|
services.dae = {
|
||||||
@@ -22,7 +62,7 @@
|
|||||||
};
|
};
|
||||||
systemd.services.dae.after = [ "sops-nix.service" ];
|
systemd.services.dae.after = [ "sops-nix.service" ];
|
||||||
sops.secrets.mihomo = {
|
sops.secrets.mihomo = {
|
||||||
sopsFile = sopsRoot + /mihomo.yaml;
|
sopsFile = secrets.mihomo;
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "";
|
key = "";
|
||||||
};
|
};
|
||||||
@@ -34,7 +74,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.et-imxyy-nix-x16 = {
|
sops.secrets.et-imxyy-nix-x16 = {
|
||||||
sopsFile = sopsRoot + /et-imxyy-nix-x16.toml;
|
sopsFile = secrets.et-imxyy-nix-x16;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
@@ -44,10 +84,8 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-x16.path}";
|
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-x16.path}";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = lib.mkOverride 500 "always";
|
Restart = "always";
|
||||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
RestartSec = 30;
|
||||||
RestartSec = lib.mkOverride 500 "100ms";
|
|
||||||
RestartSteps = lib.mkOverride 500 9;
|
|
||||||
User = "root";
|
User = "root";
|
||||||
};
|
};
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
{
|
{
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
username,
|
username,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -36,36 +35,6 @@
|
|||||||
};
|
};
|
||||||
environment.variables.NIX_REMOTE = "daemon";
|
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 = {
|
fonts = {
|
||||||
enableDefaultPackages = false;
|
enableDefaultPackages = false;
|
||||||
fontDir.enable = true;
|
fontDir.enable = true;
|
||||||
@@ -102,6 +71,9 @@
|
|||||||
|
|
||||||
services.printing.enable = true;
|
services.printing.enable = true;
|
||||||
|
|
||||||
|
services.upower.enable = true;
|
||||||
|
services.power-profiles-daemon.enable = true;
|
||||||
|
|
||||||
services.keyd = {
|
services.keyd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
keyboards.default.settings = {
|
keyboards.default.settings = {
|
||||||
@@ -134,7 +106,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
sops.secrets.imxyy-nix-rclone = {
|
sops.secrets.imxyy-nix-rclone = {
|
||||||
sopsFile = sopsRoot + /imxyy-nix-rclone.conf;
|
sopsFile = secrets.imxyy-nix-rclone;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
@@ -154,21 +126,6 @@
|
|||||||
"vfs-cache-mode=full"
|
"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" ];
|
my.persist.nixosDirs = [ "/etc/NetworkManager/system-connections" ];
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
username,
|
username,
|
||||||
...
|
...
|
||||||
@@ -10,8 +8,6 @@
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
localsend
|
localsend
|
||||||
|
|
||||||
rclone
|
|
||||||
|
|
||||||
wpsoffice-cn
|
wpsoffice-cn
|
||||||
wps-office-fonts
|
wps-office-fonts
|
||||||
ttf-wps-fonts
|
ttf-wps-fonts
|
||||||
@@ -20,18 +16,13 @@
|
|||||||
anki
|
anki
|
||||||
|
|
||||||
ayugram-desktop
|
ayugram-desktop
|
||||||
telegram-desktop
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
discord
|
element-desktop
|
||||||
|
fractal
|
||||||
qq
|
qq
|
||||||
wechat
|
wechat
|
||||||
|
|
||||||
gnome-clocks
|
gnome-clocks
|
||||||
|
|
||||||
wineWowPackages.waylandFull
|
|
||||||
|
|
||||||
pavucontrol
|
|
||||||
pamixer
|
|
||||||
];
|
];
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
@@ -91,8 +82,6 @@
|
|||||||
coding.all.enable = true;
|
coding.all.enable = true;
|
||||||
desktop.all.enable = true;
|
desktop.all.enable = true;
|
||||||
|
|
||||||
desktop.browser.librewolf.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
i18n.fcitx5.enable = true;
|
i18n.fcitx5.enable = true;
|
||||||
|
|
||||||
xdg = {
|
xdg = {
|
||||||
@@ -104,7 +93,7 @@
|
|||||||
imageviewer = [ "org.gnome.Shotwell-Viewer.desktop" ];
|
imageviewer = [ "org.gnome.Shotwell-Viewer.desktop" ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"inode/directory" = [ "nemo.desktop" ];
|
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||||
|
|
||||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||||
|
|
||||||
@@ -137,16 +126,6 @@
|
|||||||
"image/png" = imageviewer;
|
"image/png" = imageviewer;
|
||||||
"image/webp" = 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 = {
|
persist = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -162,23 +141,23 @@
|
|||||||
".local/state"
|
".local/state"
|
||||||
".local/share/Anki2"
|
".local/share/Anki2"
|
||||||
".local/share/shotwell"
|
".local/share/shotwell"
|
||||||
".local/share/cheat.sh"
|
|
||||||
".local/share/Kingsoft"
|
".local/share/Kingsoft"
|
||||||
|
|
||||||
".local/share/AyuGramDesktop"
|
".local/share/AyuGramDesktop"
|
||||||
".local/share/TelegramDesktop"
|
".local/share/fractal"
|
||||||
".config/Signal"
|
".config/Signal"
|
||||||
".config/discord"
|
".config/Element"
|
||||||
".config/QQ"
|
".config/QQ"
|
||||||
".xwechat"
|
".xwechat"
|
||||||
|
|
||||||
".config/Kingsoft"
|
".config/Kingsoft"
|
||||||
".config/dconf"
|
".config/dconf"
|
||||||
".config/gh"
|
|
||||||
".config/pulse"
|
|
||||||
".config/pip"
|
".config/pip"
|
||||||
".config/libreoffice"
|
|
||||||
".config/sunshine"
|
".config/sunshine"
|
||||||
|
|
||||||
|
".gemini"
|
||||||
|
".claude"
|
||||||
|
".claude-code-router"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,8 +2,7 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
sopsRoot,
|
secrets,
|
||||||
username,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -70,6 +69,7 @@
|
|||||||
chain input {
|
chain input {
|
||||||
type filter hook input priority 0; policy drop;
|
type filter hook input priority 0; policy drop;
|
||||||
iif lo accept
|
iif lo accept
|
||||||
|
iifname waydroid0 accept
|
||||||
ct state invalid drop
|
ct state invalid drop
|
||||||
ct state established,related accept
|
ct state established,related accept
|
||||||
|
|
||||||
@@ -79,6 +79,9 @@
|
|||||||
|
|
||||||
chain forward {
|
chain forward {
|
||||||
type filter hook forward priority 0; policy drop;
|
type filter hook forward priority 0; policy drop;
|
||||||
|
|
||||||
|
iifname waydroid0 accept
|
||||||
|
oifname waydroid0 accept
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
@@ -86,7 +89,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.dae-imxyy-nix = {
|
sops.secrets.dae-imxyy-nix = {
|
||||||
sopsFile = sopsRoot + /dae-imxyy-nix.dae;
|
sopsFile = secrets.dae-imxyy-nix;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
services.dae = {
|
services.dae = {
|
||||||
@@ -95,7 +98,7 @@
|
|||||||
};
|
};
|
||||||
systemd.services.dae.after = [ "sops-nix.service" ];
|
systemd.services.dae.after = [ "sops-nix.service" ];
|
||||||
sops.secrets.mihomo = {
|
sops.secrets.mihomo = {
|
||||||
sopsFile = sopsRoot + /mihomo.yaml;
|
sopsFile = secrets.mihomo;
|
||||||
format = "yaml";
|
format = "yaml";
|
||||||
key = "";
|
key = "";
|
||||||
};
|
};
|
||||||
@@ -107,7 +110,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.et-imxyy-nix = {
|
sops.secrets.et-imxyy-nix = {
|
||||||
sopsFile = sopsRoot + /et-imxyy-nix.toml;
|
sopsFile = secrets.et-imxyy-nix;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.easytier ];
|
environment.systemPackages = [ pkgs.easytier ];
|
||||||
@@ -115,10 +118,8 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix.path}";
|
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix.path}";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = lib.mkOverride 500 "always";
|
Restart = "always";
|
||||||
RestartMaxDelaySec = lib.mkOverride 500 "1m";
|
RestartSec = 30;
|
||||||
RestartSec = lib.mkOverride 500 "100ms";
|
|
||||||
RestartSteps = lib.mkOverride 500 9;
|
|
||||||
User = "root";
|
User = "root";
|
||||||
};
|
};
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
username,
|
username,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -22,7 +22,7 @@ let
|
|||||||
temp = line.split(" ")
|
temp = line.split(" ")
|
||||||
bus = temp[1]
|
bus = temp[1]
|
||||||
device = temp[3][:-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
|
return True
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
@@ -36,44 +36,6 @@ let
|
|||||||
with open("/tmp/.btreseted", "w"):
|
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
|
in
|
||||||
{
|
{
|
||||||
security.pam.loginLimits = [
|
security.pam.loginLimits = [
|
||||||
@@ -111,36 +73,6 @@ in
|
|||||||
};
|
};
|
||||||
environment.variables.NIX_REMOTE = "daemon";
|
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 = {
|
fonts = {
|
||||||
enableDefaultPackages = false;
|
enableDefaultPackages = false;
|
||||||
fontDir.enable = true;
|
fontDir.enable = true;
|
||||||
@@ -179,7 +111,8 @@ in
|
|||||||
|
|
||||||
services.keyd = {
|
services.keyd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
keyboards.default.settings = {
|
keyboards = {
|
||||||
|
default.settings = {
|
||||||
main = {
|
main = {
|
||||||
capslock = "overload(control, esc)";
|
capslock = "overload(control, esc)";
|
||||||
home = "end";
|
home = "end";
|
||||||
@@ -191,6 +124,11 @@ in
|
|||||||
delete = "print";
|
delete = "print";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
kone-pro-owl-eye = {
|
||||||
|
ids = [ "1e7d:2dcd" ];
|
||||||
|
settings.main.mouse2 = "rightmouse";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gvfs.enable = true;
|
services.gvfs.enable = true;
|
||||||
@@ -199,6 +137,9 @@ in
|
|||||||
programs.wireshark.package = pkgs.wireshark;
|
programs.wireshark.package = pkgs.wireshark;
|
||||||
users.users.${username}.extraGroups = [ "wireshark" ];
|
users.users.${username}.extraGroups = [ "wireshark" ];
|
||||||
|
|
||||||
|
virtualisation.waydroid.enable = true;
|
||||||
|
my.persist.homeDirs = [ ".local/share/waydroid" ];
|
||||||
|
|
||||||
services.sunshine = {
|
services.sunshine = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
@@ -225,7 +166,7 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
sops.secrets.imxyy-nix-rclone = {
|
sops.secrets.imxyy-nix-rclone = {
|
||||||
sopsFile = sopsRoot + /imxyy-nix-rclone.conf;
|
sopsFile = secrets.imxyy-nix-rclone;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
};
|
};
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
|
|||||||
318
flake.lock
generated
318
flake.lock
generated
@@ -5,11 +5,11 @@
|
|||||||
"fromYaml": "fromYaml"
|
"fromYaml": "fromYaml"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1746562888,
|
"lastModified": 1755819240,
|
||||||
"narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
|
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
|
||||||
"owner": "SenchoPens",
|
"owner": "SenchoPens",
|
||||||
"repo": "base16.nix",
|
"repo": "base16.nix",
|
||||||
"rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
|
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -37,11 +37,11 @@
|
|||||||
"base16-helix": {
|
"base16-helix": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748408240,
|
"lastModified": 1752979451,
|
||||||
"narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=",
|
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-helix",
|
"repo": "base16-helix",
|
||||||
"rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e",
|
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -98,6 +98,26 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"catppuccin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757320803,
|
||||||
|
"narHash": "sha256-7PUIQOMQSJLkNtV42SAYUDw0mRdbBNl6q8pLN8GViwM=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "d75e3fe67f49728cb5035bc791f4b9065ff3a2c9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"chaotic": {
|
"chaotic": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-schemas": "flake-schemas",
|
"flake-schemas": "flake-schemas",
|
||||||
@@ -107,11 +127,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752141190,
|
"lastModified": 1757789833,
|
||||||
"narHash": "sha256-RHNq77Z84BtLTwyRtrBffm5V9006Dqw4vh3vrvULlxM=",
|
"narHash": "sha256-cpYiHtQ9ROyutuFEkqDNkc3sOVayEeNHAtCVQI5reoc=",
|
||||||
"owner": "chaotic-cx",
|
"owner": "chaotic-cx",
|
||||||
"repo": "nyx",
|
"repo": "nyx",
|
||||||
"rev": "ef0794b8e94eea166407141f7e92da75f6df925a",
|
"rev": "5a088eb3f84aeea80b2d240e25c4f72a0fbdea4e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -128,11 +148,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750940343,
|
"lastModified": 1754000084,
|
||||||
"narHash": "sha256-qmc/jreM09MOwQ8dOa/+yyh99rU7TowSqo8L33VHfto=",
|
"narHash": "sha256-m3UMp3dJfGptOR8WDGYgaHfax7Wpad0wKfOI8xZLC1s=",
|
||||||
"owner": "Bali10050",
|
"owner": "Bali10050",
|
||||||
"repo": "Darkly",
|
"repo": "Darkly",
|
||||||
"rev": "77770c8d3c35f7ad39da2c57122c360096df0aac",
|
"rev": "39b4100b86c4531a5729e00e1584df9970b02468",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -171,11 +191,11 @@
|
|||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752129689,
|
"lastModified": 1757745213,
|
||||||
"narHash": "sha256-0Xq5tZbvgZvxbbxv6kRHFuZE4Tq2za016NXh32nX0+Q=",
|
"narHash": "sha256-P9VX/P2mN96MkFN8hwCYUQ+LV1bfH57UJ/pGwjd0Olc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "70bb04a7de606a75ba0a2ee9d47b99802780b35d",
|
"rev": "1458349a1bd55105f917e962dca4b328ac0a55e8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -187,11 +207,11 @@
|
|||||||
"firefox-gnome-theme": {
|
"firefox-gnome-theme": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748383148,
|
"lastModified": 1756083905,
|
||||||
"narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=",
|
"narHash": "sha256-UqYGTBgI5ypGh0Kf6zZjom/vABg7HQocB4gmxzl12uo=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "firefox-gnome-theme",
|
"repo": "firefox-gnome-theme",
|
||||||
"rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf",
|
"rev": "b655eaf16d4cbec9c3472f62eee285d4b419a808",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -273,27 +293,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_3": {
|
"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": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"stylix",
|
"stylix",
|
||||||
@@ -301,11 +300,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751413152,
|
"lastModified": 1756770412,
|
||||||
"narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=",
|
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "77826244401ea9de6e3bac47c2db46005e1f30b5",
|
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -457,11 +456,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748528448,
|
"lastModified": 1755219990,
|
||||||
"narHash": "sha256-Tyn+PgBm78Ibq28/WbEz8+pYJZMdbJKsyXMCpT6TjrM=",
|
"narHash": "sha256-/znXwik9nC9TY6dwq0SR60MAi9IEZi2InRSRjfhKu1s=",
|
||||||
"owner": "imxyy1soope1",
|
"owner": "imxyy1soope1",
|
||||||
"repo": "go-musicfox",
|
"repo": "go-musicfox",
|
||||||
"rev": "1870fd3501631577ad4daef1489b03885abcb037",
|
"rev": "938c4d6bb2a318bc6251f3b11fa8cf54d29b4419",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -500,11 +499,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751824240,
|
"lastModified": 1757698511,
|
||||||
"narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=",
|
"narHash": "sha256-UqHHGydF/q3jfYXCpvYLA0TWtvByOp1NwOKCUjhYmPs=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "fd9e55f5fac45a26f6169310afca64d56b681935",
|
"rev": "a3fcc92180c7462082cd849498369591dfb20855",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -520,11 +519,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752202894,
|
"lastModified": 1757809953,
|
||||||
"narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=",
|
"narHash": "sha256-29mlXbfAJhz9cWVrPP4STvVPDVZFCfCOmaIN5lFJa+Y=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "fab659b346c0d4252208434c3c4b3983a4b38fec",
|
"rev": "17a10049486f6698fca32097d8f52c0c895542b0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -542,11 +541,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1743604125,
|
"lastModified": 1752603129,
|
||||||
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
|
"narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
|
"rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -595,11 +594,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751529406,
|
"lastModified": 1757230583,
|
||||||
"narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=",
|
"narHash": "sha256-4uqu7sFPOaVTCogsxaGMgbzZ2vK40GVGMfUmrvK3/LY=",
|
||||||
"owner": "Jovian-Experiments",
|
"owner": "Jovian-Experiments",
|
||||||
"repo": "Jovian-NixOS",
|
"repo": "Jovian-NixOS",
|
||||||
"rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d",
|
"rev": "fc3960e6c32c9d4f95fff2ef84444284d24d3bea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -658,21 +657,17 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"niri-stable": "niri-stable",
|
"niri-stable": "niri-stable",
|
||||||
"niri-unstable": "niri-unstable",
|
"niri-unstable": "niri-unstable",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_5",
|
||||||
"nixpkgs"
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
],
|
|
||||||
"nixpkgs-stable": [
|
|
||||||
"nixpkgs-stable"
|
|
||||||
],
|
|
||||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752078530,
|
"lastModified": 1757813984,
|
||||||
"narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=",
|
"narHash": "sha256-LrCMacdjesK2GW8aA5/eGEkh3jAut6HG0vRkpnGfN3I=",
|
||||||
"owner": "sodiboo",
|
"owner": "sodiboo",
|
||||||
"repo": "niri-flake",
|
"repo": "niri-flake",
|
||||||
"rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf",
|
"rev": "e1088ad97a72f86afadd1e76086a4e74cc224153",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -684,16 +679,16 @@
|
|||||||
"niri-stable": {
|
"niri-stable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748151941,
|
"lastModified": 1756556321,
|
||||||
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
|
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
|
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"ref": "v25.05.1",
|
"ref": "v25.08",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -701,11 +696,11 @@
|
|||||||
"niri-unstable": {
|
"niri-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750791124,
|
"lastModified": 1757656821,
|
||||||
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
|
"narHash": "sha256-MDaLusQZflxngGMU41g6cqabM7KE8I55UazzAZsjNN0=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
|
"rev": "b7909dbf61c7c1511b9a51ef46e1d503d5ba3d05",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -804,11 +799,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752199438,
|
"lastModified": 1757671225,
|
||||||
"narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=",
|
"narHash": "sha256-ZzoQXe7GV7QX3B3Iw59BogmrtHSP5Ig7MAPPD0cOFW4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "d34d9412556d3a896e294534ccd25f53b6822e80",
|
"rev": "42666441c3ddf34a8583a77f07a2c7cae32513c3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -819,11 +814,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751984180,
|
"lastModified": 1757598577,
|
||||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
"narHash": "sha256-+PccWxBVh1cFy2sDWHlpSBG+OP0b6o/DE2EzCxsB0ns=",
|
||||||
"owner": "NixOS",
|
"owner": "PedroHLC",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
"rev": "7bbfafff0e9f1c9a0d10ca4d4c26aaa49a13d893",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -847,11 +842,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752206449,
|
"lastModified": 1757814425,
|
||||||
"narHash": "sha256-NVAbC/s4CupABWGXF8M9mDiVw/n0YCftxwc1KatVjDk=",
|
"narHash": "sha256-MZ8UBVELoZHAG10h8y/yEMw5lv8WPn+1WEvEUSpEs8o=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1bd4d0d4a678d48b63eb18f457d74df2fcee6c69",
|
"rev": "c659633bbfeeb25a2e6d70fb086299d989e248f7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -863,11 +858,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752203688,
|
"lastModified": 1757545623,
|
||||||
"narHash": "sha256-uJ054F5PVGPu5SvLPMevhdY/EfK0X5DUyRtXhQYNUyo=",
|
"narHash": "sha256-mCxPABZ6jRjUQx3bPP4vjA68ETbPLNz9V2pk9tO7pRQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8cd5ce828d5d1d16feff37340171a98fc3bf6526",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-25.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757810152,
|
||||||
|
"narHash": "sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a70a12c75e13aa546c20ce0fe515de634d52c39e",
|
"rev": "9a094440e02a699be5c57453a092a8baf569bdad",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -879,16 +890,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752124863,
|
"lastModified": 1757745802,
|
||||||
"narHash": "sha256-5rWuf6RAlMDp/CAEuyYEz7ryxzgjxOCgUDhWEef864c=",
|
"narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "40de82b434526744da778ed53c742c1282d9e75e",
|
"rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable-small",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -943,40 +954,21 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751984180,
|
"lastModified": 1757745802,
|
||||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
"narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
"rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"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": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
"stylix",
|
"stylix",
|
||||||
@@ -988,11 +980,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751906969,
|
"lastModified": 1756961635,
|
||||||
"narHash": "sha256-BSQAOdPnzdpOuCdAGSJmefSDlqmStFNScEnrWzSqKPw=",
|
"narHash": "sha256-hETvQcILTg5kChjYNns1fD5ELdsYB/VVgVmBtqKQj9A=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "ddb679f4131e819efe3bbc6457ba19d7ad116f25",
|
"rev": "6ca27b2654ac55e3f6e0ca434c1b4589ae22b370",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1001,28 +993,9 @@
|
|||||||
"type": "github"
|
"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": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"catppuccin": "catppuccin",
|
||||||
"chaotic": "chaotic",
|
"chaotic": "chaotic",
|
||||||
"darkly": "darkly",
|
"darkly": "darkly",
|
||||||
"fenix": "fenix",
|
"fenix": "fenix",
|
||||||
@@ -1037,10 +1010,8 @@
|
|||||||
"nixpkgs-unstable"
|
"nixpkgs-unstable"
|
||||||
],
|
],
|
||||||
"nixpkgs-master": "nixpkgs-master",
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur",
|
|
||||||
"quickshell": "quickshell",
|
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"zen": "zen"
|
"zen": "zen"
|
||||||
@@ -1049,11 +1020,11 @@
|
|||||||
"rust-analyzer-src": {
|
"rust-analyzer-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752086493,
|
"lastModified": 1757362324,
|
||||||
"narHash": "sha256-USpVUdiWXDfPoh+agbvoBQaBhg3ZdKZgHXo/HikMfVo=",
|
"narHash": "sha256-/PAhxheUq4WBrW5i/JHzcCqK5fGWwLKdH6/Lu1tyS18=",
|
||||||
"owner": "rust-lang",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-analyzer",
|
"repo": "rust-analyzer",
|
||||||
"rev": "6e3abe164b9036048dce1a3aa65a7e7e5200c0d3",
|
"rev": "9edc9cbe5d8e832b5864e09854fa94861697d2fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1071,11 +1042,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751856221,
|
"lastModified": 1757730403,
|
||||||
"narHash": "sha256-/QE1eV0ckFvgRMcKjZqgdJDoXFNwSMepwRoBjaw2MCk=",
|
"narHash": "sha256-Jxl4OZRVsXs8JxEHUVQn3oPu6zcqFyGGKaFrlNgbzp0=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "34cae4b56929c5b340e1c5b10d9a98a425b2a51e",
|
"rev": "3232f7f8bd07849fc6f4ae77fe695e0abb2eba2c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1091,15 +1062,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751606940,
|
"lastModified": 1757537828,
|
||||||
"narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
|
"narHash": "sha256-6FxXJ/Q58hNrQ3aOdxcOsSCpfYnbtReGApGzfhACVmQ=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
|
"rev": "457ed19640a808807e58e19cbd0a5761dbb0ed60",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
|
"ref": "pull/779/merge",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -1111,12 +1083,12 @@
|
|||||||
"base16-helix": "base16-helix",
|
"base16-helix": "base16-helix",
|
||||||
"base16-vim": "base16-vim",
|
"base16-vim": "base16-vim",
|
||||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
"flake-parts": "flake-parts_4",
|
"flake-parts": "flake-parts_3",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur_2",
|
"nur": "nur",
|
||||||
"systems": "systems_2",
|
"systems": "systems_2",
|
||||||
"tinted-foot": "tinted-foot",
|
"tinted-foot": "tinted-foot",
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
@@ -1125,11 +1097,11 @@
|
|||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752201883,
|
"lastModified": 1757360005,
|
||||||
"narHash": "sha256-SZVbQ4YThvYU50cJ4W4GNMy7/rVOJI8qmXqbEcRNsug=",
|
"narHash": "sha256-VwzdFEQCpYMU9mc7BSQGQe5wA1MuTYPJnRc9TQCTMcM=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "d395780b9c5c36f191b990b2021c71af180a1982",
|
"rev": "834a743c11d66ea18e8c54872fbcc72ce48bc57f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1204,11 +1176,11 @@
|
|||||||
"tinted-schemes": {
|
"tinted-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750770351,
|
"lastModified": 1754779259,
|
||||||
"narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=",
|
"narHash": "sha256-8KG2lXGaXLUE0F/JVwLQe7kOVm21IDfNEo0gfga5P4M=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "schemes",
|
"repo": "schemes",
|
||||||
"rev": "5a775c6ffd6e6125947b393872cde95867d85a2a",
|
"rev": "097d751b9e3c8b97ce158e7d141e5a292545b502",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1220,11 +1192,11 @@
|
|||||||
"tinted-tmux": {
|
"tinted-tmux": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751159871,
|
"lastModified": 1754788770,
|
||||||
"narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=",
|
"narHash": "sha256-LAu5nBr7pM/jD9jwFc6/kyFY4h7Us4bZz7dvVvehuwo=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "tinted-tmux",
|
"repo": "tinted-tmux",
|
||||||
"rev": "bded5e24407cec9d01bd47a317d15b9223a1546c",
|
"rev": "fb2175accef8935f6955503ec9dd3c973eec385c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1236,11 +1208,11 @@
|
|||||||
"tinted-zed": {
|
"tinted-zed": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751158968,
|
"lastModified": 1755613540,
|
||||||
"narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=",
|
"narHash": "sha256-zBFrrTxHLDMDX/OYxkCwGGbAhPXLi8FrnLhYLsSOKeY=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-zed",
|
"repo": "base16-zed",
|
||||||
"rev": "86a470d94204f7652b906ab0d378e4231a5b3384",
|
"rev": "937bada16cd3200bdbd3a2f5776fc3b686d5cba0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1252,16 +1224,16 @@
|
|||||||
"xwayland-satellite-stable": {
|
"xwayland-satellite-stable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748488455,
|
"lastModified": 1755491097,
|
||||||
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
|
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||||
"owner": "Supreeeme",
|
"owner": "Supreeeme",
|
||||||
"repo": "xwayland-satellite",
|
"repo": "xwayland-satellite",
|
||||||
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
|
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "Supreeeme",
|
"owner": "Supreeeme",
|
||||||
"ref": "v0.6",
|
"ref": "v0.7",
|
||||||
"repo": "xwayland-satellite",
|
"repo": "xwayland-satellite",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -1269,11 +1241,11 @@
|
|||||||
"xwayland-satellite-unstable": {
|
"xwayland-satellite-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751228685,
|
"lastModified": 1757179758,
|
||||||
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
|
"narHash": "sha256-TIvyWzRt1miQj6Cf5Wy8Qz43XIZX7c4vTVwRLAT5S4Y=",
|
||||||
"owner": "Supreeeme",
|
"owner": "Supreeeme",
|
||||||
"repo": "xwayland-satellite",
|
"repo": "xwayland-satellite",
|
||||||
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
|
"rev": "970728d0d9d1eada342bb8860af214b601139e58",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1290,11 +1262,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752164817,
|
"lastModified": 1757813809,
|
||||||
"narHash": "sha256-LJFIx27IOUowLsJn5wci9mHZ4CesJsiAivQWDjnZPCc=",
|
"narHash": "sha256-ipvcjWHEEAH/sm0j4u+P9lGLvnU/aX69MWbYkvUilqE=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "9193992c4c2c4349b4280ec2b49648cae208fe63",
|
"rev": "291a0b6d653c46d282822d9063442b7799e1fd1f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
46
flake.nix
46
flake.nix
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Nixpkgs
|
# 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-stable.url = "github:nixos/nixpkgs/release-25.05";
|
||||||
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
||||||
# nixpkgs.follows = "nixpkgs-stable";
|
# nixpkgs.follows = "nixpkgs-stable";
|
||||||
@@ -13,8 +13,9 @@
|
|||||||
# Nyxpkgs
|
# Nyxpkgs
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
|
|
||||||
# SOPS
|
# TODO: sops-nix: remove pr patch once merged
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
# https://github.com/Mic92/sops-nix/pull/779
|
||||||
|
sops-nix.url = "github:Mic92/sops-nix/pull/779/merge";
|
||||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# Home manager
|
# Home manager
|
||||||
@@ -24,16 +25,8 @@
|
|||||||
# Impermanence
|
# Impermanence
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
impermanence.url = "github:nix-community/impermanence";
|
||||||
|
|
||||||
# NUR
|
|
||||||
nur.url = "github:nix-community/NUR";
|
|
||||||
|
|
||||||
# Niri
|
# Niri
|
||||||
niri.url = "github:sodiboo/niri-flake";
|
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.url = "github:Bali10050/Darkly";
|
||||||
darkly.inputs.nixpkgs.follows = "nixpkgs";
|
darkly.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -55,6 +48,9 @@
|
|||||||
zen.url = "github:0xc000022070/zen-browser-flake";
|
zen.url = "github:0xc000022070/zen-browser-flake";
|
||||||
zen.inputs.nixpkgs.follows = "nixpkgs";
|
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.url = "git+https://codeberg.org/amjoseph/infuse.nix";
|
||||||
infuse.flake = false;
|
infuse.flake = false;
|
||||||
|
|
||||||
@@ -71,10 +67,10 @@
|
|||||||
let
|
let
|
||||||
inherit (self) outputs;
|
inherit (self) outputs;
|
||||||
vars = import ./vars.nix;
|
vars = import ./vars.nix;
|
||||||
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
|
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
|
||||||
forAllHosts =
|
forAllHosts =
|
||||||
mkSystem:
|
mkSystem:
|
||||||
nixpkgs.lib.attrsets.mergeAttrsList (
|
lib.mergeAttrsList (
|
||||||
builtins.map (hostname: {
|
builtins.map (hostname: {
|
||||||
${hostname} = mkSystem hostname;
|
${hostname} = mkSystem hostname;
|
||||||
}) (builtins.attrNames (builtins.readDir ./config/hosts))
|
}) (builtins.attrNames (builtins.readDir ./config/hosts))
|
||||||
@@ -139,17 +135,6 @@
|
|||||||
darkly-qt5 = inputs.darkly.packages.${final.system}.darkly-qt5;
|
darkly-qt5 = inputs.darkly.packages.${final.system}.darkly-qt5;
|
||||||
darkly-qt6 = inputs.darkly.packages.${final.system}.darkly-qt6;
|
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: {
|
(final: prev: {
|
||||||
inherit lib;
|
inherit lib;
|
||||||
})
|
})
|
||||||
@@ -185,8 +170,16 @@
|
|||||||
outputs
|
outputs
|
||||||
hostname
|
hostname
|
||||||
;
|
;
|
||||||
sopsRoot = ./secrets;
|
secrets =
|
||||||
} // vars;
|
with lib.haumea;
|
||||||
|
load {
|
||||||
|
src = ./secrets;
|
||||||
|
loader = [
|
||||||
|
(matchers.always loaders.path)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// vars;
|
||||||
modules =
|
modules =
|
||||||
(lib.umport {
|
(lib.umport {
|
||||||
paths = [ ./modules ];
|
paths = [ ./modules ];
|
||||||
@@ -205,6 +198,7 @@
|
|||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
inputs.home-manager.nixosModules.default
|
inputs.home-manager.nixosModules.default
|
||||||
inputs.niri.nixosModules.niri
|
inputs.niri.nixosModules.niri
|
||||||
|
inputs.catppuccin.nixosModules.catppuccin
|
||||||
home
|
home
|
||||||
pkgsConf
|
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' = {
|
config' = {
|
||||||
my.cli.media = {
|
my.cli.media = {
|
||||||
cava.enable = true;
|
|
||||||
go-musicfox.enable = true;
|
go-musicfox.enable = true;
|
||||||
mpd.enable = true;
|
mpd.enable = true;
|
||||||
ffmpeg.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,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
lib.my.makeSwitch {
|
lib.my.makeSwitch {
|
||||||
@@ -19,7 +20,11 @@ lib.my.makeSwitch {
|
|||||||
playerctl
|
playerctl
|
||||||
go-musicfox
|
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;
|
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"
|
type "pipewire"
|
||||||
name "pipewire"
|
name "pipewire"
|
||||||
}
|
}
|
||||||
|
|
||||||
audio_output {
|
|
||||||
type "pulse"
|
|
||||||
name "pulseaudio"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ lib.my.makeSwitch {
|
|||||||
dnsutils
|
dnsutils
|
||||||
|
|
||||||
killall
|
killall
|
||||||
|
|
||||||
|
comma
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
@@ -80,6 +82,10 @@ lib.my.makeSwitch {
|
|||||||
enableAutoUpdates = true;
|
enableAutoUpdates = true;
|
||||||
settings.updates.auto_update = true;
|
settings.updates.auto_update = true;
|
||||||
};
|
};
|
||||||
|
programs.television = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ lib.my.makeSwitch {
|
|||||||
jj = {
|
jj = {
|
||||||
ignore_timeout = true;
|
ignore_timeout = true;
|
||||||
description = "The current jj status";
|
description = "The current jj status";
|
||||||
when = "jj root";
|
when = true;
|
||||||
symbol = " ";
|
|
||||||
command = ''
|
command = ''
|
||||||
jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '
|
jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '
|
||||||
separate(" ",
|
separate(" ",
|
||||||
|
" ",
|
||||||
change_id.shortest(4),
|
change_id.shortest(4),
|
||||||
bookmarks,
|
bookmarks,
|
||||||
"|",
|
"|",
|
||||||
@@ -64,19 +64,9 @@ lib.my.makeSwitch {
|
|||||||
"(no description set)",
|
"(no description set)",
|
||||||
) ++ raw_escape_sequence("\x1b[0m"),
|
) ++ 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_state.disabled = true;
|
||||||
git_commit.disabled = true;
|
git_commit.disabled = true;
|
||||||
@@ -88,7 +78,7 @@ lib.my.makeSwitch {
|
|||||||
};
|
};
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dotDir = ".config/zsh";
|
dotDir = "${config.my.home.xdg.configHome}/zsh";
|
||||||
history = {
|
history = {
|
||||||
path = "${stateHome}/zsh_history";
|
path = "${stateHome}/zsh_history";
|
||||||
ignorePatterns = [
|
ignorePatterns = [
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ lib.my.makeHomeProgramConfig {
|
|||||||
ui = {
|
ui = {
|
||||||
graph.style = "square";
|
graph.style = "square";
|
||||||
default-command = "status";
|
default-command = "status";
|
||||||
|
conflict-marker-style = "snapshot";
|
||||||
};
|
};
|
||||||
signing = {
|
signing = {
|
||||||
backend = "ssh";
|
backend = "ssh";
|
||||||
|
|||||||
@@ -26,31 +26,9 @@ lib.my.makeHomeProgramConfig {
|
|||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
vimdiffAlias = true;
|
vimdiffAlias = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
gcc
|
gcc # treesitter
|
||||||
gnumake
|
|
||||||
|
|
||||||
pyright
|
ripgrep # telescope
|
||||||
|
|
||||||
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
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,5 +4,3 @@ require("core.keymaps")
|
|||||||
require("langs.langs-setup")
|
require("langs.langs-setup")
|
||||||
|
|
||||||
require("plugins.plugins-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-pageup>", ":m '<-2<CR>gv=gv", opt)
|
||||||
keymap.set("v", "<S-pagedown>", ":m '>+1<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>nh", ":nohl<CR>", opt)
|
||||||
|
|
||||||
keymap.set("n", "<leader>sv", "<C-w>v", opt)
|
keymap.set("n", "<leader>sv", "<C-w>v", opt)
|
||||||
keymap.set("n", "<leader>sh", "<C-w>s", 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("v", ",", "<gv", opt)
|
keymap.set("v", ",", "<gv", opt)
|
||||||
|
|
||||||
keymap.set({ "n", "v" }, "<pageup>", "9k", opt)
|
keymap.set({ "n", "v" }, "<pageup>", "9k", opt)
|
||||||
keymap.set({ "n", "v" }, "<pagedown>", "9j", 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", "<pageup>", string.rep("<up>", 9), opt)
|
||||||
keymap.set("i", "<pagedown>", "<down><down><down><down><down><down><down><down><down>", opt)
|
keymap.set("i", "<pagedown>", string.rep("<down>", 9), opt)
|
||||||
|
|
||||||
keymap.set("n", "<leader>ww", ":w<CR>", opt)
|
keymap.set("n", "<leader>ww", ":w<CR>", opt)
|
||||||
keymap.set("n", "<leader>so", ":so<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-h>", ":BufferLineMovePrev<CR>", opt)
|
||||||
keymap.set("n", "<A-l>", ":BufferLineMoveNext<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
|
-- Neovide config
|
||||||
if vim.g.neovide then
|
if vim.g.neovide then
|
||||||
keymap.set("v", "<C-C>", '"+y', opt)
|
keymap.set("v", "<C-C>", '"+y', opt)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ local servers = {
|
|||||||
"cssls",
|
"cssls",
|
||||||
"nixd",
|
"nixd",
|
||||||
"html",
|
"html",
|
||||||
|
"java_language_server",
|
||||||
}
|
}
|
||||||
|
|
||||||
local extra_config = {
|
local extra_config = {
|
||||||
@@ -35,7 +36,7 @@ local extra_config = {
|
|||||||
},
|
},
|
||||||
rust_analyzer = {
|
rust_analyzer = {
|
||||||
settings = {
|
settings = {
|
||||||
rust_analyzer = {
|
["rust-analyzer"] = {
|
||||||
check = {
|
check = {
|
||||||
command = "clippy",
|
command = "clippy",
|
||||||
},
|
},
|
||||||
@@ -73,7 +74,6 @@ capabilities.textDocument.foldingRange = {
|
|||||||
dynamicRegistration = false,
|
dynamicRegistration = false,
|
||||||
lineFoldingOnly = true,
|
lineFoldingOnly = true,
|
||||||
}
|
}
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
for _, server in ipairs(servers) do
|
for _, server in ipairs(servers) do
|
||||||
local extra = extra_config[server] or {}
|
local extra = extra_config[server] or {}
|
||||||
local config = {
|
local config = {
|
||||||
@@ -82,5 +82,6 @@ for _, server in ipairs(servers) do
|
|||||||
for k, v in pairs(extra) do
|
for k, v in pairs(extra) do
|
||||||
config[k] = v
|
config[k] = v
|
||||||
end
|
end
|
||||||
lspconfig[server].setup(config)
|
vim.lsp.config(server, config)
|
||||||
|
vim.lsp.enable(server)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ lib.my.makeSwitch {
|
|||||||
python.enable = true;
|
python.enable = true;
|
||||||
rust.enable = true;
|
rust.enable = true;
|
||||||
lua.enable = true;
|
lua.enable = true;
|
||||||
|
java.enable = true;
|
||||||
qml.enable = true;
|
qml.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ lib.my.makeHomePackageConfig {
|
|||||||
"go"
|
"go"
|
||||||
];
|
];
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
|
my.home.home.packages = with pkgs; [
|
||||||
|
gotools
|
||||||
|
gopls
|
||||||
|
];
|
||||||
my.persist.homeDirs = [
|
my.persist.homeDirs = [
|
||||||
"go"
|
"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 = {
|
my.home = {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nodejs
|
nodejs
|
||||||
nodePackages.npm
|
|
||||||
|
|
||||||
typescript
|
typescript
|
||||||
|
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
vue-language-server
|
||||||
];
|
];
|
||||||
home.file.".npmrc".text = ''
|
home.file.".npmrc".text = ''
|
||||||
prefix = ''${HOME}/.npm-global
|
prefix = ''${HOME}/.npm-global
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ lib.my.makeSwitch {
|
|||||||
config' = {
|
config' = {
|
||||||
my.home.home.packages = with pkgs; [
|
my.home.home.packages = with pkgs; [
|
||||||
luajit
|
luajit
|
||||||
|
stylua
|
||||||
|
lua-language-server
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ lib.my.makeHomePackageConfig {
|
|||||||
extraConfig = {
|
extraConfig = {
|
||||||
my.home.home.packages = with pkgs; [
|
my.home.home.packages = with pkgs; [
|
||||||
uv
|
uv
|
||||||
|
pyright
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,11 @@ lib.my.makeSwitch {
|
|||||||
"rust-src"
|
"rust-src"
|
||||||
"rustc"
|
"rustc"
|
||||||
"rustfmt"
|
"rustfmt"
|
||||||
|
"rust-analyzer"
|
||||||
])
|
])
|
||||||
evcxr # rust repl
|
evcxr # rust repl
|
||||||
|
|
||||||
|
pest-ide-tools
|
||||||
];
|
];
|
||||||
home.file.".cargo/config.toml".text = ''
|
home.file.".cargo/config.toml".text = ''
|
||||||
[source.crates-io]
|
[source.crates-io]
|
||||||
@@ -34,6 +37,9 @@ lib.my.makeSwitch {
|
|||||||
[net]
|
[net]
|
||||||
git-fetch-with-cli = true
|
git-fetch-with-cli = true
|
||||||
'';
|
'';
|
||||||
|
programs.zsh.initContent = lib.mkAfter ''
|
||||||
|
export PATH=$PATH:$HOME/.cargo/bin
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
my.persist.homeDirs = [
|
my.persist.homeDirs = [
|
||||||
".cargo"
|
".cargo"
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ lib.my.makeSwitch {
|
|||||||
terminal.all.enable = true;
|
terminal.all.enable = true;
|
||||||
wm.all.enable = true;
|
wm.all.enable = true;
|
||||||
style.enable = true;
|
style.enable = true;
|
||||||
quickshell.enable = true;
|
|
||||||
wine.enable = true;
|
wine.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ lib.my.makeSwitch {
|
|||||||
config' = {
|
config' = {
|
||||||
my.desktop.browser = {
|
my.desktop.browser = {
|
||||||
firefox.enable = true;
|
firefox.enable = true;
|
||||||
librewolf.enable = true;
|
|
||||||
chromium.enable = true;
|
chromium.enable = true;
|
||||||
zen.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,18 +13,18 @@ lib.my.makeSwitch {
|
|||||||
"minecraft"
|
"minecraft"
|
||||||
];
|
];
|
||||||
config' = {
|
config' = {
|
||||||
my.home.home.packages = with pkgs; [
|
my.home.home.packages = [
|
||||||
hmcl
|
(pkgs.hmcl.overrideAttrs {
|
||||||
|
postFixup = ''
|
||||||
openjdk21
|
substituteInPlace $out/share/applications/HMCL.desktop --replace-fail 'Exec=hmcl' 'Exec=sh -c "cd ~/.local/share/hmcl; hmcl"'
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
pkgs.xmcl
|
||||||
];
|
];
|
||||||
|
|
||||||
my.persist.homeDirs = [
|
my.persist.homeDirs = [
|
||||||
".minecraft"
|
".minecraft"
|
||||||
".local/share/hmcl"
|
".local/share/hmcl"
|
||||||
];
|
];
|
||||||
my.persist.homeFiles = [
|
|
||||||
".hmcl.json"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
"style"
|
||||||
];
|
];
|
||||||
config' = {
|
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 = {
|
my.home = {
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -35,13 +48,17 @@ lib.my.makeSwitch {
|
|||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = {
|
theme = {
|
||||||
package = pkgs.mono-gtk-theme;
|
package = pkgs.gnome-themes-extra;
|
||||||
name = "MonoThemeDark";
|
name = "Adwaita";
|
||||||
};
|
};
|
||||||
gtk2 = {
|
gtk2 = {
|
||||||
configLocation = "${config.my.home.xdg.configHome}/gtk-2.0/gtkrc";
|
configLocation = "${config.my.home.xdg.configHome}/gtk-2.0/gtkrc";
|
||||||
};
|
};
|
||||||
gtk3 = {
|
gtk3 = {
|
||||||
|
theme = {
|
||||||
|
package = pkgs.adw-gtk3;
|
||||||
|
name = "adw-gtk3";
|
||||||
|
};
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
gtk-decoration-layout = ":none";
|
gtk-decoration-layout = ":none";
|
||||||
gtk-application-prefer-dark-theme = 1;
|
gtk-application-prefer-dark-theme = 1;
|
||||||
@@ -64,6 +81,15 @@ lib.my.makeSwitch {
|
|||||||
];
|
];
|
||||||
platformTheme.name = "qtct";
|
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 {
|
lib.my.makeSwitch {
|
||||||
inherit config;
|
inherit config;
|
||||||
default = true;
|
|
||||||
optionName = "wine";
|
optionName = "wine";
|
||||||
optionPath = [
|
optionPath = [
|
||||||
"desktop"
|
"desktop"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
input = {
|
input = {
|
||||||
focus-follows-mouse = {
|
focus-follows-mouse = {
|
||||||
enable = true;
|
enable = true;
|
||||||
max-scroll-amount = "40%";
|
max-scroll-amount = "0%";
|
||||||
};
|
};
|
||||||
workspace-auto-back-and-forth = true;
|
workspace-auto-back-and-forth = true;
|
||||||
};
|
};
|
||||||
@@ -32,6 +32,10 @@
|
|||||||
relative-to = "workspace-view";
|
relative-to = "workspace-view";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
insert-hint = {
|
||||||
|
enable = true;
|
||||||
|
display.color = "rgba(42, 44, 54, 0.5)";
|
||||||
|
};
|
||||||
preset-column-widths = [
|
preset-column-widths = [
|
||||||
{ proportion = 0.33333; }
|
{ proportion = 0.33333; }
|
||||||
{ proportion = 0.4; }
|
{ proportion = 0.4; }
|
||||||
@@ -39,7 +43,7 @@
|
|||||||
{ proportion = 0.6; }
|
{ proportion = 0.6; }
|
||||||
{ proportion = 0.66667; }
|
{ proportion = 0.66667; }
|
||||||
];
|
];
|
||||||
default-column-width.proportion = 0.4;
|
default-column-width.proportion = 1.0;
|
||||||
background-color = "transparent";
|
background-color = "transparent";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -63,6 +67,10 @@
|
|||||||
matches = [ { namespace = "^wallpaper$"; } ];
|
matches = [ { namespace = "^wallpaper$"; } ];
|
||||||
place-within-backdrop = true;
|
place-within-backdrop = true;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
matches = [ { namespace = "^waybar$"; } ];
|
||||||
|
opacity = 0.99;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
overview.workspace-shadow.enable = false;
|
overview.workspace-shadow.enable = false;
|
||||||
|
|
||||||
@@ -82,7 +90,7 @@
|
|||||||
opacity = 0.8;
|
opacity = 0.8;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
matches = [ { app-id = "org.gnome.Nautilus|nemo"; } ];
|
matches = [ { app-id = "org.gnome.Nautilus"; } ];
|
||||||
opacity = 0.6;
|
opacity = 0.6;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -136,7 +144,7 @@
|
|||||||
"kitty"
|
"kitty"
|
||||||
];
|
];
|
||||||
"Mod+G".action.spawn = [ "zen-beta" ];
|
"Mod+G".action.spawn = [ "zen-beta" ];
|
||||||
"Mod+E".action.spawn = [ "nemo" ];
|
"Mod+E".action.spawn = [ "nautilus" ];
|
||||||
"Mod+R".action.spawn = [
|
"Mod+R".action.spawn = [
|
||||||
"sh"
|
"sh"
|
||||||
"-c"
|
"-c"
|
||||||
@@ -151,17 +159,19 @@
|
|||||||
"XF86AudioRaiseVolume" = {
|
"XF86AudioRaiseVolume" = {
|
||||||
allow-when-locked = true;
|
allow-when-locked = true;
|
||||||
action.spawn = [
|
action.spawn = [
|
||||||
"pamixer"
|
"wpctl"
|
||||||
"-i"
|
"set-volume"
|
||||||
"2"
|
"@DEFAULT_SINK@"
|
||||||
|
"2%+"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"XF86AudioLowerVolume" = {
|
"XF86AudioLowerVolume" = {
|
||||||
allow-when-locked = true;
|
allow-when-locked = true;
|
||||||
action.spawn = [
|
action.spawn = [
|
||||||
"pamixer"
|
"wpctl"
|
||||||
"-d"
|
"set-volume"
|
||||||
"2"
|
"@DEFAULT_SINK@"
|
||||||
|
"2%-"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"XF86AudioMute" = {
|
"XF86AudioMute" = {
|
||||||
@@ -173,7 +183,7 @@
|
|||||||
"play-pause"
|
"play-pause"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"Mod+XF86AudioRaiseVolume" = {
|
"Super+XF86AudioRaiseVolume" = {
|
||||||
allow-when-locked = true;
|
allow-when-locked = true;
|
||||||
action.spawn = [
|
action.spawn = [
|
||||||
"playerctl"
|
"playerctl"
|
||||||
@@ -182,7 +192,7 @@
|
|||||||
"next"
|
"next"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"Mod+XF86AudioLowerVolume" = {
|
"Super+XF86AudioLowerVolume" = {
|
||||||
allow-when-locked = true;
|
allow-when-locked = true;
|
||||||
action.spawn = [
|
action.spawn = [
|
||||||
"playerctl"
|
"playerctl"
|
||||||
@@ -192,6 +202,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+Q".action = close-window;
|
||||||
|
|
||||||
"Mod+Left".action = focus-column-left;
|
"Mod+Left".action = focus-column-left;
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ args@{
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
username,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -28,11 +27,7 @@ in
|
|||||||
niri = {
|
niri = {
|
||||||
default = [
|
default = [
|
||||||
"gnome"
|
"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.RemoteDesktop" = [ "gnome" ];
|
||||||
"org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ];
|
"org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ];
|
||||||
"org.freedesktop.impl.portal.Screenshot" = [ "gnome" ];
|
"org.freedesktop.impl.portal.Screenshot" = [ "gnome" ];
|
||||||
@@ -40,33 +35,34 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraPortals = with pkgs; [
|
extraPortals = with pkgs; [
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-desktop-portal-gnome
|
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 = {
|
programs.niri = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkg;
|
package = pkg;
|
||||||
};
|
};
|
||||||
services.displayManager = {
|
services.displayManager = {
|
||||||
autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
user = username;
|
|
||||||
};
|
|
||||||
sddm = {
|
sddm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wayland.enable = true;
|
wayland.enable = true;
|
||||||
autoLogin.relogin = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
my.home = {
|
my.home = {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
xwayland-satellite-unstable
|
||||||
|
|
||||||
wlr-randr
|
wlr-randr
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
cliphist
|
cliphist
|
||||||
|
playerctl
|
||||||
|
brightnessctl
|
||||||
|
|
||||||
swaynotificationcenter
|
swaynotificationcenter
|
||||||
nemo-with-extensions
|
nautilus
|
||||||
xwayland-satellite-unstable
|
|
||||||
];
|
];
|
||||||
programs.wofi.enable = true;
|
programs.wofi.enable = true;
|
||||||
xdg.configFile."wofi" = {
|
xdg.configFile."wofi" = {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
_: {
|
_: {
|
||||||
layer = "top";
|
layer = "top";
|
||||||
position = "top";
|
position = "top";
|
||||||
mod = "dock";
|
|
||||||
exclusive = true;
|
exclusive = true;
|
||||||
passthrough = false;
|
passthrough = false;
|
||||||
gtk-layer-shell = true;
|
gtk-layer-shell = true;
|
||||||
@@ -19,8 +18,8 @@ _: {
|
|||||||
modules-right = [
|
modules-right = [
|
||||||
"custom/notification"
|
"custom/notification"
|
||||||
"tray"
|
"tray"
|
||||||
"pulseaudio"
|
"wireplumber"
|
||||||
"pulseaudio#microphone"
|
"wireplumber#source"
|
||||||
];
|
];
|
||||||
|
|
||||||
"niri/workspaces" = {
|
"niri/workspaces" = {
|
||||||
@@ -73,7 +72,6 @@ _: {
|
|||||||
stopped = "";
|
stopped = "";
|
||||||
};
|
};
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
toottip-format = "{status_icon} Musicfox {artist} - {album} - {title}";
|
|
||||||
on-scroll-up = "playerctl -p musicfox volume 0.05+";
|
on-scroll-up = "playerctl -p musicfox volume 0.05+";
|
||||||
on-scroll-down = "playerctl -p musicfox volume 0.05-";
|
on-scroll-down = "playerctl -p musicfox volume 0.05-";
|
||||||
};
|
};
|
||||||
@@ -81,37 +79,21 @@ _: {
|
|||||||
format = " {:%H:%M %m.%d}";
|
format = " {:%H:%M %m.%d}";
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
};
|
};
|
||||||
pulseaudio = {
|
wireplumber = {
|
||||||
format = "{icon} {volume}%";
|
format = " {volume}%";
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
format-muted = " Muted";
|
format-muted = " Muted";
|
||||||
on-click = "pamixer -t";
|
on-click = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
||||||
on-click-middle = "pavucontrol & disown";
|
on-click-middle = "pwvucontrol";
|
||||||
on-scroll-up = "pamixer -i 5";
|
|
||||||
on-scroll-down = "pamixer -d 5";
|
|
||||||
scroll-step = 5;
|
scroll-step = 5;
|
||||||
format-icons = {
|
|
||||||
headphone = "";
|
|
||||||
hands-free = "";
|
|
||||||
headset = "";
|
|
||||||
phone = "";
|
|
||||||
portable = "";
|
|
||||||
car = "";
|
|
||||||
default = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
"wireplumber#source" = {
|
||||||
"pulseaudio#microphone" = {
|
node-type = "Audio/Source";
|
||||||
format = "{format_source}";
|
format = " {volume}%";
|
||||||
tooltip = false;
|
tooltip = false;
|
||||||
format-source = " {volume}%";
|
format-muted = " Muted";
|
||||||
format-source-muted = " Muted";
|
on-click = "wpctl set-mute @DEFAULT_SOURCE@ toggle";
|
||||||
on-click = "pamixer --default-source -t";
|
on-click-middle = "pwvucontrol";
|
||||||
on-scroll-up = "pamixer --default-source -i 5";
|
|
||||||
on-scroll-down = "pamixer --default-source -d 5";
|
|
||||||
scroll-step = 5;
|
scroll-step = 5;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ tooltip * {
|
|||||||
#window,
|
#window,
|
||||||
#clock,
|
#clock,
|
||||||
#battery,
|
#battery,
|
||||||
#pulseaudio,
|
#wireplumber,
|
||||||
#network,
|
#network,
|
||||||
#workspaces,
|
#workspaces,
|
||||||
#taskbar,
|
#taskbar,
|
||||||
@@ -219,13 +219,13 @@ window#waybar.empty #window {
|
|||||||
border-right: 0;
|
border-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio {
|
#wireplumber {
|
||||||
color: #89b4fa;
|
color: #89b4fa;
|
||||||
border-right: 0px;
|
border-right: 0px;
|
||||||
border-radius: 10px 0px 0px 10px;
|
border-radius: 10px 0px 0px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio.microphone {
|
#wireplumber.source {
|
||||||
color: #cba6f7;
|
color: #cba6f7;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
border-left: 0px;
|
border-left: 0px;
|
||||||
@@ -238,10 +238,3 @@ window#waybar.empty #window {
|
|||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
border-left: 0px;
|
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;
|
cfg = config.my.autologin;
|
||||||
gettycfg = config.services.getty;
|
gettycfg = config.services.getty;
|
||||||
|
|
||||||
baseArgs =
|
baseArgs = [
|
||||||
[
|
|
||||||
"--login-program"
|
"--login-program"
|
||||||
"${gettycfg.loginProgram}"
|
"${gettycfg.loginProgram}"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ lib.my.makeSwitch {
|
|||||||
fcitx5 = {
|
fcitx5 = {
|
||||||
addons = with pkgs; [
|
addons = with pkgs; [
|
||||||
fcitx5-chinese-addons # fcitx5-mozc
|
fcitx5-chinese-addons # fcitx5-mozc
|
||||||
fluent-fcitx5
|
|
||||||
fcitx5-lightly
|
fcitx5-lightly
|
||||||
];
|
];
|
||||||
waylandFrontend = true;
|
waylandFrontend = true;
|
||||||
@@ -102,6 +101,99 @@ lib.my.makeSwitch {
|
|||||||
ignoreUserConfig = true;
|
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 = {
|
my.home.programs.niri.settings = {
|
||||||
binds."Mod+Space".action.spawn = [
|
binds."Mod+Space".action.spawn = [
|
||||||
"fcitx5-remote"
|
"fcitx5-remote"
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
secrets,
|
||||||
|
username,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
lib.my.makeSwitch {
|
lib.my.makeSwitch {
|
||||||
@@ -34,11 +36,9 @@ lib.my.makeSwitch {
|
|||||||
nix.settings = {
|
nix.settings = {
|
||||||
# Enable flakes and new 'nix' command
|
# Enable flakes and new 'nix' command
|
||||||
experimental-features = "nix-command flakes";
|
experimental-features = "nix-command flakes";
|
||||||
# Deduplicate and optimize nix store
|
|
||||||
auto-optimise-store = true;
|
|
||||||
substituters = [
|
substituters = [
|
||||||
"https://mirror.sjtu.edu.cn/nix-channels/store"
|
|
||||||
"https://mirrors.sjtug.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://mirrors.ustc.edu.cn/nix-channels/store"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://cache.nixos.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
|
# uncomment to enable auto gc
|
||||||
/*
|
/*
|
||||||
nix.gc = {
|
nix.gc = {
|
||||||
|
|||||||
@@ -14,25 +14,21 @@ in
|
|||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
};
|
};
|
||||||
sshKeyPath = lib.mkOption {
|
sshKeyFile = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "${config.my.persist.location}/home/${username}/.ssh/id_ed25519";
|
default = "${config.my.persist.location}/home/${username}/.ssh/id_ed25519";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
sops.age.sshKeyPaths = [
|
sops.age.sshKeyFile = cfg.sshKeyFile;
|
||||||
cfg.sshKeyPath
|
|
||||||
];
|
|
||||||
users.users.${username}.extraGroups = [ "keys" ];
|
users.users.${username}.extraGroups = [ "keys" ];
|
||||||
environment.variables.SOPS_AGE_KEY_FILE = "/run/secrets.d/age-keys.txt";
|
|
||||||
my.home = {
|
my.home = {
|
||||||
sops.age.sshKeyPaths = [
|
sops.age.sshKeyFile = cfg.sshKeyFile;
|
||||||
cfg.sshKeyPath
|
|
||||||
];
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.sops
|
pkgs.sops
|
||||||
];
|
];
|
||||||
|
home.sessionVariables.SOPS_AGE_SSH_PRIVATE_KEY_FILE = cfg.sshKeyFile;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
username,
|
username,
|
||||||
userdesc,
|
userdesc,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
lib.my.makeSwitch {
|
lib.my.makeSwitch {
|
||||||
@@ -16,7 +16,7 @@ lib.my.makeSwitch {
|
|||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
sops.secrets.imxyy-nix-hashed-password = {
|
sops.secrets.imxyy-nix-hashed-password = {
|
||||||
sopsFile = sopsRoot + /imxyy-nix-hashed-password.txt;
|
sopsFile = secrets.imxyy-nix-hashed-password;
|
||||||
format = "binary";
|
format = "binary";
|
||||||
neededForUsers = true;
|
neededForUsers = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -220,11 +220,14 @@ in
|
|||||||
(lib.mkIf cfg.enable {
|
(lib.mkIf cfg.enable {
|
||||||
virtualisation.libvirtd = {
|
virtualisation.libvirtd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
qemu.verbatimConfig = ''
|
qemu = {
|
||||||
|
package = pkgs.qemu_kvm;
|
||||||
|
verbatimConfig = ''
|
||||||
dynamic_ownership = 0
|
dynamic_ownership = 0
|
||||||
remember_owner = 0
|
remember_owner = 0
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
};
|
||||||
programs.virt-manager.enable = true;
|
programs.virt-manager.enable = true;
|
||||||
users.users.${username}.extraGroups = [ "libvirtd" ];
|
users.users.${username}.extraGroups = [ "libvirtd" ];
|
||||||
environment.systemPackages = with pkgs; [ virglrenderer ];
|
environment.systemPackages = with pkgs; [ virglrenderer ];
|
||||||
|
|||||||
@@ -53,10 +53,6 @@ in
|
|||||||
"file://${homedir}/Videos 视频"
|
"file://${homedir}/Videos 视频"
|
||||||
"file://${homedir}/Music 音乐"
|
"file://${homedir}/Music 音乐"
|
||||||
"file://${homedir}/workspace 工作空间"
|
"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 ];
|
cage.__output.patches.__append = [ ./cage-specify-output-name.patch ];
|
||||||
matrix-synapse.__assign = final.stable.matrix-synapse;
|
matrix-synapse.__assign = final.stable.matrix-synapse;
|
||||||
bottles.__input.removeWarningPopup.__assign = true;
|
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: {
|
sing-box.__assign = prev.sing-box.overrideAttrs (finalAttrs: {
|
||||||
version = "1.11.14";
|
version = "1.11.14";
|
||||||
@@ -64,6 +59,4 @@
|
|||||||
config.allowUnfree = true;
|
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,7 @@ stdenvNoCC.mkDerivation {
|
|||||||
owner = "witalihirsch";
|
owner = "witalihirsch";
|
||||||
repo = "Mono-gtk-theme";
|
repo = "Mono-gtk-theme";
|
||||||
rev = "89fa83a14b4e26c5b8fc4dbfa5558a7df704d5a4";
|
rev = "89fa83a14b4e26c5b8fc4dbfa5558a7df704d5a4";
|
||||||
sha256 = "sha256-NaZgOOo5VVTlEand3qWryZ5ceNmyHaEt0aeT7j/KwvE=";
|
hash = "sha256-NaZgOOo5VVTlEand3qWryZ5ceNmyHaEt0aeT7j/KwvE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
phases = [
|
phases = [
|
||||||
|
|||||||
@@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -2,12 +2,12 @@
|
|||||||
stdenvNoCC,
|
stdenvNoCC,
|
||||||
fetchurl,
|
fetchurl,
|
||||||
}:
|
}:
|
||||||
stdenvNoCC.mkDerivation rec {
|
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
pname = "wps-office-fonts";
|
pname = "wps-office-fonts";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/Universebenzene/wps-office-fonts/archive/refs/tags/v${version}.tar.gz";
|
url = "https://github.com/Universebenzene/wps-office-fonts/archive/refs/tags/v${finalAttrs.version}.tar.gz";
|
||||||
sha256 = "db01fc07324115b181cb06f50dfe09fd17feee132c46423ee70b260830211224";
|
sha256 = "db01fc07324115b181cb06f50dfe09fd17feee132c46423ee70b260830211224";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -29,4 +29,4 @@ stdenvNoCC.mkDerivation rec {
|
|||||||
description = "The wps-office-fonts package contains Founder Chinese fonts";
|
description = "The wps-office-fonts package contains Founder Chinese fonts";
|
||||||
homepage = "https://github.com/Universebenzene/wps-office-fonts";
|
homepage = "https://github.com/Universebenzene/wps-office-fonts";
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -3,20 +3,16 @@
|
|||||||
"sops": {
|
"sops": {
|
||||||
"age": [
|
"age": [
|
||||||
{
|
{
|
||||||
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO",
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6Rkd2QndUdGxqV1BHOXh2\neXp5MTM0c3FkS0NnNzIvZ2NFUi93bEJHS3hBCkExVjZVUjFoZ3V3TGFVWHNZUmJw\nSzMvdVpuL05QYXNaQ0FQcElnZHhsYVkKLS0tIHNSVHdhaHZYZ0lodzhTODkwQnNP\nQ0RJOXJvSkh2akRRc0NhSUVmNUU0dDQKtVlaZs3yTJUWP802nfaX5ql5WKvn13Eu\n2Cn/jS/HSB5muU89rsJqe0mSZlOjrqyErtiF3hVDFOqODEkFb0EmsQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSBDN0Va\nSlREWkhkc2dWZTBzWnlRWE1lUzh1eVJ3dXN5TWR0Z2J4aWMrbHdRClJidG9wMHMy\nMldWbTJLN2tjVlRlQ0QyekRibDRRbWFsNlZnZDFUR2dMemsKLS0tIHFPU28ya0FB\nOUVxMnBBZUp6MG1HTFhWRklTbFB5aGlTTGhvOEFOOVJHVkkKSEqFAPJi3FgDAIl+\n8oB7Xnlj32CO6XjDOb07ZWrTCSTEXnu+ICvW10yJPlkKBw01xhEkMUBAPaYWIiUs\n/I4ziA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB28jpN+h5euh3NtdN+A+EtqgIatC22e4i1TPTioKire",
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTbUtrV2oyMHVvR3RjRDVH\nV2tHajZZT1h6UzMvVVNIbFkyQnJ5Mm1raUFJCitjRllhbU53ZUdjMXJoNk5lc3du\nM3lDSFFXSTZmOVI5dS9sOS84RVY2dTQKLS0tIFVPL3g0NTBDTnI3WWlOMWptL1Vn\nSnZYUHpxZmp1ckYxYWxERFJQQXZFTjAKezXPfvGON1KJAnH4fJ5y1otrMLQubR08\nLiJFBpGIft6YKWQq/Nc9Fnkar8WasUneGGR6a6A+xx7eEibrEapJuQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHJNY1d1ZyBNenJm\nS3BNZ3lucllPUWM0ZnJGajhpU3EzRFhNVVNlWHhPb1FueU9ZTEVFCndGNFY2ekpK\nZGxaZlhCbExGbWxMVUJWWFljdTZaZTdhZHJtYWc3YlF5eXMKLS0tIGM2amVwd0xH\nVXF5WS84NjVoN2VEODBwZG5adjB3TzdkbkZUU3lBMHpQVEkKEZ8O2V2W6gN1/v1S\n2FaNPMEyIBPrB4B2cEFvFi0awKyZcirxIcE1nlqkEo2urXhV42QqIvJbeF88pSuT\njY8ZEg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
"recipient": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/",
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2MDFId3R4dGJiVDFETlNj\nSmg5QzRabm1odytXVk83cWVTclRCN3k2MGt3CnBLYlMxMlF5a1lTZCs1cXdjT3Nz\neGwvQTJZdG5SMWVVbmFXbWRGWEZ2aUUKLS0tIEpvSTBJVkRCNjBpNEx1bzJqTWdB\nK0VaL3JpeTB4T3FSYTdmaEozQklFWmMKYHga2PwW6ZdHrSczVviS/Z0utfAF9Z+J\nzGctQj+Xo748ItLYnIOCFST4BltlPo8SD0fzlaEnR5bTJuWNDnA2TA==\n-----END AGE ENCRYPTED FILE-----\n"
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFhGYmtrZyBSbDkv\nWE8raHdHNVJpZTJFam5ZOTJWL3Zzb0ZjYlV4R21MeFBUaEpqVWpZCnVtZmppc09R\nNFhHUUs5YkdITFoyS1UrVy9nOFgzVkRTRTJzalhxSnBJdUEKLS0tIGZYUjdpblRi\nUWZiZ0oyQjF0dVQwbmJjbzdhZUJPeEpTbnNUWTFHT1BVdmMK1Hmu1aWvvgTZo/ea\nIKeEWeXR3/j2Xi4w3JIy/rjrYGdA6oVfEWvib0qkGM9D4/UcOVkBc7+rrfAwTmL+\nc6988A==\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"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"lastmodified": "2025-07-12T12:32:11Z",
|
"lastmodified": "2025-07-12T12:32:11Z",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
17
secrets/efl-tuwunel.env
Normal file
17
secrets/efl-tuwunel.env
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
TUWUNEL_DATABASE_PATH=ENC[AES256_GCM,data:PDrE2yQT59HJvKd97nJumQ==,iv:KkNRd/rblupTE3PyV39nSYmapd/dCTvTW0RmlIAeTTI=,tag:uEx2tENmJrsjVNLUFqtXTg==,type:str]
|
||||||
|
TUWUNEL_MAX_REQUEST_SIZE=ENC[AES256_GCM,data:3yJltQjTuRA=,iv:bhHWY7/IeleHYZyqSUluCnQgM8kb0rgBa4m+msu1BvU=,tag:gjY3u9v8yrnmTObtYDwnfg==,type:str]
|
||||||
|
TUWUNEL_ALLOW_REGISTRATION=ENC[AES256_GCM,data:m32CHg==,iv:SW+9oZLVmd8Sf24NLkxagy+sOsK5ysTc8JHdomu6Ft4=,tag:ATTLG2dezibrAzyQuQrbYw==,type:str]
|
||||||
|
TUWUNEL_REGISTRATION_TOKEN=ENC[AES256_GCM,data:IQgfTI/aLhcS/7/VCVN0KgdMwv43845ueHGREmYqjtpKTybb2qWLDdPAiVrj,iv:huwZXpY7+aDNxOINLlPaCaUiptAN5tOJ068ASItGafA=,tag:UBkDgWV9CdE2LObnyWk5ng==,type:str]
|
||||||
|
TUWUNEL_ALLOW_FEDERATION=ENC[AES256_GCM,data:4mKscA==,iv:iJhWpcEvJ0n2wVPLNntOcSYyKO/wvQfXdd8WLuU8ets=,tag:ywbpkpnfQTy+zuSGat8dEQ==,type:str]
|
||||||
|
TUWUNEL_TRUSTED_SERVERS=ENC[AES256_GCM,data:xlYagLxkJ4jPNAWEX+W5fq/io/eC7Y3DW1RM,iv:pjApkV2hCpnMr2acEw4P+kWDEjfx0yRQXVn8w9RGa5s=,tag:QnmhL4WK6K+Q5jBACEzuAA==,type:str]
|
||||||
|
TUWUNEL_ALLOW_OUTGOING_PRESENCE=ENC[AES256_GCM,data:7iQU4TA=,iv:ljwU5yt2Qj7zWI08JnwT/E4mheRloy3KE0RMtQAF2IE=,tag:Icw5hay9cRfs/SEDMNfmxQ==,type:str]
|
||||||
|
sops_age__list_0__map_enc=-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IDltTWRrUSAwVjFh\naTdScGZia1BGSWZBUWkyellzMzlkbDkxLzhRMW5Pdm5WdXdZMm44CmNrMkRNRERH\nWTVJZUxWcGxSQ2xzMjRVclBaTHdNLzF4WE5LUlpxZW9GTjAKLS0tICtzNitCSUJu\nbzAza0kzNzlaUFdmcDdaeis5ZVlSOXd1SW5GZW5rdXJjSWsK9LuRScqfr/EcHcEI\nykvGH/ATkza41/ilj0tRyPMZN7AhrJcf5eqEFP5ixd/p9oTecCN5jbaekZJ3bGjL\n2MXgJQ==\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+IHNzaC1lZDI1NTE5IHJNY1d1ZyBBUThQ\nNVJoY1RyazJDaTlQRVdEdDd1UVpBNlVrclFrU0NjenlubEF1STB3CjhIM01uVFhp\ncWJQdnFqbUtVMENOWVlwVVhyS1pHRmk5b2tJRHZlN3JEdzQKLS0tIERTZWZWcWR5\nUVVJcEdkOWpFaWRDa3FNcGVNRjNyQkJSRWo0VXVtams0OHcK0SEYcPiFfxb55Pua\nt/tl6Y+b+tH3s58Evt1oQs6JkwqtnwF74UHYEDNKRcZxNemVVp5D8/gKm85k6bwT\nlUWRRg==\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+IHNzaC1lZDI1NTE5IFhGYmtrZyBoaGdD\nWXZTL2puRzFCSjlIZ1J0Q0ZYMXhHYjA2QkI4dmhtT3pTOXdLMEFFCktnaExmY1BY\nYWVZREg1bXNCR0xzaHVrZnJNUVI4V3V0Z1NXSU9VOWhoMTgKLS0tIHduZU95VVBM\nRGhmc0ZBaUF6SWlYZzVBQjgyRkxJbUQ5MU1uVVdlTVZjQ0EKl1Dh0+uNZgG2TUBw\nsKMW2ryk4WtGduPG7OzlaGAGABSeHfe3qy3nGmNPVm5e+7nicB0IFgR0uL29rU9c\nj/PHlQ==\n-----END AGE ENCRYPTED FILE-----\n
|
||||||
|
sops_age__list_2__map_recipient=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/
|
||||||
|
sops_lastmodified=2025-09-14T00:38:59Z
|
||||||
|
sops_mac=ENC[AES256_GCM,data:oA5ZHVIW00lIawVu1wgwfDr+DLuEpRA65VuVtO+8St+gOmob66tfNCSmlj8zvEW7Z8HpxHxEyq4XVuLn2Ia9Uvj9eXfVeqmsguIlK3KJ334G1E8VTRO+Nxgdz6itMFjwf1bDw3GA+zeQZ+VFwxUhU4HqMggsqFuPtP2BgnK67ME=,iv:+ksYve10uG2JUqDIk5PJjPIxeYLL9Re2+IGPeV1q1Gc=,tag:AUyZB7OUBnE+6cxVDZG6Cg==,type:str]
|
||||||
|
sops_unencrypted_suffix=_unencrypted
|
||||||
|
sops_version=3.10.2
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user