diff --git a/common.nix b/common.nix index d22f032..735f78f 100644 --- a/common.nix +++ b/common.nix @@ -13,7 +13,7 @@ rec { pictures = "${dir.home}/Pictures"; }; - hostname = "nixos"; + hostname = "thinkpad"; keymaps = { layout = "gb,no"; diff --git a/flake.nix b/flake.nix index f82a2d4..475c8cc 100644 --- a/flake.nix +++ b/flake.nix @@ -37,16 +37,17 @@ }: let system = "x86_64-linux"; + hostname = "thinkpad"; inherit (self) outputs; common = import ./common.nix; in { - defaultPackage.${system} = home-manager.defaultPackage.${system}; + defaultPackages.${system} = home-manager.defaultPackage.${system}; # Adds the nix fmt command to format nix files formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style; - nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem { system = system; specialArgs = { inherit outputs inputs; }; # Pass args to modules modules = [ diff --git a/home-manager/development/git.nix b/home-manager/development/git.nix index 8c55920..bee4b08 100644 --- a/home-manager/development/git.nix +++ b/home-manager/development/git.nix @@ -9,8 +9,14 @@ s = "status"; }; + signing = { + signByDefault = true; + key = "848D71DE0590C199"; + }; + extraConfig = { push.autoSetupRemote = true; + safe.directory = "/etc/nixos"; }; }; } diff --git a/home-manager/hyprland/hyprpanel/default.nix b/home-manager/hyprland/hyprpanel/default.nix index da6843f..6660bab 100644 --- a/home-manager/hyprland/hyprpanel/default.nix +++ b/home-manager/hyprland/hyprpanel/default.nix @@ -39,6 +39,7 @@ in "network" "systray" "clock" + "battery" "notifications" ]; }; diff --git a/home-manager/hyprland/settings.nix b/home-manager/hyprland/settings.nix index 5b239b3..cd3de98 100644 --- a/home-manager/hyprland/settings.nix +++ b/home-manager/hyprland/settings.nix @@ -7,8 +7,7 @@ in { wayland.windowManager.hyprland.settings = { monitor = [ - "DP-1, 3440x1440@175, 0x0, 1" - "DP-3, 3840x2160@60, 3440x0, 1.5, transform, 1" + ", 1920x1080@60.05, 0x0, 1" ]; # Autostart @@ -107,11 +106,16 @@ in kb_layout = common.keymaps.layout; kb_options = common.keymaps.options; follow_mouse = 1; - sensitivity = 0; # -1.0 - 1.0, 0 means no modification. - touchpad.natural_scroll = false; + sensitivity = 0.4; # -1.0 - 1.0, 0 means no modification. + touchpad.natural_scroll = true; }; - gestures.workspace_swipe = false; + gestures = { + workspace_swipe = true; + workspace_swipe_distance = 150; + workspace_swipe_min_speed_to_force = 0; + workspace_swipe_cancel_ratio = 0.5; + }; device = { name = "logitech-g502-hero-gaming-mouse"; diff --git a/home-manager/hyprland/waybar/config/config.jsonc b/home-manager/hyprland/waybar/config/config.jsonc index 8c09f42..08e0aba 100644 --- a/home-manager/hyprland/waybar/config/config.jsonc +++ b/home-manager/hyprland/waybar/config/config.jsonc @@ -15,19 +15,19 @@ "custom/notification", "tray", "custom/lock", - "custom/power" + "custom/power", ], "hyprland/workspaces": { "disable-scroll": false, "sort-by-name": true, - "format": " {id} " + "format": " {id} ", }, "hyprland/window": { - "format": "{initialTitle}" + "format": "{initialTitle}", }, "tray": { "icon-size": 21, - "spacing": 10 + "spacing": 10, }, // TODO better music module "custom/music": { @@ -37,7 +37,7 @@ "tooltip": false, "exec": "playerctl metadata --format='{{ title }}'", "on-click": "playerctl play-pause", - "max-length": 50 + "max-length": 50, }, "clock": { "timezone": "Europe/Oslo", @@ -51,39 +51,39 @@ "days": "{}", "weeks": "W{}", "weekdays": "{}", - "today": "{}" - } - } + "today": "{}", + }, + }, }, "backlight": { "device": "intel_backlight", "format": "{icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] + "format-icons": ["", "", "", "", "", "", "", "", ""], }, "wireplumber": { // "scroll-step": 1, // %, can be a float "format": "{icon} {volume}%", "format-muted": " ", "format-icons": { - "default": ["", " ", " "] + "default": ["", " ", " "], }, - "on-click": "pavucontrol" + "on-click": "pavucontrol", }, "hyprland/language": { "format-en": "EN", "format-no": "NO", "keyboard-name": "logitech-logitech-g710-keyboard", - "on-click": "hyprctl switchxkblayout logitech-logitech-g710-keyboard next" + "on-click": "hyprctl switchxkblayout logitech-logitech-g710-keyboard next", }, "custom/lock": { "tooltip": false, "on-click": "sh -c '(sleep 0.5s; hyprlock)'", - "format": "" + "format": "", }, "custom/power": { "tooltip": false, "on-click": "wlogout &", - "format": " " + "format": " ", }, "custom/notification": { "tooltip": false, @@ -96,13 +96,13 @@ "inhibited-notification": "", "inhibited-none": "", "dnd-inhibited-notification": "", - "dnd-inhibited-none": "" + "dnd-inhibited-none": "", }, "return-type": "json", "exec-if": "which swaync-client", "exec": "swaync-client -swb", "on-click": "swaync-client -t -sw", "on-click-right": "swaync-client -d -sw", - "escape": true - } + "escape": true, + }, } diff --git a/modules/development.nix b/modules/development.nix index a6abd69..b1b236b 100644 --- a/modules/development.nix +++ b/modules/development.nix @@ -36,6 +36,5 @@ services.ollama = { enable = true; - acceleration = "cuda"; }; } diff --git a/modules/hardware/graphics/default.nix b/modules/hardware/graphics/default.nix index c2d26e4..eaade71 100644 --- a/modules/hardware/graphics/default.nix +++ b/modules/hardware/graphics/default.nix @@ -1,7 +1,5 @@ { - imports = [ - ./nvidia.nix - ]; + imports = [ ]; # Enable OpenGL hardware.graphics.enable = true; diff --git a/modules/hardware/graphics/nvidia.nix b/modules/hardware/graphics/nvidia.nix deleted file mode 100644 index 6b33ac2..0000000 --- a/modules/hardware/graphics/nvidia.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ pkgs, ... }: - -{ - boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ]; - - # For hardware acceleration - environment.sessionVariables.LIBVA_DRIVER_NAME = "nvidia"; - - hardware = { - graphics.extraPackages = with pkgs; [ - # Used for hardware-acceleration - nvidia-vaapi-driver - ]; - nvidia = { - # Required - modesetting.enable = true; - # Use closed-source drivers - open = false; - # Enable the Nvidia settings menu - nvidiaSettings = true; - # Enable nvidia-suspend.service, nvidia-hibernate.service and nvidia-resume.service - powerManagement.enable = true; - }; - }; - - # Load Nvidia driver for Xorg and Wayland - services.xserver.videoDrivers = [ "nvidia" ]; -} diff --git a/modules/hardware/hardware-configuration.nix b/modules/hardware/hardware-configuration.nix index 53f0e81..a46c293 100644 --- a/modules/hardware/hardware-configuration.nix +++ b/modules/hardware/hardware-configuration.nix @@ -15,26 +15,26 @@ ]; boot.initrd.availableKernelModules = [ - "xhci_pci" - "ahci" "nvme" + "xhci_pci" "usb_storage" - "usbhid" "sd_mod" - "sr_mod" + "sdhci_pci" ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; + boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; fileSystems."/" = { - device = "/dev/disk/by-uuid/5e3f0f97-4bb4-4a53-ace2-9ed19ff9e8ea"; - fsType = "btrfs"; - options = [ "subvol=@" ]; + device = "/dev/disk/by-uuid/5ac9c425-35ae-47d5-a683-68ee0dbfc2bc"; + fsType = "ext4"; }; + boot.initrd.luks.devices."luks-99b73f22-3fa1-42b5-ad48-54b0ccff72cc".device = + "/dev/disk/by-uuid/99b73f22-3fa1-42b5-ad48-54b0ccff72cc"; + fileSystems."/boot" = { - device = "/dev/disk/by-uuid/D188-48A9"; + device = "/dev/disk/by-uuid/3CFB-D12A"; fsType = "vfat"; options = [ "fmask=0077" @@ -49,10 +49,9 @@ # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.eno1.useDHCP = lib.mkDefault true; - # networking.interfaces.enp0s20f0u8.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true; + # networking.interfaces.enp2s0f0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/modules/security.nix b/modules/security.nix index f050539..ea466d7 100644 --- a/modules/security.nix +++ b/modules/security.nix @@ -11,7 +11,27 @@ security = { pam = { services = { - login.u2fAuth = false; # U2F and password + gdm-fingerprint.text = '' + auth required pam_shells.so + auth requisite pam_nologin.so + auth requisite pam_faillock.so preauth + auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so + auth optional pam_permit.so + auth required pam_env.so + auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so + auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so + + account include login + + password required pam_deny.so + + session include login + session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start + ''; + login = { + fprintAuth = false; + u2fAuth = false; # U2F and password + }; sudo.u2fAuth = true; # U2F or password }; u2f = { @@ -24,6 +44,23 @@ }; }; + # Start the driver at boot + systemd.services.fprintd = { + wantedBy = [ "multi-user.target" ]; + serviceConfig.Type = "simple"; + }; + + # Install the driver + services.fprintd = { + enable = true; + tod.driver = pkgs.libfprint-2-tod1-goodix-550a; # Goodix 550a driver (from Lenovo) + }; + + # however for focaltech 2808:a658, use fprintd with overidden package (without tod) + # services.fprintd.package = pkgs.fprintd.override { + # libfprint = pkgs.libfprint-focaltech-2808-a658; + # }; + services = { pcscd.enable = true; # Required for Yubikey udev.packages = with pkgs; [ yubikey-personalization ];