diff --git a/flake.lock b/flake.lock index 648c9dd..a694efb 100644 --- a/flake.lock +++ b/flake.lock @@ -22,15 +22,12 @@ } }, "flake-utils": { - "inputs": { - "systems": "systems" - }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -46,11 +43,11 @@ ] }, "locked": { - "lastModified": 1758810399, - "narHash": "sha256-bpWoE1tiFX5T1tr5EudkpW9Kk02XR+6olkoSkf3nHZU=", + "lastModified": 1748955489, + "narHash": "sha256-OmZXyW2g5qIuo5Te74McwR0TwauCO2sF3/SjGDVuxyg=", "owner": "nix-community", "repo": "home-manager", - "rev": "39d26c16866260eee6d0487fe9c102ba1c1bf7b2", + "rev": "bb846c031be68a96466b683be32704ef6e07b159", "type": "github" }, "original": { @@ -64,10 +61,10 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1759789371, - "narHash": "sha256-diiyS8Bj/M9UdmiIEos0QBHIIpj/AdO9+dsb2Oc9qws=", + "lastModified": 1755552883, + "narHash": "sha256-wdVtGyN8JkpByIiNwSevZMBy02vWwCPNaD/caCQJ6aM=", "ref": "main", - "rev": "e6e9d0c0a7cc152ec48ce07cccf56f57a2580d3a", + "rev": "1ccd39ac6de09a7a73a9a36ec1c34f70cb5edfe2", "shallow": true, "type": "git", "url": "ssh://git@git.epha.se:24422/ephase/nix-private.git" @@ -87,11 +84,11 @@ ] }, "locked": { - "lastModified": 1752054764, - "narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=", + "lastModified": 1713543440, + "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=", "owner": "nix-community", "repo": "nixGL", - "rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5", + "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a", "type": "github" }, "original": { @@ -116,11 +113,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1758690382, - "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", + "lastModified": 1748693115, + "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e643668fd71b949c53f8626614b21ff71a07379d", + "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", "type": "github" }, "original": { @@ -131,11 +128,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1758690382, - "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", + "lastModified": 1748693115, + "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e643668fd71b949c53f8626614b21ff71a07379d", + "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", "type": "github" }, "original": { @@ -148,14 +145,15 @@ "nur": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_3", + "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1758828503, - "narHash": "sha256-IgOibVOqWSZqWsHKK6TuALfuItRymW2YpsdZBjU2yrk=", + "lastModified": 1748973087, + "narHash": "sha256-ZN0XKKdCBC9eLeog7qYhfGPbajkPtQPdlxp/dhwONw4=", "owner": "nix-community", "repo": "NUR", - "rev": "544f12f6987ceb94fe2052696da65623c238da4c", + "rev": "90add46380908ba4395f5f1dfec84224a3b0d4b9", "type": "github" }, "original": { @@ -181,11 +179,11 @@ ] }, "locked": { - "lastModified": 1758425756, - "narHash": "sha256-L3N8zV6wsViXiD8i3WFyrvjDdz76g3tXKEdZ4FkgQ+Y=", + "lastModified": 1747603214, + "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e0fdaea3c31646e252a60b42d0ed8eafdb289762", + "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", "type": "github" }, "original": { @@ -194,18 +192,24 @@ "type": "github" } }, - "systems": { + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "numtide", + "repo": "treefmt-nix", "type": "github" } } diff --git a/flake.nix b/flake.nix index 2a35f7d..21b1c7b 100644 --- a/flake.nix +++ b/flake.nix @@ -9,7 +9,7 @@ }; home-manager = { url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; @@ -19,52 +19,36 @@ url = "git+ssh://git@git.epha.se:24422/ephase/nix-private.git?shallow=1&ref=main"; }; }; - outputs = { - self, - nixpkgs, - home-manager, - nur, - nixgl, - sops-nix, - ... - } @ inputs: let + outputs = { self, nixpkgs, home-manager, nur, nixgl, sops-nix, ... }@inputs: + let stateVersion = "23.11"; allSystems = [ - "x86_64-linux" # 64bit AMD/Intel x86 + "x86_64-linux" # 64bit AMD/Intel x86 "aarch64-linux" # 64bit ARM Linux ]; forAllSystems = fn: nixpkgs.lib.genAttrs allSystems - (system: fn {pkgs = import nixpkgs {inherit system;};}); + (system: fn { pkgs = import nixpkgs { inherit system; }; }); - createNixosSystem = { - system, - hostname, - username ? "ephase", - }: - nixpkgs.lib.nixosSystem { - system = system; - specialArgs = { - inherit stateVersion inputs; - hostname = hostname; - username = username; - }; - modules = [ - ./nixos/default.nix - ]; + createNixosSystem = { system, hostname, username ? "ephase" }: nixpkgs.lib.nixosSystem { + system = system; + specialArgs = { + inherit stateVersion inputs; + hostname = hostname; + username = username; }; + modules = [ + ./nixos/default.nix + ]; + }; - createHomeConfiguration = { - system ? "x86_64-linux", - hostname, - username ? "ephase", - }: + createHomeConfiguration = { system ? "x86_64-linux", hostname, username ? "ephase" }: home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { system = system; - overlays = [nixgl.overlay]; + overlays = [ nixgl.overlay ]; }; extraSpecialArgs = { inherit stateVersion inputs nixgl; @@ -72,12 +56,12 @@ username = username; }; modules = [ - {nixpkgs.overlays = [nixgl.overlay];} + { nixpkgs.overlays = [ nixgl.overlay ];} ./home-manager/default.nix ]; }; in { - devShells = forAllSystems ({pkgs}: { + devShells = forAllSystems ({ pkgs }: { default = pkgs.mkShell { name = "nixfiles"; buildInputs = [ @@ -94,36 +78,15 @@ }; }); nixosConfigurations = { - morty = createNixosSystem { - system = "x86_64-linux"; - hostname = "morty"; - }; - mrmeeseeks = createNixosSystem { - system = "x86_64-linux"; - hostname = "mrmeeseeks"; - }; - luci = createNixosSystem { - system = "x86_64-linux"; - hostname = "luci"; - }; + morty = createNixosSystem { system = "x86_64-linux"; hostname = "morty"; }; + mrmeeseeks = createNixosSystem { system = "x86_64-linux"; hostname = "mrmeeseeks";}; + luci = createNixosSystem { system = "x86_64-linux"; hostname = "luci"; }; }; homeConfigurations = { - "rick" = createHomeConfiguration { - system = "aarch64-linux"; - hostname = "rick"; - }; - "luci" = createHomeConfiguration { - system = "x86_64-linux"; - hostname = "luci"; - }; - "morty" = createHomeConfiguration { - system = "x86_64-linux"; - hostname = "morty"; - }; - "mrmeeseeks" = createHomeConfiguration { - system = "x86_64-linux"; - hostname = "mrmeeseeks"; - }; + "rick" = createHomeConfiguration { system = "aarch64-linux"; hostname = "rick";}; + "luci" = createHomeConfiguration { system = "x86_64-linux"; hostname = "luci";}; + "morty" = createHomeConfiguration { system = "x86_64-linux"; hostname = "morty";}; + "mrmeeseeks" = createHomeConfiguration { system = "x86_64-linux"; hostname = "mrmeeseeks";}; "work" = createHomeConfiguration { system = "x86_64-linux"; hostname = "work"; diff --git a/home-manager/default.nix b/home-manager/default.nix index cc38aac..f70cd47 100644 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -1,23 +1,13 @@ +{ inputs, lib, stateVersion, username, hostname, nixgl, ... }: { - inputs, - lib, - stateVersion, - username, - hostname, - nixgl, - ... -}: { - imports = - [ - inputs.sops-nix.homeManagerModules.sops - ../hosts/${hostname}/home-config.nix - ../nixos/includes/system/overlay.nix - ../modules/home-manager/default.nix - ] - ++ lib.optional ( - builtins.pathExists ../hosts/${hostname}/includes/home-manager.nix - ) - ../hosts/${hostname}/includes/home-manager.nix; + imports = [ + inputs.sops-nix.homeManagerModules.sops + ../hosts/${hostname}/home-config.nix + ../nixos/includes/system/overlay.nix + ../modules/home-manager/default.nix + ] ++ lib.optional ( + builtins.pathExists ../hosts/${hostname}/includes/home-manager.nix + ) ../hosts/${hostname}/includes/home-manager.nix; nixpkgs.config.allowUnfree = true; programs.home-manager.enable = true; diff --git a/hosts/luci/hardware-configuration.nix b/hosts/luci/hardware-configuration.nix index 70e4cf3..3a5d77e 100644 --- a/hosts/luci/hardware-configuration.nix +++ b/hosts/luci/hardware-configuration.nix @@ -1,49 +1,45 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ - config, - lib, - pkgs, - modulesPath, - ... -}: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; +{ config, lib, pkgs, modulesPath, ... }: - boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" "i915"]; - boot.initrd.kernelModules = []; - boot.kernelParams = ["intel_pstate=disable"]; - boot.kernelModules = ["kvm-intel" "i915"]; - boot.extraModulePackages = []; +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" "i915" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelParams = [ "intel_pstate=disable" ]; + boot.kernelModules = [ "kvm-intel" "i915" ]; + boot.extraModulePackages = [ ]; boot.initrd.luks.devices."nixos".device = "/dev/disk/by-uuid/ee06e049-e738-4f1f-84ab-e8066e0f1640"; - fileSystems."/" = { - device = "/dev/disk/by-uuid/97c3403a-fdad-4dc8-a103-a666d5fd8d6c"; - fsType = "btrfs"; - options = ["subvol=root" "compress=zstd"]; - }; + fileSystems."/" = + { device = "/dev/disk/by-uuid/97c3403a-fdad-4dc8-a103-a666d5fd8d6c"; + fsType = "btrfs"; + options = [ "subvol=root" "compress=zstd" ]; + }; - fileSystems."/home" = { - device = "/dev/disk/by-uuid/97c3403a-fdad-4dc8-a103-a666d5fd8d6c"; - fsType = "btrfs"; - options = ["subvol=home" "compress=zstd"]; - }; + fileSystems."/home" = + { device = "/dev/disk/by-uuid/97c3403a-fdad-4dc8-a103-a666d5fd8d6c"; + fsType = "btrfs"; + options = [ "subvol=home" "compress=zstd"]; + }; - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/97c3403a-fdad-4dc8-a103-a666d5fd8d6c"; - fsType = "btrfs"; - options = ["subvol=nix" "compress=zstd"]; - }; + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/97c3403a-fdad-4dc8-a103-a666d5fd8d6c"; + fsType = "btrfs"; + options = [ "subvol=nix" "compress=zstd"]; + }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/B77A-53B1"; - fsType = "vfat"; - }; + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B77A-53B1"; + fsType = "vfat"; + }; - swapDevices = []; + swapDevices = [ ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's @@ -64,5 +60,5 @@ ]; }; virtualisation.docker.enable = true; - users.extraGroups.docker.members = ["ephase"]; + users.extraGroups.docker.members = [ "ephase" ]; } diff --git a/hosts/luci/home-config.nix b/hosts/luci/home-config.nix index 601195e..7b9558f 100644 --- a/hosts/luci/home-config.nix +++ b/hosts/luci/home-config.nix @@ -1,4 +1,4 @@ -{...}: { +{ ... }: { config.modules = { application = { gnupg.enable = true; @@ -29,7 +29,7 @@ accounts.dav.enable = true; desktop.sway = { enable = true; - kanshi.enable = true; + kanshi = true; wallpapers.lockscreen = "${./files/lockscreen.png}"; wallpapers.desktop = "${./files/wallpaper.png} center #000000"; waybar = { diff --git a/hosts/luci/includes/home-manager.nix b/hosts/luci/includes/home-manager.nix index c42afbd..78957fc 100644 --- a/hosts/luci/includes/home-manager.nix +++ b/hosts/luci/includes/home-manager.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ ## Specific host home manager configuration wayland.windowManager.sway.config = { input = { diff --git a/hosts/luci/nixos-config.nix b/hosts/luci/nixos-config.nix index 37eb6c9..159340a 100644 --- a/hosts/luci/nixos-config.nix +++ b/hosts/luci/nixos-config.nix @@ -1,4 +1,4 @@ -{...}: { +{ ... }: { config.modules.desktop.sway.enable = true; config.modules.gaming.steam.enable = false; config.modules.hardware.laptop.enable = true; diff --git a/hosts/morty/hardware-configuration.nix b/hosts/morty/hardware-configuration.nix index 57e6c39..d2ccc01 100644 --- a/hosts/morty/hardware-configuration.nix +++ b/hosts/morty/hardware-configuration.nix @@ -1,49 +1,45 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ - config, - lib, - pkgs, - modulesPath, - ... -}: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; +{ config, lib, pkgs, modulesPath, ... }: - boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "i915"]; - boot.initrd.kernelModules = []; - boot.kernelModules = ["kvm-intel" "i915"]; - boot.extraModulePackages = []; - boot.kernelParams = ["fbcon=rotate:1" "video=eDP-1:panel_orientation=right_side_up" "intel_pstate=disable"]; +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "i915" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" "i915" ]; + boot.extraModulePackages = [ ]; + boot.kernelParams = ["fbcon=rotate:1" "video=eDP-1:panel_orientation=right_side_up" "intel_pstate=disable" ]; boot.loader.systemd-boot.consoleMode = "max"; - fileSystems."/" = { - device = "/dev/disk/by-uuid/d28d59b0-a44d-4b17-9338-2ca69a1efca7"; - fsType = "btrfs"; - options = ["subvol=root" "compress=zstd"]; - }; + fileSystems."/" = + { device = "/dev/disk/by-uuid/d28d59b0-a44d-4b17-9338-2ca69a1efca7"; + fsType = "btrfs"; + options = [ "subvol=root" "compress=zstd"]; + }; boot.initrd.luks.devices."nixos".device = "/dev/disk/by-uuid/ad4fa799-214c-4e5e-996a-8776e010fb2f"; - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/d28d59b0-a44d-4b17-9338-2ca69a1efca7"; - fsType = "btrfs"; - options = ["subvol=nix" "compress=zstd"]; - }; + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/d28d59b0-a44d-4b17-9338-2ca69a1efca7"; + fsType = "btrfs"; + options = [ "subvol=nix" "compress=zstd" ]; + }; - fileSystems."/home" = { - device = "/dev/disk/by-uuid/d28d59b0-a44d-4b17-9338-2ca69a1efca7"; - fsType = "btrfs"; - options = ["subvol=home" "compress=zstd"]; - }; + fileSystems."/home" = + { device = "/dev/disk/by-uuid/d28d59b0-a44d-4b17-9338-2ca69a1efca7"; + fsType = "btrfs"; + options = [ "subvol=home" "compress=zstd" ]; + }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/E83D-CDFE"; - fsType = "vfat"; - }; + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/E83D-CDFE"; + fsType = "vfat"; + }; - swapDevices = []; + swapDevices = [ ]; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; diff --git a/hosts/morty/home-config.nix b/hosts/morty/home-config.nix index 5d49f03..690d3ad 100644 --- a/hosts/morty/home-config.nix +++ b/hosts/morty/home-config.nix @@ -1,13 +1,13 @@ -{inputs, ...}: { +{ inputs, ... }: { config.modules = { email = { enable = true; accountConfigs = { - "1" = inputs.nix-private.mail.xiemeart; - "2" = inputs.nix-private.mail.ephase; - "3" = inputs.nix-private.mail.ubordeaux; + a = inputs.nix-private.mail.xiemeart; + b = inputs.nix-private.mail.ephase; + c = inputs.nix-private.mail.ubordeaux; }; - primary = "1"; + primary = "a"; }; dav.enable = true; application = { @@ -46,20 +46,7 @@ desktop.sway = { enable = true; wallpapers.lockscreen = "${./files/lockscreen.png}"; - kanshi = { - enable = true; - standalone = { - profile.name = "standalone"; - profile.outputs = [ - { - criteria = "eDP-1"; - scale = 1.325; - transform = "270"; - status = "enable"; - } - ]; - }; - }; + kanshi = true; waybar = { laptop = true; gpuThermal.enable = false; diff --git a/hosts/morty/includes/home-manager.nix b/hosts/morty/includes/home-manager.nix index 3ef0de6..9643c77 100644 --- a/hosts/morty/includes/home-manager.nix +++ b/hosts/morty/includes/home-manager.nix @@ -1,5 +1,7 @@ -{...}: { - home.file.".config/xkb/symbols/gpdwinmax".text = '' +{ ... }: +{ + home.file.".config/xkb/symbols/gpdwinmax".text = + '' default partial alphanumeric_keys xkb_symbols "us-intl-winmax" { name[group1] = "GPD Win Max us-inlt"; @@ -22,5 +24,11 @@ "pointer_accel" = "0.3"; }; }; + wayland.windowManager.sway.config.output = { + "eDP-1" = { + transform = "90"; + scale = "1.3"; + }; + }; sops.age.keyFile = "/home/ephase/.config/sops/age/keys.txt"; } diff --git a/hosts/morty/nixos-config.nix b/hosts/morty/nixos-config.nix index b6d69ab..e824f72 100644 --- a/hosts/morty/nixos-config.nix +++ b/hosts/morty/nixos-config.nix @@ -1,4 +1,4 @@ -{...}: { +{ ... }: { config.modules.desktop.sway.enable = true; config.modules.gaming.steam.enable = true; config.modules.hardware.laptop = { diff --git a/hosts/mrmeeseeks/hardware-configuration.nix b/hosts/mrmeeseeks/hardware-configuration.nix index a85045d..72fd750 100644 --- a/hosts/mrmeeseeks/hardware-configuration.nix +++ b/hosts/mrmeeseeks/hardware-configuration.nix @@ -1,65 +1,61 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ - config, - lib, - pkgs, - modulesPath, - ... -}: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; +{ config, lib, pkgs, modulesPath, ... }: - boot.initrd.availableKernelModules = [ +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" - "usb_storage" - "sd_mod" + "usb_storage" + "sd_mod" "amdgpu" ]; - boot.initrd.kernelModules = [ + boot.initrd.kernelModules = [ "dm-cache-default" ]; - boot.kernelModules = [ - "kvm-amd" - "amdgpu" - ]; + boot.kernelModules = [ + "kvm-amd" + "amdgpu" + ]; boot.kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; - - boot.extraModulePackages = []; + + boot.extraModulePackages = [ ]; boot.initrd.luks.devices."nixos".device = "/dev/disk/by-uuid/ea7fa60d-35e5-48b8-95d7-142f37b262cd"; boot.initrd.luks.devices."nixos".preLVM = true; - fileSystems."/" = { - device = "/dev/disk/by-uuid/9d1e5022-0265-4ce7-824e-282ee550d52d"; - fsType = "btrfs"; - options = ["subvol=@root" "compress=zstd"]; - }; + fileSystems."/" = + { device = "/dev/disk/by-uuid/9d1e5022-0265-4ce7-824e-282ee550d52d"; + fsType = "btrfs"; + options = [ "subvol=@root" "compress=zstd"]; + }; - fileSystems."/home" = { - device = "/dev/disk/by-uuid/9d1e5022-0265-4ce7-824e-282ee550d52d"; - fsType = "btrfs"; - options = ["subvol=@home" "compress=zstd"]; - }; + fileSystems."/home" = + { device = "/dev/disk/by-uuid/9d1e5022-0265-4ce7-824e-282ee550d52d"; + fsType = "btrfs"; + options = [ "subvol=@home" "compress=zstd"]; + }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/F027-F53F"; - fsType = "vfat"; - }; + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/F027-F53F"; + fsType = "vfat"; + }; - fileSystems."/mnt/gamelib" = { - device = "/dev/mapper/tank-gamelib"; + fileSystems."/mnt/gamelib" = + { device = "/dev/mapper/tank-gamelib"; fsType = "ext4"; }; - swapDevices = []; + swapDevices = [ ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's @@ -70,7 +66,7 @@ # networking.interfaces.wlp37s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - + hardware.cpu.amd.updateMicrocode = true; hardware.graphics = { enable32Bit = true; diff --git a/hosts/mrmeeseeks/home-config.nix b/hosts/mrmeeseeks/home-config.nix index 78d763b..e180376 100644 --- a/hosts/mrmeeseeks/home-config.nix +++ b/hosts/mrmeeseeks/home-config.nix @@ -1,10 +1,7 @@ -{inputs, ...}: { +{ ... }: { config.modules = { application = { - gnupg = { - enable = true; - enableSshSupport = true; - }; + gnupg.enable = true; zathura.enable = true; foot.enable = true; }; @@ -14,10 +11,7 @@ git.enable = true; neovim.enable = true; starship.enable = true; - tmux = { - enable = true; - extraConfig = inputs.nix-private.tmux.personal; - }; + tmux.enable = true; utils.enable = true; vifm.enable = true; zsh.enable = true; diff --git a/hosts/mrmeeseeks/includes/home-manager.nix b/hosts/mrmeeseeks/includes/home-manager.nix index 0e4213a..e911320 100644 --- a/hosts/mrmeeseeks/includes/home-manager.nix +++ b/hosts/mrmeeseeks/includes/home-manager.nix @@ -3,14 +3,14 @@ _: { wayland.windowManager.sway.config.output = { "Iiyama North America PL2792UH 1166310803122" = { max_render_time = "5"; - mode = "3840x2160@60Hz"; + mode = "3840x2160@60Hz"; position = "1235,0"; scale = "1.75"; bg = "~/medias/images/wallpapers/desktop.jpg center #000000"; }; "Iiyama North America PL2792UH 1176923201598" = { max_render_time = "5"; - mode = "3840x2160@60Hz"; + mode = "3840x2160@60Hz"; position = "0,0"; scale = "1.75"; transform = "270"; diff --git a/hosts/mrmeeseeks/nixos-config.nix b/hosts/mrmeeseeks/nixos-config.nix index 5019604..2ed041a 100644 --- a/hosts/mrmeeseeks/nixos-config.nix +++ b/hosts/mrmeeseeks/nixos-config.nix @@ -1,4 +1,4 @@ -{...}: { +{ ... }: { config.modules.desktop.sway.enable = true; config.modules.gaming.steam = { enable = true; diff --git a/hosts/rick/home-config.nix b/hosts/rick/home-config.nix index fe5a66f..a72cdf0 100644 --- a/hosts/rick/home-config.nix +++ b/hosts/rick/home-config.nix @@ -1,14 +1,10 @@ -{ - pkgs, - inputs, - ... -}: { +{ pkgs, ... }: { config.modules = { application = { - gnupg.enable = true; + gnupg.enable = false; zathura.enable = true; - foot.enable = true; - imv.enable = true; + foot.enable = false; + imv.enable = false; }; audio = { cmus.enable = true; @@ -16,11 +12,7 @@ cli = { direnv.enable = true; ghq.enable = true; - git = { - enable = true; - userEmail = inputs.nix-private.git.personal.userEmail; - signingKey = inputs.nix-private.git.personal.signingKey; - }; + git.enable = true; neovim.enable = true; starship.enable = true; tmux.enable = true; @@ -37,9 +29,8 @@ web.webcord.enable = false; gaming.lutris.enable = false; desktop.sway = { - enable = true; - kanshi.enable = false; - swaylock.useNullPackage = true; + enable = false; + kanshi = false; wallpapers.lockscreen = "${./files/lockscreen.png}"; wallpapers.desktop = "${./files/background.png} fill #000000"; waybar = { @@ -48,7 +39,7 @@ enable = false; }; cpuThermal = { - thermalZone = 2; + thermalZone = "2"; # hwmonPathAbs = ""; # inputFilename = ""; }; diff --git a/hosts/rick/includes/home-manager.nix b/hosts/rick/includes/home-manager.nix index 68c8483..a98c311 100644 --- a/hosts/rick/includes/home-manager.nix +++ b/hosts/rick/includes/home-manager.nix @@ -1,23 +1,21 @@ -_: { - wayland.windowManager.sway.config.output = { - "eDP-1" = { - scale = "1.4"; - }; - "HDMI-A-1" = { - disable = ""; - }; - }; - wayland.windowManager.sway.config.input = { - "4617:27904:MNT_Research_MNT_Reform_Keyboard_2.0_US/LT" = { - xkb_layout = "us"; - xkb_variant = "altgr-intl"; - }; - }; +_: +{ programs.zsh.loginExtra = '' - # notmuch + #notmutch export NOTMUCH_CONFIG="$HOME/.config/notmuch/config" - # export PATH=~/.local/bin:$PATH + export PATH=~/.local/bin:$PATH # export XDG_DATA_HOME=$HOME/.local/share unset DEBUGINFOD_URLS - ''; -} + if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then + export QT_QPA_PLATFORM="wayland-egl" + export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 + export MOZ_ENABLE_WAYLAND=1 + export QT_QPA_PLATFORMTHEME=qt5ct + export NO_AT_BRIDGE=1 + export XDG_SESSION_TYPE=wayland + export XDG_CURRENT_DESKTOP=sway + export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket + exec ~/.local/bin/sway.sh + fi + ''; + } diff --git a/hosts/work/home-config.nix b/hosts/work/home-config.nix index 8bfb54b..0155435 100644 --- a/hosts/work/home-config.nix +++ b/hosts/work/home-config.nix @@ -1,8 +1,4 @@ -{ - pkgs, - inputs, - ... -}: { +{ pkgs, inputs, ... }: { config.modules = { application = { zathura.enable = true; @@ -36,34 +32,14 @@ }; desktop.sway = { enable = true; - kanshi = { - enable = true; - profiles = [ - - { - profile.name = "work"; - profile.outputs = [ - { - criteria = "Iiyama North America PL2792QN 1179214201663"; - mode = "2560x1440"; - position = "1450,0"; - scale = 1.15; - } - { - criteria = "BOE 0x0A95 Unknown"; - mode = "1920x1080"; - position = "0,0"; - scale = 1.325; - } - ]; - } - ]; + kanshi = true; swaylock.useNullPackage = true; waybar = { laptop = true; gpuThermal.enable = false; cpuThermal = { - thermalZone = 9; + hwmonPathAbs = "/sys/devices/platform/coretemp.0/hwmon/"; + inputFilename = "temp1_input"; }; }; xdg.useDistributionPortals = true; diff --git a/hosts/work/includes/home-manager.nix b/hosts/work/includes/home-manager.nix index 93a8cee..92fc843 100644 --- a/hosts/work/includes/home-manager.nix +++ b/hosts/work/includes/home-manager.nix @@ -1,27 +1,24 @@ +{ pkgs, config, ... }: { - pkgs, - config, - ... -}: { - home.packages = with pkgs; [ - dejavu_fonts - font-awesome - lato - liberation_ttf - libertine - libnotify - nerd-fonts.fira-code - nerd-fonts.fira-mono - noto-fonts-emoji - noto-fonts-cjk-sans - slurp - wl-clipboard - (config.lib.nixGL.wrap ungoogled-chromium) - (config.lib.nixGL.wrap slack) - ]; - targets.genericLinux.enable = true; - xdg.mime.enable = true; - wayland.windowManager.sway.config.input = { + home.packages = with pkgs; [ + dejavu_fonts + font-awesome + lato + liberation_ttf + libertine + libnotify + nerd-fonts.fira-code + nerd-fonts.fira-mono + noto-fonts-emoji + noto-fonts-cjk-sans + slurp + wl-clipboard + (config.lib.nixGL.wrap ungoogled-chromium) + (config.lib.nixGL.wrap slack) + ]; + targets.genericLinux.enable = true; + xdg.mime.enable = true; + wayland.windowManager.sway.config.input = { "1:1:AT_Translated_Set_2_keyboard" = { xkb_layout = "us"; xkb_variant = "altgr-intl"; diff --git a/modules/home-manager/accounts/dav/default.nix b/modules/home-manager/accounts/dav/default.nix index 93de47e..ddb3f4a 100644 --- a/modules/home-manager/accounts/dav/default.nix +++ b/modules/home-manager/accounts/dav/default.nix @@ -1,26 +1,23 @@ -{ - lib, - config, - inputs, - pkgs, - ... -}: -with lib; let +{ lib, config, inputs, pkgs, ... }: +with lib; +let cfg = config.modules.dav; secretsDirectory = "${(builtins.toString inputs.nix-private)}/secrets"; vdirsyncerConf = { enable = true; auth = "basic"; }; -in { +in +{ options.modules.dav = { enable = mkEnableOption "enable personal Caldav / CardDav"; }; config = mkIf cfg.enable { + sops = { secrets = { "${inputs.nix-private.dav.personal.secret.key}" = { - sopsFile = "${secretsDirectory}/${inputs.nix-private.dav.personal.secret.file}"; + sopsFile = "${secretsDirectory}/${inputs.nix-private.dav.personal.secret.file}"; }; }; }; @@ -37,22 +34,20 @@ in { "${config.sops.secrets."${inputs.nix-private.dav.personal.secret.key}".path}" ]; }; - vdirsyncer = - vdirsyncerConf - // { - metadata = [ - "color" - "displayname" - ]; - itemTypes = [ - "VTODO" - "VEVENT" - ]; - collections = [ - "from a" - "from b" - ]; - }; + vdirsyncer = vdirsyncerConf // { + metadata = [ + "color" + "displayname" + ]; + itemTypes = [ + "VTODO" + "VEVENT" + ]; + collections = [ + "from a" + "from b" + ]; + }; khal = { enable = true; type = "discover"; @@ -75,13 +70,11 @@ in { type = "filesystem"; fileExt = ".vcf"; }; - vdirsyncer = - vdirsyncerConf - // { - metadata = [ - "displayname" - ]; - }; + vdirsyncer = vdirsyncerConf // { + metadata = [ + "displayname" + ]; + }; khal = { enable = true; color = "#26A269"; @@ -120,7 +113,7 @@ in { general = { default_action = "list"; editor = ["nvim" "-i" "NONE"]; - merge_editor = ["nvim" "-d"]; + merge_editor = [ "nvim" "-d" ]; }; }; }; diff --git a/modules/home-manager/accounts/email/default.nix b/modules/home-manager/accounts/email/default.nix index e86498b..e746ad8 100644 --- a/modules/home-manager/accounts/email/default.nix +++ b/modules/home-manager/accounts/email/default.nix @@ -1,14 +1,10 @@ -{ - lib, - config, - pkgs, - inputs, - ... -}: -with lib; let +{ lib, config, pkgs, inputs, ... }: +with lib; +let cfg = config.modules.email; secretsDirectory = "${(builtins.toString inputs.nix-private)}/secrets"; -in { +in +{ options.modules.email = { enable = mkEnableOption "Enable email accounts configuration"; @@ -27,14 +23,11 @@ in { config = mkIf cfg.enable { sops = let - secretList = - lib.mapAttrs' ( - name: value: - nameValuePair (value.secret.key) { - sopsFile = "${secretsDirectory}/${value.secret.file}"; - } - ) - cfg.accountConfigs; + secretList = lib.mapAttrs' ( name: value: + nameValuePair ( value.secret.key ) ({ + sopsFile = "${secretsDirectory}/${value.secret.file}"; + }) + ) cfg.accountConfigs; in { secrets = secretList; }; @@ -62,32 +55,28 @@ in { showDefaultMailbox = false; }; }; - accountsList = lib.mapAttrs (name: value: lib.recursiveUpdate defaultSetting value.config) cfg.accountConfigs; + accountsList = lib.mapAttrs ( name: value: lib.recursiveUpdate defaultSetting value.config ) cfg.accountConfigs; in { maildirBasePath = "mail"; - accounts = lib.recursiveUpdate accountsList {"${cfg.primary}".primary = true;}; + accounts = lib.recursiveUpdate accountsList { "${cfg.primary}".primary = true; }; }; programs.afew = let mailMoverRules = lib.mergeAttrsList ( lib.attrsets.mapAttrsToList ( n: v: - if lib.hasAttrByPath ["afew" "mailMover"] v - then v.afew.mailMover - else {} - ) - cfg.accountConfigs - ); + if lib.hasAttrByPath ["afew" "mailMover"] v then + v.afew.mailMover + else {} + ) cfg.accountConfigs); mailFilterRules = lib.flatten ( lib.attrsets.mapAttrsToList ( n: v: - if lib.hasAttrByPath ["afew" "filters"] v - then v.afew.filters - else [] - ) - cfg.accountConfigs - ); - in { + if lib.hasAttrByPath ["afew" "filters"] v then + v.afew.filters + else [] + ) cfg.accountConfigs); + in { enable = true; extraConfig = '' [FolderNameFilter] @@ -107,20 +96,16 @@ in { ''; }; programs.neomutt = let - accountMacros = - lib.imap1 ( - i: elem: - elem - // { - map = ["index" "pager"]; - key = ""; - } - ) ( + accountMacros = lib.imap1 ( + i: + elem: elem // { + map = ["index" "pager"]; + key = ""; + }) ( lib.attrsets.mapAttrsToList ( - n: c: {"action" = "source ~/.config/neomutt/${n}Unread:${c.config.address}";} - ) - cfg.accountConfigs - ); + n: c: + { "action" = "source ~/.config/neomutt/${n}Unread:${c.config.address}";} + ) cfg.accountConfigs); in { enable = true; unmailboxes = true; @@ -151,224 +136,94 @@ in { envelope_from = "yes"; use_envelope_from = "no"; my_status = "' %o/%m  | %l 󰉉 | %f %* Sort: %s-%S Pos: %P '"; - my_pager = "'  %F |  %s %* Pos: %P '"; + my_pager = "'  %F |  %s %* Pos: %P '"; compose_format = "' COMPOSE  %a | 󰉉 %l'"; query_command = "'${pkgs.khard}/bin/khard email --parsable --search-in-source-files %s'"; virtual_spoolfile = "yes"; mail_check_stats = "yes"; mh_purge = "yes"; - mailcap_path = "${config.xdg.configHome}/neomutt/mailcap"; + mailcap_path= "${config.xdg.configHome}/neomutt/mailcap"; }; extraConfig = '' - ${(builtins.readFile ./files/theme.muttrc)} - set reverse_name - charset-hook ^iso-8859-1$ cp1252 - ignore * + ${(builtins.readFile ./files/theme.muttrc)} + set reverse_name + charset-hook ^iso-8859-1$ cp1252 + ignore * - unignore from date subject to cc bcc tags user-agent x-mailer + unignore from date subject to cc bcc tags user-agent x-mailer - # Attachment - auto_view text/x-vcard text/html text/enriched text/calendar - alternative_order text/html text/enriched text/plain text/* + # Attachment + auto_view text/x-vcard text/html text/enriched text/calendar + alternative_order text/html text/enriched text/plain text/* - tag-transforms "attachment" "󰁦" \ - "encrypted" "󱧈" \ - "signed" "󱅞" \ - "unread" "" \ - "replied" "" - tag-formats "attachment" "GA" \ - "encrypted" "GE" \ - "signed" "GS" \ - "unread" "GU" \ - "replied" "GR" + tag-transforms "attachment" "󰁦" \ + "encrypted" "󱧈" \ + "signed" "󱅞" \ + "unread" "" \ + "replied" "" + tag-formats "attachment" "GA" \ + "encrypted" "GE" \ + "signed" "GS" \ + "unread" "GU" \ + "replied" "GR" - ${lib.concatStrings (lib.attrsets.mapAttrsToList (_: v: - if lib.hasAttrByPath ["neomuttHooks"] v - then v.neomuttHooks - else "") - cfg.accountConfigs)} - # manually source first account instead of use home-manager parameter because - # of $my_pager expansion does not work as this variable is not already set - source ${config.xdg.configHome}/neomutt/${cfg.primary} + ${lib.concatStrings (lib.attrsets.mapAttrsToList ( _: v: if lib.hasAttrByPath [ "neomuttHooks" ] v then v.neomuttHooks else "" ) cfg.accountConfigs)} + # manually source first account instead of use home-manager parameter because + # of $my_pager expansion does not work as this variable is not already set + source ${config.xdg.configHome}/neomutt/${cfg.primary} ''; binds = [ - { - map = ["attach" "browser" "index" "pager"]; - key = "g"; - action = "noop"; - } - { - map = ["attach" "browser" "index" "pager"]; - key = "G"; - action = "noop"; - } - { - map = ["index"]; - key = "q"; - action = "noop"; - } - { - map = ["pager"]; - key = "Q"; - action = "noop"; - } - { - map = ["attach" "browser" "index"]; - key = "gg"; - action = "first-entry"; - } - { - map = ["attach" "browser" "index"]; - key = "G"; - action = "last-entry"; - } - { - map = ["pager"]; - key = "gg"; - action = "top"; - } - { - map = ["pager"]; - key = "G"; - action = "bottom"; - } - { - map = ["pager"]; - key = "k"; - action = "previous-line"; - } - { - map = ["pager"]; - key = "j"; - action = "next-line"; - } + { map = [ "attach" "browser" "index" "pager" ]; key = "g"; action = "noop"; } + { map = [ "attach" "browser" "index" "pager" ]; key = "G"; action = "noop"; } + { map = [ "index" ]; key = "q"; action = "noop";} + { map = [ "pager" ]; key = "Q"; action = "noop";} + { map = [ "attach" "browser" "index" ]; key = "gg"; action = "first-entry";} + { map = [ "attach" "browser" "index" ]; key = "G"; action = "last-entry";} + { map = [ "pager" ]; key = "gg"; action = "top"; } + { map = [ "pager" ]; key = "G"; action = "bottom"; } + { map = [ "pager" ]; key = "k"; action = "previous-line"; } + { map = [ "pager" ]; key = "j"; action = "next-line"; } # Scrolling - { - map = ["attach" "browser" "pager" "index"]; - key = "\\CF"; - action = "next-page"; - } - { - map = ["attach" "browser" "pager" "index"]; - key = "\\CB"; - action = "previous-page"; - } - { - map = ["attach" "browser" "pager" "index"]; - key = "\\Cu"; - action = "half-up"; - } - { - map = ["attach" "browser" "pager" "index"]; - key = "\\Cd"; - action = "half-down"; - } - { - map = ["browser" "pager"]; - key = "\\Ce"; - action = "next-line"; - } - { - map = ["browser" "pager"]; - key = "\\Cy"; - action = "previous-line"; - } - { - map = ["index"]; - key = "\\Ce"; - action = "next-line"; - } - { - map = ["index"]; - key = "\\Cy"; - action = "previous-line"; - } + { map = [ "attach" "browser" "pager" "index" ]; key = "\\CF"; action = "next-page";} + { map = [ "attach" "browser" "pager" "index" ]; key = "\\CB"; action = "previous-page";} + { map = [ "attach" "browser" "pager" "index" ]; key = "\\Cu"; action = "half-up";} + { map = [ "attach" "browser" "pager" "index" ]; key = "\\Cd"; action = "half-down";} + { map = [ "browser" "pager" ]; key = "\\Ce"; action = "next-line";} + { map = [ "browser" "pager" ]; key = "\\Cy"; action = "previous-line";} + { map = [ "index" ]; key = "\\Ce"; action = "next-line";} + { map = [ "index" ]; key = "\\Cy"; action = "previous-line";} # Reply - { - map = ["pager" "index"]; - key = "R"; - action = "group-reply"; - } + { map =[ "pager" "index" ]; key = "R"; action = "group-reply";} # sidebar - { - map = ["index" "pager"]; - key = ""; - action = "sidebar-toggle-visible"; - } - { - map = ["index" "pager"]; - key = "{"; - action = "sidebar-prev"; - } - { - map = ["index" "pager"]; - key = "}"; - action = "sidebar-next"; - } - { - map = ["index" "pager"]; - key = "|"; - action = "sidebar-open"; - } + { map = [ "index" "pager" ]; key = ""; action = "sidebar-toggle-visible";} + { map = [ "index" "pager" ]; key = "{"; action = "sidebar-prev";} + { map = [ "index" "pager" ]; key = "}"; action = "sidebar-next";} + { map = [ "index" "pager" ]; key = "|"; action = "sidebar-open";} # open virtual folder - { - map = ["index" "pager"]; - key = "X"; - action = "noop"; - } - { - map = ["index" "pager"]; - key = "X"; - action = "change-vfolder"; - } + { map = [ "index" "pager" ]; key = "X"; action = "noop";} + { map = [ "index" "pager" ]; key = "X"; action = "change-vfolder";} # read entire thread of the current message - { - map = ["index" "pager"]; - key = "+"; - action = "entire-thread"; - } + { map = [ "index" "pager" ]; key = "+"; action = "entire-thread";} # generate virtual folder from query - { - map = ["index" "pager"]; - key = "\\eX"; - action = "vfolder-from-query"; - } + { map = [ "index" "pager" ]; key = "\\eX"; action = "vfolder-from-query";} # generate virtual folder from query with time window - { - map = ["index" "pager"]; - key = "\\CD"; - action = "modify-tags"; - } + { map = [ "index" "pager" ]; key = "\\CD"; action = "modify-tags";} # Editor - { - map = ["editor"]; - key = ""; - action = "complete-query"; - } - { - map = ["editor"]; - key = "^T"; - action = "complete"; - } + { map = [ "editor" ]; key = ""; action = "complete-query";} + { map = [ "editor" ]; key = "^T"; action = "complete";} ]; - macros = - [ - { - map = ["pager"]; - key = "\\CB"; - action = "${pkgs.urlscan}/bin/urlscan -d -c --color true"; - } - ] - ++ accountMacros; + macros = [ + { map = [ "pager" ]; key = "\\CB"; action = "${pkgs.urlscan}/bin/urlscan -d -c --color true"; } + ] ++ accountMacros; }; programs.mbsync = { enable = true; @@ -379,7 +234,7 @@ in { }; programs.notmuch = { enable = true; - new.tags = ["new"]; + new.tags = [ "new" ]; hooks.postNew = '' ${pkgs.afew}/bin/afew --tag --new ${pkgs.afew}/bin/afew --move --all diff --git a/modules/home-manager/application/foot/default.nix b/modules/home-manager/application/foot/default.nix index 0ffe094..5807274 100644 --- a/modules/home-manager/application/foot/default.nix +++ b/modules/home-manager/application/foot/default.nix @@ -1,11 +1,9 @@ -{ - lib, - config, - ... -}: -with lib; let +{ lib, config, ... }: +with lib; +let cfg = config.modules.application.foot; -in { +in +{ options.modules.application.foot = { enable = mkEnableOption "enable Foot terminal emulator"; @@ -67,7 +65,7 @@ in { selection-foreground = "181818"; urls = "b8b8b8"; jump-labels = "181818 f7ca88"; - scrollback-indicator = "181818 b8b8b8"; + scrollback-indicator= "181818 b8b8b8"; }; scrollback = { lines = cfg.scrollback-lines; diff --git a/modules/home-manager/application/gnupg/default.nix b/modules/home-manager/application/gnupg/default.nix index 28c01d6..53a24f1 100644 --- a/modules/home-manager/application/gnupg/default.nix +++ b/modules/home-manager/application/gnupg/default.nix @@ -1,12 +1,9 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.application.gnupg; -in { +in +{ options.modules.application.gnupg = { enable = mkEnableOption "enable GnuPG and related utils"; @@ -23,6 +20,7 @@ in { }; }; config = mkIf cfg.enable { + home.packages = with pkgs; [ # pinentry-gnome gcr @@ -48,10 +46,13 @@ in { noAllowExternalCache = true; }; - services.ssh-agent.enable = - if cfg.enableSshSupport - then false - else true; + home.sessionVariablesExtra = lib.mkIf cfg.enableSshSupport '' + if [[ -z "''${SSH_AUTH_SOCK}" ]]; then + export SSH_AUTH_SOCK="$(${config.programs.gpg.package}/bin/gpgconf --list-dirs agent-ssh-socket)" + fi + ''; + + services.ssh-agent.enable = if cfg.enableSshSupport then false else true; programs.password-store = { enable = cfg.pass; }; diff --git a/modules/home-manager/application/imv/default.nix b/modules/home-manager/application/imv/default.nix index b8ab6e6..3d791ab 100644 --- a/modules/home-manager/application/imv/default.nix +++ b/modules/home-manager/application/imv/default.nix @@ -1,12 +1,9 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.application.imv; -in { +in +{ options.modules.application.imv = { enable = mkEnableOption "enable IMV image viewer"; @@ -15,13 +12,14 @@ in { default = true; description = "install Package, if false relies on distribution packages"; }; + }; config = mkIf cfg.enable { programs.imv = { enable = true; }; xdg.mimeApps.defaultApplications = { - "image/*" = "imv-dir.desktop"; + "image/*" = "imv-dir.desktop"; }; }; } diff --git a/modules/home-manager/application/zathura/default.nix b/modules/home-manager/application/zathura/default.nix index 56922a7..d710830 100644 --- a/modules/home-manager/application/zathura/default.nix +++ b/modules/home-manager/application/zathura/default.nix @@ -1,11 +1,9 @@ -{ - lib, - config, - ... -}: -with lib; let +{ lib, config, ... }: +with lib; +let cfg = config.modules.application.zathura; -in { +in +{ options.modules.application.zathura = { enable = mkEnableOption "enable Zathura PDF viewer"; }; @@ -19,7 +17,7 @@ in { }; }; xdg.mimeApps.defaultApplications = { - "application/pdf" = "org.pwmt.zathura.desktop"; + "application/pdf" = "org.pwmt.zathura.desktop"; }; }; } diff --git a/modules/home-manager/audio/cmus/default.nix b/modules/home-manager/audio/cmus/default.nix index 34163ce..acec36f 100644 --- a/modules/home-manager/audio/cmus/default.nix +++ b/modules/home-manager/audio/cmus/default.nix @@ -1,13 +1,10 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.audio.cmus; -in { - options.modules.audio.cmus = { +in +{ + options.modules.audio.cmus= { enable = mkEnableOption "enable cmus audio player"; }; config = mkIf cfg.enable { diff --git a/modules/home-manager/cli/direnv/default.nix b/modules/home-manager/cli/direnv/default.nix index 4356ecb..7397289 100644 --- a/modules/home-manager/cli/direnv/default.nix +++ b/modules/home-manager/cli/direnv/default.nix @@ -1,11 +1,9 @@ -{ - lib, - config, - ... -}: -with lib; let +{ lib, config, ... }: +with lib; +let cfg = config.modules.cli.direnv; -in { +in +{ options.modules.cli.direnv = { enable = mkEnableOption "enable direnv"; }; @@ -14,7 +12,7 @@ in { programs.direnv = { enable = true; enableZshIntegration = true; - nix-direnv.enable = true; + nix-direnv.enable = true; }; }; } diff --git a/modules/home-manager/cli/ghq/default.nix b/modules/home-manager/cli/ghq/default.nix index 31d44da..d9066b3 100644 --- a/modules/home-manager/cli/ghq/default.nix +++ b/modules/home-manager/cli/ghq/default.nix @@ -1,12 +1,9 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.cli.ghq; -in { +in +{ options.modules.cli.ghq = { enable = mkEnableOption "enable ghq"; }; @@ -21,7 +18,7 @@ in { root = "~/code"; }; }; - + home.shellAliases = { # thanks jdauliac for the tip g = "cd $(${pkgs.ghq}/bin/ghq root)/$(${pkgs.ghq}/bin/ghq list | ${pkgs.fzf}/bin/fzf)"; diff --git a/modules/home-manager/cli/git/default.nix b/modules/home-manager/cli/git/default.nix index 4e9d71e..fc1236b 100644 --- a/modules/home-manager/cli/git/default.nix +++ b/modules/home-manager/cli/git/default.nix @@ -1,13 +1,9 @@ -{ - lib, - config, - pkgs, - inputs, - ... -}: -with lib; let +{ lib, config, pkgs, inputs, ... }: +with lib; +let cfg = config.modules.cli.git; -in { +in +{ options.modules.cli.git = { enable = mkEnableOption "enable git"; @@ -44,6 +40,7 @@ in { dark = true; line-numbers = true; syntax-theme = "base16-256"; + }; }; package = pkgs.gitFull; diff --git a/modules/home-manager/cli/k8s/default.nix b/modules/home-manager/cli/k8s/default.nix index ef40022..7afaf2c 100644 --- a/modules/home-manager/cli/k8s/default.nix +++ b/modules/home-manager/cli/k8s/default.nix @@ -1,12 +1,9 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.cli.k8s; -in { +in +{ options.modules.cli.k8s = { enable = mkEnableOption "Install k8s utils"; @@ -18,12 +15,10 @@ in { }; config = mkIf cfg.enable { - home.packages = with pkgs; - [ - kubectl - kubecm - ] - ++ cfg.kubectlPlugins; + home.packages = with pkgs; [ + kubectl + kubecm + ] ++ cfg.kubectlPlugins; programs.k9s = { enable = true; }; diff --git a/modules/home-manager/cli/neovim/default.nix b/modules/home-manager/cli/neovim/default.nix index 71766a2..fc251d1 100644 --- a/modules/home-manager/cli/neovim/default.nix +++ b/modules/home-manager/cli/neovim/default.nix @@ -1,10 +1,6 @@ -{ - lib, - pkgs, - config, - ... -}: -with lib; let +{ lib, pkgs, config, ... }: +with lib; +let cfg = config.modules.cli.neovim; nvim-spell-fr-utf8-dictionary = builtins.fetchurl { url = "https://ftp.nluug.nl/vim/runtime/spell/fr.utf-8.spl"; @@ -18,38 +14,37 @@ with lib; let ## Dynamically create LSP servers configurations list regarding ## files in `./files/lsp` lspConfigFiles = lib.mapAttrs' ( - k: _: - lib.nameValuePair - "${config.xdg.configHome}/nvim/lsp/${k}" - {source = ./files/lsp/${k};} - ) (builtins.readDir ./files/lsp); + k: _: lib.nameValuePair + ("${config.xdg.configHome}/nvim/lsp/${k}") + ({ source = ./files/lsp/${k};}) + ) (builtins.readDir ./files/lsp); ## This variable contains neovim LSP activations lspLuaConfig = lib.attrsets.mapAttrsToList ( - k: v: "vim.lsp.enable('${lib.removeSuffix ".lua" k}')" + k: v: + "vim.lsp.enable('${lib.removeSuffix ".lua" k}')" ) (builtins.readDir ./files/lsp); - ## Tony plugins to have a proper helm linting. +## Tony plugins to have a proper helm linting. nvim-k8s-lsp = pkgs.vimUtils.buildVimPlugin { pname = "nvim-k8s-lsp"; version = "main"; src = builtins.fetchGit { url = "https://github.com/tonychg/nvim-k8s-lsp.git"; - rev = "1dffda65f4fe117f67514ed5d93b18f62be1ef24"; + rev = "930aa20bcd54f2d6f16040e98ff4068b292c6c7f"; ref = "main"; }; }; -in { +in +{ options.modules.cli.neovim = { enable = mkEnableOption "enable Neovim text editor"; }; config = mkIf cfg.enable { - home.file = - lspConfigFiles - // { - "${config.xdg.configHome}/nvim/spell/fr.utf-8.spl".source = nvim-spell-fr-utf8-dictionary; - "${config.xdg.configHome}/nvim/spell/fr.utf-8.sug".source = nvim-spell-fr-utf8-suggestions; - }; + home.file = lspConfigFiles // { + "${config.xdg.configHome}/nvim/spell/fr.utf-8.spl".source = nvim-spell-fr-utf8-dictionary; + "${config.xdg.configHome}/nvim/spell/fr.utf-8.sug".source = nvim-spell-fr-utf8-suggestions; + }; programs.neovim = { enable = true; @@ -70,13 +65,13 @@ in { python3Packages.python-lsp-server shellcheck - tofu-ls + terraform-lsp tflint vscode-langservers-extracted yaml-language-server # Formatters - alejandra + nixfmt-rfc-style shfmt yamlfmt ]; @@ -84,8 +79,9 @@ in { (builtins.readFile ./files/options.lua) + (builtins.readFile ./files/keybindings.lua) + '' - ${lib.concatStringsSep "\n" lspLuaConfig} - ''; + ${ lib.concatStringsSep "\n" lspLuaConfig} + '' + ; plugins = with pkgs.vimPlugins; [ { plugin = nvim-autopairs; @@ -97,39 +93,39 @@ in { { plugin = catppuccin-nvim; type = "lua"; - config = builtins.readFile ./files/plugins/theme.lua; + config = (builtins.readFile ./files/plugins/theme.lua); } { plugin = blink-cmp; type = "lua"; - config = builtins.readFile ./files/plugins/blink-cmp.lua; + config = (builtins.readFile ./files/plugins/blink-cmp.lua); } blink-emoji-nvim blink-cmp-dictionary { plugin = conform-nvim; type = "lua"; - config = builtins.readFile ./files/plugins/conform.lua; + config = (builtins.readFile ./files/plugins/conform.lua); } { plugin = dropbar-nvim; type = "lua"; - config = builtins.readFile ./files/plugins/dropbar.lua; + config = (builtins.readFile ./files/plugins/dropbar.lua); } { plugin = fzf-lua; type = "lua"; - config = builtins.readFile ./files/plugins/fzf-lua.lua; + config = (builtins.readFile ./files/plugins/fzf-lua.lua); } { plugin = gitsigns-nvim; type = "lua"; - config = builtins.readFile ./files/plugins/gitsign.lua; + config = (builtins.readFile ./files/plugins/luasnip.lua); } { plugin = indent-blankline-nvim; type = "lua"; - config = '' + config ='' require("ibl").setup{ indent = { char = "│"}, } @@ -138,41 +134,39 @@ in { { plugin = lualine-nvim; type = "lua"; - config = builtins.readFile ./files/plugins/lualine.lua; + config = (builtins.readFile ./files/plugins/lualine.lua); } { - plugin = neo-tree-nvim; - type = "lua"; - config = builtins.readFile ./files/plugins/neotree.lua; + plugin = neo-tree-nvim; + type = "lua"; + config = (builtins.readFile ./files/plugins/neotree.lua); } nui-nvim { plugin = nvim-web-devicons; type = "lua"; - config = '' + config='' require('nvim-web-devicons').setup {} ''; } { plugin = nvim-lint; type = "lua"; - config = (builtins.readFile ./files/plugins/nvim-lint.lua); + config = ( builtins.readFile ./files/plugins/nvim-lint.lua); } { plugin = nvim-sops; type = "lua"; - config = builtins.readFile ./files/plugins/nvim-sops.lua; + config = (builtins.readFile ./files/plugins/nvim-sops.lua); } plenary-nvim { - plugin = ( - nvim-treesitter.withPlugins (p: [ + plugin = (nvim-treesitter.withPlugins (p: [ p.bash p.c p.cpp p.cmake p.dockerfile - p.go p.hcl p.helm p.javascript @@ -192,27 +186,25 @@ in { ]) ); type = "lua"; - config = (builtins.readFile ./files/plugins/treesitter.lua); + config = ( builtins.readFile ./files/plugins/treesitter.lua); } { plugin = nvim-treesitter-context; type = "lua"; - config = (builtins.readFile ./files/plugins/treesitter_context.lua); + config = ( builtins.readFile ./files/plugins/treesitter_context.lua); + } { plugin = which-key-nvim; type = "lua"; - config = (builtins.readFile ./files/plugins/whichkey.lua); + config = ( builtins.readFile ./files/plugins/whichkey.lua ); } { - plugin = nvim-k8s-lsp; - type = "lua"; - config = (builtins.readFile ./files/plugins/nvim-k8s-lsp.lua); - } - { - plugin = helm-ls-nvim; + plugin = nvim-k8s-lsp ; type = "lua"; + config = ( builtins.readFile ./files/plugins/nvim-k8s-lsp.lua ); } + vim-helm ]; }; }; diff --git a/modules/home-manager/cli/neovim/files/keybindings.lua b/modules/home-manager/cli/neovim/files/keybindings.lua index b0d8b13..aeaabe3 100644 --- a/modules/home-manager/cli/neovim/files/keybindings.lua +++ b/modules/home-manager/cli/neovim/files/keybindings.lua @@ -1,15 +1,6 @@ -local opts = { noremap = true, silent = true} - -vim.api.nvim_set_keymap('n', '/', ':nohlsearch', opts) -vim.api.nvim_set_keymap('n', 'l', ':set list!', {silent = true}) - -- clear search vim.keymap.set('n', 'l', ':nohlsearch', { desc = 'Clear search', remap = true, silent = true }) --- Move tabs with \[ and \] -vim.api.nvim_set_keymap('n', ']', ':tabnext', opts) -vim.api.nvim_set_keymap('n', '[', ':tabprev', opts) - -- Switch between windows. vim.keymap.set('n', '', 'h', { desc = 'Move to the left window', remap = true }) vim.keymap.set('n', '', 'j', { desc = 'Move to the bottom window', remap = true }) @@ -28,3 +19,31 @@ vim.keymap.set('n', 'tn', ':tabnew', { desc = "Tab [n]ew", remap = t -- Show all caracters vim.keymap.set('n', 'l', ':set list!', { desc = "Show a[l]l caraters", remap = true, silent = true}) + +-- neotree +-- ------- +vim.keymap.set('n', 'nc', ':Neotree close', {desc='Neotree [c]lose'}) +vim.keymap.set('n', 'nf', ':Neotree focus filesystem', {desc='Neotree [f]ocus'}) +vim.keymap.set('n', 'nb', ':Neotree focus buffers', {desc='Neotree Nvim [b]uffers'}) +vim.keymap.set('n', 'ng', ':Neotree focus git_status', {desc='Neotree [g]it status'}) + +-- fzf-lua +-- ------ +vim.keymap.set('n', 'fb', function() require('fzf-lua').buffers() end, {desc='open [b]uffers'}) +vim.keymap.set('n', 'ff', function() require('fzf-lua').files() end, {desc='[r]esume last command'}) +vim.keymap.set('n', 'fr', function() require('fzf-lua').files() end, {desc='[f]iles'}) + +-- git related keymaps +vim.keymap.set('n', 'fgb', function() require('fzf-lua').git_branches() end, {desc='Git [b]ranches'}) +vim.keymap.set('n', 'fgc', function() require('fzf-lua').git_commits() end, {desc='Git [c]ommits'}) +vim.keymap.set('n', 'fgC', function() require('fzf-lua').git_bcommits() end, {desc='Git current buffer [C]ommits'}) +vim.keymap.set('n', 'fgf', function() require('fzf-lua').git_files() end, {desc='Git [f]iles'}) +vim.keymap.set('n', 'fgs', function() require('fzf-lua').git_stash() end, {desc='Git [s]tash'}) +vim.keymap.set('n', 'fgS', function() require('fzf-lua').git_status() end, {desc='Git [S]tash'}) + +-- grep related keymaps +vim.keymap.set('n', 'fGb', function() require('fzf-lua').grep_curbuf() end, {desc='grep in current [b]uffer'}) +vim.keymap.set('n', 'fGc', function() require('fzf-lua').grep_cword() end, {desc='grep word under the [c]ursor'}) +vim.keymap.set('n', 'fGg', function() require('fzf-lua').grep() end, {desc='[g]rep'}) +vim.keymap.set('n', 'fGl', function() require('fzf-lua').live_grep() end, {desc='[l]ive grep'}) +vim.keymap.set('n', 'fGr', function() require('fzf-lua').grep_last() end, {desc='[r]erun last grep'}) diff --git a/modules/home-manager/cli/neovim/files/lsp/helm.lua b/modules/home-manager/cli/neovim/files/lsp/helm.lua index 29e9e11..8086a4a 100644 --- a/modules/home-manager/cli/neovim/files/lsp/helm.lua +++ b/modules/home-manager/cli/neovim/files/lsp/helm.lua @@ -1,8 +1,7 @@ return { cmd = { 'helm_ls', 'serve' }, - filetypes = { 'helm', 'yaml.helm-values' }, - single_file_support = true, - root_markers = { 'values.yaml', 'Chart.yaml' }, + filetypes = { 'helm' }, + root_markers = { 'Chart.yaml' }, capabilities = { workspace = { didChangeWatchedFiles = { @@ -19,7 +18,9 @@ return { showdiagnosticsdirectly = false, path = "yaml-language-server", config = { - schemas = {}, + schemas = { + kubernetes = "template/**", + }, completion = true, hover = true, } diff --git a/modules/home-manager/cli/neovim/files/lsp/tofuls.lua b/modules/home-manager/cli/neovim/files/lsp/terraformls.lua similarity index 73% rename from modules/home-manager/cli/neovim/files/lsp/tofuls.lua rename to modules/home-manager/cli/neovim/files/lsp/terraformls.lua index 8eba7d0..4a875c3 100644 --- a/modules/home-manager/cli/neovim/files/lsp/tofuls.lua +++ b/modules/home-manager/cli/neovim/files/lsp/terraformls.lua @@ -1,5 +1,5 @@ return { - cmd = { 'tofu-ls', 'serve' }, + cmd = { 'terraform-ls', 'serve' }, filetypes = { 'terraform', 'terraform-vars' }, root_markers = { '.terraform', '.git' }, } diff --git a/modules/home-manager/cli/neovim/files/options.lua b/modules/home-manager/cli/neovim/files/options.lua index 37fcdcb..b683e0a 100644 --- a/modules/home-manager/cli/neovim/files/options.lua +++ b/modules/home-manager/cli/neovim/files/options.lua @@ -52,7 +52,7 @@ vim.opt.wildmode = 'lastused:full,list' -- enhance menu vim.opt.pumheight = 10 vim.opt.pumwidth = 50 vim.opt.pumblend = 10 -vim.o.winborder = 'none' + -- manage line break smartly vim.opt.wrap = true vim.opt.breakindent = true @@ -103,13 +103,24 @@ vim.opt.wildignore = { '*.sw?' } +-- Key biding +-- " ---------- +local opts = { noremap = true, silent = true} + +vim.api.nvim_set_keymap('n', '/', ':nohlsearch', opts) + +-- Move tabs with \[ and \] +vim.api.nvim_set_keymap('n', ']', ':tabnext', opts) +vim.api.nvim_set_keymap('n', '[', ':tabprev', opts) +vim.api.nvim_set_keymap('n', 'l', ':set list!', {silent = true}) + -- disable lsplog -- This is not usefull on a daily basis and should positively impact performance vim.lsp.set_log_level("off") -- define a timeout for match parens -vim.g.matchparen_timeout = 10 -vim.g.matchparen_insert_timeout = 10 +vim.g.matchparen_timeout = 2 +vim.g.matchparen_insert_timeout = 2 -- activate virtual lines for diagnistics -- no more plugins needed @@ -123,73 +134,3 @@ vim.diagnostic.config({ -- }, signs = { text = { [x.ERROR] = "󰅙", [x.WARN] = "", [x.INFO] = "󰋼", [x.HINT] = "󰌵" } }, }) - --- LSP -vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("UserLspConfig", {}), - callback = function(ev) - vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" - - local opts = { buffer = ev.buf } - local client = vim.lsp.get_client_by_id(ev.data.client_id) - local bufnr = ev.buf - local function desc(description) - return { noremap = true, silent = true, buffer = bufnr, desc = description } - end - - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { buffer = ev.buf, desc = "Go to [D]eclaration" }) - vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = ev.buf, desc = "Go to [d]efinition" }) - vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { buffer = ev.buf, desc = "Go to [i]mplementation" }) - vim.keymap.set("n", "gr", vim.lsp.buf.references, { buffer = ev.buf, desc = "Go to [r]eferences" }) - - vim.keymap.set( - "n", - "K", - function() - vim.lsp.buf.hover - { border = "rounded", max_width = 250 } - end, - opts) - - vim.keymap.set( - "n", - "", - function() - vim.lsp.buf.signature_help - { border = "rounded", max_width = 250 } - end, - {buffer = ev.buf, desc = "Signature help"} - ) - - vim.keymap.set("n", "wa", vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) - - vim.keymap.set( - "n", - "wl", - function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, - opts - ) - - vim.keymap.set("n", "D", vim.lsp.buf.type_definition, { buffer = ev.buf, desc = "Type [D]efinition" }) - vim.keymap.set("n", "rn", vim.lsp.buf.rename, { buffer = ev.buf, desc = "LSP [r]e[n]ame" }) - vim.keymap.set("n", "ca", vim.lsp.buf.code_action, { buffer = ev.buf, desc = "Show [c]ode [a]ction"}) - - vim.keymap.set( - "n", - "F", - function() - require("conform").format({ bufnr = bufnr }) - end, - { buffer = ev.buf, desc = "[F]ormat file" } - ) - - if client.server_capabilities.inlayHintProvider then - vim.keymap.set("n", "h", function() - vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) - end, desc("LSP toggle inlay [h]ints")) - end - end, -}) diff --git a/modules/home-manager/cli/neovim/files/plugins/conform.lua b/modules/home-manager/cli/neovim/files/plugins/conform.lua index 1a45416..5e3c884 100644 --- a/modules/home-manager/cli/neovim/files/plugins/conform.lua +++ b/modules/home-manager/cli/neovim/files/plugins/conform.lua @@ -4,20 +4,10 @@ require("conform").setup({ timeout_ms = 500, lsp_format = "never", }, - formatters = { - terraform = { - inherit = false, - command = "tofu", - args = { "fmt", "-" }, - stdin = true, - }, - }, formatters_by_ft = { - go = { "gofmt" }, - nix = { "alejandra" }, - sh = { "shfmt" }, - terraform = { "terraform" }, yaml = {"yamlfmt"}, + sh = { "shfmt" }, + go = { "gofmt" }, ["_"] = { "trim_whitespace" }, } }) diff --git a/modules/home-manager/cli/neovim/files/plugins/gitsign.lua b/modules/home-manager/cli/neovim/files/plugins/luasnip.lua similarity index 100% rename from modules/home-manager/cli/neovim/files/plugins/gitsign.lua rename to modules/home-manager/cli/neovim/files/plugins/luasnip.lua diff --git a/modules/home-manager/cli/neovim/files/plugins/neotree.lua b/modules/home-manager/cli/neovim/files/plugins/neotree.lua index 27d8aff..d1fd640 100644 --- a/modules/home-manager/cli/neovim/files/plugins/neotree.lua +++ b/modules/home-manager/cli/neovim/files/plugins/neotree.lua @@ -18,8 +18,3 @@ neotree.setup({ }, } }) - -vim.keymap.set('n', 'nc', ':Neotree close', {desc='Neotree [c]lose'}) -vim.keymap.set('n', 'nf', ':Neotree focus filesystem', {desc='Neotree [f]ocus'}) -vim.keymap.set('n', 'nb', ':Neotree focus buffers', {desc='Neotree Nvim [b]uffers'}) -vim.keymap.set('n', 'ng', ':Neotree focus git_status', {desc='Neotree [g]it status'}) diff --git a/modules/home-manager/cli/neovim/files/plugins/nvim-k8s-lsp.lua b/modules/home-manager/cli/neovim/files/plugins/nvim-k8s-lsp.lua index 400c8a1..a2176c6 100644 --- a/modules/home-manager/cli/neovim/files/plugins/nvim-k8s-lsp.lua +++ b/modules/home-manager/cli/neovim/files/plugins/nvim-k8s-lsp.lua @@ -1,6 +1,6 @@ require("nvim-k8s-lsp").setup({ - kubernetes_version = "v1.32.8", + kubernetes_version = "v1.32.2", integrations = { - lualine = true, + lualine = false, } }) diff --git a/modules/home-manager/cli/starship/default.nix b/modules/home-manager/cli/starship/default.nix index d75087f..cc8ff84 100644 --- a/modules/home-manager/cli/starship/default.nix +++ b/modules/home-manager/cli/starship/default.nix @@ -1,11 +1,9 @@ -{ - lib, - config, - ... -}: -with lib; let +{ lib, config, ... }: +with lib; +let cfg = config.modules.cli.starship; -in { +in +{ options.modules.cli.starship = { enable = mkEnableOption "enable starship prompt"; }; diff --git a/modules/home-manager/cli/tmux/default.nix b/modules/home-manager/cli/tmux/default.nix index 28b4bd5..1ff3293 100644 --- a/modules/home-manager/cli/tmux/default.nix +++ b/modules/home-manager/cli/tmux/default.nix @@ -1,13 +1,10 @@ -{ - lib, - config, - pkgs, - inputs, - ... -}: -with lib; let + +{ lib, config, pkgs, inputs, ... }: +with lib; +let cfg = config.modules.cli.tmux; -in { +in +{ options.modules.cli.tmux = { enable = mkEnableOption "enable Tmux"; extraConfig = mkOption { @@ -32,64 +29,63 @@ in { mouse = true; prefix = "C-a"; terminal = "tmux-256color"; - extraConfig = - '' - set -g detach-on-destroy off - set -g display-time 1500 + extraConfig = '' + set -g detach-on-destroy off + set -g display-time 1500 - bind -n -N "Select pane to the left of the active pane" M-h select-pane -L - bind -n -N "Select pane below the active pane" M-j select-pane -D - bind -n -N "Select pane above the active pane" M-k select-pane -U - bind -n -N "Select pane to the right of the active pane" M-l select-pane -R + bind -n -N "Select pane to the left of the active pane" M-h select-pane -L + bind -n -N "Select pane below the active pane" M-j select-pane -D + bind -n -N "Select pane above the active pane" M-k select-pane -U + bind -n -N "Select pane to the right of the active pane" M-l select-pane -R - bind -n -r -N "Resize the pane left by 5" M-H resize-pane -L 5 - bind -n -r -N "Resize the pane down by 5" M-J resize-pane -D 5 - bind -n -r -N "Resize the pane up by 5" M-K resize-pane -U 5 - bind -n -r -N "Resize the pane right by 5" M-L resize-pane -R 5 - bind -n M-n split-window -h -c "#{pane_current_path}" - bind -n M-N split-window -v -c "#{pane_current_path}" + bind -n -r -N "Resize the pane left by 5" M-H resize-pane -L 5 + bind -n -r -N "Resize the pane down by 5" M-J resize-pane -D 5 + bind -n -r -N "Resize the pane up by 5" M-K resize-pane -U 5 + bind -n -r -N "Resize the pane right by 5" M-L resize-pane -R 5 + bind -n M-n split-window -h -c "#{pane_current_path}" + bind -n M-N split-window -v -c "#{pane_current_path}" - # define sessions with Alt+F{1..4} for general purpose sessions - bind -n M-F1 if 'tmux has-session -t 1' {switch-client -t 1} {display-popup -E -E 'create-tmux-session -i 1'} - bind -n M-F2 if 'tmux has-session -t 2' {switch-client -t 2} {display-popup -E -E 'create-tmux-session -i 2'} - bind -n M-F3 if 'tmux has-session -t 3' {switch-client -t 3} {display-popup -E -E 'create-tmux-session -i 3'} - bind -n M-F4 if 'tmux has-session -t 4' {switch-client -t 4} {display-popup -E -E 'create-tmux-session -i 4'} + # define sessions with Alt+F{1..4} for general purpose sessions + bind -n M-F1 if 'tmux has-session -t 1' {switch-client -t 1} {display-popup -E -E 'create-tmux-session -i 1'} + bind -n M-F2 if 'tmux has-session -t 2' {switch-client -t 2} {display-popup -E -E 'create-tmux-session -i 2'} + bind -n M-F3 if 'tmux has-session -t 3' {switch-client -t 3} {display-popup -E -E 'create-tmux-session -i 3'} + bind -n M-F4 if 'tmux has-session -t 4' {switch-client -t 4} {display-popup -E -E 'create-tmux-session -i 4'} - # change window with Alt+{1..5} - bind -n -N "Goto window 1" M-1 select-window -T -t 1 - bind -n -N "Goto window 2" M-2 select-window -T -t 2 - bind -n -N "Goto window 3" M-3 select-window -T -t 3 - bind -n -N "Goto window 4" M-4 select-window -T -t 4 - bind -n -N "Goto window 5" M-5 select-window -T -t 5 + # change window with Alt+{1..5} + bind -n -N "Goto window 1" M-1 select-window -T -t 1 + bind -n -N "Goto window 2" M-2 select-window -T -t 2 + bind -n -N "Goto window 3" M-3 select-window -T -t 3 + bind -n -N "Goto window 4" M-4 select-window -T -t 4 + bind -n -N "Goto window 5" M-5 select-window -T -t 5 - # Theme - set -g status-interval 2 - setw -g automatic-rename on # rename window to reflect current program - set -g renumber-windows on # renumber windows when a window is closed - set -g set-titles on - set -g mode-style bg=colour18,fg=colour7 - set -g set-titles-string "#T" - set -g status-bg colour0 - set -g status-fg colour7 - set -g message-style bg=colour19,fg=colour7 + # Theme + set -g status-interval 2 + setw -g automatic-rename on # rename window to reflect current program + set -g renumber-windows on # renumber windows when a window is closed + set -g set-titles on + set -g mode-style bg=colour18,fg=colour7 + set -g set-titles-string "#T" + set -g status-bg colour0 + set -g status-fg colour7 + set -g message-style bg=colour19,fg=colour7 - setw -g window-status-current-format '#[fg=colour18,bg=colour11] #I\ - #[bg=colour19,fg=colour7,bold] #W\ - #{?window_active,󰎂 ,}#{?window_marked_flag,󰃃 ,}#{?window_activity_flag, ,}#{?window_silence_flag,󰝟 ,}#{?window_zoomed_flag,󱀅 ,}' + setw -g window-status-current-format '#[fg=colour18,bg=colour11] #I\ + #[bg=colour19,fg=colour7,bold] #W\ + #{?window_active,󰎂 ,}#{?window_marked_flag,󰃃 ,}#{?window_activity_flag, ,}#{?window_silence_flag,󰝟 ,}#{?window_zoomed_flag,󱀅 ,}' - set -g pane-border-style fg=colour19 - set -g pane-active-border-style fg=colour4 + set -g pane-border-style fg=colour19 + set -g pane-active-border-style fg=colour4 - setw -g window-status-format '#[bg=color12,fg=colour19] #I\ - #[bg=colour18,fg=colour7,dim] #W\ - #{?window_last_flag, ,}#{?window_marked_flag,󰃃 ,}#{?window_activity_flag, ,}#{?window_silence_flag,󰝟 ,}#{?window_zoomed_flag,󱀅 ,}#{?window_bell_flag,#[bg=colour1]#[fg=colour15]#[none] ,}' - setw -g window-status-bell-style bg=colour18,fg=colour7 - set -g status-left-length 100 - set -g status-left '#[bg=colour0, fg=colour6]  #S ' - set -g status-right ' ' - '' - + inputs.nix-private.tmux.nix - + cfg.extraConfig; + setw -g window-status-format '#[bg=color12,fg=colour19] #I\ + #[bg=colour18,fg=colour7,dim] #W\ + #{?window_last_flag, ,}#{?window_marked_flag,󰃃 ,}#{?window_activity_flag, ,}#{?window_silence_flag,󰝟 ,}#{?window_zoomed_flag,󱀅 ,}#{?window_bell_flag,#[bg=colour1]#[fg=colour15]#[none] ,}' + setw -g window-status-bell-style bg=colour18,fg=colour7 + set -g status-left-length 100 + set -g status-left '#[bg=colour0, fg=colour6]  #S ' + set -g status-right ' ' + '' + + inputs.nix-private.tmux.nix + + cfg.extraConfig; plugins = with pkgs; [ tmuxPlugins.tmux-fzf ]; diff --git a/modules/home-manager/cli/tmux/files/create-tmux-session.sh b/modules/home-manager/cli/tmux/files/create-tmux-session.sh index 91d72ca..331742c 100755 --- a/modules/home-manager/cli/tmux/files/create-tmux-session.sh +++ b/modules/home-manager/cli/tmux/files/create-tmux-session.sh @@ -162,7 +162,7 @@ tmux_vsplit() { tmux_hsplit() { local size="${1:-20}" debug "execute hsplit with size '${size}'" - tmux split-window -t "${SESSION_NAME}" -c "$CURRENT_PATH" -h -p "$size" + tmux split-window "${SESSION_NAME}" -c "$CURRENT_PATH" -h -p "$size" } tmux_neww() { diff --git a/modules/home-manager/cli/utils/default.nix b/modules/home-manager/cli/utils/default.nix index 8783d4f..3532416 100644 --- a/modules/home-manager/cli/utils/default.nix +++ b/modules/home-manager/cli/utils/default.nix @@ -1,16 +1,14 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.cli.utils; -in { +in +{ options.modules.cli.utils = { enable = mkEnableOption "Install cli utils"; }; config = mkIf cfg.enable { + programs.bat = { enable = true; config = { @@ -23,6 +21,7 @@ in { }; programs.fd = { enable = true; + }; programs.fzf = { enable = true; diff --git a/modules/home-manager/cli/vifm/default.nix b/modules/home-manager/cli/vifm/default.nix index 73d5708..c499ca6 100644 --- a/modules/home-manager/cli/vifm/default.nix +++ b/modules/home-manager/cli/vifm/default.nix @@ -1,19 +1,16 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.cli.vifm; -in { +in +{ options.modules.cli.vifm = { enable = mkEnableOption "enable Vifm file browser"; }; config = mkIf cfg.enable { home.packages = with pkgs; [ vifm - chafa # Preview images + chafa # Preview images poppler_utils # Preview PDF file ]; programs.zsh = { diff --git a/modules/home-manager/cli/zellij/default.nix b/modules/home-manager/cli/zellij/default.nix index a742c2d..944ede7 100644 --- a/modules/home-manager/cli/zellij/default.nix +++ b/modules/home-manager/cli/zellij/default.nix @@ -1,11 +1,9 @@ -{ - lib, - config, - ... -}: -with lib; let +{ lib, config, ... }: +with lib; +let cfg = config.modules.cli.zellij; -in { +in +{ options.modules.cli.zellij = { enable = mkEnableOption "enable Zellij"; }; diff --git a/modules/home-manager/cli/zsh/default.nix b/modules/home-manager/cli/zsh/default.nix index 086e298..108dd36 100644 --- a/modules/home-manager/cli/zsh/default.nix +++ b/modules/home-manager/cli/zsh/default.nix @@ -1,26 +1,23 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.cli.zsh; -in { +in +{ options.modules.cli.zsh = { enable = mkEnableOption "enable Zsh configuration"; }; config = mkIf cfg.enable { programs.zsh = { enable = true; - dotDir = "${config.xdg.configHome}/zsh"; + dotDir = ".config/zsh"; defaultKeymap = "viins"; enableCompletion = true; history = { ignoreAllDups = true; save = 10000; share = true; - path = "${config.xdg.dataHome}/zsh/history"; + path = "$HOME/.local/share/zsh/history"; }; historySubstringSearch = { enable = true; @@ -29,7 +26,7 @@ in { }; syntaxHighlighting = { enable = true; - highlighters = ["brackets" "main" "pattern"]; + highlighters = [ "brackets" "main" "pattern" ]; styles = { arithmetic-expansion = "fg=#ba8baf"; assign = "fg=#7cafc2"; @@ -101,18 +98,17 @@ in { compinit -C ''; plugins = [ - { - name = "base16-shell"; - src = pkgs.fetchFromGitHub { - owner = "chriskempson"; - repo = "base16-shell"; - rev = "588691ba71b47e75793ed9edfcfaa058326a6f41"; - hash = "sha256-X89FsG9QICDw3jZvOCB/KsPBVOLUeE7xN3VCtf0DD3E="; + { + name = "base16-shell"; + src = pkgs.fetchFromGitHub { + owner = "chriskempson"; + repo = "base16-shell"; + rev = "588691ba71b47e75793ed9edfcfaa058326a6f41"; + hash = "sha256-X89FsG9QICDw3jZvOCB/KsPBVOLUeE7xN3VCtf0DD3E="; }; - } - ]; + }]; localVariables = { - BASE16_THEME = "${config.xdg.configHome}/zsh/plugins/base16"; + BASE16_THEME = "$HOME/.config/zsh/plugins/base16"; # Make ESC key more reactive to go to normal mode KEYTIMEOUT = 1; }; diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index 9959026..ff73a9f 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./application/foot ./application/gnupg diff --git a/modules/home-manager/desktop/sway/default.nix b/modules/home-manager/desktop/sway/default.nix index efdc0c8..643e192 100644 --- a/modules/home-manager/desktop/sway/default.nix +++ b/modules/home-manager/desktop/sway/default.nix @@ -1,75 +1,18 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.desktop.sway; -in { +in +{ options.modules.desktop.sway = { enable = mkEnableOption "enable Sway Windows Manager"; - kanshi.enable = mkOption { + kanshi = mkOption { type = types.bool; default = false; description = "configure laptop mode"; }; - kanshi.standalone = mkOption { - type = types.attrs; - default = { - profile.name = "standalone"; - profile.outputs = [ - { - criteria = "eDP-1"; - scale = 1.325; - status = "enable"; - } - ]; - }; - description = '' - Default configuration for laptop internal screen when no others screen - are connected. - ''; - }; - kanshi.home = mkOption { - type = types.attrs; - default = { - profile.name = "home"; - profile.outputs = [ - { - criteria = "Iiyama North America PL2792UH 1166310803122"; - mode = "3840x2160"; - position = "1235,0"; - scale = 1.75; - } - { - criteria = "Iiyama North America PL2792UH 1176923201598"; - mode = "3840x2160"; - position = "0,0"; - transform = "90"; - scale = 1.75; - } - { - criteria = "eDP-1"; - status = "disable"; - } - ]; - }; - description = '' - Default home configuration use on most of my laptops - ''; - }; - - kanshi.others = mkOption { - type = types.listOf types.attrs; - default = []; - description = '' - Kanshi profile to use specifically for host - ''; - }; - swaylock.useNullPackage = mkOption { type = types.bool; default = false; @@ -103,24 +46,6 @@ in { }; }; - iconTheme = mkOption { - type = types.package; - default = pkgs.papirus-icon-theme; - description = ''Icon theme package to use''; - }; - - iconThemeName = mkOption { - type = types.str; - default = "Papirus Dark"; - description = ''Icon theme variant to use''; - }; - - iconThemePathname = mkOption { - type = types.str; - default = "Papirus-Dark"; - description = ''Icon theme variant to use''; - }; - waybar = { laptop = mkOption { type = types.bool; @@ -129,9 +54,10 @@ in { }; cpuThermal = { + thermalZone = mkOption { - type = types.nullOr types.int; - default = null; + type = types.str; + default = ""; description = "CPU thermal hwmon thermal Zone"; }; @@ -173,6 +99,7 @@ in { ./includes/waybar.nix ]; config = mkIf cfg.enable { + programs.fuzzel.enable = true; home.packages = with pkgs; [ @@ -180,8 +107,6 @@ in { # emojione font-awesome grim - hicolor-icon-theme - jq lato liberation_ttf libertine @@ -192,7 +117,6 @@ in { noto-fonts-cjk-sans slurp wl-clipboard - wl-screenrec xdg-utils ]; @@ -209,8 +133,8 @@ in { package = pkgs.arc-theme; }; iconTheme = { - name = cfg.iconThemeName; - package = cfg.iconTheme; + name = "Papirus Dark"; + package = pkgs.papirus-icon-theme; }; font = { name = "Deja Vu Sans"; @@ -236,11 +160,11 @@ in { QT_SCALE_FACTOR_ROUNDING_POLICY = "RoundPreferFloor"; }; - qt = { - enable = true; + qt = { + enable = true; platformTheme.name = "adwaita"; style.name = "adwaita-dark"; - }; + }; xdg = { enable = true; mimeApps.enable = true; @@ -262,28 +186,26 @@ in { xdg-desktop-portal-wlr xdg-desktop-portal-gtk ]; - xdgOpenUsePortal = false; + xdgOpenUsePortal = true; config = { sway = { default = [ - "wlr" - "gtk" + "wlr" + "gtk" ]; }; }; }; }; - + # When using `useDistributionPackage`, create wlr configuration to let user # choose the right screen. This is a workarount to not have to configure # it manually. - home.file = mkIf cfg.xdg.useDistributionPortals { - "${config.xdg.configHome}/xdg-desktop-portal-wlr/config".text = '' - [screencast] - max_fps=30 - chooser_type=simple - chooser_cmd=${pkgs.slurp}/bin/slurp -f %o -or - ''; - }; + home.file."${config.xdg.configHome}/xdg-desktop-portal-wlr/config".text = mkIf cfg.xdg.useDistributionPortals '' + [screencast] + max_fps=30 + chooser_type=simple + chooser_cmd=${pkgs.slurp}/bin/slurp -f %o -or + ''; }; } diff --git a/modules/home-manager/desktop/sway/includes/files/screencapt.sh b/modules/home-manager/desktop/sway/includes/files/screencapt.sh deleted file mode 100755 index 353218d..0000000 --- a/modules/home-manager/desktop/sway/includes/files/screencapt.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env bash -set -eu -o pipefail - -APP_NAME="ScreenCapt" - -declare -A COMMAND -COMMAND=( - [screenshot]="grim" - [video]="wl-screenrec" -) -declare -A ICONS -ICONS=( - ["screenshot"]="accessories-screenshot" - ["video"]="record-desktop" -) - -declare -A OUTPUT_DIR -OUTPUT_DIR=( - ["screenshot"]="${XDG_PICTURES_DIR:-"~/pictures"}/screenshots" - ["video"]="${XDG_VIDEOS_DIR:="~/videos"}/screenrecords" -) - -declare -A OUTPUT_FILE_EXT -OUTPUT_FILE_EXT=( - ["screenshot"]="png" - ["video"]="mp4" -) - -TO_FILE=0 -RECORD_AUDIO=0 -ACTION="screenshot" -REGION_TYPE="window" - -notify() { - local summary message command - filename="${1:-""}" - summary="New ${ACTION}!" - if [[ $TO_FILE -eq 1 ]]; then - message+="Available in ${filename##*/}" - else - message+="Available in the clipboard" - fi - command=(notify-send "${summary}" --app-name="$APP_NAME") - if [[ -n "$filename" && "$ACTION" == "screenshot" ]]; then - command+=(--icon="${filename}") - else - command+=("--icon=${ICONS[$ACTION]}") - fi - command+=("$message") - "${command[@]}" -} - -process_args() { - while :; do - case ''${1:-""} in - screenshot) - ACTION="$1" - ;; - - video) - # If a video record is in progress Stop it - if pgrep "wl-screenrec"; then - kill -s SIGINT $(pgrep "wl-screenrec") - exit 0 - fi - TO_FILE=1 - ACTION="$1" - ;; - -r | --region) - if [[ "${2:-""}" =~ ^(r|region|s|screen|w|window)$ ]]; then - REGION_TYPE="$2" - else - exit 1 - fi - shift - ;; - -f | --file) - TO_FILE=1 - ;; - -a | --with-audio) - RECORD_AUDIO=1 - ;; - *) - break - ;; - esac - shift - done -} - -get_app_name() { - local appname - case "$REGION_TYPE" in - r | region) - appname="region" - ;; - s | screen) - appname="screen" - ;; - w | window) - appname=$(swaymsg -t get_tree | jq -r '.. | ((.nodes? // empty) + (.floating_nodes? // empty))[] | select(.visible and .pid and .focused) | "\(.app_id)"') - ;; - esac - printf "%s" "${appname:-}" -} - -get_region() { - local region switch - case "$REGION_TYPE" in - r | region) - region=$(slurp) - switch="-g" - ;; - s | screen) - region=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | "\(.name)"') - switch="-o" - ;; - w | window) - region=$(swaymsg -t get_tree | jq -r '.. | ((.nodes? // empty) + (.floating_nodes? // empty))[] | select(.visible and .pid and .focused) | .rect | "\(.x),\(.y) \(.width)x\(.height)"') - switch="-g" - ;; - esac - printf "%s%s" "${switch:-}" "${region:-}" -} - -get_output_filename() { - local date - printf -v date '%(%F_%H.%M.%S)T' - printf "%s/%s-%s.%s" "${OUTPUT_DIR[$ACTION]}" "$date" "$(get_app_name)" "${OUTPUT_FILE_EXT[$ACTION]}" -} - -ensure_directories_exist() { - for dir in "${!OUTPUT_DIR[@]}"; do - mkdir -p "${OUTPUT_DIR[$dir]}" - done -} - -main() { - process_args "$@" - ensure_directories_exist - local command - command=("${COMMAND[$ACTION]}" "$(get_region)") - if [[ "$TO_FILE" -eq 1 ]]; then - local filename - filename=$(get_output_filename) - if [[ "$ACTION" = "video" ]]; then - if [[ "$RECORD_AUDIO" -eq 1 ]]; then - command+=(--audio) - fi - command+=(-f) - fi - command+=("$filename") - "${command[@]}" - else - "${command[@]}" - | wl-copy - fi - notify "${filename:-""}" - exit 0 -} - -main "$@" diff --git a/modules/home-manager/desktop/sway/includes/files/waybar-style.css b/modules/home-manager/desktop/sway/includes/files/waybar-style.css deleted file mode 100644 index d1dd1a2..0000000 --- a/modules/home-manager/desktop/sway/includes/files/waybar-style.css +++ /dev/null @@ -1,134 +0,0 @@ -@define-color color-base-bg #323232; -@define-color color-base-fg #ddd; - -@define-color color-hover #f268b3; -@define-color color-selected #1cd180; - -@define-color color-ok #1cd180; -@define-color color-warning #f2b768; -@define-color color-critical #f268b3; - -* { - border: none; - border-radius: 0; - min-height:0; -} - -window#waybar { - background: @color-base-bg ; - color: @color-base-fg; - font-family: "Fira Code Nerd Font"; - font-size: 12px; -} - -button, -button:disabled,label:disabled{ - color:inherit; -} - -button:hover{ - background:none; - box-shadow:inherit; - box-shadow:inherit; - text-shadow:inherit; - text-shadow:inherit; - border-top:none; -} -#workspaces { - color:#fff; -} -#workspaces button { - margin:0 3px; - padding:4px 4px; - color:#9c9c9c; - border-bottom: 1px solid transparent; -} - -#workspaces button:hover { - box-shadow:inherit; - text-shadow:inherit; - color: @color-hover; - border-bottom: 1px solid @color-hover; -} - -#workspaces button.focused { - background: @color-selected; - color: @color-base-bg; -} -#workspaces button.visible:not(.focused) { - color: @color-selected; - border-color: @color-selected; -} - -#clock, -#cpu, -#memory, -#backlight, -#network, -#tray, -#mode, -#battery, -#idle_inhibitor { - padding: 2px 4px; - margin: 0; - background-color: transparent; -} - -#mode{ - background:@color-warning; - color: @color-base-bg; - font-weight:200; - font-variant: small-caps; - font-size: 16px; -} -#pulseaudio {} -#pulseaudio.output.muted { - color:@color-critical; -} -#pulseaudio.input.source-muted { - color:@color-critical; -} - -#battery.discharging { - color: @color-base-fg; - border-bottom: none; -} - -#battery.charging, #battery.plugged { - border-bottom: 1px solid @color-ok; - color: @color-selected; -} - -#battery.critical:not(.charging), -#cpu.critical, -#memory.critical, -#temperature.critical{ - border-color: @color-critical; - color: @color-critical; -} - -#battery.warning:not(.charging), -#cpu.warning, -#memory.warning{ - border-color: @color-warning; - color: @color-warning; -} - -#tray { - font-family: "DejaVu sans"; - font-size: 12px; -} -#custom-screenrecord { - color: @color-critical; - border-bottom: 1px solid @color-critical; - animation-name: critical-animation; - animation-duration: 2s; - animation-timing-function: ease-in-out; - animation-direction: alternate; - animation-iteration-count: infinite; -} - -@keyframes critical-animation { - from {color: @color-critical;} - to {color: white;} -} diff --git a/modules/home-manager/desktop/sway/includes/fuzzel.nix b/modules/home-manager/desktop/sway/includes/fuzzel.nix index 28011c5..3f1f6d7 100644 --- a/modules/home-manager/desktop/sway/includes/fuzzel.nix +++ b/modules/home-manager/desktop/sway/includes/fuzzel.nix @@ -1,9 +1,6 @@ +{ config, lib, ... }: +with lib; { - config, - lib, - ... -}: -with lib; { config = mkIf config.modules.desktop.sway.enable { programs.fuzzel = { settings = { @@ -28,5 +25,5 @@ with lib; { }; }; }; - }; + }; } diff --git a/modules/home-manager/desktop/sway/includes/kanshi.nix b/modules/home-manager/desktop/sway/includes/kanshi.nix index b3cd36d..8376511 100644 --- a/modules/home-manager/desktop/sway/includes/kanshi.nix +++ b/modules/home-manager/desktop/sway/includes/kanshi.nix @@ -1,20 +1,61 @@ +{ config, lib, ... }: +with lib; { - config, - lib, - ... -}: -with lib; let - cfg = config.modules.desktop.sway; -in { - config = mkIf cfg.enable { + config = mkIf config.modules.desktop.sway.enable { services.kanshi = { - enable = cfg.kanshi.enable; - settings = - [ - cfg.kanshi.standalone - cfg.kanshi.home - ] - ++ cfg.kanshi.others; + enable = config.modules.desktop.sway.kanshi ; + settings = [ + { + + profile.name = "standalone"; + profile.outputs = [ + { + criteria = "eDP-1"; + scale = 1.33; + status = "enable"; + } + ]; + } + { + profile.name = "home"; + profile.outputs = [ + { + criteria = "Iiyama North America PL2792UH 1166310803122"; + mode = "3840x2160"; + position = "1235,0"; + scale = 1.75; + } + { + criteria = "Iiyama North America PL2792UH 1176923201598"; + mode = "3840x2160"; + position = "0,0"; + transform = "90"; + scale = 1.75; + } + { + criteria = "eDP-1"; + status = "disable"; + } + ]; + } + { + profile.name = "work"; + profile.outputs = [ + { + criteria = "Iiyama North America PL2792QN 1179214201663"; + mode = "2560x1440"; + position = "1450,0"; + scale = 1.15; + } + { + criteria = "BOE 0x0A95 Unknown"; + mode = "1920x1080"; + position = "0,0"; + scale = 1.325; + } + ]; + } + ]; }; }; } diff --git a/modules/home-manager/desktop/sway/includes/mako.nix b/modules/home-manager/desktop/sway/includes/mako.nix index 0f47323..3b8d3df 100644 --- a/modules/home-manager/desktop/sway/includes/mako.nix +++ b/modules/home-manager/desktop/sway/includes/mako.nix @@ -1,20 +1,14 @@ +{ config, pkgs, lib, ... }: +with lib; { - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.modules.desktop.sway; -in { config = mkIf config.modules.desktop.sway.enable { systemd.user.services.mako = { Service = { ExecStart = "${pkgs.mako}/bin/mako"; }; Install = { - After = ["sway-session.target"]; - WantedBy = ["sway-session.target"]; + After = [ "sway-session.target" ]; + WantedBy = [ "sway-session.target" ]; }; }; services.mako = { @@ -30,11 +24,12 @@ in { border-radius = 0; border-size = 2; icons = true; - icon-path = "${cfg.iconTheme}/share/icons/${cfg.iconThemePathname}"; max-icon-size = 64; layer = "overlay"; anchor = "top-right"; - format = ''%a\n%s\n%b''; + format = '' + %a\n%s\n%b + ''; "urgency=high" = { border-color = "#F268b3"; }; @@ -42,10 +37,10 @@ in { border-size = 1; default-timeout = 7000; group-by = "app-name"; - format = "%b"; + format= "%b"; }; "app-name=cmus grouped" = { - format = "%b"; + format = "%b"; }; }; }; diff --git a/modules/home-manager/desktop/sway/includes/sway.nix b/modules/home-manager/desktop/sway/includes/sway.nix index 5bc17a3..f93d2c6 100644 --- a/modules/home-manager/desktop/sway/includes/sway.nix +++ b/modules/home-manager/desktop/sway/includes/sway.nix @@ -1,16 +1,13 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let +{ config, pkgs, lib, ... }: +with lib; +let cfg = config.modules.desktop.sway; -in { +in +{ config = mkIf config.modules.desktop.sway.enable { wayland.windowManager.sway = { package = config.lib.nixGL.wrap pkgs.sway; - enable = true; + enable = true; wrapperFeatures.gtk = true; systemd.enable = true; config = { @@ -20,7 +17,7 @@ in { down = "j"; up = "k"; right = "l"; - bars = []; + bars= []; input = { "4617:27904:MNT_Research_MNT_Reform_Keyboard_2.0_US/ST" = { xkb_layout = "us"; @@ -37,16 +34,11 @@ in { }; keybindings = let mod = config.wayland.windowManager.sway.config.modifier; - inherit - (config.wayland.windowManager.sway.config) - left - down - up - right - terminal - ; - in { - # navigate only with direction or workspace + inherit (config.wayland.windowManager.sway.config) + left down up right terminal; + in + { + # navigate only with direction or workspace "${mod}+${left}" = "focus left"; "${mod}+${down}" = "focus down"; "${mod}+${up}" = "focus up"; @@ -61,7 +53,7 @@ in { "${mod}+8" = "workspace $ws8"; "${mod}+9" = "workspace $ws9"; "${mod}+0" = "workspace $ws0"; - # move with Shift and direction + # move with Shift and direction "${mod}+Shift+${left}" = "move left"; "${mod}+Shift+${down}" = "move down"; "${mod}+Shift+${up}" = "move up"; @@ -80,15 +72,12 @@ in { "${mod}+Ctrl+${left}" = "move workspace to output left"; "${mod}+Return" = "exec ${terminal}"; "${mod}+d" = "exec ${pkgs.fuzzel}/bin/fuzzel"; - # manage windows manager actions with Alt + # manage windows manager actions with Alt "${mod}+Alt+k" = "kill"; "${mod}+Alt+c" = "reload"; "${mod}+Alt+Backspace" = "exec swaynag -t warning -m 'Exit sway?' -B 'Yes' 'swaymsg exit'"; - "${mod}+Alt+l" = - if cfg.swaylock.useNullPackage - then "exec swaylock" - else "exec ${pkgs.swaylock}/bin/swaylock"; - # Manage windows placement + "${mod}+Alt+l" = if cfg.swaylock.useNullPackage then "exec swaylock" else "exec ${pkgs.swaylock}/bin/swaylock"; + # Manage windows placement "${mod}+b" = "splith"; "${mod}+v" = "splitv"; "${mod}+s" = "layout stacking"; @@ -98,13 +87,9 @@ in { "${mod}+Shift+space" = "floating toggle"; "${mod}+space" = "focus mode_toggle"; "${mod}+a" = "focus parent"; - "${mod}+Shift+minus" = "move scratchpad"; - "${mod}+minus" = "scratchpad show"; - "${mod}+p" = "exec screencapt --region window"; - "${mod}+Shift+p" = "exec screencapt --region screen"; - "${mod}+Alt+p" = "mode screenshot"; - "${mod}+Alt+r" = "mode screenrecord"; - # Media stuff + "${mod}+Shift+p" = "move scratchpad"; + "${mod}+p" = "scratchpad show"; + # Media stuff "${mod}+F1" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s 1%-"; "${mod}+F2" = "exec ${pkgs.brightnessctl}/bin/brightnessctl s +1%"; "${mod}+F3" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 5%-"; @@ -116,47 +101,23 @@ in { "${mod}+shift+n" = "exec makoctl dismiss -a"; "${mod}+alt+n" = "mode notification"; }; - modes = let - inherit - (config.wayland.windowManager.sway.config) - left - down - up - right - ; + modes = + let + inherit (config.wayland.windowManager.sway.config) + left down up right; in { "resize" = { - "${left}" = "resize shrink width 10 px or 10 ppt"; - "${down}" = "resize grow height 10 px or 10 ppt"; - "${up}" = "resize shrink height 10 px or 10 ppt"; - "${right}" = "resize grow width 10 px or 10 ppt"; - "Return" = "mode default"; - "Escape" = "mode default"; + "${left}" = "resize shrink width 10 px or 10 ppt"; + "${down}" = "resize grow height 10 px or 10 ppt"; + "${up}" = "resize shrink height 10 px or 10 ppt"; + "${right}" = "resize grow width 10 px or 10 ppt"; + "Return" = "mode default"; + "Escape" = "mode default"; }; "notification" = { "r" = "exec ${pkgs.mako}/bin/makoctl restore"; "Escape" = "mode default"; }; - "screenshot" = { - "s" = "exec screencapt --region screen; mode default"; - "Shift+s" = "exec screencapt --region screen -f; mode default"; - "r" = "exec screencapt --region region; mode default"; - "Shift+r" = "exec screencapt --region region -f; mode default"; - "w" = "exec screencapt --region window; mode default"; - "Shift+w" = "exec screencapt --region window -f; mode default"; - "Return" = "mode default"; - "Escape" = "mode default"; - }; - "screenrecord" = { - "s" = "exec screencapt video --region screen; mode default"; - "Shift+s" = "exec screencapt --region video screen -a; mde default"; - "r" = "exec screencapt video --region region; mode default"; - "Shift+r" = "exec screencapt video --region region -a; mode default"; - "w" = "exec screencapt video --region window -f ; mode default"; - "Shift+w" = "exec screencapt --region video window -a; mode default"; - "Return" = "mode default"; - "Escape" = "mode default"; - }; }; colors = { focused = { @@ -185,7 +146,7 @@ in { background = "#900000"; text = "#cccccc"; indicator = "#900000"; - childBorder = "#900000"; + childBorder = "#900000" ; }; #focused_tab_title = { # boder = "#2f343a"; @@ -197,33 +158,32 @@ in { border = 1; titlebar = false; commands = [ - { - command = "inhibit_idle fullscreen"; - criteria = { - title = "^.*"; - }; - } - { - command = "inhibit_idle fullscreen"; - criteria = { - app_id = "^.*"; - }; - } - { - command = "resize set 70ppt 70ppt, border pixel 2"; - criteria = { - title = "^Open .*$"; - }; - } - ]; + { + command = "inhibit_idle fullscreen"; + criteria = { + title = "^.*"; + }; + } + { + command = "inhibit_idle fullscreen"; + criteria = { + app_id = "^.*"; + }; + } + { + command = "resize set 70ppt 70ppt, border pixel 2"; + criteria = { + title = "^Open .*$"; + }; + }]; }; floating = { border = 2; titlebar = false; criteria = [ - { - title = "^Open .*$"; - } + { + title = "^Open .*$"; + } ]; }; gaps = { @@ -254,9 +214,5 @@ in { title_align right ''; }; - home.file.".local/bin/screencapt" = { - executable = true; - source = ./files/screencapt.sh; - }; }; } diff --git a/modules/home-manager/desktop/sway/includes/swayidle.nix b/modules/home-manager/desktop/sway/includes/swayidle.nix index 483bab0..577621c 100644 --- a/modules/home-manager/desktop/sway/includes/swayidle.nix +++ b/modules/home-manager/desktop/sway/includes/swayidle.nix @@ -1,43 +1,31 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let +{ config, lib, pkgs, ... }: +with lib; +let cfg = config.modules.desktop.sway; -in { - config = mkIf config.modules.desktop.sway.enable { +in + { + config = mkIf config.modules.desktop.sway.enable { services.swayidle = { enable = true; timeouts = [ { timeout = 300; - command = - if cfg.swaylock.useNullPackage - then ''/usr/bin/swaylock -f'' - else ''${pkgs.swaylock}/bin/swaylock -f''; + command = if cfg.swaylock.useNullPackage then ''/usr/bin/swaylock -f'' else ''${pkgs.swaylock}/bin/swaylock -f''; } { timeout = 600; command = ''${pkgs.sway}/bin/swaymsg "output * power off"''; - resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * power on"''; + resumeCommand =''${pkgs.sway}/bin/swaymsg "output * power on"''; } ]; events = [ { event = "before-sleep"; - command = - if cfg.swaylock.useNullPackage - then ''/usr/bin/swaylock -f'' - else ''${pkgs.swaylock}/bin/swaylock -f''; + command = if cfg.swaylock.useNullPackage then ''/usr/bin/swaylock -f'' else ''${pkgs.swaylock}/bin/swaylock -f''; } { event = "lock"; - command = - if cfg.swaylock.useNullPackage - then ''usr/bin/swaylock -f'' - else ''${pkgs.swaylock}/bin/swaylock -f''; + command = if cfg.swaylock.useNullPackage then ''usr/bin/swaylock -f'' else ''${pkgs.swaylock}/bin/swaylock -f''; } ]; }; diff --git a/modules/home-manager/desktop/sway/includes/swaylock.nix b/modules/home-manager/desktop/sway/includes/swaylock.nix index d2d9abe..b0340ef 100644 --- a/modules/home-manager/desktop/sway/includes/swaylock.nix +++ b/modules/home-manager/desktop/sway/includes/swaylock.nix @@ -1,24 +1,15 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let +{ config, lib, pkgs, ... }: +with lib; +let cfg = config.modules.desktop.sway; -in { +in +{ config = mkIf config.modules.desktop.sway.enable { programs.swaylock = { - package = - if cfg.swaylock.useNullPackage - then null - else pkgs.swaylock; + package = if cfg.swaylock.useNullPackage then null else pkgs.swaylock; enable = true; settings = { - image = - if cfg.wallpapers.lockscreen != "" - then "${cfg.wallpapers.lockscreen}" - else false; + image = if cfg.wallpapers.lockscreen != "" then "${cfg.wallpapers.lockscreen}" else false; scaling = "center"; color = "000000"; indicator-radius = 70; diff --git a/modules/home-manager/desktop/sway/includes/waybar.nix b/modules/home-manager/desktop/sway/includes/waybar.nix index 159dc50..d46baf1 100644 --- a/modules/home-manager/desktop/sway/includes/waybar.nix +++ b/modules/home-manager/desktop/sway/includes/waybar.nix @@ -1,12 +1,9 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{lib, config, ...}: +with lib; +let cfg = config.modules.desktop.sway; -in { +in +{ config = mkIf cfg.enable { programs.waybar = { enable = true; @@ -19,52 +16,44 @@ in { layer = "top"; spacing = 6; disable-toolptips = true; - modules-center = [ - "custom/screenrecord" - ]; + modules-center = []; modules-left = [ "sway/workspaces" "sway/mode" ]; - modules-right = - [ - "network" - "custom/sep" - ] - ++ ( - if cfg.waybar.laptop - then [ + modules-right = [ + "network" + "custom/sep" + ] ++ ( + if cfg.waybar.laptop then [ "backlight" "battery" "custom/sep" ] else [ ] - ) - ++ [ - "memory" - "cpu" - "temperature" - "custom/sep" - ] - ++ ( - if cfg.waybar.gpuThermal.enable - then [ + ) ++ + [ + + "memory" + "cpu" + "temperature" + "custom/sep" + ] ++ ( + if cfg.waybar.gpuThermal.enable then [ "temperature#gpu" "custom/sep" ] else [ ] - ) - ++ [ - "pulseaudio#input" - "pulseaudio#output" - "custom/sep" - "clock" - "custom/sep" - "privacy" - "tray" - ]; + ) ++ + [ + "pulseaudio" + "custom/sep" + "clock" + "custom/sep" + "tray" + ]; "clock" = { "format-alt" = "{:%Y-%m-%d}"; "timezone" = "Europe/Paris"; @@ -72,7 +61,7 @@ in { }; "cpu" = { "format" = "{usage}% {icon}"; - "format-icons" = [""]; + "format-icons" = [ "" ]; "states" = { "critical" = 90; "warning" = 70; @@ -83,23 +72,15 @@ in { "format" = "|"; "tooltip" = false; }; - "custom/screenrecord" = { - "format" = "  [rec.] "; - "interval" = 1; - "exec" = "echo '{\"class\": \"recording\"}'"; - "exec-if" = "${pkgs.procps}/bin/pgrep wl-screenrec"; - "on-click" = "exec ${pkgs.coreutils}/bin/kill -s SIGINT $(${pkgs.procps}/bin/pgrep wl-screenrec)"; - "tooltype" = false; - }; "idle_inhibitor" = { - "format" = "{icon}"; - "format-icons" = { - "activated" = ""; - "deactivated" = ""; - }; + "format" = "{icon}"; + "format-icons" = { + "activated" = ""; + "deactivated" = ""; + }; }; "memory" = { - "format" = "{used:0.0f}/{total:0.0f}G "; + "format" = "{used:0.1f}G/{total:0.1f}G "; "interval" = 30; "states" = { "critical" = 90; @@ -107,71 +88,44 @@ in { }; }; "network" = { - "format-alt" = "{ifname}: {essid} {ipaddr}/{cidr} 󰈀 "; + "format-alt" = "{ifname}: {ipaddr}/{cidr}"; "format-disconnected" = "Disconnected ⚠ "; - "format-ethernet" = "{ifname} 󰈀 "; + "format-ethernet" = "{ifname}: {ipaddr}/{cidr} 󰈀 "; "format-linked" = "{ifname} (No IP) 󰈀 "; - "format-wifi" = "{signalStrength}%  "; + "format-wifi" = "{essid} ({signalStrength}%)  "; "tooltip" = false; }; - "privacy" = { - "icon-spacing" = 6; - "icon-size" = 11; - "transition-duration" = 250; - "modules" = [ - { - "type" = "screenshare"; - "tooltip" = false; - } - { - "type" = "audio-out"; - "tooltip" = false; - } - { - "type" = "audio-in"; - "tooltip" = false; - } - ]; - "ignore-monitor" = true; - }; - "pulseaudio#output" = { - "format" = "{volume}% {icon} "; + "pulseaudio" = { + "format" = "{format_source} {volume}% {icon} "; "format-bluetooth" = "{volume}% {icon}"; "format-icons" = { "car" = ""; - "default" = "󰕾"; + "default" = ""; "hands-free" = "󰋎"; "headphone" = "󰋋"; "headset" = "󰋎"; "phone" = ""; "portable" = ""; }; - "format-muted" = "󰖁 "; - "tooltip" = false; - }; - "pulseaudio#input" = { - "format" = "{format_source} "; - "format-source" = "{volume}% "; + "format-muted" = "{format_source} 󰝟 "; + "format-source" = "{volume}%  "; "format-source-muted" = " "; "tooltip" = false; }; "sway/mode" = { - "format" = "{}"; + "format" = "{}"; }; "sway/workspace" = { - "disable-scroll" = true; + "disable-scroll" = true; }; "temperature" = { "critical-threshold" = 80; - "format" = " {temperatureC}°C  "; - "thermal-zone" = - mkIf (cfg.waybar.cpuThermal.thermalZone != null) - cfg.waybar.cpuThermal.thermalZone; - "hwmon-path-abs" = - mkIf (cfg.waybar.cpuThermal.hwmonPathAbs != "") + "format" = "{temperatureC}°C  "; + "thermal-zone" = mkIf ( cfg.waybar.cpuThermal.thermalZone != "" ) + "${cfg.waybar.cpuThermal.thermalZone}"; + "hwmon-path-abs" = mkIf ( cfg.waybar.cpuThermal.hwmonPathAbs != "" ) "${cfg.waybar.cpuThermal.hwmonPathAbs}"; - "input-filename" = - mkIf (cfg.waybar.cpuThermal.inputFilename != "") + "input-filename" = mkIf ( cfg.waybar.cpuThermal.inputFilename != "" ) "${cfg.waybar.cpuThermal.inputFilename}"; }; "temperature#gpu" = { @@ -216,7 +170,121 @@ in { }; }; }; - style = builtins.readFile ./files/waybar-style.css; + style = '' + @define-color color-base-bg #323232; + @define-color color-base-fg #ddd; + + @define-color color-hover #f268b3; + @define-color color-selected #1cd180; + + @define-color color-ok #1cd180; + @define-color color-warning #f2b768; + @define-color color-critical #f268b3; + + * { + border: none; + border-radius: 0; + min-height:0; + } + + window#waybar { + background: @color-base-bg ; + color: @color-base-fg; + font-family: "Fira Code Nerd Font"; + font-size: 12px; + } + + button, + button:disabled,label:disabled{ + color:inherit; + } + + button:hover{ + background:none; + box-shadow:inherit; + box-shadow:inherit; + text-shadow:inherit; + text-shadow:inherit; + border-top:none; + } + #workspaces { + color:#fff; + } + #workspaces button { + margin:0 3px; + padding:4px 4px; + color:#9c9c9c; + border-bottom: 1px solid transparent; + } + + #workspaces button:hover { + box-shadow:inherit; + text-shadow:inherit; + color: @color-hover; + border-bottom: 1px solid @color-hover; + } + + #workspaces button.focused { + background: @color-selected; + color: @color-base-bg; + } + #workspaces button.visible:not(.focused) { + color: @color-selected; + border-color: @color-selected; + } + + #clock, + #cpu, + #memory, + #backlight, + #network, + #tray, + #mode, + #battery, + #idle_inhibitor { + padding: 2px 4px; + margin: 0; + background-color: transparent; + } + + #mode{ + background:@color-warning; + font-weight:bold; + } + #pulseaudio {} + #pulseaudio.muted { + color:@color-critical; + } + + #battery.discharging { + color: @color-base-fg; + border-bottom: none; + } + + #battery.charging, #battery.plugged { + border-bottom: 1px solid @color-ok; + color: @color-selected; + } + + #battery.critical:not(.charging), + #cpu.critical, + #memory.critical{ + border-color: @color-critical; + color: @color-critical; + } + + #battery.warning:not(.charging), + #cpu.warning, + #memory.warning{ + border-color: @color-warning; + color: @color-warning; + } + + #tray { + font-family: "DejaVu sans"; + font-size: 12px; + } + ''; }; }; } diff --git a/modules/home-manager/gaming/lutris/default.nix b/modules/home-manager/gaming/lutris/default.nix index 09c539c..3718e71 100644 --- a/modules/home-manager/gaming/lutris/default.nix +++ b/modules/home-manager/gaming/lutris/default.nix @@ -1,18 +1,15 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; let +{ lib, config, pkgs, ... }: +with lib; +let cfg = config.modules.gaming.lutris; -in { +in +{ options.modules.gaming.lutris = { enable = mkEnableOption "enable Lutris Gaming preservation platform"; }; config = mkIf cfg.enable { home.packages = with pkgs; [ - (lutris.override { + ( lutris.override { extraLibraries = pkgs: [ wine xorg.libXcursor diff --git a/modules/home-manager/video/kdenlive/default.nix b/modules/home-manager/video/kdenlive/default.nix index fd80c48..d84021a 100644 --- a/modules/home-manager/video/kdenlive/default.nix +++ b/modules/home-manager/video/kdenlive/default.nix @@ -1,12 +1,9 @@ -{ - pkgs, - lib, - config, - ... -}: -with lib; let +{ pkgs, lib, config, ... }: +with lib; +let cfg = config.modules.video.kdenlive; -in { +in +{ options.modules.video.kdenlive = { enable = mkEnableOption "enable Kdenlive video editor"; }; diff --git a/modules/home-manager/video/mpv/default.nix b/modules/home-manager/video/mpv/default.nix index 263645b..f208476 100644 --- a/modules/home-manager/video/mpv/default.nix +++ b/modules/home-manager/video/mpv/default.nix @@ -1,11 +1,9 @@ -{ - lib, - config, - ... -}: -with lib; let +{ lib, config, ... }: +with lib; +let cfg = config.modules.video.mpv; -in { +in +{ options.modules.video.mpv = { enable = mkEnableOption "enable MPV video player"; }; diff --git a/modules/home-manager/web/firefox/conf/doh.nix b/modules/home-manager/web/firefox/conf/doh.nix index 9634029..73f526a 100644 --- a/modules/home-manager/web/firefox/conf/doh.nix +++ b/modules/home-manager/web/firefox/conf/doh.nix @@ -1,7 +1,7 @@ { - # DNS over HTTP (DoH), aka. Trusted Recursive Resolver (TRR) - # (https://wiki.mozilla.org/Trusted_Recursive_Resolver), uses a server run by - # Cloudflare to resolve hostnames, even when the system uses another (normal) DNS - # server. This setting disables it and sets the mode to explicit opt-out (5). +# DNS over HTTP (DoH), aka. Trusted Recursive Resolver (TRR) +# (https://wiki.mozilla.org/Trusted_Recursive_Resolver), uses a server run by +# Cloudflare to resolve hostnames, even when the system uses another (normal) DNS +# server. This setting disables it and sets the mode to explicit opt-out (5). "network.trr.mode" = 5; } diff --git a/modules/home-manager/web/firefox/conf/drm.nix b/modules/home-manager/web/firefox/conf/drm.nix index 03e7078..94b210c 100644 --- a/modules/home-manager/web/firefox/conf/drm.nix +++ b/modules/home-manager/web/firefox/conf/drm.nix @@ -1,12 +1,12 @@ { - # Disables playback of DRM-controlled HTML5 content - # if enabled, automatically downloads the Widevine Content Decryption Module - # provided by Google Inc. Details - # (https://support.mozilla.org/en-US/kb/enable-drm#w_opt-out-of-cdm-playback-uninstall-cdms-and-stop-all-cdm-downloads) +# Disables playback of DRM-controlled HTML5 content +# if enabled, automatically downloads the Widevine Content Decryption Module +# provided by Google Inc. Details +# (https://support.mozilla.org/en-US/kb/enable-drm#w_opt-out-of-cdm-playback-uninstall-cdms-and-stop-all-cdm-downloads) "media.eme.enabled" = false; - # Disables the Widevine Content Decryption Module provided by Google Inc. - # Used for the playback of DRM-controlled HTML5 content Details - # (https://support.mozilla.org/en-US/kb/enable-drm#w_disable-the-google-widevine-cdm-without-uninstalling) +# Disables the Widevine Content Decryption Module provided by Google Inc. +# Used for the playback of DRM-controlled HTML5 content Details +# (https://support.mozilla.org/en-US/kb/enable-drm#w_disable-the-google-widevine-cdm-without-uninstalling) "media.gmp-widevinecdm.enabled" = false; } diff --git a/modules/home-manager/web/firefox/conf/experiments.nix b/modules/home-manager/web/firefox/conf/experiments.nix index 4f06710..27d435a 100644 --- a/modules/home-manager/web/firefox/conf/experiments.nix +++ b/modules/home-manager/web/firefox/conf/experiments.nix @@ -1,17 +1,18 @@ { - # Disable shield studies - # Mozilla shield studies (https://wiki.mozilla.org/Firefox/Shield) is a feature - # which allows mozilla to remotely install experimental addons. + +# Disable shield studies +# Mozilla shield studies (https://wiki.mozilla.org/Firefox/Shield) is a feature +# which allows mozilla to remotely install experimental addons. "app.normandy.enabled" = false; "app.normandy.api_url" = ""; "app.shield.optoutstudies.enabled" = false; "extensions.shield-recipe-client.enabled" = false; "extensions.shield-recipe-client.api_url" = ""; - # Disable experiments - # Telemetry Experiments (https://wiki.mozilla.org/Telemetry/Experiments) is a - # feature that allows Firefox to automatically download and run specially-designed - # restartless addons based on certain conditions. +# Disable experiments +# Telemetry Experiments (https://wiki.mozilla.org/Telemetry/Experiments) is a +# feature that allows Firefox to automatically download and run specially-designed +# restartless addons based on certain conditions. "experiments.enabled" = false; "experiments.manifest.uri" = ""; "experiments.supported" = false; diff --git a/modules/home-manager/web/firefox/conf/extensions.nix b/modules/home-manager/web/firefox/conf/extensions.nix index 03d8b2d..94957a0 100644 --- a/modules/home-manager/web/firefox/conf/extensions.nix +++ b/modules/home-manager/web/firefox/conf/extensions.nix @@ -1,24 +1,24 @@ { - # Firefox sends data about installed addons as metadata updates - # (https://blog.mozilla.org/addons/how-to-opt-out-of-add-on-metadata-updates/), so - # Mozilla is able to recommend you other addons. +# Firefox sends data about installed addons as metadata updates +# (https://blog.mozilla.org/addons/how-to-opt-out-of-add-on-metadata-updates/), so +# Mozilla is able to recommend you other addons. "extensions.getAddons.cache.enabled" = false; - # Disable about:addons' Get Add-ons panel - # The start page with recommended addons uses google analytics. +# Disable about:addons' Get Add-ons panel +# The start page with recommended addons uses google analytics. "extensions.getAddons.showPane" = false; "extensions.webservice.discoverURL" = ""; - # disable pocket extension - "extensions.pocket.enabled" = false; +# disable pocket extension + "extensions.pocket.enabled" = false; - # disable extensions recommendations +# disable extensions recommendations "extensions.htmlaboutaddons.recommendations.enabled" = false; - # Automatically activate extensions +# Automatically activate extensions "extensions.autoDisableScopes" = 0; - # Deacticate extensions auto-update +# Deacticate extensions auto-update "extensions.update.enabled" = false; "extensions.update.autoUpdateDefault" = false; } diff --git a/modules/home-manager/web/firefox/conf/preferences.nix b/modules/home-manager/web/firefox/conf/preferences.nix index 0c40f07..5c58f7d 100644 --- a/modules/home-manager/web/firefox/conf/preferences.nix +++ b/modules/home-manager/web/firefox/conf/preferences.nix @@ -1,50 +1,53 @@ { + "browser.sessionstore.enabled" = true; "browser.sessionstore.restore_hidden_tabs" = true; "browser.sessionstore.restore_pinned_tabs_on_demand" = true; "browser.sessionstore.resume_after_os_start" = true; - # use blank page for new tabs +# use blank page for new tabs "browser.newtabpage.enabled" = false; - # Disable preloading of the new tab page. - # By default Firefox preloads the new tab page (with website thumbnails) in the - # background before it is even opened. +# Disable preloading of the new tab page. +# By default Firefox preloads the new tab page (with website thumbnails) in the +# background before it is even opened. "browser.newtab.preload" = false; - # Disable check for captive portal. - # By default, Firefox checks for the presence of a captive portal on every - # startup. This involves traffic to Akamai - # (https://support.mozilla.org/questions/1169302). + +# Disable check for captive portal. +# By default, Firefox checks for the presence of a captive portal on every +# startup. This involves traffic to Akamai +# (https://support.mozilla.org/questions/1169302). "network.captive-portal-service.enabled" = false; - # Disable Javascript in PDF viewer - # Disables executing of JavaScript in the PDF form viewer. It is possible that - # some PDFs are not rendered correctly due to missing functions. + +# Disable Javascript in PDF viewer +# Disables executing of JavaScript in the PDF form viewer. It is possible that +# some PDFs are not rendered correctly due to missing functions. "pdfjs.enableScripting" = true; - # Allow fullscreen in Firefox windows +# Allow fullscreen in Firefox windows "full-screen-api.ignore-widgets" = true; - # About:config show warning - "browser.aboutConfig.showWarning" = false; +# About:config show warning + "browser.aboutConfig.showWarning" = false; - # avoid some useless recommendations - "extensions.htmlaboutaddons.recommendations.enabled" = false; - "extensions.recommendations.themeRecommendationUrl" = ""; +# avoid some useless recommendations + "extensions.htmlaboutaddons.recommendations.enabled" = false; + "extensions.recommendations.themeRecommendationUrl" = ""; - # Do not send FF build ID for site in startup page - "browser.startup.homepage_override.mstone" = "ignore"; +# Do not send FF build ID for site in startup page + "browser.startup.homepage_override.mstone" = "ignore"; - "browser.aboutHomeSnippets.updateUrl" = ""; + "browser.aboutHomeSnippets.updateUrl" = ""; - # Restore session when restart - "browser.sessionstore.resume_session_once" = true; +# Restore session when restart + "browser.sessionstore.resume_session_once" = true; - # Disable translation - "browser.translations.enabled" = false; +# Disable translation + "browser.translations.enabled" = false; - # disable AI shit +# disable AI shit "browser.ml.chat.enabled" = false; "browser.ml.chat.shortcuts" = false; "browser.ml.chat.sidebar" = false; diff --git a/modules/home-manager/web/firefox/conf/privacy.nix b/modules/home-manager/web/firefox/conf/privacy.nix index 0c8c28c..3b4d987 100644 --- a/modules/home-manager/web/firefox/conf/privacy.nix +++ b/modules/home-manager/web/firefox/conf/privacy.nix @@ -1,107 +1,108 @@ { - # Disable access to device sensor data - # Disallow websites to access sensor data (ambient light, motion, device - # orientation and proximity data). +# Disable access to device sensor data +# Disallow websites to access sensor data (ambient light, motion, device +# orientation and proximity data). "device.sensors.ambientLight.enabled" = false; "device.sensors.enabled" = false; "device.sensors.motion.enabled" = false; "device.sensors.orientation.enabled" = false; "device.sensors.proximity.enabled" = false; - # Using a popular useragent string - # (https://techblog.willshouse.com/2012/01/03/most-common-user-agents/) avoids - # attracting attention i.e. with an Iceweasel UA. (keep blank to use the default) +# Using a popular useragent string +# (https://techblog.willshouse.com/2012/01/03/most-common-user-agents/) avoids +# attracting attention i.e. with an Iceweasel UA. (keep blank to use the default) - # Block Cookies - # Block 3rd-Party cookies or even all cookies. +# Block Cookies +# Block 3rd-Party cookies or even all cookies. "network.cookie.cookieBehavior" = 5; - # Block Referer - # Firefox tells a website, from which site you're coming (the so called RefControl - # (http://kb.mozillazine.org/Network.http.sendRefererHeader">referer). You can - # find more detailed settings in this ghacks - # article or install the referer). You can +# find more detailed settings in this ghacks +# article or install the IndexedDB is a way, - # websites can store structured data. This can be IndexedDB is a way, +# websites can store structured data. This can be fingerprinting with WebGL. Another - # issue is, that websites can fingerprinting with WebGL. Another +# issue is, that websites can