Compare commits

...

17 Commits

32 changed files with 405 additions and 296 deletions

View File

@@ -1,13 +1,12 @@
{
config,
lib,
pkgs,
sopsRoot,
secrets,
...
}:
{
sops.secrets.et-imxyy-nix-server-nixremote = {
sopsFile = sopsRoot + /et-imxyy-nix-server-nixremote.toml;
sopsFile = secrets.et-imxyy-nix-server-nixremote;
format = "binary";
};
environment.systemPackages = [ pkgs.easytier ];
@@ -15,10 +14,8 @@
enable = true;
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server-nixremote.path}";
serviceConfig = {
Restart = lib.mkOverride 500 "always";
RestartMaxDelaySec = lib.mkOverride 500 "1m";
RestartSec = lib.mkOverride 500 "100ms";
RestartSteps = lib.mkOverride 500 9;
Restart = "always";
RestartSec = 30;
User = "root";
};
wantedBy = [ "multi-user.target" ];
@@ -37,6 +34,7 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIENauvvhVMLsUwH9cPYsvnOg7VCL3a4yEiKm8I524TE efl@efl-nix"
];

View File

@@ -7,9 +7,7 @@
}
];
services.postgresql.ensureDatabases = [ "coder" ];
virtualisation.oci-containers = {
containers = {
coder = {
virtualisation.oci-containers.containers.coder = {
image = "ghcr.io/coder/coder:latest";
environment = {
CODER_ACCESS_URL = "https://coder.imxyy.top";
@@ -26,8 +24,6 @@
];
ports = [ "8086:8086" ];
};
};
};
services.caddy.virtualHosts."coder.imxyy.top" = {
extraConfig = ''
reverse_proxy :8086 {

View File

@@ -1,15 +1,11 @@
{
virtualisation.oci-containers = {
containers = {
sun-panel = {
virtualisation.oci-containers.containers.sun-panel = {
image = "hslr/sun-panel:latest";
volumes = [
"/var/lib/sun-panel:/app/conf"
];
ports = [ "8085:3002" ];
};
};
};
services.caddy.virtualHosts."home.imxyy.top" = {
extraConfig = ''
reverse_proxy :8085

View File

@@ -1,5 +1,9 @@
{ ... }:
{
users.users.immich = {
home = "/mnt/nas/immich";
createHome = true;
};
services.immich = {
enable = true;
host = "127.0.0.1";

View File

@@ -8,7 +8,7 @@
WorkingDirectory = "/opt/minecraft/fabric1.20.6";
ExecStart = "${lib.getExe' pkgs.openjdk21 "java"} -Xms1G -Xmx5G -jar fabric-server-mc.1.20.6-loader.0.15.11-launcher.1.0.1.jar";
Restart = "always";
RestartSec = "10s";
RestartSec = 120;
};
};
my.persist = {

View File

@@ -1,7 +1,7 @@
{ config, sopsRoot, ... }:
{ config, secrets, ... }:
{
sops.secrets.minio-env = {
sopsFile = sopsRoot + /minio.env;
sopsFile = secrets.minio;
format = "dotenv";
};
services.minio = {

View File

@@ -3,7 +3,7 @@
lib,
pkgs,
username,
sopsRoot,
secrets,
...
}:
{
@@ -132,16 +132,18 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
];
users.users.${username}.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOEFLUkyeaK8ZPPZdVNEmtx8zvoxi7xqS2Z6oxRBuUPO imxyy@imxyy-nix"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWOy0QmAyxENg/O5m3cus8U3c9jCLioivwcWsh5/a82 imxyy-hisense-pad"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8pivvE8PMtsOxmccfNhH/4KehDKhBfUfJbQZxo/SZT imxyy-ace5"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKALTBn/QSGcSPgMg0ViSazFcaA0+nEF05EJpjbsI6dE imxyy_soope_@imxyy-cloudwin"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5G/ieEYBOng66YeyttBQLThyM6W//z2POsNyq4Rw/ imxyy@imxyy-nix-x16"
];
sops.secrets.dae-imxyy-nix-server = {
sopsFile = sopsRoot + /dae-imxyy-nix-server.dae;
sopsFile = secrets.dae-imxyy-nix-server;
format = "binary";
};
services.dae = {
@@ -150,7 +152,7 @@
};
systemd.services.dae.after = [ "sops-nix.service" ];
sops.secrets.mihomo = {
sopsFile = sopsRoot + /mihomo.yaml;
sopsFile = secrets.mihomo;
format = "yaml";
key = "";
};
@@ -162,7 +164,7 @@
};
sops.secrets.frp-env = {
sopsFile = sopsRoot + /frp.env;
sopsFile = secrets.frp;
format = "dotenv";
};
systemd.services.frp.serviceConfig.EnvironmentFile = [
@@ -407,6 +409,21 @@
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";
type = "tcp";
@@ -449,12 +466,6 @@
};
};
systemd.services."headscale" = {
serviceConfig = {
Restart = lib.mkOverride 500 "always";
RestartMaxDelaySec = lib.mkOverride 500 "1m";
RestartSec = lib.mkOverride 500 "100ms";
RestartSteps = lib.mkOverride 500 9;
};
after = [
"podman-obligator.service"
];
@@ -464,7 +475,7 @@
};
sops.secrets.et-imxyy-nix-server = {
sopsFile = sopsRoot + /et-imxyy-nix-server.toml;
sopsFile = secrets.et-imxyy-nix-server;
format = "binary";
};
environment.systemPackages = [ pkgs.easytier ];
@@ -472,10 +483,8 @@
enable = true;
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-server.path}";
serviceConfig = {
Restart = lib.mkOverride 500 "always";
RestartMaxDelaySec = lib.mkOverride 500 "1m";
RestartSec = lib.mkOverride 500 "100ms";
RestartSteps = lib.mkOverride 500 9;
Restart = "always";
RestartSec = 30;
User = "root";
};
wantedBy = [ "multi-user.target" ];
@@ -485,9 +494,7 @@
];
};
virtualisation.oci-containers = {
containers = {
obligator = {
virtualisation.oci-containers.containers.obligator = {
image = "anderspitman/obligator:latest";
volumes = [
"/var/lib/obligator:/data"
@@ -505,8 +512,6 @@
"1616"
];
};
};
};
services.caddy.virtualHosts."headscale.imxyy.top" = {
extraConfig = ''
reverse_proxy :8080 {
@@ -571,6 +576,7 @@
"ai"
"sy"
"minio"
"immich"
];
in
{

View File

@@ -2,7 +2,7 @@
lib,
config,
username,
sopsRoot,
secrets,
...
}:
{
@@ -23,7 +23,7 @@
environment.variables.NIX_REMOTE = "daemon";
sops.secrets.imxyy-nix-server-hashed-password = {
sopsFile = sopsRoot + /imxyy-nix-server-hashed-password.txt;
sopsFile = secrets.imxyy-nix-server-hashed-password;
format = "binary";
neededForUsers = true;
};

View File

@@ -1,21 +1,20 @@
{
config,
sopsRoot,
secrets,
...
}:
{
sops.secrets = {
flatnote-env = {
sopsFile = sopsRoot + /flatnote.env;
sopsFile = secrets.flatnote;
format = "dotenv";
};
siyuan-env = {
sopsFile = sopsRoot + /siyuan.env;
sopsFile = secrets.siyuan;
format = "dotenv";
};
};
virtualisation.oci-containers = {
containers = {
virtualisation.oci-containers.containers = {
flatnotes = {
image = "dullage/flatnotes:latest";
volumes = [
@@ -44,6 +43,12 @@
];
ports = [ "8095:6806" ];
};
memos = {
image = "neosmemo/memos:stable";
volumes = [
"/mnt/nas/memos:/var/opt/memos"
];
ports = [ "8097:5230" ];
};
};
services.caddy.virtualHosts = {
@@ -57,5 +62,10 @@
reverse_proxy :8095
'';
};
"memo.imxyy.top" = {
extraConfig = ''
reverse_proxy :8097
'';
};
};
}

View File

@@ -1,7 +1,7 @@
{ config, sopsRoot, ... }:
{ config, secrets, ... }:
{
sops.secrets.vaultwarden-env = {
sopsFile = sopsRoot + /vaultwarden.env;
sopsFile = secrets.vaultwarden;
format = "dotenv";
};
services.postgresql.ensureUsers = [

View File

@@ -1,5 +1,4 @@
{
config,
lib,
pkgs,
username,
@@ -38,6 +37,21 @@
PATH = "/home/${username}/bin:$PATH";
};
};
programs.niri.settings = {
environment.STEAM_FORCE_DESKTOPUI_SCALING = "1.25";
outputs = {
eDP-1 = {
enable = true;
mode = {
width = 1920;
height = 1200;
refresh = 60.002;
};
scale = 1.25;
};
};
};
};
my = {
@@ -45,6 +59,7 @@
cli.all.enable = true;
coding.all.enable = true;
desktop.all.enable = true;
virt.moonlight.enable = true;
desktop.browser.librewolf.enable = lib.mkForce false;
@@ -92,15 +107,6 @@
"image/png" = imageviewer;
"image/webp" = imageviewer;
};
extraBookmarks =
let
homedir = config.my.home.home.homeDirectory;
in
[
"file://${homedir}/NAS NAS"
"file://${homedir}/NAS/imxyy_soope_ NAS imxyy_soope_"
"file://${homedir}/NAS/imxyy_soope_/OS NAS OS"
];
};
persist = {
enable = true;

View File

@@ -1,8 +1,7 @@
{
config,
lib,
pkgs,
sopsRoot,
secrets,
...
}:
{
@@ -10,10 +9,51 @@
"biosdevname=0"
"net.ifnames=0"
];
networking.networkmanager.enable = true;
networking = {
networkmanager.enable = true;
firewall.enable = false;
nftables = {
enable = true;
flushRuleset = true;
ruleset = ''
table inet firewall {
set LANv4 {
type ipv4_addr
flags interval
elements = { 10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16 }
}
set LANv6 {
type ipv6_addr
flags interval
elements = { fd00::/8, fe80::/10 }
}
chain output {
type filter hook output priority 100; policy accept;
}
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state invalid drop
ct state established,related accept
ip saddr @LANv4 accept
ip6 saddr @LANv6 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
}
'';
};
};
sops.secrets.dae-imxyy-nix-x16 = {
sopsFile = sopsRoot + /dae-imxyy-nix-x16.dae;
sopsFile = secrets.dae-imxyy-nix-x16;
format = "binary";
};
services.dae = {
@@ -22,7 +62,7 @@
};
systemd.services.dae.after = [ "sops-nix.service" ];
sops.secrets.mihomo = {
sopsFile = sopsRoot + /mihomo.yaml;
sopsFile = secrets.mihomo;
format = "yaml";
key = "";
};
@@ -34,7 +74,7 @@
};
sops.secrets.et-imxyy-nix-x16 = {
sopsFile = sopsRoot + /et-imxyy-nix-x16.toml;
sopsFile = secrets.et-imxyy-nix-x16;
format = "binary";
};
environment.systemPackages = with pkgs; [
@@ -44,10 +84,8 @@
enable = true;
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix-x16.path}";
serviceConfig = {
Restart = lib.mkOverride 500 "always";
RestartMaxDelaySec = lib.mkOverride 500 "1m";
RestartSec = lib.mkOverride 500 "100ms";
RestartSteps = lib.mkOverride 500 9;
Restart = "always";
RestartSec = 30;
User = "root";
};
wantedBy = [ "multi-user.target" ];

View File

@@ -1,9 +1,8 @@
{
lib,
pkgs,
config,
username,
sopsRoot,
secrets,
...
}:
{
@@ -134,7 +133,7 @@
];
sops.secrets.imxyy-nix-rclone = {
sopsFile = sopsRoot + /imxyy-nix-rclone.conf;
sopsFile = secrets.imxyy-nix-rclone;
format = "binary";
};
fileSystems = {
@@ -154,21 +153,6 @@
"vfs-cache-mode=full"
];
};
"/home/${username}/NAS" = {
device = "//10.0.0.1/share";
fsType = "cifs";
options = [
"username=nas"
"password=nasshare"
"x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"
"nodev"
"nofail"
"uid=1000"
"gid=100"
"vers=3"
"rw"
];
};
};
my.persist.nixosDirs = [ "/etc/NetworkManager/system-connections" ];

View File

@@ -2,8 +2,7 @@
config,
lib,
pkgs,
sopsRoot,
username,
secrets,
...
}:
{
@@ -86,7 +85,7 @@
};
sops.secrets.dae-imxyy-nix = {
sopsFile = sopsRoot + /dae-imxyy-nix.dae;
sopsFile = secrets.dae-imxyy-nix;
format = "binary";
};
services.dae = {
@@ -95,7 +94,7 @@
};
systemd.services.dae.after = [ "sops-nix.service" ];
sops.secrets.mihomo = {
sopsFile = sopsRoot + /mihomo.yaml;
sopsFile = secrets.mihomo;
format = "yaml";
key = "";
};
@@ -107,7 +106,7 @@
};
sops.secrets.et-imxyy-nix = {
sopsFile = sopsRoot + /et-imxyy-nix.toml;
sopsFile = secrets.et-imxyy-nix;
format = "binary";
};
environment.systemPackages = [ pkgs.easytier ];
@@ -115,10 +114,8 @@
enable = true;
script = "${pkgs.easytier}/bin/easytier-core -c ${config.sops.secrets.et-imxyy-nix.path}";
serviceConfig = {
Restart = lib.mkOverride 500 "always";
RestartMaxDelaySec = lib.mkOverride 500 "1m";
RestartSec = lib.mkOverride 500 "100ms";
RestartSteps = lib.mkOverride 500 9;
Restart = "always";
RestartSec = 30;
User = "root";
};
wantedBy = [ "multi-user.target" ];

View File

@@ -3,7 +3,7 @@
pkgs,
config,
username,
sopsRoot,
secrets,
...
}:
let
@@ -225,7 +225,7 @@ in
];
sops.secrets.imxyy-nix-rclone = {
sopsFile = sopsRoot + /imxyy-nix-rclone.conf;
sopsFile = secrets.imxyy-nix-rclone;
format = "binary";
};
fileSystems = {

140
flake.lock generated
View File

@@ -107,11 +107,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1752141190,
"narHash": "sha256-RHNq77Z84BtLTwyRtrBffm5V9006Dqw4vh3vrvULlxM=",
"lastModified": 1753146705,
"narHash": "sha256-WzmXODUzg8jeEsAhpmp55zk5I2fmv3kv+RofZ/+FYlg=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "ef0794b8e94eea166407141f7e92da75f6df925a",
"rev": "02b3c2a45f6ddbd704f797c5730bc2d161f10ce0",
"type": "github"
},
"original": {
@@ -128,11 +128,11 @@
]
},
"locked": {
"lastModified": 1750940343,
"narHash": "sha256-qmc/jreM09MOwQ8dOa/+yyh99rU7TowSqo8L33VHfto=",
"lastModified": 1753134819,
"narHash": "sha256-K0dxmI2P5PG8sRkolcmSfPFd9ZCRvYgLLvMZJZyETaI=",
"owner": "Bali10050",
"repo": "Darkly",
"rev": "77770c8d3c35f7ad39da2c57122c360096df0aac",
"rev": "5d5696091e706fcdcf13b90affa3e9783b8b3ac0",
"type": "github"
},
"original": {
@@ -171,11 +171,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1752129689,
"narHash": "sha256-0Xq5tZbvgZvxbbxv6kRHFuZE4Tq2za016NXh32nX0+Q=",
"lastModified": 1753166582,
"narHash": "sha256-EUjND31oxYwWw9Nl6HPLbsruNpicUQU8T/ZwgqB/OCY=",
"owner": "nix-community",
"repo": "fenix",
"rev": "70bb04a7de606a75ba0a2ee9d47b99802780b35d",
"rev": "a96e6ce7ec45c47aedad3728ef32de4ae4c0e416",
"type": "github"
},
"original": {
@@ -500,11 +500,11 @@
]
},
"locked": {
"lastModified": 1751824240,
"narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=",
"lastModified": 1753132348,
"narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "fd9e55f5fac45a26f6169310afca64d56b681935",
"rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732",
"type": "github"
},
"original": {
@@ -520,11 +520,11 @@
]
},
"locked": {
"lastModified": 1752202894,
"narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=",
"lastModified": 1753132348,
"narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "fab659b346c0d4252208434c3c4b3983a4b38fec",
"rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732",
"type": "github"
},
"original": {
@@ -542,11 +542,11 @@
]
},
"locked": {
"lastModified": 1743604125,
"narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=",
"lastModified": 1752603129,
"narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a",
"rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b",
"type": "github"
},
"original": {
@@ -595,11 +595,11 @@
]
},
"locked": {
"lastModified": 1751529406,
"narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=",
"lastModified": 1752755091,
"narHash": "sha256-H/k35QJLyQxkFnXR5ckMv/Z+ElNa5f22qNKdyGBMAn4=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d",
"rev": "0d09755fe1df1886e5f07dbb16f7ed373080f86a",
"type": "github"
},
"original": {
@@ -668,11 +668,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1752078530,
"narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=",
"lastModified": 1753132162,
"narHash": "sha256-ycK2rB1kltXcrz5+dpldPngiYMukgaT2atwxhTjkIZQ=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf",
"rev": "f7cc80e3ad7e34ac523ba401ece49c4151fc19ca",
"type": "github"
},
"original": {
@@ -701,11 +701,11 @@
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1750791124,
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
"lastModified": 1752870529,
"narHash": "sha256-23DJk5EfEDCq7Xy1QELcayG0VxbbWpdQ6t7jbhae1Ok=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
"rev": "fefc0bc0a71556eb75352e2b611e50eb5d3bf9c2",
"type": "github"
},
"original": {
@@ -804,11 +804,11 @@
]
},
"locked": {
"lastModified": 1752199438,
"narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=",
"lastModified": 1752682362,
"narHash": "sha256-ZNIpqCG/CfhmV+TgIeyO/XbhDjSWpwWokHM44j0Mn0w=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "d34d9412556d3a896e294534ccd25f53b6822e80",
"rev": "20001f9bf0aaf2b1c307e43a5eec8cf8f800fe14",
"type": "github"
},
"original": {
@@ -819,11 +819,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1751984180,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
"lastModified": 1752950548,
"narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
"rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
"type": "github"
},
"original": {
@@ -847,11 +847,11 @@
},
"nixpkgs-master": {
"locked": {
"lastModified": 1752206449,
"narHash": "sha256-NVAbC/s4CupABWGXF8M9mDiVw/n0YCftxwc1KatVjDk=",
"lastModified": 1753168712,
"narHash": "sha256-z3xENTx8CgQjxTYwpzFgp+IGcHuEYiObaCnsZ/n7Wf4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1bd4d0d4a678d48b63eb18f457d74df2fcee6c69",
"rev": "52bfb2685fa0afc1394201103ab1c8511e74261e",
"type": "github"
},
"original": {
@@ -863,11 +863,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1752203688,
"narHash": "sha256-uJ054F5PVGPu5SvLPMevhdY/EfK0X5DUyRtXhQYNUyo=",
"lastModified": 1753168829,
"narHash": "sha256-/xbkt7rKnCgpzjRTPiqJTsauV+w1FGSgLzFISTxulfg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a70a12c75e13aa546c20ce0fe515de634d52c39e",
"rev": "ec031223f1f94bbbaca8f7d975cb5a7441f90505",
"type": "github"
},
"original": {
@@ -879,11 +879,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1752124863,
"narHash": "sha256-5rWuf6RAlMDp/CAEuyYEz7ryxzgjxOCgUDhWEef864c=",
"lastModified": 1753088943,
"narHash": "sha256-cIyYVyDTSR6K3+xUGvEO3GAtBsdBhBcDALqHK50QEIQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "40de82b434526744da778ed53c742c1282d9e75e",
"rev": "91b279d8c68718659084298ea287c73b5bf6df2c",
"type": "github"
},
"original": {
@@ -943,11 +943,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1751984180,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
"lastModified": 1752950548,
"narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
"rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
"type": "github"
},
"original": {
@@ -963,11 +963,11 @@
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1752207112,
"narHash": "sha256-dnVoQSGQqEGJQzS6iHAG95c0oFrezzBinwu1bDLj9J4=",
"lastModified": 1753166477,
"narHash": "sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw=",
"owner": "nix-community",
"repo": "NUR",
"rev": "f166dc14862dfec043f9545e8291cc4402f8b866",
"rev": "690f8c0102a674b35ac4e919bb34a8ef10d0e84c",
"type": "github"
},
"original": {
@@ -1008,11 +1008,11 @@
]
},
"locked": {
"lastModified": 1752146885,
"narHash": "sha256-ZJK989GL+bTCQSxbG8v8/7tHMCEl/FPovkeDBNyClQE=",
"lastModified": 1753090730,
"narHash": "sha256-QG14m53ZGp2Gk7xD2Q+Tf7RYCKfk/BYRaBtX3X4IKbc=",
"ref": "refs/heads/master",
"rev": "d7079b75241c6e2b67f2429996fa7679ffc052e2",
"revCount": 616,
"rev": "db77c71c216530159c2dcf5b269ebb4706b2e2dd",
"revCount": 653,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
@@ -1049,11 +1049,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1752086493,
"narHash": "sha256-USpVUdiWXDfPoh+agbvoBQaBhg3ZdKZgHXo/HikMfVo=",
"lastModified": 1753115469,
"narHash": "sha256-5U3eokxjR/nTDQokJVZSL3j0THxQwWbYBpLO1dp8ZOw=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "6e3abe164b9036048dce1a3aa65a7e7e5200c0d3",
"rev": "9a1ee18e4dccc29c41d5c642860e58641d5ed0de",
"type": "github"
},
"original": {
@@ -1071,11 +1071,11 @@
]
},
"locked": {
"lastModified": 1751856221,
"narHash": "sha256-/QE1eV0ckFvgRMcKjZqgdJDoXFNwSMepwRoBjaw2MCk=",
"lastModified": 1753066249,
"narHash": "sha256-j2UBrfDRIePGx3532Bbb9UeosNX2F73hfOAHtmACfnM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "34cae4b56929c5b340e1c5b10d9a98a425b2a51e",
"rev": "0751b65633a1785743ca44fd7c14a633c54c1f91",
"type": "github"
},
"original": {
@@ -1091,11 +1091,11 @@
]
},
"locked": {
"lastModified": 1751606940,
"narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
"lastModified": 1752544651,
"narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
"rev": "2c8def626f54708a9c38a5861866660395bb3461",
"type": "github"
},
"original": {
@@ -1125,11 +1125,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1752201883,
"narHash": "sha256-SZVbQ4YThvYU50cJ4W4GNMy7/rVOJI8qmXqbEcRNsug=",
"lastModified": 1753117651,
"narHash": "sha256-7gWBlUOe2c0nYGyoVDa9hw15pI3DXDR0KK+nYh9KOpU=",
"owner": "danth",
"repo": "stylix",
"rev": "d395780b9c5c36f191b990b2021c71af180a1982",
"rev": "ea60526c8c2a1c5df2743a9495814dc0b319ef3b",
"type": "github"
},
"original": {
@@ -1269,11 +1269,11 @@
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1751228685,
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
"lastModified": 1752338000,
"narHash": "sha256-Fxlp/yKtynug0jyuauAmvZU2SzHCfwlwWf85j+IvQ0U=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
"rev": "ba78881a68182ce338041846164cbfed0d70935c",
"type": "github"
},
"original": {
@@ -1290,11 +1290,11 @@
]
},
"locked": {
"lastModified": 1752164817,
"narHash": "sha256-LJFIx27IOUowLsJn5wci9mHZ4CesJsiAivQWDjnZPCc=",
"lastModified": 1753069499,
"narHash": "sha256-YtgY0ueqKNrBma4Euu8WH23BhUkBujirJDMDE1KujnU=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "9193992c4c2c4349b4280ec2b49648cae208fe63",
"rev": "c64b94235ae24e3b9e01a08f0331d8bb0e5b037a",
"type": "github"
},
"original": {

View File

@@ -185,8 +185,16 @@
outputs
hostname
;
sopsRoot = ./secrets;
} // vars;
secrets =
with lib.haumea;
load {
src = ./secrets;
loader = [
(matchers.always loaders.path)
];
};
}
// vars;
modules =
(lib.umport {
paths = [ ./modules ];

View File

@@ -80,6 +80,10 @@ lib.my.makeSwitch {
enableAutoUpdates = true;
settings.updates.auto_update = true;
};
programs.television = {
enable = true;
enableZshIntegration = true;
};
};
};
}

