Skip to content

nixos/howdy: init#216245

Merged
doronbehar merged 4 commits into
NixOS:staging-nixosfrom
fufexan:howdy
Jan 20, 2026
Merged

nixos/howdy: init#216245
doronbehar merged 4 commits into
NixOS:staging-nixosfrom
fufexan:howdy

Conversation

@fufexan
Copy link
Copy Markdown
Contributor

@fufexan fufexan commented Feb 14, 2023

Description of changes

Adds Howdy as a service.

TODO:

  • make sure it can add/recognize/remove facial models.
  • add optional linux-enable-ir-emitter service needed for some IR cameras.
  • get it working properly with PAM.
  • get the GTK version running (may be out of scope for now).
  • Resolve PAM comment by @Majiir .

Fixes #76928

Things done
  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 23.05 Release Notes (or backporting 22.11 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

closes #344024

@github-actions github-actions Bot added 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: changelog This PR adds or changes release notes 8.has: documentation This PR adds or changes documentation 8.has: module (update) This PR changes an existing module in `nixos/` labels Feb 14, 2023
@fufexan fufexan added 8.has: package (new) This PR adds a new package 8.has: module (new) This PR adds a module in `nixos/` and removed 8.has: module (update) This PR changes an existing module in `nixos/` labels Feb 14, 2023
@fufexan fufexan requested a review from Atemu February 14, 2023 00:32
@adamcstephens adamcstephens self-requested a review February 14, 2023 02:04
@ofborg ofborg Bot added 11.by: package-maintainer This PR was created by a maintainer of all the package it changes. 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. labels Feb 14, 2023
@Atemu
Copy link
Copy Markdown
Member

Atemu commented Feb 14, 2023

I don't have the HW to test this.

@Atemu Atemu removed their request for review February 14, 2023 08:54
@fufexan fufexan changed the title howdy: init nixos/howdy: init Feb 14, 2023
@github-actions github-actions Bot added the 8.has: module (update) This PR changes an existing module in `nixos/` label Feb 14, 2023
Comment thread nixos/modules/services/misc/linux-enable-ir-emitter.nix Outdated
Comment thread nixos/modules/services/misc/linux-enable-ir-emitter.nix Outdated
Comment thread nixos/modules/services/misc/linux-enable-ir-emitter.nix Outdated
Comment thread nixos/modules/services/misc/linux-enable-ir-emitter.nix Outdated
Comment thread nixos/modules/services/security/howdy.nix Outdated
Comment thread nixos/modules/services/security/howdy.nix Outdated
Comment thread pkgs/applications/system/howdy/default.nix Outdated
Comment thread pkgs/applications/system/howdy/default.nix Outdated
Comment thread pkgs/applications/system/linux-enable-ir-emitter/default.nix Outdated
Comment thread pkgs/applications/system/linux-enable-ir-emitter/default.nix Outdated
Comment thread nixos/modules/services/security/howdy.nix Outdated
Comment thread pkgs/applications/system/howdy/default.nix Outdated
@fufexan fufexan force-pushed the howdy branch 4 times, most recently from 762e062 to 7a200d4 Compare February 15, 2023 19:27
Comment thread pkgs/applications/system/howdy/pam.patch Outdated
Comment thread pkgs/top-level/all-packages.nix Outdated
Comment thread pkgs/applications/system/linux-enable-ir-emitter/default.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Copy link
Copy Markdown
Contributor

@doronbehar doronbehar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for more comment that could have been given earlier.

Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
@D3vil0p3r
Copy link
Copy Markdown
Member

Hello guys. Please if you plan to apply commits can you please switch the PR to draft state? Otherwise our mailboxes will be filled by a lot of notification emails. Thanks

Copy link
Copy Markdown
Contributor

@doronbehar doronbehar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Last comments so it seems!

Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Comment thread pkgs/by-name/ho/howdy/package.nix Outdated
Copy link
Copy Markdown
Contributor

@doronbehar doronbehar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One last review comment indeed!

Comment thread pkgs/by-name/li/linux-enable-ir-emitter/package.nix Outdated
@AkechiShiro
Copy link
Copy Markdown
Contributor

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 216245
Commit: 83363921d792005dd50ba957d9f8c5eea6271928


x86_64-linux

⏩ 2 packages blacklisted:
  • nixos-install-tools
  • tests.nixos-functions.nixos-test
✅ 1 test built:
  • nixosTests.simple
✅ 7 packages built:
  • howdy
  • linux-enable-ir-emitter
  • tests.devShellTools.nixos
  • tests.testers.lycheeLinkCheck.network
  • tests.testers.nixosTest-example
  • tests.testers.runNixOSTest-example (tests.testers.runNixOSTest-extendNixOS)
  • tests.trivial-builders.references

Comment thread nixos/modules/services/misc/linux-enable-ir-emitter.nix
@doronbehar
Copy link
Copy Markdown
Contributor

OK great. I think you can squash the commits as discussed before. We are still waiting for a reply by @Majiir in #216245 (comment) , or perhaps somebody else that is confident enough with PAM in NixOS. Since that thread is hard to find due to the large amount of commits here, I wrote it in the top level comment.

Comment thread nixos/modules/security/pam.nix Outdated
Comment thread nixos/modules/security/pam.nix
Comment thread nixos/modules/services/security/howdy/default.nix Outdated
Comment thread nixos/modules/security/pam.nix Outdated
Comment thread nixos/modules/security/pam.nix Outdated
Comment thread nixos/modules/security/pam.nix Outdated
Copy link
Copy Markdown
Contributor

@Majiir Majiir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PAM changes look good to me.

I suggest testing to double-check that the required control behaves as expected with Howdy. If a failure with Howdy interacts poorly with password prompts, you might need to use requisite. Howdy itself ships with a rule that uses [success=end default=ignore], which is pretty much sufficient - but that seems to contradict their own guidance to not use Howdy as the only auth method.

I can't make a good recommendation for the default here because I don't use face recognition and I don't know what users expect. But I'm happy to advise on any PAM changes in case you need to reorder the rule or anything.

@fufexan
Copy link
Copy Markdown
Contributor Author

fufexan commented Jan 16, 2026

I can't make a good recommendation for the default here because I don't use face recognition and I don't know what users expect. But I'm happy to advise on any PAM changes in case you need to reorder the rule or anything.

We might need to in the future when linux-enable-ir-emitter ships v7.0.0. https://github.com/emixampp/linux-enable-ir-emitter?tab=readme-ov-file#integration-with-howdy

@fufexan
Copy link
Copy Markdown
Contributor Author

fufexan commented Jan 16, 2026

I suggest testing to double-check that the required control behaves as expected with Howdy. If a failure with Howdy interacts poorly with password prompts, you might need to use requisite.

I've tested this with my lock screen:

Control required or requisite (behaves the same):
howdy fail without password: PAM fail
howdy fail with password: PAM fail
howdy pass without password: PAM fail
howdy pass with password: PAM success

Looks like it behaves like 2FA with these two control flags. IMO it's a good default, though it might confuse users. I'll make a note of it in the howdy module.

@doronbehar
Copy link
Copy Markdown
Contributor

@fufexan please squash the commits as we discussed earlier. Note also the target branch of the PR has changed.

@doronbehar
Copy link
Copy Markdown
Contributor

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 216245
Commit: beea11b99e0ee7e9891f2273743e1a07f84156a5


x86_64-linux

⏩ 2 packages blacklisted:
  • nixos-install-tools
  • tests.nixos-functions.nixos-test
✅ 1 test built:
  • nixosTests.simple
✅ 7 packages built:
  • howdy
  • linux-enable-ir-emitter
  • tests.devShellTools.nixos
  • tests.testers.lycheeLinkCheck.network
  • tests.testers.nixosTest-example
  • tests.testers.runNixOSTest-example (tests.testers.runNixOSTest-extendNixOS)
  • tests.trivial-builders.references

aarch64-linux

⏩ 2 packages blacklisted:
  • nixos-install-tools
  • tests.nixos-functions.nixos-test
❌ 6 packages failed to build:
  • nixosTests.simple
  • tests.devShellTools.nixos
  • tests.testers.lycheeLinkCheck.network
  • tests.testers.nixosTest-example
  • tests.testers.runNixOSTest-example (tests.testers.runNixOSTest-extendNixOS)
  • tests.trivial-builders.references

x86_64-darwin

❌ 2 packages failed to build:
  • darwin.linux-builder (darwin.linux-builder-x86_64)
  • nixosTests.simple

aarch64-darwin

❌ 2 packages failed to build:
  • darwin.linux-builder
  • nixosTests.simple
✅ 1 package built:
  • darwin.linux-builder-x86_64

@doronbehar
Copy link
Copy Markdown
Contributor

The test failures seem completely unrelated. I wonder why nixpkgs-review decided to build them...

@Xyz00777
Copy link
Copy Markdown
Contributor

sorry for the ping, but woop woop <3
thanks for all the persons that helped to bring this to the current state ^^

@VuiMuich
Copy link
Copy Markdown
Contributor

Just a small heads-up: for me it was necessary to remove the face-data I created during testing, and re-add otherwise authentication failed despite the password being correct.

@Xyz00777
Copy link
Copy Markdown
Contributor

Xyz00777 commented Jan 28, 2026

heyho, i have a howdy pam behaviour i didnt had before i switched to the nixos-unstable version from your fork.
Im currently trying to disable howdy for the loginscreen, because i see no advance beside it takes longer.
i already created:

security.pam.services.login = {
      enable = true;
      rules = {
        auth = {
          # was recommended by the arch wiki to continue to allow passwd auth in UIs.
          pam-unix = {
            enable = true;
            control = "sufficient";
            modulePath = "${pkgs.linux-pam}/lib/security/pam_unix.so";
            settings = {
              "try_first_pass" = true;
              "likeauth" = true;
              "nullok" = true;
            };
            order = config.security.pam.services.su.rules.auth.unix.order - 90;
          };

          pam-howdy = {
            enable = false;
            control = "sufficient";
            modulePath = "${pkgs.howdy}/lib/security/pam_howdy.so";
            order = config.security.pam.services.su.rules.auth.unix.order - 110;
          };
        };
      };
    };

but its not turning off. I also had the problem at some point that i was not able to login at all with an pam failure, but im not able to rebuild that error currently... Oh and the autounlock of my kdewallet is also not working anymore :/
edit:
got kdewallet to autounlock again with adding in the same code snippet pam-kwallet with control "optional". But still not able to find out how to deactivate it for my kde sddm login screen. also already tried out to use pam sddm to disable it, and did also not work :/
security.pam.services.sddm.howdy.enable = false;

@mettavi
Copy link
Copy Markdown

mettavi commented Feb 11, 2026

Try:

security.pam.services.sddm.howdy.enable = false;
security.pam.services.login.howdy.enable = false;

@endeavour
Copy link
Copy Markdown

Trying to use this but greetd requires both a password and the facial recognition to login. I don't really need this level of security on my home desktop. I have 'security.pam.services.greetyd.howdy.control = "sufficient"' - am I missing something?

@fufexan
Copy link
Copy Markdown
Contributor Author

fufexan commented Feb 16, 2026

You have a typo. should be

- security.pam.services.greetyd.howdy.control = "sufficient"
+ security.pam.services.greetd.howdy.control = "sufficient"

@endeavour
Copy link
Copy Markdown

You have a typo. should be

- security.pam.services.greetyd.howdy.control = "sufficient"
+ security.pam.services.greetd.howdy.control = "sufficient"

Ah thanks, though I must have been half asleep when I wrote this. I realised I was actually testing it against the noctalia lock screen rather than greetd. Not quite sure how to get this configured.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: changelog This PR adds or changes release notes 8.has: documentation This PR adds or changes documentation 8.has: module (new) This PR adds a module in `nixos/` 8.has: module (update) This PR changes an existing module in `nixos/` 8.has: package (new) This PR adds a new package 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux. 10.rebuild-nixos-tests This PR causes rebuilds for all NixOS tests and should normally target the staging branches. 12.approvals: 3+ This PR was reviewed and approved by three or more persons.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Package request: Howdy package request: howdy Windows Hello face recognition on linux