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 ];