GNU bug report logs - #68857
gnu: home: dotfiles: Avoid creating extra directory in $HOME.

Previous Next

Package: guix-patches;

Reported by: paul <goodoldpaul <at> autistici.org>

Date: Wed, 31 Jan 2024 22:17:02 UTC

Severity: normal

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #29 received at 68857 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Giacomo Leidi <goodoldpaul <at> autistici.org>
Cc: 68857 <at> debbugs.gnu.org
Subject: Re: bug#68857: gnu: home: dotfiles: Avoid creating extra directory
 in $HOME.
Date: Tue, 20 Feb 2024 10:37:08 +0100
Hello Giacomo!

Giacomo Leidi <goodoldpaul <at> autistici.org> skribis:

> The current implementation of the home-dotfiles-service-type contradicts
> the Guix manual (see https://issues.guix.gnu.org/68848 ). This patch
> properly implements both the plain and Stow dotfiles directory layouts.
>
> It does so by creating a new record type for each directory layout. This
> approach, compared to having a single field in
> home-dotfiles-configuration,
> allows for having different layouts for different directories and to
> carry additional information that might be required for some layouts.
>
> Implementing a new layout should just be a matter of creating a new
> record type, defining a strip-*-dotfile procedure and plugging them into
> the home-dotfiles-service-type.
>
> * gnu/home/services/dotfiles (home-dotfiles-stow-directory): New
> variable;
> (home-dotfiles-plain-directory): new variable;
> (home-dotfiles-configuration): migrate to (gnu services configuration);
> (strip-stow-dotfile): new variable;
> (strip-plain-dotfile): new variable;
> (home-dotfiles-configuration->files): use the new record types;
> [directory-contents]: allow for
> selecting a subset of application dotfile directories;
> * doc/guix.texi: document the new layouts.
>
> Change-Id: I2e96037608353e360828290f055ec5271cfdfd48

Thanks for working on it!

> +There are two supported dotfiles directory layouts, for now. The
> +@code{home-dotfiles-plain-directory} layout, which is structured as follows:
> +
> +@example
> +~$ tree -a ./dotfiles/
> +dotfiles/
> +├── .gitconfig
> +├── .gnupg
> +│   ├── gpg-agent.conf
> +│   └── gpg.conf
> +├── .guile
> +├── .config
> +│   ├── guix
> +│   │   └── channels.scm
> +│   └── nixpkgs
> +│       └── config.nix
> +├── .nix-channels
> +├── .tmux.conf
> +└── .vimrc
> +@end example

I’d add a sentence like: “This tree structure is installed as is to the
home directory upon @command{guix home reconfigure}.”

> -(define-record-type* <home-dotfiles-configuration>
> -  home-dotfiles-configuration make-home-dotfiles-configuration
> -  home-dotfiles-configuration?
> -  (source-directory  home-dotfiles-configuration-source-directory
> -                     (default (current-source-directory))
> -                     (innate))
> -  (directories       home-dotfiles-configuration-directories       ;list of strings
> -                     (default '()))
> -  (excluded          home-dotfiles-configuration-excluded       ;list of strings
> -                     (default %home-dotfiles-excluded)))
> -
> -(define (import-dotfiles directory files)
> +(define list-of-strings?
> +  (list-of string?))
> +
> +(define-maybe list-of-strings)
> +
> +(define-configuration/no-serialization home-dotfiles-stow-directory

[...]

> +(define-configuration/no-serialization home-dotfiles-configuration

I think we should keep ‘home-dotfiles-configuration’ for compatibility
(this patch keeps the exports but removes the actual
<home-dotfiles-configuration> definition IIUC).

Also, as a rule of thumb, the configuration of a given service type is
usually monomorphic (always the same configuration record type), which I
find clearer.

Instead of having these two record types, would it be an option to add a
‘type’ field (or similar) to <home-dotfiles-configuration>, as discussed
earlier?

Thanks,
Ludo’.




This bug report was last modified 1 year and 78 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.