Merge pull request #1438 from Enzime/push-qztkxuoksrpv

programs/_1password{,-gui}: init modules
This commit is contained in:
Michael Hoang 2025-05-08 22:50:54 +10:00 committed by GitHub
commit 6cb36e8327
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 82 additions and 0 deletions

View file

@ -99,6 +99,8 @@
./services/yabai
./services/nextdns
./services/jankyborders
./programs/_1password.nix
./programs/_1password-gui.nix
./programs/bash
./programs/direnv.nix
./programs/fish.nix

View file

@ -0,0 +1,49 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.programs._1password-gui;
in
{
options = {
programs._1password-gui = {
enable = lib.mkEnableOption "the 1Password GUI application";
package = lib.mkPackageOption pkgs "1Password GUI" {
default = [ "_1password-gui" ];
};
};
};
config = lib.mkIf cfg.enable {
# Based on https://github.com/reckenrode/nixos-configs/blob/22b8357fc6ffbd0df5ce50dc417c23a807a268a2/modules/by-name/1p/1password/darwin-module.nix
system.activationScripts.applications.text = lib.mkAfter ''
install -o root -g wheel -m0555 -d "/Applications/1Password.app"
rsyncFlags=(
# mtime is standardized in the nix store, which would leave only file size to distinguish files.
# Thus we need checksums, despite the speed penalty.
--checksum
# Converts all symlinks pointing outside of the copied tree (thus unsafe) into real files and directories.
# This neatly converts all the symlinks pointing to application bundles in the nix store into
# real directories, without breaking any relative symlinks inside of application bundles.
# This is good enough, because the make-symlinks-relative.sh setup hook converts all $out internal
# symlinks to relative ones.
--copy-unsafe-links
--archive
--delete
--chmod=-w
--no-group
--no-owner
)
${lib.getExe pkgs.rsync} "''${rsyncFlags[@]}" \
${pkgs._1password-gui}/Applications/1Password.app/ /Applications/1Password.app
'';
};
}

View file

@ -0,0 +1,31 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.programs._1password;
in
{
options = {
programs._1password = {
enable = lib.mkEnableOption "the 1Password CLI tool";
package = lib.mkPackageOption pkgs "1Password CLI" {
default = [ "_1password-cli" ];
};
};
};
config = lib.mkIf cfg.enable {
# Integration with the 1Password GUI will only work if the CLI at `/usr/local/bin/op`
# Based on https://github.com/reckenrode/nixos-configs/blob/22b8357fc6ffbd0df5ce50dc417c23a807a268a2/modules/by-name/1p/1password/darwin-module.nix
system.activationScripts.applications.text = lib.mkAfter ''
install -o root -g wheel -m0555 -D \
${lib.getExe pkgs._1password-cli} /usr/local/bin/op
'';
};
}