23 Commits

Author SHA1 Message Date
2e42d1ebfd created syncthing module 2025-10-02 14:58:57 -06:00
6ceabf32f5 qbit_manage flake 2025-10-02 14:30:33 -06:00
5e49f6d326 absolute qbit_manage conf path 2025-10-02 14:29:56 -06:00
df80a06b23 attempt to pseudo-package qbit_manage 2025-10-02 14:21:59 -06:00
86e540b35d properly set unpackerr and stash secrets 2025-10-02 14:07:46 -06:00
143187e171 Add gitignore rules for secrets 2025-10-02 12:57:40 -06:00
ec57fb1611 nix linter settings 2025-10-02 12:52:31 -06:00
e4d8b16ee6 encrypted gallery-dl secrets 2025-10-02 12:52:14 -06:00
b915571fb2 pined doom emacs so nix lsp doesnt break 2025-10-02 11:19:43 -06:00
f92834e4de lowered grub timeout 2025-10-02 11:10:19 -06:00
3988202916 hyprland will have to be another day 2025-10-02 11:06:20 -06:00
971d7d1d93 little annoyance 2025-10-02 11:02:47 -06:00
e63a0590b4 restoring config.org 2025-10-02 11:02:17 -06:00
771b7b1a42 specializations are annoying + trying to fix emacs 2025-10-02 03:27:13 -06:00
acdc0fb0eb flushing up hyprland 2025-10-02 02:49:44 -06:00
ab8d8f068d misc adjustments/improvements 2025-10-02 01:44:37 -06:00
NixOS Builder Bot
79ce705a5e Weekly flake update: 2025-09-30 20:10 UTC 2025-09-30 14:10:47 -06:00
b55dfe5aad specizlizations complete 2025-09-30 13:39:29 -06:00
fab4bd0876 flake update manual script 2025-09-30 00:38:44 -06:00
d449570a0c specializations for workstation 2025-09-29 22:11:35 -06:00
0beab15f24 bash ~ zsh wip 2025-09-29 21:52:02 -06:00
ba8d491cf7 nixformat alias 2025-09-29 21:23:56 -06:00
bb08c52790 hyprland safe escape with stylix + fonts flake 2025-09-29 21:19:38 -06:00
30 changed files with 747 additions and 586 deletions

4
.gitignore vendored
View File

@@ -2,3 +2,7 @@
config.el config.el
*.qcow2 *.qcow2
result result
# Prevent accidentally committing unencrypted secrets
**/secrets/*.yaml.dec
**/*-decrypted.*
**/temp-secrets.*

View File

@@ -25,6 +25,13 @@ creation_rules:
- *workstation - *workstation
- *server - *server
- *miniserver - *miniserver
- path_regex: secrets/gallery.yaml$
key_groups:
- age:
- *devkey
- *workstation
- *server
- *miniserver
- path_regex: secrets/wireguard.yaml$ - path_regex: secrets/wireguard.yaml$
key_groups: key_groups:
- age: - age:

View File

