Compare commits

..

10 Commits

23 changed files with 263 additions and 211 deletions

View File

@@ -1,12 +1,12 @@
{ {
config, config,
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 ];
@@ -34,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"
]; ];

View File

@@ -7,26 +7,22 @@
} }
]; ];
services.postgresql.ensureDatabases = [ "coder" ]; services.postgresql.ensureDatabases = [ "coder" ];
virtualisation.oci-containers = { virtualisation.oci-containers.containers.coder = {
containers = { image = "ghcr.io/coder/coder:latest";
coder = { environment = {
image = "ghcr.io/coder/coder:latest"; CODER_ACCESS_URL = "https://coder.imxyy.top";
environment = { CODER_HTTP_ADDRESS = "0.0.0.0:8086";
CODER_ACCESS_URL = "https://coder.imxyy.top"; CODER_PG_CONNECTION_URL = "postgresql://coder:coderdatabase@127.0.0.1/coder?sslmode=disable";
CODER_HTTP_ADDRESS = "0.0.0.0:8086";
CODER_PG_CONNECTION_URL = "postgresql://coder:coderdatabase@127.0.0.1/coder?sslmode=disable";
};
extraOptions = [
"--network=host"
"--group-add=${toString config.users.groups.podman.gid}"
];
volumes = [
"/var/lib/coder:/home/coder/.config"
"/var/run/docker.sock:/var/run/docker.sock"
];
ports = [ "8086:8086" ];
};
}; };
extraOptions = [
"--network=host"
"--group-add=${toString config.users.groups.podman.gid}"
];
volumes = [
"/var/lib/coder:/home/coder/.config"
"/var/run/docker.sock:/var/run/docker.sock"
];
ports = [ "8086:8086" ];
}; };
services.caddy.virtualHosts."coder.imxyy.top" = { services.caddy.virtualHosts."coder.imxyy.top" = {
extraConfig = '' extraConfig = ''

View File

@@ -1,14 +1,10 @@
{ {
virtualisation.oci-containers = { virtualisation.oci-containers.containers.sun-panel = {
containers = { image = "hslr/sun-panel:latest";
sun-panel = { volumes = [
image = "hslr/sun-panel:latest"; "/var/lib/sun-panel:/app/conf"
volumes = [ ];
"/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 = ''

View File

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

View File

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

View File

@@ -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,10 +466,6 @@
}; };
}; };
systemd.services."headscale" = { systemd.services."headscale" = {
serviceConfig = {
Restart = "always";
RestartSec = 120;
};
after = [ after = [
"podman-obligator.service" "podman-obligator.service"
]; ];
@@ -462,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 ];
@@ -481,27 +494,23 @@
]; ];
}; };
virtualisation.oci-containers = { virtualisation.oci-containers.containers.obligator = {
containers = { image = "anderspitman/obligator:latest";
obligator = { volumes = [
image = "anderspitman/obligator:latest"; "/var/lib/obligator:/data"
volumes = [ "/var/lib/obligator:/api"
"/var/lib/obligator:/data" ];
"/var/lib/obligator:/api" ports = [ "8081:1616" ];
]; cmd = [
ports = [ "8081:1616" ]; "-storage-dir"
cmd = [ "/data"
"-storage-dir" "-api-socket-dir"
"/data" "/api"
"-api-socket-dir" "-root-uri"
"/api" "https://oidc.imxyy.top"
"-root-uri" "-port"
"https://oidc.imxyy.top" "1616"
"-port" ];
"1616"
];
};
};
}; };
services.caddy.virtualHosts."headscale.imxyy.top" = { services.caddy.virtualHosts."headscale.imxyy.top" = {
extraConfig = '' extraConfig = ''
@@ -567,6 +576,7 @@
"ai" "ai"
"sy" "sy"
"minio" "minio"
"immich"
]; ];
in in
{ {

View File

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

View File

@@ -1,49 +1,54 @@
{ {
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 = [ "/mnt/nas/flatnotes/data:/data"
"/mnt/nas/flatnotes/data:/data" ];
]; environmentFiles = [
environmentFiles = [ "${config.sops.secrets.flatnote-env.path}"
"${config.sops.secrets.flatnote-env.path}" ];
]; ports = [ "8093:8080" ];
ports = [ "8093:8080" ]; };
}; siyuan = {
siyuan = { image = "apkdv/siyuan-unlock:v3.1.30";
image = "apkdv/siyuan-unlock:v3.1.30"; volumes = [
volumes = [ "/mnt/nas/siyuan/workspace:/workspace"
"/mnt/nas/siyuan/workspace:/workspace" "/mnt/nas/siyuan:/home/siyuan"
"/mnt/nas/siyuan:/home/siyuan" ];
]; cmd = [
cmd = [ "--workspace=/workspace"
"--workspace=/workspace" ];
]; environment = {
environment = { PUID = "0";
PUID = "0"; PGID = "0";
PGID = "0";
};
environmentFiles = [
"${config.sops.secrets.siyuan-env.path}"
];
ports = [ "8095:6806" ];
}; };
environmentFiles = [
"${config.sops.secrets.siyuan-env.path}"
];
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
'';
};
}; };
} }

