diff --git a/.gitignore b/.gitignore index 2905827..249099f 100644 --- a/.gitignore +++ b/.gitignore @@ -15,5 +15,6 @@ !overlays/ !profiles/ !modules/ +!docs/ !/flake/ diff --git a/docs/fingerprint.md b/docs/fingerprint.md new file mode 100644 index 0000000..2875af3 --- /dev/null +++ b/docs/fingerprint.md @@ -0,0 +1,68 @@ +# Fingerprint Commands + +This note covers the basic `fprintd` commands used by the fingerprint module. + +## Enroll a new fingerprint + +Register a fingerprint for the current user: + +```sh +fprintd-enroll $USER +``` + +To enroll a specific finger, pass the finger name: + +```sh +fprintd-enroll -f right-index-finger $USER +``` + +Common finger names include: + +- `left-thumb` +- `left-index-finger` +- `right-thumb` +- `right-index-finger` + +Follow the prompts and swipe or touch the sensor until enrollment completes. + +## List enrolled fingerprints + +Show fingerprints registered for the current user: + +```sh +fprintd-list $USER +``` + +You can also list fingerprints for another user: + +```sh +fprintd-list +``` + +## Delete fingerprints + +Delete one enrolled fingerprint for the current user: + +```sh +fprintd-delete +``` + +Delete all enrolled fingerprints for the current user: + +```sh +fprintd-delete $USER +``` + +Delete fingerprints for another user: + +```sh +fprintd-delete +``` + +## Verify authentication + +Test fingerprint authentication for the current user: + +```sh +fprintd-verify +``` diff --git a/flake.nix b/flake.nix index 9d2d8a4..229377e 100644 --- a/flake.nix +++ b/flake.nix @@ -71,20 +71,6 @@ systems.url = "github:nix-systems/default-linux"; }; - nixConfig = { - extra-substituters = [ - "https://cache.nixos.org" - "https://nix-community.cachix.org" - "https://moons-dotfiles.cachix.org" - ]; - - extra-trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - "moons-dotfiles.cachix.org-1:WHoroKiNScG2/dpxHHL1I0qVmvuQhJbEAP+DS2j9Rr0=" - ]; - }; - outputs = inputs@{ flake-parts, diff --git a/modules/nix/boot.nix b/modules/nix/boot.nix deleted file mode 100644 index d3a20bd..0000000 --- a/modules/nix/boot.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: -{ - boot.loader = { - systemd-boot.enable = true; - systemd-boot.configurationLimit = 8; - efi.canTouchEfiVariables = true; - }; - - boot.supportedFilesystems = [ "nfs" ]; - boot.kernelPackages = pkgs.linuxPackages_latest; -} diff --git a/modules/nix/boot/default.nix b/modules/nix/boot/default.nix new file mode 100644 index 0000000..381fb0e --- /dev/null +++ b/modules/nix/boot/default.nix @@ -0,0 +1,4 @@ +{ lib, ... }: +{ + boot.loader.systemd-boot.configurationLimit = lib.mkDefault 8; +} diff --git a/modules/nix/boot/latest-kernel.nix b/modules/nix/boot/latest-kernel.nix new file mode 100644 index 0000000..50d146f --- /dev/null +++ b/modules/nix/boot/latest-kernel.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +{ + boot.kernelPackages = pkgs.linuxPackages_latest; +} diff --git a/modules/nix/boot/nfs.nix b/modules/nix/boot/nfs.nix new file mode 100644 index 0000000..7c359a2 --- /dev/null +++ b/modules/nix/boot/nfs.nix @@ -0,0 +1,3 @@ +_: { + boot.supportedFilesystems = [ "nfs" ]; +} diff --git a/modules/nix/boot/uefi.nix b/modules/nix/boot/uefi.nix new file mode 100644 index 0000000..9fca7d0 --- /dev/null +++ b/modules/nix/boot/uefi.nix @@ -0,0 +1,7 @@ +{ lib, ... }: +{ + boot.loader = { + systemd-boot.enable = lib.mkDefault true; + efi.canTouchEfiVariables = lib.mkDefault true; + }; +} diff --git a/modules/nix/caches.nix b/modules/nix/caches.nix index dda5ae9..8802174 100644 --- a/modules/nix/caches.nix +++ b/modules/nix/caches.nix @@ -1,11 +1,17 @@ _: { nix.settings = { extra-substituters = [ + "https://cache.nixos.org" + "https://nix-community.cachix.org" + "https://moons-dotfiles.cachix.org" "https://noctalia.cachix.org" "https://vicinae.cachix.org" ]; extra-trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "moons-dotfiles.cachix.org-1:WHoroKiNScG2/dpxHHL1I0qVmvuQhJbEAP+DS2j9Rr0=" "noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4=" "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" ]; diff --git a/modules/nix/camera.nix b/modules/nix/camera.nix new file mode 100644 index 0000000..9ad501f --- /dev/null +++ b/modules/nix/camera.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: +{ + boot.kernelModules = [ "uvcvideo" ]; + + environment.systemPackages = with pkgs; [ + v4l-utils + ffmpeg-full + ]; + + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; + security.rtkit.enable = true; + + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; +} diff --git a/modules/nix/fingerprint.nix b/modules/nix/fingerprint.nix new file mode 100644 index 0000000..f4cab3b --- /dev/null +++ b/modules/nix/fingerprint.nix @@ -0,0 +1,14 @@ +# Documentation : /docs/fingerprint.md +_: { + services.fprintd.enable = true; + + security.pam.services = { + login.fprintAuth = true; + + # sudo + sudo.fprintAuth = true; + + # greetd (tuigreet / ReGreet) + greetd.fprintAuth = true; + }; +} diff --git a/modules/nix/fonts.nix b/modules/nix/fonts.nix new file mode 100644 index 0000000..505d601 --- /dev/null +++ b/modules/nix/fonts.nix @@ -0,0 +1,29 @@ +{ pkgs, ... }: +{ + fonts = { + packages = with pkgs; [ + noto-fonts + noto-fonts-cjk-sans + noto-fonts-color-emoji + terminus_font + cantarell-fonts + font-awesome + nerd-fonts.blex-mono + ]; + + fontDir.enable = true; + fontconfig = { + defaultFonts = { + serif = [ + "Noto Serif CJK JP" + "Noto Color Emoji" + ]; + sansSerif = [ + "Noto Sans CJK JP" + "Noto Clor Emoji" + ]; + emoji = [ "Noto Color Emoji" ]; + }; + }; + }; +} diff --git a/modules/nix/gc.nix b/modules/nix/gc.nix new file mode 100644 index 0000000..31312b7 --- /dev/null +++ b/modules/nix/gc.nix @@ -0,0 +1,10 @@ +_: { + nix.gc = { + automatic = true; + dates = "daily"; + options = "--delete-older-than 7d"; + }; + + nix.settings.auto-optimise-store = true; + nix.optimise.automatic = true; +} diff --git a/profiles/base.nix b/profiles/base.nix index 796393e..d846e9a 100644 --- a/profiles/base.nix +++ b/profiles/base.nix @@ -1,8 +1,9 @@ { userName, ... }: { imports = [ - ../modules/nix/boot.nix + ../modules/nix/boot ../modules/nix/caches.nix + ../modules/nix/gc.nix ]; home-manager.users.${userName}.imports = [ ]; } diff --git a/profiles/cli-minimal.nix b/profiles/cli-minimal.nix new file mode 100644 index 0000000..64717e8 --- /dev/null +++ b/profiles/cli-minimal.nix @@ -0,0 +1,7 @@ +{ userName, ... }: +{ + imports = [ + ./base.nix + ]; + home-manager.users.${userName}.imports = [ ]; +} diff --git a/profiles/cli-vm.nix b/profiles/cli-vm.nix new file mode 100644 index 0000000..9f62175 --- /dev/null +++ b/profiles/cli-vm.nix @@ -0,0 +1,7 @@ +{ userName, ... }: +{ + imports = [ + ./cli-minimal.nix + ]; + home-manager.users.${userName}.imports = [ ]; +} diff --git a/profiles/desktop.nix b/profiles/desktop.nix new file mode 100644 index 0000000..a2adab2 --- /dev/null +++ b/profiles/desktop.nix @@ -0,0 +1,7 @@ +{ userName, ... }: +{ + imports = [ + ./gui.nix + ]; + home-manager.users.${userName}.imports = [ ]; +} diff --git a/profiles/gui.nix b/profiles/gui.nix new file mode 100644 index 0000000..9f62175 --- /dev/null +++ b/profiles/gui.nix @@ -0,0 +1,7 @@ +{ userName, ... }: +{ + imports = [ + ./cli-minimal.nix + ]; + home-manager.users.${userName}.imports = [ ]; +} diff --git a/profiles/laptop.nix b/profiles/laptop.nix new file mode 100644 index 0000000..a2adab2 --- /dev/null +++ b/profiles/laptop.nix @@ -0,0 +1,7 @@ +{ userName, ... }: +{ + imports = [ + ./gui.nix + ]; + home-manager.users.${userName}.imports = [ ]; +}