Absolute imports aren't used in some of the files that need migration. I'll do it when I migrate them.
V2RX2Y7VB7Y3BHX3ALK4GTCMFJATMLCKIAT4U3XCYZZZIUBIIZ5QC HYWEG52CLGAF54BUZO53SGBVT6UKVPMW2BN5WX35OJSJ4RW4F6RAC OAEKH6K2OSMVEXCRQXUTVAQRQZIZCXGI7EBMUVGNE6XPROLVLM5QC 5YZRDAU4ABMFJIJEBGDRMLQKNHIOC22OK2ZJ4MOI4NELAGVVK5ZQC EI6RKRFQK7NXVUAD675ZYCC6VS5LMDKLYFW3IP35LZ37XPCSLCXQC VLQ45OFB6Q2PBFEV2LCV2UINWGUL5YFD4MJ3PWP464VZWLD75HAQC B5GYGICG3QPWKZXEVZCQMOHB47FUGQL6RGOW2MU2WEACNDSHYXNQC CJ6YEPDZUZKKC45KY5CRWZ7ZQKP46STSPOPHRAWFR3NAUNWLBTSQC JU3FNMQQ2AZ4NITYUGSBZPJO645Y5TVL5TEQPNKVW2QXQQDIL6JQC ZDOH7B6FV7KM7QJEMOW2LIEXL3H45HL3C6LKDHTG4TEDWQUVYDJQC F62TRVFONDJZFEA3NIKOQUNIPZWHHDEESV263HE3XRTCTPOGXOWAC 6KKLYLEP3IUF3NWXB6OO5C2X75S4U5OK7E2L7HIWWC3P7FG62EZAC UBB7TTAXVPQQCOVHACKWXSPV2NPARSHREYJB6J3RSEDZZIXPFGOAC 4HN5LZRSOAODRIM57WBB35C66VO7BR4PGFINLUMTGNHULEK43CEQC MQT74AV47PUYNCX27OMFK6BFN7PP4DX46JAACN2EPRYXUXV7EL3AC ACIH4ICHLFEBDGCFL4ZHMKMBILEQBU3VE4PE3MSXG5JKO2L2PYKQC ZBZAKBTWMFRBVZ66JMLA22M3JRULPIH7G7OBU2AT3AHHEA3E4KOQC IWFDDZQDLBZCSPQP3O2AWL5IHHM7KG5KL5JF7QG5AFLXSPLQQUTAC AHAA7UNL2RRXP7KERGVCC42GB564WS5BYSSFEOXW3EKVMB2UVEOAC MOQV2NY4ETD5D727YAFZNDIGSD6OVGEEDSCS2K5G6G2TOKI5B2HQC inherit (lib)mkEnableOptionmkIfmkOptiontypes
inherit (lib.options) mkEnableOption mkOption;inherit (lib.modules) mkIf;inherit (lib.attrsets) mapAttrs;inherit (lib.trivial) fromHexString;inherit (lib.types) attrs;inherit (builtins)fromJSONreadFilesubstringpathExists
r = lib.fromHexString (builtins.substring 0 2 hex);g = lib.fromHexString (builtins.substring 2 2 hex);b = lib.fromHexString (builtins.substring 4 2 hex);
r = fromHexString (substring 0 2 hex);g = fromHexString (substring 2 2 hex);b = fromHexString (substring 4 2 hex);
withHash = lib.mapAttrs (name: value: "#${value}") theme.colors;with0x = lib.mapAttrs (name: value: "0x${value}") theme.colors;withRgb = lib.mapAttrs (name: value: theme.hexToRgb value) theme.colors;
withHash = mapAttrs (name: value: "#${value}") theme.colors;with0x = mapAttrs (name: value: "0x${value}") theme.colors;withRgb = mapAttrs (name: value: theme.hexToRgb value) theme.colors;
withHash = lib.mapAttrs (name: value: "#${value}") theme.colors;with0x = lib.mapAttrs (name: value: "0x${value}") theme.colors;withRgb = lib.mapAttrs (name: value: theme.hexToRgb value) theme.colors;
withHash = mapAttrs (name: value: "#${value}") theme.colors;with0x = mapAttrs (name: value: "0x${value}") theme.colors;withRgb = mapAttrs (name: value: theme.hexToRgb value) theme.colors;
$env.CARAPACE_BRIDGES = "zsh,fish,bash,inshellisense,clap"$env.LS_COLORS = (${pkgs.vivid}/bin/vivid generate ${theme.vivid})
$env.CARAPACE_BRIDGES = "zsh,fish,bash,inshellisense,clap"$env.LS_COLORS = (${pkgs.vivid}/bin/vivid generate ${theme.vivid})
let theme_json = $"($env.HOME)/nixos/modules/theme.json"if ($theme_json | path exists) {let theme = (open $theme_json)$env.THEME_MODE = $theme.mode$env.THEME_SCHEME = $theme.scheme} else {$env.THEME_MODE = "${theme.variant}"$env.THEME_SCHEME = "${theme.color_scheme}"}
let theme_json = $"($env.HOME)/nixos/modules/theme.json"if ($theme_json | path exists) {let theme = (open $theme_json)$env.THEME_MODE = $theme.mode$env.THEME_SCHEME = $theme.scheme} else {$env.THEME_MODE = "${theme.variant}"$env.THEME_SCHEME = "${theme.color_scheme}"}
let status = if not ($exit_code == 0) or $transient {$"(ansi '${base0D}')┫(ansi rst)(if $exit_code == 0 { ansi '${base0D}' } else { ansi '${base08}' })($exit_code)(ansi rst)(ansi '${base0D}')┣(ansi rst)"} else {$"(ansi '${base0D}')━(ansi rst)"}
let status = if not ($exit_code == 0) or $transient {$"(ansi '${base0D}')┫(ansi rst)(if $exit_code == 0 { ansi '${base0D}' } else { ansi '${base08}' })($exit_code)(ansi rst)(ansi '${base0D}')┣(ansi rst)"} else {$"(ansi '${base0D}')━(ansi rst)"}
let dir = if ($jj_root | is-not-empty) {let subpath = $pwd | path relative-to $jj_rootlet subpath = if ($subpath | is-not-empty) {$"(ansi '${base0E}') ⟶ (ansi rst)(ansi '${base0B}')($subpath)(ansi rst)"}$"($jj_root | path basename)($subpath)"} else {let pwd = if ($pwd | str starts-with $env.HOME) {"~" | path join ($pwd | path relative-to $env.HOME)} else { $pwd }
let dir = if ($jj_root | is-not-empty) {let subpath = $pwd | path relative-to $jj_rootlet subpath = if ($subpath | is-not-empty) {$"(ansi '${base0E}') ⟶ (ansi rst)(ansi '${base0B}')($subpath)(ansi rst)"}$"($jj_root | path basename)($subpath)"} else {let pwd = if ($pwd | str starts-with $env.HOME) {"~" | path join ($pwd | path relative-to $env.HOME)} else { $pwd }
let jj_info = if (which jj | is-not-empty) {try {let jj_output = (^jj --quiet --color always --ignore-working-copy log --no-graph --revisions @ --template 'separate(" ",bookmarks.join(", "),if(empty, label("empty", "(empty)")),coalesce(surround("\"", "\"",if(description.first_line().substr(0, 22).starts_with(description.first_line()),description.first_line().substr(0, 22),description.first_line().substr(0, 21) ++ "…")),label(if(empty, "empty"), "")),change_id.shortest(),commit_id.shortest(),if(conflict, label("conflict", "(conflict)")),if(divergent, label("divergent prefix", "(divergent)")),if(hidden, label("hidden prefix", "(hidden)")),if(immutable, label("immutable", "(immutable)")),)' err> /dev/null | str trim)if ($jj_output | is-not-empty) {$" ($jj_output)"} else { "" }} catch { "" }} else { "" }
let jj_info = if (which jj | is-not-empty) {try {let jj_output = (^jj --quiet --color always --ignore-working-copy log --no-graph --revisions @ --template 'separate(" ",bookmarks.join(", "),if(empty, label("empty", "(empty)")),coalesce(surround("\"", "\"",if(description.first_line().substr(0, 22).starts_with(description.first_line()),description.first_line().substr(0, 22),description.first_line().substr(0, 21) ++ "…")),label(if(empty, "empty"), "")),change_id.shortest(),commit_id.shortest(),if(conflict, label("conflict", "(conflict)")),if(divergent, label("divergent prefix", "(divergent)")),if(hidden, label("hidden prefix", "(hidden)")),if(immutable, label("immutable", "(immutable)")),)' err> /dev/null | str trim)if ($jj_output | is-not-empty) {$" ($jj_output)"} else { "" }} catch { "" }} else { "" }
let ms = ($env.CMD_DURATION_MS | into int)let duration = if $transient or $ms > 1000 {let secs = $ms / 1000 | math floorif $transient and $ms < 1000 {$" (ansi '${base0A}')($ms)ms"} else {$" (ansi '${base0A}')($secs)s"}} else { "" }
let ms = ($env.CMD_DURATION_MS | into int)let duration = if $transient or $ms > 1000 {let secs = $ms / 1000 | math floorif $transient and $ms < 1000 {$" (ansi '${base0A}')($ms)ms"} else {$" (ansi '${base0A}')($secs)s"}} else { "" }
let prompt_line = [(char nl)$bar$status$bar$host" "$directory" "(if ($jj_info | is-not-empty) {[$"(ansi '${base0D}')━┫(ansi rst)"$jj_info$" (ansi '${base0D}')┣━(ansi rst)"] | str join} else {[$bar$bar$bar] | str join})$duration(char nl)] | str join
let prompt_line = [(char nl)$bar$status$bar$host" "$directory" "(if ($jj_info | is-not-empty) {[$"(ansi '${base0D}')━┫(ansi rst)"$jj_info$" (ansi '${base0D}')┣━(ansi rst)"] | str join} else {[$bar$bar$bar] | str join})$duration(char nl)] | str join
$env.PROMPT_COMMAND = { || prompt }$env.PROMPT_COMMAND_RIGHT = ""$env.TRANSIENT_PROMPT_COMMAND = { || prompt --transient }$env.TRANSIENT_PROMPT_COMMAND_RIGHT = ""
$env.PROMPT_COMMAND = { || prompt }$env.PROMPT_COMMAND_RIGHT = ""$env.TRANSIENT_PROMPT_COMMAND = { || prompt --transient }$env.TRANSIENT_PROMPT_COMMAND_RIGHT = ""
$env.PROMPT_INDICATOR = " "$env.PROMPT_INDICATOR_VI_NORMAL = $env.PROMPT_INDICATOR$env.PROMPT_INDICATOR_VI_INSERT = $env.PROMPT_INDICATOR$env.PROMPT_MULTILINE_INDICATOR = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_INDICATOR = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_INDICATOR_VI_NORMAL = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_INDICATOR_VI_INSERT = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_MULTILINE_INDICATOR = $env.PROMPT_INDICATOR
$env.PROMPT_INDICATOR = " "$env.PROMPT_INDICATOR_VI_NORMAL = $env.PROMPT_INDICATOR$env.PROMPT_INDICATOR_VI_INSERT = $env.PROMPT_INDICATOR$env.PROMPT_MULTILINE_INDICATOR = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_INDICATOR = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_INDICATOR_VI_NORMAL = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_INDICATOR_VI_INSERT = $env.PROMPT_INDICATOR$env.TRANSIENT_PROMPT_MULTILINE_INDICATOR = $env.PROMPT_INDICATOR
config.age.secrets = {id.rekeyFile = ../secrets/yuzu-id.age;password.rekeyFile = ../secrets/yuzu-password.age;context7Key = {rekeyFile = ../secrets/context7-key.age;owner = "jam";mode = "400";};z-ai-key = {rekeyFile = ../secrets/z-ai-key.age;owner = "jam";mode = "400";
age.secrets = {id.rekeyFile = ../secrets/yuzu-id.age;password.rekeyFile = ../secrets/yuzu-password.age;context7Key = {rekeyFile = ../secrets/context7-key.age;owner = "jam";mode = "400";};z-ai-key = {rekeyFile = ../secrets/z-ai-key.age;owner = "jam";mode = "400";};
scrapeConfigs = letconfigToScrapeConfig = hostName: { config, ... }: lethostConfig = config;in hostConfig.services.prometheus.exporters|> filterAttrs (exporterName: exporterConfig:exporterName != "minio" &&exporterName != "unifi-poller" &&exporterName != "tor" &&exporterConfig.enable or false)|> mapAttrsToList (exporterName: exporterConfig: {job_name = "${exporterName}-${hostName}";
scrapeConfigs =letconfigToScrapeConfig =hostName:{ config, ... }:lethostConfig = config;inhostConfig.services.prometheus.exporters|> filterAttrs (exporterName: exporterConfig:exporterName != "minio"&& exporterName != "unifi-poller"&& exporterName != "tor"&& exporterConfig.enable or false)|> mapAttrsToList (exporterName: exporterConfig: {job_name = "${exporterName}-${hostName}";
listeners = [{port = port;bind_addresses = [ "::1" ];type = "http";tls = false;x_forwarded = true; # behind reverse proxyresources = [{names = [ "client" "federation" "media" ];compress = false;}];}];
listeners = [{port = port;bind_addresses = [ "::1" ];type = "http";tls = false;x_forwarded = true; # behind reverse proxyresources = [{names = ["client""federation""media"];compress = false;}];}];
# I don't care about aarch64 because I have no aarch64 machines.# Keep that in mind if you're copying this.arch = if config.isLinux then {arch = "x86_64";hash = "sha256:37b2692cb39db2762ecd8ade37589a1c8f7dd8c4764ae5d39971df6ba7ddd545";} else null;inif arch == null then null elsepkgs.appimageTools.wrapType2 {pname = "helium-browser";inherit version;src = pkgs.fetchurl {url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-${arch.arch}.AppImage";inherit (arch) hash;};};in {home-manager.sharedModules = mkIf (config.isDesktopNotWsl && helium-browser != null) [{home.packages = [ helium-browser ];
# I don't care about aarch64 because I have no aarch64 machines.# Keep that in mind if you're copying this.arch =if config.isLinux then{arch = "x86_64";hash = "sha256:37b2692cb39db2762ecd8ade37589a1c8f7dd8c4764ae5d39971df6ba7ddd545";}elsenull;inif arch == null thennullelsepkgs.appimageTools.wrapType2 {pname = "helium-browser";inherit version;src = pkgs.fetchurl {url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-${arch.arch}.AppImage";inherit (arch) hash;};};in{home-manager.sharedModules = mkIf (config.isDesktopNotWsl && helium-browser != null) [{home.packages = [ helium-browser ];
xdg.desktopEntries.helium-browser = {name = "Helium Browser";icon = "helium-browser";exec = "helium-browser";terminal = false;};}];
xdg.desktopEntries.helium-browser = {name = "Helium Browser";icon = "helium-browser";exec = "helium-browser";terminal = false;};}];
packages.ENABLED = true;repository = {DEFAULT_BRANCH = "master";DEFAULT_MERGE_STYLE = "rebase-merge";DEFAULT_REPO_UNITS = "repo.code, repo.issues, repo.pulls";
repository = {DEFAULT_BRANCH = "master";DEFAULT_MERGE_STYLE = "rebase-merge";DEFAULT_REPO_UNITS = "repo.code, repo.issues, repo.pulls";
in mkIf config.isDesktopNotWsl {home-manager.sharedModules = [{programs.foot = disabled {settings = {main = with config.theme.font; {font = "${mono.name}:size=${toString size.term}";dpi-aware = "yes";};colors = with config.theme.colors; {background = base00;foreground = base05;urls = base0D;
inmkIf config.isDesktopNotWsl {home-manager.sharedModules = [{programs.foot = disabled {settings = {main = with config.theme.font; {font = "${mono.name}:size=${toString size.term}";dpi-aware = "yes";};colors = with config.theme.colors; {background = base00;foreground = base05;urls = base0D;
regular0 = base00;regular1 = base08;regular2 = base0B;regular3 = base0A;regular4 = base0D;regular5 = base0E;regular6 = base0C;regular7 = base05;
regular0 = base00;regular1 = base08;regular2 = base0B;regular3 = base0A;regular4 = base0D;regular5 = base0E;regular6 = base0C;regular7 = base05;};