This commit is contained in:
암냥 2026-07-25 07:16:27 +09:00
commit fb7b785ae7
No known key found for this signature in database
5 changed files with 149 additions and 239 deletions

View file

@ -21,7 +21,6 @@
"${inputs.self}/modules/home/devtool/neovim.nix" "${inputs.self}/modules/home/devtool/neovim.nix"
"${inputs.self}/modules/home/devtool/ghostty.nix" "${inputs.self}/modules/home/devtool/ghostty.nix"
"${inputs.self}/modules/home/devtool/zed.nix" "${inputs.self}/modules/home/devtool/zed.nix"
"${inputs.self}/modules/home/firefox-devedition.nix"
./config/git.nix ./config/git.nix
./config/shell.nix ./config/shell.nix
]; ];

View file

@ -11,9 +11,6 @@
"signal" "signal"
"zoom" "zoom"
# Browsers
"firefox@developer-edition"
# Productivity and design # Productivity and design
"camo-studio" "camo-studio"
"proton-drive" "proton-drive"

View file

@ -12,6 +12,7 @@ nixpkgs.lib.nixosSystem {
# ./services/attic.nix # ./services/attic.nix
./services/caddy.nix ./services/caddy.nix
./services/forgejo-runner.nix ./services/forgejo-runner.nix
./services/limbo.nix
./services/stream.nix ./services/stream.nix
# ./services/harmonia.nix # ./services/harmonia.nix
./configuration.nix ./configuration.nix

View file

@ -0,0 +1,24 @@
{ pkgs, ... }:
{
systemd.services.limbo = {
description = "Minecraft Limbo Server";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = "imnyang";
Group = "users";
WorkingDirectory = "/home/imnyang/minecraft/limbo";
ExecStart = "/home/imnyang/minecraft/limbo/pico_limbo --config /home/imnyang/minecraft/limbo/server.toml";
Restart = "always";
RestartSec = 5;
};
};
networking.firewall.allowedTCPPorts = [
25565
];
}

View file