@@ -78,6 +78,7 @@
]; ];
}; };
nix = { nix = {
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
distributedBuilds = true; distributedBuilds = true;
optimise.automatic = true; optimise.automatic = true;
settings = { settings = {

View File

@@ -2,35 +2,19 @@
inputs, inputs,
config, config,
pkgs, pkgs,
lib,
osConfig,
... ...
}: }:
{ let
home.stateVersion = "23.05";
programs = {
direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
};
git = {
enable = true;
userName = "Danilo Reyes";
userEmail = "CaptainJawZ@protonmail.com";
};
bash =
let
inherit (pkgs) fd fzf; inherit (pkgs) fd fzf;
inherit (inputs.jawz-scripts.packages.x86_64-linux) pokemon-colorscripts; inherit (inputs.jawz-scripts.packages.x86_64-linux) pokemon-colorscripts;
in shellType = osConfig.my.shell.type;
{ commonInit = ''
enable = true; ${pokemon-colorscripts}/bin/pokemon-colorscripts -r --no-title
historyFile = "\${XDG_STATE_HOME}/bash/history"; export command_timeout=60
historyControl = [ '';
"erasedups" commonAliases = {
"ignorespace"
"ignoredups"
];
shellAliases = {
cp = "cp -i"; cp = "cp -i";
mv = "mv -i"; mv = "mv -i";
mkdir = "mkdir -p"; mkdir = "mkdir -p";
@@ -50,11 +34,49 @@
cd /srv/pool/scrapping/JawZ/gallery-dl && cd /srv/pool/scrapping/JawZ/gallery-dl &&
xdg-open "$(${fd}/bin/fd . ./ Husbands wikifeet -tdirectory -d 1 | ${fzf}/bin/fzf -i)"''; xdg-open "$(${fd}/bin/fd . ./ Husbands wikifeet -tdirectory -d 1 | ${fzf}/bin/fzf -i)"'';
}; };
in
{
home.stateVersion = "23.05";
programs = {
direnv = {
enable = true;
enableBashIntegration = shellType == "bash";
enableZshIntegration = shellType == "zsh";
nix-direnv.enable = true;
};
git = {
enable = true;
delta.enable = true;
userName = "Danilo Reyes";
userEmail = "CaptainJawZ@protonmail.com";
extraConfig = {
init.defaultBranch = "main";
pull.rebase = true;
};
};
bash = lib.mkIf (shellType == "bash") {
enable = true;
historyFile = "\${XDG_STATE_HOME}/bash/history";
shellAliases = commonAliases;
enableVteIntegration = true; enableVteIntegration = true;
initExtra = '' initExtra = commonInit;
${pokemon-colorscripts}/bin/pokemon-colorscripts -r --no-title historyControl = [
export command_timeout=60 "erasedups"
''; "ignorespace"
"ignoredups"
];
};
zsh = lib.mkIf (shellType == "zsh") {
enable = true;
dotDir = ".config/zsh";
shellAliases = commonAliases;
initContent = commonInit;
history = {
path = "\${XDG_STATE_HOME}/zsh/history";
expireDuplicatesFirst = true;
ignoreSpace = true;
ignoreAllDups = true;
};
}; };
}; };
xdg = { xdg = {

View File

@@ -23,9 +23,6 @@ in
jawz-password.neededForUsers = true; jawz-password.neededForUsers = true;
"private_keys/${hostName}" = keyConfig "${baseDir}_${hostName}"; "private_keys/${hostName}" = keyConfig "${baseDir}_${hostName}";
"git_private_keys/${hostName}" = keyConfig "${baseDir}_git"; "git_private_keys/${hostName}" = keyConfig "${baseDir}_git";
"syncthing_keys/${hostName}" = keyConfig ".config/syncthing/key.pem";
"syncthing_certs/${hostName}" = keyConfig ".config/syncthing/cert.pem";
"syncthing_password".sopsFile = ../secrets/keys.yaml;
} }
); );
home-manager.users.jawz = { home-manager.users.jawz = {
@@ -48,103 +45,6 @@ in
}; };
}; };
}; };
services.syncthing = lib.mkIf config.my.secureHost {
enable = true;
user = "jawz";
group = "users";
overrideDevices = true;
overrideFolders = true;
openDefaultPorts = true;
key = config.sops.secrets."syncthing_keys/${hostName}".path;
cert = config.sops.secrets."syncthing_certs/${hostName}".path;
guiAddress = "${config.my.ips."${hostName}"}:8384";
settings = {
options = {
natEnabled = false;
relaysEnabled = false;
globalAnnounceEnabled = false;
};
gui = {
user = "jawz";
password = config.sops.secrets.syncthing_password.path;
};
devices = {
server.id = "BG6PF7S-KATABWO-7WAZFMX-6YO7IS3-WQTMR3M-VSOSV7V-HFFMNNH-BFX2EQ4";
miniserver.id = "HDYEGIR-GFU7ONK-MOOJUFH-N3L3XHX-SXWN3FI-O23K6LD-BJENQK5-VIPV2AT";
workstation.id = "4E4KJ6M-MSTNBVF-D7CNHDW-DUTB3VR-SXKZ4NH-ZKAOMF5-V24JECJ-4STSZAA";
galaxy.id = "UAZ5YDV-YUFBXOY-QMS6S6R-WPIIKZI-4OPPW5L-G4OVUPO-YW5KFYY-YASRAAV";
phone.id = "OSOX2VZ-AO2SA3C-BFB6NKF-K6CR6WX-64TDBKW-RRKEKJ4-FKZE5CV-J2RGJAJ";
wg-friend1 = {
id = "XBIYCD4-EFKS5SK-WFF73CU-P37GXVH-OMWEIA4-6KC5F3L-U5UQWSF-SYNNRQF";
addresses = [ "tcp://${config.my.ips.wg-friend1}:22000" ];
introducer = false;
autoAcceptFolders = false;
paused = false;
};
};
folders =
let
isMainHost = hostName == "workstation";
mkMobile =
path:
lib.mkIf isMainHost {
inherit path;
ignorePerms = false;
devices = [
"galaxy"
"phone"
];
};
in
{
cache = mkMobile "~/Downloads/cache/";
friends = mkMobile "~/Pictures/artist/friends/";
forme = mkMobile "~/Pictures/art for me/";
comfy = mkMobile "~/Development/AI/ComfyUI/output/";
gdl = {
path = "~/.config/jawz/";
ignorePerms = false;
devices = [
"server"
"miniserver"
"workstation"
];
};
librewolf = {
path = "~/.librewolf/";
ignorePerms = false;
copyOwnershipFromParent = true;
type = if isMainHost then "sendonly" else "receiveonly";
devices = [
"server"
"miniserver"
"workstation"
];
};
notes = {
path = "~/Documents/Notes";
ignorePerms = false;
devices = [
"galaxy"
"phone"
"server"
"miniserver"
"workstation"
];
};
friend_share = {
path = "~/Pictures/encrypted/friends";
ignorePerms = false;
type = "sendreceive";
devices = [
"server"
"workstation"
"wg-friend1"
];
};
};
};
};
users.users.jawz = { users.users.jawz = {
uid = 1000; uid = 1000;
linger = true; linger = true;

View File

@@ -38,5 +38,10 @@ _final: prev: {
waybar = prev.waybar.overrideAttrs (old: { waybar = prev.waybar.overrideAttrs (old: {
mesonFlags = old.mesonFlags ++ [ "-Dexperimental=true" ]; mesonFlags = old.mesonFlags ++ [ "-Dexperimental=true" ];
}); });
inherit (pkgsU) symbola mealie flaresolver; inherit (pkgsU)
symbola
mealie
flaresolver
deadnix
;
} }

View File

@@ -11,6 +11,7 @@ let
}; };
scheme = schemesFile.schemes.cheems; scheme = schemesFile.schemes.cheems;
cfg = config.my.stylix; cfg = config.my.stylix;
gnomeEnabled = config.services.xserver.desktopManager.gnome.enable;
in in
{ {
options.my.stylix.enable = lib.mkEnableOption "system-wide theming with Stylix"; options.my.stylix.enable = lib.mkEnableOption "system-wide theming with Stylix";
@@ -23,7 +24,7 @@ in
} }
// lib.optionalAttrs (scheme ? base16Scheme) { inherit (scheme) base16Scheme; }; // lib.optionalAttrs (scheme ? base16Scheme) { inherit (scheme) base16Scheme; };
home-manager.users.jawz = { home-manager.users.jawz = {
gtk = lib.mkIf (!cfg.enable) { gtk = lib.mkIf (!cfg.enable && gnomeEnabled) {
enable = true; enable = true;
iconTheme = { iconTheme = {
name = "Papirus-Light"; name = "Papirus-Light";
@@ -33,7 +34,7 @@ in
}; };
}; };
stylix = { stylix = {
enable = true; inherit (cfg) enable;
autoEnable = cfg.enable; autoEnable = cfg.enable;
iconTheme = { iconTheme = {
inherit (cfg) enable; inherit (cfg) enable;

View File

@@ -14,7 +14,7 @@
}; };
bluesky = { bluesky = {
username = "blablablamagic.bsky.social"; username = "blablablamagic.bsky.social";
password = "bb3m-xr4w-4vgf-oxmi"; password = "{env[GALLERY_DL_BLUESKY_PASSWORD]}";
reposts = false; reposts = false;
videos = true; videos = true;
directory = [ "{author['handle']}" ]; directory = [ "{author['handle']}" ];
@@ -30,8 +30,8 @@
}; };
flickr = { flickr = {
size-max = "Original"; size-max = "Original";
access-token = "72157720915197374-51a26dc4fdfdf173"; access-token = "{env[GALLERY_DL_FLICKR_ACCESS_TOKEN]}";
access-token-secret = "a1ddb10902f3fa85"; access-token-secret = "{env[GALLERY_DL_FLICKR_ACCESS_TOKEN_SECRET]}";
directory = [ directory = [
"{category}" "{category}"
"{owner[username]}" "{owner[username]}"
@@ -84,19 +84,19 @@
"{title}" "{title}"
]; ];
tumblr = { tumblr = {
access-token = "5VwIW8TNBoNVPo9CzvKMza2wcn9gJXd6rnUBy6Ctqb4BCPpI59"; access-token = "{env[GALLERY_DL_TUMBLR_ACCESS_TOKEN]}";
access-token-secret = "8krZGeauA171aZpXZhwgZN8nZCxKQkXYKXWL473mTQPKrqoP3e"; access-token-secret = "{env[GALLERY_DL_TUMBLR_ACCESS_TOKEN_SECRET]}";
external = true; external = true;
inline = true; inline = true;
posts = "all"; posts = "all";
reblogs = false; reblogs = false;
parent-directory = true; parent-directory = true;
api-key = "uhBUtgPaX9gl7eaD8suGWW6ZInRedQoVT6xsZzopljy0jXHqm5"; api-key = "{env[GALLERY_DL_TUMBLR_API_KEY]}";
api-secret = "D3FDj1INyPzXikVpp4jmzSqjlC9czFUQ8oj2I883PSYJdqwURv"; api-secret = "{env[GALLERY_DL_TUMBLR_API_SECRET]}";
directory = [ "{blog_name}" ]; directory = [ "{blog_name}" ];
}; };
deviantart = { deviantart = {
refresh-token = "4364d30b6f3777b3c5c1ab2c1c428b0245272ebe"; refresh-token = "{env[GALLERY_DL_DEVIANTART_REFRESH_TOKEN]}";
include = "gallery,scraps"; include = "gallery,scraps";
flat = true; flat = true;
original = true; original = true;
@@ -139,7 +139,7 @@
reddit = { reddit = {
user-agent = "Python:gallery-dl:v1.0 (by /u/captainjawz)"; user-agent = "Python:gallery-dl:v1.0 (by /u/captainjawz)";
client-id = "T7nZ6WZ3_onJWBhLP8r08g"; client-id = "T7nZ6WZ3_onJWBhLP8r08g";
refresh-token = "184157546842-UHdPQX1c7kG1kbO09NAHY2O2taEiwg"; refresh-token = "{env[GALLERY_DL_REDDIT_REFRESH_TOKEN]}";
parent-directory = true; parent-directory = true;
directory = [ "{author}" ]; directory = [ "{author}" ];
}; };
@@ -162,7 +162,7 @@
]; ];
baraag.directory = [ "{account[username]}" ]; baraag.directory = [ "{account[username]}" ];
pixiv = { pixiv = {
refresh-token = "O4kc9tTzGItuuacDcfmevW6NELjm5CJdWiAbZdUv3Kk"; refresh-token = "{env[GALLERY_DL_PIXIV_REFRESH_TOKEN]}";
directory = [ "{user[account]} - {user[id]}" ]; directory = [ "{user[account]} - {user[id]}" ];
ugoira = true; ugoira = true;
favorite.directory = [ favorite.directory = [

View File

@@ -1,222 +0,0 @@
## Unpackerr Example Configuration File ##
## The following values are application defaults. ##
## Environment Variables may override all values. ##
####################################################
# [true/false] Turn on debug messages in the output. Do not wrap this in quotes.
# Recommend trying this so you know what it looks like. I personally leave it on.
debug = false
# Disable writing messages to stdout. This silences the app. You should set a log
# file below if you set this to true. Recommended when starting with systemctl.
quiet = false
# Setting activity to true will silence all app queue log lines with only zeros.
# Set this to true when you want less log spam.
activity = false
# The application queue data is logged on an interval. Adjust that interval with this setting.
# Default is a minute. 2m, 5m, 10m, 30m, 1h are also perfectly acceptable.
log_queues = "1m"
# Write messages to a log file. This is the same data that is normally output to stdout.
# This setting is great for Docker users that want to export their logs to a file.
# The alternative is to use syslog to log the output of the application to a file.
# Default is no log file; this is unset. log_files=0 turns off auto-rotation.
# Default files is 10 and size(mb) is 10 Megabytes; both doubled if debug is true.
#log_file = '/downloads/unpackerr.log'
log_files = 10
log_file_mb = 10
# How often to poll sonarr and radarr.
# Recommend 1m-5m. Uses Go Duration.
interval = "5m"
# How long an item must be queued (download complete) before extraction will start.
# One minute is the historic default and works well. Set higher if your downloads
# take longer to finalize (or transfer locally). Uses Go Duration.
start_delay = "1m"
# How long to wait before removing the history for a failed extraction.
# Once the history is deleted the item will be recognized as new and
# extraction will start again. Uses Go Duration.
retry_delay = "5m"
# How many files may be extracted in parallel. 1 works fine.
# Do not wrap the number in quotes. Raise this only if you have fast disks and CPU.
parallel = 1
# Use these configurations to control the file modes used for newly extracted
# files and folders. Recommend 0644/0755 or 0666/0777.
file_mode = "0664"
dir_mode = "0775"
[webserver]
## The web server currently only supports metrics; set this to true if you wish to use it.
metrics = false
## This may be set to a port or an ip:port to bind a specific IP. 0.0.0.0 binds ALL IPs.
listen_addr = "0.0.0.0:5656"
## Recommend setting a log file for HTTP requests. Otherwise, they go with other logs.
log_file = ""
## This app automatically rotates logs. Set these to the size and number to keep.
log_files = 10
log_file_mb = 10
## Set both of these to valid file paths to enable HTTPS/TLS.
ssl_cert_file = ""
ssl_key_file = ""
## Base URL from which to serve content.
urlbase = "/"
## Upstreams should be set to the IP or CIDR of your trusted upstream proxy.
## Setting this correctly allows X-Forwarded-For to be used in logs.
## In the future it may control auth proxy trust. Must be a list of strings.
upstreams = [ ] # example: upstreams = [ "127.0.0.1/32", "10.1.2.0/24" ]
##-Notes-#######-READ THIS!!!-##################################################
## The following sections can be repeated if you have more than one Sonarr, ##
## Radarr or Lidarr, Readarr, Folder, Webhook, or Command Hook. ##
## You MUST uncomment the [[header]] and api_key at a minimum for Starr apps. ##
## ALL LINES BEGINNING WITH A HASH # ARE IGNORED ##
## REMOVE THE HASH # FROM CONFIG LINES YOU WANT TO CHANGE ##
################################################################################
[[sonarr]]
url = "http://localhost:8989"
api_key = "52869fe7bec4482dafb21c4053fe71e4"
## File system path where downloaded Sonarr items are located.
paths = ['/srv/pool/multimedia/downloads/torrent']
## Default protocols is torrent. Alternative: "torrent,usenet"
protocols = "torrent"
## How long to wait for a reply from the backend.
timeout = "10s"
## How long to wait after import before deleting the extracted items.
delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
[[radarr]]
url = "http://127.0.0.1:7878"
api_key = "a987ac45ca2c47bc88e762031ea33296"
## File system path where downloaded Radarr items are located.
paths = ['/srv/pool/multimedia/downloads/torrent']
## Default protocols is torrents. Alternative: "torrent,usenet"
protocols = "torrent"
## How long to wait for a reply from the backend.
timeout = "10s"
## How long to wait after import before deleting the extracted items.
delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
#[[lidarr]]
# url = "http://127.0.0.1:8686"
# api_key = "0123456789abcdef0123456789abcdef"
## File system path where downloaded Lidarr items are located.
# paths = ['/downloads']
## Default protocols is torrent. Alternative: "torrent,usenet"
# protocols = "torrent"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
#[[readarr]]
# url = "http://127.0.0.1:8787"
# api_key = "0123456789abcdef0123456789abc"
## File system path where downloaded Readarr items are located.
# paths = ['/downloads']
## Default protocols is torrent. Alternative: "torrent,usenet"
# protocols = "torrent"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
##################################################################################
### ### STOP HERE ### STOP HERE ### STOP HERE ### STOP HERE #### STOP HERE ### #
### Only using Starr apps? The things above. The below configs are OPTIONAL. ### #
##################################################################################
##-Folders-#######################################################################
## This application can also watch folders for things to extract. If you copy a ##
## subfolder into a watched folder (defined below) any extractable items in the ##
## folder will be decompressed. This has nothing to do with Starr applications. ##
##################################################################################
#[[folder]]
# path = '/some/folder/to/watch'
## Path to extract files to. The default (leaving this blank) is the same as `path` (above).
# extract_path = ""
## Delete extracted or original files this long after extraction.
## The default is 0. Set to 0 to disable all deletes. Uncomment it to enable deletes. Uses Go Duration.
# delete_after = "10m"
## Delete extracted files after successful extraction? true/false, no quotes. Honors delete_after.
# delete_files = false
## Delete original items after successful extraction? true/false, no quotes. Honors delete_after.
# delete_original = false
## Disable extraction log (unpackerred.txt) file creation? true/false, no quotes.
# disable_log = false
## Move extracted files into original folder? If false, files go into an _unpackerred folder.
# move_back = false
## Set this to true if you want this app to extract ISO files with .iso extension.
# extract_isos = false
################
### Webhooks ###
################
# Sends a webhook when an extraction queues, starts, finishes, and/or is deleted.
# Created to integrate with notifiarr.com.
# Also works natively with Discord.com, Telegram.org, and Slack.com webhooks.
# Can possibly be used with other services by providing a custom template_path.
###### Don't forget to uncomment [[webhook]] and url at a minimum !!!!
#[[webhook]]
# url = "https://notifiarr.com/api/v1/notification/unpackerr/api_key_from_notifiarr_com"
# name = "" # Set this to hide the URL in logs.
# silent = false # do not log success (less log spam)
# events = [0] # list of event ids to include, 0 == all.
## Advanced Optional Webhook Configuration
# nickname = "" # Used in Discord and Slack templates as bot name, in Telegram as chat_id.
# channel = "" # Also passed into templates. Used in Slack templates for destination channel.
# exclude = [] # list of apps to exclude, ie. ["radarr", "lidarr"]
# template_path = "" # Override internal webhook template for discord.com or other hooks.
# template = "" # Override automatic template detection. Values: notifiarr, discord, telegram, gotify, pushover, slack
# ignore_ssl = false # Set this to true to ignore the SSL certificate on the server.
# timeout = "10s" # You can adjust how long to wait for a server response.
# content_type = "application/json" # If your custom template uses another MIME type, set this.
#####################
### Command Hooks ###
#####################
# Executes a script or command when an extraction queues, starts, finishes, and/or is deleted.
# All data is passed in as environment variables. Try /usr/bin/env to see what variables are available.
###### Don't forget to uncomment [[cmdhook]] and url at a minimum !!!!
#[[cmdhook]]
# command = '/my/cool/app' # Path to command or script.
# shell = false # Runs the command inside /bin/sh ('nix) or cmd.exe (Windows).
# name = "" # Provide an optional name for logging.
# silent = false # Hides command output from logs.
# events = [0] # list of event ids to include, 0 == all.
## Optional Command Hook Configuration
# exclude = [] # list of apps to exclude, ie. ["radarr", "lidarr"]
# timeout = "10s" # You can adjust how long to wait for a server response.

View File

@@ -4,6 +4,7 @@
... ...
}: }:
{ {
qt.enable = true;
services = { services = {
gvfs.enable = true; gvfs.enable = true;
libinput.enable = true; libinput.enable = true;
@@ -32,7 +33,6 @@
totem totem
; ;
}; };
qt.enable = true;
users.users.jawz.packages = builtins.attrValues { users.users.jawz.packages = builtins.attrValues {
inherit (pkgs.gnomeExtensions) inherit (pkgs.gnomeExtensions)
tactile # window manager tactile # window manager

View File

@@ -1,13 +1,36 @@
{ {
pkgs, pkgs,
config,
... ...
}: }:
let let
startupScript = pkgs.pkgs.writeShellScriptBin "start" '' # misc
${pkgs.waybar}/bin/waybar & mod = "SUPER";
${pkgs.swww}/bin/swww init & # waybar
sleep 1 inherit (config.lib.stylix) colors;
''; net-icons = [
"󰣾"
"󰣴"
"󰣶"
"󰣸"
"󰣺"
];
generic-percent-icons = [
""
""
""
""
""
""
""
""
];
temp-icons = [
""
""
""
""
];
in in
{ {
programs.hyprland.enable = true; programs.hyprland.enable = true;
@@ -22,35 +45,144 @@ in
enable = true; enable = true;
extraPortals = [ extraPortals = [
pkgs.xdg-desktop-portal-hyprland pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
]; ];
}; };
users.users.jawz.packages = builtins.attrValues { users.users.jawz.packages = builtins.attrValues {
inherit (pkgs) inherit (pkgs)
# Wayland utilities # Wayland utilities
wl-clipboard wl-clipboard-rs
wf-recorder wf-recorder
grim grimblast # screenshots
slurp
wofi # Application launcher mako # notification daemon
mako # Notification daemon
libnotify # dependency of mako libnotify # dependency of mako
swaylock-effects # Screen locker swaylock-effects # screen locker
nautilus # File manager yazi # file manager
imv # images
; ;
}; };
home-manager.users.jawz = { home-manager.users.jawz = {
programs.kitty.enable = true; programs = {
wofi = {
enable = true;
settings = {
allow_images = true;
allow_markup = true;
insensitive = true;
width = "30%";
};
};
waybar = {
enable = true;
systemd.enable = true;
settings.main-bar = {
layer = "top";
tray.spacing = 5;
clock.format = "{:%H:%M %F}";
modules-left = [
"niri/workspaces"
"custom/sep"
"niri/window"
];
modules-center = [
"mpris"
];
modules-right = [
"cpu"
"temperature"
"memory"
"backlight"
"pulseaudio"
"battery"
"custom/recorder"
"clock"
"tray"
];
"hyprland/window".icon = true;
"niri/window".icon = true;
"niri/workspaces" = {
format = "{icon}";
format-icons = {
active = "";
default = "";
};
};
cava = {
format-icons = generic-percent-icons;
bars = 14;
method = "pulse";
framerate = 20;
bar_delimiter = 0;
stereo = false;
};
network = {
format = "{icon} {ipaddr}";
format-icons = net-icons;
};
# pulseaudio = {
# format = "{icon} {volume}%";
# format-muted = "vol: muted";
# format-icons.default = audio-icons;
# on-click = "pavucontrol";
# scroll-step = 1;
# };
cpu = {
interval = 1;
format = " {icon}";
format-icons = generic-percent-icons;
tooltip-format = "usage: {usage}%\nload: {load}";
};
memory = {
interval = 1;
format = " {icon}";
format-icons = generic-percent-icons;
tooltip-format = "{used} GiB / {total} GiB \n{percentage}%";
};
temperature = {
interval = 1;
critical-threshold = 80;
format = "{temperatureC}°C";
format-icons = temp-icons;
};
mpris = {
format = "{status_icon} {dynamic}";
dynamic-len = 60;
interval = 5;
status-icons = {
paused = "";
playing = "";
};
};
};
style = ''
* {
border: none;
font-family: "${config.stylix.fonts.monospace.name}";
font-size: ${toString config.stylix.fonts.sizes.desktop}pt;
color: #${colors.base04};
}
window#waybar {
background: #${colors.base00};
}
.module {
background: #${colors.base00};
margin: 0px 5px 0px 5px;
padding: 0px 0px 0px 5px;
}
#workspaces button {
padding: 0px;
border-bottom: 0px none transparent;
}
'';
};
};
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
settings = { settings = {
"$mainMod" = "SUPER";
exec-once = "${startupScript}/bin/start";
general = { general = {
gaps_in = 5; gaps_in = 5;
gaps_out = 10; gaps_out = 10;
border_size = 2; border_size = 3;
layout = "dwindle"; layout = "dwindle";
}; };
dwindle = { dwindle = {
@@ -59,49 +191,78 @@ in
force_split = 2; force_split = 2;
}; };
bind = [ bind = [
"$mainMod, return, exec, kitty" "${mod}, return, exec, ghostty"
"$mainMod, Q, killactive," "${mod}, Q, killactive,"
"$mainMod SHIFT, F, togglefloating," "${mod} SHIFT, F, togglefloating,"
"$mainMod, F, fullscreen," "${mod}, F, fullscreen,"
"$mainMod, T, pin," "${mod}, T, pin,"
"$mainMod, G, togglegroup," "${mod}, G, togglegroup,"
"$mainMod, bracketleft, changegroupactive, b" "${mod}, bracketleft, changegroupactive, b"
"$mainMod, bracketright, changegroupactive, f" "${mod}, bracketright, changegroupactive, f"
"$mainMod, S, exec, wofi --show drun icons" "${mod}, S, exec, wofi --show drun icons"
"$mainMod, P, pin, active" "${mod}, P, pin, active"
"${mod}, left, movefocus, l"
"${mod}, right, movefocus, r"
"${mod}, up, movefocus, u"
"${mod}, down, movefocus, d"
"${mod}, h, movefocus, l"
"${mod}, l, movefocus, r"
"${mod}, k, movefocus, u"
"${mod}, j, movefocus, d"
"${mod} SHIFT, left, movewindow, l"
"${mod} SHIFT, right, movewindow, r"
"${mod} SHIFT, up, movewindow, u"
"${mod} SHIFT, down, movewindow, d"
"${mod} SHIFT, h, movewindow, l"
"${mod} SHIFT, l, movewindow, r"
"${mod} SHIFT, k, movewindow, u"
"${mod} SHIFT, j, movewindow, d"
"${mod}, 1, workspace, 1"
"${mod}, 2, workspace, 2"
"${mod}, 3, workspace, 3"
"${mod}, 4, workspace, 4"
"${mod}, 5, workspace, 5"
"${mod}, 6, workspace, 6"
"${mod}, 7, workspace, 7"
"${mod}, 8, workspace, 8"
"${mod}, 9, workspace, 9"
"${mod}, 0, workspace, 10"
"${mod} SHIFT, 1, movetoworkspace, 1"
"${mod} SHIFT, 2, movetoworkspace, 2"
"${mod} SHIFT, 3, movetoworkspace, 3"
"${mod} SHIFT, 4, movetoworkspace, 4"
"${mod} SHIFT, 5, movetoworkspace, 5"
"${mod} SHIFT, 6, movetoworkspace, 6"
"${mod} SHIFT, 7, movetoworkspace, 7"
"${mod} SHIFT, 8, movetoworkspace, 8"
"${mod} SHIFT, 9, movetoworkspace, 9"
"${mod} SHIFT, 0, movetoworkspace, 10"
"${mod}, F3, exec, grimblast save area ~/Pictures/screenshots/$(date +'%Y-%m-%d_%H-%M-%S').png"
"${mod} SHIFT, F3, exec, grimblast save screen ~/Pictures/screenshots/$(date +'%Y-%m-%d_%H-%M-%S').png"
];
binde = [
"${mod} SHIFT, h, moveactive, -20 0"
"${mod} SHIFT, l, moveactive, 20 0"
"${mod} SHIFT, k, moveactive, 0 -20"
"${mod} SHIFT, j, moveactive, 0 20"
"${mod} CTRL, l, resizeactive, 30 0"
"${mod} CTRL, h, resizeactive, -30 0"
"${mod} CTRL, k, resizeactive, 0 -10"
"${mod} CTRL, j, resizeactive, 0 10"
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+" ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-" ",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-"
"$mainMod, left, movefocus, l"
"$mainMod, right, movefocus, r"
"$mainMod, up, movefocus, u"
"$mainMod, down, movefocus, d"
"$mainMod, h, movefocus, l"
"$mainMod, l, movefocus, r"
"$mainMod, k, movefocus, u"
"$mainMod, j, movefocus, d"
"$mainMod SHIFT, h, movewindow, l"
"$mainMod SHIFT, l, movewindow, r"
"$mainMod SHIFT, k, movewindow, u"
"$mainMod SHIFT, j, movewindow, d"
];
binde = [
"$mainMod SHIFT, h, moveactive, -20 0"
"$mainMod SHIFT, l, moveactive, 20 0"
"$mainMod SHIFT, k, moveactive, 0 -20"
"$mainMod SHIFT, j, moveactive, 0 20"
"$mainMod CTRL, l, resizeactive, 30 0"
"$mainMod CTRL, h, resizeactive, -30 0"
"$mainMod CTRL, k, resizeactive, 0 -10"
"$mainMod CTRL, j, resizeactive, 0 10"
]; ];
bindm = [ bindm = [
"$mainMod, mouse:272, movewindow" "${mod}, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow" "${mod}, mouse:273, resizewindow"
]; ];
}; };
}; };

97
flake.lock generated
View File

@@ -125,27 +125,28 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1759135438, "lastModified": 1757147654,
"narHash": "sha256-2GLoM04OmwN7lVxUZI5y4zw/nFbxkVFkJmkOv4kzsdU=", "narHash": "sha256-mGoonbnnd38MZS/H80/vbXCHCxl6KlFup/XKK+zcAuY=",
"owner": "marienz", "owner": "marienz",
"repo": "nix-doom-emacs-unstraightened", "repo": "nix-doom-emacs-unstraightened",
"rev": "7b6f3ca8d26af16e435a9d7d6a27fde60df72312", "rev": "ad01165af00765af07989b6ad14115960ac675f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "marienz", "owner": "marienz",
"repo": "nix-doom-emacs-unstraightened", "repo": "nix-doom-emacs-unstraightened",
"rev": "ad01165af00765af07989b6ad14115960ac675f8",
"type": "github" "type": "github"
} }
}, },
"doomemacs": { "doomemacs": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1758860516, "lastModified": 1757106921,
"narHash": "sha256-ulQq9+RHIQELZVQuXsLQInqeAhOCDqRltUDRVBjQ1c0=", "narHash": "sha256-vHwgENjip2+AFzs4oZfnKEAJKwf5Zid7fakImvxxQUw=",
"owner": "doomemacs", "owner": "doomemacs",
"repo": "doomemacs", "repo": "doomemacs",
"rev": "1d1d17e9c910146731cb7b19d5bcbf6c4b283a74", "rev": "8f55404781edacf66fa330205533b002de3fb5ee",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -164,11 +165,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759111708, "lastModified": 1757124175,
"narHash": "sha256-vFFue5sy7YRPhQQGW9kiCj+tAY3Gfm05svmDLFt5FIw=", "narHash": "sha256-drA0+kWXGrTgvhlsCiEE7VJ+vFsPi74p32n/7L5L5aU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "c8f778ca07cc9d8182599be4e794db6c8e03682e", "rev": "802b82be7856f6350d5e9ccb536fb4e20cb82069",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -304,6 +305,22 @@
"type": "github" "type": "github"
} }
}, },
"fonts": {
"flake": false,
"locked": {
"lastModified": 1759200391,
"narHash": "sha256-S5LwvPL7sKgwKUhCyTpcuWUxCq57RFh7wbZ6rIc5AgU=",
"ref": "refs/heads/master",
"rev": "edea9d2aaf2f4e0481fbbb8e26f68a9f39248e3f",
"revCount": 2,
"type": "git",
"url": "https://git.servidos.lat/jawz/fonts.git"
},
"original": {
"type": "git",
"url": "https://git.servidos.lat/jawz/fonts.git"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -456,11 +473,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1759094452, "lastModified": 1759169434,
"narHash": "sha256-j7IOTFnQRDjX4PzYb2p6CPviAc8cDrcorzGpM8J89uM=", "narHash": "sha256-1u6kq88ICeE9IiJPditYa248ZoEqo00kz6iUR+jLvBQ=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "f854b5bffbdd13cfe7edad0ee157d6947ff99619", "rev": "38c1e72c9d81fcdad8f173e06102a5da18836230",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -649,11 +666,11 @@
"sudoku-solver": "sudoku-solver" "sudoku-solver": "sudoku-solver"
}, },
"locked": { "locked": {
"lastModified": 1758693316, "lastModified": 1759213850,
"narHash": "sha256-cy8CdWOyDJdIe2gVPP3mtRIYXwv8m08HhLet8eSyrHM=", "narHash": "sha256-KnFUzXjSOtSG9U4U4OJonCTZaMWqJjXvHL1PQW994A4=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "64a81ca78d03816ddcbbdc8a7b6186c975c6653a", "rev": "38959dc37b09d1cb037df02086e4d07b9ef30b80",
"revCount": 104, "revCount": 105,
"type": "git", "type": "git",
"url": "https://git.servidos.lat/jawz/scripts.git" "url": "https://git.servidos.lat/jawz/scripts.git"
}, },
@@ -770,11 +787,11 @@
}, },
"nixpkgs-small": { "nixpkgs-small": {
"locked": { "locked": {
"lastModified": 1759008180, "lastModified": 1759250113,
"narHash": "sha256-hVpxYhilbBxQj0D6u6hUb6OXhNl85xIdhUE23AmqBdA=", "narHash": "sha256-apF3ww4pPkxHI5c424Z6VYdImge1iZSP6TOH45lIqxU=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9a51fe84a7214f70a17e5d7ce085385baa24ee29", "rev": "f579c51fd27e9f66c8236b26a47ed78b315f785d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -786,11 +803,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1758690382, "lastModified": 1759036355,
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e643668fd71b949c53f8626614b21ff71a07379d", "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -802,11 +819,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1758791193, "lastModified": 1759143472,
"narHash": "sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e+HYf0=", "narHash": "sha256-TvODmeR2W7yX/JmOCmP+lAFNkTT7hAxYcF3Kz8SZV3w=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "25e53aa156d47bad5082ff7618f5feb1f5e02d01", "rev": "5ed4e25ab58fd4c028b59d5611e14ea64de51d23",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -845,11 +862,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759136191, "lastModified": 1759260470,
"narHash": "sha256-1FhgEzYRwLWUWjm/csTr+OmzRVGgvlUDySqhFOyhPGM=", "narHash": "sha256-7KFWm6l+qJl+b1XAx9D8isjCb2kluJEGzquZxmJPEL4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nur", "repo": "nur",
"rev": "c7f19a28eaa25be9451bd48508eabf2b386fb72d", "rev": "2b8508603232941676978619d6d4b34fc9e0b486",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -907,9 +924,26 @@
"type": "github" "type": "github"
} }
}, },
"qbit_manage": {
"flake": false,
"locked": {
"lastModified": 1758160887,
"narHash": "sha256-cTxM3nHQQto7lpoNjShYcCbJCSYiwS9bKqw0DWAjw6A=",
"owner": "StuffAnThings",
"repo": "qbit_manage",
"rev": "21812368bc5366f3388dfb21769fee1da48083c5",
"type": "github"
},
"original": {
"owner": "StuffAnThings",
"repo": "qbit_manage",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"doom-emacs": "doom-emacs", "doom-emacs": "doom-emacs",
"fonts": "fonts",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"jawz-scripts": "jawz-scripts", "jawz-scripts": "jawz-scripts",
@@ -920,6 +954,7 @@
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"nixtendo-switch": "nixtendo-switch", "nixtendo-switch": "nixtendo-switch",
"nur": "nur", "nur": "nur",
"qbit_manage": "qbit_manage",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"stylix": "stylix", "stylix": "stylix",
"ucodenix": "ucodenix", "ucodenix": "ucodenix",
@@ -933,11 +968,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759030640, "lastModified": 1759188042,
"narHash": "sha256-53VP3BqMXJqD1He1WADTFyUnpta3mie56H7nC59tSic=", "narHash": "sha256-f9QC2KKiNReZDG2yyKAtDZh0rSK2Xp1wkPzKbHeQVRU=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "9ac51832c70f2ff34fcc97b05fa74b4a78317f9e", "rev": "9fcfabe085281dd793589bdc770a2e577a3caa5d",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -6,17 +6,13 @@
nixpkgs-unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable";
ucodenix.url = "github:e-tho/ucodenix"; ucodenix.url = "github:e-tho/ucodenix";
doom-emacs = { doom-emacs = {
url = "github:marienz/nix-doom-emacs-unstraightened"; url = "github:marienz/nix-doom-emacs-unstraightened/ad01165af00765af07989b6ad14115960ac675f8";
inputs.nixpkgs.follows = ""; inputs.nixpkgs.follows = "";
}; };
jawz-scripts = { jawz-scripts = {
url = "git+https://git.servidos.lat/jawz/scripts.git"; url = "git+https://git.servidos.lat/jawz/scripts.git";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
wallpapers = {
url = "git+https://git.servidos.lat/jawz/wallpapers.git";
flake = false;
};
nur = { nur = {
url = "github:nix-community/nur"; url = "github:nix-community/nur";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -49,6 +45,18 @@
url = "github:nix-community/nixos-generators"; url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
wallpapers = {
url = "git+https://git.servidos.lat/jawz/wallpapers.git";
flake = false;
};
fonts = {
url = "git+https://git.servidos.lat/jawz/fonts.git";
flake = false;
};
qbit_manage = {
url = "github:StuffAnThings/qbit_manage";
flake = false;
};
}; };
outputs = outputs =
{ self, jawz-scripts, ... }@inputs: { self, jawz-scripts, ... }@inputs:

View File

@@ -27,6 +27,7 @@ in
services = enableList mkEnabled [ services = enableList mkEnabled [
"network" "network"
"nvidia" "nvidia"
"syncthing"
]; ];
dev = enableList mkEnabled [ dev = enableList mkEnabled [
"nix" "nix"

View File

@@ -1,8 +1,11 @@
{ {
lib,
pkgs, pkgs,
config,
... ...
}: }:
let let
shellType = config.my.shell.type;
krita-thumbnailer = pkgs.writeTextFile { krita-thumbnailer = pkgs.writeTextFile {
name = "krita-thumbnailer"; name = "krita-thumbnailer";
destination = "/share/thumbnailers/kra.thumbnailer"; destination = "/share/thumbnailers/kra.thumbnailer";
@@ -38,7 +41,8 @@ in
ghostty = { ghostty = {
enable = true; enable = true;
package = pkgs.ghostty; package = pkgs.ghostty;
enableBashIntegration = true; enableBashIntegration = shellType == "bash";
enableZshIntegration = shellType == "zsh";
installBatSyntax = true; installBatSyntax = true;
installVimSyntax = true; installVimSyntax = true;
}; };
@@ -130,7 +134,7 @@ in
../../secrets/ssh/root-private-ca.pem ../../secrets/ssh/root-private-ca.pem
]; ];
services = { services = {
flatpak.enable = true; flatpak.enable = lib.mkDefault false;
open-webui.enable = true; open-webui.enable = true;
scx = { scx = {
enable = true; enable = true;
@@ -151,7 +155,7 @@ in
}; };
sunshine = { sunshine = {
enable = true; enable = true;
autoStart = true; autoStart = false;
capSysAdmin = true; capSysAdmin = true;
openFirewall = true; openFirewall = true;
}; };

View File

@@ -24,25 +24,18 @@ in
cpuModelId = "00A50F00"; cpuModelId = "00A50F00";
}; };
}; };
hardware = { hardware.bluetooth = {
bluetooth = {
enable = true; enable = true;
settings.General = { settings.General = {
Enable = "Source,Sink,Media,Socket"; Enable = "Source,Sink,Media,Socket";
Experimental = true; Experimental = true;
}; };
}; };
opentabletdriver = {
enable = true;
daemon.enable = true;
};
};
boot = { boot = {
plymouth.enable = true; plymouth.enable = true;
consoleLogLevel = 0; consoleLogLevel = 0;
loader.timeout = 0; loader.timeout = 3;
kernelParams = [ kernelParams = [
"quiet"
"splash" "splash"
"boot.shell_on_fail" "boot.shell_on_fail"
"loglevel=3" "loglevel=3"
@@ -84,17 +77,11 @@ in
"usb_storage" "usb_storage"
"sd_mod" "sd_mod"
]; ];
luks.devices = luks.devices.nvme = {
let device = getUUID "e9618e85-a631-4374-b2a4-22c376d6e41b";
decryptLuks = uuid: {
device = getUUID uuid;
keyFile = "/keyfile"; keyFile = "/keyfile";
preLVM = true; preLVM = true;
}; };
in
{
nvme = decryptLuks "e9618e85-a631-4374-b2a4-22c376d6e41b";
};
}; };
}; };
fileSystems = fileSystems =

View File

@@ -38,6 +38,7 @@ in
"nvidia" "nvidia"
"printing" "printing"
"sound" "sound"
"syncthing"
]; ];
scripts = enableList mkEnabled [ scripts = enableList mkEnabled [
"tasks" "tasks"

View File

@@ -2,13 +2,30 @@
config, config,
lib, lib,
pkgs, pkgs,
inputs,
... ...
}: }:
let
customFonts = pkgs.stdenvNoCC.mkDerivation {
name = "custom-fonts";
src = inputs.fonts;
installPhase = ''
mkdir -p $out/share/fonts
find $src -type f \( \
-name "*.ttf" -o \
-name "*.otf" -o \
-name "*.woff" -o \
-name "*.woff2" \
\) -exec cp {} $out/share/fonts/ \;
'';
};
in
{ {
options.my.apps.fonts.enable = lib.mkEnableOption "additional fonts and typography"; options.my.apps.fonts.enable = lib.mkEnableOption "additional fonts and typography";
config = lib.mkIf config.my.apps.fonts.enable { config = lib.mkIf config.my.apps.fonts.enable {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ]; nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ];
fonts.packages = builtins.attrValues { fonts.packages = builtins.attrValues {
inherit customFonts;
inherit (pkgs) inherit (pkgs)
symbola symbola
comic-neue comic-neue

View File

@@ -14,7 +14,7 @@
"doom/templates/programming.org".source = ../../dotfiles/doom/templates/programming.org; "doom/templates/programming.org".source = ../../dotfiles/doom/templates/programming.org;
}; };
services.lorri.enable = true; services.lorri.enable = true;
programs.bash.shellAliases = { programs.${config.my.shell.type}.shellAliases = {
edit = "emacsclient -t"; edit = "emacsclient -t";
e = "edit"; e = "edit";
}; };

View File

@@ -5,11 +5,13 @@
... ...
}: }:
let let
shellType = config.my.shell.type;
packages = builtins.attrValues { packages = builtins.attrValues {
inherit (pkgs) inherit (pkgs)
nixfmt-rfc-style # formatting nixfmt-rfc-style # formatting
cachix # binary cache management cachix # binary cache management
nixd # language server for Nix nixd # language server for Nix
deadnix # detext unused/uneeded dependencies
statix # linter for Nix expressions statix # linter for Nix expressions
; ;
}; };
@@ -31,5 +33,12 @@ in
}; };
config = lib.mkIf config.my.dev.nix.enable { config = lib.mkIf config.my.dev.nix.enable {
users.users.jawz = { inherit packages; }; users.users.jawz = { inherit packages; };
home-manager.users.jawz.programs.${shellType}.shellAliases = {
nixformat = ''
deadnix -e && \
nix run nixpkgs#nixfmt-tree && \
statix fix
'';
};
}; };
} }

