Jakub Czajka [Sun, 21 Jun 2026 13:43:30 +0000 (15:43 +0200)]
[home] Add desktop notification hooks for Claude Code.
Send dunstify notifications on permission_prompt and idle_prompt
events via a shell script alongside the existing guix-check hook.
Uses a single Notification matcher entry in project settings.json
referenced via CLAUDE_PROJECT_DIR.
Jakub Czajka [Sat, 20 Jun 2026 22:39:24 +0000 (00:39 +0200)]
[home] Introduce Claude Code settings.json installed via Guix home.
- Add claude/.config/claude/settings.json with model overrides, max
- effort and apiKeyHelper wired to pass.
- Add conf/home/claude.scm service module bundling the claude-code
package with its dotfile.
- Wire claude-service into home.scm, replacing the raw claude-code
package.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jakub Czajka [Sat, 20 Jun 2026 22:38:14 +0000 (00:38 +0200)]
[emacs] Add geiser-guile and flymake-guile for Scheme editing.
Configure geiser-guile and flymake-guile in conf-lisp.el, gated on the
guile binary being present for portability. Document the Lisp/Scheme
ecosystem and the environment variables set in .dir-locals.el.
Update .dir-locals.el copyright year to 2026.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jakub Czajka [Sat, 20 Jun 2026 21:44:28 +0000 (23:44 +0200)]
[home] Fix duplicate service type conflict in home reconfigure.
home-symlink-service-type was named 'home-profile', colliding with
the built-in home-profile-service-type. Additionally, both
profile-service (bash.scm) and channels-service (guix.scm) directly
instantiated home-symlink-service-type — but Guix allows only one
direct (service <type> ...) per service type across the entire service
graph.
Changes:
- symlink.scm: Rename service type from 'home-profile' to
'home-symlink', reflecting its actual purpose.
- bash.scm: Route profile-service through home-program-service-type
(which extends home-symlink-service-type via service-extension)
instead of directly instantiating it. Remove unused
(conf home symlink) import.
- guix.scm: Same for channels-service. Switch import from
(conf home symlink) to (conf home program).
Service extensions can be merged by Guix; direct instantiations
cannot, hence the "more than one target service" error.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jakub Czajka [Sat, 20 Jun 2026 21:40:24 +0000 (23:40 +0200)]
[home] Install Claude Code.
Introduce a Guix package for the upstream Claude Code binary. The
binary is prebuilt for FHS systems, so wrap it in a shell script that
sets LD_LIBRARY_PATH to Guix store paths and invokes it via ld-linux.
Set CLAUDE_CONFIG_DIR to store its configuration under ~/.config/claude
instead of ~/.claude. Document manual version-update instructions in
the README.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jakub Czajka [Sat, 20 Jun 2026 20:58:16 +0000 (22:58 +0200)]
[emacs] Set Guile environment variables in dir-locals.
.dir-locals.el now sets GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH
so that Emacs can compile Guile files with guild compile. TAGS file is
no longer necessary as geiser provides references.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jakub Czajka [Sun, 12 May 2024 10:54:23 +0000 (12:54 +0200)]
[system] Explicly disable Wayland.
Accordion to documentation, `(wayland? #f)` is the default
setting. However, Guix installed Xwayland which broke the
system. By disabling Wayland explicitly Guix returned to Xorg.
Jakub Czajka [Sat, 24 Dec 2022 12:31:41 +0000 (13:31 +0100)]
[home] Install custom st.
This commit installs custom version of the st terminal. It includes
the libxft-bgra patche and more. The source code is obtained from a
self-hosted git instance.
Jakub Czajka [Fri, 23 Dec 2022 19:57:37 +0000 (20:57 +0100)]
[common] Package libxft with the bgra patch.
Libxft has a bug which crashes the library when displaying colorful
emojis. A patch is available online. This commit packages libxft with
the patch applied.
Jakub Czajka [Fri, 23 Dec 2022 19:47:12 +0000 (20:47 +0100)]
[common] Install programs from local source code.
Guix downloads programs and source code from the internet. However, if
we want to install custom versions of these programs, we need to
compile them manually from local source code. This commit adds helper
functions for working with such programs.
Jakub Czajka [Fri, 23 Dec 2022 18:01:17 +0000 (19:01 +0100)]
[emacs] Extend the default minibuffer.
Minibuffer is a special window for selecting from a set of
values (e.g. a file to open). This commit extends the default emacs
minibuffer with orderless (narrowing the set of values) and
vertico (live preview of the set of values).
Jakub Czajka [Fri, 23 Dec 2022 17:40:24 +0000 (18:40 +0100)]
[emacs] Simplify entering long keybindings.
Emacs has a lot of built-in keybindings and users can define
more. They can be long. This commit installs which-key and
transient which help when entering long keybindings.
Jakub Czajka [Fri, 23 Dec 2022 17:11:27 +0000 (18:11 +0100)]
[emacs] Read documents within emacs.
Emacs has built-in support for reading PDFs. However, pdf-tools is
better than the default PDF reader. This commit installs pdf-tools and
the necessary dependencies.
Jakub Czajka [Thu, 22 Dec 2022 21:05:02 +0000 (22:05 +0100)]
[emacs] Structure working with packages.
Elisp code can be packaged and shared as a package. This commit
structures how emacs should work with packages. It installs
`use-package` which simplifies installation of other packages.