View File

@@ -44,11 +44,11 @@ lib.my.makeSwitch {
jj = {
ignore_timeout = true;
description = "The current jj status";
when = "jj root";
symbol = " ";
when = true;
command = ''
jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '
separate(" ",
" ",
change_id.shortest(4),
bookmarks,
"|",
@@ -64,19 +64,9 @@ lib.my.makeSwitch {
"(no description set)",
) ++ raw_escape_sequence("\x1b[0m"),
)
'
' || (starship module git_branch && starship module git_status)
'';
};
git_branch = {
when = true;
command = "jj root >/dev/null 2>&1 || starship module git_branch";
description = "Only show git_branch if we're not in a jj repo";
};
git_status = {
when = true;
command = "jj root >/dev/null 2>&1 || starship module git_status";
description = "Only show git_status if we're not in a jj repo";
};
};
git_state.disabled = true;
git_commit.disabled = true;

View File

@@ -26,6 +26,7 @@ lib.my.makeHomeProgramConfig {
ui = {
graph.style = "square";
default-command = "status";
conflict-marker-style = "snapshot";
};
signing = {
backend = "ssh";

View File

@@ -4,5 +4,3 @@ require("core.keymaps")
require("langs.langs-setup")
require("plugins.plugins-setup")
require("core.autostart")

View File

@@ -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

View File

@@ -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>sh", "<C-w>s", opt)
keymap.set("i", "<S-up>", "<ESC>v<up>", opt)
keymap.set("i", "<S-down>", "<ESC>v<down>", opt)
keymap.set("n", "<S-up>", "v<up>", opt)
keymap.set("n", "<S-down>", "v<down>", opt)
keymap.set("v", "<S-up>", "<up>", opt)
keymap.set("v", "<S-down>", "<down>", opt)
keymap.set("i", "<S-left>", "<ESC>v<left>", opt)
keymap.set("i", "<S-right>", "<ESC>v<right>", opt)
keymap.set("n", "<S-left>", "v<left>", opt)
keymap.set("n", "<S-right>", "v<right>", opt)
keymap.set("v", "<S-left>", "<left>", opt)
keymap.set("v", "<S-right>", "<right>", opt)
keymap.set("v", ".", ">gv", opt)
keymap.set("v", ",", "<gv", opt)
keymap.set({ "n", "v" }, "<pageup>", "9k", opt)
keymap.set({ "n", "v" }, "<pagedown>", "9j", opt)
keymap.set("i", "<pageup>", "<up><up><up><up><up><up><up><up><up>", opt)
keymap.set("i", "<pagedown>", "<down><down><down><down><down><down><down><down><down>", opt)
keymap.set("i", "<pageup>", string.rep("<up>", 9), opt)
keymap.set("i", "<pagedown>", string.rep("<down>", 9), opt)
keymap.set("n", "<leader>ww", ":w<CR>", opt)
keymap.set("n", "<leader>so", ":so<CR>", opt)
@@ -54,15 +40,6 @@ keymap.set("n", "L", ":BufferLineCycleNext<CR>", opt)
keymap.set("n", "<A-h>", ":BufferLineMovePrev<CR>", opt)
keymap.set("n", "<A-l>", ":BufferLineMoveNext<CR>", opt)
-- reload config
keymap.set("n", "<leader>rc", ":so ~/.config/nvim/init.lua<CR>", opt)
keymap.set("n", "<leader>rp", ":so ~/.config/nvim/lua/plugins/plugins-setup.lua<CR>", opt)
-- Workspaces
keymap.set("n", "<leader>wo", ":Telescope workspaces<CR>", opt)
keymap.set("n", "<leader>wa", ":WorkspacesAdd<CR>", opt)
keymap.set("n", "<leader>wr", ":WorkspacesRemove<CR>", opt)
-- Neovide config
if vim.g.neovide then
keymap.set("v", "<C-C>", '"+y', opt)

View File

@@ -16,7 +16,6 @@ lib.my.makeSwitch {
my.home = {
home.packages = with pkgs; [
nodejs
nodePackages.npm
typescript
];

View File

@@ -64,6 +64,15 @@ lib.my.makeSwitch {
];
platformTheme.name = "qtct";
};
xdg.configFile = {
"qt5ct/qt5ct.conf".source = pkgs.replaceVars ./qtct/qt5ct.conf {
darker = pkgs.libsForQt5.qt5ct + /share/qt5ct/colors/darker.conf;
};
"qt6ct/qt6ct.conf".source = pkgs.replaceVars ./qtct/qt6ct.conf {
darker = pkgs.qt6ct + /share/qt6ct/colors/darker.conf;
};
};
};
};
}

