switch to ubuntu 26 with wayland and more ❄️#3
Draft
MaxWolf-01 wants to merge 34 commits intomasterfrom
Draft
Conversation
Wayland migration: - Switch clipboard from xclip to wl-copy (tmux, aliases, functions) - Remove setxkbmap from zshrc, add keyboard layout to gnome.nix dconf - Switch desktop.nix from kitty to ghostty - Switch zephyrus from x11.nix to wayland.nix - Add nvtop LD_LIBRARY_PATH alias for non-NixOS GNOME declarative config: - Migrate keybindings from keybindings.pl/CSV to dconf.settings - Migrate tiling-shell config from dconf dump to dconf.settings - Migrate MIME defaults from setup script to HM xdg.mimeApps - Migrate nvim desktop entry from .desktop file to HM xdg.desktopEntries - Add dconf2nix to desktop packages Desktop packages: - Enable tiling-shell from nixpkgs (GNOME 50 >= 45) - Add obsidian from nixpkgs (replaces AppImage) - Add qdirstat - Drop GTK workaround packages (gedit, nautilus, nemo, yaru-theme, alacritty) Setup script: - Refactor ubuntu(): drivers, codecs, minimal apt, everything else in HM - Remove obsolete functions: obsidian, discord, tiling_shell, nvidia_optimus, vim_copilot, wireguard_client - Remove get_claude TODO guard - Remove obsolete files: keybindings.pl, keybindings.csv, tilingshell.dconf, nvim.desktop, obsidian.desktop Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Pass Alt+1-9 through to tmux (was ghostty tab switching) - Pass Ctrl+Shift+T through, bind in tmux as new-window - Set ghostty as GNOME default terminal Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- firefox.nix: policies (telemetry, studies, tracking, AI chatbot/link previews disabled), custom search engines (@gh/@nix/@pypi/@mdn), about:config hardening (HTTPS-only, privacy, VA-API hw decode, tab unloading, dark mode, containers) - gnome.nix: screenshot keybindings, message tray, disable toggle-overview and switch-to-application-1..9 - desktop.nix: import firefox.nix - README.md: update tree, setup flow, remove stale tiling_shell ref - CLAUDE.md: update HM file listing and setup flow Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Newline-joined string only prefixed the first line with `keybind =`, causing Ghostty to treat the rest as unknown top-level fields. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GNOME's Ctrl+Alt+T uses xdg-terminal-exec, which defaults to ptyxis on Ubuntu 26. Setting xdg-terminals.list tells it to use ghostty. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- common.nix: add weekly nix GC (--delete-older-than 30d) - nix.conf: enable auto-optimise-store (hardlink dedup) - pc/configuration.nix: system-level GC + auto-optimise-store - gnome.nix: fix idle-delay/lock-delay with mkUint32 (were silently ignored), add power management settings, disable ibus emoji - setup: remove /usr/lib/firefox so HM Firefox takes precedence - bin/ubuntu-install: debootstrap installer for Ubuntu 26.04 LUKS+LVM+EFI, interactive disk/root-size prompts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- restore-working: restore latest "working" backup from rsync.net - migrate-firefox-snap: move Firefox profile from snap to HM path Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
HM's built-in nix.gc already generates the systemd service and timer with sensible defaults (weekly, persistent). The manual definition caused a duplicate ExecStart error. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Firefox can only see ~/Downloads, ~/Pictures, ~/Music, ~/Videos, and ~/.mozilla. Screenshots and screencasts blacklisted within those dirs. Everything else in ~ (secrets, SSH keys, repos, claude sessions, dotfiles) is invisible. Desktop entry launches through firejail; GNOME keybindings and link clicks inherit the sandbox. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The sh -c wrapper with conditionals isn't valid in desktop entry Exec fields (reserved characters). firejail is installed via apt on Ubuntu, so it's always available on desktop machines. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Firejail's AppArmor profile blocks execution from /nix/store, causing "Permission denied" on .firefox-wrapped. Disable AppArmor confinement in firefox.local (all other sandbox layers remain active). Desktop entry now uses absolute paths so GNOME can launch firefox without ~/.nix-profile/bin in its PATH. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The last command `[ -n "$dur_str" ] && printf ...` exits 1 when dur_str is empty, causing Claude Code to suppress the entire statusline output. Append `; :` (no-op) to ensure exit 0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bootstraps ~/.ssh/id_ed25519 from the sops-encrypted copy in secrets/passwords/. Derives public key automatically. Enables self-bootstrapping restore: age key → setup secrets → SSH key → rsync.net. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Without this, restore-working fails because the passphrase-protected key isn't loaded into the agent yet. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
btop source only needed during build, no reason to persist in ~/repos/tools. obsidian-skills now handled as a Claude plugin. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…to ubuntu-26-wayland # Conflicts: # claude/settings.json
Avoids .claude/ conflicts from restore overwriting files claude just created. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…to ubuntu-26-wayland
- Move oyo install + loginctl enable-linger to ubuntu() - Move chsh to host() after HM switch (nix zsh not available earlier) - Remove apt zsh (nix provides it) - Fix ubuntu-install: define colors/die before first use Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…to ubuntu-26-wayland
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Absorb minimal() into host() — one command for full setup - Add curl to apt deps (debootstrap installs don't include it) - Move btop build from host() to ubuntu() - Use disk-based bootloader-id (ubuntu-nvme1n1) to avoid EFI collisions - Update README for single-command flow Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Nix's c++ produces binaries with Nix's ld-linux, which can't dlopen system libs like libnvidia-ml.so at runtime. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.