forked from aylac.top/nixcfg
this repo has no description

a bit better + vaultwarden

Changed files
+121 -37
hosts
modules
home
programs
firefox
nixos
profiles
backups
services
fail2ban
snippets
aylac-top
restic
syncthing
+1 -1
.pre-commit-config.yaml
···
-
/nix/store/kphr3nlxcbmpc9v4fq1d136m3s816q49-pre-commit-config.json
+
/nix/store/gymzy28f2bhcbfpkr2j13x82ywdp66ms-pre-commit-config.json
+12 -12
flake.lock
···
},
"nixpkgs_2": {
"locked": {
-
"lastModified": 1755027561,
-
"narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=",
+
"lastModified": 1755186698,
+
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "005433b926e16227259a1843015b5b2b7f7d1fc3",
+
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
"type": "github"
},
"original": {
···
},
"nixpkgs_3": {
"locked": {
-
"lastModified": 1755027561,
-
"narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=",
+
"lastModified": 1755186698,
+
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "005433b926e16227259a1843015b5b2b7f7d1fc3",
+
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs_3"
},
"locked": {
-
"lastModified": 1755102471,
-
"narHash": "sha256-ecWsZvrU/v7phSRIulxUYoCZ+i8s+mQ0ecmxxcgHUko=",
+
"lastModified": 1755283446,
+
"narHash": "sha256-mFiY1pH1M8+ior+M2vKZ2WzX/Hsff9YE+dmKSb6LQHY=",
"owner": "nix-community",
"repo": "NUR",
-
"rev": "94c6c5b9798480dc220ee2cc8b1ce93a472a8d8f",
+
"rev": "e6d4f72242a95eaa05631bd3424e58e3b4902e4e",
"type": "github"
},
"original": {
···
"secrets": {
"flake": false,
"locked": {
-
"lastModified": 1755237741,
-
"narHash": "sha256-C+CxCeKEIyqqa3LyAU6Eg0JSYiT+EH+DVMUJMBU5ymE=",
+
"lastModified": 1755286003,
+
"narHash": "sha256-ufYeGSRUzhwvrFlS8RQPDFBnLUAeJheYsfuKaOFJ/PI=",
"owner": "ayla6",
"repo": "secrets",
-
"rev": "bd19c1b8652e12d12580655fad000c44d7cad698",
+
"rev": "12d3ab0518ba83c274efb230c5cc3a837845e89d",
"type": "github"
},
"original": {
+1
hosts/nanpi/secrets.nix
···
syncthingCert.file = "${self.inputs.secrets}/ayla/syncthing/nanpi/cert.age";
syncthingKey.file = "${self.inputs.secrets}/ayla/syncthing/nanpi/key.age";
resticPassword.file = "${self.inputs.secrets}/restic-passwd.age";
+
vaultwarden.file = "${self.inputs.secrets}/vaultwarden.age";
};
}
+18 -3
hosts/nanpi/services.nix
···
environmentFiles = [config.age.secrets.pds.path];
pdsadmin.enable = true;
settings = {
-
PDS_HOSTNAME = "pds.aylac.top";
+
PDS_HOSTNAME = config.mySnippets.aylac-top.networkMap.pds.vHost;
};
};
···
enable = true;
certificateFile = config.age.secrets.cloudflareCertificate.path;
tunnels = {
-
"3c012d05-cc92-4598-a726-909088e6588c" = {
+
"efe3d484-102d-4c58-bb17-ceaede4d7a4f" = {
certificateFile = config.age.secrets.cloudflareCertificate.path;
credentialsFile = config.age.secrets.cloudflareCredentials.path;
default = "http_status:404";
ingress = {
-
"pds.aylac.top" = "http://localhost:3000";
+
"${config.mySnippets.aylac-top.networkMap.pds.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.pds.hostName}:${toString config.mySnippets.aylac-top.networkMap.pds.port}";
+
"${config.mySnippets.aylac-top.networkMap.vaultwarden.vHost}" = "http://${config.mySnippets.aylac-top.networkMap.vaultwarden.hostName}:${toString config.mySnippets.aylac-top.networkMap.vaultwarden.port}";
};
};
};
···
# openFirewall = true;
# inherit (config.mySnippets.tailnet.networkMap.immich) port;
# };
+
+
vaultwarden = {
+
enable = true;
+
+
config = {
+
DOMAIN = "https://${config.mySnippets.aylac-top.networkMap.vaultwarden.vHost}";
+
ROCKET_ADDRESS = "0.0.0.0";
+
ROCKET_LOG = "critical";
+
ROCKET_PORT = config.mySnippets.aylac-top.networkMap.vaultwarden.port;
+
SIGNUPS_ALLOWED = false;
+
};
+
+
environmentFile = config.age.secrets.vaultwarden.path;
+
};
jellyfin = {
enable = true;
+7 -7
modules/home/programs/firefox/betterfox/fastfox.nix
···
"gfx.canvas.accelerated.cache-size" = 512; # default=256; Chrome=512
"gfx.content.skia-font-cache-size" = 20; # default=5; Chrome=20
-
# "layers.gpu-process.enabled" = true; # DEFAULT WINDOWS
-
# "layers.gpu-process.force-enabled" = true;
-
# "layers.mlgpu.enabled" = true; # LINUX
-
# "media.hardware-video-decoding.enabled" = true; # DEFAULT WINDOWS macOS
-
# "media.hardware-video-decoding.force-enabled" = true;
-
# "media.gpu-process-decoder" = true; # DEFAULT WINDOWS
-
# "media.ffmpeg.vaapi.enabled" = true; # LINUX
+
"layers.gpu-process.enabled" = true; # DEFAULT WINDOWS
+
"layers.gpu-process.force-enabled" = true;
+
"layers.mlgpu.enabled" = true; # LINUX
+
"media.hardware-video-decoding.enabled" = true; # DEFAULT WINDOWS macOS
+
"media.hardware-video-decoding.force-enabled" = true;
+
"media.gpu-process-decoder" = true; # DEFAULT WINDOWS
+
"media.ffmpeg.vaapi.enabled" = true; # LINUX
#############################################################
# SECTION: DISK CACHE
+17 -5
modules/home/programs/firefox/default.nix
···
consent-o-matic
ublock-origin
aria2-integration
-
adaptive-tab-bar-colour
keepassxc-browser
libredirect
stylus
···
sponsorblock
search-by-image
ff2mpv
+
bitwarden
];
search = {
···
"Home Manager Options"
"NixOS Wiki"
"nixpkgs"
-
"Wikipedia"
+
"wikipedia"
"Wiktionary"
];
};
···
};
userChrome = builtins.readFile self.inputs.firefox-onebar;
+
+
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
+
adaptive-tab-bar-colour
+
];
};
})
···
settings = {
"sidebar.revamp" = true;
"sidebar.verticalTabs" = true;
+
"sidebar.animation.expand-on-hover.duration-ms" = 50;
+
"sidebar.expandOnHover" = false;
+
"sidebar.visibility" = "expand-on-hover";
+
"browser.toolbars.bookmarks.visibility" = "never";
};
};
-
})
-
-
(lib.mkIf
+
}
+
// lib.mkIf
(config.myHome.programs.firefox.mode != "sidebar")
{
profiles.default = {
settings = {
"sidebar.revamp" = false;
"sidebar.verticalTabs" = false;
+
"browser.toolbars.bookmarks.visibility" = "newtab";
};
+
+
userChrome = ''
+
.tab-icon-overlay{ display: none !important; }
+
'';
};
})
];
+7 -3
modules/home/programs/firefox/engines.nix
···
];
icon = "https://wiki.nixos.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day
-
metaData.hidden = true;
+
#metaData.hidden = true;
urls = [
{
···
};
"nixpkgs" = {
-
definedAliases = ["!nix"];
+
definedAliases = ["!nix" "!nixpkgs"];
icon = "https://search.nixos.org/favicon.png";
urls = [
···
};
"Wiktionary" = {
-
definedAliases = ["!wikt"];
+
definedAliases = ["!wikt" "!wt"];
icon = "https://en.wiktionary.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day
···
template = "https://en.wiktionary.org/wiki/{searchTerms}";
}
];
+
};
+
+
"wikipedia" = {
+
definedAliases = ["!wikp" "!w"];
};
"bing" = {
+8
modules/nixos/profiles/backups/default.nix
···
repository = mkRepoA "vaultwarden";
}
);
+
+
passwords = lib.mkIf (builtins.elem config.networking.hostName config.mySnippets.syncthing.folders."Passwords".devices) (
+
config.mySnippets.restic
+
// {
+
paths = [config.mySnippets.syncthing.folders."Passwords".path];
+
repository = mkRepoA "passwords";
+
}
+
);
};
};
}
+19
modules/nixos/services/fail2ban/default.nix
···
config = lib.mkIf config.myNixOS.services.fail2ban.enable {
environment.etc = {
+
"fail2ban/filter.d/vaultwarden.conf".text = ''
+
[INCLUDES]
+
before = common.conf
+
+
[Definition]
+
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
+
ignoreregex =
+
journalmatch = _SYSTEMD_UNIT=vaultwarden.service
+
'';
+
+
"fail2ban/filter.d/vaultwarden-admin.conf".text = ''
+
[INCLUDES]
+
before = common.conf
+
+
[Definition]
+
failregex = ^.*Invalid admin token\. IP: <ADDR>.*$
+
ignoreregex =
+
journalmatch = _SYSTEMD_UNIT=vaultwarden.service
+
'';
};
services.fail2ban = {
+20
modules/snippets/aylac-top/default.nix
···
+
{lib, ...}: {
+
options.mySnippets.aylac-top.networkMap = lib.mkOption {
+
type = lib.types.attrs;
+
description = "Hostnames, ports, and vHosts for aylac.top services.";
+
+
default = {
+
pds = {
+
hostName = "nanpi";
+
port = 3000;
+
vHost = "pds.aylac.top";
+
};
+
+
vaultwarden = {
+
hostName = "nanpi";
+
port = 8222;
+
vHost = "vault.aylac.top";
+
};
+
};
+
};
+
}
+1
modules/snippets/default.nix
···
./tailnet
./syncthing
./restic
+
./aylac-top
];
}
+1 -1
modules/snippets/restic/default.nix
···
rcloneConfigFile = config.age.secrets.rclone.path;
timerConfig = {
-
OnCalendar = "*-*-* 00,12:00:00";
+
OnCalendar = "*-*-* 02:00:00";
Persistent = true;
RandomizedDelaySec = "1200";
};
+9 -5
modules/snippets/syncthing/folders.nix
···
devices = [
"morgana"
"m23"
+
"nanpi"
];
id = "cerbn-dj3xo";
-
path = "~/Backups";
+
path = "/home/ayla/Backups";
};
"Books" = {
···
devices = [
"morgana"
"m23"
+
"nanpi"
];
id = "dcfsw-meuwf";
-
path = "~/DCIM";
+
path = "/home/ayla/DCIM";
};
"Music" = {
···
];
id = "pacgr-fvsd7";
-
path = "~/Music";
+
path = "/home/ayla/Music";
};
"Passwords" = {
devices = [
"morgana"
"m23"
+
"nanpi"
];
id = "mkiff-evvnj";
-
path = "~/Documents/Passwords";
+
path = "/home/ayla/Documents/Passwords";
};
"Pictures" = {
devices = [
"morgana"
"m23"
+
"nanpi"
];
id = "u5d66-bcnho";
-
path = "~/Pictures";
+
path = "/home/ayla/Pictures";
};
"Koreader Settings" = {