View File

@@ -16,21 +16,33 @@
inherit (inputs.jawz-scripts.packages.x86_64-linux) download; inherit (inputs.jawz-scripts.packages.x86_64-linux) download;
in in
{ {
home-manager.users.jawz = { home-manager.users.jawz.programs.${config.my.shell.type} = {
programs.bash = {
shellAliases = { shellAliases = {
dl = "${download}/bin/download -u jawz -i"; dl = "${download}/bin/download -u jawz -i";
comic = ''dl "$(cat "$LC" | fzf --multi --exact -i)"''; comic = ''dl "$(cat "$LC" | fzf --multi --exact -i)"'';
gallery = ''dl "$(cat "$LW" | fzf --multi --exact -i)"''; gallery = ''dl "$(cat "$LW" | fzf --multi --exact -i)"'';
}; };
}
// (
if config.my.shell.type == "bash" then
{
initExtra = '' initExtra = ''
list_root=$XDG_CONFIG_HOME/jawz/lists/jawz list_root=$XDG_CONFIG_HOME/jawz/lists/jawz
export LW=$list_root/watch.txt export LW=$list_root/watch.txt
export LI=$list_root/instant.txt export LI=$list_root/instant.txt
export LC=$list_root/comic.txt export LC=$list_root/comic.txt
''; '';
}; }
}; else
{
initContent = ''
list_root=$XDG_CONFIG_HOME/jawz/lists/jawz
export LW=$list_root/watch.txt
export LI=$list_root/instant.txt
export LC=$list_root/comic.txt
'';
}
);
systemd.user = { systemd.user = {
services = services =
let let

View File

@@ -6,6 +6,7 @@
... ...
}: }:
let let
inherit (inputs) qbit_manage;
pkgsU = import inputs.nixpkgs-unstable { pkgsU = import inputs.nixpkgs-unstable {
system = "x86_64-linux"; system = "x86_64-linux";
config.allowUnfree = true; config.allowUnfree = true;
@@ -49,14 +50,7 @@ in
}; };
}; };
config = lib.mkIf (config.my.servers.qbittorrent.enable && config.my.secureHost) { config = lib.mkIf (config.my.servers.qbittorrent.enable && config.my.secureHost) {
home-manager.users.jawz = { home-manager.users.jawz.xdg.dataFile.vuetorrent.source = vuetorrent;
xdg = {
dataFile.vuetorrent.source = vuetorrent;
configFile."unpackerr.conf" = lib.mkIf config.my.servers.unpackerr.enable {
source = ../../dotfiles/unpackerr.conf;
};
};
};
sops.secrets = sops.secrets =
let let
mkQbitSecret = file: mode: { mkQbitSecret = file: mode: {
@@ -66,34 +60,34 @@ in
owner = config.users.users.jawz.name; owner = config.users.users.jawz.name;
path = "/home/jawz/.config/qBittorrent/ssl/${file}"; path = "/home/jawz/.config/qBittorrent/ssl/${file}";
}; };
mkUnpackerrSecret = {
sopsFile = ../../secrets/secrets.yaml;
owner = config.users.users.jawz.name;
};
in in
{ {
"certificates/qbit_cert" = mkQbitSecret "server.crt" "0644"; "certificates/qbit_cert" = mkQbitSecret "server.crt" "0644";
"certificates/qbit_key" = mkQbitSecret "server.key" "0600"; "certificates/qbit_key" = mkQbitSecret "server.key" "0600";
"unpackerr/sonarr-api" = mkUnpackerrSecret;
"unpackerr/radarr-api" = mkUnpackerrSecret;
}; };
systemd = { systemd = {
packages = [ pkgs.qbittorrent-nox ]; packages = [ pkgs.qbittorrent-nox ];
services = { services."qbittorrent-nox@jawz" = {
"qbittorrent-nox@jawz" = {
enable = true; enable = true;
overrideStrategy = "asDropin"; overrideStrategy = "asDropin";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
};
user = { user = {
services = { services = {
qbit_manage = { qbit_manage = {
restartIfChanged = true; restartIfChanged = true;
description = "Tidy up my torrents"; description = "Tidy up my torrents";
wantedBy = [ "default.target" ]; wantedBy = [ "default.target" ];
serviceConfig = serviceConfig = {
let
env = "/home/jawz/Development/Git/qbit_manage";
in
{
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 30; RestartSec = 30;
ExecStart = "${qbit_manageEnv}/bin/python ${env}/qbit_manage.py -r -c ${env}/config.yml"; ExecStart = "${qbit_manageEnv}/bin/python ${qbit_manage}/qbit_manage.py -r -c /home/jawz/.config/qbit_manage/config.yml";
}; };
}; };
unpackerr = lib.mkIf config.my.servers.unpackerr.enable { unpackerr = lib.mkIf config.my.servers.unpackerr.enable {
@@ -101,12 +95,20 @@ in
restartIfChanged = true; restartIfChanged = true;
description = "Run unpackerr"; description = "Run unpackerr";
wantedBy = [ "default.target" ]; wantedBy = [ "default.target" ];
environment = {
UN_FILE_MODE = "0664";
UN_DIR_MODE = "0775";
UN_SONARR_0_URL = config.my.servers.sonarr.local;
UN_SONARR_0_API_KEY = "filepath:${config.sops.secrets."unpackerr/sonarr-api".path}";
UN_SONARR_0_PATHS = "/srv/pool/multimedia/downloads/torrent";
UN_RADARR_0_URL = config.my.servers.radarr.local;
UN_RADARR_0_API_KEY = "filepath:${config.sops.secrets."unpackerr/radarr-api".path}";
UN_RADARR_0_PATHS = "/srv/pool/multimedia/downloads/torrent";
};
serviceConfig = { serviceConfig = {
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 30; RestartSec = 30;
ExecStart = '' ExecStart = "${pkgs.unpackerr}/bin/unpackerr";
${pkgs.unpackerr}/bin/unpackerr \
-c /home/jawz/.config/unpackerr.conf'';
}; };
}; };
}; };
@@ -118,17 +120,5 @@ in
}; };
}; };
}; };
networking.firewall =
let
ports = [
51411
51412
51413
];
in
{
allowedTCPPorts = ports ++ [ config.my.servers.qbittorrent.port ];
allowedUDPPorts = ports;
};
}; };
} }

