diff --git a/configuration.nix b/configuration.nix index 898e1c4..1985f8d 100644 --- a/configuration.nix +++ b/configuration.nix @@ -21,7 +21,6 @@ }; }; }; - services.blueman.enable = true; networking.networkmanager.enable = true; networking.networkmanager.settings = { connection = { @@ -44,7 +43,7 @@ }; systemd.services.tailscale-set-operator = { - description = "Set Tailscale local preferences"; + description = "Set Tailscale operator user"; after = [ "tailscaled.service" ]; requires = [ "tailscaled.service" ]; wantedBy = [ "multi-user.target" ]; @@ -53,7 +52,6 @@ path = [ pkgs.tailscale ]; script = '' tailscale set --operator=jet - tailscale set --exit-node-allow-lan-access=true ''; }; @@ -91,7 +89,6 @@ serviceConfig = { Type = "simple"; User = "jet"; - Environment = [ "OPENCODE_DB=opencode.db" ]; Restart = "always"; RestartSec = 5; TimeoutStartSec = 75; @@ -181,6 +178,7 @@ # Keep GNOME's shell and file-manager integration while dropping apps replaced elsewhere. environment.gnome.excludePackages = with pkgs; [ + baobab decibels epiphany evince @@ -196,6 +194,7 @@ gnome-logs gnome-maps gnome-music + gnome-system-monitor gnome-text-editor gnome-tour gnome-weather @@ -280,19 +279,8 @@ security.polkit.enable = true; programs.gphoto2.enable = true; - services.avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; - }; - services.printing.enable = true; - hardware.sane = { - enable = true; - extraBackends = [ pkgs.sane-airscan ]; - }; - services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { @@ -329,8 +317,6 @@ "render" "docker" "camera" - "scanner" - "lp" ]; }; @@ -409,11 +395,8 @@ docker-compose exfatprogs flatpak - nh - sane-airscan - sane-backends - simple-scan wget + nh ]; programs.steam.enable = true; diff --git a/flake.lock b/flake.lock index f880af6..2753ca3 100644 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1779573072, - "narHash": "sha256-DgdXilZcUCEQdOcgt2+Aj77+up2OkdBFg5Q6En5PUB0=", + "lastModified": 1778705014, + "narHash": "sha256-w6IojREyFkGvqW78BPCcz4sg7oEYx7YzJs6xgAN6LWA=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "d5d8cef4d3834cc8999eb9344066b0960b033f2d", + "rev": "b23d567cd89874ffe218036536a2aec52851f34f", "type": "github" }, "original": { @@ -127,11 +127,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1779426614, - "narHash": "sha256-Ynp7Vq/3ycx53zzLh/Dfvjibdvt+mVhTM50O5LCbdmw=", + "lastModified": 1778551011, + "narHash": "sha256-woJV7tJwwzjR0xWDNuGpwMENe/OEMAdSGg+nqWs9tUE=", "owner": "helix-editor", "repo": "helix", - "rev": "a62d374fcb489f83bddd3a775df250ff4b9b34a9", + "rev": "8c41b11607924f7584b77c8a6e6b16439a2f559f", "type": "github" }, "original": { @@ -190,11 +190,11 @@ ] }, "locked": { - "lastModified": 1779213149, - "narHash": "sha256-Cf+p/T4Z3n9Sw0TiR3kQaIwQI+/hfvLJcoTzeq6yS3E=", + "lastModified": 1778706808, + "narHash": "sha256-ihH1UnI6nYSOkjAg4QsOadg6sp2LxXnWO9urPbo3/hw=", "owner": "nix-community", "repo": "home-manager", - "rev": "bd868f769a69d3b6091a1da68a75cb83a181033c", + "rev": "9760b31dab3016fc6e422ca241cfeac605fb89c9", "type": "github" }, "original": { @@ -211,11 +211,11 @@ ] }, "locked": { - "lastModified": 1778805320, - "narHash": "sha256-nGFJ01m2CTBKD4ABtcY4vLhHrRN91LKr/pn41PcU78A=", + "lastModified": 1777594677, + "narHash": "sha256-h90sHwoRJLRvaTpZroTvU2JRHDFj0czUafM8eqLe1RI=", "owner": "nix-community", "repo": "home-manager", - "rev": "9846abe15e7d0d36b8acbd4d05f2b87461744c92", + "rev": "899c08a15beae5da51a5cecd6b2b994777a948da", "type": "github" }, "original": { @@ -231,11 +231,11 @@ ] }, "locked": { - "lastModified": 1778999127, - "narHash": "sha256-V5GquqJvAqwFTcpN6hxKSQAtwuJFRUEHmyNKbeaTQDg=", + "lastModified": 1778393439, + "narHash": "sha256-mOtQxUjtKaPHLeoLOY/YEDctmud1X9KwJr4kE1MJ3Wc=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "f680e0d3c1dbefe298c423691662e238496890f2", + "rev": "01466c414c7357ae2ce32be4a272a7c69e94ab5f", "type": "github" }, "original": { @@ -246,11 +246,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1779258371, - "narHash": "sha256-j1iZsLy6oFApqR1oiDmHhvkwxXqcNi0aoSJj643LuwU=", + "lastModified": 1778593042, + "narHash": "sha256-xYGrSg6354UK2K4WSQd4+TfyvfqmvFbSY+ZtGQUXK0c=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "c97bc4d15bd3473dd095e8e8ba57330ab1943a77", + "rev": "9bd7c80d43e258aaa607d83b43661df11444d808", "type": "github" }, "original": { @@ -322,11 +322,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1779295057, - "narHash": "sha256-f5Fi5arOp96quGbXiqwbIOnePBBYLw/hS0tqjOZMRv0=", + "lastModified": 1778708329, + "narHash": "sha256-JOe9qeUXd6PW+3xrDX5Zd9MREpMALiNXResDymwBl0Y=", "owner": "nix-community", "repo": "NUR", - "rev": "9dfb56523219a31511e0d8e59d0270dcdd96bd6f", + "rev": "7ad26749532188766f452f29b2934b9a1974b609", "type": "github" }, "original": { @@ -362,11 +362,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1779580088, - "narHash": "sha256-oYEtJtyKegw8CO+OistcabbKDmhrRDrVmSbLcXT9mkw=", + "lastModified": 1778708807, + "narHash": "sha256-3bzJZnQtSO5T/H44nXi4lQWfO0InZ5Vg+qbV/vtOjZU=", "owner": "anomalyco", "repo": "opencode", - "rev": "0b3a1c2fdf8032d7168d1a5103c460c84dfee882", + "rev": "0d8c9f343735d3b942e5921a83d764529f64089a", "type": "github" }, "original": { @@ -449,11 +449,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1778940218, - "narHash": "sha256-jZ9fPgH9s3+R0uU4s9OhyPXOufo1Seh0Y7wzYz0qAr8=", + "lastModified": 1778598708, + "narHash": "sha256-zEqv3NDSUYY+09VDLupqY96bfN5gkb/OjPbJFp1/vvM=", "owner": "jetpham", "repo": "nix-t3code", - "rev": "b4b106ccd832a15a6f3d89796538555437796e18", + "rev": "87ed3952374699b1fb67e7bd7e051d6a48125aff", "type": "github" }, "original": { @@ -470,11 +470,11 @@ ] }, "locked": { - "lastModified": 1779455631, - "narHash": "sha256-svU6Ro4xiMxMA1KJGwQ/nfKwz3yXE/SONCw2Z1qTXHA=", + "lastModified": 1778585655, + "narHash": "sha256-yfxy9aTlIgU2Z36H8cJURgYLgjT4qvFeOzoAC/HXcKM=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "5bcdfcef664bf62831dcb4b947004d9c5fbf7201", + "rev": "42f41abcef13dc81c85407b57aa1fd1bde46e46c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 468d23e..d0330c8 100644 --- a/flake.nix +++ b/flake.nix @@ -63,13 +63,8 @@ inputs.nur.overlays.default inputs.ghostty.overlays.default inputs.helix.overlays.default - (_final: prev: { - opencode = opencode.packages.${prev.stdenv.hostPlatform.system}.opencode.overrideAttrs (old: { - postPatch = (old.postPatch or "") + '' - substituteInPlace package.json \ - --replace-fail '"packageManager": "bun@1.3.14"' '"packageManager": "bun@1.3.13"' - ''; - }); + (final: prev: { + opencode = opencode.packages.${prev.stdenv.hostPlatform.system}.opencode; }) ]; } diff --git a/gnome-extensions/evil-bit-toggle/extension.js b/gnome-extensions/evil-bit-toggle/extension.js deleted file mode 100644 index ca2346c..0000000 --- a/gnome-extensions/evil-bit-toggle/extension.js +++ /dev/null @@ -1,151 +0,0 @@ -import Gio from 'gi://Gio'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; - -import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as QuickSettings from 'resource:///org/gnome/shell/ui/quickSettings.js'; - -const EVIL_BIT_CTL = '@evilBitCtl@'; -const PKEXEC = '/run/wrappers/bin/pkexec'; -const STATE_FILE = '/run/evil-bit-toggle/enabled'; -const ICON_NAME = 'dialog-warning-symbolic'; - -const EvilBitToggle = GObject.registerClass( -class EvilBitToggle extends QuickSettings.QuickToggle { - constructor() { - super({ - title: 'Evil Bit', - subtitle: 'RFC 3514: good', - iconName: ICON_NAME, - toggleMode: true, - }); - - this._syncing = false; - this._pending = false; - this._destroyed = false; - this._syncFromState(); - - this._checkedId = this.connect('notify::checked', () => { - if (this._syncing) - return; - - this._setEvilBit(this.checked); - }); - } - - _isEnabled() { - return GLib.file_test(STATE_FILE, GLib.FileTest.EXISTS); - } - - _syncFromState() { - this._syncing = true; - this.checked = this._isEnabled(); - this._syncing = false; - this._syncSubtitle(); - } - - _setEvilBit(enabled) { - if (this._pending) - return; - - this._pending = true; - this.reactive = false; - this.subtitle = 'Applying...'; - - const action = enabled ? 'enable' : 'disable'; - let proc; - - try { - proc = Gio.Subprocess.new( - [PKEXEC, EVIL_BIT_CTL, action], - Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE - ); - } catch (error) { - this._finishSetEvilBit(error); - return; - } - - proc.communicate_utf8_async(null, null, (subprocess, result) => { - try { - const [, , stderr] = subprocess.communicate_utf8_finish(result); - - if (!subprocess.get_successful()) - throw new Error(stderr.trim() || `evil-bitctl ${action} failed`); - - this._finishSetEvilBit(null); - } catch (error) { - this._finishSetEvilBit(error); - } - }); - } - - _finishSetEvilBit(error) { - if (error) - console.warn(`Unable to toggle Evil Bit: ${error.message}`); - - if (this._destroyed) - return; - - this._pending = false; - this.reactive = true; - this._syncFromState(); - } - - _syncSubtitle() { - this.subtitle = this.checked ? 'RFC 3514: evil' : 'RFC 3514: good'; - } - - destroy() { - this._destroyed = true; - - if (this._checkedId) { - this.disconnect(this._checkedId); - this._checkedId = null; - } - - super.destroy(); - } -}); - -const EvilBitIndicator = GObject.registerClass( -class EvilBitIndicator extends QuickSettings.SystemIndicator { - constructor() { - super(); - - this._indicator = this._addIndicator(); - this._indicator.icon_name = ICON_NAME; - - this._toggle = new EvilBitToggle(); - this._indicator.visible = this._toggle.checked; - this._checkedId = this._toggle.connect('notify::checked', () => { - this._indicator.visible = this._toggle.checked; - }); - - this.quickSettingsItems.push(this._toggle); - } - - destroy() { - if (this._checkedId) { - this._toggle.disconnect(this._checkedId); - this._checkedId = null; - } - - this.quickSettingsItems.forEach(item => item.destroy()); - this._toggle = null; - - super.destroy(); - } -}); - -export default class EvilBitToggleExtension extends Extension { - enable() { - this._indicator = new EvilBitIndicator(); - Main.panel.statusArea.quickSettings.addExternalIndicator(this._indicator); - } - - disable() { - this._indicator.destroy(); - this._indicator = null; - } -} diff --git a/gnome-extensions/evil-bit-toggle/metadata.json b/gnome-extensions/evil-bit-toggle/metadata.json deleted file mode 100644 index 5b78e56..0000000 --- a/gnome-extensions/evil-bit-toggle/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "uuid": "evil-bit-toggle@jetpham.github.com", - "name": "Evil Bit Toggle", - "description": "Adds a Quick Settings toggle for the RFC 3514 evil bit.", - "shell-version": ["49"] -} diff --git a/gnome-extensions/reduced-motion-toggle/extension.js b/gnome-extensions/reduced-motion-toggle/extension.js deleted file mode 100644 index 8125f19..0000000 --- a/gnome-extensions/reduced-motion-toggle/extension.js +++ /dev/null @@ -1,96 +0,0 @@ -import Gio from 'gi://Gio'; -import GObject from 'gi://GObject'; - -import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; -import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -import * as QuickSettings from 'resource:///org/gnome/shell/ui/quickSettings.js'; - -const INTERFACE_SCHEMA = 'org.gnome.desktop.interface'; -const ENABLE_ANIMATIONS_KEY = 'enable-animations'; - -const ReducedMotionToggle = GObject.registerClass( -class ReducedMotionToggle extends QuickSettings.QuickToggle { - constructor() { - super({ - title: 'Reduced Motion', - subtitle: 'Prefer fewer animations', - iconName: 'preferences-desktop-accessibility-symbolic', - toggleMode: true, - }); - - this._settings = new Gio.Settings({schema_id: INTERFACE_SCHEMA}); - this._syncing = false; - this._changedId = this._settings.connect( - `changed::${ENABLE_ANIMATIONS_KEY}`, - () => this._sync() - ); - this._checkedId = this.connect('notify::checked', () => { - if (!this._syncing) - this._settings.set_boolean(ENABLE_ANIMATIONS_KEY, !this.checked); - }); - - this._sync(); - } - - _sync() { - const reducedMotionEnabled = !this._settings.get_boolean(ENABLE_ANIMATIONS_KEY); - - if (this.checked === reducedMotionEnabled) - return; - - this._syncing = true; - this.checked = reducedMotionEnabled; - this._syncing = false; - } - - destroy() { - if (this._changedId) { - this._settings.disconnect(this._changedId); - this._changedId = null; - } - - if (this._checkedId) { - this.disconnect(this._checkedId); - this._checkedId = null; - } - - super.destroy(); - } -}); - -const ReducedMotionIndicator = GObject.registerClass( -class ReducedMotionIndicator extends QuickSettings.SystemIndicator { - constructor() { - super(); - - this._indicator = this._addIndicator(); - this._indicator.icon_name = 'preferences-desktop-accessibility-symbolic'; - - this._toggle = new ReducedMotionToggle(); - this._indicator.visible = this._toggle.checked; - this._toggle.connect('notify::checked', () => { - this._indicator.visible = this._toggle.checked; - }); - - this.quickSettingsItems.push(this._toggle); - } - - destroy() { - this.quickSettingsItems.forEach(item => item.destroy()); - this._toggle = null; - - super.destroy(); - } -}); - -export default class ReducedMotionToggleExtension extends Extension { - enable() { - this._indicator = new ReducedMotionIndicator(); - Main.panel.statusArea.quickSettings.addExternalIndicator(this._indicator); - } - - disable() { - this._indicator.destroy(); - this._indicator = null; - } -} diff --git a/gnome-extensions/reduced-motion-toggle/metadata.json b/gnome-extensions/reduced-motion-toggle/metadata.json deleted file mode 100644 index 02bfee0..0000000 --- a/gnome-extensions/reduced-motion-toggle/metadata.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "uuid": "reduced-motion-toggle@jetpham.github.com", - "name": "Reduced Motion Toggle", - "description": "Adds a Quick Settings toggle for GNOME's reduced motion preference.", - "shell-version": ["49"] -} diff --git a/home-modules/desktop.nix b/home-modules/desktop.nix index f656e82..32dafd1 100644 --- a/home-modules/desktop.nix +++ b/home-modules/desktop.nix @@ -176,42 +176,25 @@ in "wifiqrcode@glerro.pm.me" "system-monitor-next@paradoxxx.zero.gmail.com" "clipboard-indicator@tudmotu.com" + "emoji-copy@felipeftn" "tailscale@joaophi.github.com" "auto-move-windows@gnome-shell-extensions.gcampax.github.com" + "appindicatorsupport@rgcjonas.gmail.com" "gnome-shell-extension-maximized-by-default@stiggimy.github.com" "no-titlebar-when-maximized@alec.ninja" - "evil-bit-toggle@jetpham.github.com" - "reduced-motion-toggle@jetpham.github.com" ]; favorite-apps = favoriteApps; }; "org/gnome/shell/extensions/auto-move-windows" = { application-list = autoMoveApplications; }; - "org/gnome/shell/extensions/hidetopbar" = { - enable-intellihide = true; - show-in-overview = true; - }; - "org/gnome/shell/extensions/system-monitor-next-applet" = { - center-display = false; - left-display = true; - move-clock = false; - }; - "org/gnome/desktop/wm/keybindings" = { - switch-to-workspace-1 = [ "1" ]; - switch-to-workspace-2 = [ "2" ]; - switch-to-workspace-3 = [ "3" ]; - switch-to-workspace-4 = [ "4" ]; - switch-to-workspace-5 = [ "5" ]; - switch-to-workspace-6 = [ "6" ]; - }; "org/gnome/shell/keybindings" = { - switch-to-application-1 = [ ]; - switch-to-application-2 = [ ]; - switch-to-application-3 = [ ]; - switch-to-application-4 = [ ]; - switch-to-application-5 = [ ]; - switch-to-application-6 = [ ]; + switch-to-application-1 = [ "1" ]; + switch-to-application-2 = [ "2" ]; + switch-to-application-3 = [ "3" ]; + switch-to-application-4 = [ "4" ]; + switch-to-application-5 = [ "5" ]; + switch-to-application-6 = [ "6" ]; }; "org/gtk/gtk4/settings/file-chooser" = { show-hidden = true; diff --git a/home-modules/lib.nix b/home-modules/lib.nix index 89513c2..a4ef031 100644 --- a/home-modules/lib.nix +++ b/home-modules/lib.nix @@ -16,7 +16,6 @@ let nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram "$out/bin/opencode" \ - --set OPENCODE_DB opencode.db \ --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib ]}" ''; }; diff --git a/home-modules/opencode.nix b/home-modules/opencode.nix index dc37f8f..9173ae3 100644 --- a/home-modules/opencode.nix +++ b/home-modules/opencode.nix @@ -1,4 +1,4 @@ -{ homeLib, pkgs, ... }: +{ homeLib, ... }: { home.file.".agents/skills/check-pr".source = "${homeLib.greptileSkills}/check-pr"; @@ -19,30 +19,6 @@ url = "https://mcp.linear.app/mcp"; enabled = true; }; - mcp.heytea = { - type = "remote"; - url = "https://mcp.heytea.dev/mcp"; - enabled = true; - }; - mcp.chrome-devtools = { - type = "local"; - command = [ - "${pkgs.nodejs_24}/bin/npx" - "-y" - "chrome-devtools-mcp@latest" - "--executable-path=${pkgs.google-chrome}/bin/google-chrome-stable" - "--no-usage-statistics" - "--no-performance-crux" - ]; - enabled = true; - env = { - CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS = "1"; - NO_UPDATE_NOTIFIER = "1"; - NPM_CONFIG_AUDIT = "false"; - NPM_CONFIG_FUND = "false"; - NPM_CONFIG_UPDATE_NOTIFIER = "false"; - }; - }; model = "openai/gpt-5.5-fast"; small_model = "openai/gpt-5.4-mini-fast"; provider.openai.models."gpt-5.5-fast".options = { diff --git a/home-modules/packages.nix b/home-modules/packages.nix index ff29bef..e1b2d35 100644 --- a/home-modules/packages.nix +++ b/home-modules/packages.nix @@ -5,110 +5,6 @@ ... }: -let - tailscaleQsGnome49 = pkgs.gnomeExtensions.tailscale-qs.overrideAttrs (old: { - postInstall = (old.postInstall or "") + '' - substituteInPlace "$out/share/gnome-shell/extensions/tailscale@joaophi.github.com/metadata.json" \ - --replace-fail '"48"' '"48", "49"' - ''; - }); - - evilBitCtl = pkgs.writeShellApplication { - name = "evil-bitctl"; - runtimeInputs = [ - pkgs.coreutils - pkgs.nftables - ]; - text = '' - state_dir=/run/evil-bit-toggle - state_file="$state_dir/enabled" - table=evil_bit - chain=output - - usage() { - printf 'Usage: evil-bitctl {enable|disable|status}\n' >&2 - exit 64 - } - - enable() { - nft add table ip "$table" 2>/dev/null || true - - if nft list chain ip "$table" "$chain" >/dev/null 2>&1; then - nft flush chain ip "$table" "$chain" - else - nft add chain ip "$table" "$chain" '{ type route hook output priority mangle; policy accept; }' - fi - - nft add rule ip "$table" "$chain" ip frag-off set ip frag-off '|' 0x8000 - install -d -m 0755 "$state_dir" - touch "$state_file" - } - - disable() { - nft delete table ip "$table" 2>/dev/null || true - rm -f "$state_file" - rmdir "$state_dir" 2>/dev/null || true - } - - status() { - if [ -e "$state_file" ] && nft list table ip "$table" >/dev/null 2>&1; then - printf 'enabled\n' - else - printf 'disabled\n' - fi - } - - case "''${1:-}" in - enable) - enable - ;; - disable) - disable - ;; - status) - status - ;; - *) - usage - ;; - esac - ''; - }; - - reducedMotionToggleExtension = pkgs.stdenvNoCC.mkDerivation { - pname = "gnome-shell-extension-reduced-motion-toggle"; - version = "1"; - src = ../gnome-extensions/reduced-motion-toggle; - - installPhase = '' - runHook preInstall - - mkdir -p "$out/share/gnome-shell/extensions/reduced-motion-toggle@jetpham.github.com" - cp -r . "$out/share/gnome-shell/extensions/reduced-motion-toggle@jetpham.github.com" - - runHook postInstall - ''; - }; - - evilBitToggleExtension = pkgs.stdenvNoCC.mkDerivation { - pname = "gnome-shell-extension-evil-bit-toggle"; - version = "1"; - src = ../gnome-extensions/evil-bit-toggle; - - installPhase = '' - runHook preInstall - - substituteInPlace extension.js \ - --replace-fail @evilBitCtl@ ${evilBitCtl}/bin/evil-bitctl - - mkdir -p "$out/share/gnome-shell/extensions/evil-bit-toggle@jetpham.github.com" - cp -r . "$out/share/gnome-shell/extensions/evil-bit-toggle@jetpham.github.com" - - runHook postInstall - ''; - }; -in - { home.packages = with pkgs; [ bat @@ -182,16 +78,16 @@ in xprop xdg-utils + gnomeExtensions.appindicator gnomeExtensions.auto-move-windows gnomeExtensions.clipboard-indicator + gnomeExtensions.emoji-copy gnomeExtensions.hide-top-bar gnomeExtensions.maximized-by-default-actually-reborn gnomeExtensions.no-titlebar-when-maximized gnomeExtensions.system-monitor-next - tailscaleQsGnome49 + gnomeExtensions.tailscale-qs gnomeExtensions.wifi-qrcode - evilBitToggleExtension - reducedMotionToggleExtension nerd-fonts.commit-mono ];