Compare commits
21 Commits
quickshell
...
dd8afc8954
| Author | SHA1 | Date | |
|---|---|---|---|
|
dd8afc8954
|
|||
|
e69600cc77
|
|||
|
17ef457181
|
|||
|
a39b966a91
|
|||
|
a0b044dbc9
|
|||
|
94764e7a5a
|
|||
|
fef786d317
|
|||
|
8ca0a6cc0f
|
|||
|
3263d72b59
|
|||
|
1c7e5b9f05
|
|||
|
1da34bf704
|
|||
|
88107f9fe7
|
|||
|
5d1f622782
|
|||
|
0ed99176ad
|
|||
|
4dddb0e803
|
|||
|
4353f9da34
|
|||
| 66e772ce62 | |||
| 422259838b | |||
| 390e75ce8e | |||
| a3b627359b | |||
| be75d12e9c |
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
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 = {
|
||||||
|
|||||||
@@ -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,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -132,16 +132,18 @@
|
|||||||
"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"
|
||||||
];
|
];
|
||||||
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 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 = {
|
||||||
@@ -150,7 +152,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 = "";
|
||||||
};
|
};
|
||||||
@@ -162,7 +164,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 = [
|
||||||
@@ -407,6 +409,21 @@
|
|||||||
customDomains = [ "immich.imxyy.top" ];
|
customDomains = [ "immich.imxyy.top" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "memo-http";
|
||||||
|
type = "http";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 80;
|
||||||
|
customDomains = [ "memo.imxyy.top" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "memo-https";
|
||||||
|
type = "https";
|
||||||
|
localIP = "127.0.0.1";
|
||||||
|
localPort = 443;
|
||||||
|
customDomains = [ "memo.imxyy.top" ];
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "minecraft";
|
name = "minecraft";
|
||||||
type = "tcp";
|
type = "tcp";
|
||||||
@@ -449,12 +466,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 +475,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 +483,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 +494,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 +512,6 @@
|
|||||||
"1616"
|
"1616"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
|
||||||
services.caddy.virtualHosts."headscale.imxyy.top" = {
|
services.caddy.virtualHosts."headscale.imxyy.top" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
reverse_proxy :8080 {
|
reverse_proxy :8080 {
|
||||||
@@ -571,6 +576,7 @@
|
|||||||
"ai"
|
"ai"
|
||||||
"sy"
|
"sy"
|
||||||
"minio"
|
"minio"
|
||||||
|
"immich"
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
username,
|
username,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
environment.variables.NIX_REMOTE = "daemon";
|
environment.variables.NIX_REMOTE = "daemon";
|
||||||
|
|
||||||
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,21 +1,20 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
sopsRoot,
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
flatnote-env = {
|
flatnote-env = {
|
||||||
sopsFile = sopsRoot + /flatnote.env;
|
sopsFile = secrets.flatnote;
|
||||||
format = "dotenv";
|
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 = {
|
flatnotes = {
|
||||||
image = "dullage/flatnotes:latest";
|
image = "dullage/flatnotes:latest";
|
||||||
volumes = [
|
volumes = [
|
||||||
@@ -44,6 +43,12 @@
|
|||||||
];
|
];
|
||||||
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 = {
|
||||||
@@ -57,5 +62,10 @@
|
|||||||
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 = [
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
username,
|
username,
|
||||||
@@ -38,6 +37,21 @@
|
|||||||
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 +59,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;
|
||||||
|
|
||||||
@@ -92,15 +105,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;
|
||||||
|
|||||||
@@ -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,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -134,7 +133,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 +153,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" ];
|
||||||
|
|||||||
@@ -91,8 +91,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 = {
|
||||||
|
|||||||
@@ -2,8 +2,7 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
sopsRoot,
|
secrets,
|
||||||
username,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -86,7 +85,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 +94,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 +106,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 +114,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
|
||||||
@@ -225,7 +225,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 = {
|
||||||
|
|||||||
165
flake.lock
generated
165
flake.lock
generated
@@ -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": {
|
||||||
@@ -107,11 +107,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752141190,
|
"lastModified": 1753452257,
|
||||||
"narHash": "sha256-RHNq77Z84BtLTwyRtrBffm5V9006Dqw4vh3vrvULlxM=",
|
"narHash": "sha256-Q8r+/655196nmMd4t93SxNdZ/RLP8UuS7Lml9ymOPXc=",
|
||||||
"owner": "chaotic-cx",
|
"owner": "chaotic-cx",
|
||||||
"repo": "nyx",
|
"repo": "nyx",
|
||||||
"rev": "ef0794b8e94eea166407141f7e92da75f6df925a",
|
"rev": "e8e28d053b45299a4aef1da2e9d5d1e742025c12",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -128,11 +128,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750940343,
|
"lastModified": 1753219021,
|
||||||
"narHash": "sha256-qmc/jreM09MOwQ8dOa/+yyh99rU7TowSqo8L33VHfto=",
|
"narHash": "sha256-wYL0oMGwFPbhYT0G2NcR4ud00TI06TEWOrvPpN4eNl0=",
|
||||||
"owner": "Bali10050",
|
"owner": "Bali10050",
|
||||||
"repo": "Darkly",
|
"repo": "Darkly",
|
||||||
"rev": "77770c8d3c35f7ad39da2c57122c360096df0aac",
|
"rev": "79ec260ff2a9af1f4de10e670c75b31b7fbcd5da",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -171,11 +171,11 @@
|
|||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752129689,
|
"lastModified": 1753425938,
|
||||||
"narHash": "sha256-0Xq5tZbvgZvxbbxv6kRHFuZE4Tq2za016NXh32nX0+Q=",
|
"narHash": "sha256-zmFdkhodqdHZnSsWqXkQwhUgqQ+FaPhc4tHvUMnWm18=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "70bb04a7de606a75ba0a2ee9d47b99802780b35d",
|
"rev": "a3c87849545a6f4d60ce4a8dbb08da9c009905ac",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -457,11 +457,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748528448,
|
"lastModified": 1751817769,
|
||||||
"narHash": "sha256-Tyn+PgBm78Ibq28/WbEz8+pYJZMdbJKsyXMCpT6TjrM=",
|
"narHash": "sha256-j7ORyAJFNxYWwF+6fs2z5IcJ40TpVwrkFYU9/CGHwfA=",
|
||||||
"owner": "imxyy1soope1",
|
"owner": "imxyy1soope1",
|
||||||
"repo": "go-musicfox",
|
"repo": "go-musicfox",
|
||||||
"rev": "1870fd3501631577ad4daef1489b03885abcb037",
|
"rev": "179b9440b6f209e7fd6ade589117b72bdd9042a6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -500,11 +500,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751824240,
|
"lastModified": 1753365873,
|
||||||
"narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=",
|
"narHash": "sha256-+Swd3wJppukESlWkbdopl9ZThjNVIFARVlb/eA2xjUA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "fd9e55f5fac45a26f6169310afca64d56b681935",
|
"rev": "e2fe7256c4ebbb35bfd1b4c6f52b57a3845ab1d0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -520,11 +520,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752202894,
|
"lastModified": 1753470191,
|
||||||
"narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=",
|
"narHash": "sha256-hOUWU5L62G9sm8NxdiLWlLIJZz9H52VuFiDllHdwmVA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "fab659b346c0d4252208434c3c4b3983a4b38fec",
|
"rev": "a1817d1c0e5eabe7dfdfe4caa46c94d9d8f3fdb6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -542,11 +542,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 +595,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751529406,
|
"lastModified": 1753333833,
|
||||||
"narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=",
|
"narHash": "sha256-S5RHVk+6PMwThIJY2mSbeoWTY1JrBSy1v1E1LDOFQW8=",
|
||||||
"owner": "Jovian-Experiments",
|
"owner": "Jovian-Experiments",
|
||||||
"repo": "Jovian-NixOS",
|
"repo": "Jovian-NixOS",
|
||||||
"rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d",
|
"rev": "e462677116c12bf23bd681a6a87dc7f98e689adf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -668,11 +668,11 @@
|
|||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752078530,
|
"lastModified": 1753374784,
|
||||||
"narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=",
|
"narHash": "sha256-R6vHaUJiehdXSnzZqCOxmtmAnHA4GBOpS/UKydzAI38=",
|
||||||
"owner": "sodiboo",
|
"owner": "sodiboo",
|
||||||
"repo": "niri-flake",
|
"repo": "niri-flake",
|
||||||
"rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf",
|
"rev": "da95771a65821bc98118cf3478eb2fc6fbfe035a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -701,11 +701,11 @@
|
|||||||
"niri-unstable": {
|
"niri-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750791124,
|
"lastModified": 1752870529,
|
||||||
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
|
"narHash": "sha256-23DJk5EfEDCq7Xy1QELcayG0VxbbWpdQ6t7jbhae1Ok=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
|
"rev": "fefc0bc0a71556eb75352e2b611e50eb5d3bf9c2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -804,11 +804,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752199438,
|
"lastModified": 1753450337,
|
||||||
"narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=",
|
"narHash": "sha256-l0QLEenVKuU6U2g1wI0zuf9IAm7QpisIbf8wAI6BUX4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "d34d9412556d3a896e294534ccd25f53b6822e80",
|
"rev": "a8dfcd2962f6e788759a75b36ca86b14aa44d8e5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -819,11 +819,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751984180,
|
"lastModified": 1753250450,
|
||||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
"narHash": "sha256-i+CQV2rPmP8wHxj0aq4siYyohHwVlsh40kV89f3nw1s=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
"rev": "fc02ee70efb805d3b2865908a13ddd4474557ecf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -847,11 +847,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752206449,
|
"lastModified": 1753502843,
|
||||||
"narHash": "sha256-NVAbC/s4CupABWGXF8M9mDiVw/n0YCftxwc1KatVjDk=",
|
"narHash": "sha256-GC9AscLIjgfiOEpUCoa0PjzheC/ktxwRu+EbyisIfAA=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1bd4d0d4a678d48b63eb18f457d74df2fcee6c69",
|
"rev": "3df1e8c22800589a7eeac3892a27932829e8ba6e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -863,11 +863,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752203688,
|
"lastModified": 1753489912,
|
||||||
"narHash": "sha256-uJ054F5PVGPu5SvLPMevhdY/EfK0X5DUyRtXhQYNUyo=",
|
"narHash": "sha256-uDCFHeXdRIgJpYmtcUxGEsZ+hYlLPBhR83fdU+vbC1s=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a70a12c75e13aa546c20ce0fe515de634d52c39e",
|
"rev": "13e8d35b7d6028b7198f8186bc0347c6abaa2701",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -879,11 +879,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752124863,
|
"lastModified": 1753418588,
|
||||||
"narHash": "sha256-5rWuf6RAlMDp/CAEuyYEz7ryxzgjxOCgUDhWEef864c=",
|
"narHash": "sha256-pdpkbarGU0sP38sWt56FQRRGnpOy6pGfVkoRNP3fhRw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "40de82b434526744da778ed53c742c1282d9e75e",
|
"rev": "a0a889d240ff8fda7209aec00d1877d440b23735",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -943,11 +943,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751984180,
|
"lastModified": 1753250450,
|
||||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
"narHash": "sha256-i+CQV2rPmP8wHxj0aq4siYyohHwVlsh40kV89f3nw1s=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
"rev": "fc02ee70efb805d3b2865908a13ddd4474557ecf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -963,11 +963,11 @@
|
|||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752207112,
|
"lastModified": 1753498336,
|
||||||
"narHash": "sha256-dnVoQSGQqEGJQzS6iHAG95c0oFrezzBinwu1bDLj9J4=",
|
"narHash": "sha256-FbQQZpHpVEDZGChNFX+ITiuK3JcusatsbeSOlEFuk7U=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "f166dc14862dfec043f9545e8291cc4402f8b866",
|
"rev": "af0aef6562e29628d3050ee105b926ee22c3c170",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1001,26 +1001,6 @@
|
|||||||
"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": {
|
||||||
"chaotic": "chaotic",
|
"chaotic": "chaotic",
|
||||||
@@ -1040,7 +1020,6 @@
|
|||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"quickshell": "quickshell",
|
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"zen": "zen"
|
"zen": "zen"
|
||||||
@@ -1049,11 +1028,11 @@
|
|||||||
"rust-analyzer-src": {
|
"rust-analyzer-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752086493,
|
"lastModified": 1753350080,
|
||||||
"narHash": "sha256-USpVUdiWXDfPoh+agbvoBQaBhg3ZdKZgHXo/HikMfVo=",
|
"narHash": "sha256-f5KlFKKTjs1i2ZGUmo+vDXYOzWm7MAML5YSK9OuN/cQ=",
|
||||||
"owner": "rust-lang",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-analyzer",
|
"repo": "rust-analyzer",
|
||||||
"rev": "6e3abe164b9036048dce1a3aa65a7e7e5200c0d3",
|
"rev": "922e04a134f789737b5b7a954bd62a8f4cbb0e8b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1071,11 +1050,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751856221,
|
"lastModified": 1753325142,
|
||||||
"narHash": "sha256-/QE1eV0ckFvgRMcKjZqgdJDoXFNwSMepwRoBjaw2MCk=",
|
"narHash": "sha256-7A8epLZ/LW9tek4OJY4IHesH7BgfBKr3aEm9JjUwqQo=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "34cae4b56929c5b340e1c5b10d9a98a425b2a51e",
|
"rev": "cf608fb54d8854f31d7f7c499e2d2c928af48036",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1091,11 +1070,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751606940,
|
"lastModified": 1752544651,
|
||||||
"narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
|
"narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
|
"rev": "2c8def626f54708a9c38a5861866660395bb3461",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1125,11 +1104,11 @@
|
|||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752201883,
|
"lastModified": 1753490930,
|
||||||
"narHash": "sha256-SZVbQ4YThvYU50cJ4W4GNMy7/rVOJI8qmXqbEcRNsug=",
|
"narHash": "sha256-noQ6sJ1twQvvGH34d13iM0uh95Syx+kb3nw45wTalIM=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "d395780b9c5c36f191b990b2021c71af180a1982",
|
"rev": "744431e17676177c18c4c52e8781ba6e91db30d6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1269,11 +1248,11 @@
|
|||||||
"xwayland-satellite-unstable": {
|
"xwayland-satellite-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751228685,
|
"lastModified": 1752338000,
|
||||||
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
|
"narHash": "sha256-Fxlp/yKtynug0jyuauAmvZU2SzHCfwlwWf85j+IvQ0U=",
|
||||||
"owner": "Supreeeme",
|
"owner": "Supreeeme",
|
||||||
"repo": "xwayland-satellite",
|
"repo": "xwayland-satellite",
|
||||||
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
|
"rev": "ba78881a68182ce338041846164cbfed0d70935c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1290,11 +1269,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752164817,
|
"lastModified": 1753502836,
|
||||||
"narHash": "sha256-LJFIx27IOUowLsJn5wci9mHZ4CesJsiAivQWDjnZPCc=",
|
"narHash": "sha256-VOytqgYsI6CfsVhbwVnDQS239+ht7pFLNVrRCKemBqU=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "9193992c4c2c4349b4280ec2b49648cae208fe63",
|
"rev": "cd46b6cddf3f83ad439108b8ead8cf65f041d445",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
30
flake.nix
30
flake.nix
@@ -32,9 +32,6 @@
|
|||||||
niri.inputs.nixpkgs.follows = "nixpkgs";
|
niri.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
niri.inputs.nixpkgs-stable.follows = "nixpkgs-stable";
|
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";
|
||||||
|
|
||||||
@@ -71,10 +68,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 +136,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 +171,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 ];
|
||||||
|
|||||||
@@ -80,6 +80,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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -13,27 +13,13 @@ 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 +40,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)
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ lib.my.makeSwitch {
|
|||||||
my.home = {
|
my.home = {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nodejs
|
nodejs
|
||||||
nodePackages.npm
|
|
||||||
|
|
||||||
typescript
|
typescript
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -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"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -64,6 +64,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()
|
||||||
@@ -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}"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -102,6 +102,27 @@ lib.my.makeSwitch {
|
|||||||
ignoreUserConfig = true;
|
ignoreUserConfig = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(
|
||||||
|
final: prev:
|
||||||
|
lib.infuse prev (
|
||||||
|
lib.mergeAttrsList (
|
||||||
|
map
|
||||||
|
(pkg: {
|
||||||
|
${pkg}.__output.preInstall.__append = ''
|
||||||
|
gappsWrapperArgs+=(
|
||||||
|
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--wayland-text-input-version=3}}"
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
[
|
||||||
|
"qq"
|
||||||
|
"vscodium"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
];
|
||||||
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,7 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
secrets,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
lib.my.makeSwitch {
|
lib.my.makeSwitch {
|
||||||
@@ -48,6 +49,14 @@ lib.my.makeSwitch {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sops.secrets.nix-github-token = {
|
||||||
|
sopsFile = secrets.nix-github-token;
|
||||||
|
format = "binary";
|
||||||
|
};
|
||||||
|
nix.extraOptions = ''
|
||||||
|
!include ${config.sops.secrets.nix-github-token.path}
|
||||||
|
'';
|
||||||
|
|
||||||
# uncomment to enable auto gc
|
# uncomment to enable auto gc
|
||||||
/*
|
/*
|
||||||
nix.gc = {
|
nix.gc = {
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
27
secrets/nix-github-token.conf
Normal file
27
secrets/nix-github-token.conf
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:qSfqMFxikz62vn1V+RxswNkkwqyQQriu1uwtMp/D94MKc4eLL+nbXbL7y5KzR1/DndMQMfrqmJdLpyPEUHkJT5r5jzW/nWVr38blvw1aqyU7TZFOiE+hKnQOJmjY+3Aq4Hgs4pDNNWUdHlphkf1vhMNJ2feZyjPlbw==,iv:ANO9NAKltzSS1EpM8om+7fjOdLMkdw3oYqeGpis+vgE=,tag:JI6RHeNDQINLKUSijEyxbw==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"recipient": "age1jf5pg2x6ta8amj40xdy0stvcvrdlkwc2nrwtmkpymu0qclk0eg5qmm9kns",
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJY2J3dEJpTnhhVHcwY2tR\nSUttdW9vVCtnVDlPSjY1RmgyaVBLU0haV0FFCkR4Z0lIT3pEclZwc0FvNnozNzVa\nY05SaHZYeXJsUmhLYWxLN2JFRzllWGMKLS0tIHdqK3Zwb2FtY3lPVUc3TUloMXpk\nWlpyWFpLZnRNVnRZeHVCTmcxd1dob1kKe8GkgjHfA7i0N+Uurf4blkoAKrIgqKFK\n3Oore9s6WepbA81eA+xAuozQGLbCISufcmePKa7S1UWTYdsWTW1Tfg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"recipient": "age1hpgg6psejh4y6jcdd34wxuml75fnweqpe0kh8376yqsctsfn9qxs037kk6",
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiNUxEWDJTUys1RnVrTW9x\nWDBQVitHV0tUSFdJTGZNUGVseHdOWFJ2NHcwCkxlT2xXUDZRUk5pUWNJdU9GUS9H\nNEtzdlVsckdscWZiQUZYL0RwWFd4SUUKLS0tIEF1NjZZNVVDdTc1ckpBRHNaSlQ2\nc1o4ZnFaWkpZL1d0MUtaWExTTWh5RjAKcR5TAybOqaYZBBZpm2OUcS919x1SBvuw\nH/1bgJTRLzzLeSgMRz0Uq/Gf4UPhcs25Um/Y6l4l5bNuqKNGhZEyzA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"recipient": "age1r0fv0tagxupfacv0aaxk5ss7sqvswv6kq8tk3x46ndqrj6f5afvqegahxq",
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwUmJodXN4THBraGpsVytO\nTkpWNHpmTm1NVnFiand4aGdnKzdELzY4emhBCldZRVdWSHBmZ2hDZ2F3bWR6eVBs\ncUF2eEg1alpYaE5sOGN6SU1jOC8zU00KLS0tIE5FeG5MTW80dG5NSkc0Qzl4WElE\nSmFHcmFwcHNsN0hjOGJJNjhMK3pyL3cKZ9NscSDpi7gaRDPIZweq70YwHEp73Z3Q\nUby/vj/LUl3ellAKFWiMibuZ3TjdfZrjGfhxN1Hq4eN4zd3n5UbLnw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"recipient": "age1tp7th3rrv3x0l6jl76n0hjqjp223w2y586pkgr0hcjwdm254jd5shkj6a8",
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3WUNZZGQrY05SUDJ5ZUdM\nRnc0MUc3SW5pK1JkTW1HT1oraDJhV0pvNlhRCmdwNHpLSzFYaUVtR2U2dzREa3h4\nWGVpbElES2dKalk0aGZSY3VBKzFNRW8KLS0tIFU0RmVuUWZsU2w2eUJ0QTYvTU5U\nTEFBdElDYnRaWDdkUE5HVUJ4Yy9nczAKAClAVe5wDhv3Ibt9auzTW1Jd8lej59uh\nSIC9MicNIm8Vkbc8MflGW07wkFWZE84KXw2eoP0e0vdHSWxP99hchg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2025-07-22T09:31:55Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:fm3hg9bCZP71zLnOYCRofWAB2ohIVIW+2M5QgzkmaO7pnnXHtsnCXrtOiNn5nM/p9Sx29o9reL3iAzMiD5gWT2crnSVu5dWglbpp1HGHnGCycxmCRcQcXuUWWAHNl0+HGBMOW9Bh8gxug9Hhs0eRPYhAMoqFCyiCtlpJT/dROHQ=,iv:2cSLRaa1MKlZvHaXt9Mz5houkBVHaehlxiqbSN4nhNE=,tag:Vhi9ObK6uYA9Dh68+gMe8A==,type:str]",
|
||||||
|
"unencrypted_suffix": "_unencrypted",
|
||||||
|
"version": "3.10.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user