View File

@@ -7,9 +7,9 @@ in
options.my.servers.stash = setup.mkOptions "stash" "xxx" 9999; options.my.servers.stash = setup.mkOptions "stash" "xxx" 9999;
config = lib.mkIf (cfg.enable && config.my.secureHost) { config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets = { sops.secrets = {
"stash/password".sopsFile = ../../secrets/env.yaml; "stash/password".sopsFile = ../../secrets/secrets.yaml;
"stash/jwt".sopsFile = ../../secrets/env.yaml; "stash/jwt".sopsFile = ../../secrets/secrets.yaml;
"stash/session".sopsFile = ../../secrets/env.yaml; "stash/session".sopsFile = ../../secrets/secrets.yaml;
}; };
services.stash = { services.stash = {
inherit (cfg) enable; inherit (cfg) enable;

View File

@@ -0,0 +1,120 @@
{ config, lib, ... }:
let
inherit (config.networking) hostName;
isMainHost = hostName == "workstation";
mkMobile =
path:
lib.mkIf isMainHost {
inherit path;
ignorePerms = false;
devices = [
"galaxy"
"phone"
];
};
in
{
options.my.services.syncthing.enable = lib.mkEnableOption "Syncthing file synchronization";
config = lib.mkIf (config.my.services.syncthing.enable && config.my.secureHost) {
sops.secrets = {
"syncthing_keys/${hostName}" = {
sopsFile = ../../secrets/keys.yaml;
owner = config.users.users.jawz.name;
inherit (config.users.users.jawz) group;
path = "/home/jawz/.config/syncthing/key.pem";
};
"syncthing_certs/${hostName}" = {
sopsFile = ../../secrets/keys.yaml;
owner = config.users.users.jawz.name;
inherit (config.users.users.jawz) group;
path = "/home/jawz/.config/syncthing/cert.pem";
};
"syncthing_password" = {
sopsFile = ../../secrets/keys.yaml;
};
};
services.syncthing = {
enable = true;
user = "jawz";
group = "users";
overrideDevices = true;
overrideFolders = true;
openDefaultPorts = true;
key = config.sops.secrets."syncthing_keys/${hostName}".path;
cert = config.sops.secrets."syncthing_certs/${hostName}".path;
guiAddress = "${config.my.ips."${hostName}"}:8384";
settings = {
options = {
natEnabled = false;
relaysEnabled = false;
globalAnnounceEnabled = false;
};
gui = {
user = "jawz";
password = config.sops.secrets.syncthing_password.path;
};
devices = {
server.id = "BG6PF7S-KATABWO-7WAZFMX-6YO7IS3-WQTMR3M-VSOSV7V-HFFMNNH-BFX2EQ4";
miniserver.id = "HDYEGIR-GFU7ONK-MOOJUFH-N3L3XHX-SXWN3FI-O23K6LD-BJENQK5-VIPV2AT";
workstation.id = "4E4KJ6M-MSTNBVF-D7CNHDW-DUTB3VR-SXKZ4NH-ZKAOMF5-V24JECJ-4STSZAA";
galaxy.id = "UAZ5YDV-YUFBXOY-QMS6S6R-WPIIKZI-4OPPW5L-G4OVUPO-YW5KFYY-YASRAAV";
phone.id = "OSOX2VZ-AO2SA3C-BFB6NKF-K6CR6WX-64TDBKW-RRKEKJ4-FKZE5CV-J2RGJAJ";
wg-friend1 = {
id = "XBIYCD4-EFKS5SK-WFF73CU-P37GXVH-OMWEIA4-6KC5F3L-U5UQWSF-SYNNRQF";
addresses = [ "tcp://${config.my.ips.wg-friend1}:22000" ];
introducer = false;
autoAcceptFolders = false;
paused = false;
};
};
folders = {
cache = mkMobile "~/Downloads/cache/";
friends = mkMobile "~/Pictures/artist/friends/";
forme = mkMobile "~/Pictures/art for me/";
comfy = mkMobile "~/Development/AI/ComfyUI/output/";
gdl = {
path = "~/.config/jawz/";
ignorePerms = false;
devices = [
"server"
"miniserver"
"workstation"
];
};
librewolf = {
path = "~/.librewolf/";
ignorePerms = false;
copyOwnershipFromParent = true;
type = if isMainHost then "sendonly" else "receiveonly";
devices = [
"server"
"miniserver"
"workstation"
];
};
notes = {
path = "~/Documents/Notes";
ignorePerms = false;
devices = [
"galaxy"
"phone"
"server"
"miniserver"
"workstation"
];
};
friend_share = {
path = "~/Pictures/encrypted/friends";
ignorePerms = false;
type = "sendreceive";
devices = [
"server"
"workstation"
"wg-friend1"
];
};
};
};
};
};
}

20
modules/shell/config.nix Normal file
View File

@@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
{
options.my.shell.type = lib.mkOption {
type = lib.types.enum [
"bash"
"zsh"
];
default = "bash";
description = "The shell to use system-wide (bash or zsh)";
};
config = {
users.users.jawz.shell = pkgs.${config.my.shell.type};
programs.zsh.enable = config.my.shell.type == "zsh";
};
}

View File

@@ -7,6 +7,11 @@
{ {
options.my.shell.multimedia.enable = lib.mkEnableOption "multimedia CLI tools and codecs"; options.my.shell.multimedia.enable = lib.mkEnableOption "multimedia CLI tools and codecs";
config = lib.mkIf config.my.shell.multimedia.enable { config = lib.mkIf config.my.shell.multimedia.enable {
sops.secrets."gallery-dl/secrets" = {
sopsFile = ../../secrets/gallery.yaml;
owner = "jawz";
mode = "0400";
};
home-manager.users.jawz.programs = { home-manager.users.jawz.programs = {
yt-dlp = { yt-dlp = {
enable = true; enable = true;
@@ -21,6 +26,15 @@
enable = true; enable = true;
settings = import ../../dotfiles/gallery-dl.nix; settings = import ../../dotfiles/gallery-dl.nix;
}; };
${config.my.shell.type} = {
initExtra = lib.mkAfter ''
if [ -r "${config.sops.secrets."gallery-dl/secrets".path}" ]; then
set -a # automatically export all variables
source "${config.sops.secrets."gallery-dl/secrets".path}"
set +a # stop automatically exporting
fi
'';
};
}; };
users.users.jawz.packages = builtins.attrValues { users.users.jawz.packages = builtins.attrValues {
inherit (pkgs) inherit (pkgs)

View File

@@ -5,6 +5,9 @@
inputs, inputs,
... ...
}: }:
let
shellType = config.my.shell.type;
in
{ {
options.my.shell.tools.enable = lib.mkEnableOption "shell tools and utilities"; options.my.shell.tools.enable = lib.mkEnableOption "shell tools and utilities";
config = lib.mkIf config.my.shell.tools.enable { config = lib.mkIf config.my.shell.tools.enable {
@@ -14,29 +17,15 @@
enable = true; enable = true;
package = pkgs.htop-vim; package = pkgs.htop-vim;
}; };
eza = {
enable = true;
git = true;
icons = "auto";
};
zoxide = { zoxide = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = shellType == "bash";
}; enableZshIntegration = shellType == "zsh";
bash = {
initExtra = ''
if command -v fzf-share >/dev/null; then
source "$(fzf-share)/key-bindings.bash"
source "$(fzf-share)/completion.bash"
fi
'';
shellAliases = {
cd = "z";
hh = "hstr";
ls = "eza --icons --group-directories-first";
rm = "trash";
b = "bat";
f = "fzf --multi --exact -i";
unique-extensions = ''
fd -tf | rev | cut -d. -f1 | rev |
tr '[:upper:]' '[:lower:]' | sort |
uniq --count | sort -rn'';
};
}; };
bat = { bat = {
enable = true; enable = true;
@@ -67,6 +56,40 @@
PASSWORD_STORE_SAFECONTENT = "true"; PASSWORD_STORE_SAFECONTENT = "true";
}; };
}; };
${shellType} = {
shellAliases = {
cd = "z";
hh = "hstr";
ls = "eza --icons --group-directories-first";
rm = "trash";
b = "bat";
f = "fzf --multi --exact -i";
unique-extensions = ''
fd -tf | rev | cut -d. -f1 | rev |
tr '[:upper:]' '[:lower:]' | sort |
uniq --count | sort -rn'';
};
}
// (
if shellType == "bash" then
{
initExtra = ''
if command -v fzf-share >/dev/null; then
source "$(fzf-share)/key-bindings.bash"
source "$(fzf-share)/completion.bash"
fi
'';
}
else
{
initContent = ''
if command -v fzf-share >/dev/null; then
source "$(fzf-share)/key-bindings.bash"
source "$(fzf-share)/completion.bash"
fi
'';
}
);
}; };
programs = { programs = {
starship.enable = true; starship.enable = true;
@@ -81,7 +104,6 @@
inherit (pkgs) inherit (pkgs)
ripgrep # modern grep ripgrep # modern grep
du-dust # rusty du similar to gdu du-dust # rusty du similar to gdu
eza # like ls but with colors
fd # modern find, faster searches fd # modern find, faster searches
fzf # fuzzy finder! super cool and useful fzf # fuzzy finder! super cool and useful
gdu # disk-space utility checker, somewhat useful gdu # disk-space utility checker, somewhat useful

View File

@@ -1,7 +1,3 @@
stash:
password: ENC[AES256_GCM,data:DVtKQmtOQA/jS3ZncbuPKMukJyo=,iv:FSLl4Qbq58X0WNjqz8LLOW6XpBQxE5W7L9yOTBQkBOA=,tag:Qun+5Vf193Qt8n+Yp9lBJg==,type:str]
jwt: ENC[AES256_GCM,data:C1RcyQn3j5LaCSDGPjBAm6RYsqvVn1HIFxxBP4FNx7NVCroju4VEtkV98Ve0D6Z60L3mB1yOqi8OrEgXNJv+vw==,iv:t8pmLzXwg1g9kkiL98ql9YLaSitaXoJiiLiUf3G1cWk=,tag:D3mdFIe3m3219E4V8yhmpg==,type:str]
session: ENC[AES256_GCM,data:ifUXaGIO7xKPgtTVEeERx0OyBDni2eoWo7dFxazQ4W2DBrnzQfJ7Plqt8EYLhQQRP4I6e33+oEKNzpuiG+XJCw==,iv:AOI0lMcTT02GpOCQuX74hPBKth3WdFN2W2wlqKgrKJM=,tag:1I+brf4G2oKE7o2E90q/CQ==,type:str]
gitea: ENC[AES256_GCM,data:8o+U4qFdyIhCPNlYyflQIuLHsQHtbT6G/a0OyCUeg9DtIeABXNVFhiy4iFRuIF0=,iv:AYwqDRNML1XuzwQnD4VmI4rKWYfTJjOjibrAbI5qgcA=,tag:UPL3UlETdkoFXLihEIGcSw==,type:str] gitea: ENC[AES256_GCM,data:8o+U4qFdyIhCPNlYyflQIuLHsQHtbT6G/a0OyCUeg9DtIeABXNVFhiy4iFRuIF0=,iv:AYwqDRNML1XuzwQnD4VmI4rKWYfTJjOjibrAbI5qgcA=,tag:UPL3UlETdkoFXLihEIGcSw==,type:str]
shiori: ENC[AES256_GCM,data:tV7+1GusZvcli8dM86xOD71dc2mzcyfQwMeTh//LDb0=,iv:ED9wR6QjQgwd9Ll/UC5FK3CyYK3b0RniC/D6Y0nGEOI=,tag:X/aopMc2vhnRW2iTphFflQ==,type:str] shiori: ENC[AES256_GCM,data:tV7+1GusZvcli8dM86xOD71dc2mzcyfQwMeTh//LDb0=,iv:ED9wR6QjQgwd9Ll/UC5FK3CyYK3b0RniC/D6Y0nGEOI=,tag:X/aopMc2vhnRW2iTphFflQ==,type:str]
flame: ENC[AES256_GCM,data:XsYRsA2xs+juWje2Od2Yl2xIvU0OS8xMrtwtcK/0NyyRrg==,iv:FR8lHsNQNCaOy4P+7BsIjNCz+H38i5RlwLYQ4fpB2+w=,tag:61EV7H04pcr1bSX4nSvlpw==,type:str] flame: ENC[AES256_GCM,data:XsYRsA2xs+juWje2Od2Yl2xIvU0OS8xMrtwtcK/0NyyRrg==,iv:FR8lHsNQNCaOy4P+7BsIjNCz+H38i5RlwLYQ4fpB2+w=,tag:61EV7H04pcr1bSX4nSvlpw==,type:str]
@@ -52,7 +48,7 @@ sops:
QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb QXRUYWtGcWZCVW11U3VYRktuUjlCbDgKsTK4WhUza/JuoDTU3uATa6fq/8eYzxtb
9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q== 9BUK1ddzx9Mghea9XBMS17YGtGmW800OsLBomb3SINnOFvejcnKf8Q==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-09-28T03:54:20Z" lastmodified: "2025-10-02T19:58:54Z"
mac: ENC[AES256_GCM,data:nPA5SF8fw+x0t5O1aqR7bZk2dpSjf37KKWJ976vx+TjaxWDz8DQVBUNuQmy6d3uX0TT6ysmsA8S4VqjgyRKli1vdEXWXPyULyUwPv3jtR4/NS2hnFabglOn0BhjfNrcArUkdyaQBm02Y96u2XIa0LcCyPOpJauIl5SbSSHaULQs=,iv:Qh7p70oFZbp4mAzDX87hkbPW22S4SoTY/CDzJabQQ0M=,tag:2YGmN2E3y1dcqW5M8WDvUQ==,type:str] mac: ENC[AES256_GCM,data:xplk6z63m35V1IL/PpvnjNU1+bUrrplGg60SufnGV6307V520Ajo63dKkQ5yMuiGq/JQETc+sdm9GLQrmOflwhl92YwK2+/11MlMp0vMkC91mAJsobLUmNt3WXVml54CiCbvH+c8fH0T0pIaLGK3MxSRFX//hrfLjSCAvwQagsE=,iv:oE6g0WPM4Rf3YrdgkIdE8qWfiWQxbZ62Axa56ZQYWSA=,tag:QMaWvCD3sbHTv1NFctIBZA==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.10.2

44
secrets/gallery.yaml Normal file
View File

@@ -0,0 +1,44 @@
gallery-dl:
secrets: ENC[AES256_GCM,data:5K9B7XZ3dOL1BIXLUvlE5D9xLkKkagvh2mMkFtd+6gJUJqPDwerp9QDcATeqiJLz54DGB1JI6podlCm8N3qVbA3aMHroSiAd2YaldqvLkh76vGDhfI6pAfYWmjLYR7KR/Qy5sy7qhkNmvhwV34JiqXMdfDaWDE9y9Zgqq3lyS/8mYixNh0sz9Pc7ohcIHpwVNcESxaPW9BCpzHOwhtZKqqgLTUrHCyO14YR1+hB+nGXnmtaFcFVDjb0ctHsgL8+R5Kw1oAE7s8fM+ghnKNqPusSVomTaNIQI8VMbk0YQyPsHn9zKEocjUEpwX7WdWmNLNjuYl29+NnJS7VCSOsZmqhNlKJMIvQ3v19UNIQG5/hB3QlBIlEr615W8l5q8jdD+twzufGkEnCIfZzn+T9UDijNlmZhK19lhOpF+mdi7vpzyJFrIK0JfFfRYnyvXOHIcDKK4rsMFTT8U04WM9PpYrUxWDmMMlAZsJ+Jj6d0jpRYsoB4C5ODKRa5V27wnhp9DQiQOAqvfYnUtCAFnFEqVu7qaa5WcQhG211Nhdcpvtyp/8sDXgZBTT/E8JTtG8YbSNUZxw3xE7fyp4Bdnb+bxbdcgVRGkFwZShu2qWF1Ckj4Lr2xzaBu+fGtUDqPnMq0PgQeRIVP/NsbtavrlISWhB5Ctw4QSRvGMTi5JqvhmLEWi5wvimYzt91aGj2tm/k8AOTtwwjK4iZyWKxE1PsjwmKwiEJZvTRKLTySxomqHDg1TOKGmAcJK/wCG7kO9ETp+yZxv1Sv3L7ZeCfyzM4fupRiPytbIMfeJsq6PxTpJGlD7lDC0EXUjRKV8JD8vnP91F0HXoZQ3tyb27/1BmZ/nSx3iGcmXhlV7eLgLS3MIpBChjget8d7oE4NnxBGrX8YoVFJzAUH5UawVNFHa3y/rKqUsS51vn0Q0Wxl+uK3KtK90TdML6VNW8HywWiNer5tbIY+Kl6I=,iv:4Sa8LyNhp2EyarQpQ19jJZFUAINmfuw3EnUVhiYGCJg=,tag:o5rLdUbGjao+SJ9Cqtr+jA==,type:str]
sops:
age:
- recipient: age1lufn6t35gs4wgevyr2gud4eec7lvkn7pgnnv4tja64ww3hef7gqq8fas37
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIY05VY1FPOU5FTFFnazlQ
RStQVExNdWIySE5qSVMxMFd3NFM0L2VCRWxzClhleTEzNTVOaVl1cGovM1hmWEoy
eGNxZ2E4U1pRNlBaTDZ0ZW4wbVZjT0EKLS0tIEJ0ZXR5blBlckIxSVlmT0hxY1Bz
TGVGRFgzaHI5VW5GdjJvcmswUWFvaWMKQCK47p7OQUXq45aYo9BkkcGrzmPKCJOI
OKu/+W4xYOnfIo03GGL6f4LrbCaKr1mdtsRnuHmaFXiXdaKbZFDEhw==
-----END AGE ENCRYPTED FILE-----
- recipient: age17jlsydpgl35qx5ahc3exu44jt8dfa63chymt6xqp9xx0r6dh347qpg55cz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJb0MzQVZvY0ZCNlAwT2Qw
RnJOUXJISFg1Smt4VWdoYy9PT2hQNG1MNm5ZCmVhUFI5UGpQUkR4MTA4VktuVyt1
TXlVZ3haNjd4OHNYNE4rVzd2MkNGTkEKLS0tICtkZDRvODBZaGRCTmdlUkRESjMv
bElZc21OSXJsZnZaSHF5ZTBDSlNXaHcKixDNfM98AqYagtidcYE3lgkFM9XTIrVg
gbYoSOk5rL9Hi2rvP+BCEgsrRSuExGKVvdqODYltD+nNfTI1zcnTFg==
-----END AGE ENCRYPTED FILE-----
- recipient: age15hx530yrqmhm80vsjmffyg9deq9gssj7hl5rsqdnsn3dwegj9qusv4sjf5
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKZncwdllnQjYyc284RXVm
VVVJTHI1Z25FWXBhY3o1SmgyVW01alRlcVVVCklDNDYvMktDU1U4L0RTMVgvaU0v
d0NlK3pqYzZ4NFRUd3V1WHZTTkVpK00KLS0tIHVQSmRDekcrK093QUJQVHNZcUg3
WGVJQm5MdGhMbzd5RkNPU1VuNTZVeFkKQq/WyqLOOde86NNYnVq0Lw31YB2OcLY/
h/HtFN4GynmBOYcTuqIvBJ/TksXs30kWFKW2XSY0jP0JSY7Yo0BxhA==
-----END AGE ENCRYPTED FILE-----
- recipient: age13w4elx3x6afrte2d82lak59mwr2k25wfz3hx79tny6sfdk66lqjq989dzl
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGZU0zK3V6M2IyMkFOdm5U
UG1oVi9IMzM0SllUQUMwMlh4NkF2V2pCcWtvCk1kR0QxVWRPM1pyWmdVOE1UdWxs
NldjZXBOZU1uK1JELzF1blhTQy83Zm8KLS0tIFFVRjVScVVGa09sbEdBdjNXNTZR
d0YvYk8vNitDbzNCQ1VqS20xUWx6ZDgK+kIRATTtC0Vd7/uPf8E4pIans79Ksh6J
Y77+owFFw1AvQ3KvaI7QVfKW61MzxI+S1bWqI3ZNOJ19Qv4ZoVhnVg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-02T18:11:48Z"
mac: ENC[AES256_GCM,data:qKoRMXroUtMaH1yrgNQxUPX8FpUmLmNU29zyzfnKkmiLoPsWNsogHxNVkqosyvbW0y0w6XnQh4OrSd4FF3fi8ZuJfk54jDWO7jlXFRk+07OobPgngYvNXLw76BNkXnAtxcduV2cTuSY6XwnwE0LtxFDmkM8N/AxIC8jhKkGQtwY=,iv:n3yBotpOggFvSUnboAG1L7pJMMi1PfV8KsSHN3/Li8c=,tag:4D5TqqroQBZNKUYol/ZCHg==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2

View File

@@ -7,11 +7,14 @@ resilio:
user: ENC[AES256_GCM,data:31s2ihj2cN9C5Lyr2w==,iv:2MzKiRoDosawbeQ04LUKbfbSVFUUD6uUYynB6B0WNWw=,tag:GR0lXvLZAPof6WE3Verimg==,type:str] user: ENC[AES256_GCM,data:31s2ihj2cN9C5Lyr2w==,iv:2MzKiRoDosawbeQ04LUKbfbSVFUUD6uUYynB6B0WNWw=,tag:GR0lXvLZAPof6WE3Verimg==,type:str]
password: ENC[AES256_GCM,data:codFGm4O9QkI2+hbrVK3UqwFWETXyfl9y3Q5lY6UfnIRe/IqWG8Ibly1BUlh7OjKIepXm6m35e6QPioVSiUT5Ll1SIE=,iv:QWqKyKrvm2y2UM2Ir1COxjV0jgU8jTeu9ehnyeXTwCE=,tag:Xtr+r7EphaiLjGwK5gmsMQ==,type:str] password: ENC[AES256_GCM,data:codFGm4O9QkI2+hbrVK3UqwFWETXyfl9y3Q5lY6UfnIRe/IqWG8Ibly1BUlh7OjKIepXm6m35e6QPioVSiUT5Ll1SIE=,iv:QWqKyKrvm2y2UM2Ir1COxjV0jgU8jTeu9ehnyeXTwCE=,tag:Xtr+r7EphaiLjGwK5gmsMQ==,type:str]
kavita-token: ENC[AES256_GCM,data:kt3bTZNf4S7sKfbxzXc4Q+9yTPFTKzvEaR+mysBhhdnht+FuN9o9i9liqy2pKvB7WQmPnjQ/aYEYkcPSPg0NC5NwE7lNY7kUJtyHzYm2wkKqkkDIc/aI+dHhtX1SBF99ZpWEhmgnIA2HtCpYXUjkl4pUTKgNi0cn+bb1NULMY0zHyF2f7faOOKTWatQEuG1ZvBpiNIbPbsMznfdrWe9VEKrdtMg8IkK138Cn+EOSu0mCHdU=,iv:NCjegkB9/O6xq3fdWqhyVJy5YetqIpcDmD0yyBh3XXQ=,tag:IiqZY0mhqyUHJ61DRNHPlw==,type:str] kavita-token: ENC[AES256_GCM,data:kt3bTZNf4S7sKfbxzXc4Q+9yTPFTKzvEaR+mysBhhdnht+FuN9o9i9liqy2pKvB7WQmPnjQ/aYEYkcPSPg0NC5NwE7lNY7kUJtyHzYm2wkKqkkDIc/aI+dHhtX1SBF99ZpWEhmgnIA2HtCpYXUjkl4pUTKgNi0cn+bb1NULMY0zHyF2f7faOOKTWatQEuG1ZvBpiNIbPbsMznfdrWe9VEKrdtMg8IkK138Cn+EOSu0mCHdU=,iv:NCjegkB9/O6xq3fdWqhyVJy5YetqIpcDmD0yyBh3XXQ=,tag:IiqZY0mhqyUHJ61DRNHPlw==,type:str]
stash:
password: ENC[AES256_GCM,data:ZYwrETIJ1K5RJePR9TvmPdVHpZY=,iv:nqIvm5MkSmZxgSLUpZC0Iq2QOp4lU9rh9wtE8FhO7a0=,tag:YIlj9iPGjDVewgtjq0tdag==,type:str]
jwt: ENC[AES256_GCM,data:qwv1UMpUPf/qYMtMpRikSCgpqtWphhM6+P+lg9FFxRwPIYXQDG/VIL4KNPwORFi9eMjSfDRhyh7kKHZFr9zs0w==,iv:bPo3oG7RIUjUlakOvI1FKnraB/jUTRWCDdP1eBHVdl8=,tag:S1WFJlxt0QeG5+pLHrprPg==,type:str]
session: ENC[AES256_GCM,data:R9WX7w05qb2tqh0oe2QSvzgkSgt7TxLw8yf7WQHmlavPXzTewO7M3MqDdmDPIirLhkcg13UjzlCZR6SFHd6ARg==,iv:qvtKJiady1fDlxH5LsfOtQ5gNhn2qr2DLtkRlglNwyw=,tag:iQQuwZyyzSzwIov1mSox6g==,type:str]
unpackerr:
sonarr-api: ENC[AES256_GCM,data:74/aSs7Q2tcDh9hPGm88h2hIneOcJ+P9HaCqoeuL6FQ=,iv:1AOpCii7ED1EyOFNCzvgRp5tR2ic1U6oRi7yg0hUcLk=,tag:k1miUivDQPxRgBWhXi9f+w==,type:str]
radarr-api: ENC[AES256_GCM,data:bZiJNk/ewREIBss+z4daVwL1UyI4rt8GxVmC/bpTNvc=,iv:li2kMzOgdWtLLr4l244P082Z0jwDB2aEC6iRYt3o/HY=,tag:mi9SY/pT2qTIzR/ngp8bGg==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1lufn6t35gs4wgevyr2gud4eec7lvkn7pgnnv4tja64ww3hef7gqq8fas37 - recipient: age1lufn6t35gs4wgevyr2gud4eec7lvkn7pgnnv4tja64ww3hef7gqq8fas37
enc: | enc: |
@@ -49,8 +52,7 @@ sops:
RmRyZldlMjUwMEdUUEpDS2JSa2tDTTAKp/pT+0cNnCuKVL+Z0fEMiw1PL9PB/nSM RmRyZldlMjUwMEdUUEpDS2JSa2tDTTAKp/pT+0cNnCuKVL+Z0fEMiw1PL9PB/nSM
QWVTo0Mt8Y6X0Xt0EAi9G5AYxADZ/mmEWPxB7RFgVAiMKtor5Gy1zw== QWVTo0Mt8Y6X0Xt0EAi9G5AYxADZ/mmEWPxB7RFgVAiMKtor5Gy1zw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-06-29T21:27:25Z" lastmodified: "2025-10-02T20:02:38Z"
mac: ENC[AES256_GCM,data:ZmUuxDXxfr6eJcjoC0F2A/JnU+/33jWXjCRWvkWZfduxFayF8bRZNOLgTzXeV//TGNEY38ba/VsTDqOiu0YWRFE7VaQd8xk9uKmzeCi8Djv2fI+TAwXUorrZJ2bUJQ/WCCm7hOQ2OEE1c7icr6YsPTtYC652Itm10FF4PrF+VpI=,iv:vKC/B0cfODXMZ1l2wA0iUaxwZgDwjKPVBekmc/6lSvU=,tag:tE3dmwDjtEEBTPtNM01JQA==,type:str] mac: ENC[AES256_GCM,data:DnbkeF+evVTMhYTg3OU528cRQ+jBiUl7Q7JZxyGRL6USjB2OdIRxqnnCH8L36K2hSAIkKQ/kojyJs+8Pgkx5uD/qsCbGlNT9pSBU1qPdSBxqJsVPxHZmkuf/QxGtE4pgV/50xJMrVyzAetWPZuxcYVfWAPszxDZcR5XDuD+Yjk4=,iv:i2Vt6nv6etIgaaoxsbVlxEnIhIx4adOQZFeyGM/4Saw=,tag:jugPmHU78lap7Hy7RJd9pg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.8.1 version: 3.10.2