@ -1,258 +1,147 @@
{ pkgs, lib, ... }: { pkgs, ... }:
let let
inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;
extensionUrl = "https://git.mizuki.guru/imnyang/thisiswindowsfigma/releases/download/v1.0.0/d168a70cb6a24fe4a478-1.0.0.xpi"; extensionUrl = "https://git.mizuki.guru/imnyang/thisiswindowsfigma/releases/download/v1.0.0/d168a70cb6a24fe4a478-1.0.0.xpi";
extensionId = "figma-windows-ua-spoofer@imnyang.local"; extensionId = "figma-windows-ua-spoofer@imnyang.local";
profileName = "imnyang";
darwinProfilePath = "Profiles/${profileName}";
firefoxSettings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.uidensity" = 0;
"browser.theme.dark-private-windows" = false;
};
userChrome = ''
:root {
--mizuki-bg: #fcf8f9;
--mizuki-fg: #191017;
--mizuki-muted: #707d8a;
--mizuki-border: #f2e6ea;
--mizuki-surface: #fdf7f9;
--mizuki-hover: #8165700f;
--mizuki-active: #8165701a;
--mizuki-selection: #ecb7d5;
}
@media (prefers-color-scheme: dark) {
:root {
--mizuki-bg: #191017;
--mizuki-fg: #fafafa;
--mizuki-muted: #a9a9b1;
--mizuki-border: #2c1f2d;
--mizuki-surface: #191017;
--mizuki-hover: #2c1f2d80;
--mizuki-active: #2c1f2d;
--mizuki-selection: #604562;
}
}
#navigator-toolbox,
#TabsToolbar,
#nav-bar,
#PersonalToolbar,
#sidebar-box,
#sidebar-header {
background-color: var(--mizuki-bg) !important;
color: var(--mizuki-fg) !important;
}
#navigator-toolbox {
border-bottom: 1px solid var(--mizuki-border) !important;
}
#urlbar-background,
#searchbar {
background-color: var(--mizuki-surface) !important;
border-color: var(--mizuki-border) !important;
color: var(--mizuki-fg) !important;
}
#urlbar[focused] > #urlbar-background,
#searchbar:focus-within {
border-color: var(--mizuki-selection) !important;
box-shadow: 0 0 0 1px var(--mizuki-selection) !important;
}
.tab-background {
border-radius: 10px 10px 0 0 !important;
}
.tab-background[selected] {
background-color: var(--mizuki-active) !important;
}
.tabbrowser-tab:not([selected]):hover .tab-background,
toolbarbutton:hover,
#urlbar:hover > #urlbar-background {
background-color: var(--mizuki-hover) !important;
}
toolbarbutton[open],
toolbarbutton[checked],
toolbarbutton:active {
background-color: var(--mizuki-active) !important;
}
#TabsToolbar .tabbrowser-tab,
#urlbar-input,
#identity-icon-label,
toolbarbutton {
color: var(--mizuki-fg) !important;
}
.tabbrowser-tab:not([selected]) .tab-label,
#sidebar-title {
color: var(--mizuki-muted) !important;
}
'';
userContent = ''
@-moz-document url("about:home"), url("about:newtab"), url("about:privatebrowsing") {
body,
.outer-wrapper,
.activity-stream {
background: #fcf8f9 !important;
color: #191017 !important;
}
@media (prefers-color-scheme: dark) {
body,
.outer-wrapper,
.activity-stream {
background: #191017 !important;
color: #fafafa !important;
}
}
}
'';
userJs = lib.concatStringsSep "\n" (
lib.mapAttrsToList (name: value: ''user_pref(${builtins.toJSON name}, ${builtins.toJSON value});'') firefoxSettings
) + "\n";
in in
lib.mkMerge [ {
(lib.mkIf isLinux { programs.firefox = {
programs.firefox = { enable = true;
enable = true; package = pkgs.firefox-devedition;
package = pkgs.firefox-devedition;
policies = { policies = {
DisableAppUpdate = true; DisableAppUpdate = true;
ExtensionSettings = { ExtensionSettings = {
${extensionId} = { ${extensionId} = {
installation_mode = "force_installed"; installation_mode = "force_installed";
install_url = extensionUrl; install_url = extensionUrl;
};
}; };
}; };
};
profiles.${profileName} = { profiles.imnyang = {
id = 0; id = 0;
name = profileName; name = "imnyang";
path = "${profileName}.default"; isDefault = true;
isDefault = true;
settings = firefoxSettings; settings = {
inherit userChrome userContent; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.uidensity" = 0;
"browser.theme.dark-private-windows" = false;
}; };
};
xdg.mimeApps.defaultApplications = { userChrome = ''
"text/html" = [ "firefox-devedition.desktop" ]; :root {
"x-scheme-handler/http" = [ "firefox-devedition.desktop" ]; --mizuki-bg: #fcf8f9;
"x-scheme-handler/https" = [ "firefox-devedition.desktop" ]; --mizuki-fg: #191017;
"x-scheme-handler/about" = [ "firefox-devedition.desktop" ]; --mizuki-muted: #707d8a;
"x-scheme-handler/unknown" = [ "firefox-devedition.desktop" ]; --mizuki-border: #f2e6ea;
}; --mizuki-surface: #fdf7f9;
}) --mizuki-hover: #8165700f;
--mizuki-active: #8165701a;
--mizuki-selection: #ecb7d5;
}
(lib.mkIf isDarwin { @media (prefers-color-scheme: dark) {
home.activation.configureFirefoxDeveloperEdition = lib.hm.dag.entryAfter [ "writeBoundary" ] '' :root {
firefox_dir="$HOME/Library/Application Support/Firefox" --mizuki-bg: #191017;
profiles_ini="$firefox_dir/profiles.ini" --mizuki-fg: #fafafa;
--mizuki-muted: #a9a9b1;
--mizuki-border: #2c1f2d;
--mizuki-surface: #191017;
--mizuki-hover: #2c1f2d80;
--mizuki-active: #2c1f2d;
--mizuki-selection: #604562;
}
}
mkdir -p "$firefox_dir/Profiles" #navigator-toolbox,
#TabsToolbar,
#nav-bar,
#PersonalToolbar,
#sidebar-box,
#sidebar-header {
background-color: var(--mizuki-bg) !important;
color: var(--mizuki-fg) !important;
}
profile_info="" #navigator-toolbox {
if [ -f "$profiles_ini" ]; then border-bottom: 1px solid var(--mizuki-border) !important;
profile_info=$( }
awk '
function flush() { #urlbar-background,
if (in_profile && path != "") { #searchbar {
if (is_default == "1") { background-color: var(--mizuki-surface) !important;
print is_relative "|" path border-color: var(--mizuki-border) !important;
found = 1 color: var(--mizuki-fg) !important;
exit }
}
if (first == "") { #urlbar[focused] > #urlbar-background,
first = is_relative "|" path #searchbar:focus-within {
} border-color: var(--mizuki-selection) !important;
} box-shadow: 0 0 0 1px var(--mizuki-selection) !important;
}
.tab-background {
border-radius: 10px 10px 0 0 !important;
}
.tab-background[selected] {
background-color: var(--mizuki-active) !important;
}
.tabbrowser-tab:not([selected]):hover .tab-background,
toolbarbutton:hover,
#urlbar:hover > #urlbar-background {
background-color: var(--mizuki-hover) !important;
}
toolbarbutton[open],
toolbarbutton[checked],
toolbarbutton:active {
background-color: var(--mizuki-active) !important;
}
#TabsToolbar .tabbrowser-tab,
#urlbar-input,
#identity-icon-label,
toolbarbutton {
color: var(--mizuki-fg) !important;
}
.tabbrowser-tab:not([selected]) .tab-label,
#sidebar-title {
color: var(--mizuki-muted) !important;
}
'';
userContent = ''
@-moz-document url("about:home"), url("about:newtab"), url("about:privatebrowsing") {
body,
.outer-wrapper,
.activity-stream {
background: #fcf8f9 !important;
color: #191017 !important;
}
@media (prefers-color-scheme: dark) {
body,
.outer-wrapper,
.activity-stream {
background: #191017 !important;
color: #fafafa !important;
} }
BEGIN { in_profile = 0; is_relative = "1" } }
/^\\[Profile[0-9]+\\]$/ { flush(); in_profile = 1; path = ""; is_default = "0"; is_relative = "1"; next } }
/^\\[/ { flush(); in_profile = 0; next }
in_profile && /^Path=/ { path = substr($0, 6); next }
in_profile && /^Default=1$/ { is_default = "1"; next }
in_profile && /^IsRelative=/ { is_relative = substr($0, 12); next }
END {
if (!found) {
flush()
}
if (!found && first != "") {
print first
}
}
' "$profiles_ini"
)
fi
if [ -n "$profile_info" ]; then
is_relative="''${profile_info%%|*}"
profile_path="''${profile_info#*|}"
if [ "$is_relative" = "1" ]; then
profile_dir="$firefox_dir/$profile_path"
else
profile_dir="$profile_path"
fi
else
profile_dir="$firefox_dir/${darwinProfilePath}"
cat > "$profiles_ini" <<'EOF'
[Profile0]
Name=${profileName}
IsRelative=1
Path=${darwinProfilePath}
Default=1
[General]
StartWithLastProfile=1
Version=2
EOF
fi
mkdir -p "$profile_dir/chrome"
cp ${pkgs.writeText "firefox-devedition-user.js" userJs} "$profile_dir/user.js"
cp ${pkgs.writeText "firefox-devedition-userChrome.css" userChrome} "$profile_dir/chrome/userChrome.css"
cp ${pkgs.writeText "firefox-devedition-userContent.css" userContent} "$profile_dir/chrome/userContent.css"
'';
home.file = {
"Library/Preferences/org.mozilla.firefoxdeveloperedition.plist".text = ''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnterprisePoliciesEnabled</key>
<true/>
<key>DisableAppUpdate</key>
<true/>
<key>ExtensionSettings</key>
<dict>
<key>${extensionId}</key>
<dict>
<key>installation_mode</key>
<string>force_installed</string>
<key>install_url</key>
<string>${extensionUrl}</string>
</dict>
</dict>
</dict>
</plist>
''; '';
}; };
}) };
]
xdg.mimeApps.defaultApplications = {
"text/html" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/http" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/https" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/about" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/unknown" = [ "firefox-devedition.desktop" ];
};
}