From 716a1d1f79024dc0629c61bc912a570a4a200a25 Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Mon, 23 Mar 2026 11:25:46 -0500 Subject: group mercury cleanup and firefox config updates --- AGENTS.md | 192 +++++++++++++++++++++++++++++ flake.lock | 34 +++++ flake.nix | 9 ++ hosts/mercury/battery.nix | 2 +- hosts/mercury/config.nix | 5 +- hosts/mercury/hjem.nix | 14 ++- hosts/mercury/nixos.nix | 9 -- modules/desktop/hjem/programs/firefox.nix | 62 ++++++---- modules/desktop/hjem/programs/research.nix | 1 - modules/desktop/hjem/wm/sway.nix | 152 +++++++++-------------- modules/desktop/nixos/programs/firefox.nix | 6 + modules/terminal/hjem/programs/fish.nix | 2 + 12 files changed, 351 insertions(+), 137 deletions(-) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..dfd8a42 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,192 @@ +# AGENTS.md + +Guidance for agentic coding assistants working in this repository. + +## 1) Project Snapshot + +- Repo type: NixOS flake-based configuration repo. +- Core pattern: "homogenous modules" (shared `options.nix` + `nixos/default.nix` + `hjem/default.nix`). +- Main namespace for custom options: `collinux`. +- Hosts currently configured: `mercury`, `jupiter`, `ganymede`. +- Deployment helper: custom `yo` command (Ruby wrapper around `nix`/`nom`). + +## 2) Rule Files Discovery + +The following rule files were checked: + +- `.cursor/rules/**`: not found +- `.cursorrules`: not found +- `.github/copilot-instructions.md`: not found + +No Cursor/Copilot-specific rules are currently present in this repository. + +## 3) Directory Landmarks + +- `flake.nix`: top-level inputs/outputs, host definitions. +- `hosts//config.nix`: host-level declarative settings. +- `modules/`: feature modules (desktop, terminal, services, system, etc.). +- `lib/nix-furnace/mkSystem.nix`: module wiring and host assembly. +- `lib/lib.nix`: custom helper library (`my-lib`). +- `pkgs/yo/`: Ruby deploy/build helper package. +- `pkgs/yossh/`: Lua SSH helper package + lightweight tests. +- `docs/homogenous_modules.md`: architecture background. + +## 4) Build / Check / Deploy Commands + +Run from repo root: `/home/collin/nixos`. + +### Core build commands + +- Build current host and activate immediately: + - `yo switch` + - alias: `yo sw` +- Build current host and activate on next boot: + - `yo boot` +- Build current host and test activation (non-persistent): + - `yo test` +- Build a specific host configuration without switching: + - `yo build ` +- Build current hostname (auto-detected): + - `yo build` + +### Direct nix builds + +- Build one host toplevel derivation: + - `nix build .#nixosConfigurations..config.system.build.toplevel` +- Build generated docs package: + - `nix build .#docs` +- Build default package output: + - `nix build` + +### Deploy commands + +- Deploy via custom wrapper (see `pkgs/yo/default.nix` behavior): + - `yo deploy ` + - alias: `yo dep ` + +Note: Some docs mention `yo deploy `; current code path derives hostname +from the SSH target argument. + +## 5) Lint / Format / Validation + +There is no single repo-wide lint target committed (no Makefile/justfile/pre-commit config found). + +Use these practical checks: + +- Nix syntax/eval sanity via host build: + - `yo build ` + - or `nix build .#nixosConfigurations..config.system.build.toplevel` +- Option docs generation as additional eval coverage: + - `nix build .#docs` +- Format Nix files with Alejandra (formatter used in editor config): + - `nix run nixpkgs#alejandra -- .` + +If you add new tool-specific linting, document the exact command in this file. + +## 6) Test Commands (Including Single-Test Guidance) + +### Repository-level tests + +- No centralized automated test suite is wired at repo root. +- The most test-like validation is successful Nix evaluation/build per host. + +### `pkgs/yossh` Lua tests + +- Test file exists: `pkgs/yossh/tests/unit_tests.lua`. +- Run file directly: + - `lua pkgs/yossh/tests/unit_tests.lua` + +Important: current file defines tests and `main()` but does not call `main()` at EOF. +Running it as-is may not execute assertions unless the file is updated. + +### Running a single test + +There is no built-in single-test runner flag today. + +Recommended workflow for single-test execution: + +1. Temporarily edit `pkgs/yossh/tests/unit_tests.lua` so `main()` calls only one test function. +2. Run `lua pkgs/yossh/tests/unit_tests.lua`. +3. Revert the temporary test-selection edit before committing. + +If you frequently need single-test runs, introduce a minimal CLI test selector and document it here. + +## 7) Architecture Conventions You Must Preserve + +- Keep host configs declarative attribute sets, not functions. +- Keep module option definitions in `options.nix` files. +- Keep NixOS implementation under `nixos/default.nix`. +- Keep hjem implementation under `hjem/default.nix`. +- Prefer adding features by extending existing module trees, not ad-hoc host logic. +- Use `my-lib` helpers when patterns already exist (`mkProgramOption`, `mkThemeOption`, etc.). +- Keep custom options under `collinux.*` to avoid collisions. + +## 8) Code Style Guide + +### General + +- Match existing style in touched files; do not mass-reformat unrelated code. +- Keep diffs focused and minimal. +- Prefer explicit, descriptive names over abbreviations. +- Avoid adding comments unless logic is non-obvious. + +### Nix style + +- Indentation: 2 spaces; no tabs. +- Favor argument destructuring at top: + - `{ pkgs, lib, config, ... }:` style. +- Common structure: + - bind `cfg = config.collinux.;` in `let`. + - gate behavior with `lib.mkIf cfg.enable` where relevant. +- Prefer `inherit (lib) ...` for imported lib symbols. +- Keep `imports` lists clean and stable; one module per line. +- Use `mkOption`/`mkEnableOption` for options; include `description`, `type`, and sensible defaults. +- Use precise types (`types.port`, custom net types, `nullOr`, submodules) rather than loose strings. +- Prefer pure expressions and deterministic outputs. + +### Import and dependency conventions + +- Reuse local helpers from `my-lib` before adding new helper patterns. +- In modules, keep imports relative and predictable (`./foo.nix`, `./default.nix`). +- Avoid circular/implicit dependencies across module families. + +### Naming conventions + +- Nix option paths: lower camelCase segments under `collinux`. +- Files/modules: lowercase names, hyphenated when appropriate. +- Lua locals/functions: mostly snake_case in core library; preserve local file conventions. +- Ruby methods: snake_case; class/module names: CamelCase. + +### Types and validation + +- Add/keep explicit option types whenever possible. +- Use custom validators from `my-lib.netTypes` for network values. +- For structured config, prefer typed submodules over freeform attrs. + +### Error handling + +- Fail early with clear messages (`assertions`, explicit `error`/`raise`). +- In scripts/wrappers, check command success and raise on failure. +- Do not swallow errors from builds, copy, deploy, or switch operations. + +### Secrets and security + +- Never commit plaintext secrets. +- Use agenix-managed `.age` files and declared secret paths. +- Preserve service hardening settings unless there is a clear reason to change. + +## 9) Agent Workflow Expectations + +- Before changing behavior, read nearby module/options files to follow local patterns. +- Prefer validating with a targeted host build after Nix edits. +- If touching deployment logic, test with non-destructive build paths first. +- Keep commit scope tight: one logical change per commit. +- Update docs when command behavior or module patterns change. + +## 10) Definition of Done (for automated agents) + +- Code compiles/evaluates for affected host(s) via `yo build ` or equivalent. +- New/changed options are typed and documented by structure. +- Formatting is consistent with current repository conventions. +- No plaintext secrets introduced. +- Any new commands, checks, or test entrypoints are reflected in this `AGENTS.md`. diff --git a/flake.lock b/flake.lock index 6bd3280..4544044 100644 --- a/flake.lock +++ b/flake.lock @@ -164,6 +164,22 @@ "type": "github" } }, + "fx-autoconfig": { + "flake": false, + "locked": { + "lastModified": 1773035931, + "narHash": "sha256-vOsXpuU2XlbIfXGm1RJicY8ghbkU5FvnctQMBMXCXbs=", + "owner": "MrOtherGuy", + "repo": "fx-autoconfig", + "rev": "8da9268f7afcbf5d438b099e976fe8aa46a111d0", + "type": "github" + }, + "original": { + "owner": "MrOtherGuy", + "repo": "fx-autoconfig", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -405,6 +421,7 @@ "copyparty": "copyparty", "disko": "disko", "firefox-csshacks": "firefox-csshacks", + "fx-autoconfig": "fx-autoconfig", "glide-browser": "glide-browser", "hjem": "hjem", "lanzaboote": "lanzaboote", @@ -412,6 +429,7 @@ "nixos-facter-modules": "nixos-facter-modules", "nixpkgs": "nixpkgs", "tmux-tsunami": "tmux-tsunami", + "uc-css-js": "uc-css-js", "vermilion": "vermilion", "yoshi-lua": "yoshi-lua" } @@ -533,6 +551,22 @@ "type": "github" } }, + "uc-css-js": { + "flake": false, + "locked": { + "lastModified": 1767720625, + "narHash": "sha256-VrOgKNPJ3iTRqXqHYQz8UrZ6FpC1vHWwgy11AAfe4o8=", + "owner": "aminomancer", + "repo": "uc.css.js", + "rev": "88514013ddc375f4770f4a35d8d07a91d6dd7d8f", + "type": "github" + }, + "original": { + "owner": "aminomancer", + "repo": "uc.css.js", + "type": "github" + } + }, "vermilion": { "inputs": { "nixpkgs": "nixpkgs_2" diff --git a/flake.nix b/flake.nix index d07a405..3a70fd3 100644 --- a/flake.nix +++ b/flake.nix @@ -53,6 +53,7 @@ flake = false; }; + # firefox modding stuff firefox-csshacks = { url = "github:MrOtherGuy/firefox-csshacks"; flake = false; @@ -61,6 +62,14 @@ url = "github:yokoffing/Betterfox"; flake = false; }; + fx-autoconfig = { + url = "github:MrOtherGuy/fx-autoconfig"; + flake = false; + }; + uc-css-js = { + url = "github:aminomancer/uc.css.js"; + flake = false; + }; }; outputs = inputs: let diff --git a/hosts/mercury/battery.nix b/hosts/mercury/battery.nix index d3f2e90..0aaa3cd 100644 --- a/hosts/mercury/battery.nix +++ b/hosts/mercury/battery.nix @@ -1,4 +1,4 @@ -{pkgs, ...}: { +{...}: { # auto-cpufreq services.power-profiles-daemon.enable = false; # conflicts with auto-cpufreq services.tlp.enable = false; # conflicts with auto-cpufreq diff --git a/hosts/mercury/config.nix b/hosts/mercury/config.nix index a8b191b..12518f4 100644 --- a/hosts/mercury/config.nix +++ b/hosts/mercury/config.nix @@ -33,7 +33,10 @@ }; programs = { - firefox.enable = true; + firefox = { + enable = true; + extensions.zotero.enable = false; + }; foot.enable = true; research.enable = true; diff --git a/hosts/mercury/hjem.nix b/hosts/mercury/hjem.nix index 1e87ddd..afdf861 100644 --- a/hosts/mercury/hjem.nix +++ b/hosts/mercury/hjem.nix @@ -3,17 +3,14 @@ obsidian anki libreoffice-qt + musescore - kdePackages.kleopatra prismlauncher mpv + bluetuith opencode - musescore - vital - - bluetuith (pkgs.callPackage ../../pkgs/yo {}) captive-browser # https://words.filippo.io/captive-browser @@ -25,6 +22,13 @@ terminal = false; categories = ["Application"]; }) + + (pkgs.writeShellScriptBin "battery.sh" '' + energy_now=$(cat /sys/class/power_supply/BAT0/energy_now) + energy_full=$(cat /sys/class/power_supply/BAT0/energy_full) + percentage=$((energy_now * 100 / energy_full)) + printf "%.0f%%" "$percentage" + '') ]; files.".config/captive-browser.toml".text = '' diff --git a/hosts/mercury/nixos.nix b/hosts/mercury/nixos.nix index 46153ae..3f5c0b0 100644 --- a/hosts/mercury/nixos.nix +++ b/hosts/mercury/nixos.nix @@ -1,6 +1,5 @@ { lib, - pkgs, inputs, config, ... @@ -67,14 +66,6 @@ ProxyJump collin@ganymede ''; - ## UUGGGG I DINT"W ATNT TO DO THIS - programs.nix-ld = { - enable = true; - libraries = with pkgs; [ - libGL - ]; - }; - programs.firefox.policies.ExtensionSettings = { "foxyproxy@eric.h.jung" = { installation_mode = "force_installed"; diff --git a/modules/desktop/hjem/programs/firefox.nix b/modules/desktop/hjem/programs/firefox.nix index 2078e3c..46d2dd5 100644 --- a/modules/desktop/hjem/programs/firefox.nix +++ b/modules/desktop/hjem/programs/firefox.nix @@ -8,10 +8,12 @@ cfg = config.collinux.desktop.programs.firefox; mkCssHacks = hacks: hacks |> map (f: ''@import "${inputs.firefox-csshacks}/chrome/${f}.css";'') |> lib.concatStringsSep "\n"; + + profileDir = ".config/mozilla/firefox/collin"; in lib.mkIf cfg.enable { files = { - ".mozilla/firefox/profiles.ini" = { + ".config/mozilla/firefox/profiles.ini" = { generator = lib.generators.toINI {}; value = { Profile0 = { @@ -27,32 +29,38 @@ in }; }; - ".mozilla/firefox/collin/user.js".source = "${inputs.betterfox}/user.js"; - - ".mozilla/firefox/collin/chrome/userChrome.css".text = mkCssHacks ( - # (lib.optional (cfg.theme == "adwaita") "window_control_placeholder_support") ++ - [ - # Tabs - ( - if cfg.theme == "catppuccin" - then "hide_tabs_with_one_tab" - else "hide_tabs_with_one_tab_w_window_controls" - ) - "tabs_on_bottom_v2" - "tab_close_button_always_on_hover" - "tabs_fill_available_width" - - # Icons! - "iconized_main_menu" - "iconized_menubar_items" - "iconized_places_context_menu" - "iconized_tabs_context_menu" - "icon_only_context_menu_text_controls" - - # Other - "compact_extensions_panel" - ] - ); + "${profileDir}/user.js".source = "${inputs.betterfox}/user.js"; + + "${profileDir}/chrome/utils".source = "${inputs.fx-autoconfig}/profile/chrome/utils"; + + "${profileDir}/chrome/JS/test.uc.js".source = "${inputs.fx-autoconfig}/profile/chrome/JS/test.uc.js"; + + "${profileDir}/chrome/JS/aboutUserChrome.sys.mjs".source = "${inputs.uc-css-js}/JS/aboutUserChrome.sys.mjs"; + "${profileDir}/chrome/resources/aboutuserchrome".source = "${inputs.uc-css-js}/resources/aboutuserchrome"; + + "${profileDir}/chrome/JS/appMenuMods.uc.js".source = "${inputs.uc-css-js}/JS/appMenuMods.uc.js"; + + "${profileDir}/chrome/userChrome.css".text = mkCssHacks [ + # Tabs + ( + if cfg.theme == "catppuccin" + then "hide_tabs_with_one_tab" + else "hide_tabs_with_one_tab_w_window_controls" + ) + "tabs_on_bottom_v2" + "tab_close_button_always_on_hover" + "tabs_fill_available_width" + + # Icons! + "iconized_main_menu" + # "iconized_menubar_items" + "iconized_places_context_menu" + "iconized_tabs_context_menu" + "icon_only_context_menu_text_controls" + + # Other + "compact_extensions_panel" + ]; }; packages = [pkgs.firefox]; diff --git a/modules/desktop/hjem/programs/research.nix b/modules/desktop/hjem/programs/research.nix index 1646e0c..89bcfca 100644 --- a/modules/desktop/hjem/programs/research.nix +++ b/modules/desktop/hjem/programs/research.nix @@ -8,7 +8,6 @@ in lib.mkIf cfg.enable { packages = with pkgs; [ - zotero zathura xournalpp ocrmypdf diff --git a/modules/desktop/hjem/wm/sway.nix b/modules/desktop/hjem/wm/sway.nix index 0e5edb2..03450d2 100644 --- a/modules/desktop/hjem/wm/sway.nix +++ b/modules/desktop/hjem/wm/sway.nix @@ -6,112 +6,78 @@ }: let cfg = config.collinux.desktop.wm.sway; - colors = '' - set $rosewater #f5e0dc - set $flamingo #f2cdcd - set $pink #f5c2e7 - set $mauve #cba6f7 - set $red #f38ba8 - set $maroon #eba0ac - set $peach #fab387 - set $yellow #f9e2af - set $green #a6e3a1 - set $teal #94e2d5 - set $sky #89dceb - set $sapphire #74c7ec - set $blue #89b4fa - set $lavender #b4befe - set $text #cdd6f4 - set $subtext1 #bac2de - set $subtext0 #a6adc8 - set $overlay2 #9399b2 - set $overlay1 #7f849c - set $overlay0 #6c7086 - set $surface2 #585b70 - set $surface1 #45475a - set $surface0 #313244 - set $base #1e1e2e - set $mantle #181825 - set $crust #11111b - ''; - - settings = '' - exec ${config.collinux.desktop.wallpaper_cmd} - exec ${pkgs.dunst}/bin/dunst - exec ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP GTK_USE_PORTAL NIXOS_OZONE_WL MOZ_ENABLE_WAYLAND - - include catppuccin-mocha - - # target title bg text indicator border - client.focused $lavender $base $text $rosewater $blue - client.focused_inactive $overlay0 $base $text $rosewater $overlay0 - client.unfocused $overlay0 $base $text $rosewater $overlay0 - client.urgent $peach $base $peach $overlay0 $peach - client.placeholder $overlay0 $base $text $overlay0 $overlay0 - client.background $base - - input type:keyboard { - xkb_options caps:none + settings = with config.collinux.palette; '' + exec { + ${config.collinux.desktop.wallpaper_cmd} + ${pkgs.dunst}/bin/dunst + ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP GTK_USE_PORTAL NIXOS_OZONE_WL MOZ_ENABLE_WAYLAND } - input type:touchpad { - dwt disabled + # target title bg text indicator border + client.focused #${base07} #${base00} #${base05} #${base06} #${base13} + client.focused_inactive #${base03} #${base00} #${base05} #${base06} #${base03} + client.unfocused #${base03} #${base00} #${base05} #${base06} #${base03} + client.urgent #${base09} #${base00} #${base09} #${base03} #${base09} + client.placeholder #${base03} #${base00} #${base05} #${base03} #${base03} + client.background #${base00} + + input { + type:keyboard xkb_options caps:none + type:touchpad dwt disabled } - bindsym Mod4+1 workspace number 1 - bindsym Mod4+2 workspace number 2 - bindsym Mod4+3 workspace number 3 - bindsym Mod4+4 workspace number 4 - bindsym Mod4+5 workspace number 5 - bindsym Mod4+6 workspace number 6 - bindsym Mod4+7 workspace number 7 - bindsym Mod4+8 workspace number 8 - bindsym Mod4+9 workspace number 9 - - bindsym Mod4+Shift+1 move container to workspace number 1 - bindsym Mod4+Shift+2 move container to workspace number 2 - bindsym Mod4+Shift+3 move container to workspace number 3 - bindsym Mod4+Shift+4 move container to workspace number 4 - bindsym Mod4+Shift+5 move container to workspace number 5 - bindsym Mod4+Shift+6 move container to workspace number 6 - bindsym Mod4+Shift+7 move container to workspace number 7 - bindsym Mod4+Shift+8 move container to workspace number 8 - bindsym Mod4+Shift+9 move container to workspace number 9 - - bindsym Mod4+Return exec ${pkgs.foot}/bin/foot - bindsym Mod4+Space exec tofi-drun - bindsym Mod4+b exec ${pkgs.firefox}/bin/firefox - bindsym Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser - bindsym Mod4+q kill - - bindsym Mod4+w exec '${pkgs.iwmenu}/bin/iwmenu -l fuzzel -i font -s 2' - - bindsym Mod4+Shift+s exec '${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/$(date +"%s_grim.png")' - bindsym Mod4+Alt+s exec '${pkgs.hyprpicker}/bin/hyprpicker' - - bindsym XF86AudioRaiseVolume exec 'util.lua volume up' - bindsym XF86AudioLowerVolume exec 'util.lua volume down' - - bindsym XF86MonBrightnessUp exec 'util.lua brightness up' - bindsym XF86MonBrightnessDown exec 'util.lua brightness down' - - bindsym Home exec 'util.lua music prev' - bindsym End exec 'util.lua music toggle' - bindsym Insert exec 'util.lua music next' - default_border pixel 2 default_floating_border pixel 2 smart_borders on smart_gaps on floating_modifier Mod4 normal + default_orientation auto + + bindsym { + Mod4+1 workspace number 1 + Mod4+2 workspace number 2 + Mod4+3 workspace number 3 + Mod4+4 workspace number 4 + Mod4+5 workspace number 5 + Mod4+6 workspace number 6 + Mod4+7 workspace number 7 + Mod4+8 workspace number 8 + Mod4+9 workspace number 9 + + Mod4+Shift+1 move container to workspace number 1 + Mod4+Shift+2 move container to workspace number 2 + Mod4+Shift+3 move container to workspace number 3 + Mod4+Shift+4 move container to workspace number 4 + Mod4+Shift+5 move container to workspace number 5 + Mod4+Shift+6 move container to workspace number 6 + Mod4+Shift+7 move container to workspace number 7 + Mod4+Shift+8 move container to workspace number 8 + Mod4+Shift+9 move container to workspace number 9 + + Mod4+q kill + + Mod4+Return exec ${pkgs.foot}/bin/foot + Mod4+Space exec tofi-drun + Mod4+b exec ${pkgs.firefox}/bin/firefox + Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser + Mod4+w exec '${pkgs.iwmenu}/bin/iwmenu -l fuzzel -i font -s 2' + + Mod4+Shift+s exec '${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/$(date +"%s_grim.png")' + Mod4+Alt+s exec '${pkgs.hyprpicker}/bin/hyprpicker' + + Home exec 'util.lua music prev' + End exec 'util.lua music toggle' + Insert exec 'util.lua music next' + XF86AudioRaiseVolume exec 'util.lua volume up' + XF86AudioLowerVolume exec 'util.lua volume down' + XF86MonBrightnessUp exec 'util.lua brightness up' + XF86MonBrightnessDown exec 'util.lua brightness down' + } ''; in lib.mkIf cfg.enable { - files = { - ".config/sway/config".text = settings; - ".config/sway/catppuccin-mocha".text = colors; - }; + files.".config/sway/config".text = settings; packages = with pkgs; [ sway diff --git a/modules/desktop/nixos/programs/firefox.nix b/modules/desktop/nixos/programs/firefox.nix index b0163aa..61e7b7d 100644 --- a/modules/desktop/nixos/programs/firefox.nix +++ b/modules/desktop/nixos/programs/firefox.nix @@ -1,6 +1,7 @@ { lib, config, + inputs, ... }: let cfg = config.collinux.desktop.programs.firefox; @@ -8,6 +9,11 @@ in lib.mkIf cfg.enable { programs.firefox = { enable = true; + + autoConfigFiles = [ + "${inputs.fx-autoconfig}/program/config.js" + ]; + policies = { PasswordManagerEnabled = false; # use bitwarden instead DisableAccounts = true; diff --git a/modules/terminal/hjem/programs/fish.nix b/modules/terminal/hjem/programs/fish.nix index 34f8496..3210dcf 100644 --- a/modules/terminal/hjem/programs/fish.nix +++ b/modules/terminal/hjem/programs/fish.nix @@ -20,6 +20,8 @@ in set -gx CARGO_HOME "$XDG_DATA_HOME/cargo" set -gx ANDROID_USER_HOME "$XDG_DATA_HOME/android" set -gx WINE_PREFIX "$XDG_DATA_HOME/wine" + + set -gx PYTHON_HISTORY "/dev/null" ''; ".config/fish/config.fish".text = '' -- cgit v1.3.1