View File

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

View File

@@ -1,7 +1,7 @@
{ {
config, config,
pkgs, pkgs,
sopsRoot, secrets,
... ...
}: }:
{ {
@@ -53,7 +53,7 @@
}; };
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 = {
@@ -62,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 = "";
}; };
@@ -74,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; [

View File

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

View File

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

View File

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

140
flake.lock generated
View File

@@ -107,11 +107,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1752141190, "lastModified": 1753146705,
"narHash": "sha256-RHNq77Z84BtLTwyRtrBffm5V9006Dqw4vh3vrvULlxM=", "narHash": "sha256-WzmXODUzg8jeEsAhpmp55zk5I2fmv3kv+RofZ/+FYlg=",
"owner": "chaotic-cx", "owner": "chaotic-cx",
"repo": "nyx", "repo": "nyx",
"rev": "ef0794b8e94eea166407141f7e92da75f6df925a", "rev": "02b3c2a45f6ddbd704f797c5730bc2d161f10ce0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -128,11 +128,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1750940343, "lastModified": 1753134819,
"narHash": "sha256-qmc/jreM09MOwQ8dOa/+yyh99rU7TowSqo8L33VHfto=", "narHash": "sha256-K0dxmI2P5PG8sRkolcmSfPFd9ZCRvYgLLvMZJZyETaI=",
"owner": "Bali10050", "owner": "Bali10050",
"repo": "Darkly", "repo": "Darkly",
"rev": "77770c8d3c35f7ad39da2c57122c360096df0aac", "rev": "5d5696091e706fcdcf13b90affa3e9783b8b3ac0",
"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": 1753166582,
"narHash": "sha256-0Xq5tZbvgZvxbbxv6kRHFuZE4Tq2za016NXh32nX0+Q=", "narHash": "sha256-EUjND31oxYwWw9Nl6HPLbsruNpicUQU8T/ZwgqB/OCY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "70bb04a7de606a75ba0a2ee9d47b99802780b35d", "rev": "a96e6ce7ec45c47aedad3728ef32de4ae4c0e416",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -500,11 +500,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751824240, "lastModified": 1753132348,
"narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=", "narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fd9e55f5fac45a26f6169310afca64d56b681935", "rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -520,11 +520,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1752202894, "lastModified": 1753132348,
"narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=", "narHash": "sha256-0i3jU9AHuNXb0wYGzImnVwaw+miE0yW13qfjC0F+fIE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fab659b346c0d4252208434c3c4b3983a4b38fec", "rev": "e4bf85da687027cfc4a8853ca11b6b86ce41d732",
"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": 1752755091,
"narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=", "narHash": "sha256-H/k35QJLyQxkFnXR5ckMv/Z+ElNa5f22qNKdyGBMAn4=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d", "rev": "0d09755fe1df1886e5f07dbb16f7ed373080f86a",
"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": 1752291616, "lastModified": 1753132162,
"narHash": "sha256-zpPFo4cgr5tOy8DCLIoD++idsKjnzgVPnBeZLmazYc4=", "narHash": "sha256-ycK2rB1kltXcrz5+dpldPngiYMukgaT2atwxhTjkIZQ=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "30962469e2e8fb93c3672ee605316b89b8e9a198", "rev": "f7cc80e3ad7e34ac523ba401ece49c4151fc19ca",
"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": 1752682362,
"narHash": "sha256-xSBMmGtq8K4Qv80TMqREmESCAsRLJRHAbFH2T/2Bf1Y=", "narHash": "sha256-ZNIpqCG/CfhmV+TgIeyO/XbhDjSWpwWokHM44j0Mn0w=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "d34d9412556d3a896e294534ccd25f53b6822e80", "rev": "20001f9bf0aaf2b1c307e43a5eec8cf8f800fe14",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -819,11 +819,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1751984180, "lastModified": 1752950548,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -847,11 +847,11 @@
}, },
"nixpkgs-master": { "nixpkgs-master": {
"locked": { "locked": {
"lastModified": 1752206449, "lastModified": 1753168712,
"narHash": "sha256-NVAbC/s4CupABWGXF8M9mDiVw/n0YCftxwc1KatVjDk=", "narHash": "sha256-z3xENTx8CgQjxTYwpzFgp+IGcHuEYiObaCnsZ/n7Wf4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1bd4d0d4a678d48b63eb18f457d74df2fcee6c69", "rev": "52bfb2685fa0afc1394201103ab1c8511e74261e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -863,11 +863,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1752203688, "lastModified": 1753168829,
"narHash": "sha256-uJ054F5PVGPu5SvLPMevhdY/EfK0X5DUyRtXhQYNUyo=", "narHash": "sha256-/xbkt7rKnCgpzjRTPiqJTsauV+w1FGSgLzFISTxulfg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a70a12c75e13aa546c20ce0fe515de634d52c39e", "rev": "ec031223f1f94bbbaca8f7d975cb5a7441f90505",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -879,11 +879,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1752124863, "lastModified": 1753088943,
"narHash": "sha256-5rWuf6RAlMDp/CAEuyYEz7ryxzgjxOCgUDhWEef864c=", "narHash": "sha256-cIyYVyDTSR6K3+xUGvEO3GAtBsdBhBcDALqHK50QEIQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "40de82b434526744da778ed53c742c1282d9e75e", "rev": "91b279d8c68718659084298ea287c73b5bf6df2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -943,11 +943,11 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1751984180, "lastModified": 1752950548,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "rev": "c87b95e25065c028d31a94f06a62927d18763fdf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -963,11 +963,11 @@
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1752207112, "lastModified": 1753166477,
"narHash": "sha256-dnVoQSGQqEGJQzS6iHAG95c0oFrezzBinwu1bDLj9J4=", "narHash": "sha256-ftWDv9eUl0cNsJfhwx7RrIZvtUt0SH3LoGsBZfGyWDw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "f166dc14862dfec043f9545e8291cc4402f8b866", "rev": "690f8c0102a674b35ac4e919bb34a8ef10d0e84c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1008,11 +1008,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1752146885, "lastModified": 1753090730,
"narHash": "sha256-ZJK989GL+bTCQSxbG8v8/7tHMCEl/FPovkeDBNyClQE=", "narHash": "sha256-QG14m53ZGp2Gk7xD2Q+Tf7RYCKfk/BYRaBtX3X4IKbc=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "d7079b75241c6e2b67f2429996fa7679ffc052e2", "rev": "db77c71c216530159c2dcf5b269ebb4706b2e2dd",
"revCount": 616, "revCount": 653,
"type": "git", "type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell" "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}, },
@@ -1049,11 +1049,11 @@
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1752086493, "lastModified": 1753115469,
"narHash": "sha256-USpVUdiWXDfPoh+agbvoBQaBhg3ZdKZgHXo/HikMfVo=", "narHash": "sha256-5U3eokxjR/nTDQokJVZSL3j0THxQwWbYBpLO1dp8ZOw=",
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "6e3abe164b9036048dce1a3aa65a7e7e5200c0d3", "rev": "9a1ee18e4dccc29c41d5c642860e58641d5ed0de",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1071,11 +1071,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751856221, "lastModified": 1753066249,
"narHash": "sha256-/QE1eV0ckFvgRMcKjZqgdJDoXFNwSMepwRoBjaw2MCk=", "narHash": "sha256-j2UBrfDRIePGx3532Bbb9UeosNX2F73hfOAHtmACfnM=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "34cae4b56929c5b340e1c5b10d9a98a425b2a51e", "rev": "0751b65633a1785743ca44fd7c14a633c54c1f91",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1091,11 +1091,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 +1125,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1752201883, "lastModified": 1753117651,
"narHash": "sha256-SZVbQ4YThvYU50cJ4W4GNMy7/rVOJI8qmXqbEcRNsug=", "narHash": "sha256-7gWBlUOe2c0nYGyoVDa9hw15pI3DXDR0KK+nYh9KOpU=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "d395780b9c5c36f191b990b2021c71af180a1982", "rev": "ea60526c8c2a1c5df2743a9495814dc0b319ef3b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1269,11 +1269,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 +1290,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1752164817, "lastModified": 1753069499,
"narHash": "sha256-LJFIx27IOUowLsJn5wci9mHZ4CesJsiAivQWDjnZPCc=", "narHash": "sha256-YtgY0ueqKNrBma4Euu8WH23BhUkBujirJDMDE1KujnU=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "9193992c4c2c4349b4280ec2b49648cae208fe63", "rev": "c64b94235ae24e3b9e01a08f0331d8bb0e5b037a",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -185,8 +185,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 ];

View File

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

View File

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

View File

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

View File

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

View File

@@ -11,16 +11,15 @@ 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}" ]
] ++ optionals (gettycfg.loginOptions != null) [
++ optionals (gettycfg.loginOptions != null) [ "--login-options"
"--login-options" gettycfg.loginOptions
gettycfg.loginOptions ]
] ++ gettycfg.extraArgs;
++ gettycfg.extraArgs;
gettyCmd = args: "@${pkgs.util-linux}/sbin/agetty agetty ${escapeShellArgs baseArgs} ${args}"; gettyCmd = args: "@${pkgs.util-linux}/sbin/agetty agetty ${escapeShellArgs baseArgs} ${args}";

View File

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

View File

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

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