gnome-keyring: simplify the scripts (untested)

This commit is contained in:
Colin 2024-02-23 08:14:09 +00:00
parent 687db545b4
commit ea6f45555c
4 changed files with 22 additions and 30 deletions

View File

@ -0,0 +1,4 @@
[keyring]
display-name=Default keyring
lock-on-idle=false
lock-after=false

View File

@ -0,0 +1 @@
Default_keyring

View File

@ -1,10 +1,4 @@
{ config, lib, pkgs, ... }:
let
init-keyring = pkgs.static-nix-shell.mkBash {
pname = "init-keyring";
src = ./.;
};
in
{
sane.programs.gnome-keyring = {
packageUnwrapped = pkgs.gnome.gnome-keyring;
@ -13,10 +7,24 @@ in
".local/share/keyrings"
];
# TODO: factor into a native sane.fs primitive (i.e. fs.$entry.text = ... with some "no-clobber" option)
fs.".local/share/keyrings/Default_keyring.keyring" = {
generated.command = [
"cp --no-clobber ${./Default_keyring.keyring} /home/colin/.local/share/keyrings/Default_keyring.keyring"
];
wantedBy = [ config.sane.fs."${config.sane.persist.stores.private.origin}".unit ];
# TODO: move gnome-keyring.service under our control and then i can
# ensure ordering here.
wantedBeforeBy = [ ]; # don't create this as part of `multi-user.target`
};
fs.".local/share/keyrings/default" = {
generated.command = [ "${init-keyring}/bin/init-keyring" ];
# wantedBy = [ config.sane.fs."/home/colin/private".unit ];
wantedBeforeBy = [ ]; # don't created this as part of `multi-user.target`
generated.command = [
"cp --no-clobber ${./default} /home/colin/.local/share/keyrings/default"
];
wantedBy = [ config.sane.fs."${config.sane.persist.stores.private.origin}".unit ];
# TODO: move gnome-keyring.service under our control and then i can
# ensure ordering here.
wantedBeforeBy = [ ]; # don't create this as part of `multi-user.target`
};
};

View File

@ -1,21 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash
# initializes the default libsecret keyring (used by gnome-keyring) if not already initialized.
# this initializes it to be plaintext/unencrypted.
ringdir=~/.local/share/keyrings
if test -e "$ringdir/default"
then
echo 'gnome-keyring/init-keyring: already initialized: not doing anything'
else
keyring="$ringdir/Default_keyring.keyring"
echo 'gnome-keyring/init-keyring: initializing default user keyring:' "$keyring.new"
echo '[keyring]' > "$keyring.new"
echo 'display-name=Default keyring' >> "$keyring.new"
echo 'lock-on-idle=false' >> "$keyring.new"
echo 'lock-after=false' >> "$keyring.new"
chown colin:users "$keyring.new"
# closest to an atomic update we can achieve
mv "$keyring.new" "$keyring" && echo -n "Default_keyring" > "$ringdir/default"
fi