View 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()

View 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()

View File

@@ -11,8 +11,7 @@ let
cfg = config.my.autologin;
gettycfg = config.services.getty;
baseArgs =
[
baseArgs = [
"--login-program"
"${gettycfg.loginProgram}"
]

View File

@@ -3,6 +3,7 @@
config,
lib,
pkgs,
secrets,
...
}:
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
/*
nix.gc = {

View File

@@ -4,7 +4,7 @@
pkgs,
username,
userdesc,
sopsRoot,
secrets,
...
}:
lib.my.makeSwitch {
@@ -16,7 +16,7 @@ lib.my.makeSwitch {
programs.zsh.enable = true;
sops.secrets.imxyy-nix-hashed-password = {
sopsFile = sopsRoot + /imxyy-nix-hashed-password.txt;
sopsFile = secrets.imxyy-nix-hashed-password;
format = "binary";
neededForUsers = true;
};

View File

@@ -53,10 +53,6 @@ in
"file://${homedir}/Videos "
"file://${homedir}/Music "
"file://${homedir}/workspace "
"file://${homedir}/Documents/%E7%8F%AD%E7%BA%A7%E4%BA%8B%E5%8A%A1 "
"file://${homedir}/NAS NAS"
"file://${homedir}/NAS/imxyy_soope_ NAS imxyy_soope_"
"file://${homedir}/NAS/imxyy_soope_/OS NAS OS"
];
};
};

View 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"
}
}