From 7c21d8d265f0f1b041f1c56ef2e256f714c19f33 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 24 Feb 2026 09:41:41 -0500 Subject: [PATCH 001/236] feat(ssh) : enabling ssh --- system/networking.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/system/networking.nix b/system/networking.nix index dbe3e25..27bf3ef 100644 --- a/system/networking.nix +++ b/system/networking.nix @@ -34,6 +34,7 @@ in { # proxy.noProxy = "127.0.0.1,localhost,internal.domain"; }; services = { + openssh.enable = true; }; ## TODO : FIX OPENSSH environment.systemPackages = with packages; [ openvpn From f77a2714e543d8b7db3e8b44bcce79f5a800428b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 24 Feb 2026 09:42:27 -0500 Subject: [PATCH 002/236] fix(plasma-icon) : trying to fix lack of icons for certains apps in window rules !!! WIP --- programs/desktop/plasma.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/programs/desktop/plasma.nix b/programs/desktop/plasma.nix index 7907aa0..2c87174 100644 --- a/programs/desktop/plasma.nix +++ b/programs/desktop/plasma.nix @@ -46,6 +46,18 @@ in { match.window-class = "code code"; apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic } + { + description = "fix_LibreOffice_Icon"; + match.window-class = { + value = "libreoffice-draw"; + type = "substring"; + match-whole = true; + }; + apply.desktopfile = { + value = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/draw.desktop"; + apply = "initially"; + }; + } ]; shortcuts = { "services/com.mitchellh.ghostty.desktop" = { From 6141dac867e5c5667a40163a5baac8eee8ebb293 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 25 Feb 2026 12:46:37 -0500 Subject: [PATCH 003/236] feat(network-dev) : adding iproute 2 for configuring ssh access to vm from outside --- system/networking.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/system/networking.nix b/system/networking.nix index 27bf3ef..dc1ca08 100644 --- a/system/networking.nix +++ b/system/networking.nix @@ -38,6 +38,7 @@ in { }; ## TODO : FIX OPENSSH environment.systemPackages = with packages; [ openvpn + iproute2 ]; }; } From b3d056c021de964325699fa39bf4fcc83bf3947b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 27 Feb 2026 12:16:26 -0500 Subject: [PATCH 004/236] fix(nvidia) : temp deactivation of nvidia do I can keep updating my stuff !!! TEMP --- system/hardware.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/hardware.nix b/system/hardware.nix index 5984001..d0595ea 100644 --- a/system/hardware.nix +++ b/system/hardware.nix @@ -15,7 +15,7 @@ in { "sound.nix" ]; config = { - nvidia.enable = true; + nvidia.enable = false; # Enable Ledger hardware wallet support, seeing if better options are possible hardware = { # ledger.enable = true; From 91071cf13752973cab850475e5b0d04e51a0476f Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 27 Feb 2026 12:17:16 -0500 Subject: [PATCH 005/236] feat(kernel) : updated kernel to unstable --- system.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system.nix b/system.nix index ee94724..287b884 100644 --- a/system.nix +++ b/system.nix @@ -8,7 +8,7 @@ } @ Inputs: let name = "system"; repo = "nix"; - branch = "latest"; + branch = "unstable"; packages = Inputs.pkgs-list.${repo}.${branch}; in { options.${name} = { From c579eb8353a18177fee3c9a497ce85784c7375fb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 27 Feb 2026 12:18:18 -0500 Subject: [PATCH 006/236] feat(sys-tool) : adding iw (essential tool) --- system/hardware.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/system/hardware.nix b/system/hardware.nix index d0595ea..1da6414 100644 --- a/system/hardware.nix +++ b/system/hardware.nix @@ -27,6 +27,7 @@ in { # services.xserver.videoDrivers = environment.systemPackages = with packages; [ lshw + iw ]; }; } From 60be8b18b7cea1fd2c3bf05b0776835077e6018e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 27 Feb 2026 12:19:09 -0500 Subject: [PATCH 007/236] feat(ssh) : activating firewall + opening a specific port for ssh purposes --- system/networking.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/system/networking.nix b/system/networking.nix index dc1ca08..211bcc7 100644 --- a/system/networking.nix +++ b/system/networking.nix @@ -21,6 +21,9 @@ in { }; firewall = rec { + enable = true; + # interfaces."wlp0s20f3".allowedTCPPorts = [10022]; + allowedTCPPorts = [10022]; allowedTCPPortRanges = [ { from = 1714; @@ -39,6 +42,7 @@ in { environment.systemPackages = with packages; [ openvpn iproute2 + bridge-utils ]; }; } From d341646f83e9d3221c07ba745698eafceb151294 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 27 Feb 2026 12:19:35 -0500 Subject: [PATCH 008/236] update() : quick update of my flake file --- flake.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index 7d62590..5acb782 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1770260404, - "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", + "lastModified": 1772020340, + "narHash": "sha256-aqBl3GNpCadMoJ/hVkWTijM1Aeilc278MjM+LA3jK6g=", "owner": "nix-community", "repo": "home-manager", - "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", + "rev": "36e38ca0d9afe4c55405fdf22179a5212243eecc", "type": "github" }, "original": { @@ -86,11 +86,11 @@ }, "latestPkgs": { "locked": { - "lastModified": 1770136044, - "narHash": "sha256-tlFqNG/uzz2++aAmn4v8J0vAkV3z7XngeIIB3rM3650=", + "lastModified": 1771903837, + "narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e576e3c9cf9bad747afcddd9e34f51d18c855b4e", + "rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951", "type": "github" }, "original": { @@ -144,11 +144,11 @@ ] }, "locked": { - "lastModified": 1770298830, - "narHash": "sha256-uaj19KpWhYkA3w0gIA8bx7ZrtMwZ7Zd/Hnc9iJzgNkE=", + "lastModified": 1772043741, + "narHash": "sha256-Xrdy2ybvbz8gFkarBNv6WoPCPGIJa6Vli0qlJbX/nwQ=", "owner": "nix-community", "repo": "nur", - "rev": "bfa89442edb79c3408b7ca067571aecefa2f93e1", + "rev": "4de50169adea8025743e4e8e9ac823652d30a692", "type": "github" }, "original": { @@ -165,11 +165,11 @@ ] }, "locked": { - "lastModified": 1770298830, - "narHash": "sha256-uaj19KpWhYkA3w0gIA8bx7ZrtMwZ7Zd/Hnc9iJzgNkE=", + "lastModified": 1772043741, + "narHash": "sha256-Xrdy2ybvbz8gFkarBNv6WoPCPGIJa6Vli0qlJbX/nwQ=", "owner": "nix-community", "repo": "nur", - "rev": "bfa89442edb79c3408b7ca067571aecefa2f93e1", + "rev": "4de50169adea8025743e4e8e9ac823652d30a692", "type": "github" }, "original": { @@ -188,11 +188,11 @@ ] }, "locked": { - "lastModified": 1769956244, + "lastModified": 1770766818, "narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "fe54ea85c6e4413fba03b84d50f2b431d2f7c831", + "rev": "44b928068359b7d2310a34de39555c63c93a2c90", "type": "github" }, "original": { @@ -215,11 +215,11 @@ }, "unstablePkgs": { "locked": { - "lastModified": 1770197578, - "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "lastModified": 1771848320, + "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "rev": "2fc6539b481e1d2569f25f8799236694180c0993", "type": "github" }, "original": { @@ -239,11 +239,11 @@ ] }, "locked": { - "lastModified": 1770480420, - "narHash": "sha256-zm86JvwyurSk06eZD1/Cdc4eF84gWIxeOmBJ5iUxRHw=", + "lastModified": 1772005916, + "narHash": "sha256-aFYnT0gStcu1PVTh2Xzd0n8PIEKmqvTgrVkpv49qc6M=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "d1540a889b63da17f735f1d4bebd9ebfcd7c267a", + "rev": "044299e83752f78f9fc5d6a648f7f3dd84bb3b18", "type": "github" }, "original": { From 3f3d9cde800a60b363308db2c7fd591c8a9e31bf Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 25 Mar 2026 14:31:21 -0400 Subject: [PATCH 009/236] feat(zsh) : adding function myip to zsh --- programs/shells/zsh.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/programs/shells/zsh.nix b/programs/shells/zsh.nix index 55c07f0..e0d0339 100644 --- a/programs/shells/zsh.nix +++ b/programs/shells/zsh.nix @@ -77,6 +77,10 @@ in { rm -f -- "$tmp" } + function myip(){ + echo $(ip addr show wlp0s20f3 | grep -oP 'inet \K[^/]+') + } + ''; # zstyle ':completion:*' menu no @@ -85,6 +89,7 @@ in { cfg.aliases // { yazi = "y"; + myip = "myip"; }; }; }; From 8a4be5381e1fb523bc397353ae3c2b4277128011 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 25 Mar 2026 14:31:47 -0400 Subject: [PATCH 010/236] feat(hardware) : adding usbutils for better control of usb devices --- system/hardware.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/system/hardware.nix b/system/hardware.nix index 1da6414..8b509f4 100644 --- a/system/hardware.nix +++ b/system/hardware.nix @@ -28,6 +28,7 @@ in { environment.systemPackages = with packages; [ lshw iw + usbutils ]; }; } From f210d1543a66526825c0520c0e60e5530d6e9359 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 25 Mar 2026 14:32:12 -0400 Subject: [PATCH 011/236] feat(nw) : opening port 22 --- system/networking.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/networking.nix b/system/networking.nix index 211bcc7..d14a290 100644 --- a/system/networking.nix +++ b/system/networking.nix @@ -23,7 +23,7 @@ in { firewall = rec { enable = true; # interfaces."wlp0s20f3".allowedTCPPorts = [10022]; - allowedTCPPorts = [10022]; + allowedTCPPorts = [10022 22]; allowedTCPPortRanges = [ { from = 1714; From 91695eed52d1e89dfaf78acdf388076b7681134d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 5 Apr 2026 21:24:14 -0400 Subject: [PATCH 012/236] refactor(nix-dev) : refactored nix dev into universal new format --- programs/dev/nix.nix | 28 ++++++++++++---------------- programs/dev/nix/alejandra.nix | 30 ++++++++++++++++++++++++------ programs/dev/nix/nixd.nix | 30 ++++++++++++++++++++++++------ 3 files changed, 60 insertions(+), 28 deletions(-) diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index 8a28420..0e49d4d 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -19,6 +19,7 @@ nixd.enable = cfg.enable && cfg.nixd; alejandra.enable = cfg.enable && cfg.alejandra; }; + imports = ["alejandra" "nixd"]; in { config = { homeModule = { @@ -27,19 +28,14 @@ in { ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "nixd" - "alejandra" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib; + inherit (Inputs) pkgs-list inputs; + }).config.Home) + imports; config = lib.mkIf cfg.enable { - inherit (settings) nixd alejandra; + inherit (settings) nixd alejandra; # TODO : function to inherit all settings based on imports list }; }; nixosModule = { @@ -53,12 +49,12 @@ in { ] ++ map (file: (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; + inherit config lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) + imports; config = lib.mkIf cfg.enable { - # inherit (settings); + inherit (settings) nixd alejandra; }; }; }; diff --git a/programs/dev/nix/alejandra.nix b/programs/dev/nix/alejandra.nix index 9f08d38..3fb72c7 100644 --- a/programs/dev/nix/alejandra.nix +++ b/programs/dev/nix/alejandra.nix @@ -9,14 +9,32 @@ branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures Alejandra."; }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - alejandra - ]; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + home.packages = with packages; [ + alejandra + ]; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } diff --git a/programs/dev/nix/nixd.nix b/programs/dev/nix/nixd.nix index b8195c0..c0b85e4 100644 --- a/programs/dev/nix/nixd.nix +++ b/programs/dev/nix/nixd.nix @@ -9,14 +9,32 @@ branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures Nixd."; }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - nixd - ]; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + home.packages = with packages; [ + nixd + ]; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } From 7f774d32938ff4b44405b92414eafe37f85682fa Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 7 Apr 2026 14:52:32 -0400 Subject: [PATCH 013/236] refactor(boot-dev) : refactored boot dev into universal new format --- programs/dev/boot.nix | 44 +++++++++++++++----------------- programs/dev/boot/efibootmgr.nix | 30 +++++++++++++++++----- programs/dev/boot/gparted.nix | 30 +++++++++++++++++----- programs/dev/boot/grub.nix | 30 +++++++++++++++++----- programs/dev/boot/os-prober.nix | 30 +++++++++++++++++----- 5 files changed, 117 insertions(+), 47 deletions(-) diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix index ca0d64e..8ee4e40 100644 --- a/programs/dev/boot.nix +++ b/programs/dev/boot.nix @@ -24,6 +24,12 @@ os-prober.enable = cfg.enable && cfg.os-prober; enable = cfg.enable && cfg.os-prober; }; + imports = [ + "efibootmgr" + "grub" + "gparted" + "os-prober" + ]; in { config = { homeModule = { @@ -32,19 +38,13 @@ in { ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "efibootmgr" - "grub" - "gparted" - "os-prober" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.Home) + imports; config = lib.mkIf cfg.enable { inherit (settings) efibootmgr grub gparted os-prober; }; @@ -55,17 +55,15 @@ in { ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.System) + imports; config = lib.mkIf cfg.enable { - # inherit (settings); + inherit (settings) efibootmgr os-prober grub gparted; }; }; }; diff --git a/programs/dev/boot/efibootmgr.nix b/programs/dev/boot/efibootmgr.nix index 05ad623..f089e47 100644 --- a/programs/dev/boot/efibootmgr.nix +++ b/programs/dev/boot/efibootmgr.nix @@ -9,14 +9,32 @@ branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures EFIBOOTMGR."; }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - efibootmgr - ]; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + home.packages = with packages; [ + efibootmgr + ]; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } diff --git a/programs/dev/boot/gparted.nix b/programs/dev/boot/gparted.nix index 01ba9c2..838a6e9 100644 --- a/programs/dev/boot/gparted.nix +++ b/programs/dev/boot/gparted.nix @@ -9,14 +9,32 @@ branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures GParted."; }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - gparted - ]; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + home.packages = with packages; [ + gparted + ]; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } diff --git a/programs/dev/boot/grub.nix b/programs/dev/boot/grub.nix index a2b1222..d468e68 100644 --- a/programs/dev/boot/grub.nix +++ b/programs/dev/boot/grub.nix @@ -9,14 +9,32 @@ branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures GRUB."; }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - grub2 - ]; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + home.packages = with packages; [ + grub2 + ]; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } diff --git a/programs/dev/boot/os-prober.nix b/programs/dev/boot/os-prober.nix index c17de11..f3752e4 100644 --- a/programs/dev/boot/os-prober.nix +++ b/programs/dev/boot/os-prober.nix @@ -9,14 +9,32 @@ branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures OS Prober."; }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - os-prober - ]; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + home.packages = with packages; [ + os-prober + ]; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } From 1df61465d78c9c5b8a2e093c0383c8e2b61acfbc Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 7 Apr 2026 14:55:25 -0400 Subject: [PATCH 014/236] refactor(boot-dev) : got rid of useless boot-dev.nix file --- programs/boot-dev.nix | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 programs/boot-dev.nix diff --git a/programs/boot-dev.nix b/programs/boot-dev.nix deleted file mode 100644 index f8d5a7b..0000000 --- a/programs/boot-dev.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = {}; - imports = map (file: ./boot-dev/${file}) [ - "os-prober.nix" - "efibootmgr.nix" - "grub.nix" - "gparted.nix" - ]; - config = {}; -} From db68dd3b2387dc4e5c6c19042401e6923fa6b7f6 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 7 Apr 2026 15:23:40 -0400 Subject: [PATCH 015/236] refactor(dev) : fully refactored dev -> boot-dev & nix-dev into universal new format --- programs/dev.nix | 24 ++++++++++++++++++++---- programs/dev/boot.nix | 4 ++-- programs/dev/nix.nix | 4 ++-- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/programs/dev.nix b/programs/dev.nix index 59a8aa3..3a1b10f 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -9,6 +9,10 @@ repo = "nix"; branch = "latest"; packages = pkgs-list.${repo}.${branch}; + imports = [ + "nix" + "boot" + ]; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; docker = lib.mkEnableOption "Enables and configures Docker."; @@ -72,9 +76,14 @@ in { inherit (Inputs) pkgs-list inputs; }).config.homeModule) [ "docker" - "nix" - "boot" - ]; + ] + ++ map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.Home) + imports; config = lib.mkIf cfg.enable { inherit (settings) docker dev-nix ghostty git postman vscode vim boot; home.packages = with packages; [ @@ -100,7 +109,14 @@ in { inherit (Inputs) pkgs-list inputs; }).config.nixosModule) [ "docker" - ]; + ] + ++ map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.System) + imports; config = lib.mkIf cfg.enable { inherit (settings) docker; }; diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix index 8ee4e40..f5c561d 100644 --- a/programs/dev/boot.nix +++ b/programs/dev/boot.nix @@ -32,7 +32,7 @@ ]; in { config = { - homeModule = { + Home = { lib, config, ... @@ -49,7 +49,7 @@ in { inherit (settings) efibootmgr grub gparted os-prober; }; }; - nixosModule = { + System = { lib, config, ... diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index 0e49d4d..e44d327 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -22,7 +22,7 @@ imports = ["alejandra" "nixd"]; in { config = { - homeModule = { + Home = { lib, config, ... @@ -38,7 +38,7 @@ in { inherit (settings) nixd alejandra; # TODO : function to inherit all settings based on imports list }; }; - nixosModule = { + System = { lib, config, ... From 29a44111f241887680067843249f8749454f9f69 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 7 Apr 2026 15:56:54 -0400 Subject: [PATCH 016/236] refactor(vim) : refactored vim into universal new format --- programs/dev.nix | 4 ++-- programs/dev/vim.nix | 36 +++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/programs/dev.nix b/programs/dev.nix index 3a1b10f..2815a43 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -12,6 +12,7 @@ imports = [ "nix" "boot" + "vim" ]; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; @@ -63,7 +64,6 @@ in { inherit options; imports = map (file: ./${subfolder}/${file}.nix) [ - "vim" "ghostty" "vscode" "postman" @@ -118,7 +118,7 @@ in { }).config.System) imports; config = lib.mkIf cfg.enable { - inherit (settings) docker; + inherit (settings) docker vim; }; }; }; diff --git a/programs/dev/vim.nix b/programs/dev/vim.nix index 755c97d..d45443c 100644 --- a/programs/dev/vim.nix +++ b/programs/dev/vim.nix @@ -8,19 +8,37 @@ main-repo = "nix"; branch = "latest"; cfg = config.${name}; -in { options.${name} = { enable = lib.mkEnableOption "Enables and configures Vim."; }; - imports = []; - config = lib.mkIf cfg.enable { - programs.vim = { - enable = true; - defaultEditor = true; - settings = { - copyindent = true; - number = true; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + programs.vim = { + enable = true; + defaultEditor = true; + settings = { + copyindent = true; + number = true; + }; + }; }; }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } From dda28e9f81cc00423da4743ffbcb096f618a71fe Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 7 Apr 2026 16:43:50 -0400 Subject: [PATCH 017/236] refactor(docker) : refactored docker into universal new format --- programs/dev.nix | 5 +++-- programs/dev/docker.nix | 23 +++-------------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/programs/dev.nix b/programs/dev.nix index 2815a43..07c01d8 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -13,6 +13,7 @@ "nix" "boot" "vim" + "docker" ]; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; @@ -75,7 +76,7 @@ in { inherit lib; inherit (Inputs) pkgs-list inputs; }).config.homeModule) [ - "docker" + # "docker" ] ++ map (file: (import ./${subfolder}/${file}.nix { @@ -108,7 +109,7 @@ in { inherit lib; inherit (Inputs) pkgs-list inputs; }).config.nixosModule) [ - "docker" + # "docker" ] ++ map (file: (import ./${subfolder}/${file}.nix { diff --git a/programs/dev/docker.nix b/programs/dev/docker.nix index f792a67..f14904b 100644 --- a/programs/dev/docker.nix +++ b/programs/dev/docker.nix @@ -15,43 +15,26 @@ cfg = config.${name}; in { config = { - homeModule = { + Home = { lib, config, ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; config = lib.mkIf cfg.enable { home.packages = with packages; [ + docker docker-compose lazydocker ]; }; }; - nixosModule = { + System = { lib, config, ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; config = lib.mkIf cfg.enable { virtualisation.docker.enable = true; }; From 44c0251e6ccafad75f8ff3d5011dbb1b47d7b1b3 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 7 Apr 2026 17:49:13 -0400 Subject: [PATCH 018/236] refactor(ghostty) : refactored ghostty into universal new format --- programs/dev.nix | 3 ++- programs/dev/ghostty.nix | 42 ++++++++++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/programs/dev.nix b/programs/dev.nix index 07c01d8..85c4fd5 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -14,6 +14,7 @@ "boot" "vim" "docker" + "ghostty" ]; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; @@ -65,7 +66,7 @@ in { inherit options; imports = map (file: ./${subfolder}/${file}.nix) [ - "ghostty" + # "ghostty" "vscode" "postman" "git" diff --git a/programs/dev/ghostty.nix b/programs/dev/ghostty.nix index 358461b..0ffe8af 100644 --- a/programs/dev/ghostty.nix +++ b/programs/dev/ghostty.nix @@ -6,21 +6,39 @@ } @ Inputs: let name = "ghostty"; cfg = config.${name}; -in { options.${name} = { - enable = lib.mkEnableOption "Enables and configures Ghostty."; + enable = lib.mkEnableOption "Enables and configures ${name}"; }; - imports = []; - config = lib.mkIf cfg.enable { - programs.ghostty = { - enable = true; - enableZshIntegration = true; - installVimSyntax = true; - settings = { - working-directory = "$HOME"; - gtk-single-instance = false; - window-inherit-working-directory = true; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable { + programs.ghostty = { + enable = true; + enableZshIntegration = true; + installVimSyntax = true; + settings = { + working-directory = "$HOME"; + gtk-single-instance = false; + window-inherit-working-directory = true; + }; + }; }; }; + System = { + lib, + config, + ... + }: { + inherit options; + config = + lib.mkIf cfg.enable { + }; + }; }; } From b86c58a66628484465403f954a35022e6f16e54d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 06:56:26 -0400 Subject: [PATCH 019/236] refactor(utils) : refactored utils into tools --- tools.nix | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ utils.nix | 73 --------------------------- 2 files changed, 147 insertions(+), 73 deletions(-) create mode 100644 tools.nix delete mode 100644 utils.nix diff --git a/tools.nix b/tools.nix new file mode 100644 index 0000000..ef23825 --- /dev/null +++ b/tools.nix @@ -0,0 +1,147 @@ +{lib, ...}: let + importWithAndContextArgs = { + file, + context, + args, + }: + ( + import file + args + ).config.${ + context + }; + + importWithArgs = { + file, + args, + }: + (import file args).config; + + contextArgsImport = { + file, + context, + args, + }: + (importWithArgs { + inherit file args; + }).${ + context + }; + + defaultContextArgsImport = { + file, + context, + args, + }: { + file, + context, + }: ( + contextArgsImport file context args + ); + contextualModule = { + name, + config, + lib, + options, + import-list ? [], + context, + }: let + cfg = config.${name}; + in { + config = lib.mkIf cfg.enable { + inherit options; + imports = import-list; + }; + }; + inheritSettings = { + pathNames, + imports, + settings, + }: let + importsWithEnable = imports ++ ["enable"]; + first = lib.lists.last (lib.lists.take 1 pathNames); + last = lib.lists.last pathNames; + in + builtins.listToAttrs (map (setting: { + name = first; + value = + if (first == last) + then settings.${setting} + else + (inheritSettings { + pathNames = lib.lists.drop 1 pathNames; + imports = importsWithEnable; + settings = settings; + }); + }) + importsWithEnable); + unversialModule = { + lib, + config, + pkgs-list, + inputs, + name, + subfolder ? null, + options, + imports ? [], + settings ? {}, + pathNames ? [name], + Home ? {}, + System ? {}, + } @ Inputs: let + cfg = config.${name}; + fullPathNames = pathNames ++ [name]; + in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + imports = + if Inputs.imports + then + map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.Home) + Inputs.imports + else []; + config = + lib.mkIf cfg.enable (inheritSettings { + pathNames = fullPathNames; + imports = imports; + settings = settings; + }) + // Home; + }; + System = { + lib, + config, + ... + }: { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.System) + imports; + config = + lib.mkIf cfg.enable (inheritSettings { + pathNames = fullPathNames; + imports = imports; + settings = settings; + }) + // System; + }; + }; + }; +in { + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings; + # multiContextModule; +} diff --git a/utils.nix b/utils.nix deleted file mode 100644 index d25f3e5..0000000 --- a/utils.nix +++ /dev/null @@ -1,73 +0,0 @@ -{lib, ...}: let - importWithArgs = { - file, - context, - args, - }: - ( - import file - args - ).config.${ - context - }; - # multiContextModule = { - # lib, - # module-path, - # pkgs-list, - # name, - # subfolder ? "", - # repo ? "", - # branch ? "", - # options ? {}, - # settings ? {}, - # multiContextImports ? [], - # homeOnlyImports ? [], - # homeConfig ? {}, - # nixosOnlyImports ? [], - # nixosConfig ? {}, - # }: let - # packages = - # if repo != "" && branch != "" - # then pkgs-list.${repo}.${branch} - # else null; - # opt_path = module-path.${name}; - # cfg = options.${opt_path}; - # in { - # inherit options; - # imports = multiContextImports; - # homeModule = { - # lib, - # config, - # ... - # }: { - # imports = homeOnlyImports; - # config = lib.mkIf (cfg.enable) homeConfig; - # }; - # nixosModule = { - # lib, - # config, - # ... - # }: { - # imports = nixosOnlyImports; - # config = lib.mkIf (cfg.enable) nixosConfig; - # }; - # }; - contextualModule = { - name, - config, - lib, - options, - import-list ? [], - context, - }: let - cfg = config.${name}; - in { - config = lib.mkIf cfg.enable { - inherit options; - imports = import-list; - }; - }; -in { - inherit importWithArgs; - # multiContextModule; -} From 2c1e956604f1a07317cbef7abb933674459e378f Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 08:23:11 -0400 Subject: [PATCH 020/236] fix(tools) : fixed the added enable !!! seen an error while testing => going down the tree can lead to issue when trying to get settings --- tools.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tools.nix b/tools.nix index ef23825..2ad5d73 100644 --- a/tools.nix +++ b/tools.nix @@ -58,7 +58,6 @@ imports, settings, }: let - importsWithEnable = imports ++ ["enable"]; first = lib.lists.last (lib.lists.take 1 pathNames); last = lib.lists.last pathNames; in @@ -70,12 +69,12 @@ else (inheritSettings { pathNames = lib.lists.drop 1 pathNames; - imports = importsWithEnable; + imports = imports; settings = settings; }); }) - importsWithEnable); - unversialModule = { + imports); + universalModule = { lib, config, pkgs-list, @@ -85,12 +84,15 @@ options, imports ? [], settings ? {}, - pathNames ? [name], + oldPathNames ? [name], Home ? {}, System ? {}, } @ Inputs: let cfg = config.${name}; - fullPathNames = pathNames ++ [name]; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + options.${fullPath} = options; + settings.${fullPath} = settings; in { config = { Home = { @@ -112,7 +114,7 @@ else []; config = lib.mkIf cfg.enable (inheritSettings { - pathNames = fullPathNames; + pathNames = pathNames; imports = imports; settings = settings; }) @@ -133,7 +135,7 @@ imports; config = lib.mkIf cfg.enable (inheritSettings { - pathNames = fullPathNames; + pathNames = pathNames; imports = imports; settings = settings; }) @@ -142,6 +144,6 @@ }; }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings; + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule; # multiContextModule; } From 4cda13489cf0c7bead6a26e93ad63d356e8e6d4d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 08:31:37 -0400 Subject: [PATCH 021/236] refactor(tool) : imported inheritSettings in main and already refactored modules --- configuration.nix | 2 ++ flake.nix | 24 ++++++++++++++++++++++++ home.nix | 3 ++- programs.nix | 5 +++++ programs/dev.nix | 4 ++++ programs/dev/boot.nix | 3 ++- programs/dev/nix.nix | 3 +++ 7 files changed, 42 insertions(+), 2 deletions(-) diff --git a/configuration.nix b/configuration.nix index 867b68b..797962c 100644 --- a/configuration.nix +++ b/configuration.nix @@ -6,11 +6,13 @@ managers, nixos-version, opt, + inheritSettings, ... }: let import_with_args = file: context: (import file { inherit config lib inputs pkgs-list; + inherit inheritSettings; }).config.${ context }; diff --git a/flake.nix b/flake.nix index 11b450b..83d3818 100644 --- a/flake.nix +++ b/flake.nix @@ -91,6 +91,28 @@ plasma = Inputs.plasma-manager; }; inherit (Inputs) home-manager plasma-manager; + lib = latest.lib; + inheritSettings = { + pathNames, + imports, + settings, + }: let + first = lib.lists.last (lib.lists.take 1 pathNames); + last = lib.lists.last pathNames; + in + builtins.listToAttrs (map (setting: { + name = first; + value = + if (first == last) + then settings.${setting} + else + (inheritSettings { + pathNames = lib.lists.drop 1 pathNames; + imports = imports; + settings = settings; + }); + }) + imports); opt = { programs = { enable = true; @@ -159,6 +181,7 @@ inherit managers; inherit nixos-version; inherit opt; + inherit inheritSettings; }; modules = [ ./configuration.nix @@ -171,6 +194,7 @@ inherit latest; inherit nixos-version; inherit opt; + inherit inheritSettings; }; useUserPackages = true; useGlobalPkgs = true; diff --git a/home.nix b/home.nix index 16d8f7b..58209ff 100644 --- a/home.nix +++ b/home.nix @@ -5,6 +5,7 @@ pkgs-list, nixos-version, opt, + inheritSettings, ... } @ Inputs: let folder = "programs"; @@ -12,7 +13,7 @@ in { imports = [ - (import ./programs.nix {inherit config lib inputs pkgs-list;}).config.homeModule + (import ./programs.nix {inherit config lib inputs pkgs-list inheritSettings;}).config.homeModule ] ++ [ pkgs-list.others.zen-browser.homeModules.beta diff --git a/programs.nix b/programs.nix index ded48b9..3ef97fc 100644 --- a/programs.nix +++ b/programs.nix @@ -2,6 +2,7 @@ config, lib, pkgs-list, + inheritSettings, ... } @ Inputs: let name = "programs"; @@ -133,6 +134,8 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; + inherit inheritSettings; }).config.homeModule) ["dev" "misc" "shells" "office" "browsers" "desktop"]; config = lib.mkIf cfg.enable { inherit (settings) dev shells misc office browsers desktop; @@ -161,6 +164,8 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; + inherit (Inputs) inheritSettings; }).config.nixosModule) ["dev" "misc" "shells" "office" "desktop"]; config = lib.mkIf cfg.enable { inherit (settings) dev shells misc office desktop; diff --git a/programs/dev.nix b/programs/dev.nix index 85c4fd5..298bdc1 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -76,6 +76,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.homeModule) [ # "docker" ] @@ -84,6 +85,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.Home) imports; config = lib.mkIf cfg.enable { @@ -109,6 +111,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.nixosModule) [ # "docker" ] @@ -117,6 +120,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.System) imports; config = lib.mkIf cfg.enable { diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix index f5c561d..7837479 100644 --- a/programs/dev/boot.nix +++ b/programs/dev/boot.nix @@ -22,7 +22,6 @@ grub.enable = cfg.enable && cfg.grub; gparted.enable = cfg.enable && cfg.gparted; os-prober.enable = cfg.enable && cfg.os-prober; - enable = cfg.enable && cfg.os-prober; }; imports = [ "efibootmgr" @@ -43,6 +42,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.Home) imports; config = lib.mkIf cfg.enable { @@ -60,6 +60,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.System) imports; config = lib.mkIf cfg.enable { diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index e44d327..1838348 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -2,6 +2,7 @@ config, lib, pkgs-list, + inheritSettings, ... } @ Inputs: let name = "dev-nix"; @@ -32,6 +33,7 @@ in { (import ./${subfolder}/${file}.nix { inherit config lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.Home) imports; config = lib.mkIf cfg.enable { @@ -51,6 +53,7 @@ in { (import ./${subfolder}/${file}.nix { inherit config lib; inherit (Inputs) pkgs-list inputs; + inherit (Inputs) inheritSettings; }).config.System) imports; config = lib.mkIf cfg.enable { From f8573282fd5280b8ddaa76cb207a5b08e919711e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 08:33:11 -0400 Subject: [PATCH 022/236] refactor(dev-nix) : refactored options/settings to get only dev-nix instead of nix --- flake.nix | 2 +- programs.nix | 10 +++++----- programs/dev.nix | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/flake.nix b/flake.nix index 83d3818..376f800 100644 --- a/flake.nix +++ b/flake.nix @@ -144,7 +144,7 @@ gparted = true; os-prober = true; }; - nix = { + dev-nix = { enable = true; nixd = true; alejandra = true; diff --git a/programs.nix b/programs.nix index 3ef97fc..eadedd2 100644 --- a/programs.nix +++ b/programs.nix @@ -38,7 +38,7 @@ type = lib.types.attrsOf lib.types.bool; description = "Enables and configures boot related tools."; }; - nix = lib.mkOption { + dev-nix = lib.mkOption { type = lib.types.attrsOf lib.types.bool; description = "Enables and configures Nix related tools."; }; @@ -73,10 +73,10 @@ gparted = enable && cfg.dev.boot.gparted; os-prober = enable && cfg.dev.boot.os-prober; }; - nix = rec { - enable = cfg.enable && cfg.dev.nix.enable; - nixd = enable && cfg.dev.nix.nixd; - alejandra = enable && cfg.dev.nix.alejandra; +dev-nix = rec { + enable = cfg.enable && cfg.dev.dev-nix.enable; + nixd = enable && cfg.dev.dev-nix.nixd; + alejandra = enable && cfg.dev.dev-nix.alejandra; }; network = cfg.enable && cfg.dev.network; git = cfg.enable && cfg.dev.git; diff --git a/programs/dev.nix b/programs/dev.nix index 298bdc1..5b2d575 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -23,7 +23,7 @@ type = lib.types.attrsOf lib.types.bool; description = "Enables and configures boot related tools."; }; - nix = lib.mkOption { + dev-nix = lib.mkOption { type = lib.types.attrsOf lib.types.bool; description = "Enables and configures Nix related tools."; }; @@ -45,9 +45,9 @@ os-prober = cfg.enable && cfg.boot.os-prober; }; dev-nix = { - enable = cfg.enable && cfg.nix.enable; - nixd = cfg.enable && cfg.nix.nixd; - alejandra = cfg.enable && cfg.nix.alejandra; + enable = cfg.enable && cfg.dev-nix.enable; + nixd = cfg.enable && cfg.dev-nix.nixd; + alejandra = cfg.enable && cfg.dev-nix.alejandra; }; # network.enable = cfg.enable && cfg.network; ghostty.enable = cfg.enable && cfg.ghostty; From 1c07af4b7711e20bd0c63e0b9bbae218bc50aea8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 08:36:29 -0400 Subject: [PATCH 023/236] feat(dev-nix) : added the path fields for later refactors --- programs.nix | 5 ++++- programs/dev.nix | 7 +++++++ programs/dev/boot.nix | 4 ++++ programs/dev/boot/efibootmgr.nix | 4 +++- programs/dev/nix.nix | 5 +++++ programs/dev/nix/nixd.nix | 5 ++++- 6 files changed, 27 insertions(+), 3 deletions(-) diff --git a/programs.nix b/programs.nix index eadedd2..8b914d2 100644 --- a/programs.nix +++ b/programs.nix @@ -10,6 +10,9 @@ repo = "nix"; branch = "latest"; packages = pkgs-list.${repo}.${branch}; + oldPathNames = []; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; shells = { @@ -73,7 +76,7 @@ gparted = enable && cfg.dev.boot.gparted; os-prober = enable && cfg.dev.boot.os-prober; }; -dev-nix = rec { + dev-nix = rec { enable = cfg.enable && cfg.dev.dev-nix.enable; nixd = enable && cfg.dev.dev-nix.nixd; alejandra = enable && cfg.dev.dev-nix.alejandra; diff --git a/programs/dev.nix b/programs/dev.nix index 5b2d575..94cd3e7 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -2,6 +2,7 @@ config, lib, pkgs-list, + oldPathNames, ... } @ Inputs: let name = "dev"; @@ -16,6 +17,8 @@ "docker" "ghostty" ]; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; docker = lib.mkEnableOption "Enables and configures Docker."; @@ -76,6 +79,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.homeModule) [ # "docker" @@ -85,6 +89,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.Home) imports; @@ -111,6 +116,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.nixosModule) [ # "docker" @@ -120,6 +126,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.System) imports; diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix index 7837479..53af12a 100644 --- a/programs/dev/boot.nix +++ b/programs/dev/boot.nix @@ -2,6 +2,7 @@ config, lib, pkgs-list, + oldPathNames, ... } @ Inputs: let name = "boot"; @@ -29,6 +30,7 @@ "gparted" "os-prober" ]; + pathNames = oldPathNames ++ [name]; in { config = { Home = { @@ -42,6 +44,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.Home) imports; @@ -60,6 +63,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.System) imports; diff --git a/programs/dev/boot/efibootmgr.nix b/programs/dev/boot/efibootmgr.nix index f089e47..35add86 100644 --- a/programs/dev/boot/efibootmgr.nix +++ b/programs/dev/boot/efibootmgr.nix @@ -1,13 +1,15 @@ { config, lib, - inputs, + oldPathNames, ... } @ Inputs: let name = "efibootmgr"; main-repo = "nix"; branch = "latest"; packages = Inputs.pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; cfg = config.${name}; options.${name} = { enable = lib.mkEnableOption "Enables and configures EFIBOOTMGR."; diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index 1838348..f39ec3e 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -3,6 +3,7 @@ lib, pkgs-list, inheritSettings, + oldPathNames, ... } @ Inputs: let name = "dev-nix"; @@ -10,6 +11,8 @@ # repo = ""; # branch = ""; # packages = pkgs-list.${repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; nixd = lib.mkEnableOption "Enables and configures Nixd."; @@ -33,6 +36,7 @@ in { (import ./${subfolder}/${file}.nix { inherit config lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.Home) imports; @@ -53,6 +57,7 @@ in { (import ./${subfolder}/${file}.nix { inherit config lib; inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; inherit (Inputs) inheritSettings; }).config.System) imports; diff --git a/programs/dev/nix/nixd.nix b/programs/dev/nix/nixd.nix index c0b85e4..504ba9c 100644 --- a/programs/dev/nix/nixd.nix +++ b/programs/dev/nix/nixd.nix @@ -1,12 +1,15 @@ { config, lib, - inputs, + pkgs-list, + oldPathNames, ... } @ Inputs: let name = "nixd"; main-repo = "nix"; branch = "latest"; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; options.${name} = { From c244aefc824294739bc33a48a01e12bff804c39c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 08:37:25 -0400 Subject: [PATCH 024/236] fix(efi) : fixed a weird choice of input parameters in efibootmgr --- programs/dev/boot/efibootmgr.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/programs/dev/boot/efibootmgr.nix b/programs/dev/boot/efibootmgr.nix index 35add86..6702f4e 100644 --- a/programs/dev/boot/efibootmgr.nix +++ b/programs/dev/boot/efibootmgr.nix @@ -1,13 +1,14 @@ { config, lib, + pkgs-list, oldPathNames, ... } @ Inputs: let name = "efibootmgr"; main-repo = "nix"; branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; + packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.${name}; From af2ebd15911202b0d92868694eafa763ecbe4efe Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 11:44:56 -0400 Subject: [PATCH 025/236] refactor(flake) : unifying the use of settings instead of opt for flake --- configuration.nix | 4 ++-- flake.nix | 6 +++--- home.nix | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/configuration.nix b/configuration.nix index 797962c..eccb178 100644 --- a/configuration.nix +++ b/configuration.nix @@ -5,7 +5,7 @@ pkgs-list, managers, nixos-version, - opt, + settings, inheritSettings, ... }: let @@ -28,7 +28,7 @@ in { ./programs.nix "nixosModule") ]; - inherit (opt) programs; + inherit (settings) programs; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; system.version = nixos-version; diff --git a/flake.nix b/flake.nix index 376f800..0008e7a 100644 --- a/flake.nix +++ b/flake.nix @@ -113,7 +113,7 @@ }); }) imports); - opt = { + settings = { programs = { enable = true; shells = { @@ -180,7 +180,7 @@ inherit Inputs; inherit managers; inherit nixos-version; - inherit opt; + inherit settings; inherit inheritSettings; }; modules = [ @@ -193,7 +193,7 @@ inherit pkgs-list; inherit latest; inherit nixos-version; - inherit opt; + inherit settings; inherit inheritSettings; }; useUserPackages = true; diff --git a/home.nix b/home.nix index 58209ff..672ac28 100644 --- a/home.nix +++ b/home.nix @@ -4,7 +4,7 @@ inputs, pkgs-list, nixos-version, - opt, + settings, inheritSettings, ... } @ Inputs: let @@ -18,7 +18,7 @@ in { ++ [ pkgs-list.others.zen-browser.homeModules.beta ]; - inherit (opt) programs; + inherit (settings) programs; home.stateVersion = nixos-version; home.username = "matthieu"; From 4abdb0857d4b0ccd3f2f23acd8fadcd6bbdd8dc7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 12:54:31 -0400 Subject: [PATCH 026/236] fix(flake) : managed to import tools instead of one function -> next commit : get rid of inheritSettings and transmit only tools --- configuration.nix | 3 +++ flake.nix | 5 +++++ home.nix | 3 ++- programs.nix | 3 +++ programs/dev.nix | 5 +++++ programs/dev/nix.nix | 3 +++ 6 files changed, 21 insertions(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index eccb178..5577962 100644 --- a/configuration.nix +++ b/configuration.nix @@ -7,15 +7,18 @@ nixos-version, settings, inheritSettings, + tools, ... }: let import_with_args = file: context: (import file { inherit config lib inputs pkgs-list; inherit inheritSettings; + inherit tools; }).config.${ context }; + test = tools.inheritSettings; in { imports = [ diff --git a/flake.nix b/flake.nix index 0008e7a..c3e43db 100644 --- a/flake.nix +++ b/flake.nix @@ -92,6 +92,9 @@ }; inherit (Inputs) home-manager plasma-manager; lib = latest.lib; + tools = import ./tools.nix { + inherit lib; + }; inheritSettings = { pathNames, imports, @@ -182,6 +185,7 @@ inherit nixos-version; inherit settings; inherit inheritSettings; + inherit tools; }; modules = [ ./configuration.nix @@ -195,6 +199,7 @@ inherit nixos-version; inherit settings; inherit inheritSettings; + inherit tools; }; useUserPackages = true; useGlobalPkgs = true; diff --git a/home.nix b/home.nix index 672ac28..b1edd00 100644 --- a/home.nix +++ b/home.nix @@ -6,6 +6,7 @@ nixos-version, settings, inheritSettings, + tools, ... } @ Inputs: let folder = "programs"; @@ -13,7 +14,7 @@ in { imports = [ - (import ./programs.nix {inherit config lib inputs pkgs-list inheritSettings;}).config.homeModule + (import ./programs.nix {inherit config lib inputs pkgs-list inheritSettings tools;}).config.homeModule ] ++ [ pkgs-list.others.zen-browser.homeModules.beta diff --git a/programs.nix b/programs.nix index 8b914d2..9eedbf7 100644 --- a/programs.nix +++ b/programs.nix @@ -3,6 +3,7 @@ lib, pkgs-list, inheritSettings, + tools, ... } @ Inputs: let name = "programs"; @@ -137,6 +138,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; + inherit tools; oldPathNames = pathNames; inherit inheritSettings; }).config.homeModule) ["dev" "misc" "shells" "office" "browsers" "desktop"]; @@ -169,6 +171,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.nixosModule) ["dev" "misc" "shells" "office" "desktop"]; config = lib.mkIf cfg.enable { inherit (settings) dev shells misc office desktop; diff --git a/programs/dev.nix b/programs/dev.nix index 94cd3e7..2463c52 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -3,6 +3,7 @@ lib, pkgs-list, oldPathNames, + tools, ... } @ Inputs: let name = "dev"; @@ -81,6 +82,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.homeModule) [ # "docker" ] @@ -91,6 +93,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.Home) imports; config = lib.mkIf cfg.enable { @@ -118,6 +121,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.nixosModule) [ # "docker" ] @@ -128,6 +132,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.System) imports; config = lib.mkIf cfg.enable { diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index f39ec3e..2a85c64 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -4,6 +4,7 @@ pkgs-list, inheritSettings, oldPathNames, + tools, ... } @ Inputs: let name = "dev-nix"; @@ -38,6 +39,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.Home) imports; config = lib.mkIf cfg.enable { @@ -59,6 +61,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit (Inputs) inheritSettings; + inherit tools; }).config.System) imports; config = lib.mkIf cfg.enable { From 0b5be88995d5b0f183672a0389e7f029fb0af4fe Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 13:28:34 -0400 Subject: [PATCH 027/236] refactor(tools) : using tools instead of the function itself --- configuration.nix | 2 -- flake.nix | 23 ----------------------- home.nix | 3 +-- programs.nix | 3 --- programs/dev.nix | 2 -- programs/dev/nix.nix | 3 --- 6 files changed, 1 insertion(+), 35 deletions(-) diff --git a/configuration.nix b/configuration.nix index 5577962..db8ddf6 100644 --- a/configuration.nix +++ b/configuration.nix @@ -6,14 +6,12 @@ managers, nixos-version, settings, - inheritSettings, tools, ... }: let import_with_args = file: context: (import file { inherit config lib inputs pkgs-list; - inherit inheritSettings; inherit tools; }).config.${ context diff --git a/flake.nix b/flake.nix index c3e43db..dfaf42e 100644 --- a/flake.nix +++ b/flake.nix @@ -95,27 +95,6 @@ tools = import ./tools.nix { inherit lib; }; - inheritSettings = { - pathNames, - imports, - settings, - }: let - first = lib.lists.last (lib.lists.take 1 pathNames); - last = lib.lists.last pathNames; - in - builtins.listToAttrs (map (setting: { - name = first; - value = - if (first == last) - then settings.${setting} - else - (inheritSettings { - pathNames = lib.lists.drop 1 pathNames; - imports = imports; - settings = settings; - }); - }) - imports); settings = { programs = { enable = true; @@ -184,7 +163,6 @@ inherit managers; inherit nixos-version; inherit settings; - inherit inheritSettings; inherit tools; }; modules = [ @@ -198,7 +176,6 @@ inherit latest; inherit nixos-version; inherit settings; - inherit inheritSettings; inherit tools; }; useUserPackages = true; diff --git a/home.nix b/home.nix index b1edd00..931f1ad 100644 --- a/home.nix +++ b/home.nix @@ -5,7 +5,6 @@ pkgs-list, nixos-version, settings, - inheritSettings, tools, ... } @ Inputs: let @@ -14,7 +13,7 @@ in { imports = [ - (import ./programs.nix {inherit config lib inputs pkgs-list inheritSettings tools;}).config.homeModule + (import ./programs.nix {inherit config lib inputs pkgs-list tools;}).config.homeModule ] ++ [ pkgs-list.others.zen-browser.homeModules.beta diff --git a/programs.nix b/programs.nix index 9eedbf7..cbc422c 100644 --- a/programs.nix +++ b/programs.nix @@ -2,7 +2,6 @@ config, lib, pkgs-list, - inheritSettings, tools, ... } @ Inputs: let @@ -140,7 +139,6 @@ in { inherit (Inputs) pkgs-list inputs; inherit tools; oldPathNames = pathNames; - inherit inheritSettings; }).config.homeModule) ["dev" "misc" "shells" "office" "browsers" "desktop"]; config = lib.mkIf cfg.enable { inherit (settings) dev shells misc office browsers desktop; @@ -170,7 +168,6 @@ in { inherit lib; inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; inherit tools; }).config.nixosModule) ["dev" "misc" "shells" "office" "desktop"]; config = lib.mkIf cfg.enable { diff --git a/programs/dev.nix b/programs/dev.nix index 2463c52..4d451b2 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -81,7 +81,6 @@ in { inherit lib; inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; inherit tools; }).config.homeModule) [ # "docker" @@ -92,7 +91,6 @@ in { inherit lib; inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; inherit tools; }).config.Home) imports; diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index 2a85c64..f4f651a 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -2,7 +2,6 @@ config, lib, pkgs-list, - inheritSettings, oldPathNames, tools, ... @@ -38,7 +37,6 @@ in { inherit config lib; inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; inherit tools; }).config.Home) imports; @@ -60,7 +58,6 @@ in { inherit config lib; inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; inherit tools; }).config.System) imports; From 04fe671e92b492eb815f2bdbafdda854c7fe2ad2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 13:33:21 -0400 Subject: [PATCH 028/236] refactor(programs) : use progs instead of programs to avoid conflicts --- configuration.nix | 4 ++-- flake.nix | 2 +- home.nix | 4 ++-- programs.nix => progs.nix | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename programs.nix => progs.nix (99%) diff --git a/configuration.nix b/configuration.nix index db8ddf6..3f319b7 100644 --- a/configuration.nix +++ b/configuration.nix @@ -26,10 +26,10 @@ in { ] ++ [ (import_with_args - ./programs.nix + ./progs.nix "nixosModule") ]; - inherit (settings) programs; + inherit (settings) progs; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; system.version = nixos-version; diff --git a/flake.nix b/flake.nix index dfaf42e..e3a3d14 100644 --- a/flake.nix +++ b/flake.nix @@ -96,7 +96,7 @@ inherit lib; }; settings = { - programs = { + progs = { enable = true; shells = { enable = true; diff --git a/home.nix b/home.nix index 931f1ad..688d21f 100644 --- a/home.nix +++ b/home.nix @@ -13,12 +13,12 @@ in { imports = [ - (import ./programs.nix {inherit config lib inputs pkgs-list tools;}).config.homeModule + (import ./progs.nix {inherit config lib inputs pkgs-list tools;}).config.homeModule ] ++ [ pkgs-list.others.zen-browser.homeModules.beta ]; - inherit (settings) programs; + inherit (settings) progs; home.stateVersion = nixos-version; home.username = "matthieu"; diff --git a/programs.nix b/progs.nix similarity index 99% rename from programs.nix rename to progs.nix index cbc422c..692aa96 100644 --- a/programs.nix +++ b/progs.nix @@ -5,7 +5,7 @@ tools, ... } @ Inputs: let - name = "programs"; + name = "progs"; subfolder = "programs"; repo = "nix"; branch = "latest"; From a97b9df73e345c96abf99be6b21dc03970a7c5dc Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 13:34:59 -0400 Subject: [PATCH 029/236] clean(dirt) : some rest of the last test --- configuration.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 3f319b7..2c1cc90 100644 --- a/configuration.nix +++ b/configuration.nix @@ -16,7 +16,6 @@ }).config.${ context }; - test = tools.inheritSettings; in { imports = [ From b0457a04f0904a6bcf7ad7fcc81c9ee6844e919e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 13:39:36 -0400 Subject: [PATCH 030/236] refactor(homeModule) : from homeModule to Home --- home.nix | 2 +- programs/browsers.nix | 4 ++-- programs/browsers/multifirefox.nix | 4 ++-- programs/desktop.nix | 4 ++-- programs/desktop/kde.nix | 4 ++-- programs/desktop/plasma.nix | 4 ++-- programs/dev.nix | 4 ++-- programs/dev/network.nix | 4 ++-- programs/misc.nix | 4 ++-- programs/misc/kdeconnect.nix | 4 ++-- programs/misc/ledger.nix | 4 ++-- programs/office.nix | 4 ++-- programs/shells.nix | 4 ++-- programs/shells/zsh.nix | 2 +- progs.nix | 4 ++-- templates/universal/multi.nix | 4 ++-- 16 files changed, 30 insertions(+), 30 deletions(-) diff --git a/home.nix b/home.nix index 688d21f..25b1e69 100644 --- a/home.nix +++ b/home.nix @@ -13,7 +13,7 @@ in { imports = [ - (import ./progs.nix {inherit config lib inputs pkgs-list tools;}).config.homeModule + (import ./progs.nix {inherit config lib inputs pkgs-list tools;}).config.Home ] ++ [ pkgs-list.others.zen-browser.homeModules.beta diff --git a/programs/browsers.nix b/programs/browsers.nix index 87b7145..8b19a98 100644 --- a/programs/browsers.nix +++ b/programs/browsers.nix @@ -21,7 +21,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -38,7 +38,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { inherit (settings) firefox chromium; }; diff --git a/programs/browsers/multifirefox.nix b/programs/browsers/multifirefox.nix index 41ce1b0..77e86b2 100644 --- a/programs/browsers/multifirefox.nix +++ b/programs/browsers/multifirefox.nix @@ -17,7 +17,7 @@ # }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -31,7 +31,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { # inherit (settings); }; diff --git a/programs/desktop.nix b/programs/desktop.nix index f146455..19d001d 100644 --- a/programs/desktop.nix +++ b/programs/desktop.nix @@ -39,7 +39,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -55,7 +55,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) [ + }).config.Home) [ "plasma" ]; config = lib.mkIf cfg.enable { diff --git a/programs/desktop/kde.nix b/programs/desktop/kde.nix index f4806f6..72fa3ed 100644 --- a/programs/desktop/kde.nix +++ b/programs/desktop/kde.nix @@ -21,7 +21,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -36,7 +36,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) [ + }).config.Home) [ "plasma" ]; config = lib.mkIf cfg.enable { diff --git a/programs/desktop/plasma.nix b/programs/desktop/plasma.nix index 2c87174..6371673 100644 --- a/programs/desktop/plasma.nix +++ b/programs/desktop/plasma.nix @@ -17,7 +17,7 @@ # }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -31,7 +31,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { # inherit (settings); programs.plasma = { diff --git a/programs/dev.nix b/programs/dev.nix index 4d451b2..43d85a0 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -62,7 +62,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -82,7 +82,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit tools; - }).config.homeModule) [ + }).config.Home) [ # "docker" ] ++ map (file: diff --git a/programs/dev/network.nix b/programs/dev/network.nix index cb8f8b6..24167c1 100644 --- a/programs/dev/network.nix +++ b/programs/dev/network.nix @@ -17,7 +17,7 @@ # }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -31,7 +31,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { imports = with packages; [ netcat-openbsd diff --git a/programs/misc.nix b/programs/misc.nix index d5a4d98..7a028a5 100644 --- a/programs/misc.nix +++ b/programs/misc.nix @@ -31,7 +31,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -50,7 +50,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) ["ledger" "kdeconnect"]; + }).config.Home) ["ledger" "kdeconnect"]; config = lib.mkIf cfg.enable { inherit (settings) ledger bambu-studio bitwarden fastfetch iso-image-writer vesktop kdeconnect; }; diff --git a/programs/misc/kdeconnect.nix b/programs/misc/kdeconnect.nix index eda976e..1260bf2 100644 --- a/programs/misc/kdeconnect.nix +++ b/programs/misc/kdeconnect.nix @@ -32,7 +32,7 @@ # }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -46,7 +46,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { # inherit (settings); services.${name}.enable = true; diff --git a/programs/misc/ledger.nix b/programs/misc/ledger.nix index 420a0d4..a44789c 100644 --- a/programs/misc/ledger.nix +++ b/programs/misc/ledger.nix @@ -17,7 +17,7 @@ # }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -31,7 +31,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { # inherit (settings); home.packages = with packages; [ diff --git a/programs/office.nix b/programs/office.nix index d4b7413..3074a1b 100644 --- a/programs/office.nix +++ b/programs/office.nix @@ -25,7 +25,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -41,7 +41,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { inherit (settings) libreoffice qualculate; }; diff --git a/programs/shells.nix b/programs/shells.nix index fc1df38..cceaf90 100644 --- a/programs/shells.nix +++ b/programs/shells.nix @@ -23,7 +23,7 @@ }; in { config = { - homeModule = { + Home = { config, lib, ... @@ -34,7 +34,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule + }).config.Home ]; config = { inherit (settings) zsh; diff --git a/programs/shells/zsh.nix b/programs/shells/zsh.nix index e0d0339..21c7e2c 100644 --- a/programs/shells/zsh.nix +++ b/programs/shells/zsh.nix @@ -26,7 +26,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... diff --git a/progs.nix b/progs.nix index 692aa96..9014d01 100644 --- a/progs.nix +++ b/progs.nix @@ -121,7 +121,7 @@ }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -139,7 +139,7 @@ in { inherit (Inputs) pkgs-list inputs; inherit tools; oldPathNames = pathNames; - }).config.homeModule) ["dev" "misc" "shells" "office" "browsers" "desktop"]; + }).config.Home) ["dev" "misc" "shells" "office" "browsers" "desktop"]; config = lib.mkIf cfg.enable { inherit (settings) dev shells misc office browsers desktop; programs = { diff --git a/templates/universal/multi.nix b/templates/universal/multi.nix index cf46dc9..2a790d4 100644 --- a/templates/universal/multi.nix +++ b/templates/universal/multi.nix @@ -17,7 +17,7 @@ # }; in { config = { - homeModule = { + Home = { lib, config, ... @@ -31,7 +31,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; + }).config.Home) []; config = lib.mkIf cfg.enable { # inherit (settings); }; From bb5504422f3d174d738815e8218744c7b60864fe Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 13:42:53 -0400 Subject: [PATCH 031/236] refactor(nixosModule) : from nixosModule to System --- configuration.nix | 2 +- programs/browsers.nix | 4 ++-- programs/browsers/multifirefox.nix | 4 ++-- programs/desktop.nix | 4 ++-- programs/desktop/kde.nix | 4 ++-- programs/desktop/plasma.nix | 4 ++-- programs/dev.nix | 4 ++-- programs/dev/network.nix | 4 ++-- programs/misc.nix | 4 ++-- programs/misc/kdeconnect.nix | 4 ++-- programs/misc/ledger.nix | 4 ++-- programs/office.nix | 4 ++-- programs/shells.nix | 4 ++-- programs/shells/zsh.nix | 2 +- progs.nix | 4 ++-- templates/universal/multi.nix | 4 ++-- 16 files changed, 30 insertions(+), 30 deletions(-) diff --git a/configuration.nix b/configuration.nix index 2c1cc90..582ce50 100644 --- a/configuration.nix +++ b/configuration.nix @@ -26,7 +26,7 @@ in { ++ [ (import_with_args ./progs.nix - "nixosModule") + "System") ]; inherit (settings) progs; diff --git a/programs/browsers.nix b/programs/browsers.nix index 8b19a98..6b5a9a7 100644 --- a/programs/browsers.nix +++ b/programs/browsers.nix @@ -43,7 +43,7 @@ in { inherit (settings) firefox chromium; }; }; - nixosModule = { + System = { lib, config, ... @@ -57,7 +57,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings); }; diff --git a/programs/browsers/multifirefox.nix b/programs/browsers/multifirefox.nix index 77e86b2..0e3b1b9 100644 --- a/programs/browsers/multifirefox.nix +++ b/programs/browsers/multifirefox.nix @@ -36,7 +36,7 @@ in { # inherit (settings); }; }; - nixosModule = { + System = { lib, config, ... @@ -50,7 +50,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings); programs.firefox = { diff --git a/programs/desktop.nix b/programs/desktop.nix index 19d001d..30f6ad4 100644 --- a/programs/desktop.nix +++ b/programs/desktop.nix @@ -62,7 +62,7 @@ in { inherit (settings) rofi plasma klassy; }; }; - nixosModule = { + System = { lib, config, ... @@ -76,7 +76,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) ["plasma"]; + }).config.System) ["plasma"]; config = lib.mkIf cfg.enable { inherit (settings) plasma; }; diff --git a/programs/desktop/kde.nix b/programs/desktop/kde.nix index 72fa3ed..3e51a2e 100644 --- a/programs/desktop/kde.nix +++ b/programs/desktop/kde.nix @@ -43,7 +43,7 @@ in { inherit (settings) plasma klassy; }; }; - nixosModule = { + System = { lib, config, ... @@ -57,7 +57,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) [ + }).config.System) [ "plasma" ]; config = lib.mkIf cfg.enable { diff --git a/programs/desktop/plasma.nix b/programs/desktop/plasma.nix index 6371673..837c4f2 100644 --- a/programs/desktop/plasma.nix +++ b/programs/desktop/plasma.nix @@ -157,7 +157,7 @@ in { ]; }; }; - nixosModule = { + System = { lib, config, ... @@ -171,7 +171,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings); services = { diff --git a/programs/dev.nix b/programs/dev.nix index 43d85a0..2ba584d 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -103,7 +103,7 @@ in { ]; }; }; - nixosModule = { + System = { lib, config, ... @@ -120,7 +120,7 @@ in { oldPathNames = pathNames; inherit (Inputs) inheritSettings; inherit tools; - }).config.nixosModule) [ + }).config.System) [ # "docker" ] ++ map (file: diff --git a/programs/dev/network.nix b/programs/dev/network.nix index 24167c1..c8d0f99 100644 --- a/programs/dev/network.nix +++ b/programs/dev/network.nix @@ -39,7 +39,7 @@ in { ]; }; }; - nixosModule = { + System = { lib, config, ... @@ -53,7 +53,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings); }; diff --git a/programs/misc.nix b/programs/misc.nix index 7a028a5..6a49956 100644 --- a/programs/misc.nix +++ b/programs/misc.nix @@ -55,7 +55,7 @@ in { inherit (settings) ledger bambu-studio bitwarden fastfetch iso-image-writer vesktop kdeconnect; }; }; - nixosModule = { + System = { lib, config, ... @@ -69,7 +69,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) ["ledger" "kdeconnect"]; + }).config.System) ["ledger" "kdeconnect"]; config = lib.mkIf cfg.enable { inherit (settings) ledger kdeconnect; }; diff --git a/programs/misc/kdeconnect.nix b/programs/misc/kdeconnect.nix index 1260bf2..b15fd59 100644 --- a/programs/misc/kdeconnect.nix +++ b/programs/misc/kdeconnect.nix @@ -52,7 +52,7 @@ in { services.${name}.enable = true; }; }; - nixosModule = { + System = { lib, config, ... @@ -66,7 +66,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { networking.firewall = rec { allowedTCPPortRanges = [ diff --git a/programs/misc/ledger.nix b/programs/misc/ledger.nix index a44789c..edaf4a2 100644 --- a/programs/misc/ledger.nix +++ b/programs/misc/ledger.nix @@ -39,7 +39,7 @@ in { ]; }; }; - nixosModule = { + System = { lib, config, ... @@ -53,7 +53,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings); hardware.ledger.enable = true; diff --git a/programs/office.nix b/programs/office.nix index 3074a1b..167c9c5 100644 --- a/programs/office.nix +++ b/programs/office.nix @@ -46,7 +46,7 @@ in { inherit (settings) libreoffice qualculate; }; }; - nixosModule = { + System = { lib, config, ... @@ -60,7 +60,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings) libreoffice qualculate; }; diff --git a/programs/shells.nix b/programs/shells.nix index cceaf90..fe0686a 100644 --- a/programs/shells.nix +++ b/programs/shells.nix @@ -40,7 +40,7 @@ in { inherit (settings) zsh; }; }; - nixosModule = { + System = { config, lib, ... @@ -51,7 +51,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule + }).config.System ]; config = { inherit (settings) zsh; diff --git a/programs/shells/zsh.nix b/programs/shells/zsh.nix index 21c7e2c..07b1492 100644 --- a/programs/shells/zsh.nix +++ b/programs/shells/zsh.nix @@ -94,7 +94,7 @@ in { }; }; }; - nixosModule = { + System = { lib, config, ... diff --git a/progs.nix b/progs.nix index 9014d01..ae8482e 100644 --- a/progs.nix +++ b/progs.nix @@ -153,7 +153,7 @@ in { # }; }; }; - nixosModule = { + System = { lib, config, ... @@ -169,7 +169,7 @@ in { inherit (Inputs) pkgs-list inputs; oldPathNames = pathNames; inherit tools; - }).config.nixosModule) ["dev" "misc" "shells" "office" "desktop"]; + }).config.System) ["dev" "misc" "shells" "office" "desktop"]; config = lib.mkIf cfg.enable { inherit (settings) dev shells misc office desktop; environment.systemPackages = with packages; [ diff --git a/templates/universal/multi.nix b/templates/universal/multi.nix index 2a790d4..222c2b4 100644 --- a/templates/universal/multi.nix +++ b/templates/universal/multi.nix @@ -36,7 +36,7 @@ in { # inherit (settings); }; }; - nixosModule = { + System = { lib, config, ... @@ -50,7 +50,7 @@ in { inherit config; inherit lib; inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; + }).config.System) []; config = lib.mkIf cfg.enable { # inherit (settings); }; From 47c969d08a9c08110488f851cd50c27adc7e96c9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 13:45:14 -0400 Subject: [PATCH 032/236] clean(flake) : cleaning mess --- flake.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/flake.nix b/flake.nix index e3a3d14..84d1c53 100644 --- a/flake.nix +++ b/flake.nix @@ -152,8 +152,6 @@ }; }; }; - testProgramOptions = { - }; in { nixosConfigurations.NixOs = latestPkgs.lib.nixosSystem { pkgs = pkgs-list.nix.latest; From 0dc487f81350a7f1a4bc2d034f4f12452f784f1e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 20:36:43 -0400 Subject: [PATCH 033/236] fix(tools) : fixed inheritSetting function --- tools.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools.nix b/tools.nix index 2ad5d73..a69ef55 100644 --- a/tools.nix +++ b/tools.nix @@ -59,12 +59,14 @@ settings, }: let first = lib.lists.last (lib.lists.take 1 pathNames); - last = lib.lists.last pathNames; in builtins.listToAttrs (map (setting: { - name = first; + name = + if (pathNames == []) + then setting + else first; value = - if (first == last) + if (pathNames == []) then settings.${setting} else (inheritSettings { @@ -74,6 +76,7 @@ }); }) imports); + universalModule = { lib, config, From 20212c3379b68285773bbdf8197152c4e196f6e7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 20:37:44 -0400 Subject: [PATCH 034/236] refactor(nix) : unified modules format --- programs/dev/nix.nix | 43 ++++++++++++++++++---------------- programs/dev/nix/alejandra.nix | 29 +++++++++++++++-------- programs/dev/nix/nixd.nix | 21 ++++++++++------- 3 files changed, 55 insertions(+), 38 deletions(-) diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index f4f651a..b3aa720 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -24,6 +24,18 @@ alejandra.enable = cfg.enable && cfg.alejandra; }; imports = ["alejandra" "nixd"]; + inheritedSettings = tools.inheritSettings { + inherit pathNames imports settings; + }; + Common = { + inherit (settings) nixd alejandra; + }; + Home = { + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -34,15 +46,12 @@ in { inherit options; imports = map (file: (import ./${subfolder}/${file}.nix { - inherit config lib; - inherit (Inputs) pkgs-list inputs; + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; oldPathNames = pathNames; - inherit tools; }).config.Home) imports; - config = lib.mkIf cfg.enable { - inherit (settings) nixd alejandra; # TODO : function to inherit all settings based on imports list - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -50,20 +59,14 @@ in { ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib; - inherit (Inputs) pkgs-list inputs; - oldPathNames = pathNames; - inherit tools; - }).config.System) - imports; - config = lib.mkIf cfg.enable { - inherit (settings) nixd alejandra; - }; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.System) + imports; + config = lib.mkIf cfg.enable SystemConfig; }; }; } diff --git a/programs/dev/nix/alejandra.nix b/programs/dev/nix/alejandra.nix index 3fb72c7..4837961 100644 --- a/programs/dev/nix/alejandra.nix +++ b/programs/dev/nix/alejandra.nix @@ -1,17 +1,32 @@ { config, lib, - inputs, + pkgs-list, + oldPathNames, + tools, ... } @ Inputs: let name = "alejandra"; main-repo = "nix"; branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; cfg = config.${name}; options.${name} = { enable = lib.mkEnableOption "Enables and configures Alejandra."; }; + Common = { + }; + Home = { + home.packages = with packages; [ + alejandra + ]; + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -20,11 +35,7 @@ in { ... }: { inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - alejandra - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -32,9 +43,7 @@ in { ... }: { inherit options; - config = - lib.mkIf cfg.enable { - }; + config = lib.mkIf cfg.enable SystemConfig; }; }; } diff --git a/programs/dev/nix/nixd.nix b/programs/dev/nix/nixd.nix index 504ba9c..9be42ce 100644 --- a/programs/dev/nix/nixd.nix +++ b/programs/dev/nix/nixd.nix @@ -3,18 +3,28 @@ lib, pkgs-list, oldPathNames, + tools, ... } @ Inputs: let name = "nixd"; main-repo = "nix"; branch = "latest"; + packages = Inputs.pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; - packages = Inputs.pkgs-list.${main-repo}.${branch}; cfg = config.${name}; + Common = {}; options.${name} = { enable = lib.mkEnableOption "Enables and configures Nixd."; }; + Home = { + home.packages = with packages; [ + nixd + ]; + }; + System = {}; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -23,11 +33,7 @@ in { ... }: { inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - nixd - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -36,8 +42,7 @@ in { }: { inherit options; config = - lib.mkIf cfg.enable { - }; + lib.mkIf cfg.enable SystemConfig; }; }; } From 0ceb4be7c486e9746390a2b96072f51992844bba Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 20:44:40 -0400 Subject: [PATCH 035/236] fix-clean(nix) : changed the place of "imports" fields --- programs/dev/nix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix index b3aa720..d2adc5d 100644 --- a/programs/dev/nix.nix +++ b/programs/dev/nix.nix @@ -13,6 +13,7 @@ # packages = pkgs-list.${repo}.${branch}; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; + imports = ["alejandra" "nixd"]; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; nixd = lib.mkEnableOption "Enables and configures Nixd."; @@ -23,7 +24,6 @@ nixd.enable = cfg.enable && cfg.nixd; alejandra.enable = cfg.enable && cfg.alejandra; }; - imports = ["alejandra" "nixd"]; inheritedSettings = tools.inheritSettings { inherit pathNames imports settings; }; From e01f2ec8055a7b7ec8587fe8e63fcdb822472f98 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Fri, 10 Apr 2026 20:51:00 -0400 Subject: [PATCH 036/236] refactor(boot) : unified modules format --- programs/dev/boot.nix | 50 ++++++++++++++++++-------------- programs/dev/boot/efibootmgr.nix | 22 +++++++++----- programs/dev/boot/gparted.nix | 29 +++++++++++------- programs/dev/boot/grub.nix | 29 +++++++++++------- programs/dev/boot/os-prober.nix | 28 ++++++++++++------ 5 files changed, 99 insertions(+), 59 deletions(-) diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix index 53af12a..f45d354 100644 --- a/programs/dev/boot.nix +++ b/programs/dev/boot.nix @@ -3,6 +3,7 @@ lib, pkgs-list, oldPathNames, + tools, ... } @ Inputs: let name = "boot"; @@ -10,6 +11,15 @@ # repo = ""; # branch = ""; # packages = pkgs-list.${repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + imports = [ + "efibootmgr" + "grub" + "gparted" + "os-prober" + ]; + cfg = config.${name}; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; efibootmgr = lib.mkEnableOption "Enables and configures efibootmgr."; @@ -17,20 +27,24 @@ gparted = lib.mkEnableOption "Enables and configures GParted."; os-prober = lib.mkEnableOption "Enables and configures os-prober."; }; - cfg = config.${name}; settings = { efibootmgr.enable = cfg.enable && cfg.efibootmgr; grub.enable = cfg.enable && cfg.grub; gparted.enable = cfg.enable && cfg.gparted; os-prober.enable = cfg.enable && cfg.os-prober; }; - imports = [ - "efibootmgr" - "grub" - "gparted" - "os-prober" - ]; - pathNames = oldPathNames ++ [name]; + inheritedSettings = tools.inheritSettings { + inherit pathNames imports settings; + }; + Common = { + inherit (settings) efibootmgr grub gparted os-prober; + }; + Home = { + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -41,16 +55,12 @@ in { inherit options; imports = map (file: (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; }).config.Home) imports; - config = lib.mkIf cfg.enable { - inherit (settings) efibootmgr grub gparted os-prober; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -60,16 +70,12 @@ in { inherit options; imports = map (file: (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; oldPathNames = pathNames; - inherit (Inputs) inheritSettings; }).config.System) imports; - config = lib.mkIf cfg.enable { - inherit (settings) efibootmgr os-prober grub gparted; - }; + config = lib.mkIf cfg.enable SystemConfig; }; }; } diff --git a/programs/dev/boot/efibootmgr.nix b/programs/dev/boot/efibootmgr.nix index 6702f4e..9a9f418 100644 --- a/programs/dev/boot/efibootmgr.nix +++ b/programs/dev/boot/efibootmgr.nix @@ -3,6 +3,7 @@ lib, pkgs-list, oldPathNames, + tools, ... } @ Inputs: let name = "efibootmgr"; @@ -15,6 +16,17 @@ options.${name} = { enable = lib.mkEnableOption "Enables and configures EFIBOOTMGR."; }; + Common = { + }; + Home = { + home.packages = with packages; [ + efibootmgr + ]; + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -23,11 +35,7 @@ in { ... }: { inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - efibootmgr - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -35,9 +43,7 @@ in { ... }: { inherit options; - config = - lib.mkIf cfg.enable { - }; + config = lib.mkIf cfg.enable SystemConfig; }; }; } diff --git a/programs/dev/boot/gparted.nix b/programs/dev/boot/gparted.nix index 838a6e9..e561da2 100644 --- a/programs/dev/boot/gparted.nix +++ b/programs/dev/boot/gparted.nix @@ -1,17 +1,32 @@ { config, lib, - inputs, + pkgs-list, + oldPathNames, + tools, ... } @ Inputs: let name = "gparted"; main-repo = "nix"; branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; cfg = config.${name}; options.${name} = { enable = lib.mkEnableOption "Enables and configures GParted."; }; + Common = { + }; + Home = { + home.packages = with packages; [ + gparted + ]; + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -20,11 +35,7 @@ in { ... }: { inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - gparted - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -32,9 +43,7 @@ in { ... }: { inherit options; - config = - lib.mkIf cfg.enable { - }; + config = lib.mkIf cfg.enable SystemConfig; }; }; } diff --git a/programs/dev/boot/grub.nix b/programs/dev/boot/grub.nix index d468e68..11253e2 100644 --- a/programs/dev/boot/grub.nix +++ b/programs/dev/boot/grub.nix @@ -1,17 +1,32 @@ { config, lib, - inputs, + pkgs-list, + oldPathNames, + tools, ... } @ Inputs: let name = "grub"; main-repo = "nix"; branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; cfg = config.${name}; options.${name} = { enable = lib.mkEnableOption "Enables and configures GRUB."; }; + Common = { + }; + Home = { + home.packages = with packages; [ + grub2 + ]; + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -20,11 +35,7 @@ in { ... }: { inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - grub2 - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -32,9 +43,7 @@ in { ... }: { inherit options; - config = - lib.mkIf cfg.enable { - }; + config = lib.mkIf cfg.enable SystemConfig; }; }; } diff --git a/programs/dev/boot/os-prober.nix b/programs/dev/boot/os-prober.nix index f3752e4..23d31f0 100644 --- a/programs/dev/boot/os-prober.nix +++ b/programs/dev/boot/os-prober.nix @@ -1,17 +1,32 @@ { config, lib, - inputs, + pkgs-list, + oldPathNames, + tools, ... } @ Inputs: let name = "os-prober"; main-repo = "nix"; branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; cfg = config.${name}; options.${name} = { enable = lib.mkEnableOption "Enables and configures OS Prober."; }; + Common = { + }; + Home = { + home.packages = with packages; [ + os-prober + ]; + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -20,11 +35,7 @@ in { ... }: { inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - os-prober - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -33,8 +44,7 @@ in { }: { inherit options; config = - lib.mkIf cfg.enable { - }; + lib.mkIf cfg.enable SystemConfig; }; }; } From 6397bdf5ac6c1eb5dbc352c15909c3b3be8489c6 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 11:35:49 -0400 Subject: [PATCH 037/236] refactor(dev) : unified dev to universal format... but stuck because of structural issue. => HUGE refactor in a new folder --- programs/dev.nix | 76 +++++++++++++++++------------------------------- 1 file changed, 27 insertions(+), 49 deletions(-) diff --git a/programs/dev.nix b/programs/dev.nix index 2ba584d..a5cf86d 100644 --- a/programs/dev.nix +++ b/programs/dev.nix @@ -60,6 +60,22 @@ vscode.enable = cfg.enable && cfg.vscode; vim.enable = cfg.enable && cfg.vim; }; + Common = { + inherit (settings) docker vim; + }; + Home = { + inherit (settings) dev-nix ghostty git postman vscode boot; + home.packages = with packages; [ + python3 + nmap # for network + netcat-openbsd # for network + ]; + }; + System = { + }; + + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -77,31 +93,12 @@ in { ] ++ map (file: (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; oldPathNames = pathNames; - inherit tools; - }).config.Home) [ - # "docker" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - oldPathNames = pathNames; - inherit tools; }).config.Home) imports; - config = lib.mkIf cfg.enable { - inherit (settings) docker dev-nix ghostty git postman vscode vim boot; - home.packages = with packages; [ - python3 - nmap # for network - netcat-openbsd # for network - ]; - }; + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -109,33 +106,14 @@ in { ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - oldPathNames = pathNames; - inherit (Inputs) inheritSettings; - inherit tools; - }).config.System) [ - # "docker" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - oldPathNames = pathNames; - inherit (Inputs) inheritSettings; - inherit tools; - }).config.System) - imports; - config = lib.mkIf cfg.enable { - inherit (settings) docker vim; - }; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.System) + imports; + config = lib.mkIf cfg.enable SystemConfig; }; }; } From 8c2e19708dd473b92f8a5560974f695a36b4ad98 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 11:43:19 -0400 Subject: [PATCH 038/236] refactor(init) : starting new arch WIP --- new_arch/configuration.nix | 41 ++ new_arch/flake.nix | 189 ++++++ new_arch/hardware-configuration.nix | 33 + new_arch/home.nix | 34 + new_arch/progs.nix | 198 ++++++ new_arch/static/grub/00_Arch_Btrfs | 38 ++ new_arch/static/grub/99_UEFI_Firmware | 3 + new_arch/static/yazi/init.lua | 1 + new_arch/static/yazi/plugins/githead/main.lua | 598 ++++++++++++++++++ .../yazi/plugins/kdeconnect-send/main.lua | 420 ++++++++++++ new_arch/system.nix | 34 + new_arch/tools.nix | 152 +++++ 12 files changed, 1741 insertions(+) create mode 100644 new_arch/configuration.nix create mode 100644 new_arch/flake.nix create mode 100644 new_arch/hardware-configuration.nix create mode 100644 new_arch/home.nix create mode 100644 new_arch/progs.nix create mode 100644 new_arch/static/grub/00_Arch_Btrfs create mode 100644 new_arch/static/grub/99_UEFI_Firmware create mode 100644 new_arch/static/yazi/init.lua create mode 100644 new_arch/static/yazi/plugins/githead/main.lua create mode 100644 new_arch/static/yazi/plugins/kdeconnect-send/main.lua create mode 100644 new_arch/system.nix create mode 100644 new_arch/tools.nix diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix new file mode 100644 index 0000000..582ce50 --- /dev/null +++ b/new_arch/configuration.nix @@ -0,0 +1,41 @@ +{ + config, + lib, + inputs, + pkgs-list, + managers, + nixos-version, + settings, + tools, + ... +}: let + import_with_args = file: context: + (import file { + inherit config lib inputs pkgs-list; + inherit tools; + }).config.${ + context + }; +in { + imports = + [ + ./hardware-configuration.nix + ./system.nix + managers.home.nixosModules.default + ] + ++ [ + (import_with_args + ./progs.nix + "System") + ]; + inherit (settings) progs; + + # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; + system.version = nixos-version; + networking.hostName = "NixOs"; + virtualisation = { + libvirtd.enable = true; + spiceUSBRedirection.enable = true; + }; + fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; +} diff --git a/new_arch/flake.nix b/new_arch/flake.nix new file mode 100644 index 0000000..84d1c53 --- /dev/null +++ b/new_arch/flake.nix @@ -0,0 +1,189 @@ +{ + description = "System flake"; + + inputs = { + unstablePkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + latestPkgs.url = "github:nixos/nixpkgs?ref=nixos-25.11"; + home-manager = { + url = "github:nix-community/home-manager/release-25.11"; + inputs.nixpkgs.follows = "latestPkgs"; + }; + nur-latest-pkgs = { + url = "github:nix-community/nur"; + inputs.nixpkgs.follows = "latestPkgs"; + }; + nur-klassy-version = { + url = "github:nix-community/nur/82a02f13454ca5b23248d9fe8fb15618a11b09f0"; + # sha256 = "0d8iwisgw15ivwbd9s041fbf33mqgccsmwxcvgwf3y84i2d1rb7a"; + }; + nur-unstable-pkgs = { + url = "github:nix-community/nur"; + inputs.nixpkgs.follows = "unstablePkgs"; + }; + zen-browser = { + url = "github:0xc000022070/zen-browser-flake"; + inputs = { + # IMPORTANT: we're using "libgbm" and is only available in unstable so ensure + # to have it up-to-date or simply don't specify the nixpkgs input + nixpkgs.follows = "unstablePkgs"; + home-manager.follows = "home-manager"; + }; + }; + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "latestPkgs"; + inputs.home-manager.follows = "home-manager"; + }; + }; + + outputs = { + self, + unstablePkgs, + latestPkgs, + ... + } @ Inputs: let + system = "x86_64-linux"; + latest-version = "25.11"; + nixos-version = latest-version; + latest = import latestPkgs { + inherit system; + ### Not sure if needed + overlays = [ + Inputs.nur-latest-pkgs.overlays.default + ]; + config = { + allowUnfree = true; + }; + }; + unstable = import unstablePkgs { + inherit system; + ### Not sure if needed + overlays = [ + Inputs.nur-unstable-pkgs.overlays.default + ]; + config = { + allowUnfree = true; + }; + }; + nix = { + latest = latest; + unstable = unstable; + }; + nur-latest = Inputs.nur-latest-pkgs.legacyPackages.${system}; + nur-unstable = Inputs.nur-unstable-pkgs.legacyPackages.${system}; + nur-klassy = Inputs.nur-klassy-version.legacyPackages.${system}; + + nur = { + latest = nur-latest; + unstable = nur-unstable; + klassy = nur-klassy; + }; + others = { + zen-browser = Inputs.zen-browser; + }; + pkgs-list = { + inherit nix; + inherit nur; + inherit others; + }; + managers = { + home = Inputs.home-manager; + plasma = Inputs.plasma-manager; + }; + inherit (Inputs) home-manager plasma-manager; + lib = latest.lib; + tools = import ./tools.nix { + inherit lib; + }; + settings = { + progs = { + enable = true; + shells = { + enable = true; + zsh = true; + }; + misc = { + enable = true; + ledger = true; + bambu-studio = true; + bitwarden = true; + fastfetch = true; + iso-image-writer = true; + vesktop = true; + kdeconnect = true; + }; + office = { + enable = true; + libreoffice = true; + qualculate = true; + }; + dev = { + enable = true; + boot = { + enable = true; + efibootmgr = true; + grub = true; + gparted = true; + os-prober = true; + }; + dev-nix = { + enable = true; + nixd = true; + alejandra = true; + }; + # network = true; + docker = true; + ghostty = true; + git = true; + postman = true; + vscode = true; + vim = true; + }; + browsers = { + enable = true; + firefox = true; + chromium = true; + }; + desktop = { + enable = true; + plasma = true; + klassy = true; + rofi = true; + }; + }; + }; + in { + nixosConfigurations.NixOs = latestPkgs.lib.nixosSystem { + pkgs = pkgs-list.nix.latest; + specialArgs = { + inherit pkgs-list; + inherit Inputs; + inherit managers; + inherit nixos-version; + inherit settings; + inherit tools; + }; + modules = [ + ./configuration.nix + home-manager.nixosModules.home-manager + { + home-manager = { + extraSpecialArgs = { + inherit Inputs; + inherit pkgs-list; + inherit latest; + inherit nixos-version; + inherit settings; + inherit tools; + }; + useUserPackages = true; + useGlobalPkgs = true; + sharedModules = [plasma-manager.homeModules.plasma-manager]; + users.matthieu = import ./home.nix; + backupFileExtension = "backup"; + }; + } + ]; + }; + }; +} diff --git a/new_arch/hardware-configuration.nix b/new_arch/hardware-configuration.nix new file mode 100644 index 0000000..852195b --- /dev/null +++ b/new_arch/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/f89049d8-5e33-4093-ace1-8efe6ea176d0"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/650D-7E4E"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/cd981a20-e577-42b8-944c-890664bdcfe5"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/new_arch/home.nix b/new_arch/home.nix new file mode 100644 index 0000000..25b1e69 --- /dev/null +++ b/new_arch/home.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + inputs, + pkgs-list, + nixos-version, + settings, + tools, + ... +} @ Inputs: let + folder = "programs"; + context = "home"; +in { + imports = + [ + (import ./progs.nix {inherit config lib inputs pkgs-list tools;}).config.Home + ] + ++ [ + pkgs-list.others.zen-browser.homeModules.beta + ]; + inherit (settings) progs; + + home.stateVersion = nixos-version; + home.username = "matthieu"; + home.homeDirectory = "/home/matthieu"; + # TODO: Move to another folder later + # home.packages = with Inputs.pkgs-list.nix.latest; [ + # ntfs3g + # ntfsprogs + # btrfs-progs + # exfat + # exfatprogs + # ]; +} diff --git a/new_arch/progs.nix b/new_arch/progs.nix new file mode 100644 index 0000000..ae8482e --- /dev/null +++ b/new_arch/progs.nix @@ -0,0 +1,198 @@ +{ + config, + lib, + pkgs-list, + tools, + ... +} @ Inputs: let + name = "progs"; + subfolder = "programs"; + repo = "nix"; + branch = "latest"; + packages = pkgs-list.${repo}.${branch}; + oldPathNames = []; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + options.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name}"; + shells = { + enable = lib.mkEnableOption "Enable various shell configurations."; + zsh = lib.mkEnableOption "Enable Zsh shell configuration."; + }; + misc = { + enable = lib.mkEnableOption "Enables and configures miscellaneous programs."; + ledger = lib.mkEnableOption "Enables and configures Ledger support."; + bambu-studio = lib.mkEnableOption "Enables and configures Bambu Studio."; + bitwarden = lib.mkEnableOption "Enables and configures Bitwarden."; + fastfetch = lib.mkEnableOption "Enables and configures Fastfetch."; + iso-image-writer = lib.mkEnableOption "Enables and configures ISO Image Writer."; + kdeconnect = lib.mkEnableOption "Enables and configures KDE Connect."; + vesktop = lib.mkEnableOption "Enables and configures Vesktop."; + }; + office = { + enable = lib.mkEnableOption "Enables and configures office applications."; + libreoffice = lib.mkEnableOption "Enables and configures LibreOffice."; + qualculate = lib.mkEnableOption "Enables and configures Qualculate."; + }; + dev = { + enable = lib.mkEnableOption "Enables and configures development tools."; + docker = lib.mkEnableOption "Enables and configures Docker."; + boot = lib.mkOption { + type = lib.types.attrsOf lib.types.bool; + description = "Enables and configures boot related tools."; + }; + dev-nix = lib.mkOption { + type = lib.types.attrsOf lib.types.bool; + description = "Enables and configures Nix related tools."; + }; + network = lib.mkEnableOption "Enables and configures Network tools."; + vim = lib.mkEnableOption "Enables and configures Vim."; + vscode = lib.mkEnableOption "Enables and configures VSCode."; + postman = lib.mkEnableOption "Enables and configures Postman."; + git = lib.mkEnableOption "Enables and configures Git."; + ghostty = lib.mkEnableOption "Enables and configures Ghostty."; + }; + browsers = { + enable = lib.mkEnableOption "Enables and configures web browsers."; + firefox = lib.mkEnableOption "Enables and configures Firefox."; + chromium = lib.mkEnableOption "Enables and configures Chromium."; + }; + desktop = { + enable = lib.mkEnableOption "Enables and configures desktop environment."; + plasma = lib.mkEnableOption "Enables and configures KDE Plasma."; + klassy = lib.mkEnableOption "Enables and configures Klassy."; + rofi = lib.mkEnableOption "Enables and configures Rofi."; + }; + }; + cfg = config.${name}; + settings = { + dev = { + enable = cfg.enable; + docker = cfg.enable && cfg.dev.docker; + boot = rec { + enable = cfg.enable && cfg.dev.boot.enable; + efibootmgr = enable && cfg.dev.boot.efibootmgr; + grub = enable && cfg.dev.boot.grub; + gparted = enable && cfg.dev.boot.gparted; + os-prober = enable && cfg.dev.boot.os-prober; + }; + dev-nix = rec { + enable = cfg.enable && cfg.dev.dev-nix.enable; + nixd = enable && cfg.dev.dev-nix.nixd; + alejandra = enable && cfg.dev.dev-nix.alejandra; + }; + network = cfg.enable && cfg.dev.network; + git = cfg.enable && cfg.dev.git; + postman = cfg.enable && cfg.dev.postman; + vscode = cfg.enable && cfg.dev.vscode; + vim = cfg.enable && cfg.dev.vim; + ghostty = cfg.enable && cfg.dev.ghostty; + }; + shells = rec { + enable = cfg.shells.enable; + zsh = enable && cfg.shells.zsh; + }; + misc = rec { + enable = cfg.misc.enable; + ledger = enable && cfg.misc.ledger; + bambu-studio = enable && cfg.misc.bambu-studio; + bitwarden = enable && cfg.misc.bitwarden; + fastfetch = enable && cfg.misc.fastfetch; + iso-image-writer = enable && cfg.misc.iso-image-writer; + kdeconnect = enable && cfg.misc.kdeconnect; + vesktop = enable && cfg.misc.vesktop; + }; + office = rec { + enable = cfg.office.enable; + libreoffice = enable && cfg.office.libreoffice; + qualculate = enable && cfg.office.qualculate; + }; + browsers = rec { + enable = cfg.browsers.enable; + firefox = enable && cfg.browsers.firefox; + chromium = enable && cfg.browsers.chromium; + }; + desktop = rec { + enable = cfg.desktop.enable; + plasma = enable && cfg.desktop.plasma; + klassy = enable && cfg.desktop.klassy; + rofi = enable && cfg.desktop.rofi; + }; + }; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + imports = + map (file: ./${subfolder}/${file}.nix) [ + # "desktop" + # "boot-dev" + ] + ++ map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + inherit tools; + oldPathNames = pathNames; + }).config.Home) ["dev" "misc" "shells" "office" "browsers" "desktop"]; + config = lib.mkIf cfg.enable { + inherit (settings) dev shells misc office browsers desktop; + programs = { + thunderbird = { + enable = true; + profiles = {}; + }; + }; + # meld = { + # enable = true; + # }; + }; + }; + System = { + lib, + config, + ... + }: { + inherit options; + imports = + map (file: ./${subfolder}/${file}.nix) [ + ] + ++ map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + oldPathNames = pathNames; + inherit tools; + }).config.System) ["dev" "misc" "shells" "office" "desktop"]; + config = lib.mkIf cfg.enable { + inherit (settings) dev shells misc office desktop; + environment.systemPackages = with packages; [ + mangohud + plocate + mlocate + xdotool + protonup-ng + meld + wget + ]; + environment.sessionVariables = { + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; + }; + programs = { + gamemode.enable = true; + steam = { + enable = true; + gamescopeSession.enable = true; + }; + virt-manager.enable = true; + }; + }; + }; + }; +} diff --git a/new_arch/static/grub/00_Arch_Btrfs b/new_arch/static/grub/00_Arch_Btrfs new file mode 100644 index 0000000..55b87fa --- /dev/null +++ b/new_arch/static/grub/00_Arch_Btrfs @@ -0,0 +1,38 @@ +menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-42020426-a6e6-4f7a-9535-81d6df53c479' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 + echo 'Loading Linux linux ...' + linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 + echo 'Loading initial ramdisk ...' + initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img +} +submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { + menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 + echo 'Loading Linux linux ...' + linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 + echo 'Loading initial ramdisk ...' + initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img + } + menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-42020426-a6e6-4f7a-9535-81d6df53c479' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 + echo 'Loading Linux linux ...' + linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 + echo 'Loading initial ramdisk ...' + initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux-fallback.img + } +} diff --git a/new_arch/static/grub/99_UEFI_Firmware b/new_arch/static/grub/99_UEFI_Firmware new file mode 100644 index 0000000..42fee81 --- /dev/null +++ b/new_arch/static/grub/99_UEFI_Firmware @@ -0,0 +1,3 @@ +menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' { + fwsetup +} diff --git a/new_arch/static/yazi/init.lua b/new_arch/static/yazi/init.lua new file mode 100644 index 0000000..3ae68e5 --- /dev/null +++ b/new_arch/static/yazi/init.lua @@ -0,0 +1 @@ +-- require("githead"):setup() \ No newline at end of file diff --git a/new_arch/static/yazi/plugins/githead/main.lua b/new_arch/static/yazi/plugins/githead/main.lua new file mode 100644 index 0000000..6c7f74d --- /dev/null +++ b/new_arch/static/yazi/plugins/githead/main.lua @@ -0,0 +1,598 @@ +---@diagnostic disable: undefined-global + +local save = ya.sync(function(this, cwd, output) + if cwd:match("%.git[/\\]") or cwd:match("%.git$") then + this.output = nil + return + end + if cx.active.current.cwd == Url(cwd) then + this.output = output + ui.render() + end +end) + +return { + setup = function(this, options) + options = options or {} + + local config = { + order = options.order or { + "__spacer__", + "branch", + "remote_branch", + "__spacer__", + "tag", + "__spacer__", + "commit", + "__spacer__", + "behind_ahead_remote", + "__spacer__", + "stashes", + "__spacer__", + "state", + "__spacer__", + "staged", + "__spacer__", + "unstaged", + "__spacer__", + "untracked", + }, + + show_numbers = options.show_numbers == nil and true + or options.show_numbers, + + show_branch = options.show_branch == nil and true or options.show_branch, + branch_prefix = options.branch_prefix or "", + branch_color = options.branch_color or "blue", + branch_symbol = options.branch_symbol or "", + branch_borders = options.branch_borders or "", + + show_remote_branch = options.show_remote_branch == nil and true + or options.show_remote_branch, + always_show_remote_branch = options.always_show_remote_branch == nil + and false + or options.always_show_remote_branch, + always_show_remote_repo = options.always_show_remote_repo == nil + and false + or options.always_show_remote_repo, + remote_branch_prefix = options.remote_branch_prefix or ":", + remote_branch_color = options.remote_branch_color or "bright magenta", + + show_tag = options.show_tag == nil and true or options.show_tag, + always_show_tag = options.always_show_tag == nil and false + or options.always_show_tag, + tag_color = options.tag_color or "magenta", + tag_symbol = options.tag_symbol == nil and "#" or options.tag_symbol, + + show_commit = options.show_commit == nil and true or options.show_commit, + always_show_commit = options.always_show_commit == nil and false + or options.always_show_commit, + commit_color = options.commit_color or "bright magenta", + commit_symbol = options.commit_symbol == nil and "@" + or options.commit_symbol, + + show_behind_ahead_remote = options.show_behind_ahead_remote == nil + and true + or options.show_behind_ahead_remote, + behind_remote_color = options.behind_remote_color or "bright magenta", + behind_remote_symbol = options.behind_remote_symbol or "⇣", + ahead_remote_color = options.ahead_remote_color or "bright magenta", + ahead_remote_symbol = options.ahead_remote_symbol or "⇡", + + show_stashes = options.show_stashes == nil and true + or options.show_stashes, + stashes_color = options.stashes_color or "bright magenta", + stashes_symbol = options.stashes_symbol or "$", + + show_state = options.show_state == nil and true or options.show_state, + show_state_prefix = options.show_state_prefix == nil and true + or options.show_state_prefix, + state_color = options.state_color or "red", + state_symbol = options.state_symbol or "~", + + show_staged = options.show_staged == nil and true or options.show_staged, + staged_color = options.staged_color or "bright yellow", + staged_symbol = options.staged_symbol or "+", + + show_unstaged = options.show_unstaged == nil and true + or options.show_unstaged, + unstaged_color = options.unstaged_color or "bright yellow", + unstaged_symbol = options.unstaged_symbol or "!", + + show_untracked = options.show_untracked == nil and true + or options.show_untracked, + untracked_color = options.untracked_color or "bright blue", + untracked_symbol = options.untracked_symbol or "?", + } + + --- @param data GitStatusData + function Header:render_branch(data) + local branch = data.branch + + if not branch then + return nil + end + + local left_border = config.branch_borders:sub(1, 1) + local right_border = config.branch_borders:sub(2, 2) + + local branch_string = "" + + if config.branch_symbol == "" then + branch_string = left_border .. branch .. right_border + else + branch_string = left_border + .. config.branch_symbol + .. branch + .. right_border + end + + local branch_prefix = config.branch_prefix == "" and "" + or config.branch_prefix .. " " + + return ui.Line({ + ui.Span(branch_prefix), + ui.Span(branch_string):fg(config.branch_color), + }) + end + + --- @param data GitStatusData + function Header:render_remote_branch(data) + local branch = data.branch + local remote_branch = data.remote_branch + local remote_repo = data.remote_repo + + if not remote_branch then + return nil + end + + local show_remote = config.always_show_remote_branch + or branch ~= remote_branch + if not show_remote then + return nil + end + + local remote_branch_label = config.always_show_remote_repo + and (remote_repo .. "/" .. remote_branch) + or remote_branch + + return ui.Line({ + ui.Span(config.remote_branch_prefix), + ui.Span(remote_branch_label):fg(config.remote_branch_color), + }) + end + + --- @param data GitStatusData + function Header:render_tag(data) + local branch = data.branch + local tag = data.tag + + if not tag then + return nil + end + + if not branch or config.always_show_tag then + return ui.Line({ + ui.Span(config.tag_symbol), + ui.Span(tag):fg(config.tag_color), + }) + end + end + + --- @param data GitStatusData + function Header:render_commit(data) + local branch = data.branch + local tag = data.tag + local commit = data.commit + + if not commit then + return nil + end + + if (not branch and not tag) or config.always_show_commit then + return ui.Line({ + ui.Span(config.commit_symbol), + ui.Span(commit):fg(config.commit_color), + }) + end + end + + --- @param data GitStatusData + function Header:render_behind_ahead_remote(data) + local behind = data.behind_remote + local ahead = data.ahead_remote + + local behind_label = behind + and behind > 0 + and ui.Span( + config.behind_remote_symbol .. (config.show_numbers and behind or "") + ):fg(config.behind_remote_color) + + local ahead_label = ahead + and ahead > 0 + and ui.Span( + config.ahead_remote_symbol .. (config.show_numbers and ahead or "") + ):fg(config.ahead_remote_color) + + if ahead_label and behind_label then + return ui.Line({ + behind_label, + ahead_label, + }) + elseif ahead_label then + return ahead_label + elseif behind_label then + return behind_label + else + return nil + end + end + + --- @param data GitStatusData + function Header:render_stashes(data) + local stashes_count = data.stashes + + if not stashes_count then + return nil + end + + local stashes_label = config.stashes_symbol + + if config.show_numbers then + stashes_label = stashes_label .. stashes_count + end + + return ui.Span(stashes_label):fg(config.stashes_color) + end + + --- @param data GitStatusData + function Header:render_state(data) + local state_prefix = data.state_prefix + local unmerged_count = data.unmerged_count + local rebase_done = data.rebase_done + local rebase_total = data.rebase_total + + if state_prefix then + local state_label = "" + if config.show_state_prefix then + state_label = state_prefix + if + state_prefix == "rebase-i" + and config.show_numbers + and rebase_done + and rebase_total + then + state_label = state_label + .. " " + .. rebase_done + .. "/" + .. rebase_total + end + end + + local unmerged_label = "" + local symbol = "" + + if unmerged_count and unmerged_count > 0 then + symbol = " " .. config.state_symbol + if config.show_numbers then + unmerged_label = tostring(unmerged_count) + end + end + + return ui.Span(state_label .. symbol .. unmerged_label) + :fg(config.state_color) + end + return nil + end + + --- @param data GitStatusData + function Header:render_staged(data) + local staged = data.staged + + if staged then + local staged_label = config.staged_symbol + + if config.show_numbers then + local filtered_staged = staged:gsub("^[%s]*%b()[%s]*", "") + + local staged_count = 0 + for line in filtered_staged:gmatch("[^\r\n]+") do + if line:match("%S") then + staged_count = staged_count + 1 + end + end + + staged_label = staged_label .. staged_count + end + + return ui.Span(staged_label):fg(config.staged_color) + end + + return nil + end + + --- @param data GitStatusData + function Header:render_unstaged(data) + local unstaged = data.unstaged + + if unstaged then + local unstaged_label = config.unstaged_symbol + + if config.show_numbers then + local filtered_unstaged = + unstaged:gsub("^[%s]*%b()[\r\n]*", ""):gsub("^[%s]*%b()[\r\n]*", "") + + local unstaged_count = 0 + for line in filtered_unstaged:gmatch("[^\r\n]+") do + if line:match("%S") then + unstaged_count = unstaged_count + 1 + end + end + + unstaged_label = unstaged_label .. unstaged_count + end + + return ui.Span(unstaged_label):fg(config.unstaged_color) + end + + return nil + end + + --- @param data GitStatusData + function Header:render_untracked(data) + local untracked = data.untracked + + if untracked then + local untracked_label = config.untracked_symbol + + if config.show_numbers then + local filtered_untracked = untracked:gsub("^[%s]*%b()[\r\n]*", "") + local untracked_count = 0 + + for line in filtered_untracked:gmatch("[^\r\n]+") do + if line:match("%S") then + untracked_count = untracked_count + 1 + end + end + + untracked_label = untracked_label .. untracked_count + end + + return ui.Span(untracked_label):fg(config.untracked_color) + end + + return nil + end + + function Header:githead() + --- @type GitStatusData + local data = this.output + + if not data then + return ui.Line({}) + end + + local head = {} + + for _, key in ipairs(config.order) do + if key == "__spacer__" then + if head[#head] ~= " " then + table.insert(head, " ") + end + else + local fn = self["render_" .. key] + local is_shown = config["show_" .. key] + + if fn and is_shown then + local value = fn(self, data) + if value then + table.insert(head, value) + end + end + end + end + + return ui.Line(head) + end + + Header:children_add(Header.githead, 2000, Header.LEFT) + + local callback = function() + local cwd = cx.active.current.cwd + ya.emit("plugin", { + this._id, + ya.quote(tostring(cwd), true), + }) + end + + ps.sub("cd", callback) + ps.sub("rename", callback) + ps.sub("bulk", callback) + ps.sub("move", callback) + ps.sub("trash", callback) + ps.sub("delete", callback) + ps.sub("tab", callback) + end, + + entry = function(_, job) + local args = job.args or job + + ---@class GitStatusData + ---@field ahead_remote? integer + ---@field behind_remote? integer + ---@field branch? string + ---@field commit? string + ---@field rebase_done? integer + ---@field remote_branch? string + ---@field remote_repo? string + ---@field staged? string + ---@field stashes? integer + ---@field state_prefix? "bisect"|"cherry"|"merge"|"rebase-i"|"revert" + ---@field tag? string + ---@field unmerged_count? integer + ---@field unstaged? string + ---@field untracked? string + local data = {} + + --- @param status string + local get_behind_ahead_remote = function(status) + local diverged_ahead, diverged_behind = + status:match("have (%d+) and (%d+) different") + if diverged_ahead and diverged_behind then + data.behind_remote = tonumber(diverged_behind) + data.ahead_remote = tonumber(diverged_ahead) + else + local behind_remote = status:match("behind %S+ by (%d+) commits?") + local ahead_remote = status:match("ahead of %S+ by (%d+) commits?") + + data.behind_remote = tonumber(behind_remote) + data.ahead_remote = tonumber(ahead_remote) + end + end + + --- @param status string + local get_branch = function(status) + data.branch = status:match("On branch (%S+)") + end + + --- @param status string + local get_stashes = function(status) + data.stashes = tonumber(status:match("Your stash currently has (%d+)")) + end + + --- @param status string + local get_state = function(status) + local unmerged = status:match("Unmerged paths:%s*(.-)%s*\n\n") + if unmerged then + local filtered_unmerged = + unmerged:gsub("^[%s]*%b()[%s]*", ""):gsub("^[%s]*%b()[%s]*", "") + local count = 0 + for line in filtered_unmerged:gmatch("[^\r\n]+") do + if line:match("%S") then + count = count + 1 + end + end + data.unmerged_count = count + end + + if status:find("git merge") then + data.state_prefix = "merge" + elseif status:find("git cherry%-pick") then + data.state_prefix = "cherry" + elseif status:find("git rebase") then + data.state_prefix = "rebase-i" + local commands_done = status:match("%((%d+) commands? done%)") + if commands_done then + data.rebase_done = commands_done + if not data.unmerged_count then + data.rebase_total = commands_done + else + data.rebase_total = data.unmerged_count + end + end + elseif status:find("git revert") then + data.state_prefix = "revert" + elseif status:find("git bisect") then + data.state_prefix = "bisect" + end + end + + --- @param status string + local get_staged = function(status) + data.staged = status:match("Changes to be committed:%s*(.-)%s*\n\n") + end + + --- @param status string + local get_unstaged = function(status) + data.unstaged = + status:match("Changes not staged for commit:%s*(.-)%s*\n\n") + end + + --- @param status string + local get_untracked = function(status) + data.untracked = status:match("Untracked files:%s*(.-)%s*\n\n") + end + + local get_status = function() + local cmd = Command("git") + :arg({ + "status", + "--ignore-submodules=dirty", + "--branch", + "--show-stash", + "--ahead-behind", + }) + :cwd(args[1]) + :env("LANGUAGE", "en_US.UTF-8") + :stdout(Command.PIPED) + local cmd_output = cmd:output() + + if cmd_output then + local status = cmd_output.stdout + + get_branch(status) + get_behind_ahead_remote(status) + get_stashes(status) + get_state(status) + get_staged(status) + get_unstaged(status) + get_untracked(status) + end + end + + local get_remote_branch = function() + local cmd = Command("git") + :arg({ + "rev-parse", + "--abbrev-ref", + "--symbolic-full-name", + "@{upstream}", + }) + :cwd(args[1]) + :env("LANGUAGE", "en_US.UTF-8") + :stdout(Command.PIPED) + local cmd_output = cmd:output() + + if cmd_output then + local remote_branch = cmd_output.stdout + + data.remote_branch = + remote_branch:gsub("[\r\n]", ""):match("^[^/]+/(.+)") + data.remote_repo = remote_branch:gsub("[\r\n]", ""):match("^([^/]+)/") + end + end + + --- @param log string + local get_tag = function(log) + data.tag = log:match("tag: ([^, )]+)") + end + + --- @param log string + local get_commit = function(log) + data.commit = log:match("^commit%s+([a-f0-9]+)") + end + + local get_git_log = function() + local cmd = Command("git") + :arg({ "log", "--format=commit %h%d", "-n", "1" }) + :cwd(args[1]) + :env("LANGUAGE", "en_US.UTF-8") + :stdout(Command.PIPED) + local cmd_output = cmd:output() + + if cmd_output then + local log = cmd_output.stdout + + get_tag(log) + get_commit(log) + end + end + + get_status() + get_remote_branch() + get_git_log() + + save(args[1], data) + end, +} diff --git a/new_arch/static/yazi/plugins/kdeconnect-send/main.lua b/new_arch/static/yazi/plugins/kdeconnect-send/main.lua new file mode 100644 index 0000000..d93e357 --- /dev/null +++ b/new_arch/static/yazi/plugins/kdeconnect-send/main.lua @@ -0,0 +1,420 @@ +-- ~/.config/yazi/plugins/kdeconnect-send.yazi/main.lua + +-- Function to run a command and get its output (Corrected Args Handling) +local function run_command(cmd_args) + ya.dbg("[kdeconnect-send] Running command: ", table.concat(cmd_args, " ")) + + -- Separate the command from the arguments + local command_name = cmd_args[1] + local arguments = {} + for i = 2, #cmd_args do + table.insert(arguments, cmd_args[i]) + end + ya.dbg("[kdeconnect-send] Command Name: ", command_name) + ya.dbg("[kdeconnect-send] Arguments Table: ", arguments) + + -- Build the command correctly + local cmd_builder = Command(command_name) + for _, arg_value in ipairs(arguments) do + cmd_builder:arg(arg_value) + end + + local child, err = cmd_builder:stdout(Command.PIPED):stderr(Command.PIPED):spawn() + + if err then + ya.err("[kdeconnect-send] Spawn error: ", err) + return nil, err + end + local output, wait_err = child:wait_with_output() + ya.dbg("[kdeconnect-send] wait_with_output finished.") + if wait_err then + ya.err("[kdeconnect-send] Wait error received: ", wait_err) + return nil, wait_err + end + if not output then + ya.err("[kdeconnect-send] Wait finished but output object is nil.") + return nil, Error("Command wait returned nil output") + end + ya.dbg("[kdeconnect-send] Command Status Success: ", output.status.success) + ya.dbg("[kdeconnect-send] Command Status Code: ", output.status.code) + ya.dbg("[kdeconnect-send] Command Stdout: ", output.stdout or "nil") + ya.dbg("[kdeconnect-send] Command Stderr: ", output.stderr or "nil") + + -- Note: The check for "0 devices found" might need adjustment depending on the output format of 'kdeconnect-cli -a' + if output.stderr and output.stderr:match("^0 devices found") then + ya.dbg("[kdeconnect-send] Command reported 0 devices found in stderr. Returning empty.") + return "", nil + end + -- Also check stdout for potential "no devices" messages if -a uses stdout differently + if output.stdout and output.stdout:match("no available devices found") then -- Example check, adjust if needed + ya.dbg("[kdeconnect-send] Command reported no available devices in stdout. Returning empty.") + return "", nil + end + + if not output.status.success then + local error_msg = "Command failed with code " + .. tostring(output.status.code or "unknown") + .. ": " + .. command_name + if output.stderr and #output.stderr > 0 then + error_msg = error_msg .. "\nStderr: " .. output.stderr + end + if output.stdout and #output.stdout > 0 then + error_msg = error_msg .. "\nStdout: " .. output.stdout + end + ya.err("[kdeconnect-send] Command execution failed: ", error_msg) + return nil, Error(error_msg) + end + return output.stdout, nil +end + +-- Helper function to check if a URL exists in the values of the selected map +local function isSelected(url_to_check, selected_map) + if not url_to_check or not selected_map then + return false + end + local url_str_to_check = tostring(url_to_check) -- Compare string representations for consistency + for _, selected_url in pairs(selected_map) do + if selected_url and tostring(selected_url) == url_str_to_check then + return true + end + end + return false +end + +local get_selection_details = ya.sync(function() + ya.dbg("[kdeconnect-send] Entering get_selection_details sync block (Using cha via current.files)") + local selected_map = cx.active.selected + local current_files = cx.active.current.files + + if not selected_map or not current_files then + ya.err("[kdeconnect-send] cx.active.selected or cx.active.current.files is nil!") + return {}, false -- Return empty if essential data is missing + end + + -- Check if selection is empty early to potentially save iteration + local selection_empty = true + for _ in pairs(selected_map) do + selection_empty = false + break + end + if selection_empty then + ya.dbg("[kdeconnect-send] Selection map is empty.") + return {}, false + end + + local regular_files = {} + local directory_selected = false + + local success, err = pcall(function() + -- Iterate through the files in the current view + for i = 1, #current_files do + local file = current_files[i] -- Access fs::File object by index [cite: 15] + + if file and file.url and file.cha then + -- Check if this file's URL is in the selected map + if isSelected(file.url, selected_map) then + ya.dbg("[kdeconnect-send] File is selected: ", tostring(file.url)) + + -- Now check its cha.is_dir property + if file.cha.is_dir == true then + ya.dbg("[kdeconnect-send] Selected item is a directory (cha.is_dir): ", tostring(file.url)) + directory_selected = true + -- Optional: If finding one directory is enough, you could break the loop here + -- if you primarily care about blocking directory sends. + -- break + elseif file.cha.is_dir == false then + -- It's selected and not a directory, assume regular file + ya.dbg( + "[kdeconnect-send] Selected item is a regular file (cha.is_dir is false): ", + tostring(file.url) + ) + table.insert(regular_files, tostring(file.url)) + else + -- cha.is_dir might be nil (e.g., dummy file) + ya.warn( + "[kdeconnect-send] file.cha.is_dir is nil for selected file: ", + tostring(file.url), + ". Treating as potential directory." + ) + directory_selected = true -- Treat indeterminate as directory for safety + end + end + elseif file and file.url then + -- File exists but cha doesn't? Check if it's selected anyway. + if isSelected(file.url, selected_map) then + ya.warn( + "[kdeconnect-send] Selected file is missing 'cha' property: ", + tostring(file.url), + ". Treating as potential directory." + ) + directory_selected = true -- Treat files missing 'cha' as directories for safety + end + else + -- Handle cases where file or file.url might be nil within the loop if necessary + ya.warn("[kdeconnect-send] Encountered nil file or file.url at index: ", i) + end + end + end) + + if not success then + ya.err("[kdeconnect-send] Error during current_files iteration or isSelected check: ", err) + return {}, false -- Return empty on error + end + + -- Add a final check: if directory_selected is true, we might not need the regular_files list depending on use case. + -- The current implementation returns both. + + ya.dbg( + "[kdeconnect-send] Exiting get_selection_details sync block. Found regular files: ", + #regular_files, + " Directory selected (based on cha): ", + directory_selected + ) + return regular_files, directory_selected +end) + +local state_option = ya.sync(function(state, attr) + return state[attr] +end) + +return { + setup = function(state, options) + state.auto_select_single = options.auto_select_single + end, + + entry = function(_, job) + ya.dbg("[kdeconnect-send] Plugin entry point triggered.") + + -- Get configuration option for auto_select_single (default: true) + local auto_select_single = state_option("auto_select_single") + if auto_select_single == nil then + auto_select_single = true + end + ya.dbg("[kdeconnect-send] auto_select_single option: ", auto_select_single) + + -- 1. Get selection details (files and directory flag) using Reverted Sync Check + local selected_files, directory_selected = get_selection_details() + + -- Handle potential errors if get_selection_details couldn't determine selection + if not selected_files then + ya.err("[kdeconnect-send] Failed to get selection details.") + ya.notify({ title = "Plugin Error", content = "Could not read selection.", level = "error", timeout = 5 }) + return + end + + -- 2. *** REVERTED DIRECTORY CHECK LOGIC *** + ya.dbg("[kdeconnect-send] Checking directory_selected flag. Value: ", directory_selected) + if directory_selected then + ya.dbg("[kdeconnect-send] directory_selected is true (from sync check). Showing error and exiting.") + ya.notify({ + title = "KDE Connect Send", + content = "Cannot send directories. Please select regular files only.", + level = "error", + timeout = 7, + }) + return -- Exit if a directory was detected by the sync check + end + ya.dbg("[kdeconnect-send] directory_selected is false (from sync check). Proceeding.") + + -- 3. Proceed only if no directory was selected and files exist + ya.dbg("[kdeconnect-send] Checking number of regular files.") + local len = #selected_files + ya.dbg("[kdeconnect-send] Length of selected_files (#): ", len) + + if len == 0 then + -- This case now means either truly no regular files were selected, + -- or only directories were selected (and handled above), + -- or an error occurred in get_selection_details. + ya.dbg("[kdeconnect-send] Length is 0. No regular files to send.") + -- Check if directory_selected was false - means no files were selected at all. + if not directory_selected then + ya.notify({ + title = "KDE Connect Send", + content = "No regular files selected.", + level = "warn", + timeout = 5, + }) + end + return -- Exit cleanly + end + + -- If we got here, directory_selected is false and len > 0. + ya.dbg("[kdeconnect-send] Regular files found and no directories detected. Proceeding to device check.") + + -- 4. Get KDE Connect devices (using -a flag) + ya.dbg("[kdeconnect-send] Attempting to list KDE Connect devices with 'kdeconnect-cli -a'...") + local devices_output, err = run_command({ "kdeconnect-cli", "-a" }) -- Using -a flag + + if err then + ya.err("[kdeconnect-send] Failed to list devices command: ", tostring(err), ". Exiting.") + ya.notify({ + title = "KDE Connect Error", + content = "Failed to run kdeconnect-cli -a: " .. tostring(err), + level = "error", + timeout = 5, + }) + return + end + + if not devices_output or devices_output == "" then + ya.dbg("[kdeconnect-send] No available devices reported by kdeconnect-cli -a. Exiting silently.") + ya.notify({ + title = "KDE Connect Send", + content = "No available KDE Connect devices found.", + level = "warn", + timeout = 4, + }) + return + end + + -- 5. Parse devices (Adjust parsing for '-a' output format if needed) + -- *** IMPORTANT: The parsing logic below ASSUMES '-a' output is similar to '-l' *** + local devices = {} + local device_list_str = "Available Devices:\n" + local has_reachable = false -- Keep track if *any* device is found + ya.dbg("[kdeconnect-send] Parsing device list (assuming -a format is like -l)...") + local pattern = "^%-%s*(.+):%s*([%w_]+)%s*%((.-)%)$" -- Adjust if -a format differs + for line in devices_output:gmatch("[^\r\n]+") do + local name, id, status_line = line:match(pattern) + if id and name and status_line then + name = name:match("^%s*(.-)%s*$") + table.insert(devices, { id = id, name = name, status = status_line }) + device_list_str = device_list_str + .. "- " + .. name + .. " (ID: " + .. id + .. ") Status: " + .. status_line + .. "\n" + has_reachable = true + else + ya.warn("[kdeconnect-send] Could not parse device line with pattern: ", line) + end + end + + if not has_reachable then + ya.dbg( + "[kdeconnect-send] No devices found after parsing output of 'kdeconnect-cli -a'. Exiting silently. List:\n", + device_list_str + ) + return + end + + -- 6. Select Device (Using ya.which) + local device_id = nil + local target_device_name = "Unknown" + + if #devices == 1 and auto_select_single then + device_id = devices[1].id + target_device_name = devices[1].name + ya.dbg( + "[kdeconnect-send] Only one device found and auto-select-single is true: ", + target_device_name, + " (", + device_id, + "). Using automatically." + ) + else + ya.dbg("[kdeconnect-send] Prompting user with ya.which (multiple devices or auto-select-single is false)...") + + -- Prepare candidates for ya.which + local device_choices = {} + for i, device in ipairs(devices) do + table.insert(device_choices, { + on = tostring(i), + desc = string.format("%s (%s) - %s", device.name, device.id, device.status), -- Show status in choice + }) + end + + -- Add a cancel option + table.insert(device_choices, { on = "q", desc = "Cancel" }) + + -- Prompt the user to choose a device index + local selected_index = ya.which({ + cands = device_choices, + }) + ya.dbg("[kdeconnect-send] ya.which returned index: ", selected_index or "nil") + + -- Check if the user cancelled or selected the cancel option ('q') + if not selected_index or selected_index > #devices then + ya.warn("[kdeconnect-send] Device selection cancelled by user.") + ya.notify({ title = "KDE Connect Send", content = "Send cancelled.", level = "info", timeout = 3 }) + return -- *** This return terminates the plugin *** + end + + -- Get the device ID and name based on the selected index + device_id = devices[selected_index].id + target_device_name = devices[selected_index].name + ya.dbg( + "[kdeconnect-send] User selected device index ", + selected_index, + ": ", + target_device_name, + " (", + device_id, + ")" + ) + end + + -- 7. Proceed with selected device + ya.dbg( + "[kdeconnect-send] Proceeding with selected device: ", + device_id, + " (", + target_device_name, + "). Starting file send loop..." + ) + + -- 8. Send files (Using selected_files list) + local success_count = 0 + local error_count = 0 + for i, file_path in ipairs(selected_files) do -- Use selected_files here + ya.dbg( + "[kdeconnect-send] Sending file ", + i, + "/", + #selected_files, -- Use #selected_files + ": ", + file_path, + " to ", + target_device_name + ) + local _, send_err = run_command({ "kdeconnect-cli", "--share", file_path, "--device", device_id }) + if send_err then + error_count = error_count + 1 + ya.err("[kdeconnect-send] Failed to send file ", file_path, " to ", device_id, ": ", tostring(send_err)) + ya.notify({ + title = "KDE Connect Error", + content = "Failed to send: " .. file_path .. "\n" .. tostring(send_err), + level = "error", + timeout = 5, + }) + else + success_count = success_count + 1 + end + end + + -- 9. Final Notification + local final_message = + string.format("Sent %d/%d files to %s.", success_count, #selected_files, target_device_name) + local final_level = "info" + if error_count > 0 then + final_message = string.format( + "Sent %d/%d files to %s. %d failed.", + success_count, + #selected_files, + target_device_name, + error_count + ) + final_level = "warn" + end + if success_count == 0 and error_count > 0 then + final_level = "error" + end + ya.dbg("[kdeconnect-send] Send process completed. Success: ", success_count, " Failed: ", error_count) + ya.notify({ title = "KDE Connect Send Complete", content = final_message, level = final_level, timeout = 5 }) + ya.dbg("[kdeconnect-send] Plugin execution finished.") + end, +} diff --git a/new_arch/system.nix b/new_arch/system.nix new file mode 100644 index 0000000..287b884 --- /dev/null +++ b/new_arch/system.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + inputs, + system, + pkgs-list, + ... +} @ Inputs: let + name = "system"; + repo = "nix"; + branch = "unstable"; + packages = Inputs.pkgs-list.${repo}.${branch}; +in { + options.${name} = { + version = lib.mkOption { + type = lib.types.str; + default = "25.11"; + description = "The system state version."; + }; + }; + imports = map (file: ./system/${file}) [ + "bootloader.nix" + "lang.nix" + "users.nix" + "hardware.nix" + "networking.nix" + "filesystems.nix" + ]; + config = { + system.stateVersion = config.system.version; + nix.settings.experimental-features = ["nix-command" "flakes"]; + boot.kernelPackages = packages.linuxPackages_latest; + }; +} diff --git a/new_arch/tools.nix b/new_arch/tools.nix new file mode 100644 index 0000000..a69ef55 --- /dev/null +++ b/new_arch/tools.nix @@ -0,0 +1,152 @@ +{lib, ...}: let + importWithAndContextArgs = { + file, + context, + args, + }: + ( + import file + args + ).config.${ + context + }; + + importWithArgs = { + file, + args, + }: + (import file args).config; + + contextArgsImport = { + file, + context, + args, + }: + (importWithArgs { + inherit file args; + }).${ + context + }; + + defaultContextArgsImport = { + file, + context, + args, + }: { + file, + context, + }: ( + contextArgsImport file context args + ); + contextualModule = { + name, + config, + lib, + options, + import-list ? [], + context, + }: let + cfg = config.${name}; + in { + config = lib.mkIf cfg.enable { + inherit options; + imports = import-list; + }; + }; + inheritSettings = { + pathNames, + imports, + settings, + }: let + first = lib.lists.last (lib.lists.take 1 pathNames); + in + builtins.listToAttrs (map (setting: { + name = + if (pathNames == []) + then setting + else first; + value = + if (pathNames == []) + then settings.${setting} + else + (inheritSettings { + pathNames = lib.lists.drop 1 pathNames; + imports = imports; + settings = settings; + }); + }) + imports); + + universalModule = { + lib, + config, + pkgs-list, + inputs, + name, + subfolder ? null, + options, + imports ? [], + settings ? {}, + oldPathNames ? [name], + Home ? {}, + System ? {}, + } @ Inputs: let + cfg = config.${name}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + options.${fullPath} = options; + settings.${fullPath} = settings; + in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + imports = + if Inputs.imports + then + map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.Home) + Inputs.imports + else []; + config = + lib.mkIf cfg.enable (inheritSettings { + pathNames = pathNames; + imports = imports; + settings = settings; + }) + // Home; + }; + System = { + lib, + config, + ... + }: { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config; + inherit lib; + inherit (Inputs) pkgs-list inputs; + }).config.System) + imports; + config = + lib.mkIf cfg.enable (inheritSettings { + pathNames = pathNames; + imports = imports; + settings = settings; + }) + // System; + }; + }; + }; +in { + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule; + # multiContextModule; +} From 76e60f0db93686fd55c6ae8598d6392921b7d5d5 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 12:35:34 -0400 Subject: [PATCH 039/236] refactor(progs) : refactoring progs to new format WIP --- new_arch/flake.nix | 27 ++++- new_arch/progs.nix | 274 ++++++++++++++++++++------------------------- 2 files changed, 145 insertions(+), 156 deletions(-) diff --git a/new_arch/flake.nix b/new_arch/flake.nix index 84d1c53..4a444f1 100644 --- a/new_arch/flake.nix +++ b/new_arch/flake.nix @@ -131,13 +131,28 @@ nixd = true; alejandra = true; }; + misc = { + enable = true; + git = true; + postman = true; + }; + editors = { + enable = true; + vscode = true; + vim = true; + }; + terminals = { + enable = true; + ghostty = true; + }; + virtualization = { + enable = true; + docker = true; + }; + network = { + enable = true; + }; # network = true; - docker = true; - ghostty = true; - git = true; - postman = true; - vscode = true; - vim = true; }; browsers = { enable = true; diff --git a/new_arch/progs.nix b/new_arch/progs.nix index ae8482e..b82d426 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -6,119 +6,134 @@ ... } @ Inputs: let name = "progs"; - subfolder = "programs"; + subfolder = "progs"; repo = "nix"; branch = "latest"; packages = pkgs-list.${repo}.${branch}; + imports = [ + "dev" + "misc" + "shells" + "office" + "desktop" + ]; + # Temporary + homeImport = [ + "browsers" + ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; - options.${name} = { + cfg = config.${fullPath}; + options.${fullPath} = { enable = lib.mkEnableOption "Enables and configures ${name}"; - shells = { - enable = lib.mkEnableOption "Enable various shell configurations."; - zsh = lib.mkEnableOption "Enable Zsh shell configuration."; + dev = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures development tools."; + default = + cfg.dev + // { + enable = lib.mkEnableOption "Enables development tools."; + }; }; - misc = { - enable = lib.mkEnableOption "Enables and configures miscellaneous programs."; - ledger = lib.mkEnableOption "Enables and configures Ledger support."; - bambu-studio = lib.mkEnableOption "Enables and configures Bambu Studio."; - bitwarden = lib.mkEnableOption "Enables and configures Bitwarden."; - fastfetch = lib.mkEnableOption "Enables and configures Fastfetch."; - iso-image-writer = lib.mkEnableOption "Enables and configures ISO Image Writer."; - kdeconnect = lib.mkEnableOption "Enables and configures KDE Connect."; - vesktop = lib.mkEnableOption "Enables and configures Vesktop."; + shells = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures shells."; + default = + cfg.shells + // { + enable = lib.mkEnableOption "Enables shells."; + }; }; - office = { - enable = lib.mkEnableOption "Enables and configures office applications."; - libreoffice = lib.mkEnableOption "Enables and configures LibreOffice."; - qualculate = lib.mkEnableOption "Enables and configures Qualculate."; + misc = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures miscellaneous tools."; + default = + cfg.misc + // { + enable = lib.mkEnableOption "Enables miscellaneous tools."; + }; }; - dev = { - enable = lib.mkEnableOption "Enables and configures development tools."; - docker = lib.mkEnableOption "Enables and configures Docker."; - boot = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures boot related tools."; - }; - dev-nix = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures Nix related tools."; - }; - network = lib.mkEnableOption "Enables and configures Network tools."; - vim = lib.mkEnableOption "Enables and configures Vim."; - vscode = lib.mkEnableOption "Enables and configures VSCode."; - postman = lib.mkEnableOption "Enables and configures Postman."; - git = lib.mkEnableOption "Enables and configures Git."; - ghostty = lib.mkEnableOption "Enables and configures Ghostty."; + office = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures office tools."; + default = + cfg.office + // { + enable = lib.mkEnableOption "Enables office tools."; + }; }; - browsers = { - enable = lib.mkEnableOption "Enables and configures web browsers."; - firefox = lib.mkEnableOption "Enables and configures Firefox."; - chromium = lib.mkEnableOption "Enables and configures Chromium."; + browsers = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures browsers."; + default = + cfg.browsers + // { + enable = lib.mkEnableOption "Enables browsers."; + }; }; - desktop = { - enable = lib.mkEnableOption "Enables and configures desktop environment."; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - rofi = lib.mkEnableOption "Enables and configures Rofi."; + desktop = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures desktop environment."; + default = + cfg.desktop + // { + enable = lib.mkEnableOption "Enables desktop environment."; + }; }; }; - cfg = config.${name}; - settings = { - dev = { - enable = cfg.enable; - docker = cfg.enable && cfg.dev.docker; - boot = rec { - enable = cfg.enable && cfg.dev.boot.enable; - efibootmgr = enable && cfg.dev.boot.efibootmgr; - grub = enable && cfg.dev.boot.grub; - gparted = enable && cfg.dev.boot.gparted; - os-prober = enable && cfg.dev.boot.os-prober; - }; - dev-nix = rec { - enable = cfg.enable && cfg.dev.dev-nix.enable; - nixd = enable && cfg.dev.dev-nix.nixd; - alejandra = enable && cfg.dev.dev-nix.alejandra; - }; - network = cfg.enable && cfg.dev.network; - git = cfg.enable && cfg.dev.git; - postman = cfg.enable && cfg.dev.postman; - vscode = cfg.enable && cfg.dev.vscode; - vim = cfg.enable && cfg.dev.vim; - ghostty = cfg.enable && cfg.dev.ghostty; - }; - shells = rec { - enable = cfg.shells.enable; - zsh = enable && cfg.shells.zsh; - }; - misc = rec { - enable = cfg.misc.enable; - ledger = enable && cfg.misc.ledger; - bambu-studio = enable && cfg.misc.bambu-studio; - bitwarden = enable && cfg.misc.bitwarden; - fastfetch = enable && cfg.misc.fastfetch; - iso-image-writer = enable && cfg.misc.iso-image-writer; - kdeconnect = enable && cfg.misc.kdeconnect; - vesktop = enable && cfg.misc.vesktop; + settings.${fullPath} = { + enable = cfg.${fullPath}.enable; + dev = cfg.${fullPath}.dev; + shells = cfg.${fullPath}.shells; + misc = cfg.${fullPath}.misc; + office = cfg.${fullPath}.office; + browsers = cfg.${fullPath}.browsers; + desktop = cfg.${fullPath}.desktop; + }; + inheritedSettings = tools.inheritSettings { + pathNames = pathNames; + imports = imports; + settings = settings; + }; + Common = + inheritedSettings + // { }; - office = rec { - enable = cfg.office.enable; - libreoffice = enable && cfg.office.libreoffice; - qualculate = enable && cfg.office.qualculate; + Home = { + progs.browsers = settings.${fullPath}.browsers; + programs = { + thunderbird = { + enable = true; + profiles = {}; + }; }; - browsers = rec { - enable = cfg.browsers.enable; - firefox = enable && cfg.browsers.firefox; - chromium = enable && cfg.browsers.chromium; + }; + System = { + environment.systemPackages = with packages; [ + mangohud + plocate + mlocate + xdotool + protonup-ng + meld + wget + ]; + environment.sessionVariables = { + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; }; - desktop = rec { - enable = cfg.desktop.enable; - plasma = enable && cfg.desktop.plasma; - klassy = enable && cfg.desktop.klassy; - rofi = enable && cfg.desktop.rofi; + programs = { + gamemode.enable = true; + steam = { + enable = true; + gamescopeSession.enable = true; + }; + virt-manager.enable = true; }; }; + + HomeConfig = Common // Home; + SystemConfig = Common // System; in { config = { Home = { @@ -128,30 +143,15 @@ in { }: { inherit options; imports = - map (file: ./${subfolder}/${file}.nix) [ - # "desktop" - # "boot-dev" - ] - ++ map (file: + map (file: (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - inherit tools; + inherit config lib packages tools; + inherit (Inputs) inputs; oldPathNames = pathNames; - }).config.Home) ["dev" "misc" "shells" "office" "browsers" "desktop"]; - config = lib.mkIf cfg.enable { - inherit (settings) dev shells misc office browsers desktop; - programs = { - thunderbird = { - enable = true; - profiles = {}; - }; - }; - # meld = { - # enable = true; - # }; - }; + }).config.Home) + (imports + ++ homeImport); + config = lib.mkIf cfg.enable HomeConfig; }; System = { lib, @@ -159,40 +159,14 @@ in { ... }: { inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - oldPathNames = pathNames; - inherit tools; - }).config.System) ["dev" "misc" "shells" "office" "desktop"]; - config = lib.mkIf cfg.enable { - inherit (settings) dev shells misc office desktop; - environment.systemPackages = with packages; [ - mangohud - plocate - mlocate - xdotool - protonup-ng - meld - wget - ]; - environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; - }; - programs = { - gamemode.enable = true; - steam = { - enable = true; - gamescopeSession.enable = true; - }; - virt-manager.enable = true; - }; - }; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib packages tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.System) + imports; + config = lib.mkIf cfg.enable SystemConfig; }; }; } From 999fc6539cae07019e6cb758ed456011cf8d9e43 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 12:47:04 -0400 Subject: [PATCH 040/236] fix(progs) : fixing the parameters passed to submodules --- new_arch/progs.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index b82d426..bc1990c 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -145,7 +145,7 @@ in { imports = map (file: (import ./${subfolder}/${file}.nix { - inherit config lib packages tools; + inherit config lib pkgs-list tools; inherit (Inputs) inputs; oldPathNames = pathNames; }).config.Home) @@ -161,7 +161,7 @@ in { inherit options; imports = map (file: (import ./${subfolder}/${file}.nix { - inherit config lib packages tools; + inherit config lib pkgs-list tools; inherit (Inputs) inputs; oldPathNames = pathNames; }).config.System) From f1644989da059395d8610d6e57d49bdf3ce131d2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 12:49:50 -0400 Subject: [PATCH 041/236] refactor(home) : new format for home + cleaning up some mess --- new_arch/home.nix | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/new_arch/home.nix b/new_arch/home.nix index 25b1e69..b5d33c4 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -1,34 +1,32 @@ { config, lib, - inputs, pkgs-list, nixos-version, settings, tools, ... } @ Inputs: let - folder = "programs"; - context = "home"; -in { - imports = - [ - (import ./progs.nix {inherit config lib inputs pkgs-list tools;}).config.Home - ] - ++ [ - pkgs-list.others.zen-browser.homeModules.beta - ]; - inherit (settings) progs; + name = "home"; + mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs + imports = ["progs"]; - home.stateVersion = nixos-version; - home.username = "matthieu"; - home.homeDirectory = "/home/matthieu"; - # TODO: Move to another folder later - # home.packages = with Inputs.pkgs-list.nix.latest; [ - # ntfs3g - # ntfsprogs - # btrfs-progs - # exfat - # exfatprogs - # ]; -} + inheritedSettings = tools.inheritSettings { + pathNames = []; + imports = imports; + settings = settings; + }; +in + inheritedSettings + // { + imports = map (file: + (import ./${mainModule}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + }).config.Home) + imports; + + home.stateVersion = nixos-version; + home.username = "matthieu"; + home.homeDirectory = "/home/matthieu"; + } From 72544bee3364d69d14882693e8653ea2b7fa079a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 13:11:41 -0400 Subject: [PATCH 042/236] refactor(system) : new format for system + rename + adding options --- new_arch/flake.nix | 19 +++++++ new_arch/sys.nix | 125 ++++++++++++++++++++++++++++++++++++++++++++ new_arch/system.nix | 34 ------------ 3 files changed, 144 insertions(+), 34 deletions(-) create mode 100644 new_arch/sys.nix delete mode 100644 new_arch/system.nix diff --git a/new_arch/flake.nix b/new_arch/flake.nix index 4a444f1..bb513ab 100644 --- a/new_arch/flake.nix +++ b/new_arch/flake.nix @@ -166,6 +166,25 @@ rofi = true; }; }; + sys = { + enable = true; + version = nixos-version; + lang = { + enable = true; + }; + users = { + enable = true; + }; + hardware = { + enable = true; + }; + networking = { + enable = true; + }; + filesystems = { + enable = true; + }; + }; }; in { nixosConfigurations.NixOs = latestPkgs.lib.nixosSystem { diff --git a/new_arch/sys.nix b/new_arch/sys.nix new file mode 100644 index 0000000..6b4b79a --- /dev/null +++ b/new_arch/sys.nix @@ -0,0 +1,125 @@ +{ + config, + lib, + inputs, + system, + pkgs-list, + tools, + ... +} @ Inputs: let + name = "sys"; + subfolder = "sys"; + repo = "nix"; + branch = "unstable"; + packages = pkgs-list.${repo}.${branch}; + imports = [ + "bootloader" + "lang" + "users" + "hardware" + "networking" + "filesystems" + ]; + oldPathNames = []; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.${fullPath}; + options.${fullPath} = { + enable = lib.mkEnableOption "Enables and configures system related settings."; + version = lib.mkOption { + type = lib.types.str; + default = "25.11"; + description = "The system state version."; + }; + bootloader = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures bootloader related settings."; + default = + cfg.bootloader + // { + enable = lib.mkEnableOption "Enables bootloader related settings."; + }; + }; + lang = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures language related settings."; + default = + cfg.lang + // { + enable = lib.mkEnableOption "Enables language related settings."; + }; + }; + users = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures user related settings."; + default = + cfg.users + // { + enable = lib.mkEnableOption "Enables user related settings."; + }; + }; + hardware = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures hardware related settings."; + default = + cfg.hardware + // { + enable = lib.mkEnableOption "Enables hardware related settings."; + }; + }; + networking = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures networking related settings."; + default = + cfg.networking + // { + enable = lib.mkEnableOption "Enables networking related settings."; + }; + }; + filesystems = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "Enables and configures filesystem related settings."; + default = + cfg.filesystems + // { + enable = lib.mkEnableOption "Enables filesystem related settings."; + }; + }; + }; + settings.${fullPath} = { + lang = { + enable = cfg.enable && cfg.lang.enable; + }; + users = { + enable = cfg.enable && cfg.users.enable; + }; + hardware = { + enable = cfg.enable && cfg.hardware.enable; + }; + networking = { + enable = cfg.enable && cfg.networking.enable; + }; + }; + inheritSettings = tools.inheritSettings { + pathNames = pathNames; + imports = imports; + settings = settings; + }; +in { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix + { + inherit config lib packages tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.System) + imports; + config = + inheritSettings + // { + system.stateVersion = config.${fullPath}.version; + nix.settings.experimental-features = ["nix-command" "flakes"]; + boot.kernelPackages = packages.linuxPackages_latest; + }; +} diff --git a/new_arch/system.nix b/new_arch/system.nix deleted file mode 100644 index 287b884..0000000 --- a/new_arch/system.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - inputs, - system, - pkgs-list, - ... -} @ Inputs: let - name = "system"; - repo = "nix"; - branch = "unstable"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options.${name} = { - version = lib.mkOption { - type = lib.types.str; - default = "25.11"; - description = "The system state version."; - }; - }; - imports = map (file: ./system/${file}) [ - "bootloader.nix" - "lang.nix" - "users.nix" - "hardware.nix" - "networking.nix" - "filesystems.nix" - ]; - config = { - system.stateVersion = config.system.version; - nix.settings.experimental-features = ["nix-command" "flakes"]; - boot.kernelPackages = packages.linuxPackages_latest; - }; -} From 731609a2485d867d879e5b060ef5f7d61c69be86 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 13:18:18 -0400 Subject: [PATCH 043/236] fix(clean) : some cleanups --- new_arch/home.nix | 1 + new_arch/sys.nix | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/new_arch/home.nix b/new_arch/home.nix index b5d33c4..6a06a1d 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -23,6 +23,7 @@ in (import ./${mainModule}.nix { inherit config lib pkgs-list tools; inherit (Inputs) inputs; + oldPathNames = []; }).config.Home) imports; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 6b4b79a..198beab 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -1,7 +1,6 @@ { config, lib, - inputs, system, pkgs-list, tools, @@ -110,7 +109,7 @@ in { imports = map (file: (import ./${subfolder}/${file}.nix { - inherit config lib packages tools; + inherit config lib pkgs-list tools; inherit (Inputs) inputs; oldPathNames = pathNames; }).config.System) From 255b258b028a63a400324b95fbe727d71948c84c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sun, 12 Apr 2026 13:40:45 -0400 Subject: [PATCH 044/236] fix(sys) : fixed configuration file for new system module (might need more cleaning) WIP --- new_arch/configuration.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index 582ce50..7e29ca1 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -11,8 +11,8 @@ }: let import_with_args = file: context: (import file { - inherit config lib inputs pkgs-list; - inherit tools; + inherit config lib inputs pkgs-list tools; + oldPathNames = []; }).config.${ context }; @@ -20,7 +20,7 @@ in { imports = [ ./hardware-configuration.nix - ./system.nix + ./sys.nix managers.home.nixosModules.default ] ++ [ @@ -36,6 +36,6 @@ in { virtualisation = { libvirtd.enable = true; spiceUSBRedirection.enable = true; - }; - fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; + }; # FIXME : Move to somewhere else + fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; # FIXME : Move to somewhere else } From 717d516442f83ce1eff74a2ccb543711c7d587b6 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 13 Apr 2026 17:32:47 -0400 Subject: [PATCH 045/236] refactor(options) : complete rework of the way to declare options for more coherence + rewind to old way to declare settings WIP --- new_arch/configuration.nix | 13 ++++-- new_arch/flake.nix | 96 +++++--------------------------------- new_arch/home.nix | 32 +++++-------- new_arch/progs.nix | 86 ++++------------------------------ new_arch/sys.nix | 91 +++++------------------------------- 5 files changed, 55 insertions(+), 263 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index 7e29ca1..a38ac68 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -19,8 +19,15 @@ in { imports = [ + (import + ./sys.nix + { + inherit config lib pkgs-list tools inputs settings; + oldPathNames = []; + }) + ] + ++ [ ./hardware-configuration.nix - ./sys.nix managers.home.nixosModules.default ] ++ [ @@ -28,10 +35,8 @@ in { ./progs.nix "System") ]; - inherit (settings) progs; - + sys.version = settings.sys.version; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; - system.version = nixos-version; networking.hostName = "NixOs"; virtualisation = { libvirtd.enable = true; diff --git a/new_arch/flake.nix b/new_arch/flake.nix index bb513ab..3bf2fa0 100644 --- a/new_arch/flake.nix +++ b/new_arch/flake.nix @@ -97,93 +97,21 @@ }; settings = { progs = { - enable = true; - shells = { - enable = true; - zsh = true; - }; - misc = { - enable = true; - ledger = true; - bambu-studio = true; - bitwarden = true; - fastfetch = true; - iso-image-writer = true; - vesktop = true; - kdeconnect = true; - }; - office = { - enable = true; - libreoffice = true; - qualculate = true; - }; - dev = { - enable = true; - boot = { - enable = true; - efibootmgr = true; - grub = true; - gparted = true; - os-prober = true; - }; - dev-nix = { - enable = true; - nixd = true; - alejandra = true; - }; - misc = { - enable = true; - git = true; - postman = true; - }; - editors = { - enable = true; - vscode = true; - vim = true; - }; - terminals = { - enable = true; - ghostty = true; - }; - virtualization = { - enable = true; - docker = true; - }; - network = { - enable = true; - }; - # network = true; - }; - browsers = { - enable = true; - firefox = true; - chromium = true; - }; - desktop = { - enable = true; - plasma = true; - klassy = true; - rofi = true; - }; + shells.enable = true; + misc.enable = true; + office.enable = true; + dev.enable = true; + browsers.enable = true; + desktop.enable = true; }; sys = { - enable = true; version = nixos-version; - lang = { - enable = true; - }; - users = { - enable = true; - }; - hardware = { - enable = true; - }; - networking = { - enable = true; - }; - filesystems = { - enable = true; - }; + bootloaders.enable = true; + lang.enable = true; + users.enable = true; + hardware.enable = true; + networking.enable = true; + filesystems.enable = true; }; }; in { diff --git a/new_arch/home.nix b/new_arch/home.nix index 6a06a1d..4bfeb44 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -10,24 +10,16 @@ name = "home"; mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs imports = ["progs"]; +in { + imports = map (file: + (import ./${mainModule}.nix { + inherit config lib pkgs-list tools settings; + inherit (Inputs) inputs; + oldPathNames = []; + }).config.Home) + imports; - inheritedSettings = tools.inheritSettings { - pathNames = []; - imports = imports; - settings = settings; - }; -in - inheritedSettings - // { - imports = map (file: - (import ./${mainModule}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = []; - }).config.Home) - imports; - - home.stateVersion = nixos-version; - home.username = "matthieu"; - home.homeDirectory = "/home/matthieu"; - } + home.stateVersion = nixos-version; + home.username = "matthieu"; + home.homeDirectory = "/home/matthieu"; +} diff --git a/new_arch/progs.nix b/new_arch/progs.nix index bc1990c..d241513 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -3,6 +3,7 @@ lib, pkgs-list, tools, + settings, ... } @ Inputs: let name = "progs"; @@ -24,84 +25,19 @@ oldPathNames = []; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${fullPath}; - options.${fullPath} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - dev = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures development tools."; - default = - cfg.dev - // { - enable = lib.mkEnableOption "Enables development tools."; - }; - }; - shells = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures shells."; - default = - cfg.shells - // { - enable = lib.mkEnableOption "Enables shells."; - }; - }; - misc = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures miscellaneous tools."; - default = - cfg.misc - // { - enable = lib.mkEnableOption "Enables miscellaneous tools."; - }; - }; - office = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures office tools."; - default = - cfg.office - // { - enable = lib.mkEnableOption "Enables office tools."; - }; - }; - browsers = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures browsers."; - default = - cfg.browsers - // { - enable = lib.mkEnableOption "Enables browsers."; - }; - }; - desktop = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures desktop environment."; - default = - cfg.desktop - // { - enable = lib.mkEnableOption "Enables desktop environment."; - }; - }; - }; - settings.${fullPath} = { - enable = cfg.${fullPath}.enable; - dev = cfg.${fullPath}.dev; - shells = cfg.${fullPath}.shells; - misc = cfg.${fullPath}.misc; - office = cfg.${fullPath}.office; - browsers = cfg.${fullPath}.browsers; - desktop = cfg.${fullPath}.desktop; - }; - inheritedSettings = tools.inheritSettings { - pathNames = pathNames; - imports = imports; - settings = settings; + inheritedSettings.progs = { + shells.enable = settings.progs.shells.enable; + misc.enable = settings.progs.misc.enable; + office.enable = settings.progs.office.enable; + dev.enable = settings.progs.dev.enable; + browsers.enable = settings.progs.browsers.enable; + desktop.enable = settings.progs.desktop.enable; }; Common = inheritedSettings // { }; Home = { - progs.browsers = settings.${fullPath}.browsers; programs = { thunderbird = { enable = true; @@ -141,7 +77,6 @@ in { config, ... }: { - inherit options; imports = map (file: (import ./${subfolder}/${file}.nix { @@ -151,14 +86,13 @@ in { }).config.Home) (imports ++ homeImport); - config = lib.mkIf cfg.enable HomeConfig; + config = HomeConfig; }; System = { lib, config, ... }: { - inherit options; imports = map (file: (import ./${subfolder}/${file}.nix { inherit config lib pkgs-list tools; @@ -166,7 +100,7 @@ in { oldPathNames = pathNames; }).config.System) imports; - config = lib.mkIf cfg.enable SystemConfig; + config = SystemConfig; }; }; } diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 198beab..b2f2be8 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -1,9 +1,9 @@ { config, lib, - system, pkgs-list, tools, + settings, ... } @ Inputs: let name = "sys"; @@ -21,88 +21,21 @@ ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${fullPath}; - options.${fullPath} = { - enable = lib.mkEnableOption "Enables and configures system related settings."; + fullPath = lib.concatStringsSep "." pathNames; # NOTE : Doesnt work as intended, need a function to generate the full path + options.sys = { version = lib.mkOption { type = lib.types.str; default = "25.11"; description = "The system state version."; }; - bootloader = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures bootloader related settings."; - default = - cfg.bootloader - // { - enable = lib.mkEnableOption "Enables bootloader related settings."; - }; - }; - lang = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures language related settings."; - default = - cfg.lang - // { - enable = lib.mkEnableOption "Enables language related settings."; - }; - }; - users = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures user related settings."; - default = - cfg.users - // { - enable = lib.mkEnableOption "Enables user related settings."; - }; - }; - hardware = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures hardware related settings."; - default = - cfg.hardware - // { - enable = lib.mkEnableOption "Enables hardware related settings."; - }; - }; - networking = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures networking related settings."; - default = - cfg.networking - // { - enable = lib.mkEnableOption "Enables networking related settings."; - }; - }; - filesystems = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "Enables and configures filesystem related settings."; - default = - cfg.filesystems - // { - enable = lib.mkEnableOption "Enables filesystem related settings."; - }; - }; - }; - settings.${fullPath} = { - lang = { - enable = cfg.enable && cfg.lang.enable; - }; - users = { - enable = cfg.enable && cfg.users.enable; - }; - hardware = { - enable = cfg.enable && cfg.hardware.enable; - }; - networking = { - enable = cfg.enable && cfg.networking.enable; - }; }; - inheritSettings = tools.inheritSettings { - pathNames = pathNames; - imports = imports; - settings = settings; + inheritedSettings.sys = { + bootloaders.enable = settings.sys.bootloaders.enable; + lang.enable = settings.sys.lang.enable; + users.enable = settings.sys.users.enable; + hardware.enable = settings.sys.hardware.enable; + networking.enable = settings.sys.networking.enable; + filesystems.enable = settings.sys.filesystems.enable; }; in { inherit options; @@ -115,9 +48,9 @@ in { }).config.System) imports; config = - inheritSettings + inheritedSettings // { - system.stateVersion = config.${fullPath}.version; + system.stateVersion = config.sys.version; nix.settings.experimental-features = ["nix-command" "flakes"]; boot.kernelPackages = packages.linuxPackages_latest; }; From 0394367da1b7a3b07a52d4c6e551143c1bca4dcc Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 13 Apr 2026 20:28:23 -0400 Subject: [PATCH 046/236] refactor(cleanup) : cleanup flake + configuration --- new_arch/configuration.nix | 1 - new_arch/flake.nix | 1 - 2 files changed, 2 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index a38ac68..ab536c0 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -4,7 +4,6 @@ inputs, pkgs-list, managers, - nixos-version, settings, tools, ... diff --git a/new_arch/flake.nix b/new_arch/flake.nix index 3bf2fa0..7c847bc 100644 --- a/new_arch/flake.nix +++ b/new_arch/flake.nix @@ -121,7 +121,6 @@ inherit pkgs-list; inherit Inputs; inherit managers; - inherit nixos-version; inherit settings; inherit tools; }; From 99ac5546af01aa2809072d91d3abccdae4352ba8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 13 Apr 2026 20:29:35 -0400 Subject: [PATCH 047/236] fix(configuration) : fix settings --- new_arch/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index ab536c0..5ccec16 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -10,7 +10,7 @@ }: let import_with_args = file: context: (import file { - inherit config lib inputs pkgs-list tools; + inherit config lib inputs pkgs-list tools settings; oldPathNames = []; }).config.${ context From 89b4eda8377176ffad5a1c8bf526742f205656af Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 13 Apr 2026 20:33:09 -0400 Subject: [PATCH 048/236] refactor(import) : use of tools for settings --- new_arch/progs.nix | 11 ++++------- new_arch/sys.nix | 12 +++++------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index d241513..95dbe26 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -25,13 +25,10 @@ oldPathNames = []; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; - inheritedSettings.progs = { - shells.enable = settings.progs.shells.enable; - misc.enable = settings.progs.misc.enable; - office.enable = settings.progs.office.enable; - dev.enable = settings.progs.dev.enable; - browsers.enable = settings.progs.browsers.enable; - desktop.enable = settings.progs.desktop.enable; + inheritedSettings = tools.inheritSettings { + settings = settings.progs; + inherit pathNames; + inherit imports; }; Common = inheritedSettings diff --git a/new_arch/sys.nix b/new_arch/sys.nix index b2f2be8..fdb7c99 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -29,13 +29,11 @@ description = "The system state version."; }; }; - inheritedSettings.sys = { - bootloaders.enable = settings.sys.bootloaders.enable; - lang.enable = settings.sys.lang.enable; - users.enable = settings.sys.users.enable; - hardware.enable = settings.sys.hardware.enable; - networking.enable = settings.sys.networking.enable; - filesystems.enable = settings.sys.filesystems.enable; + inhritedSettings.sys.users.enable = settings.sys.users.enable; + inheritedSettings = tools.inheritSettings { + settings = settings.sys; + inherit pathNames; + inherit imports; }; in { inherit options; From 5e219ce8ec8f6ae31cc99c008cea22e30873313f Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 13 Apr 2026 20:33:42 -0400 Subject: [PATCH 049/236] feat(users) : adding users module --- new_arch/progs.nix | 12 +++---- new_arch/sys.nix | 10 +++--- new_arch/sys/users.nix | 71 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 new_arch/sys/users.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 95dbe26..554dab9 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -12,15 +12,15 @@ branch = "latest"; packages = pkgs-list.${repo}.${branch}; imports = [ - "dev" - "misc" - "shells" - "office" - "desktop" + # "dev" + # "misc" + # "shells" + # "office" + # "desktop" ]; # Temporary homeImport = [ - "browsers" + # "browsers" ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index fdb7c99..6f1d342 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -12,12 +12,12 @@ branch = "unstable"; packages = pkgs-list.${repo}.${branch}; imports = [ - "bootloader" - "lang" + # "bootloader" + # "lang" "users" - "hardware" - "networking" - "filesystems" + # "hardware" + # "networking" + # "filesystems" ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix new file mode 100644 index 0000000..f410926 --- /dev/null +++ b/new_arch/sys/users.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "users"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.${name}; + options.sys.${name} = { + enable = lib.mkEnableOption "Enables and configures user related settings."; + }; + Common = { + }; + Home = { + }; + System = { + users = { + defaultUserShell = packages.zsh; + users = { + matthieu = { + description = "Moi"; + isNormalUser = true; + group = "users"; + extraGroups = [ + "wheel" + "docker" + "libvirtd" + ]; # Enable ‘sudo’ for the user. + createHome = true; + home = "/home/matthieu"; + /* + openssh.authorizedKeys.keys = [ + "" + ]; + */ + }; + }; + groups = { + libvirtd.members = ["matthieu"]; + }; + }; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From aef240df51d95ce8b747539a2af3670da48043e4 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 10:14:01 -0400 Subject: [PATCH 050/236] refactor(settings) : passed from settings to baseSettings for basSettings --- new_arch/configuration.nix | 8 ++++---- new_arch/flake.nix | 6 +++--- new_arch/home.nix | 4 ++-- new_arch/progs.nix | 7 +++++-- new_arch/sys.nix | 8 +++++--- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index 5ccec16..9789d79 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -4,13 +4,13 @@ inputs, pkgs-list, managers, - settings, + baseSettings, tools, ... }: let import_with_args = file: context: (import file { - inherit config lib inputs pkgs-list tools settings; + inherit config lib inputs pkgs-list tools baseSettings; oldPathNames = []; }).config.${ context @@ -21,7 +21,7 @@ in { (import ./sys.nix { - inherit config lib pkgs-list tools inputs settings; + inherit config lib pkgs-list tools inputs baseSettings; oldPathNames = []; }) ] @@ -34,7 +34,7 @@ in { ./progs.nix "System") ]; - sys.version = settings.sys.version; + sys.version = baseSettings.sys.version; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; networking.hostName = "NixOs"; virtualisation = { diff --git a/new_arch/flake.nix b/new_arch/flake.nix index 7c847bc..11f2fb0 100644 --- a/new_arch/flake.nix +++ b/new_arch/flake.nix @@ -95,7 +95,7 @@ tools = import ./tools.nix { inherit lib; }; - settings = { + baseSettings = { progs = { shells.enable = true; misc.enable = true; @@ -121,7 +121,7 @@ inherit pkgs-list; inherit Inputs; inherit managers; - inherit settings; + inherit baseSettings; inherit tools; }; modules = [ @@ -134,7 +134,7 @@ inherit pkgs-list; inherit latest; inherit nixos-version; - inherit settings; + inherit baseSettings; inherit tools; }; useUserPackages = true; diff --git a/new_arch/home.nix b/new_arch/home.nix index 4bfeb44..b43832c 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -3,7 +3,7 @@ lib, pkgs-list, nixos-version, - settings, + baseSettings, tools, ... } @ Inputs: let @@ -13,7 +13,7 @@ in { imports = map (file: (import ./${mainModule}.nix { - inherit config lib pkgs-list tools settings; + inherit config lib pkgs-list tools baseSettings; inherit (Inputs) inputs; oldPathNames = []; }).config.Home) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 554dab9..0b42258 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -3,7 +3,7 @@ lib, pkgs-list, tools, - settings, + baseSettings, ... } @ Inputs: let name = "progs"; @@ -25,8 +25,11 @@ oldPathNames = []; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; + newSettings.${name} = { + }; + settings = (lib.recursiveUpdate baseSettings newSettings).${name}; inheritedSettings = tools.inheritSettings { - settings = settings.progs; + inherit settings; inherit pathNames; inherit imports; }; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 6f1d342..283e28e 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -3,7 +3,7 @@ lib, pkgs-list, tools, - settings, + baseSettings, ... } @ Inputs: let name = "sys"; @@ -29,9 +29,11 @@ description = "The system state version."; }; }; - inhritedSettings.sys.users.enable = settings.sys.users.enable; + newSettings.${name} = { + }; + settings = (lib.recursiveUpdate baseSettings newSettings).${name}; inheritedSettings = tools.inheritSettings { - settings = settings.sys; + inherit settings; inherit pathNames; inherit imports; }; From 6f90e5965b2c43673c1c52317990d6ad679bf668 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 10:42:15 -0400 Subject: [PATCH 051/236] feat(lang) : adding lang to sys --- new_arch/sys.nix | 7 ++++- new_arch/sys/lang.nix | 70 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 new_arch/sys/lang.nix diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 283e28e..e36c1ee 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -13,7 +13,7 @@ packages = pkgs-list.${repo}.${branch}; imports = [ # "bootloader" - # "lang" + "lang" "users" # "hardware" # "networking" @@ -30,6 +30,11 @@ }; }; newSettings.${name} = { + lang = { + timeZone = "America/Toronto"; + defaultLang = "en_US.UTF-8"; + keyboardLayout = "fr"; + }; }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; inheritedSettings = tools.inheritSettings { diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix new file mode 100644 index 0000000..764be25 --- /dev/null +++ b/new_arch/sys/lang.nix @@ -0,0 +1,70 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "lang"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.${name}; + options.sys.${name} = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + timeZone = lib.mkOption { + type = lib.types.str; + default = "America/Toronto"; + description = "The system time zone."; + }; + defaultLang = lib.mkOption { + type = lib.types.str; + default = "en_US.UTF-8"; + description = "The system default locale."; + }; + keyboardLayout = lib.mkOption { + type = lib.types.str; + default = "fr"; + description = "The system keyboard layout."; + }; + }; + Common = { + }; + Home = { + }; + System = { + time.timeZone = cfg.timeZone; + i18n = { + defaultLocale = cfg.defaultLang; + extraLocaleSettings = { + LC_TIME = "fr_FR.UTF-8"; + }; + }; + console.keyMap = cfg.keyboardLayout; + services.xserver.xkb.layout = cfg.keyboardLayout; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 5247b1c0161ab894314809a55d040bd57b730604 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 10:42:57 -0400 Subject: [PATCH 052/236] refactor(users) : made description paramaterized --- new_arch/sys/users.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix index f410926..09ac6f4 100644 --- a/new_arch/sys/users.nix +++ b/new_arch/sys/users.nix @@ -14,7 +14,7 @@ fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; options.sys.${name} = { - enable = lib.mkEnableOption "Enables and configures user related settings."; + enable = lib.mkEnableOption "Enables ${name} related settings."; }; Common = { }; From 8f33c05b04319a655fdfaf951d3a0f9fd58dfc3e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 10:57:56 -0400 Subject: [PATCH 053/236] feat(networking) : adding networking to sys --- new_arch/sys.nix | 2 +- new_arch/sys/networking.nix | 79 +++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 new_arch/sys/networking.nix diff --git a/new_arch/sys.nix b/new_arch/sys.nix index e36c1ee..bbc2420 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -16,7 +16,7 @@ "lang" "users" # "hardware" - # "networking" + "networking" # "filesystems" ]; oldPathNames = []; diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix new file mode 100644 index 0000000..b1705ab --- /dev/null +++ b/new_arch/sys/networking.nix @@ -0,0 +1,79 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "networking"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.${name}; + options.sys.${name} = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + Common = { + }; + Home = { + }; + System = { + networking = { + hostName = "NixOs"; + networkmanager = { + enable = true; + plugins = with packages; [ + networkmanager-openvpn + ]; + }; + + firewall = rec { + enable = true; + # interfaces."wlp0s20f3".allowedTCPPorts = [10022]; + allowedTCPPorts = [10022 22]; + allowedTCPPortRanges = [ + { + from = 1714; + to = 1764; + } + ]; # FOR KDE CONNECT TODO: find a better way to do this + allowedUDPPortRanges = allowedTCPPortRanges; # FOR KDE CONNECT + }; + # TODO : fix proxy settings + # proxy.default = "http://user:password@proxy:port/"; + # proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + }; + services = { + openssh.enable = true; + }; ## TODO : FIX OPENSSH + environment.systemPackages = with packages; [ + openvpn + iproute2 + bridge-utils + ]; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 5f492229a336becd440bd38a34a7cdb7aca1b76b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 11:03:50 -0400 Subject: [PATCH 054/236] feat(bootloader) : adding bootloader to sys --- new_arch/flake.nix | 2 +- new_arch/sys.nix | 2 +- new_arch/sys/bootloader.nix | 61 +++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 new_arch/sys/bootloader.nix diff --git a/new_arch/flake.nix b/new_arch/flake.nix index 11f2fb0..e861c05 100644 --- a/new_arch/flake.nix +++ b/new_arch/flake.nix @@ -106,7 +106,7 @@ }; sys = { version = nixos-version; - bootloaders.enable = true; + bootloader.enable = true; lang.enable = true; users.enable = true; hardware.enable = true; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index bbc2420..2932396 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -12,7 +12,7 @@ branch = "unstable"; packages = pkgs-list.${repo}.${branch}; imports = [ - # "bootloader" + "bootloader" "lang" "users" # "hardware" diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix new file mode 100644 index 0000000..da371f6 --- /dev/null +++ b/new_arch/sys/bootloader.nix @@ -0,0 +1,61 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "bootloader"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.${name}; + options.sys.${name} = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + Common = { + }; + Home = { + }; + System = { + boot.loader = { + grub = { + enable = true; + devices = ["nodev"]; + efiSupport = true; + useOSProber = true; + extraEntries = '' + ${builtins.readFile "${../static/grub/00_Arch_Btrfs}"} + ${builtins.readFile "${../static/grub/99_UEFI_Firmware}"} + ''; + }; + efi = { + canTouchEfiVariables = true; + }; + }; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From e9abc67ed93512c8eb9a9eb379b063dfe32731ff Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 11:53:21 -0400 Subject: [PATCH 055/236] feat(build) : making building and checking system possible via VMs !!! To undo once more things are setup --- .gitignore | 3 +++ new_arch/sys/users.nix | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 45520ac..04e836c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ test programs/browsers/toolbar.json programs/browsers/test.json .vscode/settings.json +testfirefox +result +NixOs.qcow2 diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix index 09ac6f4..1057d21 100644 --- a/new_arch/sys/users.nix +++ b/new_arch/sys/users.nix @@ -22,17 +22,20 @@ }; System = { users = { + mutableUsers = false; # BAZINGA defaultUserShell = packages.zsh; users = { matthieu = { + password = "password"; # BAZINGA + ignoreShellProgramCheck = true; # BAZINGA description = "Moi"; isNormalUser = true; group = "users"; extraGroups = [ - "wheel" + "wheel" # Enable sudo for the user. "docker" "libvirtd" - ]; # Enable ‘sudo’ for the user. + ]; createHome = true; home = "/home/matthieu"; /* @@ -41,6 +44,7 @@ ]; */ }; + root.ignoreShellProgramCheck = true; # BAZINGA }; groups = { libvirtd.members = ["matthieu"]; From a95d00a0b1b78e8341ce8353245c32ce36896313 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 11:53:30 -0400 Subject: [PATCH 056/236] feat(fs) : adding fs to sys WIP need modules to be added --- new_arch/sys.nix | 2 +- new_arch/sys/filesystems.nix | 79 ++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 new_arch/sys/filesystems.nix diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 2932396..d747b9b 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -17,7 +17,7 @@ "users" # "hardware" "networking" - # "filesystems" + "filesystems" ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix new file mode 100644 index 0000000..0f78370 --- /dev/null +++ b/new_arch/sys/filesystems.nix @@ -0,0 +1,79 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "filesystems"; + subfolder = "filesystems"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.${name}; + imports = [ + # "ntfs" + # "exfat" + # "btrfs" + ]; + options.sys.${name} = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + # ntfs.enable = lib.mkEnableOption "Enables and configures NTFS filesystem support."; + # exfat.enable = lib.mkEnableOption "Enables and configures exFAT filesystem support."; + # btrfs.enable = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; + }; + settings = { + ntfs.enable = cfg.ntfs.enable; + exfat.enable = cfg.exfat.enable; + btrfs.enable = cfg.btrfs.enable; + }; + inheritedSettings = tools.inheritSettings { + inherit pathNames imports settings; + }; + Common = + inheritedSettings + // { + }; + Home = { + }; + System = { + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.Home) + imports; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.Home) + imports; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 741aa3335956a1016e4dd025823b871ecde32909 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 12:24:05 -0400 Subject: [PATCH 057/236] fix(fs) : fixing a settings --- new_arch/sys/filesystems.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 0f78370..7293d48 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -26,9 +26,9 @@ # btrfs.enable = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; }; settings = { - ntfs.enable = cfg.ntfs.enable; - exfat.enable = cfg.exfat.enable; - btrfs.enable = cfg.btrfs.enable; + ntfs.enable = true; + exfat.enable = true; + btrfs.enable = true; }; inheritedSettings = tools.inheritSettings { inherit pathNames imports settings; From 39cba519a83c03bb0ce0c084982e09fd62460702 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 12:24:25 -0400 Subject: [PATCH 058/236] fix(fs) : fixing import of system module --- new_arch/sys/filesystems.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 7293d48..9378f19 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -71,7 +71,7 @@ in { inherit config lib pkgs-list tools; inherit (Inputs) inputs; oldPathNames = pathNames; - }).config.Home) + }).config.System) imports; config = lib.mkIf cfg.enable SystemConfig; }; From cac058df04771b2a1e828abe9511314922754baf Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 12:25:22 -0400 Subject: [PATCH 059/236] feat(ntfs) : adding ntfs to fs --- new_arch/sys/filesystems.nix | 3 +- new_arch/sys/filesystems/ntfs.nix | 53 +++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 new_arch/sys/filesystems/ntfs.nix diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 9378f19..128dcf7 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -15,13 +15,12 @@ fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; imports = [ - # "ntfs" + "ntfs" # "exfat" # "btrfs" ]; options.sys.${name} = { enable = lib.mkEnableOption "Enables ${name} related settings."; - # ntfs.enable = lib.mkEnableOption "Enables and configures NTFS filesystem support."; # exfat.enable = lib.mkEnableOption "Enables and configures exFAT filesystem support."; # btrfs.enable = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; }; diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix new file mode 100644 index 0000000..b4a7696 --- /dev/null +++ b/new_arch/sys/filesystems/ntfs.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "ntfs"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.filesystems.${name}; + options.sys.filesystems.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; + }; + Common = { + }; + Home = { + }; + System = { + environment.systemPackages = with packages; [ + exfat + exfatprogs + ]; + boot.supportedFilesystems = { + exfat = true; + }; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 17b2c4e599c00313ae9040e8665e37cb52297aa8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 12:26:10 -0400 Subject: [PATCH 060/236] feat(build) : got rid of password for more easy testing --- new_arch/sys/users.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix index 1057d21..c298570 100644 --- a/new_arch/sys/users.nix +++ b/new_arch/sys/users.nix @@ -26,7 +26,7 @@ defaultUserShell = packages.zsh; users = { matthieu = { - password = "password"; # BAZINGA + password = ""; # BAZINGA ignoreShellProgramCheck = true; # BAZINGA description = "Moi"; isNormalUser = true; From 16a152f88d0ce1380fcc563ec2bbec7d952cf0db Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 12:28:50 -0400 Subject: [PATCH 061/236] feat(exfat) : adding exfat to fs --- new_arch/sys/filesystems.nix | 3 +- new_arch/sys/filesystems/exfat.nix | 53 ++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 new_arch/sys/filesystems/exfat.nix diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 128dcf7..5cf0730 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -16,12 +16,11 @@ cfg = config.sys.${name}; imports = [ "ntfs" - # "exfat" + "exfat" # "btrfs" ]; options.sys.${name} = { enable = lib.mkEnableOption "Enables ${name} related settings."; - # exfat.enable = lib.mkEnableOption "Enables and configures exFAT filesystem support."; # btrfs.enable = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; }; settings = { diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix new file mode 100644 index 0000000..682260e --- /dev/null +++ b/new_arch/sys/filesystems/exfat.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "exfat"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.filesystems.${name}; + options.sys.filesystems.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; + }; + Common = { + }; + Home = { + }; + System = { + environment.systemPackages = with packages; [ + ntfs3g + ntfsprogs + ]; + boot.supportedFilesystems = { + ntfs = true; + }; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 2b92b0c6c7445e99aa0e4aea4a9f039a8fe02548 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 12:31:43 -0400 Subject: [PATCH 062/236] feat(btrfs) : adding btrfs to fs --- new_arch/sys/filesystems.nix | 3 +- new_arch/sys/filesystems/btrfs.nix | 52 ++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 new_arch/sys/filesystems/btrfs.nix diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 5cf0730..ae91336 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -17,11 +17,10 @@ imports = [ "ntfs" "exfat" - # "btrfs" + "btrfs" ]; options.sys.${name} = { enable = lib.mkEnableOption "Enables ${name} related settings."; - # btrfs.enable = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; }; settings = { ntfs.enable = true; diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix new file mode 100644 index 0000000..cacdbfe --- /dev/null +++ b/new_arch/sys/filesystems/btrfs.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "btrfs"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.filesystems.${name}; + options.sys.filesystems.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; + }; + Common = { + }; + Home = { + }; + System = { + environment.systemPackages = with packages; [ + btrfs-progs + ]; + boot.supportedFilesystems = { + btrfs = true; + }; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 8286fd3b5e0a77d04f6afa21ad4367e3ae0ac1e7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 13:35:22 -0400 Subject: [PATCH 063/236] feat(hw) : adding hw to sys --- new_arch/sys.nix | 2 +- new_arch/sys/hardware.nix | 93 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 new_arch/sys/hardware.nix diff --git a/new_arch/sys.nix b/new_arch/sys.nix index d747b9b..6d3bdd6 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -15,7 +15,7 @@ "bootloader" "lang" "users" - # "hardware" + "hardware" "networking" "filesystems" ]; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix new file mode 100644 index 0000000..5b34bb7 --- /dev/null +++ b/new_arch/sys/hardware.nix @@ -0,0 +1,93 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "hardware"; + subfolder = "hardware"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.${name}; + imports = [ + # "nvidia.nix" + # "printer.nix" + # "sound.nix" + # "bluetooth.nix" + ]; + options.sys.${name} = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + settings = { + nvidia.enable = false; # FIX : module to fix once a stable and working nvidia version is available + printer.enable = true; + sound.enable = true; + bluetooth.enable = true; + }; + inheritedSettings = tools.inheritSettings { + inherit pathNames imports settings; + }; + Common = + inheritedSettings + // { + }; + Home = { + }; + System = { + # TODO : move bluetooth to its own module + hardware = { + bluetooth.enable = true; + }; + services.blueman.enable = true; + + services = { + libinput.enable = true; # TODO : FIX - not sure where to put it yet + }; + # FIX : dont know where to put that : temporary here + environment.systemPackages = with packages; [ + lshw + iw + usbutils + ]; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.Home) + imports; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + imports = map (file: + (import ./${subfolder}/${file}.nix { + inherit config lib pkgs-list tools; + inherit (Inputs) inputs; + oldPathNames = pathNames; + }).config.System) + imports; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 1f01fc2186579ab951926a2d500f15b4139e69b0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 13:48:33 -0400 Subject: [PATCH 064/236] feat(nvidia) : adding nvidia to hw --- new_arch/sys/hardware.nix | 8 ++-- new_arch/sys/hardware/nvidia.nix | 73 ++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 new_arch/sys/hardware/nvidia.nix diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 5b34bb7..cc9d1a4 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -15,10 +15,10 @@ fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; imports = [ - # "nvidia.nix" - # "printer.nix" - # "sound.nix" - # "bluetooth.nix" + "nvidia" + # "printer" + # "sound" + # "bluetooth" ]; options.sys.${name} = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix new file mode 100644 index 0000000..ffcf399 --- /dev/null +++ b/new_arch/sys/hardware/nvidia.nix @@ -0,0 +1,73 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "nvidia"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.hardware.${name}; + options.sys.hardware.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + Common = { + }; + Home = { + }; + System = { + hardware = { + graphics = { + enable32Bit = true; + enable = true; + }; + nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.latest; + open = true; + modesetting.enable = true; + nvidiaSettings = true; + prime = { + intelBusId = "PCI:0@0:2:0"; + nvidiaBusId = "PCI:0@1:0:0"; + offload = { + enable = true; + enableOffloadCmd = true; + }; + sync.enable = false; + reverseSync.enable = false; + # allowExternalGpus = false; + }; + }; + }; + services.xserver.videoDrivers = [ + "nvidia" + "modesetting" + ]; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From 2264da31431eb3ca7b5b345433042bee4d40c3dc Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 13:51:59 -0400 Subject: [PATCH 065/236] feat(sound) : adding sound to hw --- new_arch/sys/hardware.nix | 2 +- new_arch/sys/hardware/sound.nix | 50 +++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 new_arch/sys/hardware/sound.nix diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index cc9d1a4..76180a1 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -17,7 +17,7 @@ imports = [ "nvidia" # "printer" - # "sound" + "sound" # "bluetooth" ]; options.sys.${name} = { diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix new file mode 100644 index 0000000..28c56fc --- /dev/null +++ b/new_arch/sys/hardware/sound.nix @@ -0,0 +1,50 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "sound"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.hardware.${name}; + options.sys.hardware.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + Common = { + }; + Home = { + }; + System = { + services.pipewire = { + enable = true; + pulse.enable = true; + }; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From de9607da063b42b0726692055bdd032c8a9c5d5b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 14:02:39 -0400 Subject: [PATCH 066/236] feat(printer) : adding printer to hw --- new_arch/sys/hardware.nix | 4 +-- new_arch/sys/hardware/printer.nix | 50 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 new_arch/sys/hardware/printer.nix diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 76180a1..0d91518 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -16,7 +16,7 @@ cfg = config.sys.${name}; imports = [ "nvidia" - # "printer" + "printer" "sound" # "bluetooth" ]; @@ -27,7 +27,7 @@ nvidia.enable = false; # FIX : module to fix once a stable and working nvidia version is available printer.enable = true; sound.enable = true; - bluetooth.enable = true; + # bluetooth.enable = true; #TODO : move bluetooth to its own module }; inheritedSettings = tools.inheritSettings { inherit pathNames imports settings; diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix new file mode 100644 index 0000000..8177487 --- /dev/null +++ b/new_arch/sys/hardware/printer.nix @@ -0,0 +1,50 @@ +{ + config, + lib, + pkgs-list, + oldPathNames, + tools, + ... +} @ Inputs: let + name = "printer"; + main-repo = "nix"; + branch = "latest"; + packages = pkgs-list.${main-repo}.${branch}; + pathNames = oldPathNames ++ [name]; + fullPath = lib.concatStringsSep "." pathNames; + cfg = config.sys.hardware.${name}; + options.sys.hardware.${name} = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + Common = { + }; + Home = { + }; + System = { + services.printing.enable = true; + environment.systemPackages = with packages; [ + cnijfilter2 + ]; + }; + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable HomeConfig; + }; + System = { + lib, + config, + ... + }: { + inherit options; + config = lib.mkIf cfg.enable SystemConfig; + }; + }; +} From ff38e88158558bf752ca1d6ada45c785deccb774 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 14:18:20 -0400 Subject: [PATCH 067/236] notes() : puttings notes, fixme, feat in files for future stuff --- new_arch/sys/bootloader.nix | 1 + new_arch/sys/hardware/nvidia.nix | 1 + new_arch/sys/networking.nix | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index da371f6..7fee1cf 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -27,6 +27,7 @@ devices = ["nodev"]; efiSupport = true; useOSProber = true; + # FEAT : maybe move static files in dedicated folder. extraEntries = '' ${builtins.readFile "${../static/grub/00_Arch_Btrfs}"} ${builtins.readFile "${../static/grub/99_UEFI_Firmware}"} diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index ffcf399..c1c4893 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -1,3 +1,4 @@ +# TODO : FIX !!! { config, lib, diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index b1705ab..d19c767 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -22,7 +22,7 @@ }; System = { networking = { - hostName = "NixOs"; + hostName = "NixOs"; # FEAT : make this part of baseSettings networkmanager = { enable = true; plugins = with packages; [ @@ -46,6 +46,7 @@ # proxy.default = "http://user:password@proxy:port/"; # proxy.noProxy = "127.0.0.1,localhost,internal.domain"; }; + # FEAT : maybe something dedicated to ssh ? services = { openssh.enable = true; }; ## TODO : FIX OPENSSH @@ -54,6 +55,7 @@ iproute2 bridge-utils ]; + ## FEAT : maybe move somewhere else ? }; HomeConfig = Common // Home; SystemConfig = Common // System; From 73441f3ca3d2aa9ea15c593bda4d6dc5acab1793 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 15:25:56 -0400 Subject: [PATCH 068/236] feat(import-fn) : adding an import function to get closer to a universal module format --- new_arch/tools.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index a69ef55..119728c 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -76,6 +76,20 @@ }); }) imports); + contextModuleImport = { + imports, + subfolder, + context, + ... + } @ basicDependencies: + map (file: + (import ./${subfolder}/${file}.nix { + inherit (basicDependencies) inputs config lib pkgs-list tools; + oldPathNames = basicDependencies.pathNames; + }).config.${ + context + }) + imports; universalModule = { lib, @@ -147,6 +161,6 @@ }; }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule; + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport; # multiContextModule; } From 87fbe9c5c5c049b21bfe20f53db8a07a86153288 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 15:44:18 -0400 Subject: [PATCH 069/236] feat(config-fn) : adding an config function to get closer to a universal module format --- new_arch/tools.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index 119728c..de5bd5f 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -91,6 +91,20 @@ }) imports; + inheritConfig = { + pathNames, + config, + }: let + first = lib.lists.last (lib.lists.take 1 pathNames); + in + if (pathNames == []) + then config + else + inheritConfig { + pathNames = lib.lists.drop 1 pathNames; + config = config.${first}; + }; + universalModule = { lib, config, @@ -161,6 +175,6 @@ }; }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport; + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport inheritConfig; # multiContextModule; } From 67b2afb9e5ed2b6fd6a6345d5a1f099a9b394dbb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 17:13:51 -0400 Subject: [PATCH 070/236] feat(options-fn) : adding an options function to get closer to a universal module format --- new_arch/tools.nix | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index de5bd5f..e3acd06 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -105,6 +105,25 @@ config = config.${first}; }; + inheritOptions = { + pathNames, + opt, + }: let + first = lib.lists.last (lib.lists.take 1 pathNames); + in (lib.listToAttrs [ + { + name = first; + value = + if (pathNames == [first]) + then opt + else + inheritOptions { + pathNames = lib.lists.drop 1 pathNames; + inherit opt; + }; + } + ]); + universalModule = { lib, config, @@ -175,6 +194,6 @@ }; }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport inheritConfig; + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport inheritConfig inheritOptions; # multiContextModule; } From b8ba6bc507471f5584a68cf15d3c755d17a86f6d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 17:18:36 -0400 Subject: [PATCH 071/236] refactor(tools) : renamed argument of inheritOptions --- new_arch/tools.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index e3acd06..a0298d6 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -107,7 +107,7 @@ inheritOptions = { pathNames, - opt, + options, }: let first = lib.lists.last (lib.lists.take 1 pathNames); in (lib.listToAttrs [ @@ -115,11 +115,11 @@ name = first; value = if (pathNames == [first]) - then opt + then options else inheritOptions { pathNames = lib.lists.drop 1 pathNames; - inherit opt; + inherit options; }; } ]); From f86f71c4e2d23b9179b3ad6de1cec17eb79148fb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 18:16:12 -0400 Subject: [PATCH 072/236] fix(tools) : path error for nested modules in import function fixed WIP --- new_arch/tools.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index a0298d6..34c052c 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -80,10 +80,11 @@ imports, subfolder, context, + currentDirPath, ... } @ basicDependencies: map (file: - (import ./${subfolder}/${file}.nix { + (import ./${currentDirPath}/${subfolder}/${file}.nix { inherit (basicDependencies) inputs config lib pkgs-list tools; oldPathNames = basicDependencies.pathNames; }).config.${ From 8b0ded5da2f061348bd736c3dfdfff4df8f72fa5 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 18:17:04 -0400 Subject: [PATCH 073/236] refactor(import) : replaced old manual function everywhere --- new_arch/progs.nix | 30 ++++++++++++++---------------- new_arch/sys.nix | 14 ++++++-------- new_arch/sys/filesystems.nix | 25 +++++++++++-------------- new_arch/sys/hardware.nix | 25 +++++++++++-------------- 4 files changed, 42 insertions(+), 52 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 0b42258..35b2075 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -25,6 +25,7 @@ oldPathNames = []; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); newSettings.${name} = { }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; @@ -77,15 +78,14 @@ in { config, ... }: { - imports = - map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.Home) - (imports - ++ homeImport); + imports = tools.contextModuleImport { + imports = + imports + ++ homeImport; + inherit subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "Home"; + }; config = HomeConfig; }; System = { @@ -93,13 +93,11 @@ in { config, ... }: { - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; + imports = tools.contextModuleImport { + inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "System"; + }; config = SystemConfig; }; }; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 6d3bdd6..542c5b4 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -22,6 +22,7 @@ oldPathNames = []; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; # NOTE : Doesnt work as intended, need a function to generate the full path + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); options.sys = { version = lib.mkOption { type = lib.types.str; @@ -44,14 +45,11 @@ }; in { inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix - { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; + imports = tools.contextModuleImport { + inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "System"; + }; config = inheritedSettings // { diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index ae91336..f58faff 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -13,6 +13,7 @@ packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; + currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." oldPathNames])); cfg = config.sys.${name}; imports = [ "ntfs" @@ -48,13 +49,11 @@ in { ... }: { inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.Home) - imports; + imports = tools.contextModuleImport { + inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "Home"; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -63,13 +62,11 @@ in { ... }: { inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; + imports = tools.contextModuleImport { + inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "System"; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 0d91518..0165edf 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -12,6 +12,7 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; imports = [ @@ -65,13 +66,11 @@ in { ... }: { inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.Home) - imports; + imports = tools.contextModuleImport { + inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "Home"; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -80,13 +79,11 @@ in { ... }: { inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; + imports = tools.contextModuleImport { + inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit (Inputs) inputs; + context = "System"; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; From 32729e095b5bf63d40bb814aedcea793519a43f4 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 18:25:09 -0400 Subject: [PATCH 074/236] refactor(options) : replaced old manual function everywhere --- new_arch/flake.lock | 258 +++++++++++++++++++++++++++++ new_arch/sys.nix | 6 +- new_arch/sys/bootloader.nix | 10 +- new_arch/sys/filesystems.nix | 10 +- new_arch/sys/filesystems/btrfs.nix | 10 +- new_arch/sys/filesystems/exfat.nix | 10 +- new_arch/sys/filesystems/ntfs.nix | 10 +- new_arch/sys/hardware.nix | 10 +- new_arch/sys/hardware/nvidia.nix | 10 +- new_arch/sys/hardware/printer.nix | 10 +- new_arch/sys/hardware/sound.nix | 10 +- new_arch/sys/lang.nix | 10 +- new_arch/sys/networking.nix | 10 +- 13 files changed, 339 insertions(+), 35 deletions(-) create mode 100644 new_arch/flake.lock diff --git a/new_arch/flake.lock b/new_arch/flake.lock new file mode 100644 index 0000000..2345d9e --- /dev/null +++ b/new_arch/flake.lock @@ -0,0 +1,258 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nur-klassy-version", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nur-latest-pkgs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "nur-unstable-pkgs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "latestPkgs" + ] + }, + "locked": { + "lastModified": 1775425411, + "narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "home-manager", + "type": "github" + } + }, + "latestPkgs": { + "locked": { + "lastModified": 1776067740, + "narHash": "sha256-B35lpsqnSZwn1Lmz06BpwF7atPgFmUgw1l8KAV3zpVQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "7e495b747b51f95ae15e74377c5ce1fe69c1765f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1766070988, + "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur-klassy-version": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1766421218, + "narHash": "sha256-At7jWdyYghMHUz7A0b19JdOSPyMxbU24xrVCSjCz6cw=", + "owner": "nix-community", + "repo": "nur", + "rev": "82a02f13454ca5b23248d9fe8fb15618a11b09f0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nur", + "rev": "82a02f13454ca5b23248d9fe8fb15618a11b09f0", + "type": "github" + } + }, + "nur-latest-pkgs": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "latestPkgs" + ] + }, + "locked": { + "lastModified": 1776202455, + "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", + "owner": "nix-community", + "repo": "nur", + "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nur", + "type": "github" + } + }, + "nur-unstable-pkgs": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": [ + "unstablePkgs" + ] + }, + "locked": { + "lastModified": 1776202455, + "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", + "owner": "nix-community", + "repo": "nur", + "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nur", + "type": "github" + } + }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "latestPkgs" + ] + }, + "locked": { + "lastModified": 1775856943, + "narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "latestPkgs": "latestPkgs", + "nur-klassy-version": "nur-klassy-version", + "nur-latest-pkgs": "nur-latest-pkgs", + "nur-unstable-pkgs": "nur-unstable-pkgs", + "plasma-manager": "plasma-manager", + "unstablePkgs": "unstablePkgs", + "zen-browser": "zen-browser" + } + }, + "unstablePkgs": { + "locked": { + "lastModified": 1775710090, + "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "4c1018dae018162ec878d42fec712642d214fdfa", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "zen-browser": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "unstablePkgs" + ] + }, + "locked": { + "lastModified": 1776144279, + "narHash": "sha256-eX3u6wJ34+qu7ZR1qWOaToGWmudYQSOEStZZm6goP+8=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "727de8a44c85e90f899c540cf3ffa0d5d3344f9c", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 542c5b4..4c5b011 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -23,7 +23,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; # NOTE : Doesnt work as intended, need a function to generate the full path currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); - options.sys = { + options = { version = lib.mkOption { type = lib.types.str; default = "25.11"; @@ -44,7 +44,9 @@ inherit imports; }; in { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; imports = tools.contextModuleImport { inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; inherit (Inputs) inputs; diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index 7fee1cf..4c1f700 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; - options.sys.${name} = { + options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; Common = { @@ -47,7 +47,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -55,7 +57,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index f58faff..287b919 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -20,7 +20,7 @@ "exfat" "btrfs" ]; - options.sys.${name} = { + options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; settings = { @@ -48,7 +48,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; imports = tools.contextModuleImport { inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; inherit (Inputs) inputs; @@ -61,7 +63,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; imports = tools.contextModuleImport { inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; inherit (Inputs) inputs; diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix index cacdbfe..4fc7d3e 100644 --- a/new_arch/sys/filesystems/btrfs.nix +++ b/new_arch/sys/filesystems/btrfs.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.filesystems.${name}; - options.sys.filesystems.${name} = { + options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; Common = { @@ -37,7 +37,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -45,7 +47,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix index 682260e..3203957 100644 --- a/new_arch/sys/filesystems/exfat.nix +++ b/new_arch/sys/filesystems/exfat.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.filesystems.${name}; - options.sys.filesystems.${name} = { + options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; Common = { @@ -38,7 +38,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -46,7 +48,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix index b4a7696..f3f7b93 100644 --- a/new_arch/sys/filesystems/ntfs.nix +++ b/new_arch/sys/filesystems/ntfs.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.filesystems.${name}; - options.sys.filesystems.${name} = { + options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; Common = { @@ -38,7 +38,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -46,7 +48,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 0165edf..0fadd5c 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -21,7 +21,7 @@ "sound" # "bluetooth" ]; - options.sys.${name} = { + options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; settings = { @@ -65,7 +65,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; imports = tools.contextModuleImport { inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; inherit (Inputs) inputs; @@ -78,7 +80,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; imports = tools.contextModuleImport { inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; inherit (Inputs) inputs; diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index c1c4893..c618080 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -14,7 +14,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.hardware.${name}; - options.sys.hardware.${name} = { + options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; Common = { @@ -59,7 +59,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -67,7 +69,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix index 8177487..d5e35b3 100644 --- a/new_arch/sys/hardware/printer.nix +++ b/new_arch/sys/hardware/printer.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.hardware.${name}; - options.sys.hardware.${name} = { + options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; Common = { @@ -35,7 +35,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -43,7 +45,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix index 28c56fc..a228579 100644 --- a/new_arch/sys/hardware/sound.nix +++ b/new_arch/sys/hardware/sound.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.hardware.${name}; - options.sys.hardware.${name} = { + options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; Common = { @@ -35,7 +35,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -43,7 +45,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix index 764be25..0b50166 100644 --- a/new_arch/sys/lang.nix +++ b/new_arch/sys/lang.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; - options.sys.${name} = { + options = { enable = lib.mkEnableOption "Enables ${name} related settings."; timeZone = lib.mkOption { type = lib.types.str; @@ -55,7 +55,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -63,7 +65,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index d19c767..2e0dc35 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -13,7 +13,7 @@ pathNames = oldPathNames ++ [name]; fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; - options.sys.${name} = { + options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; Common = { @@ -66,7 +66,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -74,7 +76,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit pathNames options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; From 2a845955077aa88fbf1f84912d6b151fb8eb1199 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 18:38:27 -0400 Subject: [PATCH 075/236] refactor(clean) : got rid of fullpath --- new_arch/progs.nix | 1 - new_arch/sys.nix | 1 - new_arch/sys/bootloader.nix | 1 - new_arch/sys/filesystems.nix | 1 - new_arch/sys/filesystems/btrfs.nix | 1 - new_arch/sys/filesystems/exfat.nix | 1 - new_arch/sys/filesystems/ntfs.nix | 1 - new_arch/sys/hardware.nix | 1 - new_arch/sys/hardware/nvidia.nix | 1 - new_arch/sys/hardware/printer.nix | 1 - new_arch/sys/hardware/sound.nix | 1 - new_arch/sys/lang.nix | 1 - new_arch/sys/networking.nix | 1 - 13 files changed, 13 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 35b2075..d1a5ad0 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -24,7 +24,6 @@ ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); newSettings.${name} = { }; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 4c5b011..7bf4fe4 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -21,7 +21,6 @@ ]; oldPathNames = []; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; # NOTE : Doesnt work as intended, need a function to generate the full path currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); options = { version = lib.mkOption { diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index 4c1f700..933da6c 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 287b919..c8d26d8 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -12,7 +12,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." oldPathNames])); cfg = config.sys.${name}; imports = [ diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix index 4fc7d3e..f24ae2b 100644 --- a/new_arch/sys/filesystems/btrfs.nix +++ b/new_arch/sys/filesystems/btrfs.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix index 3203957..dcfe596 100644 --- a/new_arch/sys/filesystems/exfat.nix +++ b/new_arch/sys/filesystems/exfat.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix index f3f7b93..e2cfae1 100644 --- a/new_arch/sys/filesystems/ntfs.nix +++ b/new_arch/sys/filesystems/ntfs.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 0fadd5c..2861b64 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -13,7 +13,6 @@ packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; imports = [ "nvidia" diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index c618080..9d66961 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -12,7 +12,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix index d5e35b3..1933078 100644 --- a/new_arch/sys/hardware/printer.nix +++ b/new_arch/sys/hardware/printer.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix index a228579..044d896 100644 --- a/new_arch/sys/hardware/sound.nix +++ b/new_arch/sys/hardware/sound.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix index 0b50166..163a7aa 100644 --- a/new_arch/sys/lang.nix +++ b/new_arch/sys/lang.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index 2e0dc35..f8b29ad 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -11,7 +11,6 @@ branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; From 8f5b5d58c141490a0d610c0bb7cef512842c9f65 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 18:52:39 -0400 Subject: [PATCH 076/236] refactor(oldPath) : changed the name to parentsPathList --- new_arch/configuration.nix | 4 ++-- new_arch/home.nix | 2 +- new_arch/progs.nix | 6 +++--- new_arch/sys.nix | 6 +++--- new_arch/sys/bootloader.nix | 4 ++-- new_arch/sys/filesystems.nix | 6 +++--- new_arch/sys/filesystems/btrfs.nix | 4 ++-- new_arch/sys/filesystems/exfat.nix | 4 ++-- new_arch/sys/filesystems/ntfs.nix | 4 ++-- new_arch/sys/hardware.nix | 6 +++--- new_arch/sys/hardware/nvidia.nix | 4 ++-- new_arch/sys/hardware/printer.nix | 4 ++-- new_arch/sys/hardware/sound.nix | 4 ++-- new_arch/sys/lang.nix | 4 ++-- new_arch/sys/networking.nix | 4 ++-- new_arch/tools.nix | 2 +- 16 files changed, 34 insertions(+), 34 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index 9789d79..a177305 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -11,7 +11,7 @@ import_with_args = file: context: (import file { inherit config lib inputs pkgs-list tools baseSettings; - oldPathNames = []; + parentsPathList = []; }).config.${ context }; @@ -22,7 +22,7 @@ in { ./sys.nix { inherit config lib pkgs-list tools inputs baseSettings; - oldPathNames = []; + parentsPathList = []; }) ] ++ [ diff --git a/new_arch/home.nix b/new_arch/home.nix index b43832c..9a4d445 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -15,7 +15,7 @@ in { (import ./${mainModule}.nix { inherit config lib pkgs-list tools baseSettings; inherit (Inputs) inputs; - oldPathNames = []; + parentsPathList = []; }).config.Home) imports; diff --git a/new_arch/progs.nix b/new_arch/progs.nix index d1a5ad0..40c8158 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -22,9 +22,9 @@ homeImport = [ # "browsers" ]; - oldPathNames = []; - pathNames = oldPathNames ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); + parentsPathList = []; + pathNames = parentsPathList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); newSettings.${name} = { }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 7bf4fe4..8e774d4 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -19,9 +19,9 @@ "networking" "filesystems" ]; - oldPathNames = []; - pathNames = oldPathNames ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); + parentsPathList = []; + pathNames = parentsPathList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); options = { version = lib.mkOption { type = lib.types.str; diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index 933da6c..327028e 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index c8d26d8..a42fbd7 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -11,8 +11,8 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." oldPathNames])); + pathNames = parentsPathList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentsPathList])); cfg = config.sys.${name}; imports = [ "ntfs" diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix index f24ae2b..7eedd88 100644 --- a/new_arch/sys/filesystems/btrfs.nix +++ b/new_arch/sys/filesystems/btrfs.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix index dcfe596..aced452 100644 --- a/new_arch/sys/filesystems/exfat.nix +++ b/new_arch/sys/filesystems/exfat.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix index e2cfae1..1245022 100644 --- a/new_arch/sys/filesystems/ntfs.nix +++ b/new_arch/sys/filesystems/ntfs.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 2861b64..097fbaf 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -11,8 +11,8 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." oldPathNames]); + pathNames = parentsPathList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); cfg = config.sys.${name}; imports = [ "nvidia" diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index 9d66961..20b67df 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -3,7 +3,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -11,7 +11,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix index 1933078..18def73 100644 --- a/new_arch/sys/hardware/printer.nix +++ b/new_arch/sys/hardware/printer.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix index 044d896..f1bd4cd 100644 --- a/new_arch/sys/hardware/sound.nix +++ b/new_arch/sys/hardware/sound.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix index 163a7aa..17b7b65 100644 --- a/new_arch/sys/lang.nix +++ b/new_arch/sys/lang.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index f8b29ad..96dc43e 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - oldPathNames, + parentsPathList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; + pathNames = parentsPathList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/tools.nix b/new_arch/tools.nix index 34c052c..bb186fa 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -86,7 +86,7 @@ map (file: (import ./${currentDirPath}/${subfolder}/${file}.nix { inherit (basicDependencies) inputs config lib pkgs-list tools; - oldPathNames = basicDependencies.pathNames; + parentsPathList = basicDependencies.pathNames; }).config.${ context }) From bad513c9794031c3f6ced2a8ebea28b27d5108c9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 19:02:09 -0400 Subject: [PATCH 077/236] refactor(pathNames) : changed the name to currentPathAsList --- new_arch/progs.nix | 8 ++++---- new_arch/sys.nix | 8 ++++---- new_arch/sys/bootloader.nix | 6 +++--- new_arch/sys/filesystems.nix | 12 ++++++------ new_arch/sys/filesystems/btrfs.nix | 6 +++--- new_arch/sys/filesystems/exfat.nix | 6 +++--- new_arch/sys/filesystems/ntfs.nix | 6 +++--- new_arch/sys/hardware.nix | 12 ++++++------ new_arch/sys/hardware/nvidia.nix | 6 +++--- new_arch/sys/hardware/printer.nix | 6 +++--- new_arch/sys/hardware/sound.nix | 6 +++--- new_arch/sys/lang.nix | 6 +++--- new_arch/sys/networking.nix | 6 +++--- new_arch/tools.nix | 28 ++++++++++++++-------------- 14 files changed, 61 insertions(+), 61 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 40c8158..f17b86b 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -23,14 +23,14 @@ # "browsers" ]; parentsPathList = []; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); newSettings.${name} = { }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; inheritedSettings = tools.inheritSettings { inherit settings; - inherit pathNames; + inherit currentPathAsList; inherit imports; }; Common = @@ -81,7 +81,7 @@ in { imports = imports ++ homeImport; - inherit subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "Home"; }; @@ -93,7 +93,7 @@ in { ... }: { imports = tools.contextModuleImport { - inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "System"; }; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index 8e774d4..f1b2962 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -20,7 +20,7 @@ "filesystems" ]; parentsPathList = []; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); options = { version = lib.mkOption { @@ -39,15 +39,15 @@ settings = (lib.recursiveUpdate baseSettings newSettings).${name}; inheritedSettings = tools.inheritSettings { inherit settings; - inherit pathNames; + inherit currentPathAsList; inherit imports; }; in { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; imports = tools.contextModuleImport { - inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "System"; }; diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index 327028e..89bf7f4 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; @@ -47,7 +47,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -57,7 +57,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index a42fbd7..9564538 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -11,7 +11,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentsPathList])); cfg = config.sys.${name}; imports = [ @@ -28,7 +28,7 @@ btrfs.enable = true; }; inheritedSettings = tools.inheritSettings { - inherit pathNames imports settings; + inherit currentPathAsList imports settings; }; Common = inheritedSettings @@ -48,10 +48,10 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; imports = tools.contextModuleImport { - inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "Home"; }; @@ -63,10 +63,10 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; imports = tools.contextModuleImport { - inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "System"; }; diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix index 7eedd88..bccafd1 100644 --- a/new_arch/sys/filesystems/btrfs.nix +++ b/new_arch/sys/filesystems/btrfs.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; @@ -37,7 +37,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -47,7 +47,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix index aced452..eb5b1cf 100644 --- a/new_arch/sys/filesystems/exfat.nix +++ b/new_arch/sys/filesystems/exfat.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; @@ -38,7 +38,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -48,7 +48,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix index 1245022..66a0d3a 100644 --- a/new_arch/sys/filesystems/ntfs.nix +++ b/new_arch/sys/filesystems/ntfs.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; @@ -38,7 +38,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -48,7 +48,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 097fbaf..bb9d7cf 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -11,7 +11,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); cfg = config.sys.${name}; imports = [ @@ -30,7 +30,7 @@ # bluetooth.enable = true; #TODO : move bluetooth to its own module }; inheritedSettings = tools.inheritSettings { - inherit pathNames imports settings; + inherit currentPathAsList imports settings; }; Common = inheritedSettings @@ -65,10 +65,10 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; imports = tools.contextModuleImport { - inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "Home"; }; @@ -80,10 +80,10 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; imports = tools.contextModuleImport { - inherit imports subfolder tools pathNames lib config pkgs-list currentDirPath; + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; inherit (Inputs) inputs; context = "System"; }; diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index 20b67df..9eda023 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -11,7 +11,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; @@ -59,7 +59,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -69,7 +69,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix index 18def73..4b66852 100644 --- a/new_arch/sys/hardware/printer.nix +++ b/new_arch/sys/hardware/printer.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; @@ -35,7 +35,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -45,7 +45,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix index f1bd4cd..78c5e54 100644 --- a/new_arch/sys/hardware/sound.nix +++ b/new_arch/sys/hardware/sound.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; @@ -35,7 +35,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -45,7 +45,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix index 17b7b65..cb0c459 100644 --- a/new_arch/sys/lang.nix +++ b/new_arch/sys/lang.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; @@ -55,7 +55,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -65,7 +65,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index 96dc43e..99b4bb7 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - pathNames = parentsPathList ++ [name]; + currentPathAsList = parentsPathList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; @@ -66,7 +66,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable HomeConfig; }; @@ -76,7 +76,7 @@ in { ... }: { options = tools.inheritOptions { - inherit pathNames options; + inherit currentPathAsList options; }; config = lib.mkIf cfg.enable SystemConfig; }; diff --git a/new_arch/tools.nix b/new_arch/tools.nix index bb186fa..c3f7147 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -54,23 +54,23 @@ }; }; inheritSettings = { - pathNames, + currentPathAsList, imports, settings, }: let - first = lib.lists.last (lib.lists.take 1 pathNames); + first = lib.lists.last (lib.lists.take 1 currentPathAsList); in builtins.listToAttrs (map (setting: { name = - if (pathNames == []) + if (currentPathAsList == []) then setting else first; value = - if (pathNames == []) + if (currentPathAsList == []) then settings.${setting} else (inheritSettings { - pathNames = lib.lists.drop 1 pathNames; + currentPathAsList = lib.lists.drop 1 currentPathAsList; imports = imports; settings = settings; }); @@ -86,40 +86,40 @@ map (file: (import ./${currentDirPath}/${subfolder}/${file}.nix { inherit (basicDependencies) inputs config lib pkgs-list tools; - parentsPathList = basicDependencies.pathNames; + parentsPathList = basicDependencies.currentPathAsList; }).config.${ context }) imports; inheritConfig = { - pathNames, + currentPathAsList, config, }: let - first = lib.lists.last (lib.lists.take 1 pathNames); + first = lib.lists.last (lib.lists.take 1 currentPathAsList); in - if (pathNames == []) + if (currentPathAsList == []) then config else inheritConfig { - pathNames = lib.lists.drop 1 pathNames; + currentPathAsList = lib.lists.drop 1 currentPathAsList; config = config.${first}; }; inheritOptions = { - pathNames, + currentPathAsList, options, }: let - first = lib.lists.last (lib.lists.take 1 pathNames); + first = lib.lists.last (lib.lists.take 1 currentPathAsList); in (lib.listToAttrs [ { name = first; value = - if (pathNames == [first]) + if (currentPathAsList == [first]) then options else inheritOptions { - pathNames = lib.lists.drop 1 pathNames; + currentPathAsList = lib.lists.drop 1 currentPathAsList; inherit options; }; } From 114f2450e78bf7115b3cb6ee21d3b31249f2f878 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 19:03:31 -0400 Subject: [PATCH 078/236] refactor(parentsPathList) : changed the name to parentsAsPathList --- new_arch/configuration.nix | 4 ++-- new_arch/home.nix | 2 +- new_arch/progs.nix | 6 +++--- new_arch/sys.nix | 6 +++--- new_arch/sys/bootloader.nix | 4 ++-- new_arch/sys/filesystems.nix | 6 +++--- new_arch/sys/filesystems/btrfs.nix | 4 ++-- new_arch/sys/filesystems/exfat.nix | 4 ++-- new_arch/sys/filesystems/ntfs.nix | 4 ++-- new_arch/sys/hardware.nix | 6 +++--- new_arch/sys/hardware/nvidia.nix | 4 ++-- new_arch/sys/hardware/printer.nix | 4 ++-- new_arch/sys/hardware/sound.nix | 4 ++-- new_arch/sys/lang.nix | 4 ++-- new_arch/sys/networking.nix | 4 ++-- new_arch/tools.nix | 2 +- programs/misc.nix | 9 ++++++--- 17 files changed, 40 insertions(+), 37 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index a177305..81e6f73 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -11,7 +11,7 @@ import_with_args = file: context: (import file { inherit config lib inputs pkgs-list tools baseSettings; - parentsPathList = []; + parentPathAsList = []; }).config.${ context }; @@ -22,7 +22,7 @@ in { ./sys.nix { inherit config lib pkgs-list tools inputs baseSettings; - parentsPathList = []; + parentPathAsList = []; }) ] ++ [ diff --git a/new_arch/home.nix b/new_arch/home.nix index 9a4d445..088e665 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -15,7 +15,7 @@ in { (import ./${mainModule}.nix { inherit config lib pkgs-list tools baseSettings; inherit (Inputs) inputs; - parentsPathList = []; + parentPathAsList = []; }).config.Home) imports; diff --git a/new_arch/progs.nix b/new_arch/progs.nix index f17b86b..e5a7ce7 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -22,9 +22,9 @@ homeImport = [ # "browsers" ]; - parentsPathList = []; - currentPathAsList = parentsPathList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); + parentPathAsList = []; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); newSettings.${name} = { }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; diff --git a/new_arch/sys.nix b/new_arch/sys.nix index f1b2962..a25a45b 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -19,9 +19,9 @@ "networking" "filesystems" ]; - parentsPathList = []; - currentPathAsList = parentsPathList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); + parentPathAsList = []; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); options = { version = lib.mkOption { type = lib.types.str; diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index 89bf7f4..124a1b3 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 9564538..1b82ce4 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -11,8 +11,8 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentsPathList])); + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentPathAsList])); cfg = config.sys.${name}; imports = [ "ntfs" diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix index bccafd1..aa576ea 100644 --- a/new_arch/sys/filesystems/btrfs.nix +++ b/new_arch/sys/filesystems/btrfs.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix index eb5b1cf..37b8db5 100644 --- a/new_arch/sys/filesystems/exfat.nix +++ b/new_arch/sys/filesystems/exfat.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix index 66a0d3a..fd55a40 100644 --- a/new_arch/sys/filesystems/ntfs.nix +++ b/new_arch/sys/filesystems/ntfs.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.filesystems.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index bb9d7cf..249ebfa 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -11,8 +11,8 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentsPathList]); + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); cfg = config.sys.${name}; imports = [ "nvidia" diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index 9eda023..6699b65 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -3,7 +3,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -11,7 +11,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix index 4b66852..fc8c57c 100644 --- a/new_arch/sys/hardware/printer.nix +++ b/new_arch/sys/hardware/printer.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix index 78c5e54..2f18a7f 100644 --- a/new_arch/sys/hardware/sound.nix +++ b/new_arch/sys/hardware/sound.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.hardware.${name}; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix index cb0c459..a3aade3 100644 --- a/new_arch/sys/lang.nix +++ b/new_arch/sys/lang.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index 99b4bb7..bbbbf5f 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -2,7 +2,7 @@ config, lib, pkgs-list, - parentsPathList, + parentPathAsList, tools, ... } @ Inputs: let @@ -10,7 +10,7 @@ main-repo = "nix"; branch = "latest"; packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentsPathList ++ [name]; + currentPathAsList = parentPathAsList ++ [name]; cfg = config.sys.${name}; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/new_arch/tools.nix b/new_arch/tools.nix index c3f7147..a54e494 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -86,7 +86,7 @@ map (file: (import ./${currentDirPath}/${subfolder}/${file}.nix { inherit (basicDependencies) inputs config lib pkgs-list tools; - parentsPathList = basicDependencies.currentPathAsList; + parentPathAsList = basicDependencies.currentPathAsList; }).config.${ context }) diff --git a/programs/misc.nix b/programs/misc.nix index 6a49956..7a95bb1 100644 --- a/programs/misc.nix +++ b/programs/misc.nix @@ -6,9 +6,9 @@ } @ Inputs: let name = "misc"; subfolder = "misc"; - # repo = "nix"; - # branch = "latest"; - # packages = pkgs-list.${repo}.${branch}; + repo = "nix"; + branch = "latest"; + packages = pkgs-list.${repo}.${branch}; options.${name} = { enable = lib.mkEnableOption "Enables and configures ${name}"; ledger = lib.mkEnableOption "Enables and configures Ledger support."; @@ -53,6 +53,9 @@ in { }).config.Home) ["ledger" "kdeconnect"]; config = lib.mkIf cfg.enable { inherit (settings) ledger bambu-studio bitwarden fastfetch iso-image-writer vesktop kdeconnect; + home.packages = with packages; [ + vlc + ]; }; }; System = { From 962c9295c54ccb90b0053d837018d1f8005b6855 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 19:53:32 -0400 Subject: [PATCH 079/236] refactor(hw+users) : restructured and organized arguments to make 2 templates --- new_arch/sys/hardware.nix | 15 +++++++++++---- new_arch/sys/users.nix | 33 +++++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 249ebfa..16ef7fc 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -6,14 +6,11 @@ tools, ... } @ Inputs: let + # Defined by user name = "hardware"; subfolder = "hardware"; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = config.sys.${name}; imports = [ "nvidia" "printer" @@ -29,6 +26,12 @@ sound.enable = true; # bluetooth.enable = true; #TODO : move bluetooth to its own module }; + ##### + # programmatically generated first + packages = pkgs-list.${main-repo}.${branch}; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = config.sys.${name}; inheritedSettings = tools.inheritSettings { inherit currentPathAsList imports settings; }; @@ -36,6 +39,8 @@ inheritedSettings // { }; + ##### + # Second definition by user (can use packages and cfg) Home = { }; System = { @@ -55,6 +60,8 @@ usbutils ]; }; + ##### + # programmatically generated then HomeConfig = Common // Home; SystemConfig = Common // System; in { diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix index c298570..361dcdf 100644 --- a/new_arch/sys/users.nix +++ b/new_arch/sys/users.nix @@ -2,22 +2,32 @@ config, lib, pkgs-list, - oldPathNames, + parentPathAsList, tools, ... } @ Inputs: let + # Defined by user name = "users"; + # subfolder = ""; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.sys.${name}; - options.sys.${name} = { + imports = []; + options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; + ##### + # programmatically generated first + packages = pkgs-list.${main-repo}.${branch}; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; Common = { }; + ##### + # Second definition by user (can use packages and cfg) + settings = {}; Home = { }; System = { @@ -51,8 +61,11 @@ }; }; }; + ##### + # programmatically generated then HomeConfig = Common // Home; SystemConfig = Common // System; + ### in { config = { Home = { @@ -60,7 +73,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit currentPathAsList options; + }; config = lib.mkIf cfg.enable HomeConfig; }; System = { @@ -68,7 +83,9 @@ in { config, ... }: { - inherit options; + options = tools.inheritOptions { + inherit currentPathAsList options; + }; config = lib.mkIf cfg.enable SystemConfig; }; }; From 932c89ecb57ebd5ffbb14951cd0e3207763addcd Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 14 Apr 2026 23:54:52 -0400 Subject: [PATCH 080/236] feat(tools) : added a contextual module function --- new_arch/tools.nix | 54 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index a54e494..4cac8e8 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -38,21 +38,6 @@ }: ( contextArgsImport file context args ); - contextualModule = { - name, - config, - lib, - options, - import-list ? [], - context, - }: let - cfg = config.${name}; - in { - config = lib.mkIf cfg.enable { - inherit options; - imports = import-list; - }; - }; inheritSettings = { currentPathAsList, imports, @@ -124,6 +109,43 @@ }; } ]); + contextualModule = { + options ? null, + imports ? null, + Config, + context, + ... + } @ deps: { + lib, + config, + ... + }: let + inherit (deps) subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs cfg; + in + ( + if options != null + then { + options = tools.inheritOptions { + inherit currentPathAsList options; + }; + } + else { + } + ) + // ( + if imports != null + then { + imports = tools.contextModuleImport { + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; + context = context; + }; + } + else { + } + ) + // { + config = lib.mkIf cfg.enable Config; + }; universalModule = { lib, @@ -195,6 +217,6 @@ }; }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport inheritConfig inheritOptions; + inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport inheritConfig inheritOptions contextualModule; # multiContextModule; } From b79bd2eeef2918417eab1a18634bb9cacb78246b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 03:48:08 -0400 Subject: [PATCH 081/236] clean(tools) : clean useless functions --- new_arch/tools.nix | 112 +-------------------------------------------- 1 file changed, 1 insertion(+), 111 deletions(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index 4cac8e8..d811686 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -1,43 +1,4 @@ {lib, ...}: let - importWithAndContextArgs = { - file, - context, - args, - }: - ( - import file - args - ).config.${ - context - }; - - importWithArgs = { - file, - args, - }: - (import file args).config; - - contextArgsImport = { - file, - context, - args, - }: - (importWithArgs { - inherit file args; - }).${ - context - }; - - defaultContextArgsImport = { - file, - context, - args, - }: { - file, - context, - }: ( - contextArgsImport file context args - ); inheritSettings = { currentPathAsList, imports, @@ -146,77 +107,6 @@ // { config = lib.mkIf cfg.enable Config; }; - - universalModule = { - lib, - config, - pkgs-list, - inputs, - name, - subfolder ? null, - options, - imports ? [], - settings ? {}, - oldPathNames ? [name], - Home ? {}, - System ? {}, - } @ Inputs: let - cfg = config.${name}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - options.${fullPath} = options; - settings.${fullPath} = settings; - in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - if Inputs.imports - then - map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) - Inputs.imports - else []; - config = - lib.mkIf cfg.enable (inheritSettings { - pathNames = pathNames; - imports = imports; - settings = settings; - }) - // Home; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) - imports; - config = - lib.mkIf cfg.enable (inheritSettings { - pathNames = pathNames; - imports = imports; - settings = settings; - }) - // System; - }; - }; - }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule contextModuleImport inheritConfig inheritOptions contextualModule; - # multiContextModule; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule; } From 0b179e4a7bcd3d18591def9d09b0d053fd0f0c0b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 07:35:42 -0400 Subject: [PATCH 082/236] clean(tools) : changed function order --- new_arch/tools.nix | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index d811686..ebe5683 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -1,4 +1,20 @@ {lib, ...}: let + contextModuleImport = { + imports, + subfolder, + context, + currentDirPath, + ... + } @ deps: + map (file: + (import ./${currentDirPath}/${subfolder}/${file}.nix { + inherit (deps) inputs config lib pkgs-list tools; + parentPathAsList = deps.currentPathAsList; + }).config.${ + context + }) + imports; + inheritSettings = { currentPathAsList, imports, @@ -22,21 +38,6 @@ }); }) imports); - contextModuleImport = { - imports, - subfolder, - context, - currentDirPath, - ... - } @ basicDependencies: - map (file: - (import ./${currentDirPath}/${subfolder}/${file}.nix { - inherit (basicDependencies) inputs config lib pkgs-list tools; - parentPathAsList = basicDependencies.currentPathAsList; - }).config.${ - context - }) - imports; inheritConfig = { currentPathAsList, From b6a89f938d9177ffb98e84e0a123bbea3ef56f98 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 08:27:18 -0400 Subject: [PATCH 083/236] refactor(unify) : unified all module files to the same format using as much as possible the tools for that --- new_arch/sys/bootloader.nix | 67 ++++++++++++++++----------- new_arch/sys/filesystems.nix | 72 +++++++++++++++--------------- new_arch/sys/filesystems/btrfs.nix | 63 ++++++++++++++++---------- new_arch/sys/filesystems/exfat.nix | 60 +++++++++++++++---------- new_arch/sys/filesystems/ntfs.nix | 64 ++++++++++++++++---------- new_arch/sys/hardware.nix | 71 +++++++++++++---------------- new_arch/sys/hardware/nvidia.nix | 68 +++++++++++++++++----------- new_arch/sys/hardware/printer.nix | 61 +++++++++++++++---------- new_arch/sys/hardware/sound.nix | 63 ++++++++++++++++---------- new_arch/sys/lang.nix | 63 ++++++++++++++++---------- new_arch/sys/networking.nix | 63 ++++++++++++++++---------- new_arch/sys/users.nix | 69 ++++++++++++++-------------- 12 files changed, 462 insertions(+), 322 deletions(-) diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index 124a1b3..f66b8ff 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -5,18 +5,40 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "bootloader"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.${name}; + subfolder = null; + main-repo = null; + branch = null; + imports = null; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; - Common = { + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -37,29 +59,24 @@ }; }; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/filesystems.nix b/new_arch/sys/filesystems.nix index 1b82ce4..6cd98c0 100644 --- a/new_arch/sys/filesystems.nix +++ b/new_arch/sys/filesystems.nix @@ -5,15 +5,12 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "filesystems"; subfolder = "filesystems"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentPathAsList])); - cfg = config.sys.${name}; + main-repo = null; + branch = null; imports = [ "ntfs" "exfat" @@ -27,50 +24,51 @@ exfat.enable = true; btrfs.enable = true; }; - inheritedSettings = tools.inheritSettings { - inherit currentPathAsList imports settings; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentPathAsList])); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; Common = inheritedSettings // { }; + ###### # user defined Home = { }; System = { }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "Home"; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "System"; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/filesystems/btrfs.nix b/new_arch/sys/filesystems/btrfs.nix index aa576ea..735bf33 100644 --- a/new_arch/sys/filesystems/btrfs.nix +++ b/new_arch/sys/filesystems/btrfs.nix @@ -5,18 +5,40 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "btrfs"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.filesystems.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; - Common = { + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -27,29 +49,24 @@ btrfs = true; }; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/filesystems/exfat.nix b/new_arch/sys/filesystems/exfat.nix index 37b8db5..42297f0 100644 --- a/new_arch/sys/filesystems/exfat.nix +++ b/new_arch/sys/filesystems/exfat.nix @@ -5,18 +5,37 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "exfat"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.filesystems.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; - Common = { + settings = null; + ###### # computed + packages = pkgs-list.${main-repo}.${branch}; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -28,29 +47,24 @@ ntfs = true; }; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/filesystems/ntfs.nix b/new_arch/sys/filesystems/ntfs.nix index fd55a40..649bdbf 100644 --- a/new_arch/sys/filesystems/ntfs.nix +++ b/new_arch/sys/filesystems/ntfs.nix @@ -5,18 +5,41 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "ntfs"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.filesystems.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; - Common = { + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -28,29 +51,24 @@ exfat = true; }; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/hardware.nix b/new_arch/sys/hardware.nix index 16ef7fc..329e286 100644 --- a/new_arch/sys/hardware.nix +++ b/new_arch/sys/hardware.nix @@ -5,8 +5,8 @@ parentPathAsList, tools, ... -} @ Inputs: let - # Defined by user +}: let + ###### # user defined name = "hardware"; subfolder = "hardware"; main-repo = "nix"; @@ -26,21 +26,29 @@ sound.enable = true; # bluetooth.enable = true; #TODO : move bluetooth to its own module }; - ##### - # programmatically generated first - packages = pkgs-list.${main-repo}.${branch}; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; currentPathAsList = parentPathAsList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = config.sys.${name}; - inheritedSettings = tools.inheritSettings { - inherit currentPathAsList imports settings; + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; Common = inheritedSettings // { }; - ##### - # Second definition by user (can use packages and cfg) + ###### # user defined Home = { }; System = { @@ -60,41 +68,24 @@ usbutils ]; }; - ##### - # programmatically generated then + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "Home"; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "System"; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/hardware/nvidia.nix b/new_arch/sys/hardware/nvidia.nix index 6699b65..abdb355 100644 --- a/new_arch/sys/hardware/nvidia.nix +++ b/new_arch/sys/hardware/nvidia.nix @@ -6,18 +6,39 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "nvidia"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.hardware.${name}; + subfolder = null; + main-repo = null; + branch = null; + imports = null; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; - Common = { - }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = config.sys.hardware.${name}; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -49,29 +70,24 @@ "modesetting" ]; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/hardware/printer.nix b/new_arch/sys/hardware/printer.nix index fc8c57c..c78e9f9 100644 --- a/new_arch/sys/hardware/printer.nix +++ b/new_arch/sys/hardware/printer.nix @@ -5,18 +5,38 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "printer"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.hardware.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; - Common = { + settings = null; + ###### # computed + packages = pkgs-list.${main-repo}.${branch}; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -25,29 +45,24 @@ cnijfilter2 ]; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/hardware/sound.nix b/new_arch/sys/hardware/sound.nix index 2f18a7f..dda4482 100644 --- a/new_arch/sys/hardware/sound.nix +++ b/new_arch/sys/hardware/sound.nix @@ -5,18 +5,40 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "sound"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.hardware.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; - Common = { + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -25,29 +47,24 @@ pulse.enable = true; }; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/lang.nix b/new_arch/sys/lang.nix index a3aade3..d9b7a8a 100644 --- a/new_arch/sys/lang.nix +++ b/new_arch/sys/lang.nix @@ -5,13 +5,13 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "lang"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; timeZone = lib.mkOption { @@ -30,8 +30,30 @@ description = "The system keyboard layout."; }; }; - Common = { + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -45,29 +67,24 @@ console.keyMap = cfg.keyboardLayout; services.xserver.xkb.layout = cfg.keyboardLayout; }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/networking.nix b/new_arch/sys/networking.nix index bbbbf5f..8404bd9 100644 --- a/new_arch/sys/networking.nix +++ b/new_arch/sys/networking.nix @@ -5,18 +5,40 @@ parentPathAsList, tools, ... -} @ Inputs: let +}: let + ###### # user defined name = "networking"; + subfolder = null; main-repo = "nix"; branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - cfg = config.sys.${name}; + imports = null; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; - Common = { + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -56,29 +78,24 @@ ]; ## FEAT : maybe move somewhere else ? }; + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix index 361dcdf..d71d2bb 100644 --- a/new_arch/sys/users.nix +++ b/new_arch/sys/users.nix @@ -5,29 +5,40 @@ parentPathAsList, tools, ... -} @ Inputs: let - # Defined by user +}: let + ###### # user defined name = "users"; - # subfolder = ""; + subfolder = null; main-repo = "nix"; branch = "latest"; - imports = []; + imports = null; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; - ##### - # programmatically generated first - packages = pkgs-list.${main-repo}.${branch}; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; currentPathAsList = parentPathAsList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); cfg = tools.inheritConfig { inherit config currentPathAsList; }; - Common = { - }; - ##### - # Second definition by user (can use packages and cfg) - settings = {}; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined Home = { }; System = { @@ -61,32 +72,24 @@ }; }; }; - ##### - # programmatically generated then + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; - ### in { config = { - Home = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - config = lib.mkIf cfg.enable SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; }; }; } From 71f6251fd56c939d873b9014ecd701a83d961b4a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 10:55:35 -0400 Subject: [PATCH 084/236] feat(tools) : adding the possibilty for modules to be unconditionally generated --- new_arch/tools.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/new_arch/tools.nix b/new_arch/tools.nix index ebe5683..d2b88e1 100644 --- a/new_arch/tools.nix +++ b/new_arch/tools.nix @@ -74,6 +74,7 @@ contextualModule = { options ? null, imports ? null, + togglable ? true, Config, context, ... @@ -82,7 +83,7 @@ config, ... }: let - inherit (deps) subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs cfg; + inherit (deps) subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; in ( if options != null @@ -106,7 +107,10 @@ } ) // { - config = lib.mkIf cfg.enable Config; + config = + if togglable + then (lib.mkIf deps.cfg.enable Config) + else Config; }; in { inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule; From f8d6c9277db74481b4cfecd4d4e780d3538fec1c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 10:56:47 -0400 Subject: [PATCH 085/236] refactor(progs) : using tools to generates progs submodules for more uniformity --- new_arch/progs.nix | 76 +++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index e5a7ce7..fb06abc 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -5,12 +5,12 @@ tools, baseSettings, ... -} @ Inputs: let +}: let + ###### # user defined name = "progs"; subfolder = "progs"; repo = "nix"; branch = "latest"; - packages = pkgs-list.${repo}.${branch}; imports = [ # "dev" # "misc" @@ -18,25 +18,34 @@ # "office" # "desktop" ]; - # Temporary homeImport = [ # "browsers" - ]; - parentPathAsList = []; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + ]; # FIXME :temporary + options = null; newSettings.${name} = { }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; - inheritedSettings = tools.inheritSettings { - inherit settings; - inherit currentPathAsList; - inherit imports; - }; + ###### # computed + packages = pkgs-list.${repo}.${branch}; + parentPathAsList = []; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + # cfg = tools.inheritConfig { + # inherit config currentPathAsList; + # }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; Common = inheritedSettings // { }; + ###### # user defined Home = { programs = { thunderbird = { @@ -67,37 +76,28 @@ virt-manager.enable = true; }; }; - + ###### # computed HomeConfig = Common // Home; SystemConfig = Common // System; in { + # FIXME : find a way to make more uniform with the other modules config = { - Home = { - lib, - config, - ... - }: { - imports = tools.contextModuleImport { - imports = - imports - ++ homeImport; - inherit subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "Home"; - }; - config = HomeConfig; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated + inherit options; # user defined + imports = imports ++ homeImport; # user defined + togglable = false; + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "System"; - }; - config = SystemConfig; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated + inherit options imports; # user defined + togglable = false; + context = "System"; + Config = SystemConfig; }; }; } From f4bc062234ba3a1fe2197592a0b3a444a9cd2322 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 12:04:25 -0400 Subject: [PATCH 086/236] refactor(unify) : applied as much as possible the format to sys et progs --- new_arch/progs.nix | 5 +--- new_arch/sys.nix | 59 +++++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/new_arch/progs.nix b/new_arch/progs.nix index fb06abc..cefa748 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -4,6 +4,7 @@ pkgs-list, tools, baseSettings, + parentPathAsList ? [], ... }: let ###### # user defined @@ -27,12 +28,8 @@ settings = (lib.recursiveUpdate baseSettings newSettings).${name}; ###### # computed packages = pkgs-list.${repo}.${branch}; - parentPathAsList = []; currentPathAsList = parentPathAsList ++ [name]; currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - # cfg = tools.inheritConfig { - # inherit config currentPathAsList; - # }; inheritedSettings = if imports != null || settings != null then diff --git a/new_arch/sys.nix b/new_arch/sys.nix index a25a45b..3587077 100644 --- a/new_arch/sys.nix +++ b/new_arch/sys.nix @@ -4,13 +4,14 @@ pkgs-list, tools, baseSettings, + parentPathAsList ? [], ... -} @ Inputs: let +}: let + ###### # user defined name = "sys"; subfolder = "sys"; repo = "nix"; branch = "unstable"; - packages = pkgs-list.${repo}.${branch}; imports = [ "bootloader" "lang" @@ -19,9 +20,6 @@ "networking" "filesystems" ]; - parentPathAsList = []; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); options = { version = lib.mkOption { type = lib.types.str; @@ -37,25 +35,38 @@ }; }; settings = (lib.recursiveUpdate baseSettings newSettings).${name}; - inheritedSettings = tools.inheritSettings { - inherit settings; - inherit currentPathAsList; - inherit imports; - }; -in { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath; - inherit (Inputs) inputs; - context = "System"; - }; - config = + ###### # computed + packages = pkgs-list.${repo}.${branch}; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = inheritedSettings // { - system.stateVersion = config.sys.version; - nix.settings.experimental-features = ["nix-command" "flakes"]; - boot.kernelPackages = packages.linuxPackages_latest; }; -} + ###### # user defined + System = { + system.stateVersion = config.sys.version; + nix.settings.experimental-features = ["nix-command" "flakes"]; + boot.kernelPackages = packages.linuxPackages_latest; + }; + ###### # computed + SystemConfig = + Common + // System; +in + tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated + inherit options imports; # user defined + togglable = false; + context = "System"; + Config = SystemConfig; + } From 98ec01f55ce6da3c017d1a32644a462d5b40d9b7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 12:47:40 -0400 Subject: [PATCH 087/236] refactor(config+home) : cleaned some useless stuff --- new_arch/configuration.nix | 2 +- new_arch/home.nix | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index 81e6f73..a0196bc 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -1,3 +1,4 @@ +# FEAT : unify format { config, lib, @@ -22,7 +23,6 @@ in { ./sys.nix { inherit config lib pkgs-list tools inputs baseSettings; - parentPathAsList = []; }) ] ++ [ diff --git a/new_arch/home.nix b/new_arch/home.nix index 088e665..cc359d2 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -1,12 +1,14 @@ +# FEAT : unify format { config, lib, + inputs, pkgs-list, nixos-version, baseSettings, tools, ... -} @ Inputs: let +}: let name = "home"; mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs imports = ["progs"]; @@ -14,8 +16,7 @@ in { imports = map (file: (import ./${mainModule}.nix { inherit config lib pkgs-list tools baseSettings; - inherit (Inputs) inputs; - parentPathAsList = []; + inherit inputs; }).config.Home) imports; From fa016e1da0b58a36d23ce8127c29c928f2a8215a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 13:11:37 -0400 Subject: [PATCH 088/236] feat(progs) : added shells to progs --- new_arch/progs.nix | 2 +- new_arch/progs/shells.nix | 80 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/shells.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index cefa748..31341e7 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -15,7 +15,7 @@ imports = [ # "dev" # "misc" - # "shells" + "shells" # "office" # "desktop" ]; diff --git a/new_arch/progs/shells.nix b/new_arch/progs/shells.nix new file mode 100644 index 0000000..3115ded --- /dev/null +++ b/new_arch/progs/shells.nix @@ -0,0 +1,80 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "shells"; + subfolder = "shells"; + main-repo = "nix"; + branch = "latest"; + imports = [ + # "zsh" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + extras = { + aliases = { + nrs = "sudo nixos-rebuild switch"; + ls = "ls --color -ah"; + ".." = "cd .."; + }; + }; + settings = { + zsh = { + enable = true; + aliases = extras.aliases; + }; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From dc5167a205ea5e569a1c594df0186d9c56e69f8d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 13:14:00 -0400 Subject: [PATCH 089/236] fix(shells) : fixed description for programms --- new_arch/progs/shells.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_arch/progs/shells.nix b/new_arch/progs/shells.nix index 3115ded..3d94671 100644 --- a/new_arch/progs/shells.nix +++ b/new_arch/progs/shells.nix @@ -15,7 +15,7 @@ # "zsh" ]; options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; extras = { aliases = { From 39ff5658e736d0feb07883bda1b98ddd849e4927 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 13:37:51 -0400 Subject: [PATCH 090/236] feat(shells) : added zsh to shells --- new_arch/progs/shells.nix | 2 +- new_arch/progs/shells/zsh.nix | 136 ++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/shells/zsh.nix diff --git a/new_arch/progs/shells.nix b/new_arch/progs/shells.nix index 3d94671..dd1d213 100644 --- a/new_arch/progs/shells.nix +++ b/new_arch/progs/shells.nix @@ -12,7 +12,7 @@ main-repo = "nix"; branch = "latest"; imports = [ - # "zsh" + "zsh" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/shells/zsh.nix b/new_arch/progs/shells/zsh.nix new file mode 100644 index 0000000..facb23d --- /dev/null +++ b/new_arch/progs/shells/zsh.nix @@ -0,0 +1,136 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "zsh"; + subfolder = "zsh"; + main-repo = "nix"; + branch = "latest"; + imports = [ + # "oh-my-zsh" + # "yazi" + # "fzf" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + aliases = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + description = "An attribute set of shell aliases to define."; + default = {}; + }; + }; + extras = { + }; + settings = { + oh-my-zsh.enable = true; + fzf.enable = true; + yazi.enable = true; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + history = { + path = "$HOME/.zsh_history"; + size = 10000; + ignoreAllDups = true; + }; + defaultKeymap = "emacs"; + plugins = [ + { + name = "powerlevel10k"; + src = packages.zsh-powerlevel10k; + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; # FEAT : Maybe to a file owned by me ? + } + { + name = "fzf-tab"; + src = "${packages.zsh-fzf-tab}/share/fzf-tab"; + } + ]; + # FIXME : move to a dedicated file + initContent = '' + + source ~/.p10k.zsh + + zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' + zstyle ':completion:*' menu no + zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath' + + function y() { + local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd + yazi "$@" --cwd-file="$tmp" + IFS= read -r -d \'\' cwd < "$tmp" + [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" + rm -f -- "$tmp" + } + + function myip(){ + echo $(ip addr show wlp0s20f3 | grep -oP 'inet \K[^/]+') + } + + ''; + + # zstyle ':completion:*' menu no + # FIXME : move new aliases to shells extras + shellAliases = + cfg.aliases + // { + yazi = "y"; + myip = "myip"; + }; + }; + }; + System = { + programs.zsh.enable = true; + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 19828c240c24f9dc0cf002030179645d76088e10 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 13:59:46 -0400 Subject: [PATCH 091/236] feat(oh-my-zsh) : added oh-my-zsh to zsh --- new_arch/progs/shells/zsh.nix | 10 +++- new_arch/progs/shells/zsh/oh-my-zsh.nix | 77 +++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 new_arch/progs/shells/zsh/oh-my-zsh.nix diff --git a/new_arch/progs/shells/zsh.nix b/new_arch/progs/shells/zsh.nix index facb23d..4323db0 100644 --- a/new_arch/progs/shells/zsh.nix +++ b/new_arch/progs/shells/zsh.nix @@ -12,7 +12,7 @@ main-repo = "nix"; branch = "latest"; imports = [ - # "oh-my-zsh" + "oh-my-zsh" # "yazi" # "fzf" ]; @@ -27,7 +27,13 @@ extras = { }; settings = { - oh-my-zsh.enable = true; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "sudo" + ]; + }; fzf.enable = true; yazi.enable = true; }; diff --git a/new_arch/progs/shells/zsh/oh-my-zsh.nix b/new_arch/progs/shells/zsh/oh-my-zsh.nix new file mode 100644 index 0000000..47666e1 --- /dev/null +++ b/new_arch/progs/shells/zsh/oh-my-zsh.nix @@ -0,0 +1,77 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "oh-my-zsh"; + subfolder = null; + main-repo = null; + branch = null; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + plugins = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "A list of Oh My Zsh plugins to enable."; + default = []; + }; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.zsh.oh-my-zsh = { + enable = true; + plugins = cfg.plugins; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 2cf3b57aec5e4f67b5ddc1c50c1575b2cc1d886f Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 14:05:12 -0400 Subject: [PATCH 092/236] feat(fzf) : added fzf to zsh --- new_arch/progs/shells/zsh.nix | 2 +- new_arch/progs/shells/zsh/fzf.nix | 75 +++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/shells/zsh/fzf.nix diff --git a/new_arch/progs/shells/zsh.nix b/new_arch/progs/shells/zsh.nix index 4323db0..737d0c8 100644 --- a/new_arch/progs/shells/zsh.nix +++ b/new_arch/progs/shells/zsh.nix @@ -14,7 +14,7 @@ imports = [ "oh-my-zsh" # "yazi" - # "fzf" + "fzf" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/shells/zsh/fzf.nix b/new_arch/progs/shells/zsh/fzf.nix new file mode 100644 index 0000000..35ad37b --- /dev/null +++ b/new_arch/progs/shells/zsh/fzf.nix @@ -0,0 +1,75 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "fzf"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + home.packages = with packages; [ + zsh-fzf-tab + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 91034f3cffd21d48a440652e0beae28ce2f7cf51 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 15:27:47 -0400 Subject: [PATCH 093/236] feat(yazi) : added yazi to zsh --- new_arch/progs/shells/zsh.nix | 2 +- new_arch/progs/shells/zsh/yazi.nix | 100 +++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/shells/zsh/yazi.nix diff --git a/new_arch/progs/shells/zsh.nix b/new_arch/progs/shells/zsh.nix index 737d0c8..c81fa84 100644 --- a/new_arch/progs/shells/zsh.nix +++ b/new_arch/progs/shells/zsh.nix @@ -13,7 +13,7 @@ branch = "latest"; imports = [ "oh-my-zsh" - # "yazi" + "yazi" "fzf" ]; options = { diff --git a/new_arch/progs/shells/zsh/yazi.nix b/new_arch/progs/shells/zsh/yazi.nix new file mode 100644 index 0000000..7d458b0 --- /dev/null +++ b/new_arch/progs/shells/zsh/yazi.nix @@ -0,0 +1,100 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "yazi"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = rec { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.yazi = { + enable = true; + initLua = ../../../static/yazi/init.lua; + settings = { + mgr = { + show_hidden = true; + show_symlink = true; + }; + }; + plugins = with packages.yaziPlugins; + { + inherit chmod; + inherit sudo; + inherit git; + inherit rich-preview; + } + // { + "githead" = ../../../static/yazi/plugins/githead; + "kdeconnect-send" = ../../../static/yazi/plugins/kdeconnect-send; + }; + keymap = { + mgr = { + prepend_keymap = [ + { + on = [""]; + run = "plugin kdeconnect-send"; + desc = "Send selected files via KDE Connect"; + } + ]; + }; + }; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From bcf75707dbf6b392e55ee4007de89ea71668ac3c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 15:28:31 -0400 Subject: [PATCH 094/236] fix(p10k) : pining p10k theme --- new_arch/progs/shells/zsh.nix | 1 + new_arch/progs/shells/zsh/static/.p10k.zsh | 1720 ++++++++++++++++++++ 2 files changed, 1721 insertions(+) create mode 100644 new_arch/progs/shells/zsh/static/.p10k.zsh diff --git a/new_arch/progs/shells/zsh.nix b/new_arch/progs/shells/zsh.nix index c81fa84..ff27b4e 100644 --- a/new_arch/progs/shells/zsh.nix +++ b/new_arch/progs/shells/zsh.nix @@ -61,6 +61,7 @@ }; ###### # user defined Home = { + home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/static/.p10k.zsh}"}"; programs.zsh = { enable = true; enableCompletion = true; diff --git a/new_arch/progs/shells/zsh/static/.p10k.zsh b/new_arch/progs/shells/zsh/static/.p10k.zsh new file mode 100644 index 0000000..85f7296 --- /dev/null +++ b/new_arch/progs/shells/zsh/static/.p10k.zsh @@ -0,0 +1,1720 @@ +# Generated by Powerlevel10k configuration wizard on 2025-02-18 at 09:34 CET. +# Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 37983. +# Wizard options: nerdfont-v3 + powerline, large icons, unicode, lean, 2 lines, +# disconnected, no frame, sparse, many icons, concise, transient_prompt, +# instant_prompt=verbose. +# Type `p10k configure` to generate another config. +# +# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate +# your own config based on it. +# +# Tip: Looking for a nice color? Here's a one-liner to print colormap. +# +# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done + +# Temporarily change options. +'builtin' 'local' '-a' 'p10k_config_opts' +[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') +[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') +[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') +'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' + +() { + emulate -L zsh -o extended_glob + + # Unset all configuration options. This allows you to apply configuration changes without + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + + # Zsh >= 5.1 is required. + [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return + + # The list of segments shown on the left. Fill it with the most important segments. + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + # =========================[ Line #1 ]========================= + #os_icon # os identifier + dir # current directory + vcs # git status + # =========================[ Line #2 ]========================= + newline # \n + prompt_char # prompt symbol + ) + + # The list of segments shown on the right. Fill it with less important segments. + # Right prompt on the last prompt line (where you are typing your commands) gets + # automatically hidden when the input line reaches it. Right prompt above the + # last prompt line gets hidden if it would overlap with left prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + # =========================[ Line #1 ]========================= + status # exit code of the last command + command_execution_time # duration of the last command + background_jobs # presence of background jobs + direnv # direnv status (https://direnv.net/) + asdf # asdf version manager (https://github.com/asdf-vm/asdf) + virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) + anaconda # conda environment (https://conda.io/) + pyenv # python environment (https://github.com/pyenv/pyenv) + goenv # go environment (https://github.com/syndbg/goenv) + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # node_version # node.js version + # go_version # go version (https://golang.org) + # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) + # php_version # php version (https://www.php.net/) + # laravel_version # laravel php framework version (https://laravel.com/) + # java_version # java version (https://www.java.com/) + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + rvm # ruby version from rvm (https://rvm.io) + fvm # flutter version management (https://github.com/leoafarias/fvm) + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + jenv # java version from jenv (https://github.com/jenv/jenv) + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew) + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + haskell_stack # haskell version from stack (https://haskellstack.org/) + kubecontext # current kubernetes context (https://kubernetes.io/) + terraform # terraform workspace (https://www.terraform.io) + # terraform_version # terraform version (https://www.terraform.io) + aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + gcloud # google cloud cli account and project (https://cloud.google.com/) + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + toolbox # toolbox name (https://github.com/containers/toolbox) + context # user@hostname + nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + ranger # ranger shell (https://github.com/ranger/ranger) + yazi # yazi shell (https://github.com/sxyazi/yazi) + nnn # nnn shell (https://github.com/jarun/nnn) + lf # lf shell (https://github.com/gokcehan/lf) + xplr # xplr shell (https://github.com/sayanarijit/xplr) + vim_shell # vim shell indicator (:sh) + midnight_commander # midnight commander shell (https://midnight-commander.org/) + nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) + chezmoi_shell # chezmoi shell (https://www.chezmoi.io/) + # vpn_ip # virtual private network indicator + # load # CPU load + # disk_usage # disk usage + # ram # free RAM + # swap # used swap + todo # todo items (https://github.com/todotxt/todo.txt-cli) + timewarrior # timewarrior tracking status (https://timewarrior.net/) + taskwarrior # taskwarrior task count (https://taskwarrior.org/) + per_directory_history # Oh My Zsh per-directory-history local/global indicator + # cpu_arch # CPU architecture + # time # current time + # =========================[ Line #2 ]========================= + newline + # ip # ip address and bandwidth usage for a specified network interface + # public_ip # public IP address + # proxy # system-wide http/https/ftp proxy + # battery # internal battery + # wifi # wifi speed + # example # example user-defined segment (see prompt_example function below) + ) + + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. + typeset -g POWERLEVEL9K_MODE=nerdfont-v3 + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. + typeset -g POWERLEVEL9K_ICON_PADDING=moderate + + # Basic style options that define the overall look of your prompt. You probably don't want to + # change them. + typeset -g POWERLEVEL9K_BACKGROUND= # transparent background + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol + + # When set to true, icons appear before content on both sides of the prompt. When set + # to false, icons go after content. If empty or not set, icons go before content in the left + # prompt and after content in the right prompt. + # + # You can also override it for a specific segment: + # + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false + # + # Or for a specific segment in specific state: + # + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true + + # Add an empty line before each prompt. + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true + + # Connect left prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX= + # Connect right prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX= + + # The left end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + # The right end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL= + + # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll + # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and + # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below. + typeset -g POWERLEVEL9K_SHOW_RULER=false + typeset -g POWERLEVEL9K_RULER_CHAR='─' # reasonable alternative: '·' + typeset -g POWERLEVEL9K_RULER_FOREGROUND=242 + + # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─' + # to make it easier to see the alignment between left and right prompt and to separate prompt + # from command output. It serves the same purpose as ruler (see above) without increasing + # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false + # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact + # prompt. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then + # The color of the filler. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242 + # Add a space between the end of left prompt and the filler. + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' ' + # Add a space between the filler and the start of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' ' + # Start filler from the edge of the screen if there are no left segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' + # End filler on the edge of the screen if there are no right segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' + fi + + #################################[ os_icon: os identifier ]################################## + # OS identifier color. + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND= + # Custom icon. + # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐' + + ################################[ prompt_char: prompt symbol ]################################ + # Green prompt symbol if the last command succeeded. + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 + # Red prompt symbol if the last command failed. + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + # Default prompt symbol. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # Prompt symbol in command vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + # Prompt symbol in visual vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' + # Prompt symbol in overwrite vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' + # No line introducer if prompt_char is the first segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + + ##################################[ dir: current directory ]################################## + # Default current directory color. + typeset -g POWERLEVEL9K_DIR_FOREGROUND=31 + # If directory is too long, shorten some of its segments to the shortest possible unique + # prefix. The shortened directory can be tab-completed to the original. + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + # Replace removed segment suffixes with this symbol. + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + # Color of the shortened directory segments. + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103 + # Color of the anchor directory segments. Anchor segments are never shortened. The first + # segment is always an anchor. + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39 + # Display anchor directory segments in bold. + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true + # Don't shorten directories that contain any of these files. They are anchors. + local anchor_files=( + .bzr + .citc + .git + .hg + .node-version + .python-version + .go-version + .ruby-version + .lua-version + .java-version + .perl-version + .php-version + .tool-versions + .mise.toml + .shorten_folder_marker + .svn + .terraform + CVS + Cargo.toml + composer.json + go.mod + package.json + stack.yaml + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers + # and other directories don't. + # + # Optionally, "first" and "last" can be followed by ":" where is an integer. + # This moves the truncation point to the right (positive offset) or to the left (negative offset) + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" + # respectively. + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false + # Don't shorten this many last directory segments. They are anchors. + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + # Shorten directory if it's longer than this even if there is space for it. The value can + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, + # directory will be shortened only when prompt doesn't fit or when other parameters demand it + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). + # If set to `0`, directory will always be shortened to its minimum length. + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this + # many columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + # If set to true, embed a hyperlink into the directory. Useful for quickly + # opening a directory in the file manager simply by clicking the link. + # Can also be handy when the directory is shortened, as it allows you to see + # the full directory that was used in previous commands. + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON + # and POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 + + # The default icon shown next to non-writable and non-existent directories when + # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. + # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' + + # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different + # directories. It must be an array with 3 * N elements. Each triplet consists of: + # + # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with + # extended_glob option enabled. + # 2. Directory class for the purpose of styling. + # 3. An empty string. + # + # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. + # + # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories + # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=( + # '~/work(|/*)' WORK '' + # '~(|/*)' HOME '' + # '*' DEFAULT '') + # + # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one + # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or + # WORK_NON_EXISTENT. + # + # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an + # option to define custom colors and icons for different directory classes. + # + # # Styling for WORK. + # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39 + # + # # Styling for WORK_NOT_WRITABLE. + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39 + # + # # Styling for WORK_NON_EXISTENT. + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39 + # + # If a styling parameter isn't explicitly defined for some class, it falls back to the classless + # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls + # back to POWERLEVEL9K_DIR_FOREGROUND. + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=() + + # Custom prefix. + # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin ' + + #####################################[ vcs: git status ]###################################### + # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon. + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' + + # Untracked files icon. It's really a question mark, your font isn't broken. + # Change the value of this parameter to show a different icon. + typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' + + # Formatter for Git status. + # + # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # + # You can edit the function to customize how Git status looks. + # + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. + function my_git_formatter() { + emulate -L zsh + + if [[ -n $P9K_CONTENT ]]; then + # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from + # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. + typeset -g my_git_format=$P9K_CONTENT + return + fi + + if (( $1 )); then + # Styling for up-to-date Git status. + local meta='%f' # default foreground + local clean='%76F' # green foreground + local modified='%178F' # yellow foreground + local untracked='%39F' # blue foreground + local conflicted='%196F' # red foreground + else + # Styling for incomplete and stale Git status. + local meta='%244F' # grey foreground + local clean='%244F' # grey foreground + local modified='%244F' # grey foreground + local untracked='%244F' # grey foreground + local conflicted='%244F' # grey foreground + fi + + local res + + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} + # If local branch name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show local branch name in full without truncation, delete the next line. + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" + fi + + if [[ -n $VCS_STATUS_TAG + # Show tag only if not on a branch. + # Tip: To always show tag, delete the next line. + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line + ]]; then + local tag=${(V)VCS_STATUS_TAG} + # If tag name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show tag name in full without truncation, delete the next line. + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + res+="${meta}#${clean}${tag//\%/%%}" + fi + + # Display the current Git commit if there is no branch and no tag. + # Tip: To always display the current Git commit, delete the next line. + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" + + # Show tracking branch name if it differs from local branch. + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" + fi + + # Display "wip" if the latest commit's summary contains "wip" or "WIP". + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then + res+=" ${modified}wip" + fi + + if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" + elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then + # Tip: Uncomment the next line to display '=' if up to date with the remote. + # res+=" ${clean}=" + fi + + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # *42 if have stashes. + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" + # 'merge' if the repo is in an unusual state. + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" + # ~42 if have merge conflicts. + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" + # +42 if have staged changes. + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" + # !42 if have unstaged changes. + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" + # ?42 if have untracked files. It's really a question mark, your font isn't broken. + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. + # Remove the next line if you don't want to see untracked files at all. + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" + # "─" if the number of unstaged files is unknown. This can happen due to + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower + # than the number of files in the Git index, or due to bash.showDirtyState being set to false + # in the repository config. The number of staged and untracked files may also be unknown + # in this case. + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + + typeset -g my_git_format=$res + } + functions -M my_git_formatter 2>/dev/null + + # Don't count the number of unstaged, untracked and conflicted files in Git repositories with + # more than this many files in the index. Negative value means infinity. + # + # If you are working in Git repositories with tens of millions of files and seeing performance + # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output + # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's + # config: `git config bash.showDirtyState false`. + typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 + + # Don't show Git status in prompt for repositories whose workdir matches this pattern. + # For example, if set to '~', the Git repository at $HOME/.git will be ignored. + # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. + typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' + + # Disable the default Git status formatting. + typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true + # Install our own Git status formatter. + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}' + typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}' + # Enable counters for staged, unstaged, etc. + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 + + # Icon color. + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76 + typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244 + # Custom icon. + # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon ' + + # Show status of repositories of these types. You can add svn and/or hg if you are + # using them. If you do, your prompt may become slow even when your current directory + # isn't in an svn or hg repository. + typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + + # These settings are used for repositories other than Git or when gitstatusd fails and + # Powerlevel10k has to fall back to using vcs_info. + typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76 + typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178 + + ##########################[ status: exit code of the last command ]########################### + # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and + # style them independently from the regular OK and ERROR state. + typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true + + # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as + # it will signify success by turning green. + typeset -g POWERLEVEL9K_STATUS_OK=false + typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70 + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' + + # Status when some part of a pipe command fails but the overall exit status is zero. It may look + # like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' + + # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as + # it will signify error by turning red. + typeset -g POWERLEVEL9K_STATUS_ERROR=false + typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160 + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' + + # Status when the last command was terminated by a signal. + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160 + # Use terse signal names: "INT" instead of "SIGINT(2)". + typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' + + # Status when some part of a pipe command fails and the overall exit status is also non-zero. + # It may look like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' + + ###################[ command_execution_time: duration of the last command ]################### + # Show duration of the last command if takes at least this many seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 + # Show this many fractional digits. Zero means round to seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 + # Execution time color. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101 + # Duration format: 1d 2h 3m 4s. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + # Custom icon. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook ' + + #######################[ background_jobs: presence of background jobs ]####################### + # Don't show the number of background jobs. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false + # Background jobs color. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70 + # Custom icon. + # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ direnv: direnv status (https://direnv.net/) ]######################## + # Direnv color. + typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### + # Default asdf color. Only used to display tools for which there is no color override (see below). + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND. + typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66 + + # There are four parameters that can be used to hide asdf tools. Each parameter describes + # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at + # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to + # hide a tool, it gets shown. + # + # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and + # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: + # + # asdf local python 3.8.1 + # asdf global python 3.8.1 + # + # After running both commands the current python version is 3.8.1 and its source is "local" as + # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, + # it'll hide python version in this case because 3.8.1 is the same as the global version. + # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't + # contain "local". + + # Hide tool versions that don't come from one of these sources. + # + # Available sources: + # + # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" + # - local `asdf current` says "set by /some/not/home/directory/file" + # - global `asdf current` says "set by /home/username/file" + # + # Note: If this parameter is set to (shell local global), it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. + typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) + + # If set to false, hide tool versions that are the same as global. + # + # Note: The name of this parameter doesn't reflect its meaning at all. + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. + typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false + + # If set to false, hide tool versions that are equal to "system". + # + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. + typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true + + # If set to non-empty value, hide tools unless there is a file matching the specified file pattern + # in the current directory, or its parent directory, or its grandparent directory, and so on. + # + # Note: If this parameter is set to empty value, it won't hide tools. + # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. + # + # Example: Hide nodejs version when there is no package.json and no *.js files in the current + # directory, in `..`, in `../..` and so on. + # + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' + typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= + + # Ruby version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168 + # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Python version from asdf. + typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Go version from asdf. + typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Node.js version from asdf. + typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Rust version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' + + # .NET Core version from asdf. + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_DOTNET_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Flutter version from asdf. + typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Lua version from asdf. + typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32 + # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Java version from asdf. + typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32 + # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Perl version from asdf. + typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67 + # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Erlang version from asdf. + typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Elixir version from asdf. + typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Postgres version from asdf. + typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' + + # PHP version from asdf. + typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99 + # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Haskell version from asdf. + typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Julia version from asdf. + typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70 + # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar' + + ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### + # NordVPN connection indicator color. + typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39 + # Hide NordVPN connection indicator when not connected. + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= + # Custom icon. + # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## + # Ranger shell color. + typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]##################### + # Yazi shell color. + typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### + # Nnn shell color. + typeset -g POWERLEVEL9K_NNN_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]####################### + # lf shell color. + typeset -g POWERLEVEL9K_LF_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## + # xplr shell color. + typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### + # Vim shell indicator color. + typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34 + # Custom icon. + # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### + # Midnight Commander shell color. + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## + # Nix shell color. + typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74 + + # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store. + # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false + + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. + # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]################## + # chezmoi shell color. + typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33 + # Custom icon. + # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ disk_usage: disk usage ]################################## + # Colors for different levels of disk usage. + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160 + # Thresholds for different levels of disk usage (percentage points). + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 + # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. + typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false + # Custom icon. + # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ ram: free RAM ]####################################### + # RAM color. + typeset -g POWERLEVEL9K_RAM_FOREGROUND=66 + # Custom icon. + # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################################[ swap: used swap ]###################################### + # Swap color. + typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96 + # Custom icon. + # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ load: CPU load ]###################################### + # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. + typeset -g POWERLEVEL9K_LOAD_WHICH=5 + # Load color when load is under 50%. + typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66 + # Load color when load is between 50% and 70%. + typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178 + # Load color when load is over 70%. + typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166 + # Custom icon. + # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ + # Todo color. + typeset -g POWERLEVEL9K_TODO_FOREGROUND=110 + # Hide todo when the total number of tasks is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true + # Hide todo when the number of tasks after filtering is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false + + # Todo format. The following parameters are available within the expansion. + # + # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. + # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. + # + # These variables correspond to the last line of the output of `todo.sh -p ls`: + # + # TODO: 24 of 42 tasks shown + # + # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. + # + # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ + # Timewarrior color. + typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110 + # If the tracked task is longer than 24 characters, truncate and append "…". + # Tip: To always display tasks without truncation, delete the following parameter. + # Tip: To hide task names and display just the icon when time tracking is enabled, set the + # value of the following parameter to "". + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' + + # Custom icon. + # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## + # Taskwarrior color. + typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74 + + # Taskwarrior segment format. The following parameters are available within the expansion. + # + # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. + # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. + # + # Zero values are represented as empty parameters. + # + # The default format: + # + # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' + # + # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]####### + # Color when using local/global history. + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130 + + # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION='' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION='' + + # Custom icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ cpu_arch: CPU architecture ]################################ + # CPU architecture color. + typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172 + + # Hide the segment when on a specific CPU architecture. + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION= + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ context: user@hostname ]################################## + # Context color when running with privileges. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178 + # Context color in SSH without privileges. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180 + # Default context color (no privileges, no SSH). + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180 + + # Context format when running with privileges: bold user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m' + # Context format when in SSH without privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' + # Default context format (no privileges, no SSH): user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' + + # Don't show context unless running with privileges or in SSH. + # Tip: Remove the next line to always show context. + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith ' + + ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### + # Python virtual environment color. + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37 + # Don't show Python version next to the virtual environment name. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false + # If set to "false", won't show virtualenv if pyenv is already shown. + # If set to "if-different", won't show virtualenv if it's the same as pyenv. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false + # Separate environment name from Python version only with a space. + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ anaconda: conda environment (https://conda.io/) ]###################### + # Anaconda environment color. + typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37 + + # Anaconda segment format. The following parameters are available within the expansion. + # + # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment. + # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment. + # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below). + # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version). + # + # CONDA_PROMPT_MODIFIER can be configured with the following command: + # + # conda config --set env_prompt '({default_env}) ' + # + # The last argument is a Python format string that can use the following variables: + # + # - prefix The same as CONDA_PREFIX. + # - default_env The same as CONDA_DEFAULT_ENV. + # - name The last segment of CONDA_PREFIX. + # - stacked_env Comma-separated list of names in the environment stack. The first element is + # always the same as default_env. + # + # Note: '({default_env}) ' is the default value of env_prompt. + # + # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER + # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former + # is empty. + typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' + + # Custom icon. + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ + # Pyenv color. + typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37 + # Hide python version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) + # If set to false, hide python version if it's the same as global: + # $(pyenv version-name) == $(pyenv global). + typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide python version if it's equal to "system". + typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true + + # Pyenv segment format. The following parameters are available within the expansion. + # + # - P9K_CONTENT Current pyenv environment (pyenv version-name). + # - P9K_PYENV_PYTHON_VERSION Current python version (python --version). + # + # The default format has the following logic: + # + # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or + # starts with "$P9K_PYENV_PYTHON_VERSION/". + # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION". + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ + # Goenv color. + typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37 + # Hide go version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) + # If set to false, hide go version if it's the same as global: + # $(goenv version-name) == $(goenv global). + typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide go version if it's equal to "system". + typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## + # Nodenv color. + typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70 + # Hide node version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global) + # If set to false, hide node version if it's the same as global: + # $(nodenv version-name) == $(nodenv global). + typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### + # Nvm color. + typeset -g POWERLEVEL9K_NVM_FOREGROUND=70 + # If set to false, hide node version if it's the same as default: + # $(nvm version current) == $(nvm version default). + typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ + # Nodeenv color. + typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70 + # Don't show Node version next to the environment name. + typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false + # Separate environment name from Node version only with a space. + typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############################[ node_version: node.js version ]############################### + # Node version color. + typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70 + # Show node version only when in a directory tree containing package.json. + typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ go_version: go version (https://golang.org) ]######################## + # Go version color. + typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37 + # Show go version only when in a go project subdirectory. + typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## + # Rust version color. + typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37 + # Show rust version only when in a rust project subdirectory. + typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ php_version: php version (https://www.php.net/) ]###################### + # PHP version color. + typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99 + # Show PHP version only when in a PHP project subdirectory. + typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### + # Laravel version color. + typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161 + # Custom icon. + # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ java_version: java version (https://www.java.com/) ]#################### + # Java version color. + typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32 + # Show java version only when in a java project subdirectory. + typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true + # Show brief version. + typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false + # Custom icon. + # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]#### + # Package color. + typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117 + # Package format. The following parameters are available within the expansion. + # + # - P9K_PACKAGE_NAME The value of `name` field in package.json. + # - P9K_PACKAGE_VERSION The value of `version` field in package.json. + # + # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}' + # Custom icon. + # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## + # Rbenv color. + typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 + # Hide ruby version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) + # If set to false, hide ruby version if it's the same as global: + # $(rbenv version-name) == $(rbenv global). + typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide ruby version if it's equal to "system". + typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## + # Rvm color. + typeset -g POWERLEVEL9K_RVM_FOREGROUND=168 + # Don't show @gemset at the end. + typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false + # Don't show ruby- at the front. + typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ + # Fvm color. + typeset -g POWERLEVEL9K_FVM_FOREGROUND=38 + # Custom icon. + # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### + # Lua color. + typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32 + # Hide lua version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) + # If set to false, hide lua version if it's the same as global: + # $(luaenv version-name) == $(luaenv global). + typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide lua version if it's equal to "system". + typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ + # Java color. + typeset -g POWERLEVEL9K_JENV_FOREGROUND=32 + # Hide java version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) + # If set to false, hide java version if it's the same as global: + # $(jenv version-name) == $(jenv global). + typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide java version if it's equal to "system". + typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ + # Perl color. + typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67 + # Hide perl version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) + # If set to false, hide perl version if it's the same as global: + # $(plenv version-name) == $(plenv global). + typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide perl version if it's equal to "system". + typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############ + # Perlbrew color. + typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67 + # Show perlbrew version only when in a perl project subdirectory. + typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true + # Don't show "perl-" at the front. + typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ + # PHP color. + typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99 + # Hide php version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) + # If set to false, hide php version if it's the same as global: + # $(phpenv version-name) == $(phpenv global). + typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide php version if it's equal to "system". + typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]####### + # Scala color. + typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160 + # Hide scala version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global) + # If set to false, hide scala version if it's the same as global: + # $(scalaenv version-name) == $(scalaenv global). + typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide scala version if it's equal to "system". + typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]########### + # Haskell color. + typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172 + # Hide haskell version if it doesn't come from one of these sources. + # + # shell: version is set by STACK_YAML + # local: version is set by stack.yaml up the directory tree + # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml) + typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local) + # If set to false, hide haskell version if it's the same as in the implicit global project. + typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true + # Custom icon. + # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# + # Show kubecontext only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show kubecontext. + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl' + + # Kubernetes context classes for the purpose of using different colors, icons and expansions with + # different contexts. + # + # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current kubernetes context gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current kubernetes context is "deathray-testing/default", its class is TEST + # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134 + # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext + # segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # Within the expansion the following parameters are always available: + # + # - P9K_CONTENT The content that would've been displayed if there was no content + # expansion defined. + # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE + # in the output of `kubectl config get-contexts`. If there is no + # namespace, the parameter is set to "default". + # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the + # output of `kubectl config get-contexts`. + # + # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), + # the following extra parameters are available: + # + # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. + # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. + # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. + # + # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, + # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=gke + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + # + # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=eks + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= + # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' + # Append the current context's namespace if it's not "default". + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' + + # Custom prefix. + # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat ' + + ################[ terraform: terraform workspace (https://www.terraform.io) ]################# + # Don't show terraform workspace if it's literally "default". + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false + # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current terraform workspace gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current terraform workspace is "project_test", its class is TEST because "project_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38 + # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ terraform_version: terraform version (https://www.terraform.io) ]############## + # Terraform version color. + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38 + # Custom icon. + # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# + # Show aws only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show aws. + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current AWS profile gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current AWS profile is "company_test", its class is TEST + # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208 + # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # AWS segment format. The following parameters are available within the expansion. + # + # - P9K_AWS_PROFILE The name of the current AWS profile. + # - P9K_AWS_REGION The region associated with the current AWS profile. + typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}' + + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# + # AWS Elastic Beanstalk environment color. + typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70 + # Custom icon. + # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## + # Show azure only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show azure. + typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current azure account name gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current azure account is "company_test", its class is TEST because "company_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + + # Azure account name color. + typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32 + # Custom icon. + # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### + # Show gcloud only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show gcloud. + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil' + # Google cloud color. + typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32 + + # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or + # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative + # enough. You can use the following parameters in the expansions. Each of them corresponds to the + # output of `gcloud` tool. + # + # Parameter | Source + # -------------------------|-------------------------------------------------------------------- + # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)' + # P9K_GCLOUD_ACCOUNT | gcloud config get-value account + # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project + # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)' + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'. + # + # Obtaining project name requires sending a request to Google servers. This can take a long time + # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud + # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets + # set and gcloud prompt segment transitions to state COMPLETE. + # + # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL + # and COMPLETE. You can also hide gcloud in state PARTIAL by setting + # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and + # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty. + typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}' + typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}' + + # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name + # this often. Negative value disables periodic polling. In this mode project name is retrieved + # only when the current configuration, account or project id changes. + typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60 + + # Custom icon. + # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# + # Show google_app_cred only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show google_app_cred. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' + + # Google application credentials classes for the purpose of using different colors, icons and + # expansions with different credentials. + # + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first + # element in each pair defines a pattern against which the current kubernetes context gets + # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion + # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION + # parameters, you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. + # The first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD + # '*:*test*:*' TEST + # '*' DEFAULT) + # + # If your current Google application credentials is "service_account deathray-testing x@y.com", + # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD # These values are examples that are unlikely + # '*:*test*:*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by + # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # You can use the following parameters in the expansion. Each of them corresponds to one of the + # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. + # + # Parameter | JSON key file field + # ---------------------------------+--------------- + # P9K_GOOGLE_APP_CRED_TYPE | type + # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id + # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' + + ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]############### + # Toolbox color. + typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178 + # Don't display the name of the toolbox if it matches fedora-toolbox-*. + typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}' + # Custom icon. + # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin ' + + ###############################[ public_ip: public IP address ]############################### + # Public IP color. + typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94 + # Custom icon. + # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ########################[ vpn_ip: virtual private network indicator ]######################### + # VPN IP color. + typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81 + # When on VPN, show just an icon without the IP address. + # Tip: To display the private IP address when on VPN, remove the next line. + typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= + # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN + # to see the name of the interface. + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)' + # If set to true, show one segment per matching network interface. If set to false, show only + # one segment corresponding to the first matching network interface. + # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. + typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false + # Custom icon. + # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### + # IP color. + typeset -g POWERLEVEL9K_IP_FOREGROUND=38 + # The following parameters are accessible within the expansion: + # + # Parameter | Meaning + # ----------------------+------------------------------------------- + # P9K_IP_IP | IP address + # P9K_IP_INTERFACE | network interface + # P9K_IP_RX_BYTES | total number of bytes received + # P9K_IP_TX_BYTES | total number of bytes sent + # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt + # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt + # P9K_IP_RX_RATE | receive rate (since last prompt) + # P9K_IP_TX_RATE | send rate (since last prompt) + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %70F⇣$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F⇡$P9K_IP_TX_RATE}' + # Show information for the first network interface whose name matches this regular expression. + # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. + typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' + # Custom icon. + # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #########################[ proxy: system-wide http/https/ftp proxy ]########################## + # Proxy color. + typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68 + # Custom icon. + # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ battery: internal battery ]################################# + # Show battery in red when it's below this level and not connected to power supply. + typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 + typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160 + # Show battery in green when it's charging or fully charged. + typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70 + # Show battery in yellow when it's discharging. + typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178 + # Battery pictograms going from low to high level of charge. + typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079' + # Don't show the remaining time to charge/discharge. + typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false + + #####################################[ wifi: wifi speed ]##################################### + # WiFi color. + typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68 + # Custom icon. + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). + # + # # Wifi colors and icons for different signal strength levels (low to high). + # typeset -g my_wifi_fg=(68 68 68 68 68) # <-- change these values + # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values + # + # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' + # + # The following parameters are accessible within the expansions: + # + # Parameter | Meaning + # ----------------------+--------------- + # P9K_WIFI_SSID | service set identifier, a.k.a. network name + # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown + # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second + # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 + # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 + # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) + + ####################################[ time: current time ]#################################### + # Current time color. + typeset -g POWERLEVEL9K_TIME_FOREGROUND=66 + # Format for the current time: 09:51:02. See `man 3 strftime`. + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' + # If set to true, time will update when you hit enter. This way prompts for the past + # commands will contain the start times of their commands as opposed to the default + # behavior where they contain the end times of their preceding commands. + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false + # Custom icon. + # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat ' + + # Example of a user-defined prompt segment. Function prompt_example will be called on every + # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or + # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user. + # + # Type `p10k help segment` for documentation and a more sophisticated example. + function prompt_example() { + p10k segment -f 208 -i '⭐' -t 'hello, %n' + } + + # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job + # is to generate the prompt segment for display in instant prompt. See + # https://github.com/romkatv/powerlevel10k#instant-prompt. + # + # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function + # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k + # will replay these calls without actually calling instant_prompt_*. It is imperative that + # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this + # rule is not observed, the content of instant prompt will be incorrect. + # + # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If + # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. + function instant_prompt_example() { + # Since prompt_example always makes the same `p10k segment` calls, we can call it from + # instant_prompt_example. This will give us the same `example` prompt segment in the instant + # and regular prompts. + prompt_example + } + + # User-defined prompt segments can be customized the same way as built-in segments. + # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208 + # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt + # when accepting a command line. Supported values: + # + # - off: Don't change prompt when accepting a command line. + # - always: Trim down prompt when accepting a command line. + # - same-dir: Trim down prompt when accepting a command line unless this is the first command + # typed after changing current working directory. + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always + + # Instant prompt mode. + # + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found + # it incompatible with your zsh configuration files. + # - quiet: Enable instant prompt and don't print warnings when detecting console output + # during zsh initialization. Choose this if you've read and understood + # https://github.com/romkatv/powerlevel10k#instant-prompt. + # - verbose: Enable instant prompt and print a warning when detecting console output during + # zsh initialization. Choose this if you've never tried instant prompt, haven't + # seen the warning, or if you are unsure what this all means. + typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose + + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you + # really need it. + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true + + # If p10k is already loaded, reload configuration. + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. + (( ! $+functions[p10k] )) || p10k reload +} + +# Tell `p10k configure` which file it should overwrite. +typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} + +(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} +'builtin' 'unset' 'p10k_config_opts' From 92a3cb0167643f682ff01c5b3bba4ede209025c8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 15:52:35 -0400 Subject: [PATCH 095/236] feat(desktop) : added desktop to progs --- new_arch/progs.nix | 2 +- new_arch/progs/desktop.nix | 72 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/desktop.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 31341e7..a90feee 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -17,7 +17,7 @@ # "misc" "shells" # "office" - # "desktop" + "desktop" ]; homeImport = [ # "browsers" diff --git a/new_arch/progs/desktop.nix b/new_arch/progs/desktop.nix new file mode 100644 index 0000000..b5d094e --- /dev/null +++ b/new_arch/progs/desktop.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "desktop"; + subfolder = "desktop"; + main-repo = "nix"; + branch = "latest"; + imports = [ + # "plasma" + # "klassy" + # "rofi" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 4231cff91e8952d9a0aace80670cf1003d870216 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 16:11:11 -0400 Subject: [PATCH 096/236] feat(plasma) : added plasma to desktop --- new_arch/progs/desktop.nix | 8 +- new_arch/progs/desktop/plasma.nix | 209 ++++++++++++++++++++++++++++++ 2 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 new_arch/progs/desktop/plasma.nix diff --git a/new_arch/progs/desktop.nix b/new_arch/progs/desktop.nix index b5d094e..00df860 100644 --- a/new_arch/progs/desktop.nix +++ b/new_arch/progs/desktop.nix @@ -12,7 +12,7 @@ main-repo = "nix"; branch = "latest"; imports = [ - # "plasma" + "plasma" # "klassy" # "rofi" ]; @@ -21,7 +21,11 @@ }; extras = { }; - settings = null; + settings = { + plasma.enable = cfg.enable; + klassy.enable = cfg.enable; + rofi.enable = cfg.enable; + }; ###### # computed packages = if main-repo != null && branch != null diff --git a/new_arch/progs/desktop/plasma.nix b/new_arch/progs/desktop/plasma.nix new file mode 100644 index 0000000..063370a --- /dev/null +++ b/new_arch/progs/desktop/plasma.nix @@ -0,0 +1,209 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "plasma"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.plasma = { + enable = true; + configFile.kdeglobals.General = { + TerminalApplication = "ghostty"; + TerminalService = "com.mitchellh.ghostty.desktop"; + }; + window-rules = [ + { + description = "vscode-desktop-file"; + match.window-class = "code code"; + apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic + } + { + description = "fix_LibreOffice_Icon"; + match.window-class = { + value = "libreoffice-draw"; + type = "substring"; + match-whole = true; + }; + apply.desktopfile = { + value = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/draw.desktop"; + apply = "initially"; + }; + } + ]; + shortcuts = { + "services/com.mitchellh.ghostty.desktop" = { + _launch = [ + "Meta+Return" + "Ctrl+Alt+T" + ]; + new-window = ["Meta+Shift+Return"]; + }; + "ksmserver" = { + "Lock Session" = ["Meta+L"]; + "Sleep" = ["Meta+Shift+L"]; + }; + }; + workspace = { + colorScheme = "KlassyDark"; + windowDecorations = { + library = "org.kde.klassy"; + theme = "Klassy"; + }; + iconTheme = "Klassy Dark"; + theme = "klassy"; + }; + panels = [ + { + location = "top"; + height = 27; + screen = "all"; + opacity = "adaptive"; + alignment = "center"; + widgets = [ + "org.kde.plasma.trash" + "org.kde.plasma.panelspacer" + "org.kde.plasma.digitalclock" + "org.kde.plasma.notifications" + "org.kde.plasma.panelspacer" + { + name = "org.kde.plasma.systemtray"; + config = {}; + } + "org.kde.plasma.volume" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.battery" + { + name = "org.kde.plasma.lock_logout"; + # settings = { + # showLogoutScreen = true; + # }; + } + # { + # name = "luisbocanegra.panelspacer.extended"; + # config = { + # expand = true; + # }; + # } + # "org.kde.plasma.systemmonitor" + ]; + } + { + location = "bottom"; + height = 44; + screen = "all"; + opacity = "adaptive"; + alignment = "left"; + hiding = "dodgewindows"; + widgets = [ + "org.kde.plasma.kicker" + # "org.kde.plasma.kickerdash" + { + name = "org.kde.plasma.icontasks"; + config = { + taskDisplayMode = "IconsOnly"; + showOnlyCurrentDesktop = true; + groupTasks = true; + launchers = with packages; [ + "applications:systemsettings.desktop" + "applications:org.kde.dolphin.desktop" + "applications:firefox.desktop" + "applications:chromium-browser.desktop" + "applications:com.mitchellh.ghostty.desktop" + # "applications:code-url-handler.desktop" + "applications:code.desktop" + ]; + }; + } + "org.kde.plasma.showdesktop" + ]; + } + ]; + }; + home.packages = with packages.kdePackages; [ + sddm-kcm + qtvirtualkeyboard + breeze + filelight + dolphin-plugins + ]; + }; + System = { + services = { + desktopManager.plasma6.enable = true; + displayManager = { + sddm = { + enable = true; + wayland.enable = true; + settings = { + General = { + InputMethod = "qtvirtualkeyboard"; + }; + }; + autoNumlock = true; + }; + }; + }; + environment.plasma6.excludePackages = with packages.kdePackages; [ + elisa + konsole + discover + ]; + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 0355041c43b5255522213ac92da58e51ac28189d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 16:15:14 -0400 Subject: [PATCH 097/236] feat(klassy) : added klassy to desktop --- new_arch/progs/desktop.nix | 2 +- new_arch/progs/desktop/klassy.nix | 71 +++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/desktop/klassy.nix diff --git a/new_arch/progs/desktop.nix b/new_arch/progs/desktop.nix index 00df860..b9ef387 100644 --- a/new_arch/progs/desktop.nix +++ b/new_arch/progs/desktop.nix @@ -13,7 +13,7 @@ branch = "latest"; imports = [ "plasma" - # "klassy" + "klassy" # "rofi" ]; options = { diff --git a/new_arch/progs/desktop/klassy.nix b/new_arch/progs/desktop/klassy.nix new file mode 100644 index 0000000..cebed5c --- /dev/null +++ b/new_arch/progs/desktop/klassy.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "klassy"; + subfolder = null; + main-repo = "nur"; + branch = "klassy"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages.repos; [ + shadowrz.klassy-qt6 + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From df52f8635faa4911ce9d549ac0fa600c25731fd2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 16:18:11 -0400 Subject: [PATCH 098/236] feat(rofi) : added rofi to desktop --- new_arch/progs/desktop.nix | 2 +- new_arch/progs/desktop/rofi.nix | 77 +++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/desktop/rofi.nix diff --git a/new_arch/progs/desktop.nix b/new_arch/progs/desktop.nix index b9ef387..5640c94 100644 --- a/new_arch/progs/desktop.nix +++ b/new_arch/progs/desktop.nix @@ -14,7 +14,7 @@ imports = [ "plasma" "klassy" - # "rofi" + "rofi" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/desktop/rofi.nix b/new_arch/progs/desktop/rofi.nix new file mode 100644 index 0000000..ee55913 --- /dev/null +++ b/new_arch/progs/desktop/rofi.nix @@ -0,0 +1,77 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "rofi"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.rofi = { + enable = true; + terminal = "/${packages.ghostty}/bin/ghostty"; + theme = "Arc-Dark"; + modes = ["drun" "ssh" "run" "calc"]; + plugins = with packages; [ + rofi-calc + ]; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From e031e1d26eda3b89fe463bdffda6e3943e99710d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 18:24:59 -0400 Subject: [PATCH 099/236] feat(build) : give more ressources for vm testing --- new_arch/configuration.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix index a0196bc..98bc7eb 100644 --- a/new_arch/configuration.nix +++ b/new_arch/configuration.nix @@ -40,6 +40,13 @@ in { virtualisation = { libvirtd.enable = true; spiceUSBRedirection.enable = true; + vmVariant = { + # the following configuration is added only when building VM with `build-vm` + virtualisation = { + memorySize = 2048; # use 2048MiB memory + cores = 3; # use 3 cpu cores + }; + }; }; # FIXME : Move to somewhere else fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; # FIXME : Move to somewhere else } From 8ca29526d02290e0fd66469d5a390cbc826d7867 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 18:37:09 -0400 Subject: [PATCH 100/236] feat(office) : added office to progs --- new_arch/progs.nix | 2 +- new_arch/progs/office.nix | 78 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/office.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index a90feee..0ef387c 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -16,7 +16,7 @@ # "dev" # "misc" "shells" - # "office" + "office" "desktop" ]; homeImport = [ diff --git a/new_arch/progs/office.nix b/new_arch/progs/office.nix new file mode 100644 index 0000000..b19899b --- /dev/null +++ b/new_arch/progs/office.nix @@ -0,0 +1,78 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "office"; + subfolder = "office"; + main-repo = null; + branch = null; + imports = [ + # "libreoffice" + # "qualculate" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = { + libreoffice = { + enable = cfg.enable && cfg.libreoffice; + }; + qualculate = { + enable = cfg.enable && cfg.qualculate; + }; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 4c43426d571727bcaa00c35fe2a83288b21b2cc5 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 18:48:25 -0400 Subject: [PATCH 101/236] fix(settings) : fixed the settings of office --- new_arch/progs/office.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/new_arch/progs/office.nix b/new_arch/progs/office.nix index b19899b..d9e54a3 100644 --- a/new_arch/progs/office.nix +++ b/new_arch/progs/office.nix @@ -21,12 +21,8 @@ extras = { }; settings = { - libreoffice = { - enable = cfg.enable && cfg.libreoffice; - }; - qualculate = { - enable = cfg.enable && cfg.qualculate; - }; + libreoffice.enable = true; + qualculate.enable = true; }; ###### # computed packages = From 7d46c91d9493374f9aa09616aa6292fe0ae20b63 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 18:50:31 -0400 Subject: [PATCH 102/236] feat(misc) : added misc to progs --- new_arch/progs.nix | 2 +- new_arch/progs/misc.nix | 87 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 0ef387c..644348a 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -14,7 +14,7 @@ branch = "latest"; imports = [ # "dev" - # "misc" + "misc" "shells" "office" "desktop" diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix new file mode 100644 index 0000000..4e8662d --- /dev/null +++ b/new_arch/progs/misc.nix @@ -0,0 +1,87 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "misc"; + subfolder = "misc"; + main-repo = "nix"; + branch = "latest"; + imports = [ + # "ledger" + # "bambu-studio" + # "bitwarden" + # "fastfetch" + # "iso-image-writer" + # "vesktop" + # "kdeconnect" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = { + ledger.enable = true; + bambu-studio.enable = true; + bitwarden.enable = true; + fastfetch.enable = true; + iso-image-writer.enable = true; + kdeconnect.enable = true; + vesktop.enable = true; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + vlc + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 83551d56d26fb34a5bb33cd1bf8d5e419ff065b4 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 18:56:03 -0400 Subject: [PATCH 103/236] feat(browsers) : added browsers to progs --- new_arch/progs.nix | 7 +--- new_arch/progs/browsers.nix | 76 +++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 new_arch/progs/browsers.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index 644348a..b3301cc 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -18,10 +18,8 @@ "shells" "office" "desktop" + "browsers" ]; - homeImport = [ - # "browsers" - ]; # FIXME :temporary options = null; newSettings.${name} = { }; @@ -82,8 +80,7 @@ in { Home = tools.contextualModule { inherit lib config tools; # deps inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated - inherit options; # user defined - imports = imports ++ homeImport; # user defined + inherit options imports; # user defined togglable = false; context = "Home"; Config = HomeConfig; diff --git a/new_arch/progs/browsers.nix b/new_arch/progs/browsers.nix new file mode 100644 index 0000000..af3801f --- /dev/null +++ b/new_arch/progs/browsers.nix @@ -0,0 +1,76 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "browsers"; + subfolder = "browsers"; + main-repo = null; + branch = null; + imports = [ + # "firefox" + # "chromium" + # "zen" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = { + firefox.enable = true; + chromium.enable = true; + zen.enable = true; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 86b4b568913a068429228da838ade8d153f4d909 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 19:39:16 -0400 Subject: [PATCH 104/236] feat(dev) : added dev to progs --- new_arch/progs.nix | 2 +- new_arch/progs/dev.nix | 98 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev.nix diff --git a/new_arch/progs.nix b/new_arch/progs.nix index b3301cc..e2c56f9 100644 --- a/new_arch/progs.nix +++ b/new_arch/progs.nix @@ -13,7 +13,7 @@ repo = "nix"; branch = "latest"; imports = [ - # "dev" + "dev" "misc" "shells" "office" diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix new file mode 100644 index 0000000..c065708 --- /dev/null +++ b/new_arch/progs/dev.nix @@ -0,0 +1,98 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "dev"; + subfolder = "dev"; + main-repo = "nix"; + branch = "latest"; + imports = [ + ## "editors" => # "vim" "vscode" + ## "lang" => # "nix" + ## "terminals" => # "ghostty" + ## "virtualization" => # "docker" + ## "network" => # "postman" + # "nix" + # "boot" + # "network" + # "ghostty" + # "git" #solo + # "vim" + # "vscode" + # "docker" + # "postman" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = { + nix.enable = true; + boot.enable = true; + network.enable = true; + ghostty.enable = true; + git.enable = true; + vim.enable = true; + vscode.enable = true; + docker.enable = true; + postman.enable = true; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + python3 + nmap # for network + netcat-openbsd # for network + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From efad84f99d79303c5e9dd3beb0d9fb4a6ca878d7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 19:51:07 -0400 Subject: [PATCH 105/236] feat(libreoffice) : added libreoffice to office --- new_arch/progs/office.nix | 2 +- new_arch/progs/office/libreoffice.nix | 71 +++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/office/libreoffice.nix diff --git a/new_arch/progs/office.nix b/new_arch/progs/office.nix index d9e54a3..2ccb54e 100644 --- a/new_arch/progs/office.nix +++ b/new_arch/progs/office.nix @@ -12,7 +12,7 @@ main-repo = null; branch = null; imports = [ - # "libreoffice" + "libreoffice" # "qualculate" ]; options = { diff --git a/new_arch/progs/office/libreoffice.nix b/new_arch/progs/office/libreoffice.nix new file mode 100644 index 0000000..086c63a --- /dev/null +++ b/new_arch/progs/office/libreoffice.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "libreoffice"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = rec { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + libreoffice + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 8eda78321c65a1d97e54b235c21337658d28e2d9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 19:53:06 -0400 Subject: [PATCH 106/236] feat(qualculate) : added qualculate to office --- new_arch/progs/office.nix | 2 +- new_arch/progs/office/qualculate.nix | 71 ++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/office/qualculate.nix diff --git a/new_arch/progs/office.nix b/new_arch/progs/office.nix index 2ccb54e..e7f3c3c 100644 --- a/new_arch/progs/office.nix +++ b/new_arch/progs/office.nix @@ -13,7 +13,7 @@ branch = null; imports = [ "libreoffice" - # "qualculate" + "qualculate" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/office/qualculate.nix b/new_arch/progs/office/qualculate.nix new file mode 100644 index 0000000..8b655b7 --- /dev/null +++ b/new_arch/progs/office/qualculate.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "qualculate"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = rec { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + qalculate-qt + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From be77fd03e8b89e33fdaf043acc0dd2533cd7c5db Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:01:13 -0400 Subject: [PATCH 107/236] feat(ledger) : added ledger to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/ledger.nix | 72 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/ledger.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index 4e8662d..4f529ee 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -12,7 +12,7 @@ main-repo = "nix"; branch = "latest"; imports = [ - # "ledger" + "ledger" # "bambu-studio" # "bitwarden" # "fastfetch" diff --git a/new_arch/progs/misc/ledger.nix b/new_arch/progs/misc/ledger.nix new file mode 100644 index 0000000..945c87f --- /dev/null +++ b/new_arch/progs/misc/ledger.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "ledger"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + ledger-live-desktop + ]; + }; + System = { + hardware.ledger.enable = true; + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From ecf79595ba2a7ce1fe5b41b2a214e570a78a6119 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:08:25 -0400 Subject: [PATCH 108/236] feat(bambu-studio) : added bambu-studio to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/bambu-studio.nix | 71 ++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/bambu-studio.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index 4f529ee..9f33ecc 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -13,7 +13,7 @@ branch = "latest"; imports = [ "ledger" - # "bambu-studio" + "bambu-studio" # "bitwarden" # "fastfetch" # "iso-image-writer" diff --git a/new_arch/progs/misc/bambu-studio.nix b/new_arch/progs/misc/bambu-studio.nix new file mode 100644 index 0000000..aa04f14 --- /dev/null +++ b/new_arch/progs/misc/bambu-studio.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "bambu-studio"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + bambu-studio + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 2ac54881427afe6eac2dceea548d120afae363e9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:11:54 -0400 Subject: [PATCH 109/236] feat(bitwarden) : added bitwarden to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/bitwarden.nix | 72 +++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/bitwarden.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index 9f33ecc..0f6c2de 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -14,7 +14,7 @@ imports = [ "ledger" "bambu-studio" - # "bitwarden" + "bitwarden" # "fastfetch" # "iso-image-writer" # "vesktop" diff --git a/new_arch/progs/misc/bitwarden.nix b/new_arch/progs/misc/bitwarden.nix new file mode 100644 index 0000000..07bda58 --- /dev/null +++ b/new_arch/progs/misc/bitwarden.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "bitwarden"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + bitwarden-desktop + bitwarden-cli + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From b41ed7e794319b9e2faabc52903e651ebcc8c200 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:13:02 -0400 Subject: [PATCH 110/236] feat(fastfetch) : added fastfetch to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/fastfetch.nix | 71 +++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/fastfetch.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index 0f6c2de..dc55db8 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -15,7 +15,7 @@ "ledger" "bambu-studio" "bitwarden" - # "fastfetch" + "fastfetch" # "iso-image-writer" # "vesktop" # "kdeconnect" diff --git a/new_arch/progs/misc/fastfetch.nix b/new_arch/progs/misc/fastfetch.nix new file mode 100644 index 0000000..b0d74cf --- /dev/null +++ b/new_arch/progs/misc/fastfetch.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "fastfetch"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + fastfetch + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 3633d33edabc81163cc87a5d8d0d0464ef9f7946 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:14:31 -0400 Subject: [PATCH 111/236] feat(iso-image-writer) : added iso-image-writer to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/iso-image-writer.nix | 71 ++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/iso-image-writer.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index dc55db8..f7549c5 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -16,7 +16,7 @@ "bambu-studio" "bitwarden" "fastfetch" - # "iso-image-writer" + "iso-image-writer" # "vesktop" # "kdeconnect" ]; diff --git a/new_arch/progs/misc/iso-image-writer.nix b/new_arch/progs/misc/iso-image-writer.nix new file mode 100644 index 0000000..0027c0e --- /dev/null +++ b/new_arch/progs/misc/iso-image-writer.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "iso-image-writer"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + kdePackages.isoimagewriter + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 834919fcb982c287a1ff448bf083306df2c65059 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:16:33 -0400 Subject: [PATCH 112/236] feat(vesktop) : added vesktop to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/vesktop.nix | 71 +++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/vesktop.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index f7549c5..19f9a3e 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -17,7 +17,7 @@ "bitwarden" "fastfetch" "iso-image-writer" - # "vesktop" + "vesktop" # "kdeconnect" ]; options = { diff --git a/new_arch/progs/misc/vesktop.nix b/new_arch/progs/misc/vesktop.nix new file mode 100644 index 0000000..3b18da5 --- /dev/null +++ b/new_arch/progs/misc/vesktop.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "vesktop"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.vesktop = { + enable = true; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 3e98014fd3c76b53b52758d92d7ab45882c42f3e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:20:18 -0400 Subject: [PATCH 113/236] feat(kdeconnect) : added kdeconnect to misc --- new_arch/progs/misc.nix | 2 +- new_arch/progs/misc/kdeconnect.nix | 78 ++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/misc/kdeconnect.nix diff --git a/new_arch/progs/misc.nix b/new_arch/progs/misc.nix index 19f9a3e..a9ff92e 100644 --- a/new_arch/progs/misc.nix +++ b/new_arch/progs/misc.nix @@ -18,7 +18,7 @@ "fastfetch" "iso-image-writer" "vesktop" - # "kdeconnect" + "kdeconnect" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/misc/kdeconnect.nix b/new_arch/progs/misc/kdeconnect.nix new file mode 100644 index 0000000..7840d3a --- /dev/null +++ b/new_arch/progs/misc/kdeconnect.nix @@ -0,0 +1,78 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "kdeconnect"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + services.kdeconnect.enable = true; + }; + System = { + networking.firewall = rec { + allowedTCPPortRanges = [ + { + from = 1714; + to = 1764; + } + ]; + allowedUDPPortRanges = allowedTCPPortRanges; + }; + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 795cf5bb6d36c13115079ac79fce5341a7e91eab Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:23:46 -0400 Subject: [PATCH 114/236] fix(packages) : got rid of unused parameters --- new_arch/progs/misc/kdeconnect.nix | 4 ++-- new_arch/progs/misc/vesktop.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/new_arch/progs/misc/kdeconnect.nix b/new_arch/progs/misc/kdeconnect.nix index 7840d3a..77f60d4 100644 --- a/new_arch/progs/misc/kdeconnect.nix +++ b/new_arch/progs/misc/kdeconnect.nix @@ -9,8 +9,8 @@ ###### # user defined name = "kdeconnect"; subfolder = null; - main-repo = "nix"; - branch = "latest"; + main-repo = null; + branch = null; imports = null; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/misc/vesktop.nix b/new_arch/progs/misc/vesktop.nix index 3b18da5..e27e0a4 100644 --- a/new_arch/progs/misc/vesktop.nix +++ b/new_arch/progs/misc/vesktop.nix @@ -9,8 +9,8 @@ ###### # user defined name = "vesktop"; subfolder = null; - main-repo = "nix"; - branch = "latest"; + main-repo = null; + branch = null; imports = null; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; From 0b58e6fb3e116d4cedea925a2937ef1fbe4fc824 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:34:45 -0400 Subject: [PATCH 115/236] fix(settings) : turned settings to manual --- new_arch/progs/desktop.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/new_arch/progs/desktop.nix b/new_arch/progs/desktop.nix index 5640c94..b1aefe9 100644 --- a/new_arch/progs/desktop.nix +++ b/new_arch/progs/desktop.nix @@ -22,9 +22,9 @@ extras = { }; settings = { - plasma.enable = cfg.enable; - klassy.enable = cfg.enable; - rofi.enable = cfg.enable; + plasma.enable = true; + klassy.enable = true; + rofi.enable = true; }; ###### # computed packages = From cac64ac5147778d0bc8bf2d342660617f3452486 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:42:37 -0400 Subject: [PATCH 116/236] feat(boot) : added boot to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/boot.nix | 78 +++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/boot.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index c065708..e962fb3 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -18,7 +18,7 @@ ## "virtualization" => # "docker" ## "network" => # "postman" # "nix" - # "boot" + "boot" # "network" # "ghostty" # "git" #solo diff --git a/new_arch/progs/dev/boot.nix b/new_arch/progs/dev/boot.nix new file mode 100644 index 0000000..1717136 --- /dev/null +++ b/new_arch/progs/dev/boot.nix @@ -0,0 +1,78 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "boot"; + subfolder = "boot"; + main-repo = null; + branch = null; + imports = [ + # "efibootmgr" + # "grub" + # "gparted" + # "os-prober" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = { + efibootmgr.enable = true; + grub.enable = true; + gparted.enable = true; + os-prober.enable = true; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From ee9f15efc0d7436f7cb466e337dd30bcbd01d809 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:44:24 -0400 Subject: [PATCH 117/236] feat(docker) : added docker to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/docker.nix | 74 +++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/docker.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index e962fb3..26cee6b 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -24,7 +24,7 @@ # "git" #solo # "vim" # "vscode" - # "docker" + "docker" # "postman" ]; options = { diff --git a/new_arch/progs/dev/docker.nix b/new_arch/progs/dev/docker.nix new file mode 100644 index 0000000..17cecf9 --- /dev/null +++ b/new_arch/progs/dev/docker.nix @@ -0,0 +1,74 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "docker"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + docker + docker-compose + lazydocker + ]; + }; + System = { + virtualisation.docker.enable = true; + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From d18694cb5532cb6b7c0e90cb8c926979aaeed197 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:48:09 -0400 Subject: [PATCH 118/236] feat(ghostty) : added ghostty to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/ghostty.nix | 78 ++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/ghostty.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index 26cee6b..7a59f02 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -20,7 +20,7 @@ # "nix" "boot" # "network" - # "ghostty" + "ghostty" # "git" #solo # "vim" # "vscode" diff --git a/new_arch/progs/dev/ghostty.nix b/new_arch/progs/dev/ghostty.nix new file mode 100644 index 0000000..bb5f51d --- /dev/null +++ b/new_arch/progs/dev/ghostty.nix @@ -0,0 +1,78 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "ghostty"; + subfolder = null; + main-repo = null; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.ghostty = { + enable = true; + enableZshIntegration = true; + installVimSyntax = true; + settings = { + working-directory = "$HOME"; + gtk-single-instance = false; + window-inherit-working-directory = true; + }; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 48f29c16237a487c051a2e4229a623068c121296 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Wed, 15 Apr 2026 20:49:44 -0400 Subject: [PATCH 119/236] feat(git) : added git to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/git.nix | 78 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/git.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index 7a59f02..fd8d1ed 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -21,7 +21,7 @@ "boot" # "network" "ghostty" - # "git" #solo + "git" #solo # "vim" # "vscode" "docker" diff --git a/new_arch/progs/dev/git.nix b/new_arch/progs/dev/git.nix new file mode 100644 index 0000000..3576be6 --- /dev/null +++ b/new_arch/progs/dev/git.nix @@ -0,0 +1,78 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "git"; + subfolder = null; + main-repo = null; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.git = { + enable = true; + settings = { + user = { + name = "MatthieuGomes"; + email = "matthieu.gomes@ensea.fr"; + }; + init.defaultBranch = "main"; + }; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 1a8ecf2a3c60416c112b690e23a9cf177c115f68 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 09:14:43 -0400 Subject: [PATCH 120/236] fix(git) : got rid of unused variables --- new_arch/progs/dev/git.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/new_arch/progs/dev/git.nix b/new_arch/progs/dev/git.nix index 3576be6..3539567 100644 --- a/new_arch/progs/dev/git.nix +++ b/new_arch/progs/dev/git.nix @@ -10,7 +10,7 @@ name = "git"; subfolder = null; main-repo = null; - branch = "latest"; + branch = null; imports = null; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; From 4742f0ee7ad0c88438f4237b15f21fc7f801bba0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 09:15:14 -0400 Subject: [PATCH 121/236] feat(network) : added network to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/network.nix | 72 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/network.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index fd8d1ed..9d03311 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -19,7 +19,7 @@ ## "network" => # "postman" # "nix" "boot" - # "network" + "network" "ghostty" "git" #solo # "vim" diff --git a/new_arch/progs/dev/network.nix b/new_arch/progs/dev/network.nix new file mode 100644 index 0000000..420181a --- /dev/null +++ b/new_arch/progs/dev/network.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "network"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + netcat-openbsd + nmap + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 174e5086db62b7941543931bfce722944c60a887 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 09:28:46 -0400 Subject: [PATCH 122/236] feat(nix) : added nix to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/nix.nix | 74 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/nix.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index 9d03311..c02b248 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -17,7 +17,7 @@ ## "terminals" => # "ghostty" ## "virtualization" => # "docker" ## "network" => # "postman" - # "nix" + "nix" "boot" "network" "ghostty" diff --git a/new_arch/progs/dev/nix.nix b/new_arch/progs/dev/nix.nix new file mode 100644 index 0000000..c321647 --- /dev/null +++ b/new_arch/progs/dev/nix.nix @@ -0,0 +1,74 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "nix"; + subfolder = "nix"; + main-repo = null; + branch = null; + imports = [ + # "alejandra" + # "nixd" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = { + alejandra.enable = true; + nixd.enable = true; + }; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From d87ccae8842b92fe5db7735e5ce6ac98ae4c0966 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 09:32:25 -0400 Subject: [PATCH 123/236] feat(postman) : added postman to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/postman.nix | 71 ++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/postman.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index c02b248..34f39ce 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -25,7 +25,7 @@ # "vim" # "vscode" "docker" - # "postman" + "postman" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/dev/postman.nix b/new_arch/progs/dev/postman.nix new file mode 100644 index 0000000..85dbc7e --- /dev/null +++ b/new_arch/progs/dev/postman.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "postman"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + postman + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From f77a22b3b557d6c1a8af21af452451ac812801eb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 09:36:43 -0400 Subject: [PATCH 124/236] feat(vim) : added vim to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/vim.nix | 76 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/vim.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index 34f39ce..8003a3b 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -22,7 +22,7 @@ "network" "ghostty" "git" #solo - # "vim" + "vim" # "vscode" "docker" "postman" diff --git a/new_arch/progs/dev/vim.nix b/new_arch/progs/dev/vim.nix new file mode 100644 index 0000000..698d14a --- /dev/null +++ b/new_arch/progs/dev/vim.nix @@ -0,0 +1,76 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "vim"; + subfolder = null; + main-repo = null; + branch = null; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.vim = { + enable = true; + defaultEditor = true; + settings = { + copyindent = true; + number = true; + }; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 069b684402776571ce303b5b3b53c999fd1540a8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 09:44:16 -0400 Subject: [PATCH 125/236] feat(vscode) : added vscode to dev --- new_arch/progs/dev.nix | 2 +- new_arch/progs/dev/vscode.nix | 76 +++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/vscode.nix diff --git a/new_arch/progs/dev.nix b/new_arch/progs/dev.nix index 8003a3b..528d643 100644 --- a/new_arch/progs/dev.nix +++ b/new_arch/progs/dev.nix @@ -23,7 +23,7 @@ "ghostty" "git" #solo "vim" - # "vscode" + "vscode" "docker" "postman" ]; diff --git a/new_arch/progs/dev/vscode.nix b/new_arch/progs/dev/vscode.nix new file mode 100644 index 0000000..bdcd8d1 --- /dev/null +++ b/new_arch/progs/dev/vscode.nix @@ -0,0 +1,76 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "vscode"; + subfolder = null; + main-repo = "nix"; + branch = "unstable"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.vscode = { + enable = true; + package = packages.vscode; + mutableExtensionsDir = true; + # profiles.Default={ + + # }; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 8353daf4f4165d66b23641a3fb72d774eb8bd76d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 18:49:38 -0400 Subject: [PATCH 126/236] feat(firefox) : added firefox to browsers --- new_arch/progs/browsers.nix | 2 +- new_arch/progs/browsers/firefox.nix | 165 ++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/browsers/firefox.nix diff --git a/new_arch/progs/browsers.nix b/new_arch/progs/browsers.nix index af3801f..389d069 100644 --- a/new_arch/progs/browsers.nix +++ b/new_arch/progs/browsers.nix @@ -12,7 +12,7 @@ main-repo = null; branch = null; imports = [ - # "firefox" + "firefox" # "chromium" # "zen" ]; diff --git a/new_arch/progs/browsers/firefox.nix b/new_arch/progs/browsers/firefox.nix new file mode 100644 index 0000000..6f6ee21 --- /dev/null +++ b/new_arch/progs/browsers/firefox.nix @@ -0,0 +1,165 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "firefox"; + subfolder = null; + main-repo = null; + branch = null; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + bitwarden-ID = "446900e4-71c2-419f-a6a7-df9c091e268b"; + adBlocker-ID = "adblockultimate@adblockultimate.net"; + plasmaIntegration-ID = "plasma-browser-integration@kde.org"; + qwant-ID = "qwantcomforfirefox@jetpack"; + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.firefox = { + enable = true; + profiles = { + default = { + id = 0; + name = "default"; + isDefault = true; + # search = { + # default = "qwant"; + # }; + settings = { + "privacy.donottrackheader.enabled" = true; + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.socialtracking.enabled" = true; + "privacy.partition.network_state.ocsp_cache" = true; + "browser.newtabpage.activity-stream.feeds.telemetry" = false; + "browser.newtabpage.activity-stream.telemetry" = false; + "browser.ping-centre.telemetry" = false; + "toolkit.telemetry.archive.enabled" = false; + "toolkit.telemetry.bhrPing.enabled" = false; + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.firstShutdownPing.enabled" = false; + "toolkit.telemetry.hybridContent.enabled" = false; + "toolkit.telemetry.newProfilePing.enabled" = false; + "toolkit.telemetry.reportingpolicy.firstRun" = false; + "toolkit.telemetry.shutdownPingSender.enabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.updatePing.enabled" = false; + "experiments.activeExperiment" = false; + "experiments.enabled" = false; + "experiments.supported" = false; + "network.allow-experiments" = false; + "services.sync.username" = "nehril012601@gmail.com"; + "browser.uiCustomization.state" = "{\"placements\":{\"unified-extensions-area\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"_${extras.bitwarden-ID}_browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"vertical-tabs\"],\"currentVersion\":23,\"newElementCount\":1}"; + "browser.uiCustomization.navBarWhenVerticalTabs" = "[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"unified-extensions-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"]"; + "services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" = false; + "services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.formData" = true; + "sidebar.verticalTabs" = true; + "sidebar.visibility" = "expand-on-hover"; + "sidebar.installed.extensions" = "{${extras.bitwarden-ID}}"; + "sidebar.main.tools" = "history,syncedtabs,bookmarks,{${extras.bitwarden-ID}}"; + + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "extensions.pocket.enabled" = false; + "extensions.pocket.api" = ""; + "extensions.pocket.oAuthConsumerKey" = ""; + "extensions.pocket.showHome" = false; + "extensions.pocket.site" = ""; + }; + }; + }; + policies = { + AutofillAddressEnabled = false; + AutofillCreditCardsEnabled = false; + DisableFirefoxStudies = true; + DisableFormHistory = true; + GenerativeAI = { + Enabled = false; + }; + TranslateEnabled = false; + DisableSafeMode = true; + DisableTelemetry = true; + Extensions = { + Locked = [ + extras.bitwarden-ID + extras.adBlocker-ID + extras.plasmaIntegration-ID + extras.qwant-ID + ]; + }; + HomePage = { + StartPage = "none"; + }; + # SanitizeOnShutdown = { + # Cache = true; + # Cookies = true; + # FormData = true; + # History = false; + # Sessions = false; + # SiteSettings = false; + # Downloads = false; + # }; + Cookies = { + Allow = [ + "https://www.youtube.com" + "https://www.google.com" + "https://www.facebook.com" + "https://web.whatsapp.com" + "https://chat.mistral.ai/chat" + ]; + }; + }; + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 9b095362373d27dac0f26affaf37e73fc7bc49b0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 18:50:07 -0400 Subject: [PATCH 127/236] misc(firefox) : addings static files --- new_arch/progs/browsers/statics/prefs.js | 301 +++++++++++++++++++ new_arch/progs/browsers/statics/test.json | 27 ++ new_arch/progs/browsers/statics/toolbar.json | 46 +++ 3 files changed, 374 insertions(+) create mode 100644 new_arch/progs/browsers/statics/prefs.js create mode 100644 new_arch/progs/browsers/statics/test.json create mode 100644 new_arch/progs/browsers/statics/toolbar.json diff --git a/new_arch/progs/browsers/statics/prefs.js b/new_arch/progs/browsers/statics/prefs.js new file mode 100644 index 0000000..35b80f3 --- /dev/null +++ b/new_arch/progs/browsers/statics/prefs.js @@ -0,0 +1,301 @@ +// Mozilla User Preferences + +// DO NOT EDIT THIS FILE. +// +// If you make changes to this file while the application is running, +// the changes will be overwritten when the application exits. +// +// To change a preference value, you can either: +// - modify it via the UI (e.g. via about:config in the browser); or +// - set it within a user.js file in your profile. + +user_pref("accessibility.typeaheadfind.flashBar", 0); +user_pref("app.normandy.first_run", false); +user_pref("app.normandy.migrationsApplied", 12); +user_pref("app.normandy.user_id", "2647d764-745a-43ce-aaed-d8768b4bcce1"); +user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1770566700); +user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1770573900); +user_pref("app.update.lastUpdateTime.glean-addons-daily", 1770566700); +user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1770566700); +user_pref("app.update.lastUpdateTime.region-update-timer", 1770566700); +user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1770576532); +user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1770566700); +user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1770566700); +user_pref("browser", "{\"uiCustomization\":{\"state\":{\"placements\":{\"unified-extensions-area\":[],\"widget-overflow-fixed-list\":[]}}}}"); +user_pref("browser.bookmarks.restore_default_bookmarks", false); +user_pref("browser.bookmarks.showMobileBookmarks", false); +user_pref("browser.contentblocking.category", "standard"); +user_pref("browser.contextual-services.contextId", "1ee794fd-c1f6-4c21-aebc-f9d796b53de1"); +user_pref("browser.contextual-services.contextId.timestamp-in-seconds", 1770566875); +user_pref("browser.download.viewableInternally.typeWasRegistered.avif", true); +user_pref("browser.download.viewableInternally.typeWasRegistered.webp", true); +user_pref("browser.engagement.fxa-toolbar-menu-button.has-used", true); +user_pref("browser.engagement.home-button.has-removed", true); +user_pref("browser.formfill.enable", true); +user_pref("browser.ipProtection.locationListCache", "[{\"name\":\"United States of America (Fastly)\",\"code\":\"US\",\"cities\":[{\"name\":\"USA\",\"code\":\"Q30\",\"servers\":[{\"port\":2499,\"hostname\":\"proxy.m1.fastly-masque.net\",\"quarantined\":false,\"protocols\":[{\"name\":\"connect\",\"host\":\"proxy.m1.fastly-masque.net\",\"port\":2499,\"scheme\":\"https\"}]}]}]}]"); +user_pref("browser.laterrun.bookkeeping.profileCreationTime", 1770566669); +user_pref("browser.laterrun.bookkeeping.sessionCount", 1); +user_pref("browser.laterrun.enabled", true); +user_pref("browser.migration.version", 163); +user_pref("browser.newtabpage.activity-stream.discoverystream.spoc.impressions", "{\"CAISEm1vemlsbGEgZm91bmRhdGlvbg\":[1770566702258],\"CAISF3NvbG8gYWkgd2Vic2l0ZSBjcmVhdG9y\":[1770566702262]}"); +user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); +user_pref("browser.newtabpage.activity-stream.impressionId", "{fa1053f5-01dd-481a-a8d9-4f2e884ea0d7}"); +user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); +user_pref("browser.newtabpage.activity-stream.showSponsored", false); +user_pref("browser.newtabpage.activity-stream.telemetry", false); +user_pref("browser.newtabpage.activity-stream.topSitesRows", 2); +user_pref("browser.newtabpage.storageVersion", 1); +user_pref("browser.pageActions.persistedActions", "{\"ids\":[\"bookmark\"],\"idsInUrlbar\":[\"bookmark\"],\"idsInUrlbarPreProton\":[],\"version\":1}"); +user_pref("browser.pagethumbnails.storage_version", 3); +user_pref("browser.ping-centre.telemetry", false); +user_pref("browser.policies.applied", true); +user_pref("browser.proton.toolbar.version", 3); +user_pref("browser.region.update.updated", 1770566670); +user_pref("browser.safebrowsing.malware.enabled", false); +user_pref("browser.safebrowsing.phishing.enabled", false); +user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1770566670847"); +user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1770588270847"); +user_pref("browser.search.region", "CA"); +user_pref("browser.search.serpEventTelemetryCategorization.regionEnabled", false); +user_pref("browser.search.totalSearches", 29); +user_pref("browser.shell.mostRecentDateSetAsDefault", "1770576531"); +user_pref("browser.startup.couldRestoreSession.count", 1); +user_pref("browser.startup.homepage_override.buildID", "20260126151322"); +user_pref("browser.startup.homepage_override.mstone", "147.0.2"); +user_pref("browser.startup.lastColdStartupCheck", 1770576532); +user_pref("browser.startup.page", 3); +user_pref("browser.termsofuse.prefMigrationCheck", true); +user_pref("browser.theme.toolbar-theme", 0); +user_pref("browser.toolbarbuttons.introduced.sidebar-button", true); +user_pref("browser.toolbars.bookmarks.visibility", "always"); +user_pref("browser.topsites.contile.cacheValidFor", 10800); +user_pref("browser.topsites.contile.lastFetch", 1770576532); +user_pref("browser.uiCustomization.horizontalTabsBackup", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[\"_d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d_-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"plasma-browser-integration_kde_org-browser-action\"],\"nav-bar\":[\"sidebar-button\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"vertical-spacer\",\"urlbar-container\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"firefox-view-button\",\"tabbrowser-tabs\",\"new-tab-button\"],\"vertical-tabs\":[],\"PersonalToolbar\":[\"import-button\",\"personal-bookmarks\"]},\"seen\":[\"developer-button\",\"screenshot-button\",\"_d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d_-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"plasma-browser-integration_kde_org-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"vertical-tabs\",\"PersonalToolbar\",\"unified-extensions-area\",\"TabsToolbar\"],\"currentVersion\":23,\"newElementCount\":3}"); +user_pref("browser.uiCustomization.horizontalTabstrip", "[\"tabbrowser-tabs\",\"new-tab-button\"]"); +user_pref("browser.uiCustomization.navBarWhenVerticalTabs", "[\"back-button\",\"forward-button\",\"stop-reload-button\",\"vertical-spacer\",\"urlbar-container\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\"]"); +user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\"],\"nav-bar\":[\"downloads-button\",\"sidebar-button\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"home-button\",\"vertical-spacer\",\"fxa-toolbar-menu-button\",\"reset-pbm-toolbar-button\",\"unified-extensions-button\",\"urlbar-container\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"TabsToolbar\",\"vertical-tabs\"],\"currentVersion\":23,\"newElementCount\":0}"); +user_pref("browser.urlbar.lastUrlbarSearchSeconds", 1770575495); +user_pref("browser.urlbar.placeholderName", "Google"); +user_pref("browser.urlbar.quickactions.timesShownOnboardingLabel", 3); +user_pref("browser.urlbar.quicksuggest.migrationVersion", 6); +user_pref("browser.urlbar.recentsearches.lastDefaultChanged", "1770566904677"); +user_pref("captchadetection.lastSubmission", 1770566); +user_pref("datareporting.dau.cachedUsageProfileGroupID", "b0bacafe-b0ba-cafe-b0ba-cafeb0bacafe"); +user_pref("datareporting.dau.cachedUsageProfileID", "beefbeef-beef-beef-beef-beeefbeefbee"); +user_pref("distribution.iniFile.exists.appversion", "147.0.2"); +user_pref("distribution.iniFile.exists.value", true); +user_pref("distribution.nixos.bookmarksProcessed", true); +user_pref("doh-rollout.doneFirstRun", true); +user_pref("doh-rollout.home-region", "CA"); +user_pref("doh-rollout.skipHeuristicsCheck", true); +user_pref("dom.forms.autocomplete.formautofill", true); +user_pref("dom.push.userAgentID", "d1e115239f2e4935980e092e9238a894"); +user_pref("experiments.activeExperiment", false); +user_pref("experiments.enabled", false); +user_pref("experiments.supported", false); +user_pref("extensions.activeThemeID", "default-theme@mozilla.org"); +user_pref("extensions.blocklist.pingCountVersion", 0); +user_pref("extensions.colorway-builtin-themes-cleanup", 1); +user_pref("extensions.databaseSchema", 37); +user_pref("extensions.dnr.lastStoreUpdateTag.3032381b-66a0-4b44-bcb8-438449dc8a86", "{bb7fb25a-9288-4294-b521-38e15efca950}"); +user_pref("extensions.getAddons.cache.lastUpdate", 1770566701); +user_pref("extensions.getAddons.databaseSchema", 6); +user_pref("extensions.lastAppBuildId", "20260126151322"); +user_pref("extensions.lastAppVersion", "147.0.2"); +user_pref("extensions.lastPlatformVersion", "147.0.2"); +user_pref("extensions.pendingOperations", false); +user_pref("extensions.pictureinpicture.enable_picture_in_picture_overrides", true); +user_pref("extensions.pocket.api", ""); +user_pref("extensions.pocket.enabled", false); +user_pref("extensions.pocket.oAuthConsumerKey", ""); +user_pref("extensions.pocket.showHome", false); +user_pref("extensions.pocket.site", ""); +user_pref("extensions.quarantinedDomains.list", "autoatendimento.bb.com.br,ibpf.sicredi.com.br,ibpj.sicredi.com.br,internetbanking.caixa.gov.br,www.ib12.bradesco.com.br,www2.bancobrasil.com.br"); +user_pref("extensions.signatureCheckpoint", 1); +user_pref("extensions.ui.dictionary.hidden", true); +user_pref("extensions.ui.extension.hidden", false); +user_pref("extensions.ui.lastCategory", "addons://list/extension"); +user_pref("extensions.ui.locale.hidden", true); +user_pref("extensions.ui.mlmodel.hidden", true); +user_pref("extensions.ui.plugin.hidden", false); +user_pref("extensions.ui.sitepermission.hidden", true); +user_pref("extensions.webcompat.enable_interventions", true); +user_pref("extensions.webcompat.enable_shims", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.adblockultimate@adblockultimate.net", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.plasma-browser-integration@kde.org", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.qwantcomforfirefox@jetpack", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{446900e4-71c2-419f-a6a7-df9c091e268b}", true); +user_pref("extensions.webextensions.uuids", "{\"data-leak-blocker@mozilla.com\":\"137cd9b8-7b23-4fa2-93a6-d0869381d424\",\"formautofill@mozilla.org\":\"9ad0c8a3-4f6c-491a-b8c1-53221f02f6ed\",\"ipp-activator@mozilla.com\":\"8beecf0a-9900-462a-a762-253f8b0aca57\",\"pictureinpicture@mozilla.org\":\"7ef71ed2-baa1-45d8-b4d5-ba2655e6f5d1\",\"addons-search-detection@mozilla.com\":\"65286170-6612-458d-898c-68cf4f69e2b6\",\"webcompat@mozilla.org\":\"9a310967-e580-48bf-b3e8-4eafebbc122d\",\"newtab@mozilla.org\":\"fe240e3e-3f09-485a-8b3a-2cfbcdda83c7\",\"default-theme@mozilla.org\":\"0b8c6abc-4bda-4ebb-aec9-a3fb2cea01e4\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"c569bf97-73da-4abc-970b-743c1bf749c9\",\"adblockultimate@adblockultimate.net\":\"c2323530-ad5a-4206-94bf-a4eded7d50fc\",\"qwantcomforfirefox@jetpack\":\"3032381b-66a0-4b44-bcb8-438449dc8a86\",\"qwant-search-firefox@qwant.com\":\"afd904e5-e3b1-4cfa-b400-1273c5f51cdd\",\"plasma-browser-integration@kde.org\":\"6bfc85d8-8e00-4042-92b6-f4db0318dbf1\",\"queryamoid@kaply.com\":\"3e307fbc-5cac-4465-997d-e5aaa2133e5f\"}"); +user_pref("gecko.handlerService.defaultHandlersVersion", 1); +user_pref("general.autoScroll", true); +user_pref("identity.fxaccounts.account.device.name", "matthieu’s Firefox on NixOs"); +user_pref("identity.fxaccounts.account.telemetry.sanitized_uid", "72cfa9ce38acbc53f4a170fc8023f072"); +user_pref("identity.fxaccounts.commands.missed.last_fetch", 1770568612); +user_pref("identity.fxaccounts.lastSignedInUserHash", "GEzNIszovnQY4PQFZ0BxJAAD1C4yh36PHQJI1cRIpn8="); +user_pref("identity.fxaccounts.toolbar.accessed", true); +user_pref("identity.fxaccounts.toolbar.syncSetup.panelAccessed", true); +user_pref("idle.lastDailyNotification", 1770569471); +user_pref("media.eme.enabled", true); +user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3"); +user_pref("media.gmp-gmpopenh264.hashValue", "f5246bf14d038adf4ce0c4360262ab722bc3de4220f047c3d542b4c564074b4877dc8659e3125c5171c749e7ce93f20cc63777eb5e1539e960670cbc5f30ac85"); +user_pref("media.gmp-gmpopenh264.lastDownload", 1770566701); +user_pref("media.gmp-gmpopenh264.lastInstallStart", 1770566701); +user_pref("media.gmp-gmpopenh264.lastUpdate", 1770566701); +user_pref("media.gmp-gmpopenh264.version", "2.6.0"); +user_pref("media.gmp-manager.buildID", "20260126151322"); +user_pref("media.gmp-manager.lastCheck", 1770566886); +user_pref("media.gmp-widevinecdm.abi", "x86_64-gcc3"); +user_pref("media.gmp-widevinecdm.hashValue", "421214210a09a9f9ed8ce482ef857f1c2b29ce1739240d1ec99a61caa3d80db3393752275722bdf5f503489f12a753215fe8a0c82de3aca23780d4ffe5792eb1"); +user_pref("media.gmp-widevinecdm.lastDownload", 1770566889); +user_pref("media.gmp-widevinecdm.lastInstallStart", 1770566886); +user_pref("media.gmp-widevinecdm.lastUpdate", 1770566889); +user_pref("media.gmp-widevinecdm.version", "4.10.2934.0"); +user_pref("media.gmp.storage.version.observed", 1); +user_pref("media.videocontrols.picture-in-picture.video-toggle.first-seen-secs", 1770571814); +user_pref("network.allow-experiments", false); +user_pref("network.cookie.CHIPS.lastMigrateDatabase", 2); +user_pref("nimbus.migrations.after-remote-settings-update", 0); +user_pref("nimbus.migrations.after-store-initialized", 3); +user_pref("nimbus.migrations.init-started", 0); +user_pref("nimbus.profileId", "ef86f3a4-a689-4181-b494-e186f360c9d9"); +user_pref("pdfjs.enableAltText", true); +user_pref("pdfjs.enableAltTextForEnglish", true); +user_pref("pdfjs.enabledCache.state", true); +user_pref("pdfjs.migrationVersion", 2); +user_pref("places.database.lastMaintenance", 1770569471); +user_pref("privacy.bounceTrackingProtection.hasMigratedUserActivationData", true); +user_pref("privacy.clearOnShutdown_v2.formdata", true); +user_pref("privacy.donottrackheader.enabled", true); +user_pref("privacy.purge_trackers.date_in_cookie_database", "0"); +user_pref("privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", true); +user_pref("privacy.sanitize.pending", "[{\"id\":\"shutdown\",\"itemsToClear\":[\"cache\",\"formdata\",\"browsingHistoryAndDownloads\",\"cookiesAndStorage\"],\"options\":{}},{\"id\":\"newtab-container\",\"itemsToClear\":[],\"options\":{}}]"); +user_pref("privacy.sanitize.sanitizeOnShutdown", true); +user_pref("privacy.trackingprotection.allow_list.hasMigratedCategoryPrefs", true); +user_pref("privacy.trackingprotection.allow_list.hasUserInteractedWithETPSettings", true); +user_pref("services.settings.blocklists.addons-bloomfilters.last_check", 1770577121); +user_pref("services.settings.blocklists.gfx.last_check", 1770577121); +user_pref("services.settings.clock_skew_seconds", -659); +user_pref("services.settings.last_etag", "\"1770575801511\""); +user_pref("services.settings.last_update_seconds", 1770577121); +user_pref("services.settings.main.addons-data-leak-blocker-domains.last_check", 1770577121); +user_pref("services.settings.main.addons-manager-settings.last_check", 1770577121); +user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1770577121); +user_pref("services.settings.main.cfr.last_check", 1770577121); +user_pref("services.settings.main.cookie-banner-rules-list.last_check", 1770577121); +user_pref("services.settings.main.devtools-compatibility-browsers.last_check", 1770577121); +user_pref("services.settings.main.devtools-devices.last_check", 1770577121); +user_pref("services.settings.main.doh-config.last_check", 1770577121); +user_pref("services.settings.main.doh-providers.last_check", 1770577121); +user_pref("services.settings.main.fingerprinting-protection-overrides.last_check", 1770577121); +user_pref("services.settings.main.hijack-blocklists.last_check", 1770577121); +user_pref("services.settings.main.language-dictionaries.last_check", 1770577121); +user_pref("services.settings.main.message-groups.last_check", 1770577121); +user_pref("services.settings.main.moz-essential-domain-fallbacks.last_check", 1770577121); +user_pref("services.settings.main.newtab-wallpapers-v2.last_check", 1770577121); +user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1770577121); +user_pref("services.settings.main.nimbus-secure-experiments.last_check", 1770577121); +user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1770577121); +user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1770577121); +user_pref("services.settings.main.password-recipes.last_check", 1770577121); +user_pref("services.settings.main.password-rules.last_check", 1770577121); +user_pref("services.settings.main.personality-provider-models.last_check", 1770577121); +user_pref("services.settings.main.personality-provider-recipe.last_check", 1770577121); +user_pref("services.settings.main.query-stripping.last_check", 1770577121); +user_pref("services.settings.main.remote-permissions.last_check", 1770577121); +user_pref("services.settings.main.search-categorization.last_check", 1770577121); +user_pref("services.settings.main.search-config-icons.last_check", 1770577121); +user_pref("services.settings.main.search-config-overrides-v2.last_check", 1770577121); +user_pref("services.settings.main.search-config-v2.last_check", 1770577121); +user_pref("services.settings.main.search-default-override-allowlist.last_check", 1770577121); +user_pref("services.settings.main.search-telemetry-v2.last_check", 1770577121); +user_pref("services.settings.main.sites-classification.last_check", 1770577121); +user_pref("services.settings.main.third-party-cookie-blocking-exempt-urls.last_check", 1770577121); +user_pref("services.settings.main.tippytop.last_check", 1770577121); +user_pref("services.settings.main.top-sites.last_check", 1770577121); +user_pref("services.settings.main.tracking-protection-lists.last_check", 1770577121); +user_pref("services.settings.main.translations-models.last_check", 1770577121); +user_pref("services.settings.main.translations-wasm.last_check", 1770577121); +user_pref("services.settings.main.url-classifier-exceptions.last_check", 1770577121); +user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1770577121); +user_pref("services.settings.main.url-parser-default-unknown-schemes-interventions.last_check", 1770577121); +user_pref("services.settings.main.urlbar-persisted-search-terms.last_check", 1770577121); +user_pref("services.settings.main.vpn-serverlist.last_check", 1770577121); +user_pref("services.settings.main.webcompat-interventions.last_check", 1770577121); +user_pref("services.settings.main.websites-with-shared-credential-backends.last_check", 1770577121); +user_pref("services.settings.security-state.cert-revocations.last_check", 1770577121); +user_pref("services.settings.security-state.intermediates.last_check", 1770577121); +user_pref("services.settings.security-state.onecrl.last_check", 1770577121); +user_pref("services.sync.addons.lastSync", "1770566954.81"); +user_pref("services.sync.addons.syncID", "zJRYdrgj3xmW"); +user_pref("services.sync.addresses.lastSync", "0"); +user_pref("services.sync.addresses.syncID", "TAykmERdquqc"); +user_pref("services.sync.client.GUID", "VSNjLNyJGcTp"); +user_pref("services.sync.client.syncID", "t6Axjvbk3Z4L"); +user_pref("services.sync.clients.devices.desktop", 4); +user_pref("services.sync.clients.devices.mobile", 1); +user_pref("services.sync.clients.lastRecordUpload", 1770576533); +user_pref("services.sync.clients.lastSync", "1770576533.28"); +user_pref("services.sync.clients.syncID", "gI5EYKCNP9bO"); +user_pref("services.sync.creditcards.lastSync", "0"); +user_pref("services.sync.creditcards.syncID", "ZuXIy1AOevVz"); +user_pref("services.sync.declinedEngines", ""); +user_pref("services.sync.engine.addresses", true); +user_pref("services.sync.engine.addresses.available", true); +user_pref("services.sync.engine.creditcards", true); +user_pref("services.sync.engine.prefs.modified", false); +user_pref("services.sync.forms.lastSync", "1770566105.56"); +user_pref("services.sync.forms.syncID", "NFbI-da9Bx8a"); +user_pref("services.sync.globalScore", 0); +user_pref("services.sync.lastPing", 1770566874); +user_pref("services.sync.lastSync", "Sun Feb 08 2026 13:48:53 GMT-0500 (Eastern Standard Time)"); +user_pref("services.sync.lastTabFetch", 1770575470); +user_pref("services.sync.nextSync", 1770577133); +user_pref("services.sync.prefs.lastSync", "1770572753.40"); +user_pref("services.sync.prefs.sync-seen.browser.contentblocking.category", true); +user_pref("services.sync.prefs.sync-seen.browser.formfill.enable", true); +user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.showSponsored", true); +user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.topSitesRows", true); +user_pref("services.sync.prefs.sync-seen.browser.safebrowsing.malware.enabled", true); +user_pref("services.sync.prefs.sync-seen.browser.safebrowsing.phishing.enabled", true); +user_pref("services.sync.prefs.sync-seen.browser.startup.page", true); +user_pref("services.sync.prefs.sync-seen.extensions.activeThemeID", true); +user_pref("services.sync.prefs.sync-seen.general.autoScroll", true); +user_pref("services.sync.prefs.sync-seen.media.eme.enabled", true); +user_pref("services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true); +user_pref("services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.formdata", true); +user_pref("services.sync.prefs.sync-seen.privacy.sanitize.sanitizeOnShutdown", true); +user_pref("services.sync.prefs.sync-seen.privacy.trackingprotection.enabled", true); +user_pref("services.sync.prefs.sync-seen.signon.autofillForms", true); +user_pref("services.sync.prefs.sync-seen.signon.generation.enabled", true); +user_pref("services.sync.prefs.sync-seen.signon.management.page.breach-alerts.enabled", true); +user_pref("services.sync.prefs.sync-seen.signon.rememberSignons", true); +user_pref("services.sync.prefs.syncID", "hacRveoYWiKa"); +user_pref("services.sync.syncInterval", 600000); +user_pref("services.sync.syncThreshold", 300); +user_pref("services.sync.username", "nehril012601@gmail.com"); +user_pref("sidebar.backupState", "{\"command\":\"\",\"panelOpen\":false,\"launcherWidth\":53,\"launcherExpanded\":false,\"launcherVisible\":true,\"pinnedTabsHeight\":0,\"collapsedPinnedTabsHeight\":0,\"toolsHeight\":0,\"collapsedToolsHeight\":0}"); +user_pref("sidebar.main.tools", "history,syncedtabs,bookmarks"); +user_pref("sidebar.new-sidebar.has-used", true); +user_pref("sidebar.revamp", true); +user_pref("sidebar.verticalTabs", true); +user_pref("sidebar.visibility", "expand-on-hover"); +user_pref("signon.autofillForms", false); +user_pref("signon.generation.enabled", false); +user_pref("signon.management.page.breach-alerts.enabled", false); +user_pref("signon.rememberSignons", false); +user_pref("storage.vacuum.last.index", 0); +user_pref("storage.vacuum.last.places.sqlite", 1770569471); +user_pref("toolkit.profiles.storeID", "535cda15"); +user_pref("toolkit.startup.last_success", 1770576475); +user_pref("toolkit.telemetry.bhrPing.enabled", false); +user_pref("toolkit.telemetry.cachedClientID", "c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0"); +user_pref("toolkit.telemetry.cachedProfileGroupID", "decafdec-afde-cafd-ecaf-decafdecafde"); +user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); +user_pref("toolkit.telemetry.hybridContent.enabled", false); +user_pref("toolkit.telemetry.newProfilePing.enabled", false); +user_pref("toolkit.telemetry.previousBuildID", "20260126151322"); +user_pref("toolkit.telemetry.reportingpolicy.firstRun", false); +user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); +user_pref("toolkit.telemetry.unified", false); +user_pref("toolkit.telemetry.updatePing.enabled", false); +user_pref("trailhead.firstrun.didSeeAboutWelcome", true); diff --git a/new_arch/progs/browsers/statics/test.json b/new_arch/progs/browsers/statics/test.json new file mode 100644 index 0000000..75e0524 --- /dev/null +++ b/new_arch/progs/browsers/statics/test.json @@ -0,0 +1,27 @@ +{ + "uiCustomization": { + "state": { + "placements": { + "widget-overflow-fixed-list": [], + "nav-bar": [ + "back-button", + "forward-button", + "stop-reload-button", + "urlbar-container", + "downloads-button", + "fxa-toolbar-menu-button", + "unified-extensions-button" + ], + "toolbar-menubar": [ + "menubar-items" + ], + "TabsToolbar": [], + "vertical-tabs": [ + "tabbrowser-tabs" + ], + "PersonalToolbar": [ + ] + } + } + } +} \ No newline at end of file diff --git a/new_arch/progs/browsers/statics/toolbar.json b/new_arch/progs/browsers/statics/toolbar.json new file mode 100644 index 0000000..28f47f9 --- /dev/null +++ b/new_arch/progs/browsers/statics/toolbar.json @@ -0,0 +1,46 @@ +{ + "placements": { + "widget-overflow-fixed-list": [], + "unified-extensions-area": [ + "queryamoid_kaply_com-browser-action", + "adblockultimate_adblockultimate_net-browser-action" + ], + "nav-bar": [ + "downloads-button", + "sidebar-button", + "back-button", + "forward-button", + "stop-reload-button", + "home-button", + "vertical-spacer", + "fxa-toolbar-menu-button", + "reset-pbm-toolbar-button", + "unified-extensions-button", + "urlbar-container" + ], + "toolbar-menubar": [ + "menubar-items" + ], + "TabsToolbar": [], + "vertical-tabs": [ + "tabbrowser-tabs" + ], + "PersonalToolbar": [ + "personal-bookmarks" + ] + }, + "seen": [ + "queryamoid_kaply_com-browser-action", + "adblockultimate_adblockultimate_net-browser-action", + "developer-button", + "screenshot-button" + ], + "dirtyAreaCache": [ + "unified-extensions-area", + "nav-bar", + "TabsToolbar", + "vertical-tabs" + ], + "currentVersion": 23, + "newElementCount": 0 +} \ No newline at end of file From 30681b409a14282d5c88511a9b991f34652ab9d1 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 18:53:45 -0400 Subject: [PATCH 128/236] feat(chromium) : added chromium to browsers --- new_arch/progs/browsers.nix | 2 +- new_arch/progs/browsers/chromium.nix | 72 ++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/browsers/chromium.nix diff --git a/new_arch/progs/browsers.nix b/new_arch/progs/browsers.nix index 389d069..cd572c3 100644 --- a/new_arch/progs/browsers.nix +++ b/new_arch/progs/browsers.nix @@ -13,7 +13,7 @@ branch = null; imports = [ "firefox" - # "chromium" + "chromium" # "zen" ]; options = { diff --git a/new_arch/progs/browsers/chromium.nix b/new_arch/progs/browsers/chromium.nix new file mode 100644 index 0000000..d4bdddb --- /dev/null +++ b/new_arch/progs/browsers/chromium.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "chromium"; + subfolder = null; + main-repo = null; + branch = null; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.chromium = { + enable = true; + # FEAT TODO: profiles, settings, etc. + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From cdf2336a65790e8985e99f65a7280fb8b08a3784 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:02:48 -0400 Subject: [PATCH 129/236] feat(zen) : added zen to browsers !!! needed to be added to home first = maybe find another way ? --- new_arch/home.nix | 17 +++++--- new_arch/progs/browsers.nix | 2 +- new_arch/progs/browsers/zen.nix | 72 +++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 new_arch/progs/browsers/zen.nix diff --git a/new_arch/home.nix b/new_arch/home.nix index cc359d2..d420f68 100644 --- a/new_arch/home.nix +++ b/new_arch/home.nix @@ -12,13 +12,18 @@ name = "home"; mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs imports = ["progs"]; + specialImports = [ + pkgs-list.others.zen-browser.homeModules.beta ## FIXME : Dont know yet how to handle this + ]; in { - imports = map (file: - (import ./${mainModule}.nix { - inherit config lib pkgs-list tools baseSettings; - inherit inputs; - }).config.Home) - imports; + imports = + map (file: + (import ./${mainModule}.nix { + inherit config lib pkgs-list tools baseSettings; + inherit inputs; + }).config.Home) + imports + ++ specialImports; home.stateVersion = nixos-version; home.username = "matthieu"; diff --git a/new_arch/progs/browsers.nix b/new_arch/progs/browsers.nix index cd572c3..c0f499d 100644 --- a/new_arch/progs/browsers.nix +++ b/new_arch/progs/browsers.nix @@ -14,7 +14,7 @@ imports = [ "firefox" "chromium" - # "zen" + "zen" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/browsers/zen.nix b/new_arch/progs/browsers/zen.nix new file mode 100644 index 0000000..bf1710e --- /dev/null +++ b/new_arch/progs/browsers/zen.nix @@ -0,0 +1,72 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "zen"; + subfolder = null; + main-repo = null; + branch = null; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + programs.zen-browser = { + enable = true; + # FEAT TODO: profiles, settings, etc. + }; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 204507bfc28bec84bf8562f7c762544a83b3cd14 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:21:54 -0400 Subject: [PATCH 130/236] feat(efibootmgr) : added efibootmgr to boot --- new_arch/progs/dev/boot.nix | 2 +- new_arch/progs/dev/boot/efibootmgr.nix | 71 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/boot/efibootmgr.nix diff --git a/new_arch/progs/dev/boot.nix b/new_arch/progs/dev/boot.nix index 1717136..d3be714 100644 --- a/new_arch/progs/dev/boot.nix +++ b/new_arch/progs/dev/boot.nix @@ -12,7 +12,7 @@ main-repo = null; branch = null; imports = [ - # "efibootmgr" + "efibootmgr" # "grub" # "gparted" # "os-prober" diff --git a/new_arch/progs/dev/boot/efibootmgr.nix b/new_arch/progs/dev/boot/efibootmgr.nix new file mode 100644 index 0000000..306f7ea --- /dev/null +++ b/new_arch/progs/dev/boot/efibootmgr.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "efibootmgr"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + efibootmgr + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From a04573c6085d17c08f2ba51ef07cf09d47fdc26a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:25:52 -0400 Subject: [PATCH 131/236] feat(gparted) : added gparted to boot --- new_arch/progs/dev/boot.nix | 2 +- new_arch/progs/dev/boot/gparted.nix | 71 +++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/boot/gparted.nix diff --git a/new_arch/progs/dev/boot.nix b/new_arch/progs/dev/boot.nix index d3be714..3b8ade9 100644 --- a/new_arch/progs/dev/boot.nix +++ b/new_arch/progs/dev/boot.nix @@ -14,7 +14,7 @@ imports = [ "efibootmgr" # "grub" - # "gparted" + "gparted" # "os-prober" ]; options = { diff --git a/new_arch/progs/dev/boot/gparted.nix b/new_arch/progs/dev/boot/gparted.nix new file mode 100644 index 0000000..22b1c7a --- /dev/null +++ b/new_arch/progs/dev/boot/gparted.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "gparted"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + gparted + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 1080c23238b5170a4d63b47b3bcc6231915c554c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:28:49 -0400 Subject: [PATCH 132/236] feat(grub) : added grub to boot --- new_arch/progs/dev/boot.nix | 2 +- new_arch/progs/dev/boot/grub.nix | 71 ++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/boot/grub.nix diff --git a/new_arch/progs/dev/boot.nix b/new_arch/progs/dev/boot.nix index 3b8ade9..16e89f6 100644 --- a/new_arch/progs/dev/boot.nix +++ b/new_arch/progs/dev/boot.nix @@ -13,7 +13,7 @@ branch = null; imports = [ "efibootmgr" - # "grub" + "grub" "gparted" # "os-prober" ]; diff --git a/new_arch/progs/dev/boot/grub.nix b/new_arch/progs/dev/boot/grub.nix new file mode 100644 index 0000000..2e31a10 --- /dev/null +++ b/new_arch/progs/dev/boot/grub.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "grub"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + grub2 + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 199402d7ae71ac9d678e383436bea2350fbcd527 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:30:27 -0400 Subject: [PATCH 133/236] feat(os-prober) : added os-prober to boot --- new_arch/progs/dev/boot.nix | 2 +- new_arch/progs/dev/boot/os-prober.nix | 71 +++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/boot/os-prober.nix diff --git a/new_arch/progs/dev/boot.nix b/new_arch/progs/dev/boot.nix index 16e89f6..e301d1b 100644 --- a/new_arch/progs/dev/boot.nix +++ b/new_arch/progs/dev/boot.nix @@ -15,7 +15,7 @@ "efibootmgr" "grub" "gparted" - # "os-prober" + "os-prober" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/dev/boot/os-prober.nix b/new_arch/progs/dev/boot/os-prober.nix new file mode 100644 index 0000000..cddd23b --- /dev/null +++ b/new_arch/progs/dev/boot/os-prober.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "os-prober"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + os-prober + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 50e22f8426afb974c826f65af03b19035e15916c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:38:19 -0400 Subject: [PATCH 134/236] feat(alejandra) : alejandra added to nix --- new_arch/progs/dev/nix.nix | 2 +- new_arch/progs/dev/nix/alejandra.nix | 71 ++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/nix/alejandra.nix diff --git a/new_arch/progs/dev/nix.nix b/new_arch/progs/dev/nix.nix index c321647..c15dfb4 100644 --- a/new_arch/progs/dev/nix.nix +++ b/new_arch/progs/dev/nix.nix @@ -12,7 +12,7 @@ main-repo = null; branch = null; imports = [ - # "alejandra" + "alejandra" # "nixd" ]; options = { diff --git a/new_arch/progs/dev/nix/alejandra.nix b/new_arch/progs/dev/nix/alejandra.nix new file mode 100644 index 0000000..04c5db8 --- /dev/null +++ b/new_arch/progs/dev/nix/alejandra.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "alejandra"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + alejandra + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From 84bd33f9c530a8d2f7b7d4fc9fe70ca90867ceeb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 19:40:16 -0400 Subject: [PATCH 135/236] feat(nixd) : nixd added to nix --- new_arch/progs/dev/nix.nix | 2 +- new_arch/progs/dev/nix/nixd.nix | 71 +++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 new_arch/progs/dev/nix/nixd.nix diff --git a/new_arch/progs/dev/nix.nix b/new_arch/progs/dev/nix.nix index c15dfb4..a6ab113 100644 --- a/new_arch/progs/dev/nix.nix +++ b/new_arch/progs/dev/nix.nix @@ -13,7 +13,7 @@ branch = null; imports = [ "alejandra" - # "nixd" + "nixd" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; diff --git a/new_arch/progs/dev/nix/nixd.nix b/new_arch/progs/dev/nix/nixd.nix new file mode 100644 index 0000000..52b7e60 --- /dev/null +++ b/new_arch/progs/dev/nix/nixd.nix @@ -0,0 +1,71 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + ###### # user defined + name = "nixd"; + subfolder = null; + main-repo = "nix"; + branch = "latest"; + imports = null; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + settings = null; + ###### # computed + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + Home = { + home.packages = with packages; [ + nixd + ]; + }; + System = { + }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; +in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + context = "System"; + Config = SystemConfig; + }; + }; +} From ea43c7313e58a029d678c2676ce8b45e87a62a44 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 20:56:59 -0400 Subject: [PATCH 136/236] refactor(static) moving statics in more appropriate folders WIP --- new_arch/progs/shells/zsh.nix | 4 +- .../progs/shells/zsh/static/yazi/init.lua | 1 + .../zsh/static/yazi/plugins/githead/main.lua | 598 ++++++++++++++++++ .../yazi/plugins/kdeconnect-send/main.lua | 420 ++++++++++++ new_arch/progs/shells/zsh/yazi.nix | 6 +- new_arch/sys/bootloader.nix | 4 +- new_arch/sys/static/grub/00_Arch_Btrfs | 38 ++ new_arch/sys/static/grub/99_UEFI_Firmware | 3 + 8 files changed, 1067 insertions(+), 7 deletions(-) create mode 100644 new_arch/progs/shells/zsh/static/yazi/init.lua create mode 100644 new_arch/progs/shells/zsh/static/yazi/plugins/githead/main.lua create mode 100644 new_arch/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua create mode 100644 new_arch/sys/static/grub/00_Arch_Btrfs create mode 100644 new_arch/sys/static/grub/99_UEFI_Firmware diff --git a/new_arch/progs/shells/zsh.nix b/new_arch/progs/shells/zsh.nix index ff27b4e..b036071 100644 --- a/new_arch/progs/shells/zsh.nix +++ b/new_arch/progs/shells/zsh.nix @@ -61,7 +61,7 @@ }; ###### # user defined Home = { - home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/static/.p10k.zsh}"}"; + # home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/static/.p10k.zsh}"}"; programs.zsh = { enable = true; enableCompletion = true; @@ -87,7 +87,7 @@ # FIXME : move to a dedicated file initContent = '' - source ~/.p10k.zsh + source ~/nixos-config/new_arch/progs/shells/${subfolder}/static/.p10k.zsh zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' menu no diff --git a/new_arch/progs/shells/zsh/static/yazi/init.lua b/new_arch/progs/shells/zsh/static/yazi/init.lua new file mode 100644 index 0000000..3ae68e5 --- /dev/null +++ b/new_arch/progs/shells/zsh/static/yazi/init.lua @@ -0,0 +1 @@ +-- require("githead"):setup() \ No newline at end of file diff --git a/new_arch/progs/shells/zsh/static/yazi/plugins/githead/main.lua b/new_arch/progs/shells/zsh/static/yazi/plugins/githead/main.lua new file mode 100644 index 0000000..6c7f74d --- /dev/null +++ b/new_arch/progs/shells/zsh/static/yazi/plugins/githead/main.lua @@ -0,0 +1,598 @@ +---@diagnostic disable: undefined-global + +local save = ya.sync(function(this, cwd, output) + if cwd:match("%.git[/\\]") or cwd:match("%.git$") then + this.output = nil + return + end + if cx.active.current.cwd == Url(cwd) then + this.output = output + ui.render() + end +end) + +return { + setup = function(this, options) + options = options or {} + + local config = { + order = options.order or { + "__spacer__", + "branch", + "remote_branch", + "__spacer__", + "tag", + "__spacer__", + "commit", + "__spacer__", + "behind_ahead_remote", + "__spacer__", + "stashes", + "__spacer__", + "state", + "__spacer__", + "staged", + "__spacer__", + "unstaged", + "__spacer__", + "untracked", + }, + + show_numbers = options.show_numbers == nil and true + or options.show_numbers, + + show_branch = options.show_branch == nil and true or options.show_branch, + branch_prefix = options.branch_prefix or "", + branch_color = options.branch_color or "blue", + branch_symbol = options.branch_symbol or "", + branch_borders = options.branch_borders or "", + + show_remote_branch = options.show_remote_branch == nil and true + or options.show_remote_branch, + always_show_remote_branch = options.always_show_remote_branch == nil + and false + or options.always_show_remote_branch, + always_show_remote_repo = options.always_show_remote_repo == nil + and false + or options.always_show_remote_repo, + remote_branch_prefix = options.remote_branch_prefix or ":", + remote_branch_color = options.remote_branch_color or "bright magenta", + + show_tag = options.show_tag == nil and true or options.show_tag, + always_show_tag = options.always_show_tag == nil and false + or options.always_show_tag, + tag_color = options.tag_color or "magenta", + tag_symbol = options.tag_symbol == nil and "#" or options.tag_symbol, + + show_commit = options.show_commit == nil and true or options.show_commit, + always_show_commit = options.always_show_commit == nil and false + or options.always_show_commit, + commit_color = options.commit_color or "bright magenta", + commit_symbol = options.commit_symbol == nil and "@" + or options.commit_symbol, + + show_behind_ahead_remote = options.show_behind_ahead_remote == nil + and true + or options.show_behind_ahead_remote, + behind_remote_color = options.behind_remote_color or "bright magenta", + behind_remote_symbol = options.behind_remote_symbol or "⇣", + ahead_remote_color = options.ahead_remote_color or "bright magenta", + ahead_remote_symbol = options.ahead_remote_symbol or "⇡", + + show_stashes = options.show_stashes == nil and true + or options.show_stashes, + stashes_color = options.stashes_color or "bright magenta", + stashes_symbol = options.stashes_symbol or "$", + + show_state = options.show_state == nil and true or options.show_state, + show_state_prefix = options.show_state_prefix == nil and true + or options.show_state_prefix, + state_color = options.state_color or "red", + state_symbol = options.state_symbol or "~", + + show_staged = options.show_staged == nil and true or options.show_staged, + staged_color = options.staged_color or "bright yellow", + staged_symbol = options.staged_symbol or "+", + + show_unstaged = options.show_unstaged == nil and true + or options.show_unstaged, + unstaged_color = options.unstaged_color or "bright yellow", + unstaged_symbol = options.unstaged_symbol or "!", + + show_untracked = options.show_untracked == nil and true + or options.show_untracked, + untracked_color = options.untracked_color or "bright blue", + untracked_symbol = options.untracked_symbol or "?", + } + + --- @param data GitStatusData + function Header:render_branch(data) + local branch = data.branch + + if not branch then + return nil + end + + local left_border = config.branch_borders:sub(1, 1) + local right_border = config.branch_borders:sub(2, 2) + + local branch_string = "" + + if config.branch_symbol == "" then + branch_string = left_border .. branch .. right_border + else + branch_string = left_border + .. config.branch_symbol + .. branch + .. right_border + end + + local branch_prefix = config.branch_prefix == "" and "" + or config.branch_prefix .. " " + + return ui.Line({ + ui.Span(branch_prefix), + ui.Span(branch_string):fg(config.branch_color), + }) + end + + --- @param data GitStatusData + function Header:render_remote_branch(data) + local branch = data.branch + local remote_branch = data.remote_branch + local remote_repo = data.remote_repo + + if not remote_branch then + return nil + end + + local show_remote = config.always_show_remote_branch + or branch ~= remote_branch + if not show_remote then + return nil + end + + local remote_branch_label = config.always_show_remote_repo + and (remote_repo .. "/" .. remote_branch) + or remote_branch + + return ui.Line({ + ui.Span(config.remote_branch_prefix), + ui.Span(remote_branch_label):fg(config.remote_branch_color), + }) + end + + --- @param data GitStatusData + function Header:render_tag(data) + local branch = data.branch + local tag = data.tag + + if not tag then + return nil + end + + if not branch or config.always_show_tag then + return ui.Line({ + ui.Span(config.tag_symbol), + ui.Span(tag):fg(config.tag_color), + }) + end + end + + --- @param data GitStatusData + function Header:render_commit(data) + local branch = data.branch + local tag = data.tag + local commit = data.commit + + if not commit then + return nil + end + + if (not branch and not tag) or config.always_show_commit then + return ui.Line({ + ui.Span(config.commit_symbol), + ui.Span(commit):fg(config.commit_color), + }) + end + end + + --- @param data GitStatusData + function Header:render_behind_ahead_remote(data) + local behind = data.behind_remote + local ahead = data.ahead_remote + + local behind_label = behind + and behind > 0 + and ui.Span( + config.behind_remote_symbol .. (config.show_numbers and behind or "") + ):fg(config.behind_remote_color) + + local ahead_label = ahead + and ahead > 0 + and ui.Span( + config.ahead_remote_symbol .. (config.show_numbers and ahead or "") + ):fg(config.ahead_remote_color) + + if ahead_label and behind_label then + return ui.Line({ + behind_label, + ahead_label, + }) + elseif ahead_label then + return ahead_label + elseif behind_label then + return behind_label + else + return nil + end + end + + --- @param data GitStatusData + function Header:render_stashes(data) + local stashes_count = data.stashes + + if not stashes_count then + return nil + end + + local stashes_label = config.stashes_symbol + + if config.show_numbers then + stashes_label = stashes_label .. stashes_count + end + + return ui.Span(stashes_label):fg(config.stashes_color) + end + + --- @param data GitStatusData + function Header:render_state(data) + local state_prefix = data.state_prefix + local unmerged_count = data.unmerged_count + local rebase_done = data.rebase_done + local rebase_total = data.rebase_total + + if state_prefix then + local state_label = "" + if config.show_state_prefix then + state_label = state_prefix + if + state_prefix == "rebase-i" + and config.show_numbers + and rebase_done + and rebase_total + then + state_label = state_label + .. " " + .. rebase_done + .. "/" + .. rebase_total + end + end + + local unmerged_label = "" + local symbol = "" + + if unmerged_count and unmerged_count > 0 then + symbol = " " .. config.state_symbol + if config.show_numbers then + unmerged_label = tostring(unmerged_count) + end + end + + return ui.Span(state_label .. symbol .. unmerged_label) + :fg(config.state_color) + end + return nil + end + + --- @param data GitStatusData + function Header:render_staged(data) + local staged = data.staged + + if staged then + local staged_label = config.staged_symbol + + if config.show_numbers then + local filtered_staged = staged:gsub("^[%s]*%b()[%s]*", "") + + local staged_count = 0 + for line in filtered_staged:gmatch("[^\r\n]+") do + if line:match("%S") then + staged_count = staged_count + 1 + end + end + + staged_label = staged_label .. staged_count + end + + return ui.Span(staged_label):fg(config.staged_color) + end + + return nil + end + + --- @param data GitStatusData + function Header:render_unstaged(data) + local unstaged = data.unstaged + + if unstaged then + local unstaged_label = config.unstaged_symbol + + if config.show_numbers then + local filtered_unstaged = + unstaged:gsub("^[%s]*%b()[\r\n]*", ""):gsub("^[%s]*%b()[\r\n]*", "") + + local unstaged_count = 0 + for line in filtered_unstaged:gmatch("[^\r\n]+") do + if line:match("%S") then + unstaged_count = unstaged_count + 1 + end + end + + unstaged_label = unstaged_label .. unstaged_count + end + + return ui.Span(unstaged_label):fg(config.unstaged_color) + end + + return nil + end + + --- @param data GitStatusData + function Header:render_untracked(data) + local untracked = data.untracked + + if untracked then + local untracked_label = config.untracked_symbol + + if config.show_numbers then + local filtered_untracked = untracked:gsub("^[%s]*%b()[\r\n]*", "") + local untracked_count = 0 + + for line in filtered_untracked:gmatch("[^\r\n]+") do + if line:match("%S") then + untracked_count = untracked_count + 1 + end + end + + untracked_label = untracked_label .. untracked_count + end + + return ui.Span(untracked_label):fg(config.untracked_color) + end + + return nil + end + + function Header:githead() + --- @type GitStatusData + local data = this.output + + if not data then + return ui.Line({}) + end + + local head = {} + + for _, key in ipairs(config.order) do + if key == "__spacer__" then + if head[#head] ~= " " then + table.insert(head, " ") + end + else + local fn = self["render_" .. key] + local is_shown = config["show_" .. key] + + if fn and is_shown then + local value = fn(self, data) + if value then + table.insert(head, value) + end + end + end + end + + return ui.Line(head) + end + + Header:children_add(Header.githead, 2000, Header.LEFT) + + local callback = function() + local cwd = cx.active.current.cwd + ya.emit("plugin", { + this._id, + ya.quote(tostring(cwd), true), + }) + end + + ps.sub("cd", callback) + ps.sub("rename", callback) + ps.sub("bulk", callback) + ps.sub("move", callback) + ps.sub("trash", callback) + ps.sub("delete", callback) + ps.sub("tab", callback) + end, + + entry = function(_, job) + local args = job.args or job + + ---@class GitStatusData + ---@field ahead_remote? integer + ---@field behind_remote? integer + ---@field branch? string + ---@field commit? string + ---@field rebase_done? integer + ---@field remote_branch? string + ---@field remote_repo? string + ---@field staged? string + ---@field stashes? integer + ---@field state_prefix? "bisect"|"cherry"|"merge"|"rebase-i"|"revert" + ---@field tag? string + ---@field unmerged_count? integer + ---@field unstaged? string + ---@field untracked? string + local data = {} + + --- @param status string + local get_behind_ahead_remote = function(status) + local diverged_ahead, diverged_behind = + status:match("have (%d+) and (%d+) different") + if diverged_ahead and diverged_behind then + data.behind_remote = tonumber(diverged_behind) + data.ahead_remote = tonumber(diverged_ahead) + else + local behind_remote = status:match("behind %S+ by (%d+) commits?") + local ahead_remote = status:match("ahead of %S+ by (%d+) commits?") + + data.behind_remote = tonumber(behind_remote) + data.ahead_remote = tonumber(ahead_remote) + end + end + + --- @param status string + local get_branch = function(status) + data.branch = status:match("On branch (%S+)") + end + + --- @param status string + local get_stashes = function(status) + data.stashes = tonumber(status:match("Your stash currently has (%d+)")) + end + + --- @param status string + local get_state = function(status) + local unmerged = status:match("Unmerged paths:%s*(.-)%s*\n\n") + if unmerged then + local filtered_unmerged = + unmerged:gsub("^[%s]*%b()[%s]*", ""):gsub("^[%s]*%b()[%s]*", "") + local count = 0 + for line in filtered_unmerged:gmatch("[^\r\n]+") do + if line:match("%S") then + count = count + 1 + end + end + data.unmerged_count = count + end + + if status:find("git merge") then + data.state_prefix = "merge" + elseif status:find("git cherry%-pick") then + data.state_prefix = "cherry" + elseif status:find("git rebase") then + data.state_prefix = "rebase-i" + local commands_done = status:match("%((%d+) commands? done%)") + if commands_done then + data.rebase_done = commands_done + if not data.unmerged_count then + data.rebase_total = commands_done + else + data.rebase_total = data.unmerged_count + end + end + elseif status:find("git revert") then + data.state_prefix = "revert" + elseif status:find("git bisect") then + data.state_prefix = "bisect" + end + end + + --- @param status string + local get_staged = function(status) + data.staged = status:match("Changes to be committed:%s*(.-)%s*\n\n") + end + + --- @param status string + local get_unstaged = function(status) + data.unstaged = + status:match("Changes not staged for commit:%s*(.-)%s*\n\n") + end + + --- @param status string + local get_untracked = function(status) + data.untracked = status:match("Untracked files:%s*(.-)%s*\n\n") + end + + local get_status = function() + local cmd = Command("git") + :arg({ + "status", + "--ignore-submodules=dirty", + "--branch", + "--show-stash", + "--ahead-behind", + }) + :cwd(args[1]) + :env("LANGUAGE", "en_US.UTF-8") + :stdout(Command.PIPED) + local cmd_output = cmd:output() + + if cmd_output then + local status = cmd_output.stdout + + get_branch(status) + get_behind_ahead_remote(status) + get_stashes(status) + get_state(status) + get_staged(status) + get_unstaged(status) + get_untracked(status) + end + end + + local get_remote_branch = function() + local cmd = Command("git") + :arg({ + "rev-parse", + "--abbrev-ref", + "--symbolic-full-name", + "@{upstream}", + }) + :cwd(args[1]) + :env("LANGUAGE", "en_US.UTF-8") + :stdout(Command.PIPED) + local cmd_output = cmd:output() + + if cmd_output then + local remote_branch = cmd_output.stdout + + data.remote_branch = + remote_branch:gsub("[\r\n]", ""):match("^[^/]+/(.+)") + data.remote_repo = remote_branch:gsub("[\r\n]", ""):match("^([^/]+)/") + end + end + + --- @param log string + local get_tag = function(log) + data.tag = log:match("tag: ([^, )]+)") + end + + --- @param log string + local get_commit = function(log) + data.commit = log:match("^commit%s+([a-f0-9]+)") + end + + local get_git_log = function() + local cmd = Command("git") + :arg({ "log", "--format=commit %h%d", "-n", "1" }) + :cwd(args[1]) + :env("LANGUAGE", "en_US.UTF-8") + :stdout(Command.PIPED) + local cmd_output = cmd:output() + + if cmd_output then + local log = cmd_output.stdout + + get_tag(log) + get_commit(log) + end + end + + get_status() + get_remote_branch() + get_git_log() + + save(args[1], data) + end, +} diff --git a/new_arch/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua b/new_arch/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua new file mode 100644 index 0000000..d93e357 --- /dev/null +++ b/new_arch/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua @@ -0,0 +1,420 @@ +-- ~/.config/yazi/plugins/kdeconnect-send.yazi/main.lua + +-- Function to run a command and get its output (Corrected Args Handling) +local function run_command(cmd_args) + ya.dbg("[kdeconnect-send] Running command: ", table.concat(cmd_args, " ")) + + -- Separate the command from the arguments + local command_name = cmd_args[1] + local arguments = {} + for i = 2, #cmd_args do + table.insert(arguments, cmd_args[i]) + end + ya.dbg("[kdeconnect-send] Command Name: ", command_name) + ya.dbg("[kdeconnect-send] Arguments Table: ", arguments) + + -- Build the command correctly + local cmd_builder = Command(command_name) + for _, arg_value in ipairs(arguments) do + cmd_builder:arg(arg_value) + end + + local child, err = cmd_builder:stdout(Command.PIPED):stderr(Command.PIPED):spawn() + + if err then + ya.err("[kdeconnect-send] Spawn error: ", err) + return nil, err + end + local output, wait_err = child:wait_with_output() + ya.dbg("[kdeconnect-send] wait_with_output finished.") + if wait_err then + ya.err("[kdeconnect-send] Wait error received: ", wait_err) + return nil, wait_err + end + if not output then + ya.err("[kdeconnect-send] Wait finished but output object is nil.") + return nil, Error("Command wait returned nil output") + end + ya.dbg("[kdeconnect-send] Command Status Success: ", output.status.success) + ya.dbg("[kdeconnect-send] Command Status Code: ", output.status.code) + ya.dbg("[kdeconnect-send] Command Stdout: ", output.stdout or "nil") + ya.dbg("[kdeconnect-send] Command Stderr: ", output.stderr or "nil") + + -- Note: The check for "0 devices found" might need adjustment depending on the output format of 'kdeconnect-cli -a' + if output.stderr and output.stderr:match("^0 devices found") then + ya.dbg("[kdeconnect-send] Command reported 0 devices found in stderr. Returning empty.") + return "", nil + end + -- Also check stdout for potential "no devices" messages if -a uses stdout differently + if output.stdout and output.stdout:match("no available devices found") then -- Example check, adjust if needed + ya.dbg("[kdeconnect-send] Command reported no available devices in stdout. Returning empty.") + return "", nil + end + + if not output.status.success then + local error_msg = "Command failed with code " + .. tostring(output.status.code or "unknown") + .. ": " + .. command_name + if output.stderr and #output.stderr > 0 then + error_msg = error_msg .. "\nStderr: " .. output.stderr + end + if output.stdout and #output.stdout > 0 then + error_msg = error_msg .. "\nStdout: " .. output.stdout + end + ya.err("[kdeconnect-send] Command execution failed: ", error_msg) + return nil, Error(error_msg) + end + return output.stdout, nil +end + +-- Helper function to check if a URL exists in the values of the selected map +local function isSelected(url_to_check, selected_map) + if not url_to_check or not selected_map then + return false + end + local url_str_to_check = tostring(url_to_check) -- Compare string representations for consistency + for _, selected_url in pairs(selected_map) do + if selected_url and tostring(selected_url) == url_str_to_check then + return true + end + end + return false +end + +local get_selection_details = ya.sync(function() + ya.dbg("[kdeconnect-send] Entering get_selection_details sync block (Using cha via current.files)") + local selected_map = cx.active.selected + local current_files = cx.active.current.files + + if not selected_map or not current_files then + ya.err("[kdeconnect-send] cx.active.selected or cx.active.current.files is nil!") + return {}, false -- Return empty if essential data is missing + end + + -- Check if selection is empty early to potentially save iteration + local selection_empty = true + for _ in pairs(selected_map) do + selection_empty = false + break + end + if selection_empty then + ya.dbg("[kdeconnect-send] Selection map is empty.") + return {}, false + end + + local regular_files = {} + local directory_selected = false + + local success, err = pcall(function() + -- Iterate through the files in the current view + for i = 1, #current_files do + local file = current_files[i] -- Access fs::File object by index [cite: 15] + + if file and file.url and file.cha then + -- Check if this file's URL is in the selected map + if isSelected(file.url, selected_map) then + ya.dbg("[kdeconnect-send] File is selected: ", tostring(file.url)) + + -- Now check its cha.is_dir property + if file.cha.is_dir == true then + ya.dbg("[kdeconnect-send] Selected item is a directory (cha.is_dir): ", tostring(file.url)) + directory_selected = true + -- Optional: If finding one directory is enough, you could break the loop here + -- if you primarily care about blocking directory sends. + -- break + elseif file.cha.is_dir == false then + -- It's selected and not a directory, assume regular file + ya.dbg( + "[kdeconnect-send] Selected item is a regular file (cha.is_dir is false): ", + tostring(file.url) + ) + table.insert(regular_files, tostring(file.url)) + else + -- cha.is_dir might be nil (e.g., dummy file) + ya.warn( + "[kdeconnect-send] file.cha.is_dir is nil for selected file: ", + tostring(file.url), + ". Treating as potential directory." + ) + directory_selected = true -- Treat indeterminate as directory for safety + end + end + elseif file and file.url then + -- File exists but cha doesn't? Check if it's selected anyway. + if isSelected(file.url, selected_map) then + ya.warn( + "[kdeconnect-send] Selected file is missing 'cha' property: ", + tostring(file.url), + ". Treating as potential directory." + ) + directory_selected = true -- Treat files missing 'cha' as directories for safety + end + else + -- Handle cases where file or file.url might be nil within the loop if necessary + ya.warn("[kdeconnect-send] Encountered nil file or file.url at index: ", i) + end + end + end) + + if not success then + ya.err("[kdeconnect-send] Error during current_files iteration or isSelected check: ", err) + return {}, false -- Return empty on error + end + + -- Add a final check: if directory_selected is true, we might not need the regular_files list depending on use case. + -- The current implementation returns both. + + ya.dbg( + "[kdeconnect-send] Exiting get_selection_details sync block. Found regular files: ", + #regular_files, + " Directory selected (based on cha): ", + directory_selected + ) + return regular_files, directory_selected +end) + +local state_option = ya.sync(function(state, attr) + return state[attr] +end) + +return { + setup = function(state, options) + state.auto_select_single = options.auto_select_single + end, + + entry = function(_, job) + ya.dbg("[kdeconnect-send] Plugin entry point triggered.") + + -- Get configuration option for auto_select_single (default: true) + local auto_select_single = state_option("auto_select_single") + if auto_select_single == nil then + auto_select_single = true + end + ya.dbg("[kdeconnect-send] auto_select_single option: ", auto_select_single) + + -- 1. Get selection details (files and directory flag) using Reverted Sync Check + local selected_files, directory_selected = get_selection_details() + + -- Handle potential errors if get_selection_details couldn't determine selection + if not selected_files then + ya.err("[kdeconnect-send] Failed to get selection details.") + ya.notify({ title = "Plugin Error", content = "Could not read selection.", level = "error", timeout = 5 }) + return + end + + -- 2. *** REVERTED DIRECTORY CHECK LOGIC *** + ya.dbg("[kdeconnect-send] Checking directory_selected flag. Value: ", directory_selected) + if directory_selected then + ya.dbg("[kdeconnect-send] directory_selected is true (from sync check). Showing error and exiting.") + ya.notify({ + title = "KDE Connect Send", + content = "Cannot send directories. Please select regular files only.", + level = "error", + timeout = 7, + }) + return -- Exit if a directory was detected by the sync check + end + ya.dbg("[kdeconnect-send] directory_selected is false (from sync check). Proceeding.") + + -- 3. Proceed only if no directory was selected and files exist + ya.dbg("[kdeconnect-send] Checking number of regular files.") + local len = #selected_files + ya.dbg("[kdeconnect-send] Length of selected_files (#): ", len) + + if len == 0 then + -- This case now means either truly no regular files were selected, + -- or only directories were selected (and handled above), + -- or an error occurred in get_selection_details. + ya.dbg("[kdeconnect-send] Length is 0. No regular files to send.") + -- Check if directory_selected was false - means no files were selected at all. + if not directory_selected then + ya.notify({ + title = "KDE Connect Send", + content = "No regular files selected.", + level = "warn", + timeout = 5, + }) + end + return -- Exit cleanly + end + + -- If we got here, directory_selected is false and len > 0. + ya.dbg("[kdeconnect-send] Regular files found and no directories detected. Proceeding to device check.") + + -- 4. Get KDE Connect devices (using -a flag) + ya.dbg("[kdeconnect-send] Attempting to list KDE Connect devices with 'kdeconnect-cli -a'...") + local devices_output, err = run_command({ "kdeconnect-cli", "-a" }) -- Using -a flag + + if err then + ya.err("[kdeconnect-send] Failed to list devices command: ", tostring(err), ". Exiting.") + ya.notify({ + title = "KDE Connect Error", + content = "Failed to run kdeconnect-cli -a: " .. tostring(err), + level = "error", + timeout = 5, + }) + return + end + + if not devices_output or devices_output == "" then + ya.dbg("[kdeconnect-send] No available devices reported by kdeconnect-cli -a. Exiting silently.") + ya.notify({ + title = "KDE Connect Send", + content = "No available KDE Connect devices found.", + level = "warn", + timeout = 4, + }) + return + end + + -- 5. Parse devices (Adjust parsing for '-a' output format if needed) + -- *** IMPORTANT: The parsing logic below ASSUMES '-a' output is similar to '-l' *** + local devices = {} + local device_list_str = "Available Devices:\n" + local has_reachable = false -- Keep track if *any* device is found + ya.dbg("[kdeconnect-send] Parsing device list (assuming -a format is like -l)...") + local pattern = "^%-%s*(.+):%s*([%w_]+)%s*%((.-)%)$" -- Adjust if -a format differs + for line in devices_output:gmatch("[^\r\n]+") do + local name, id, status_line = line:match(pattern) + if id and name and status_line then + name = name:match("^%s*(.-)%s*$") + table.insert(devices, { id = id, name = name, status = status_line }) + device_list_str = device_list_str + .. "- " + .. name + .. " (ID: " + .. id + .. ") Status: " + .. status_line + .. "\n" + has_reachable = true + else + ya.warn("[kdeconnect-send] Could not parse device line with pattern: ", line) + end + end + + if not has_reachable then + ya.dbg( + "[kdeconnect-send] No devices found after parsing output of 'kdeconnect-cli -a'. Exiting silently. List:\n", + device_list_str + ) + return + end + + -- 6. Select Device (Using ya.which) + local device_id = nil + local target_device_name = "Unknown" + + if #devices == 1 and auto_select_single then + device_id = devices[1].id + target_device_name = devices[1].name + ya.dbg( + "[kdeconnect-send] Only one device found and auto-select-single is true: ", + target_device_name, + " (", + device_id, + "). Using automatically." + ) + else + ya.dbg("[kdeconnect-send] Prompting user with ya.which (multiple devices or auto-select-single is false)...") + + -- Prepare candidates for ya.which + local device_choices = {} + for i, device in ipairs(devices) do + table.insert(device_choices, { + on = tostring(i), + desc = string.format("%s (%s) - %s", device.name, device.id, device.status), -- Show status in choice + }) + end + + -- Add a cancel option + table.insert(device_choices, { on = "q", desc = "Cancel" }) + + -- Prompt the user to choose a device index + local selected_index = ya.which({ + cands = device_choices, + }) + ya.dbg("[kdeconnect-send] ya.which returned index: ", selected_index or "nil") + + -- Check if the user cancelled or selected the cancel option ('q') + if not selected_index or selected_index > #devices then + ya.warn("[kdeconnect-send] Device selection cancelled by user.") + ya.notify({ title = "KDE Connect Send", content = "Send cancelled.", level = "info", timeout = 3 }) + return -- *** This return terminates the plugin *** + end + + -- Get the device ID and name based on the selected index + device_id = devices[selected_index].id + target_device_name = devices[selected_index].name + ya.dbg( + "[kdeconnect-send] User selected device index ", + selected_index, + ": ", + target_device_name, + " (", + device_id, + ")" + ) + end + + -- 7. Proceed with selected device + ya.dbg( + "[kdeconnect-send] Proceeding with selected device: ", + device_id, + " (", + target_device_name, + "). Starting file send loop..." + ) + + -- 8. Send files (Using selected_files list) + local success_count = 0 + local error_count = 0 + for i, file_path in ipairs(selected_files) do -- Use selected_files here + ya.dbg( + "[kdeconnect-send] Sending file ", + i, + "/", + #selected_files, -- Use #selected_files + ": ", + file_path, + " to ", + target_device_name + ) + local _, send_err = run_command({ "kdeconnect-cli", "--share", file_path, "--device", device_id }) + if send_err then + error_count = error_count + 1 + ya.err("[kdeconnect-send] Failed to send file ", file_path, " to ", device_id, ": ", tostring(send_err)) + ya.notify({ + title = "KDE Connect Error", + content = "Failed to send: " .. file_path .. "\n" .. tostring(send_err), + level = "error", + timeout = 5, + }) + else + success_count = success_count + 1 + end + end + + -- 9. Final Notification + local final_message = + string.format("Sent %d/%d files to %s.", success_count, #selected_files, target_device_name) + local final_level = "info" + if error_count > 0 then + final_message = string.format( + "Sent %d/%d files to %s. %d failed.", + success_count, + #selected_files, + target_device_name, + error_count + ) + final_level = "warn" + end + if success_count == 0 and error_count > 0 then + final_level = "error" + end + ya.dbg("[kdeconnect-send] Send process completed. Success: ", success_count, " Failed: ", error_count) + ya.notify({ title = "KDE Connect Send Complete", content = final_message, level = final_level, timeout = 5 }) + ya.dbg("[kdeconnect-send] Plugin execution finished.") + end, +} diff --git a/new_arch/progs/shells/zsh/yazi.nix b/new_arch/progs/shells/zsh/yazi.nix index 7d458b0..d0af3a4 100644 --- a/new_arch/progs/shells/zsh/yazi.nix +++ b/new_arch/progs/shells/zsh/yazi.nix @@ -44,7 +44,7 @@ Home = { programs.yazi = { enable = true; - initLua = ../../../static/yazi/init.lua; + initLua = ./static/yazi/init.lua; settings = { mgr = { show_hidden = true; @@ -59,8 +59,8 @@ inherit rich-preview; } // { - "githead" = ../../../static/yazi/plugins/githead; - "kdeconnect-send" = ../../../static/yazi/plugins/kdeconnect-send; + "githead" = ./static/yazi/plugins/githead; + "kdeconnect-send" = ./static/yazi/plugins/kdeconnect-send; }; keymap = { mgr = { diff --git a/new_arch/sys/bootloader.nix b/new_arch/sys/bootloader.nix index f66b8ff..5abff16 100644 --- a/new_arch/sys/bootloader.nix +++ b/new_arch/sys/bootloader.nix @@ -50,8 +50,8 @@ useOSProber = true; # FEAT : maybe move static files in dedicated folder. extraEntries = '' - ${builtins.readFile "${../static/grub/00_Arch_Btrfs}"} - ${builtins.readFile "${../static/grub/99_UEFI_Firmware}"} + ${builtins.readFile "${./static/grub/00_Arch_Btrfs}"} + ${builtins.readFile "${./static/grub/99_UEFI_Firmware}"} ''; }; efi = { diff --git a/new_arch/sys/static/grub/00_Arch_Btrfs b/new_arch/sys/static/grub/00_Arch_Btrfs new file mode 100644 index 0000000..55b87fa --- /dev/null +++ b/new_arch/sys/static/grub/00_Arch_Btrfs @@ -0,0 +1,38 @@ +menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-42020426-a6e6-4f7a-9535-81d6df53c479' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 + echo 'Loading Linux linux ...' + linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 + echo 'Loading initial ramdisk ...' + initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img +} +submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { + menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 + echo 'Loading Linux linux ...' + linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 + echo 'Loading initial ramdisk ...' + initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img + } + menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-42020426-a6e6-4f7a-9535-81d6df53c479' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_gpt + insmod btrfs + search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 + echo 'Loading Linux linux ...' + linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 + echo 'Loading initial ramdisk ...' + initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux-fallback.img + } +} diff --git a/new_arch/sys/static/grub/99_UEFI_Firmware b/new_arch/sys/static/grub/99_UEFI_Firmware new file mode 100644 index 0000000..42fee81 --- /dev/null +++ b/new_arch/sys/static/grub/99_UEFI_Firmware @@ -0,0 +1,3 @@ +menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' { + fwsetup +} From ad4bb5b40cf5fe882c5b30e2c15c6dedaf897ac1 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 16 Apr 2026 20:58:01 -0400 Subject: [PATCH 137/236] fix(users-passwd) : undo password fail for test purposes WIP to hashedPassword --- new_arch/sys/users.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/new_arch/sys/users.nix b/new_arch/sys/users.nix index d71d2bb..d94e9a8 100644 --- a/new_arch/sys/users.nix +++ b/new_arch/sys/users.nix @@ -43,12 +43,12 @@ }; System = { users = { - mutableUsers = false; # BAZINGA + # mutableUsers = false; # BAZINGA defaultUserShell = packages.zsh; users = { matthieu = { - password = ""; # BAZINGA - ignoreShellProgramCheck = true; # BAZINGA + # password = ""; # BAZINGA + # ignoreShellProgramCheck = true; # BAZINGA description = "Moi"; isNormalUser = true; group = "users"; @@ -65,7 +65,7 @@ ]; */ }; - root.ignoreShellProgramCheck = true; # BAZINGA + # root.ignoreShellProgramCheck = true; # BAZINGA }; groups = { libvirtd.members = ["matthieu"]; From 0a9e8e9bcb17a101a279a6c92d58cd2e63c33256 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sat, 18 Apr 2026 14:55:11 -0400 Subject: [PATCH 138/236] refactor(full) : moved new arch to the main folder --- configuration.nix | 31 +- flake.lock | 42 +- flake.nix | 75 +-- home.nix | 35 +- new_arch/configuration.nix | 52 -- new_arch/flake.lock | 258 -------- new_arch/flake.nix | 150 ----- new_arch/hardware-configuration.nix | 33 - new_arch/home.nix | 31 - new_arch/progs.nix | 97 --- new_arch/static/yazi/init.lua | 1 - new_arch/static/yazi/plugins/githead/main.lua | 598 ------------------ .../yazi/plugins/kdeconnect-send/main.lua | 420 ------------ new_arch/sys/static/grub/00_Arch_Btrfs | 38 -- new_arch/sys/static/grub/99_UEFI_Firmware | 3 - new_arch/tools.nix | 117 ---- programs/boot-dev/efibootmgr.nix | 18 - programs/boot-dev/gparted.nix | 18 - programs/boot-dev/grub.nix | 18 - programs/boot-dev/os-prober.nix | 16 - programs/browsers.nix | 66 -- programs/browsers/chromium.nix | 22 - programs/browsers/firefox.nix | 116 ---- programs/browsers/multifirefox.nix | 61 -- programs/browsers/zen.nix | 36 -- programs/desktop.nix | 85 --- programs/desktop/kde.nix | 68 -- programs/desktop/kde/klassy.nix | 18 - programs/desktop/kde/plasma.nix | 41 -- programs/desktop/klassy.nix | 22 - programs/desktop/plasma.nix | 200 ------ programs/desktop/rofi.nix | 28 - programs/dev.nix | 119 ---- programs/dev/boot.nix | 81 --- programs/dev/boot/efibootmgr.nix | 49 -- programs/dev/boot/gparted.nix | 49 -- programs/dev/boot/grub.nix | 49 -- programs/dev/boot/os-prober.nix | 50 -- programs/dev/docker.nix | 43 -- programs/dev/ghostty.nix | 44 -- programs/dev/git.nix | 26 - programs/dev/network.nix | 62 -- programs/dev/nix.nix | 72 --- programs/dev/nix/alejandra.nix | 49 -- programs/dev/nix/nixd.nix | 48 -- programs/dev/postman.nix | 22 - programs/dev/vim.nix | 44 -- programs/dev/vscode.nix | 27 - programs/misc.nix | 81 --- programs/misc/bambu-studio.nix | 22 - programs/misc/bitwarden.nix | 23 - programs/misc/fastfetch.nix | 22 - programs/misc/iso-image-writer.nix | 22 - programs/misc/kdeconnect.nix | 83 --- programs/misc/ledger.nix | 63 -- programs/misc/vesktop.nix | 18 - programs/office.nix | 69 -- programs/office/libreoffice.nix | 22 - programs/office/qualculate.nix | 20 - programs/shells.nix | 61 -- programs/shells/zsh.nix | 108 ---- programs/shells/zsh/fzf.nix | 24 - programs/shells/zsh/oh-my-zsh.nix | 20 - programs/shells/zsh/yazi.nix | 47 -- progs.nix | 247 +++----- {new_arch/progs => progs}/browsers.nix | 0 .../progs => progs}/browsers/chromium.nix | 0 .../progs => progs}/browsers/firefox.nix | 0 .../progs => progs}/browsers/statics/prefs.js | 0 .../browsers/statics/test.json | 0 .../browsers/statics/toolbar.json | 0 {new_arch/progs => progs}/browsers/zen.nix | 0 {new_arch/progs => progs}/desktop.nix | 0 {new_arch/progs => progs}/desktop/klassy.nix | 0 {new_arch/progs => progs}/desktop/plasma.nix | 0 {new_arch/progs => progs}/desktop/rofi.nix | 0 {new_arch/progs => progs}/dev.nix | 0 {new_arch/progs => progs}/dev/boot.nix | 0 .../progs => progs}/dev/boot/efibootmgr.nix | 0 .../progs => progs}/dev/boot/gparted.nix | 0 {new_arch/progs => progs}/dev/boot/grub.nix | 0 .../progs => progs}/dev/boot/os-prober.nix | 0 {new_arch/progs => progs}/dev/docker.nix | 0 {new_arch/progs => progs}/dev/ghostty.nix | 0 {new_arch/progs => progs}/dev/git.nix | 0 {new_arch/progs => progs}/dev/network.nix | 0 {new_arch/progs => progs}/dev/nix.nix | 0 .../progs => progs}/dev/nix/alejandra.nix | 0 {new_arch/progs => progs}/dev/nix/nixd.nix | 0 {new_arch/progs => progs}/dev/postman.nix | 0 {new_arch/progs => progs}/dev/vim.nix | 0 {new_arch/progs => progs}/dev/vscode.nix | 0 {new_arch/progs => progs}/misc.nix | 0 .../progs => progs}/misc/bambu-studio.nix | 0 {new_arch/progs => progs}/misc/bitwarden.nix | 0 {new_arch/progs => progs}/misc/fastfetch.nix | 0 .../progs => progs}/misc/iso-image-writer.nix | 0 {new_arch/progs => progs}/misc/kdeconnect.nix | 0 {new_arch/progs => progs}/misc/ledger.nix | 0 {new_arch/progs => progs}/misc/vesktop.nix | 0 {new_arch/progs => progs}/office.nix | 0 .../progs => progs}/office/libreoffice.nix | 0 .../progs => progs}/office/qualculate.nix | 0 {new_arch/progs => progs}/shells.nix | 0 {new_arch/progs => progs}/shells/zsh.nix | 0 {new_arch/progs => progs}/shells/zsh/fzf.nix | 0 .../progs => progs}/shells/zsh/oh-my-zsh.nix | 0 .../shells/zsh/static/.p10k.zsh | 0 .../shells/zsh/static/yazi/init.lua | 0 .../zsh/static/yazi/plugins/githead/main.lua | 0 .../yazi/plugins/kdeconnect-send/main.lua | 0 {new_arch/progs => progs}/shells/zsh/yazi.nix | 0 new_arch/sys.nix => sys.nix | 0 {new_arch/sys => sys}/bootloader.nix | 0 {new_arch/sys => sys}/filesystems.nix | 0 {new_arch/sys => sys}/filesystems/btrfs.nix | 0 {new_arch/sys => sys}/filesystems/exfat.nix | 0 {new_arch/sys => sys}/filesystems/ntfs.nix | 0 {new_arch/sys => sys}/hardware.nix | 0 {new_arch/sys => sys}/hardware/nvidia.nix | 0 {new_arch/sys => sys}/hardware/printer.nix | 0 {new_arch/sys => sys}/hardware/sound.nix | 0 {new_arch/sys => sys}/lang.nix | 0 {new_arch/sys => sys}/networking.nix | 0 {new_arch => sys}/static/grub/00_Arch_Btrfs | 0 .../static/grub/99_UEFI_Firmware | 0 {new_arch/sys => sys}/users.nix | 0 system.nix | 34 - system/bootloader.nix | 27 - system/filesystems.nix | 30 - system/filesystems/btrfs.nix | 26 - system/filesystems/exfat.nix | 27 - system/filesystems/ntfs.nix | 27 - system/hardware.nix | 34 - system/hardware/nvidia.nix | 41 -- system/hardware/printer.nix | 18 - system/hardware/sound.nix | 17 - system/lang.nix | 21 - system/networking.nix | 48 -- system/users.nix | 38 -- templates/bundle-import.nix | 12 - templates/home/pkg.nix | 17 - templates/home/program.nix | 16 - templates/module.nix | 11 - templates/service.nix | 16 - templates/system/pkg.nix | 17 - templates/universal/multi.nix | 59 -- tools.nix | 215 +++---- 148 files changed, 239 insertions(+), 5112 deletions(-) delete mode 100644 new_arch/configuration.nix delete mode 100644 new_arch/flake.lock delete mode 100644 new_arch/flake.nix delete mode 100644 new_arch/hardware-configuration.nix delete mode 100644 new_arch/home.nix delete mode 100644 new_arch/progs.nix delete mode 100644 new_arch/static/yazi/init.lua delete mode 100644 new_arch/static/yazi/plugins/githead/main.lua delete mode 100644 new_arch/static/yazi/plugins/kdeconnect-send/main.lua delete mode 100644 new_arch/sys/static/grub/00_Arch_Btrfs delete mode 100644 new_arch/sys/static/grub/99_UEFI_Firmware delete mode 100644 new_arch/tools.nix delete mode 100644 programs/boot-dev/efibootmgr.nix delete mode 100644 programs/boot-dev/gparted.nix delete mode 100644 programs/boot-dev/grub.nix delete mode 100644 programs/boot-dev/os-prober.nix delete mode 100644 programs/browsers.nix delete mode 100644 programs/browsers/chromium.nix delete mode 100644 programs/browsers/firefox.nix delete mode 100644 programs/browsers/multifirefox.nix delete mode 100644 programs/browsers/zen.nix delete mode 100644 programs/desktop.nix delete mode 100644 programs/desktop/kde.nix delete mode 100644 programs/desktop/kde/klassy.nix delete mode 100644 programs/desktop/kde/plasma.nix delete mode 100644 programs/desktop/klassy.nix delete mode 100644 programs/desktop/plasma.nix delete mode 100644 programs/desktop/rofi.nix delete mode 100644 programs/dev.nix delete mode 100644 programs/dev/boot.nix delete mode 100644 programs/dev/boot/efibootmgr.nix delete mode 100644 programs/dev/boot/gparted.nix delete mode 100644 programs/dev/boot/grub.nix delete mode 100644 programs/dev/boot/os-prober.nix delete mode 100644 programs/dev/docker.nix delete mode 100644 programs/dev/ghostty.nix delete mode 100644 programs/dev/git.nix delete mode 100644 programs/dev/network.nix delete mode 100644 programs/dev/nix.nix delete mode 100644 programs/dev/nix/alejandra.nix delete mode 100644 programs/dev/nix/nixd.nix delete mode 100644 programs/dev/postman.nix delete mode 100644 programs/dev/vim.nix delete mode 100644 programs/dev/vscode.nix delete mode 100644 programs/misc.nix delete mode 100644 programs/misc/bambu-studio.nix delete mode 100644 programs/misc/bitwarden.nix delete mode 100644 programs/misc/fastfetch.nix delete mode 100644 programs/misc/iso-image-writer.nix delete mode 100644 programs/misc/kdeconnect.nix delete mode 100644 programs/misc/ledger.nix delete mode 100644 programs/misc/vesktop.nix delete mode 100644 programs/office.nix delete mode 100644 programs/office/libreoffice.nix delete mode 100644 programs/office/qualculate.nix delete mode 100644 programs/shells.nix delete mode 100644 programs/shells/zsh.nix delete mode 100644 programs/shells/zsh/fzf.nix delete mode 100644 programs/shells/zsh/oh-my-zsh.nix delete mode 100644 programs/shells/zsh/yazi.nix rename {new_arch/progs => progs}/browsers.nix (100%) rename {new_arch/progs => progs}/browsers/chromium.nix (100%) rename {new_arch/progs => progs}/browsers/firefox.nix (100%) rename {new_arch/progs => progs}/browsers/statics/prefs.js (100%) rename {new_arch/progs => progs}/browsers/statics/test.json (100%) rename {new_arch/progs => progs}/browsers/statics/toolbar.json (100%) rename {new_arch/progs => progs}/browsers/zen.nix (100%) rename {new_arch/progs => progs}/desktop.nix (100%) rename {new_arch/progs => progs}/desktop/klassy.nix (100%) rename {new_arch/progs => progs}/desktop/plasma.nix (100%) rename {new_arch/progs => progs}/desktop/rofi.nix (100%) rename {new_arch/progs => progs}/dev.nix (100%) rename {new_arch/progs => progs}/dev/boot.nix (100%) rename {new_arch/progs => progs}/dev/boot/efibootmgr.nix (100%) rename {new_arch/progs => progs}/dev/boot/gparted.nix (100%) rename {new_arch/progs => progs}/dev/boot/grub.nix (100%) rename {new_arch/progs => progs}/dev/boot/os-prober.nix (100%) rename {new_arch/progs => progs}/dev/docker.nix (100%) rename {new_arch/progs => progs}/dev/ghostty.nix (100%) rename {new_arch/progs => progs}/dev/git.nix (100%) rename {new_arch/progs => progs}/dev/network.nix (100%) rename {new_arch/progs => progs}/dev/nix.nix (100%) rename {new_arch/progs => progs}/dev/nix/alejandra.nix (100%) rename {new_arch/progs => progs}/dev/nix/nixd.nix (100%) rename {new_arch/progs => progs}/dev/postman.nix (100%) rename {new_arch/progs => progs}/dev/vim.nix (100%) rename {new_arch/progs => progs}/dev/vscode.nix (100%) rename {new_arch/progs => progs}/misc.nix (100%) rename {new_arch/progs => progs}/misc/bambu-studio.nix (100%) rename {new_arch/progs => progs}/misc/bitwarden.nix (100%) rename {new_arch/progs => progs}/misc/fastfetch.nix (100%) rename {new_arch/progs => progs}/misc/iso-image-writer.nix (100%) rename {new_arch/progs => progs}/misc/kdeconnect.nix (100%) rename {new_arch/progs => progs}/misc/ledger.nix (100%) rename {new_arch/progs => progs}/misc/vesktop.nix (100%) rename {new_arch/progs => progs}/office.nix (100%) rename {new_arch/progs => progs}/office/libreoffice.nix (100%) rename {new_arch/progs => progs}/office/qualculate.nix (100%) rename {new_arch/progs => progs}/shells.nix (100%) rename {new_arch/progs => progs}/shells/zsh.nix (100%) rename {new_arch/progs => progs}/shells/zsh/fzf.nix (100%) rename {new_arch/progs => progs}/shells/zsh/oh-my-zsh.nix (100%) rename {new_arch/progs => progs}/shells/zsh/static/.p10k.zsh (100%) rename {new_arch/progs => progs}/shells/zsh/static/yazi/init.lua (100%) rename {new_arch/progs => progs}/shells/zsh/static/yazi/plugins/githead/main.lua (100%) rename {new_arch/progs => progs}/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua (100%) rename {new_arch/progs => progs}/shells/zsh/yazi.nix (100%) rename new_arch/sys.nix => sys.nix (100%) rename {new_arch/sys => sys}/bootloader.nix (100%) rename {new_arch/sys => sys}/filesystems.nix (100%) rename {new_arch/sys => sys}/filesystems/btrfs.nix (100%) rename {new_arch/sys => sys}/filesystems/exfat.nix (100%) rename {new_arch/sys => sys}/filesystems/ntfs.nix (100%) rename {new_arch/sys => sys}/hardware.nix (100%) rename {new_arch/sys => sys}/hardware/nvidia.nix (100%) rename {new_arch/sys => sys}/hardware/printer.nix (100%) rename {new_arch/sys => sys}/hardware/sound.nix (100%) rename {new_arch/sys => sys}/lang.nix (100%) rename {new_arch/sys => sys}/networking.nix (100%) rename {new_arch => sys}/static/grub/00_Arch_Btrfs (100%) rename {new_arch => sys}/static/grub/99_UEFI_Firmware (100%) rename {new_arch/sys => sys}/users.nix (100%) delete mode 100644 system.nix delete mode 100644 system/bootloader.nix delete mode 100644 system/filesystems.nix delete mode 100644 system/filesystems/btrfs.nix delete mode 100644 system/filesystems/exfat.nix delete mode 100644 system/filesystems/ntfs.nix delete mode 100644 system/hardware.nix delete mode 100644 system/hardware/nvidia.nix delete mode 100644 system/hardware/printer.nix delete mode 100644 system/hardware/sound.nix delete mode 100644 system/lang.nix delete mode 100644 system/networking.nix delete mode 100644 system/users.nix delete mode 100644 templates/bundle-import.nix delete mode 100644 templates/home/pkg.nix delete mode 100644 templates/home/program.nix delete mode 100644 templates/module.nix delete mode 100644 templates/service.nix delete mode 100644 templates/system/pkg.nix delete mode 100644 templates/universal/multi.nix diff --git a/configuration.nix b/configuration.nix index 582ce50..98bc7eb 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,26 +1,32 @@ +# FEAT : unify format { config, lib, inputs, pkgs-list, managers, - nixos-version, - settings, + baseSettings, tools, ... }: let import_with_args = file: context: (import file { - inherit config lib inputs pkgs-list; - inherit tools; + inherit config lib inputs pkgs-list tools baseSettings; + parentPathAsList = []; }).config.${ context }; in { imports = [ + (import + ./sys.nix + { + inherit config lib pkgs-list tools inputs baseSettings; + }) + ] + ++ [ ./hardware-configuration.nix - ./system.nix managers.home.nixosModules.default ] ++ [ @@ -28,14 +34,19 @@ in { ./progs.nix "System") ]; - inherit (settings) progs; - + sys.version = baseSettings.sys.version; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; - system.version = nixos-version; networking.hostName = "NixOs"; virtualisation = { libvirtd.enable = true; spiceUSBRedirection.enable = true; - }; - fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; + vmVariant = { + # the following configuration is added only when building VM with `build-vm` + virtualisation = { + memorySize = 2048; # use 2048MiB memory + cores = 3; # use 3 cpu cores + }; + }; + }; # FIXME : Move to somewhere else + fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; # FIXME : Move to somewhere else } diff --git a/flake.lock b/flake.lock index 5acb782..2345d9e 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1772020340, - "narHash": "sha256-aqBl3GNpCadMoJ/hVkWTijM1Aeilc278MjM+LA3jK6g=", + "lastModified": 1775425411, + "narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", "owner": "nix-community", "repo": "home-manager", - "rev": "36e38ca0d9afe4c55405fdf22179a5212243eecc", + "rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", "type": "github" }, "original": { @@ -86,11 +86,11 @@ }, "latestPkgs": { "locked": { - "lastModified": 1771903837, - "narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=", + "lastModified": 1776067740, + "narHash": "sha256-B35lpsqnSZwn1Lmz06BpwF7atPgFmUgw1l8KAV3zpVQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951", + "rev": "7e495b747b51f95ae15e74377c5ce1fe69c1765f", "type": "github" }, "original": { @@ -144,11 +144,11 @@ ] }, "locked": { - "lastModified": 1772043741, - "narHash": "sha256-Xrdy2ybvbz8gFkarBNv6WoPCPGIJa6Vli0qlJbX/nwQ=", + "lastModified": 1776202455, + "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", "owner": "nix-community", "repo": "nur", - "rev": "4de50169adea8025743e4e8e9ac823652d30a692", + "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", "type": "github" }, "original": { @@ -165,11 +165,11 @@ ] }, "locked": { - "lastModified": 1772043741, - "narHash": "sha256-Xrdy2ybvbz8gFkarBNv6WoPCPGIJa6Vli0qlJbX/nwQ=", + "lastModified": 1776202455, + "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", "owner": "nix-community", "repo": "nur", - "rev": "4de50169adea8025743e4e8e9ac823652d30a692", + "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", "type": "github" }, "original": { @@ -188,11 +188,11 @@ ] }, "locked": { - "lastModified": 1770766818, - "narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=", + "lastModified": 1775856943, + "narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "44b928068359b7d2310a34de39555c63c93a2c90", + "rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5", "type": "github" }, "original": { @@ -215,11 +215,11 @@ }, "unstablePkgs": { "locked": { - "lastModified": 1771848320, - "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", + "lastModified": 1775710090, + "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2fc6539b481e1d2569f25f8799236694180c0993", + "rev": "4c1018dae018162ec878d42fec712642d214fdfa", "type": "github" }, "original": { @@ -239,11 +239,11 @@ ] }, "locked": { - "lastModified": 1772005916, - "narHash": "sha256-aFYnT0gStcu1PVTh2Xzd0n8PIEKmqvTgrVkpv49qc6M=", + "lastModified": 1776144279, + "narHash": "sha256-eX3u6wJ34+qu7ZR1qWOaToGWmudYQSOEStZZm6goP+8=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "044299e83752f78f9fc5d6a648f7f3dd84bb3b18", + "rev": "727de8a44c85e90f899c540cf3ffa0d5d3344f9c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 84d1c53..e861c05 100644 --- a/flake.nix +++ b/flake.nix @@ -95,61 +95,23 @@ tools = import ./tools.nix { inherit lib; }; - settings = { + baseSettings = { progs = { - enable = true; - shells = { - enable = true; - zsh = true; - }; - misc = { - enable = true; - ledger = true; - bambu-studio = true; - bitwarden = true; - fastfetch = true; - iso-image-writer = true; - vesktop = true; - kdeconnect = true; - }; - office = { - enable = true; - libreoffice = true; - qualculate = true; - }; - dev = { - enable = true; - boot = { - enable = true; - efibootmgr = true; - grub = true; - gparted = true; - os-prober = true; - }; - dev-nix = { - enable = true; - nixd = true; - alejandra = true; - }; - # network = true; - docker = true; - ghostty = true; - git = true; - postman = true; - vscode = true; - vim = true; - }; - browsers = { - enable = true; - firefox = true; - chromium = true; - }; - desktop = { - enable = true; - plasma = true; - klassy = true; - rofi = true; - }; + shells.enable = true; + misc.enable = true; + office.enable = true; + dev.enable = true; + browsers.enable = true; + desktop.enable = true; + }; + sys = { + version = nixos-version; + bootloader.enable = true; + lang.enable = true; + users.enable = true; + hardware.enable = true; + networking.enable = true; + filesystems.enable = true; }; }; in { @@ -159,8 +121,7 @@ inherit pkgs-list; inherit Inputs; inherit managers; - inherit nixos-version; - inherit settings; + inherit baseSettings; inherit tools; }; modules = [ @@ -173,7 +134,7 @@ inherit pkgs-list; inherit latest; inherit nixos-version; - inherit settings; + inherit baseSettings; inherit tools; }; useUserPackages = true; diff --git a/home.nix b/home.nix index 25b1e69..d420f68 100644 --- a/home.nix +++ b/home.nix @@ -1,34 +1,31 @@ +# FEAT : unify format { config, lib, inputs, pkgs-list, nixos-version, - settings, + baseSettings, tools, ... -} @ Inputs: let - folder = "programs"; - context = "home"; +}: let + name = "home"; + mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs + imports = ["progs"]; + specialImports = [ + pkgs-list.others.zen-browser.homeModules.beta ## FIXME : Dont know yet how to handle this + ]; in { imports = - [ - (import ./progs.nix {inherit config lib inputs pkgs-list tools;}).config.Home - ] - ++ [ - pkgs-list.others.zen-browser.homeModules.beta - ]; - inherit (settings) progs; + map (file: + (import ./${mainModule}.nix { + inherit config lib pkgs-list tools baseSettings; + inherit inputs; + }).config.Home) + imports + ++ specialImports; home.stateVersion = nixos-version; home.username = "matthieu"; home.homeDirectory = "/home/matthieu"; - # TODO: Move to another folder later - # home.packages = with Inputs.pkgs-list.nix.latest; [ - # ntfs3g - # ntfsprogs - # btrfs-progs - # exfat - # exfatprogs - # ]; } diff --git a/new_arch/configuration.nix b/new_arch/configuration.nix deleted file mode 100644 index 98bc7eb..0000000 --- a/new_arch/configuration.nix +++ /dev/null @@ -1,52 +0,0 @@ -# FEAT : unify format -{ - config, - lib, - inputs, - pkgs-list, - managers, - baseSettings, - tools, - ... -}: let - import_with_args = file: context: - (import file { - inherit config lib inputs pkgs-list tools baseSettings; - parentPathAsList = []; - }).config.${ - context - }; -in { - imports = - [ - (import - ./sys.nix - { - inherit config lib pkgs-list tools inputs baseSettings; - }) - ] - ++ [ - ./hardware-configuration.nix - managers.home.nixosModules.default - ] - ++ [ - (import_with_args - ./progs.nix - "System") - ]; - sys.version = baseSettings.sys.version; - # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; - networking.hostName = "NixOs"; - virtualisation = { - libvirtd.enable = true; - spiceUSBRedirection.enable = true; - vmVariant = { - # the following configuration is added only when building VM with `build-vm` - virtualisation = { - memorySize = 2048; # use 2048MiB memory - cores = 3; # use 3 cpu cores - }; - }; - }; # FIXME : Move to somewhere else - fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; # FIXME : Move to somewhere else -} diff --git a/new_arch/flake.lock b/new_arch/flake.lock deleted file mode 100644 index 2345d9e..0000000 --- a/new_arch/flake.lock +++ /dev/null @@ -1,258 +0,0 @@ -{ - "nodes": { - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "nur-klassy-version", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "nur-latest-pkgs", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "nur-unstable-pkgs", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "latestPkgs" - ] - }, - "locked": { - "lastModified": 1775425411, - "narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-25.11", - "repo": "home-manager", - "type": "github" - } - }, - "latestPkgs": { - "locked": { - "lastModified": 1776067740, - "narHash": "sha256-B35lpsqnSZwn1Lmz06BpwF7atPgFmUgw1l8KAV3zpVQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "7e495b747b51f95ae15e74377c5ce1fe69c1765f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1766070988, - "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur-klassy-version": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1766421218, - "narHash": "sha256-At7jWdyYghMHUz7A0b19JdOSPyMxbU24xrVCSjCz6cw=", - "owner": "nix-community", - "repo": "nur", - "rev": "82a02f13454ca5b23248d9fe8fb15618a11b09f0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "rev": "82a02f13454ca5b23248d9fe8fb15618a11b09f0", - "type": "github" - } - }, - "nur-latest-pkgs": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": [ - "latestPkgs" - ] - }, - "locked": { - "lastModified": 1776202455, - "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", - "owner": "nix-community", - "repo": "nur", - "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, - "nur-unstable-pkgs": { - "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": [ - "unstablePkgs" - ] - }, - "locked": { - "lastModified": 1776202455, - "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", - "owner": "nix-community", - "repo": "nur", - "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, - "plasma-manager": { - "inputs": { - "home-manager": [ - "home-manager" - ], - "nixpkgs": [ - "latestPkgs" - ] - }, - "locked": { - "lastModified": 1775856943, - "narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=", - "owner": "nix-community", - "repo": "plasma-manager", - "rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "plasma-manager", - "type": "github" - } - }, - "root": { - "inputs": { - "home-manager": "home-manager", - "latestPkgs": "latestPkgs", - "nur-klassy-version": "nur-klassy-version", - "nur-latest-pkgs": "nur-latest-pkgs", - "nur-unstable-pkgs": "nur-unstable-pkgs", - "plasma-manager": "plasma-manager", - "unstablePkgs": "unstablePkgs", - "zen-browser": "zen-browser" - } - }, - "unstablePkgs": { - "locked": { - "lastModified": 1775710090, - "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "4c1018dae018162ec878d42fec712642d214fdfa", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "zen-browser": { - "inputs": { - "home-manager": [ - "home-manager" - ], - "nixpkgs": [ - "unstablePkgs" - ] - }, - "locked": { - "lastModified": 1776144279, - "narHash": "sha256-eX3u6wJ34+qu7ZR1qWOaToGWmudYQSOEStZZm6goP+8=", - "owner": "0xc000022070", - "repo": "zen-browser-flake", - "rev": "727de8a44c85e90f899c540cf3ffa0d5d3344f9c", - "type": "github" - }, - "original": { - "owner": "0xc000022070", - "repo": "zen-browser-flake", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/new_arch/flake.nix b/new_arch/flake.nix deleted file mode 100644 index e861c05..0000000 --- a/new_arch/flake.nix +++ /dev/null @@ -1,150 +0,0 @@ -{ - description = "System flake"; - - inputs = { - unstablePkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; - latestPkgs.url = "github:nixos/nixpkgs?ref=nixos-25.11"; - home-manager = { - url = "github:nix-community/home-manager/release-25.11"; - inputs.nixpkgs.follows = "latestPkgs"; - }; - nur-latest-pkgs = { - url = "github:nix-community/nur"; - inputs.nixpkgs.follows = "latestPkgs"; - }; - nur-klassy-version = { - url = "github:nix-community/nur/82a02f13454ca5b23248d9fe8fb15618a11b09f0"; - # sha256 = "0d8iwisgw15ivwbd9s041fbf33mqgccsmwxcvgwf3y84i2d1rb7a"; - }; - nur-unstable-pkgs = { - url = "github:nix-community/nur"; - inputs.nixpkgs.follows = "unstablePkgs"; - }; - zen-browser = { - url = "github:0xc000022070/zen-browser-flake"; - inputs = { - # IMPORTANT: we're using "libgbm" and is only available in unstable so ensure - # to have it up-to-date or simply don't specify the nixpkgs input - nixpkgs.follows = "unstablePkgs"; - home-manager.follows = "home-manager"; - }; - }; - plasma-manager = { - url = "github:nix-community/plasma-manager"; - inputs.nixpkgs.follows = "latestPkgs"; - inputs.home-manager.follows = "home-manager"; - }; - }; - - outputs = { - self, - unstablePkgs, - latestPkgs, - ... - } @ Inputs: let - system = "x86_64-linux"; - latest-version = "25.11"; - nixos-version = latest-version; - latest = import latestPkgs { - inherit system; - ### Not sure if needed - overlays = [ - Inputs.nur-latest-pkgs.overlays.default - ]; - config = { - allowUnfree = true; - }; - }; - unstable = import unstablePkgs { - inherit system; - ### Not sure if needed - overlays = [ - Inputs.nur-unstable-pkgs.overlays.default - ]; - config = { - allowUnfree = true; - }; - }; - nix = { - latest = latest; - unstable = unstable; - }; - nur-latest = Inputs.nur-latest-pkgs.legacyPackages.${system}; - nur-unstable = Inputs.nur-unstable-pkgs.legacyPackages.${system}; - nur-klassy = Inputs.nur-klassy-version.legacyPackages.${system}; - - nur = { - latest = nur-latest; - unstable = nur-unstable; - klassy = nur-klassy; - }; - others = { - zen-browser = Inputs.zen-browser; - }; - pkgs-list = { - inherit nix; - inherit nur; - inherit others; - }; - managers = { - home = Inputs.home-manager; - plasma = Inputs.plasma-manager; - }; - inherit (Inputs) home-manager plasma-manager; - lib = latest.lib; - tools = import ./tools.nix { - inherit lib; - }; - baseSettings = { - progs = { - shells.enable = true; - misc.enable = true; - office.enable = true; - dev.enable = true; - browsers.enable = true; - desktop.enable = true; - }; - sys = { - version = nixos-version; - bootloader.enable = true; - lang.enable = true; - users.enable = true; - hardware.enable = true; - networking.enable = true; - filesystems.enable = true; - }; - }; - in { - nixosConfigurations.NixOs = latestPkgs.lib.nixosSystem { - pkgs = pkgs-list.nix.latest; - specialArgs = { - inherit pkgs-list; - inherit Inputs; - inherit managers; - inherit baseSettings; - inherit tools; - }; - modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager - { - home-manager = { - extraSpecialArgs = { - inherit Inputs; - inherit pkgs-list; - inherit latest; - inherit nixos-version; - inherit baseSettings; - inherit tools; - }; - useUserPackages = true; - useGlobalPkgs = true; - sharedModules = [plasma-manager.homeModules.plasma-manager]; - users.matthieu = import ./home.nix; - backupFileExtension = "backup"; - }; - } - ]; - }; - }; -} diff --git a/new_arch/hardware-configuration.nix b/new_arch/hardware-configuration.nix deleted file mode 100644 index 852195b..0000000 --- a/new_arch/hardware-configuration.nix +++ /dev/null @@ -1,33 +0,0 @@ -# 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") - ]; - - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/f89049d8-5e33-4093-ace1-8efe6ea176d0"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/650D-7E4E"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/cd981a20-e577-42b8-944c-890664bdcfe5"; } - ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/new_arch/home.nix b/new_arch/home.nix deleted file mode 100644 index d420f68..0000000 --- a/new_arch/home.nix +++ /dev/null @@ -1,31 +0,0 @@ -# FEAT : unify format -{ - config, - lib, - inputs, - pkgs-list, - nixos-version, - baseSettings, - tools, - ... -}: let - name = "home"; - mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs - imports = ["progs"]; - specialImports = [ - pkgs-list.others.zen-browser.homeModules.beta ## FIXME : Dont know yet how to handle this - ]; -in { - imports = - map (file: - (import ./${mainModule}.nix { - inherit config lib pkgs-list tools baseSettings; - inherit inputs; - }).config.Home) - imports - ++ specialImports; - - home.stateVersion = nixos-version; - home.username = "matthieu"; - home.homeDirectory = "/home/matthieu"; -} diff --git a/new_arch/progs.nix b/new_arch/progs.nix deleted file mode 100644 index e2c56f9..0000000 --- a/new_arch/progs.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - config, - lib, - pkgs-list, - tools, - baseSettings, - parentPathAsList ? [], - ... -}: let - ###### # user defined - name = "progs"; - subfolder = "progs"; - repo = "nix"; - branch = "latest"; - imports = [ - "dev" - "misc" - "shells" - "office" - "desktop" - "browsers" - ]; - options = null; - newSettings.${name} = { - }; - settings = (lib.recursiveUpdate baseSettings newSettings).${name}; - ###### # computed - packages = pkgs-list.${repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - programs = { - thunderbird = { - enable = true; - profiles = {}; - }; - }; - }; - System = { - environment.systemPackages = with packages; [ - mangohud - plocate - mlocate - xdotool - protonup-ng - meld - wget - ]; - environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; - }; - programs = { - gamemode.enable = true; - steam = { - enable = true; - gamescopeSession.enable = true; - }; - virt-manager.enable = true; - }; - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - # FIXME : find a way to make more uniform with the other modules - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated - inherit options imports; # user defined - togglable = false; - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated - inherit options imports; # user defined - togglable = false; - context = "System"; - Config = SystemConfig; - }; - }; -} diff --git a/new_arch/static/yazi/init.lua b/new_arch/static/yazi/init.lua deleted file mode 100644 index 3ae68e5..0000000 --- a/new_arch/static/yazi/init.lua +++ /dev/null @@ -1 +0,0 @@ --- require("githead"):setup() \ No newline at end of file diff --git a/new_arch/static/yazi/plugins/githead/main.lua b/new_arch/static/yazi/plugins/githead/main.lua deleted file mode 100644 index 6c7f74d..0000000 --- a/new_arch/static/yazi/plugins/githead/main.lua +++ /dev/null @@ -1,598 +0,0 @@ ----@diagnostic disable: undefined-global - -local save = ya.sync(function(this, cwd, output) - if cwd:match("%.git[/\\]") or cwd:match("%.git$") then - this.output = nil - return - end - if cx.active.current.cwd == Url(cwd) then - this.output = output - ui.render() - end -end) - -return { - setup = function(this, options) - options = options or {} - - local config = { - order = options.order or { - "__spacer__", - "branch", - "remote_branch", - "__spacer__", - "tag", - "__spacer__", - "commit", - "__spacer__", - "behind_ahead_remote", - "__spacer__", - "stashes", - "__spacer__", - "state", - "__spacer__", - "staged", - "__spacer__", - "unstaged", - "__spacer__", - "untracked", - }, - - show_numbers = options.show_numbers == nil and true - or options.show_numbers, - - show_branch = options.show_branch == nil and true or options.show_branch, - branch_prefix = options.branch_prefix or "", - branch_color = options.branch_color or "blue", - branch_symbol = options.branch_symbol or "", - branch_borders = options.branch_borders or "", - - show_remote_branch = options.show_remote_branch == nil and true - or options.show_remote_branch, - always_show_remote_branch = options.always_show_remote_branch == nil - and false - or options.always_show_remote_branch, - always_show_remote_repo = options.always_show_remote_repo == nil - and false - or options.always_show_remote_repo, - remote_branch_prefix = options.remote_branch_prefix or ":", - remote_branch_color = options.remote_branch_color or "bright magenta", - - show_tag = options.show_tag == nil and true or options.show_tag, - always_show_tag = options.always_show_tag == nil and false - or options.always_show_tag, - tag_color = options.tag_color or "magenta", - tag_symbol = options.tag_symbol == nil and "#" or options.tag_symbol, - - show_commit = options.show_commit == nil and true or options.show_commit, - always_show_commit = options.always_show_commit == nil and false - or options.always_show_commit, - commit_color = options.commit_color or "bright magenta", - commit_symbol = options.commit_symbol == nil and "@" - or options.commit_symbol, - - show_behind_ahead_remote = options.show_behind_ahead_remote == nil - and true - or options.show_behind_ahead_remote, - behind_remote_color = options.behind_remote_color or "bright magenta", - behind_remote_symbol = options.behind_remote_symbol or "⇣", - ahead_remote_color = options.ahead_remote_color or "bright magenta", - ahead_remote_symbol = options.ahead_remote_symbol or "⇡", - - show_stashes = options.show_stashes == nil and true - or options.show_stashes, - stashes_color = options.stashes_color or "bright magenta", - stashes_symbol = options.stashes_symbol or "$", - - show_state = options.show_state == nil and true or options.show_state, - show_state_prefix = options.show_state_prefix == nil and true - or options.show_state_prefix, - state_color = options.state_color or "red", - state_symbol = options.state_symbol or "~", - - show_staged = options.show_staged == nil and true or options.show_staged, - staged_color = options.staged_color or "bright yellow", - staged_symbol = options.staged_symbol or "+", - - show_unstaged = options.show_unstaged == nil and true - or options.show_unstaged, - unstaged_color = options.unstaged_color or "bright yellow", - unstaged_symbol = options.unstaged_symbol or "!", - - show_untracked = options.show_untracked == nil and true - or options.show_untracked, - untracked_color = options.untracked_color or "bright blue", - untracked_symbol = options.untracked_symbol or "?", - } - - --- @param data GitStatusData - function Header:render_branch(data) - local branch = data.branch - - if not branch then - return nil - end - - local left_border = config.branch_borders:sub(1, 1) - local right_border = config.branch_borders:sub(2, 2) - - local branch_string = "" - - if config.branch_symbol == "" then - branch_string = left_border .. branch .. right_border - else - branch_string = left_border - .. config.branch_symbol - .. branch - .. right_border - end - - local branch_prefix = config.branch_prefix == "" and "" - or config.branch_prefix .. " " - - return ui.Line({ - ui.Span(branch_prefix), - ui.Span(branch_string):fg(config.branch_color), - }) - end - - --- @param data GitStatusData - function Header:render_remote_branch(data) - local branch = data.branch - local remote_branch = data.remote_branch - local remote_repo = data.remote_repo - - if not remote_branch then - return nil - end - - local show_remote = config.always_show_remote_branch - or branch ~= remote_branch - if not show_remote then - return nil - end - - local remote_branch_label = config.always_show_remote_repo - and (remote_repo .. "/" .. remote_branch) - or remote_branch - - return ui.Line({ - ui.Span(config.remote_branch_prefix), - ui.Span(remote_branch_label):fg(config.remote_branch_color), - }) - end - - --- @param data GitStatusData - function Header:render_tag(data) - local branch = data.branch - local tag = data.tag - - if not tag then - return nil - end - - if not branch or config.always_show_tag then - return ui.Line({ - ui.Span(config.tag_symbol), - ui.Span(tag):fg(config.tag_color), - }) - end - end - - --- @param data GitStatusData - function Header:render_commit(data) - local branch = data.branch - local tag = data.tag - local commit = data.commit - - if not commit then - return nil - end - - if (not branch and not tag) or config.always_show_commit then - return ui.Line({ - ui.Span(config.commit_symbol), - ui.Span(commit):fg(config.commit_color), - }) - end - end - - --- @param data GitStatusData - function Header:render_behind_ahead_remote(data) - local behind = data.behind_remote - local ahead = data.ahead_remote - - local behind_label = behind - and behind > 0 - and ui.Span( - config.behind_remote_symbol .. (config.show_numbers and behind or "") - ):fg(config.behind_remote_color) - - local ahead_label = ahead - and ahead > 0 - and ui.Span( - config.ahead_remote_symbol .. (config.show_numbers and ahead or "") - ):fg(config.ahead_remote_color) - - if ahead_label and behind_label then - return ui.Line({ - behind_label, - ahead_label, - }) - elseif ahead_label then - return ahead_label - elseif behind_label then - return behind_label - else - return nil - end - end - - --- @param data GitStatusData - function Header:render_stashes(data) - local stashes_count = data.stashes - - if not stashes_count then - return nil - end - - local stashes_label = config.stashes_symbol - - if config.show_numbers then - stashes_label = stashes_label .. stashes_count - end - - return ui.Span(stashes_label):fg(config.stashes_color) - end - - --- @param data GitStatusData - function Header:render_state(data) - local state_prefix = data.state_prefix - local unmerged_count = data.unmerged_count - local rebase_done = data.rebase_done - local rebase_total = data.rebase_total - - if state_prefix then - local state_label = "" - if config.show_state_prefix then - state_label = state_prefix - if - state_prefix == "rebase-i" - and config.show_numbers - and rebase_done - and rebase_total - then - state_label = state_label - .. " " - .. rebase_done - .. "/" - .. rebase_total - end - end - - local unmerged_label = "" - local symbol = "" - - if unmerged_count and unmerged_count > 0 then - symbol = " " .. config.state_symbol - if config.show_numbers then - unmerged_label = tostring(unmerged_count) - end - end - - return ui.Span(state_label .. symbol .. unmerged_label) - :fg(config.state_color) - end - return nil - end - - --- @param data GitStatusData - function Header:render_staged(data) - local staged = data.staged - - if staged then - local staged_label = config.staged_symbol - - if config.show_numbers then - local filtered_staged = staged:gsub("^[%s]*%b()[%s]*", "") - - local staged_count = 0 - for line in filtered_staged:gmatch("[^\r\n]+") do - if line:match("%S") then - staged_count = staged_count + 1 - end - end - - staged_label = staged_label .. staged_count - end - - return ui.Span(staged_label):fg(config.staged_color) - end - - return nil - end - - --- @param data GitStatusData - function Header:render_unstaged(data) - local unstaged = data.unstaged - - if unstaged then - local unstaged_label = config.unstaged_symbol - - if config.show_numbers then - local filtered_unstaged = - unstaged:gsub("^[%s]*%b()[\r\n]*", ""):gsub("^[%s]*%b()[\r\n]*", "") - - local unstaged_count = 0 - for line in filtered_unstaged:gmatch("[^\r\n]+") do - if line:match("%S") then - unstaged_count = unstaged_count + 1 - end - end - - unstaged_label = unstaged_label .. unstaged_count - end - - return ui.Span(unstaged_label):fg(config.unstaged_color) - end - - return nil - end - - --- @param data GitStatusData - function Header:render_untracked(data) - local untracked = data.untracked - - if untracked then - local untracked_label = config.untracked_symbol - - if config.show_numbers then - local filtered_untracked = untracked:gsub("^[%s]*%b()[\r\n]*", "") - local untracked_count = 0 - - for line in filtered_untracked:gmatch("[^\r\n]+") do - if line:match("%S") then - untracked_count = untracked_count + 1 - end - end - - untracked_label = untracked_label .. untracked_count - end - - return ui.Span(untracked_label):fg(config.untracked_color) - end - - return nil - end - - function Header:githead() - --- @type GitStatusData - local data = this.output - - if not data then - return ui.Line({}) - end - - local head = {} - - for _, key in ipairs(config.order) do - if key == "__spacer__" then - if head[#head] ~= " " then - table.insert(head, " ") - end - else - local fn = self["render_" .. key] - local is_shown = config["show_" .. key] - - if fn and is_shown then - local value = fn(self, data) - if value then - table.insert(head, value) - end - end - end - end - - return ui.Line(head) - end - - Header:children_add(Header.githead, 2000, Header.LEFT) - - local callback = function() - local cwd = cx.active.current.cwd - ya.emit("plugin", { - this._id, - ya.quote(tostring(cwd), true), - }) - end - - ps.sub("cd", callback) - ps.sub("rename", callback) - ps.sub("bulk", callback) - ps.sub("move", callback) - ps.sub("trash", callback) - ps.sub("delete", callback) - ps.sub("tab", callback) - end, - - entry = function(_, job) - local args = job.args or job - - ---@class GitStatusData - ---@field ahead_remote? integer - ---@field behind_remote? integer - ---@field branch? string - ---@field commit? string - ---@field rebase_done? integer - ---@field remote_branch? string - ---@field remote_repo? string - ---@field staged? string - ---@field stashes? integer - ---@field state_prefix? "bisect"|"cherry"|"merge"|"rebase-i"|"revert" - ---@field tag? string - ---@field unmerged_count? integer - ---@field unstaged? string - ---@field untracked? string - local data = {} - - --- @param status string - local get_behind_ahead_remote = function(status) - local diverged_ahead, diverged_behind = - status:match("have (%d+) and (%d+) different") - if diverged_ahead and diverged_behind then - data.behind_remote = tonumber(diverged_behind) - data.ahead_remote = tonumber(diverged_ahead) - else - local behind_remote = status:match("behind %S+ by (%d+) commits?") - local ahead_remote = status:match("ahead of %S+ by (%d+) commits?") - - data.behind_remote = tonumber(behind_remote) - data.ahead_remote = tonumber(ahead_remote) - end - end - - --- @param status string - local get_branch = function(status) - data.branch = status:match("On branch (%S+)") - end - - --- @param status string - local get_stashes = function(status) - data.stashes = tonumber(status:match("Your stash currently has (%d+)")) - end - - --- @param status string - local get_state = function(status) - local unmerged = status:match("Unmerged paths:%s*(.-)%s*\n\n") - if unmerged then - local filtered_unmerged = - unmerged:gsub("^[%s]*%b()[%s]*", ""):gsub("^[%s]*%b()[%s]*", "") - local count = 0 - for line in filtered_unmerged:gmatch("[^\r\n]+") do - if line:match("%S") then - count = count + 1 - end - end - data.unmerged_count = count - end - - if status:find("git merge") then - data.state_prefix = "merge" - elseif status:find("git cherry%-pick") then - data.state_prefix = "cherry" - elseif status:find("git rebase") then - data.state_prefix = "rebase-i" - local commands_done = status:match("%((%d+) commands? done%)") - if commands_done then - data.rebase_done = commands_done - if not data.unmerged_count then - data.rebase_total = commands_done - else - data.rebase_total = data.unmerged_count - end - end - elseif status:find("git revert") then - data.state_prefix = "revert" - elseif status:find("git bisect") then - data.state_prefix = "bisect" - end - end - - --- @param status string - local get_staged = function(status) - data.staged = status:match("Changes to be committed:%s*(.-)%s*\n\n") - end - - --- @param status string - local get_unstaged = function(status) - data.unstaged = - status:match("Changes not staged for commit:%s*(.-)%s*\n\n") - end - - --- @param status string - local get_untracked = function(status) - data.untracked = status:match("Untracked files:%s*(.-)%s*\n\n") - end - - local get_status = function() - local cmd = Command("git") - :arg({ - "status", - "--ignore-submodules=dirty", - "--branch", - "--show-stash", - "--ahead-behind", - }) - :cwd(args[1]) - :env("LANGUAGE", "en_US.UTF-8") - :stdout(Command.PIPED) - local cmd_output = cmd:output() - - if cmd_output then - local status = cmd_output.stdout - - get_branch(status) - get_behind_ahead_remote(status) - get_stashes(status) - get_state(status) - get_staged(status) - get_unstaged(status) - get_untracked(status) - end - end - - local get_remote_branch = function() - local cmd = Command("git") - :arg({ - "rev-parse", - "--abbrev-ref", - "--symbolic-full-name", - "@{upstream}", - }) - :cwd(args[1]) - :env("LANGUAGE", "en_US.UTF-8") - :stdout(Command.PIPED) - local cmd_output = cmd:output() - - if cmd_output then - local remote_branch = cmd_output.stdout - - data.remote_branch = - remote_branch:gsub("[\r\n]", ""):match("^[^/]+/(.+)") - data.remote_repo = remote_branch:gsub("[\r\n]", ""):match("^([^/]+)/") - end - end - - --- @param log string - local get_tag = function(log) - data.tag = log:match("tag: ([^, )]+)") - end - - --- @param log string - local get_commit = function(log) - data.commit = log:match("^commit%s+([a-f0-9]+)") - end - - local get_git_log = function() - local cmd = Command("git") - :arg({ "log", "--format=commit %h%d", "-n", "1" }) - :cwd(args[1]) - :env("LANGUAGE", "en_US.UTF-8") - :stdout(Command.PIPED) - local cmd_output = cmd:output() - - if cmd_output then - local log = cmd_output.stdout - - get_tag(log) - get_commit(log) - end - end - - get_status() - get_remote_branch() - get_git_log() - - save(args[1], data) - end, -} diff --git a/new_arch/static/yazi/plugins/kdeconnect-send/main.lua b/new_arch/static/yazi/plugins/kdeconnect-send/main.lua deleted file mode 100644 index d93e357..0000000 --- a/new_arch/static/yazi/plugins/kdeconnect-send/main.lua +++ /dev/null @@ -1,420 +0,0 @@ --- ~/.config/yazi/plugins/kdeconnect-send.yazi/main.lua - --- Function to run a command and get its output (Corrected Args Handling) -local function run_command(cmd_args) - ya.dbg("[kdeconnect-send] Running command: ", table.concat(cmd_args, " ")) - - -- Separate the command from the arguments - local command_name = cmd_args[1] - local arguments = {} - for i = 2, #cmd_args do - table.insert(arguments, cmd_args[i]) - end - ya.dbg("[kdeconnect-send] Command Name: ", command_name) - ya.dbg("[kdeconnect-send] Arguments Table: ", arguments) - - -- Build the command correctly - local cmd_builder = Command(command_name) - for _, arg_value in ipairs(arguments) do - cmd_builder:arg(arg_value) - end - - local child, err = cmd_builder:stdout(Command.PIPED):stderr(Command.PIPED):spawn() - - if err then - ya.err("[kdeconnect-send] Spawn error: ", err) - return nil, err - end - local output, wait_err = child:wait_with_output() - ya.dbg("[kdeconnect-send] wait_with_output finished.") - if wait_err then - ya.err("[kdeconnect-send] Wait error received: ", wait_err) - return nil, wait_err - end - if not output then - ya.err("[kdeconnect-send] Wait finished but output object is nil.") - return nil, Error("Command wait returned nil output") - end - ya.dbg("[kdeconnect-send] Command Status Success: ", output.status.success) - ya.dbg("[kdeconnect-send] Command Status Code: ", output.status.code) - ya.dbg("[kdeconnect-send] Command Stdout: ", output.stdout or "nil") - ya.dbg("[kdeconnect-send] Command Stderr: ", output.stderr or "nil") - - -- Note: The check for "0 devices found" might need adjustment depending on the output format of 'kdeconnect-cli -a' - if output.stderr and output.stderr:match("^0 devices found") then - ya.dbg("[kdeconnect-send] Command reported 0 devices found in stderr. Returning empty.") - return "", nil - end - -- Also check stdout for potential "no devices" messages if -a uses stdout differently - if output.stdout and output.stdout:match("no available devices found") then -- Example check, adjust if needed - ya.dbg("[kdeconnect-send] Command reported no available devices in stdout. Returning empty.") - return "", nil - end - - if not output.status.success then - local error_msg = "Command failed with code " - .. tostring(output.status.code or "unknown") - .. ": " - .. command_name - if output.stderr and #output.stderr > 0 then - error_msg = error_msg .. "\nStderr: " .. output.stderr - end - if output.stdout and #output.stdout > 0 then - error_msg = error_msg .. "\nStdout: " .. output.stdout - end - ya.err("[kdeconnect-send] Command execution failed: ", error_msg) - return nil, Error(error_msg) - end - return output.stdout, nil -end - --- Helper function to check if a URL exists in the values of the selected map -local function isSelected(url_to_check, selected_map) - if not url_to_check or not selected_map then - return false - end - local url_str_to_check = tostring(url_to_check) -- Compare string representations for consistency - for _, selected_url in pairs(selected_map) do - if selected_url and tostring(selected_url) == url_str_to_check then - return true - end - end - return false -end - -local get_selection_details = ya.sync(function() - ya.dbg("[kdeconnect-send] Entering get_selection_details sync block (Using cha via current.files)") - local selected_map = cx.active.selected - local current_files = cx.active.current.files - - if not selected_map or not current_files then - ya.err("[kdeconnect-send] cx.active.selected or cx.active.current.files is nil!") - return {}, false -- Return empty if essential data is missing - end - - -- Check if selection is empty early to potentially save iteration - local selection_empty = true - for _ in pairs(selected_map) do - selection_empty = false - break - end - if selection_empty then - ya.dbg("[kdeconnect-send] Selection map is empty.") - return {}, false - end - - local regular_files = {} - local directory_selected = false - - local success, err = pcall(function() - -- Iterate through the files in the current view - for i = 1, #current_files do - local file = current_files[i] -- Access fs::File object by index [cite: 15] - - if file and file.url and file.cha then - -- Check if this file's URL is in the selected map - if isSelected(file.url, selected_map) then - ya.dbg("[kdeconnect-send] File is selected: ", tostring(file.url)) - - -- Now check its cha.is_dir property - if file.cha.is_dir == true then - ya.dbg("[kdeconnect-send] Selected item is a directory (cha.is_dir): ", tostring(file.url)) - directory_selected = true - -- Optional: If finding one directory is enough, you could break the loop here - -- if you primarily care about blocking directory sends. - -- break - elseif file.cha.is_dir == false then - -- It's selected and not a directory, assume regular file - ya.dbg( - "[kdeconnect-send] Selected item is a regular file (cha.is_dir is false): ", - tostring(file.url) - ) - table.insert(regular_files, tostring(file.url)) - else - -- cha.is_dir might be nil (e.g., dummy file) - ya.warn( - "[kdeconnect-send] file.cha.is_dir is nil for selected file: ", - tostring(file.url), - ". Treating as potential directory." - ) - directory_selected = true -- Treat indeterminate as directory for safety - end - end - elseif file and file.url then - -- File exists but cha doesn't? Check if it's selected anyway. - if isSelected(file.url, selected_map) then - ya.warn( - "[kdeconnect-send] Selected file is missing 'cha' property: ", - tostring(file.url), - ". Treating as potential directory." - ) - directory_selected = true -- Treat files missing 'cha' as directories for safety - end - else - -- Handle cases where file or file.url might be nil within the loop if necessary - ya.warn("[kdeconnect-send] Encountered nil file or file.url at index: ", i) - end - end - end) - - if not success then - ya.err("[kdeconnect-send] Error during current_files iteration or isSelected check: ", err) - return {}, false -- Return empty on error - end - - -- Add a final check: if directory_selected is true, we might not need the regular_files list depending on use case. - -- The current implementation returns both. - - ya.dbg( - "[kdeconnect-send] Exiting get_selection_details sync block. Found regular files: ", - #regular_files, - " Directory selected (based on cha): ", - directory_selected - ) - return regular_files, directory_selected -end) - -local state_option = ya.sync(function(state, attr) - return state[attr] -end) - -return { - setup = function(state, options) - state.auto_select_single = options.auto_select_single - end, - - entry = function(_, job) - ya.dbg("[kdeconnect-send] Plugin entry point triggered.") - - -- Get configuration option for auto_select_single (default: true) - local auto_select_single = state_option("auto_select_single") - if auto_select_single == nil then - auto_select_single = true - end - ya.dbg("[kdeconnect-send] auto_select_single option: ", auto_select_single) - - -- 1. Get selection details (files and directory flag) using Reverted Sync Check - local selected_files, directory_selected = get_selection_details() - - -- Handle potential errors if get_selection_details couldn't determine selection - if not selected_files then - ya.err("[kdeconnect-send] Failed to get selection details.") - ya.notify({ title = "Plugin Error", content = "Could not read selection.", level = "error", timeout = 5 }) - return - end - - -- 2. *** REVERTED DIRECTORY CHECK LOGIC *** - ya.dbg("[kdeconnect-send] Checking directory_selected flag. Value: ", directory_selected) - if directory_selected then - ya.dbg("[kdeconnect-send] directory_selected is true (from sync check). Showing error and exiting.") - ya.notify({ - title = "KDE Connect Send", - content = "Cannot send directories. Please select regular files only.", - level = "error", - timeout = 7, - }) - return -- Exit if a directory was detected by the sync check - end - ya.dbg("[kdeconnect-send] directory_selected is false (from sync check). Proceeding.") - - -- 3. Proceed only if no directory was selected and files exist - ya.dbg("[kdeconnect-send] Checking number of regular files.") - local len = #selected_files - ya.dbg("[kdeconnect-send] Length of selected_files (#): ", len) - - if len == 0 then - -- This case now means either truly no regular files were selected, - -- or only directories were selected (and handled above), - -- or an error occurred in get_selection_details. - ya.dbg("[kdeconnect-send] Length is 0. No regular files to send.") - -- Check if directory_selected was false - means no files were selected at all. - if not directory_selected then - ya.notify({ - title = "KDE Connect Send", - content = "No regular files selected.", - level = "warn", - timeout = 5, - }) - end - return -- Exit cleanly - end - - -- If we got here, directory_selected is false and len > 0. - ya.dbg("[kdeconnect-send] Regular files found and no directories detected. Proceeding to device check.") - - -- 4. Get KDE Connect devices (using -a flag) - ya.dbg("[kdeconnect-send] Attempting to list KDE Connect devices with 'kdeconnect-cli -a'...") - local devices_output, err = run_command({ "kdeconnect-cli", "-a" }) -- Using -a flag - - if err then - ya.err("[kdeconnect-send] Failed to list devices command: ", tostring(err), ". Exiting.") - ya.notify({ - title = "KDE Connect Error", - content = "Failed to run kdeconnect-cli -a: " .. tostring(err), - level = "error", - timeout = 5, - }) - return - end - - if not devices_output or devices_output == "" then - ya.dbg("[kdeconnect-send] No available devices reported by kdeconnect-cli -a. Exiting silently.") - ya.notify({ - title = "KDE Connect Send", - content = "No available KDE Connect devices found.", - level = "warn", - timeout = 4, - }) - return - end - - -- 5. Parse devices (Adjust parsing for '-a' output format if needed) - -- *** IMPORTANT: The parsing logic below ASSUMES '-a' output is similar to '-l' *** - local devices = {} - local device_list_str = "Available Devices:\n" - local has_reachable = false -- Keep track if *any* device is found - ya.dbg("[kdeconnect-send] Parsing device list (assuming -a format is like -l)...") - local pattern = "^%-%s*(.+):%s*([%w_]+)%s*%((.-)%)$" -- Adjust if -a format differs - for line in devices_output:gmatch("[^\r\n]+") do - local name, id, status_line = line:match(pattern) - if id and name and status_line then - name = name:match("^%s*(.-)%s*$") - table.insert(devices, { id = id, name = name, status = status_line }) - device_list_str = device_list_str - .. "- " - .. name - .. " (ID: " - .. id - .. ") Status: " - .. status_line - .. "\n" - has_reachable = true - else - ya.warn("[kdeconnect-send] Could not parse device line with pattern: ", line) - end - end - - if not has_reachable then - ya.dbg( - "[kdeconnect-send] No devices found after parsing output of 'kdeconnect-cli -a'. Exiting silently. List:\n", - device_list_str - ) - return - end - - -- 6. Select Device (Using ya.which) - local device_id = nil - local target_device_name = "Unknown" - - if #devices == 1 and auto_select_single then - device_id = devices[1].id - target_device_name = devices[1].name - ya.dbg( - "[kdeconnect-send] Only one device found and auto-select-single is true: ", - target_device_name, - " (", - device_id, - "). Using automatically." - ) - else - ya.dbg("[kdeconnect-send] Prompting user with ya.which (multiple devices or auto-select-single is false)...") - - -- Prepare candidates for ya.which - local device_choices = {} - for i, device in ipairs(devices) do - table.insert(device_choices, { - on = tostring(i), - desc = string.format("%s (%s) - %s", device.name, device.id, device.status), -- Show status in choice - }) - end - - -- Add a cancel option - table.insert(device_choices, { on = "q", desc = "Cancel" }) - - -- Prompt the user to choose a device index - local selected_index = ya.which({ - cands = device_choices, - }) - ya.dbg("[kdeconnect-send] ya.which returned index: ", selected_index or "nil") - - -- Check if the user cancelled or selected the cancel option ('q') - if not selected_index or selected_index > #devices then - ya.warn("[kdeconnect-send] Device selection cancelled by user.") - ya.notify({ title = "KDE Connect Send", content = "Send cancelled.", level = "info", timeout = 3 }) - return -- *** This return terminates the plugin *** - end - - -- Get the device ID and name based on the selected index - device_id = devices[selected_index].id - target_device_name = devices[selected_index].name - ya.dbg( - "[kdeconnect-send] User selected device index ", - selected_index, - ": ", - target_device_name, - " (", - device_id, - ")" - ) - end - - -- 7. Proceed with selected device - ya.dbg( - "[kdeconnect-send] Proceeding with selected device: ", - device_id, - " (", - target_device_name, - "). Starting file send loop..." - ) - - -- 8. Send files (Using selected_files list) - local success_count = 0 - local error_count = 0 - for i, file_path in ipairs(selected_files) do -- Use selected_files here - ya.dbg( - "[kdeconnect-send] Sending file ", - i, - "/", - #selected_files, -- Use #selected_files - ": ", - file_path, - " to ", - target_device_name - ) - local _, send_err = run_command({ "kdeconnect-cli", "--share", file_path, "--device", device_id }) - if send_err then - error_count = error_count + 1 - ya.err("[kdeconnect-send] Failed to send file ", file_path, " to ", device_id, ": ", tostring(send_err)) - ya.notify({ - title = "KDE Connect Error", - content = "Failed to send: " .. file_path .. "\n" .. tostring(send_err), - level = "error", - timeout = 5, - }) - else - success_count = success_count + 1 - end - end - - -- 9. Final Notification - local final_message = - string.format("Sent %d/%d files to %s.", success_count, #selected_files, target_device_name) - local final_level = "info" - if error_count > 0 then - final_message = string.format( - "Sent %d/%d files to %s. %d failed.", - success_count, - #selected_files, - target_device_name, - error_count - ) - final_level = "warn" - end - if success_count == 0 and error_count > 0 then - final_level = "error" - end - ya.dbg("[kdeconnect-send] Send process completed. Success: ", success_count, " Failed: ", error_count) - ya.notify({ title = "KDE Connect Send Complete", content = final_message, level = final_level, timeout = 5 }) - ya.dbg("[kdeconnect-send] Plugin execution finished.") - end, -} diff --git a/new_arch/sys/static/grub/00_Arch_Btrfs b/new_arch/sys/static/grub/00_Arch_Btrfs deleted file mode 100644 index 55b87fa..0000000 --- a/new_arch/sys/static/grub/00_Arch_Btrfs +++ /dev/null @@ -1,38 +0,0 @@ -menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-42020426-a6e6-4f7a-9535-81d6df53c479' { - load_video - set gfxpayload=keep - insmod gzio - insmod part_gpt - insmod btrfs - search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 - echo 'Loading Linux linux ...' - linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 - echo 'Loading initial ramdisk ...' - initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img -} -submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { - menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { - load_video - set gfxpayload=keep - insmod gzio - insmod part_gpt - insmod btrfs - search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 - echo 'Loading Linux linux ...' - linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 - echo 'Loading initial ramdisk ...' - initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img - } - menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-42020426-a6e6-4f7a-9535-81d6df53c479' { - load_video - set gfxpayload=keep - insmod gzio - insmod part_gpt - insmod btrfs - search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 - echo 'Loading Linux linux ...' - linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 - echo 'Loading initial ramdisk ...' - initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux-fallback.img - } -} diff --git a/new_arch/sys/static/grub/99_UEFI_Firmware b/new_arch/sys/static/grub/99_UEFI_Firmware deleted file mode 100644 index 42fee81..0000000 --- a/new_arch/sys/static/grub/99_UEFI_Firmware +++ /dev/null @@ -1,3 +0,0 @@ -menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' { - fwsetup -} diff --git a/new_arch/tools.nix b/new_arch/tools.nix deleted file mode 100644 index d2b88e1..0000000 --- a/new_arch/tools.nix +++ /dev/null @@ -1,117 +0,0 @@ -{lib, ...}: let - contextModuleImport = { - imports, - subfolder, - context, - currentDirPath, - ... - } @ deps: - map (file: - (import ./${currentDirPath}/${subfolder}/${file}.nix { - inherit (deps) inputs config lib pkgs-list tools; - parentPathAsList = deps.currentPathAsList; - }).config.${ - context - }) - imports; - - inheritSettings = { - currentPathAsList, - imports, - settings, - }: let - first = lib.lists.last (lib.lists.take 1 currentPathAsList); - in - builtins.listToAttrs (map (setting: { - name = - if (currentPathAsList == []) - then setting - else first; - value = - if (currentPathAsList == []) - then settings.${setting} - else - (inheritSettings { - currentPathAsList = lib.lists.drop 1 currentPathAsList; - imports = imports; - settings = settings; - }); - }) - imports); - - inheritConfig = { - currentPathAsList, - config, - }: let - first = lib.lists.last (lib.lists.take 1 currentPathAsList); - in - if (currentPathAsList == []) - then config - else - inheritConfig { - currentPathAsList = lib.lists.drop 1 currentPathAsList; - config = config.${first}; - }; - - inheritOptions = { - currentPathAsList, - options, - }: let - first = lib.lists.last (lib.lists.take 1 currentPathAsList); - in (lib.listToAttrs [ - { - name = first; - value = - if (currentPathAsList == [first]) - then options - else - inheritOptions { - currentPathAsList = lib.lists.drop 1 currentPathAsList; - inherit options; - }; - } - ]); - contextualModule = { - options ? null, - imports ? null, - togglable ? true, - Config, - context, - ... - } @ deps: { - lib, - config, - ... - }: let - inherit (deps) subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; - in - ( - if options != null - then { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; - } - else { - } - ) - // ( - if imports != null - then { - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; - context = context; - }; - } - else { - } - ) - // { - config = - if togglable - then (lib.mkIf deps.cfg.enable Config) - else Config; - }; -in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule; -} diff --git a/programs/boot-dev/efibootmgr.nix b/programs/boot-dev/efibootmgr.nix deleted file mode 100644 index 17ac5d4..0000000 --- a/programs/boot-dev/efibootmgr.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - efibootmgr - ]; - }; -} diff --git a/programs/boot-dev/gparted.nix b/programs/boot-dev/gparted.nix deleted file mode 100644 index 448436f..0000000 --- a/programs/boot-dev/gparted.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - gparted - ]; - }; -} diff --git a/programs/boot-dev/grub.nix b/programs/boot-dev/grub.nix deleted file mode 100644 index eaa4ca0..0000000 --- a/programs/boot-dev/grub.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - grub2 - ]; - }; -} diff --git a/programs/boot-dev/os-prober.nix b/programs/boot-dev/os-prober.nix deleted file mode 100644 index 1eb2156..0000000 --- a/programs/boot-dev/os-prober.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - packages = Inputs.pkgs-list.nix.latest; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - os-prober - ]; - }; -} diff --git a/programs/browsers.nix b/programs/browsers.nix deleted file mode 100644 index 6b5a9a7..0000000 --- a/programs/browsers.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "browsers"; - subfolder = "browsers"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - firefox = lib.mkEnableOption "Enables and configures Firefox."; - chromium = lib.mkEnableOption "Enables and configures Chromium."; - }; - cfg = config.${name}; - settings = { - firefox.enable = cfg.enable && cfg.firefox; - chromium.enable = cfg.enable && cfg.chromium; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "firefox" - "chromium" - "zen" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - inherit (settings) firefox chromium; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/browsers/chromium.nix b/programs/browsers/chromium.nix deleted file mode 100644 index c27f133..0000000 --- a/programs/browsers/chromium.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "chromium"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Chromium."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - chromium - ]; - }; -} diff --git a/programs/browsers/firefox.nix b/programs/browsers/firefox.nix deleted file mode 100644 index 92d8c19..0000000 --- a/programs/browsers/firefox.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "firefox"; - cfg = config.${name}; - repos = "nur"; - branch = "unstable"; - packages = Inputs.pkgs-list.${repos}.${branch}; - bitwarden-ID = "446900e4-71c2-419f-a6a7-df9c091e268b"; - adBlocker-ID = "adblockultimate@adblockultimate.net"; - plasmaIntegration-ID = "plasma-browser-integration@kde.org"; - qwant-ID = "qwantcomforfirefox@jetpack"; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Firefox."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.firefox = { - enable = true; - profiles = { - default = { - id = 0; - name = "default"; - isDefault = true; - # search = { - # default = "qwant"; - # }; - settings = { - "privacy.donottrackheader.enabled" = true; - "privacy.trackingprotection.enabled" = true; - "privacy.trackingprotection.socialtracking.enabled" = true; - "privacy.partition.network_state.ocsp_cache" = true; - "browser.newtabpage.activity-stream.feeds.telemetry" = false; - "browser.newtabpage.activity-stream.telemetry" = false; - "browser.ping-centre.telemetry" = false; - "toolkit.telemetry.archive.enabled" = false; - "toolkit.telemetry.bhrPing.enabled" = false; - "toolkit.telemetry.enabled" = false; - "toolkit.telemetry.firstShutdownPing.enabled" = false; - "toolkit.telemetry.hybridContent.enabled" = false; - "toolkit.telemetry.newProfilePing.enabled" = false; - "toolkit.telemetry.reportingpolicy.firstRun" = false; - "toolkit.telemetry.shutdownPingSender.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.updatePing.enabled" = false; - "experiments.activeExperiment" = false; - "experiments.enabled" = false; - "experiments.supported" = false; - "network.allow-experiments" = false; - "services.sync.username" = "nehril012601@gmail.com"; - "browser.uiCustomization.state" = "{\"placements\":{\"unified-extensions-area\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"_${bitwarden-ID}_browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"vertical-tabs\"],\"currentVersion\":23,\"newElementCount\":1}"; - "browser.uiCustomization.navBarWhenVerticalTabs" = "[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"unified-extensions-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"]"; - "services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" = false; - "services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.formData" = true; - "sidebar.verticalTabs" = true; - "sidebar.visibility" = "expand-on-hover"; - "sidebar.installed.extensions" = "{${bitwarden-ID}}"; - "sidebar.main.tools" = "history,syncedtabs,bookmarks,{${bitwarden-ID}}"; - - "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; - "extensions.pocket.enabled" = false; - "extensions.pocket.api" = ""; - "extensions.pocket.oAuthConsumerKey" = ""; - "extensions.pocket.showHome" = false; - "extensions.pocket.site" = ""; - }; - }; - }; - policies = { - AutofillAddressEnabled = false; - AutofillCreditCardsEnabled = false; - DisableFirefoxStudies = true; - DisableFormHistory = true; - GenerativeAI = { - Enabled = false; - }; - TranslateEnabled = false; - DisableSafeMode = true; - DisableTelemetry = true; - Extensions = { - Locked = [ - bitwarden-ID - adBlocker-ID - plasmaIntegration-ID - qwant-ID - ]; - }; - HomePage = { - StartPage = "none"; - }; - # SanitizeOnShutdown = { - # Cache = true; - # Cookies = true; - # FormData = true; - # History = false; - # Sessions = false; - # SiteSettings = false; - # Downloads = false; - # }; - Cookies = { - Allow = [ - "https://www.youtube.com" - "https://www.google.com" - "https://www.facebook.com" - "https://web.whatsapp.com" - "https://chat.mistral.ai/chat" - ]; - }; - }; - }; - }; -} diff --git a/programs/browsers/multifirefox.nix b/programs/browsers/multifirefox.nix deleted file mode 100644 index 0e3b1b9..0000000 --- a/programs/browsers/multifirefox.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "firefox"; - subfolder = ""; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - programs.firefox = { - }; - }; - }; - }; -} diff --git a/programs/browsers/zen.nix b/programs/browsers/zen.nix deleted file mode 100644 index 6612e50..0000000 --- a/programs/browsers/zen.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "zen"; - cfg = config.${name}; - repos = "nur"; - branch = "unstable"; - packages = inputs.${repos}.${branch}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Zen Browser."; - }; - imports = []; - config = { - programs.zen-browser = { - enable = true; - # profiles = { - # default = { - # search = { - # default = "Qwant"; - # extensions = { - # packages = with packages.repos.rycee.firefox-addons; [ - # bitwarden - # plasma-integration - # ad-block-ultimate - # ]; - # }; - # }; - # }; - # }; - }; - }; -} diff --git a/programs/desktop.nix b/programs/desktop.nix deleted file mode 100644 index 30f6ad4..0000000 --- a/programs/desktop.nix +++ /dev/null @@ -1,85 +0,0 @@ -# { -# config, -# lib, -# inputs, -# ... -# } @ Inputs: let -# in -# { -# options = {}; -# imports = map (file: ./desktop/${file}) [ -# "plasma.nix" -# "rofi.nix" -# "klassy.nix" -# ]; -# config = {}; -# } -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "desktop"; - subfolder = "desktop"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma Desktop."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - rofi = lib.mkEnableOption "Enables and configures Rofi."; - }; - cfg = config.${name}; - settings = { - plasma.enable = cfg.enable && cfg.plasma; - klassy.enable = cfg.enable && cfg.klassy; - rofi.enable = cfg.enable && cfg.rofi; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "rofi" - "klassy" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) [ - "plasma" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) rofi plasma klassy; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) ["plasma"]; - config = lib.mkIf cfg.enable { - inherit (settings) plasma; - }; - }; - }; -} diff --git a/programs/desktop/kde.nix b/programs/desktop/kde.nix deleted file mode 100644 index 3e51a2e..0000000 --- a/programs/desktop/kde.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "kde"; - subfolder = "kde"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma Desktop."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - }; - cfg = config.${name}; - settings = { - plasma.enable = cfg.enable && cfg.plasma; - klassy.enable = cfg.enable && cfg.klassy; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "klassy" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) [ - "plasma" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) plasma klassy; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) [ - "plasma" - ]; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/desktop/kde/klassy.nix b/programs/desktop/kde/klassy.nix deleted file mode 100644 index e086326..0000000 --- a/programs/desktop/kde/klassy.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nur"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages.repos; [ - shadowrz.klassy-qt6 - ]; - }; -} diff --git a/programs/desktop/kde/plasma.nix b/programs/desktop/kde/plasma.nix deleted file mode 100644 index c4c3d80..0000000 --- a/programs/desktop/kde/plasma.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - programs.plasma = { - enable = true; - shortcuts = { - "services/com.mitchellh.ghostty.desktop" = { - _launch = [ - "Meta+Return" - "Ctrl+Alt+T" - ]; - new-window = ["Meta+Shift+Return"]; - }; - "ksmserver" = { - "Lock Session" = ["Meta+L"]; - "Sleep" = ["Meta+Shift+L"]; - }; - }; - workspace = { - colorScheme = "KlassyDark"; - windowDecorations = { - library = "org.kde.klassy"; - theme = "Klassy"; - }; - iconTheme = "Klassy Dark"; - theme = "klassy"; - }; - }; - # services.desktopManager.plasma6.enable = true; - }; -} diff --git a/programs/desktop/klassy.nix b/programs/desktop/klassy.nix deleted file mode 100644 index bf0ac9d..0000000 --- a/programs/desktop/klassy.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "klassy"; - main-repo = "nur"; - branch = "klassy"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Klassy."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages.repos; [ - shadowrz.klassy-qt6 - ]; - }; -} diff --git a/programs/desktop/plasma.nix b/programs/desktop/plasma.nix deleted file mode 100644 index 837c4f2..0000000 --- a/programs/desktop/plasma.nix +++ /dev/null @@ -1,200 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "plasma"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - programs.plasma = { - enable = true; - configFile.kdeglobals.General = { - TerminalApplication = "ghostty"; - TerminalService = "com.mitchellh.ghostty.desktop"; - }; - window-rules = [ - { - description = "vscode-desktop-file"; - match.window-class = "code code"; - apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic - } - { - description = "fix_LibreOffice_Icon"; - match.window-class = { - value = "libreoffice-draw"; - type = "substring"; - match-whole = true; - }; - apply.desktopfile = { - value = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/draw.desktop"; - apply = "initially"; - }; - } - ]; - shortcuts = { - "services/com.mitchellh.ghostty.desktop" = { - _launch = [ - "Meta+Return" - "Ctrl+Alt+T" - ]; - new-window = ["Meta+Shift+Return"]; - }; - "ksmserver" = { - "Lock Session" = ["Meta+L"]; - "Sleep" = ["Meta+Shift+L"]; - }; - }; - workspace = { - colorScheme = "KlassyDark"; - windowDecorations = { - library = "org.kde.klassy"; - theme = "Klassy"; - }; - iconTheme = "Klassy Dark"; - theme = "klassy"; - }; - panels = [ - { - location = "top"; - height = 27; - screen = "all"; - opacity = "adaptive"; - alignment = "center"; - widgets = [ - "org.kde.plasma.trash" - "org.kde.plasma.panelspacer" - "org.kde.plasma.digitalclock" - "org.kde.plasma.notifications" - "org.kde.plasma.panelspacer" - { - name = "org.kde.plasma.systemtray"; - config = {}; - } - "org.kde.plasma.volume" - "org.kde.plasma.networkmanagement" - "org.kde.plasma.battery" - { - name = "org.kde.plasma.lock_logout"; - # settings = { - # showLogoutScreen = true; - # }; - } - # { - # name = "luisbocanegra.panelspacer.extended"; - # config = { - # expand = true; - # }; - # } - # "org.kde.plasma.systemmonitor" - ]; - } - { - location = "bottom"; - height = 44; - screen = "all"; - opacity = "adaptive"; - alignment = "left"; - hiding = "dodgewindows"; - widgets = [ - "org.kde.plasma.kicker" - # "org.kde.plasma.kickerdash" - { - name = "org.kde.plasma.icontasks"; - config = { - taskDisplayMode = "IconsOnly"; - showOnlyCurrentDesktop = true; - groupTasks = true; - launchers = with packages; [ - "applications:systemsettings.desktop" - "applications:org.kde.dolphin.desktop" - "applications:firefox.desktop" - "applications:chromium-browser.desktop" - "applications:com.mitchellh.ghostty.desktop" - # "applications:code-url-handler.desktop" - "applications:code.desktop" - ]; - }; - } - "org.kde.plasma.showdesktop" - ]; - } - ]; - }; - home.packages = with packages.kdePackages; [ - sddm-kcm - qtvirtualkeyboard - breeze - filelight - dolphin-plugins - ]; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - services = { - desktopManager.plasma6.enable = true; - displayManager = { - sddm = { - enable = true; - wayland.enable = true; - settings = { - General = { - InputMethod = "qtvirtualkeyboard"; - }; - }; - autoNumlock = true; - }; - }; - }; - environment.plasma6.excludePackages = with packages.kdePackages; [ - elisa - konsole - discover - ]; - }; - }; - }; -} diff --git a/programs/desktop/rofi.nix b/programs/desktop/rofi.nix deleted file mode 100644 index 4dd8453..0000000 --- a/programs/desktop/rofi.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "rofi"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Rofi."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.rofi = { - enable = true; - terminal = "/${packages.ghostty}/bin/ghostty"; - theme = "Arc-Dark"; - modes = ["drun" "ssh" "run" "calc"]; - plugins = with packages; [ - rofi-calc - ]; - }; - }; -} diff --git a/programs/dev.nix b/programs/dev.nix deleted file mode 100644 index a5cf86d..0000000 --- a/programs/dev.nix +++ /dev/null @@ -1,119 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "dev"; - subfolder = "dev"; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - imports = [ - "nix" - "boot" - "vim" - "docker" - "ghostty" - ]; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - docker = lib.mkEnableOption "Enables and configures Docker."; - boot = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures boot related tools."; - }; - dev-nix = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures Nix related tools."; - }; - network = lib.mkEnableOption "Enables and configures Network tools."; - ghostty = lib.mkEnableOption "Enables and configures Ghostty."; - git = lib.mkEnableOption "Enables and configures Git."; - postman = lib.mkEnableOption "Enables and configures Postman."; - vscode = lib.mkEnableOption "Enables and configures VSCode."; - vim = lib.mkEnableOption "Enables and configures Vim."; - }; - cfg = config.${name}; - settings = { - docker.enable = cfg.enable && cfg.docker; - boot = { - enable = cfg.enable && cfg.boot.enable; - efibootmgr = cfg.enable && cfg.boot.efibootmgr; - grub = cfg.enable && cfg.boot.grub; - gparted = cfg.enable && cfg.boot.gparted; - os-prober = cfg.enable && cfg.boot.os-prober; - }; - dev-nix = { - enable = cfg.enable && cfg.dev-nix.enable; - nixd = cfg.enable && cfg.dev-nix.nixd; - alejandra = cfg.enable && cfg.dev-nix.alejandra; - }; - # network.enable = cfg.enable && cfg.network; - ghostty.enable = cfg.enable && cfg.ghostty; - git.enable = cfg.enable && cfg.git; - postman.enable = cfg.enable && cfg.postman; - vscode.enable = cfg.enable && cfg.vscode; - vim.enable = cfg.enable && cfg.vim; - }; - Common = { - inherit (settings) docker vim; - }; - Home = { - inherit (settings) dev-nix ghostty git postman vscode boot; - home.packages = with packages; [ - python3 - nmap # for network - netcat-openbsd # for network - ]; - }; - System = { - }; - - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - # "ghostty" - "vscode" - "postman" - "git" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.Home) - imports; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix deleted file mode 100644 index f45d354..0000000 --- a/programs/dev/boot.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "boot"; - subfolder = "boot"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - imports = [ - "efibootmgr" - "grub" - "gparted" - "os-prober" - ]; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - efibootmgr = lib.mkEnableOption "Enables and configures efibootmgr."; - grub = lib.mkEnableOption "Enables and configures GRUB."; - gparted = lib.mkEnableOption "Enables and configures GParted."; - os-prober = lib.mkEnableOption "Enables and configures os-prober."; - }; - settings = { - efibootmgr.enable = cfg.enable && cfg.efibootmgr; - grub.enable = cfg.enable && cfg.grub; - gparted.enable = cfg.enable && cfg.gparted; - os-prober.enable = cfg.enable && cfg.os-prober; - }; - inheritedSettings = tools.inheritSettings { - inherit pathNames imports settings; - }; - Common = { - inherit (settings) efibootmgr grub gparted os-prober; - }; - Home = { - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.Home) - imports; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/boot/efibootmgr.nix b/programs/dev/boot/efibootmgr.nix deleted file mode 100644 index 9a9f418..0000000 --- a/programs/dev/boot/efibootmgr.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "efibootmgr"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures EFIBOOTMGR."; - }; - Common = { - }; - Home = { - home.packages = with packages; [ - efibootmgr - ]; - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/boot/gparted.nix b/programs/dev/boot/gparted.nix deleted file mode 100644 index e561da2..0000000 --- a/programs/dev/boot/gparted.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "gparted"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures GParted."; - }; - Common = { - }; - Home = { - home.packages = with packages; [ - gparted - ]; - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/boot/grub.nix b/programs/dev/boot/grub.nix deleted file mode 100644 index 11253e2..0000000 --- a/programs/dev/boot/grub.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "grub"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures GRUB."; - }; - Common = { - }; - Home = { - home.packages = with packages; [ - grub2 - ]; - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/boot/os-prober.nix b/programs/dev/boot/os-prober.nix deleted file mode 100644 index 23d31f0..0000000 --- a/programs/dev/boot/os-prober.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "os-prober"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures OS Prober."; - }; - Common = { - }; - Home = { - home.packages = with packages; [ - os-prober - ]; - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = - lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/docker.nix b/programs/dev/docker.nix deleted file mode 100644 index f14904b..0000000 --- a/programs/dev/docker.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "docker"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - docker - docker-compose - lazydocker - ]; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable { - virtualisation.docker.enable = true; - }; - }; - }; -} diff --git a/programs/dev/ghostty.nix b/programs/dev/ghostty.nix deleted file mode 100644 index 0ffe8af..0000000 --- a/programs/dev/ghostty.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "ghostty"; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable { - programs.ghostty = { - enable = true; - enableZshIntegration = true; - installVimSyntax = true; - settings = { - working-directory = "$HOME"; - gtk-single-instance = false; - window-inherit-working-directory = true; - }; - }; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = - lib.mkIf cfg.enable { - }; - }; - }; -} diff --git a/programs/dev/git.nix b/programs/dev/git.nix deleted file mode 100644 index 302a18d..0000000 --- a/programs/dev/git.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "git"; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Git."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.git = { - enable = true; - settings = { - user = { - name = "MatthieuGomes"; - email = "matthieu.gomes@ensea.fr"; - }; - init.defaultBranch = "main"; - }; - }; - }; -} diff --git a/programs/dev/network.nix b/programs/dev/network.nix deleted file mode 100644 index c8d0f99..0000000 --- a/programs/dev/network.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "network"; - subfolder = "network"; - repo = "nix"; - branch = "stable"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - imports = with packages; [ - netcat-openbsd - nmap - ]; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix deleted file mode 100644 index d2adc5d..0000000 --- a/programs/dev/nix.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "dev-nix"; - subfolder = "nix"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - imports = ["alejandra" "nixd"]; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - nixd = lib.mkEnableOption "Enables and configures Nixd."; - alejandra = lib.mkEnableOption "Enables and configures Alejandra."; - }; - cfg = config.${name}; - settings = { - nixd.enable = cfg.enable && cfg.nixd; - alejandra.enable = cfg.enable && cfg.alejandra; - }; - inheritedSettings = tools.inheritSettings { - inherit pathNames imports settings; - }; - Common = { - inherit (settings) nixd alejandra; - }; - Home = { - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.Home) - imports; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config lib pkgs-list tools; - inherit (Inputs) inputs; - oldPathNames = pathNames; - }).config.System) - imports; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/nix/alejandra.nix b/programs/dev/nix/alejandra.nix deleted file mode 100644 index 4837961..0000000 --- a/programs/dev/nix/alejandra.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "alejandra"; - main-repo = "nix"; - branch = "latest"; - packages = pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Alejandra."; - }; - Common = { - }; - Home = { - home.packages = with packages; [ - alejandra - ]; - }; - System = { - }; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/nix/nixd.nix b/programs/dev/nix/nixd.nix deleted file mode 100644 index 9be42ce..0000000 --- a/programs/dev/nix/nixd.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - config, - lib, - pkgs-list, - oldPathNames, - tools, - ... -} @ Inputs: let - name = "nixd"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - cfg = config.${name}; - Common = {}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Nixd."; - }; - Home = { - home.packages = with packages; [ - nixd - ]; - }; - System = {}; - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable HomeConfig; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = - lib.mkIf cfg.enable SystemConfig; - }; - }; -} diff --git a/programs/dev/postman.nix b/programs/dev/postman.nix deleted file mode 100644 index 80400ef..0000000 --- a/programs/dev/postman.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "postman"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Postman."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - postman - ]; - }; -} diff --git a/programs/dev/vim.nix b/programs/dev/vim.nix deleted file mode 100644 index d45443c..0000000 --- a/programs/dev/vim.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "vim"; - main-repo = "nix"; - branch = "latest"; - cfg = config.${name}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Vim."; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable { - programs.vim = { - enable = true; - defaultEditor = true; - settings = { - copyindent = true; - number = true; - }; - }; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = - lib.mkIf cfg.enable { - }; - }; - }; -} diff --git a/programs/dev/vscode.nix b/programs/dev/vscode.nix deleted file mode 100644 index a5f1af0..0000000 --- a/programs/dev/vscode.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "vscode"; - main-repo = "nix"; - branch = "unstable"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures VSCode."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.vscode = { - enable = true; - package = packages.vscode; - mutableExtensionsDir = true; - # profiles.Default={ - - # }; - }; - }; -} diff --git a/programs/misc.nix b/programs/misc.nix deleted file mode 100644 index 7a95bb1..0000000 --- a/programs/misc.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "misc"; - subfolder = "misc"; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - ledger = lib.mkEnableOption "Enables and configures Ledger support."; - bambu-studio = lib.mkEnableOption "Enables and configures Bambu Studio."; - bitwarden = lib.mkEnableOption "Enables and configures Bitwarden."; - fastfetch = lib.mkEnableOption "Enables and configures Fastfetch."; - iso-image-writer = lib.mkEnableOption "Enables and configures ISO Image Writer."; - kdeconnect = lib.mkEnableOption "Enables and configures KDE Connect."; - vesktop = lib.mkEnableOption "Enables and configures Vesktop."; - }; - cfg = config.${name}; - settings = { - ledger.enable = cfg.enable && cfg.ledger; - bambu-studio.enable = cfg.enable && cfg.bambu-studio; - bitwarden.enable = cfg.enable && cfg.bitwarden; - fastfetch.enable = cfg.enable && cfg.fastfetch; - iso-image-writer.enable = cfg.enable && cfg.iso-image-writer; - kdeconnect.enable = cfg.enable && cfg.kdeconnect; - vesktop.enable = cfg.enable && cfg.vesktop; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "bambu-studio" - "bitwarden" - "fastfetch" - "iso-image-writer" - "vesktop" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) ["ledger" "kdeconnect"]; - config = lib.mkIf cfg.enable { - inherit (settings) ledger bambu-studio bitwarden fastfetch iso-image-writer vesktop kdeconnect; - home.packages = with packages; [ - vlc - ]; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) ["ledger" "kdeconnect"]; - config = lib.mkIf cfg.enable { - inherit (settings) ledger kdeconnect; - }; - }; - }; -} diff --git a/programs/misc/bambu-studio.nix b/programs/misc/bambu-studio.nix deleted file mode 100644 index 83c021c..0000000 --- a/programs/misc/bambu-studio.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "bambu-studio"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - bambu-studio - ]; - }; -} diff --git a/programs/misc/bitwarden.nix b/programs/misc/bitwarden.nix deleted file mode 100644 index 6ccb076..0000000 --- a/programs/misc/bitwarden.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "bitwarden"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Bitwarden."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - bitwarden-desktop - bitwarden-cli - ]; - }; -} diff --git a/programs/misc/fastfetch.nix b/programs/misc/fastfetch.nix deleted file mode 100644 index 0946d7d..0000000 --- a/programs/misc/fastfetch.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "fastfetch"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Fastfetch."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - fastfetch - ]; - }; -} diff --git a/programs/misc/iso-image-writer.nix b/programs/misc/iso-image-writer.nix deleted file mode 100644 index e67a040..0000000 --- a/programs/misc/iso-image-writer.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "iso-image-writer"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ISO Image Writer."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - kdePackages.isoimagewriter - ]; - }; -} diff --git a/programs/misc/kdeconnect.nix b/programs/misc/kdeconnect.nix deleted file mode 100644 index b15fd59..0000000 --- a/programs/misc/kdeconnect.nix +++ /dev/null @@ -1,83 +0,0 @@ -# { -# config, -# lib, -# inputs, -# ... -# } @ Inputs: let -# name = "kdeconnect"; -# in -# { -# options = {}; -# imports = []; -# config = { -# services.${name}.enable = true; -# }; -# } -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "kdeconnect"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - services.${name}.enable = true; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - networking.firewall = rec { - allowedTCPPortRanges = [ - { - from = 1714; - to = 1764; - } - ]; # FOR KDE CONNECT TODO: find a better way to do this - allowedUDPPortRanges = allowedTCPPortRanges; - }; - }; - }; - }; -} diff --git a/programs/misc/ledger.nix b/programs/misc/ledger.nix deleted file mode 100644 index edaf4a2..0000000 --- a/programs/misc/ledger.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "ledger"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - home.packages = with packages; [ - ledger-live-desktop - ]; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - hardware.ledger.enable = true; - }; - }; - }; -} diff --git a/programs/misc/vesktop.nix b/programs/misc/vesktop.nix deleted file mode 100644 index f57cb6f..0000000 --- a/programs/misc/vesktop.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "vesktop"; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}."; - }; - imports = []; - config = { - programs.${name} = { - enable = true; - }; - }; -} diff --git a/programs/office.nix b/programs/office.nix deleted file mode 100644 index 167c9c5..0000000 --- a/programs/office.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "office"; - subfolder = "office"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - libreoffice = lib.mkEnableOption "Enables and configures LibreOffice."; - qualculate = lib.mkEnableOption "Enables and configures Qualculate."; - }; - cfg = config.${name}; - settings = { - libreoffice = { - enable = cfg.enable && cfg.libreoffice; - }; - qualculate = { - enable = cfg.enable && cfg.qualculate; - }; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "libreoffice" - "qualculate" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - inherit (settings) libreoffice qualculate; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings) libreoffice qualculate; - }; - }; - }; -} diff --git a/programs/office/libreoffice.nix b/programs/office/libreoffice.nix deleted file mode 100644 index 95cad4d..0000000 --- a/programs/office/libreoffice.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "libreoffice"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - libreoffice - ]; - }; -} diff --git a/programs/office/qualculate.nix b/programs/office/qualculate.nix deleted file mode 100644 index e8210a0..0000000 --- a/programs/office/qualculate.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options.qualculate = { - enable = lib.mkEnableOption "Enables and configures Qualculate."; - }; - imports = []; - config = lib.mkIf config.qualculate.enable { - home.packages = with packages; [ - qalculate-qt - ]; - }; -} diff --git a/programs/shells.nix b/programs/shells.nix deleted file mode 100644 index fe0686a..0000000 --- a/programs/shells.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - folder = "shells"; - aliases = { - nrs = "sudo nixos-rebuild switch"; - ls = "ls --color -a"; - ".." = "cd .."; - }; - options.shells = { - enable = lib.mkEnableOption "Enable various shell configurations."; - zsh = lib.mkEnableOption "Enable Zsh shell configuration."; - }; - cfg = config.shells; - settings = { - zsh = { - enable = cfg.enable && cfg.zsh; - aliases = aliases; - }; - }; -in { - config = { - Home = { - config, - lib, - ... - }: { - inherit options; - imports = [ - (import ./${folder}/zsh.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home - ]; - config = { - inherit (settings) zsh; - }; - }; - System = { - config, - lib, - ... - }: { - inherit options; - imports = [ - (import ./${folder}/zsh.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System - ]; - config = { - inherit (settings) zsh; - }; - }; - }; -} diff --git a/programs/shells/zsh.nix b/programs/shells/zsh.nix deleted file mode 100644 index 07b1492..0000000 --- a/programs/shells/zsh.nix +++ /dev/null @@ -1,108 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -}: let - name = "zsh"; - subfolder = "zsh"; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enable Zsh shell and its plugins."; - oh-my-zsh.enable = lib.mkEnableOption "Enable Oh My Zsh framework."; - aliases = lib.mkOption { - type = lib.types.attrsOf lib.types.str; - description = "An attribute set of shell aliases to define."; - default = {}; - }; - }; - cfg = config.${name}; - settings = { - oh-my-zsh.enable = cfg.enable && cfg.oh-my-zsh.enable; - fzf.enable = cfg.enable && cfg.fzf.enable; - yazi.enable = cfg.enable; - }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: ./${subfolder}/${file}) [ - "oh-my-zsh.nix" - "yazi.nix" - "fzf.nix" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) oh-my-zsh fzf yazi; - programs.zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - history = { - path = "$HOME/.zsh_history"; - size = 10000; - ignoreAllDups = true; - }; - defaultKeymap = "emacs"; - plugins = [ - { - name = "powerlevel10k"; - src = packages.zsh-powerlevel10k; - file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - } - { - name = "fzf-tab"; - src = "${packages.zsh-fzf-tab}/share/fzf-tab"; - } - ]; - initContent = '' - - source ~/.p10k.zsh - - zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' - zstyle ':completion:*' menu no - zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath' - - function y() { - local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd - yazi "$@" --cwd-file="$tmp" - IFS= read -r -d \'\' cwd < "$tmp" - [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" - rm -f -- "$tmp" - } - - function myip(){ - echo $(ip addr show wlp0s20f3 | grep -oP 'inet \K[^/]+') - } - - ''; - - # zstyle ':completion:*' menu no - - shellAliases = - cfg.aliases - // { - yazi = "y"; - myip = "myip"; - }; - }; - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable { - programs.zsh.enable = true; - }; - }; - }; -} diff --git a/programs/shells/zsh/fzf.nix b/programs/shells/zsh/fzf.nix deleted file mode 100644 index 7030f5c..0000000 --- a/programs/shells/zsh/fzf.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - latest = Inputs.pkgs-list.nix.latest; -in { - options = { - fzf = { - enable = lib.mkEnableOption "Enables and configures fzf for zsh."; - }; - }; - imports = []; - config = { - programs.fzf = { - enable = true; - enableZshIntegration = true; - }; - home.packages = with latest; [ - zsh-fzf-tab - ]; - }; -} diff --git a/programs/shells/zsh/oh-my-zsh.nix b/programs/shells/zsh/oh-my-zsh.nix deleted file mode 100644 index b8aa78a..0000000 --- a/programs/shells/zsh/oh-my-zsh.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let -in { - options = { - oh-my-zsh.enable = lib.mkEnableOption "Enable Oh My Zsh framework."; - }; - config = lib.mkIf config.oh-my-zsh.enable { - programs.zsh.oh-my-zsh = { - enable = true; - plugins = [ - "git" - "sudo" - ]; - }; - }; -} diff --git a/programs/shells/zsh/yazi.nix b/programs/shells/zsh/yazi.nix deleted file mode 100644 index 4506a19..0000000 --- a/programs/shells/zsh/yazi.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - latest = Inputs.latest; -in { - options = { - yazi.enable = lib.mkEnableOption "Enable Yazi file manager for Zsh."; - }; - imports = []; - config = lib.mkIf config.yazi.enable { - programs.yazi = { - enable = true; - plugins = with latest.yaziPlugins; - { - inherit chmod; - inherit sudo; - inherit git; - inherit rich-preview; - } - // { - "githead" = ../../../static/yazi/plugins/githead; - "kdeconnect-send" = ../../../static/yazi/plugins/kdeconnect-send; - }; - settings = { - mgr = { - show_hidden = true; - show_symlink = true; - }; - }; - keymap = { - mgr = { - prepend_keymap = [ - { - on = [""]; - run = "plugin kdeconnect-send"; - desc = "Send selected files via KDE Connect"; - } - ]; - }; - }; - initLua = ../../../static/yazi/init.lua; - }; - }; -} diff --git a/progs.nix b/progs.nix index ae8482e..e2c56f9 100644 --- a/progs.nix +++ b/progs.nix @@ -3,196 +3,95 @@ lib, pkgs-list, tools, + baseSettings, + parentPathAsList ? [], ... -} @ Inputs: let +}: let + ###### # user defined name = "progs"; - subfolder = "programs"; + subfolder = "progs"; repo = "nix"; branch = "latest"; + imports = [ + "dev" + "misc" + "shells" + "office" + "desktop" + "browsers" + ]; + options = null; + newSettings.${name} = { + }; + settings = (lib.recursiveUpdate baseSettings newSettings).${name}; + ###### # computed packages = pkgs-list.${repo}.${branch}; - oldPathNames = []; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - shells = { - enable = lib.mkEnableOption "Enable various shell configurations."; - zsh = lib.mkEnableOption "Enable Zsh shell configuration."; - }; - misc = { - enable = lib.mkEnableOption "Enables and configures miscellaneous programs."; - ledger = lib.mkEnableOption "Enables and configures Ledger support."; - bambu-studio = lib.mkEnableOption "Enables and configures Bambu Studio."; - bitwarden = lib.mkEnableOption "Enables and configures Bitwarden."; - fastfetch = lib.mkEnableOption "Enables and configures Fastfetch."; - iso-image-writer = lib.mkEnableOption "Enables and configures ISO Image Writer."; - kdeconnect = lib.mkEnableOption "Enables and configures KDE Connect."; - vesktop = lib.mkEnableOption "Enables and configures Vesktop."; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { }; - office = { - enable = lib.mkEnableOption "Enables and configures office applications."; - libreoffice = lib.mkEnableOption "Enables and configures LibreOffice."; - qualculate = lib.mkEnableOption "Enables and configures Qualculate."; + Common = + inheritedSettings + // { }; - dev = { - enable = lib.mkEnableOption "Enables and configures development tools."; - docker = lib.mkEnableOption "Enables and configures Docker."; - boot = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures boot related tools."; + ###### # user defined + Home = { + programs = { + thunderbird = { + enable = true; + profiles = {}; }; - dev-nix = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures Nix related tools."; - }; - network = lib.mkEnableOption "Enables and configures Network tools."; - vim = lib.mkEnableOption "Enables and configures Vim."; - vscode = lib.mkEnableOption "Enables and configures VSCode."; - postman = lib.mkEnableOption "Enables and configures Postman."; - git = lib.mkEnableOption "Enables and configures Git."; - ghostty = lib.mkEnableOption "Enables and configures Ghostty."; - }; - browsers = { - enable = lib.mkEnableOption "Enables and configures web browsers."; - firefox = lib.mkEnableOption "Enables and configures Firefox."; - chromium = lib.mkEnableOption "Enables and configures Chromium."; - }; - desktop = { - enable = lib.mkEnableOption "Enables and configures desktop environment."; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - rofi = lib.mkEnableOption "Enables and configures Rofi."; }; }; - cfg = config.${name}; - settings = { - dev = { - enable = cfg.enable; - docker = cfg.enable && cfg.dev.docker; - boot = rec { - enable = cfg.enable && cfg.dev.boot.enable; - efibootmgr = enable && cfg.dev.boot.efibootmgr; - grub = enable && cfg.dev.boot.grub; - gparted = enable && cfg.dev.boot.gparted; - os-prober = enable && cfg.dev.boot.os-prober; - }; - dev-nix = rec { - enable = cfg.enable && cfg.dev.dev-nix.enable; - nixd = enable && cfg.dev.dev-nix.nixd; - alejandra = enable && cfg.dev.dev-nix.alejandra; - }; - network = cfg.enable && cfg.dev.network; - git = cfg.enable && cfg.dev.git; - postman = cfg.enable && cfg.dev.postman; - vscode = cfg.enable && cfg.dev.vscode; - vim = cfg.enable && cfg.dev.vim; - ghostty = cfg.enable && cfg.dev.ghostty; + System = { + environment.systemPackages = with packages; [ + mangohud + plocate + mlocate + xdotool + protonup-ng + meld + wget + ]; + environment.sessionVariables = { + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; }; - shells = rec { - enable = cfg.shells.enable; - zsh = enable && cfg.shells.zsh; - }; - misc = rec { - enable = cfg.misc.enable; - ledger = enable && cfg.misc.ledger; - bambu-studio = enable && cfg.misc.bambu-studio; - bitwarden = enable && cfg.misc.bitwarden; - fastfetch = enable && cfg.misc.fastfetch; - iso-image-writer = enable && cfg.misc.iso-image-writer; - kdeconnect = enable && cfg.misc.kdeconnect; - vesktop = enable && cfg.misc.vesktop; - }; - office = rec { - enable = cfg.office.enable; - libreoffice = enable && cfg.office.libreoffice; - qualculate = enable && cfg.office.qualculate; - }; - browsers = rec { - enable = cfg.browsers.enable; - firefox = enable && cfg.browsers.firefox; - chromium = enable && cfg.browsers.chromium; - }; - desktop = rec { - enable = cfg.desktop.enable; - plasma = enable && cfg.desktop.plasma; - klassy = enable && cfg.desktop.klassy; - rofi = enable && cfg.desktop.rofi; + programs = { + gamemode.enable = true; + steam = { + enable = true; + gamescopeSession.enable = true; + }; + virt-manager.enable = true; }; }; + ###### # computed + HomeConfig = Common // Home; + SystemConfig = Common // System; in { + # FIXME : find a way to make more uniform with the other modules config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - # "desktop" - # "boot-dev" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - inherit tools; - oldPathNames = pathNames; - }).config.Home) ["dev" "misc" "shells" "office" "browsers" "desktop"]; - config = lib.mkIf cfg.enable { - inherit (settings) dev shells misc office browsers desktop; - programs = { - thunderbird = { - enable = true; - profiles = {}; - }; - }; - # meld = { - # enable = true; - # }; - }; + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated + inherit options imports; # user defined + togglable = false; + context = "Home"; + Config = HomeConfig; }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - oldPathNames = pathNames; - inherit tools; - }).config.System) ["dev" "misc" "shells" "office" "desktop"]; - config = lib.mkIf cfg.enable { - inherit (settings) dev shells misc office desktop; - environment.systemPackages = with packages; [ - mangohud - plocate - mlocate - xdotool - protonup-ng - meld - wget - ]; - environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; - }; - programs = { - gamemode.enable = true; - steam = { - enable = true; - gamescopeSession.enable = true; - }; - virt-manager.enable = true; - }; - }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated + inherit options imports; # user defined + togglable = false; + context = "System"; + Config = SystemConfig; }; }; } diff --git a/new_arch/progs/browsers.nix b/progs/browsers.nix similarity index 100% rename from new_arch/progs/browsers.nix rename to progs/browsers.nix diff --git a/new_arch/progs/browsers/chromium.nix b/progs/browsers/chromium.nix similarity index 100% rename from new_arch/progs/browsers/chromium.nix rename to progs/browsers/chromium.nix diff --git a/new_arch/progs/browsers/firefox.nix b/progs/browsers/firefox.nix similarity index 100% rename from new_arch/progs/browsers/firefox.nix rename to progs/browsers/firefox.nix diff --git a/new_arch/progs/browsers/statics/prefs.js b/progs/browsers/statics/prefs.js similarity index 100% rename from new_arch/progs/browsers/statics/prefs.js rename to progs/browsers/statics/prefs.js diff --git a/new_arch/progs/browsers/statics/test.json b/progs/browsers/statics/test.json similarity index 100% rename from new_arch/progs/browsers/statics/test.json rename to progs/browsers/statics/test.json diff --git a/new_arch/progs/browsers/statics/toolbar.json b/progs/browsers/statics/toolbar.json similarity index 100% rename from new_arch/progs/browsers/statics/toolbar.json rename to progs/browsers/statics/toolbar.json diff --git a/new_arch/progs/browsers/zen.nix b/progs/browsers/zen.nix similarity index 100% rename from new_arch/progs/browsers/zen.nix rename to progs/browsers/zen.nix diff --git a/new_arch/progs/desktop.nix b/progs/desktop.nix similarity index 100% rename from new_arch/progs/desktop.nix rename to progs/desktop.nix diff --git a/new_arch/progs/desktop/klassy.nix b/progs/desktop/klassy.nix similarity index 100% rename from new_arch/progs/desktop/klassy.nix rename to progs/desktop/klassy.nix diff --git a/new_arch/progs/desktop/plasma.nix b/progs/desktop/plasma.nix similarity index 100% rename from new_arch/progs/desktop/plasma.nix rename to progs/desktop/plasma.nix diff --git a/new_arch/progs/desktop/rofi.nix b/progs/desktop/rofi.nix similarity index 100% rename from new_arch/progs/desktop/rofi.nix rename to progs/desktop/rofi.nix diff --git a/new_arch/progs/dev.nix b/progs/dev.nix similarity index 100% rename from new_arch/progs/dev.nix rename to progs/dev.nix diff --git a/new_arch/progs/dev/boot.nix b/progs/dev/boot.nix similarity index 100% rename from new_arch/progs/dev/boot.nix rename to progs/dev/boot.nix diff --git a/new_arch/progs/dev/boot/efibootmgr.nix b/progs/dev/boot/efibootmgr.nix similarity index 100% rename from new_arch/progs/dev/boot/efibootmgr.nix rename to progs/dev/boot/efibootmgr.nix diff --git a/new_arch/progs/dev/boot/gparted.nix b/progs/dev/boot/gparted.nix similarity index 100% rename from new_arch/progs/dev/boot/gparted.nix rename to progs/dev/boot/gparted.nix diff --git a/new_arch/progs/dev/boot/grub.nix b/progs/dev/boot/grub.nix similarity index 100% rename from new_arch/progs/dev/boot/grub.nix rename to progs/dev/boot/grub.nix diff --git a/new_arch/progs/dev/boot/os-prober.nix b/progs/dev/boot/os-prober.nix similarity index 100% rename from new_arch/progs/dev/boot/os-prober.nix rename to progs/dev/boot/os-prober.nix diff --git a/new_arch/progs/dev/docker.nix b/progs/dev/docker.nix similarity index 100% rename from new_arch/progs/dev/docker.nix rename to progs/dev/docker.nix diff --git a/new_arch/progs/dev/ghostty.nix b/progs/dev/ghostty.nix similarity index 100% rename from new_arch/progs/dev/ghostty.nix rename to progs/dev/ghostty.nix diff --git a/new_arch/progs/dev/git.nix b/progs/dev/git.nix similarity index 100% rename from new_arch/progs/dev/git.nix rename to progs/dev/git.nix diff --git a/new_arch/progs/dev/network.nix b/progs/dev/network.nix similarity index 100% rename from new_arch/progs/dev/network.nix rename to progs/dev/network.nix diff --git a/new_arch/progs/dev/nix.nix b/progs/dev/nix.nix similarity index 100% rename from new_arch/progs/dev/nix.nix rename to progs/dev/nix.nix diff --git a/new_arch/progs/dev/nix/alejandra.nix b/progs/dev/nix/alejandra.nix similarity index 100% rename from new_arch/progs/dev/nix/alejandra.nix rename to progs/dev/nix/alejandra.nix diff --git a/new_arch/progs/dev/nix/nixd.nix b/progs/dev/nix/nixd.nix similarity index 100% rename from new_arch/progs/dev/nix/nixd.nix rename to progs/dev/nix/nixd.nix diff --git a/new_arch/progs/dev/postman.nix b/progs/dev/postman.nix similarity index 100% rename from new_arch/progs/dev/postman.nix rename to progs/dev/postman.nix diff --git a/new_arch/progs/dev/vim.nix b/progs/dev/vim.nix similarity index 100% rename from new_arch/progs/dev/vim.nix rename to progs/dev/vim.nix diff --git a/new_arch/progs/dev/vscode.nix b/progs/dev/vscode.nix similarity index 100% rename from new_arch/progs/dev/vscode.nix rename to progs/dev/vscode.nix diff --git a/new_arch/progs/misc.nix b/progs/misc.nix similarity index 100% rename from new_arch/progs/misc.nix rename to progs/misc.nix diff --git a/new_arch/progs/misc/bambu-studio.nix b/progs/misc/bambu-studio.nix similarity index 100% rename from new_arch/progs/misc/bambu-studio.nix rename to progs/misc/bambu-studio.nix diff --git a/new_arch/progs/misc/bitwarden.nix b/progs/misc/bitwarden.nix similarity index 100% rename from new_arch/progs/misc/bitwarden.nix rename to progs/misc/bitwarden.nix diff --git a/new_arch/progs/misc/fastfetch.nix b/progs/misc/fastfetch.nix similarity index 100% rename from new_arch/progs/misc/fastfetch.nix rename to progs/misc/fastfetch.nix diff --git a/new_arch/progs/misc/iso-image-writer.nix b/progs/misc/iso-image-writer.nix similarity index 100% rename from new_arch/progs/misc/iso-image-writer.nix rename to progs/misc/iso-image-writer.nix diff --git a/new_arch/progs/misc/kdeconnect.nix b/progs/misc/kdeconnect.nix similarity index 100% rename from new_arch/progs/misc/kdeconnect.nix rename to progs/misc/kdeconnect.nix diff --git a/new_arch/progs/misc/ledger.nix b/progs/misc/ledger.nix similarity index 100% rename from new_arch/progs/misc/ledger.nix rename to progs/misc/ledger.nix diff --git a/new_arch/progs/misc/vesktop.nix b/progs/misc/vesktop.nix similarity index 100% rename from new_arch/progs/misc/vesktop.nix rename to progs/misc/vesktop.nix diff --git a/new_arch/progs/office.nix b/progs/office.nix similarity index 100% rename from new_arch/progs/office.nix rename to progs/office.nix diff --git a/new_arch/progs/office/libreoffice.nix b/progs/office/libreoffice.nix similarity index 100% rename from new_arch/progs/office/libreoffice.nix rename to progs/office/libreoffice.nix diff --git a/new_arch/progs/office/qualculate.nix b/progs/office/qualculate.nix similarity index 100% rename from new_arch/progs/office/qualculate.nix rename to progs/office/qualculate.nix diff --git a/new_arch/progs/shells.nix b/progs/shells.nix similarity index 100% rename from new_arch/progs/shells.nix rename to progs/shells.nix diff --git a/new_arch/progs/shells/zsh.nix b/progs/shells/zsh.nix similarity index 100% rename from new_arch/progs/shells/zsh.nix rename to progs/shells/zsh.nix diff --git a/new_arch/progs/shells/zsh/fzf.nix b/progs/shells/zsh/fzf.nix similarity index 100% rename from new_arch/progs/shells/zsh/fzf.nix rename to progs/shells/zsh/fzf.nix diff --git a/new_arch/progs/shells/zsh/oh-my-zsh.nix b/progs/shells/zsh/oh-my-zsh.nix similarity index 100% rename from new_arch/progs/shells/zsh/oh-my-zsh.nix rename to progs/shells/zsh/oh-my-zsh.nix diff --git a/new_arch/progs/shells/zsh/static/.p10k.zsh b/progs/shells/zsh/static/.p10k.zsh similarity index 100% rename from new_arch/progs/shells/zsh/static/.p10k.zsh rename to progs/shells/zsh/static/.p10k.zsh diff --git a/new_arch/progs/shells/zsh/static/yazi/init.lua b/progs/shells/zsh/static/yazi/init.lua similarity index 100% rename from new_arch/progs/shells/zsh/static/yazi/init.lua rename to progs/shells/zsh/static/yazi/init.lua diff --git a/new_arch/progs/shells/zsh/static/yazi/plugins/githead/main.lua b/progs/shells/zsh/static/yazi/plugins/githead/main.lua similarity index 100% rename from new_arch/progs/shells/zsh/static/yazi/plugins/githead/main.lua rename to progs/shells/zsh/static/yazi/plugins/githead/main.lua diff --git a/new_arch/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua b/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua similarity index 100% rename from new_arch/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua rename to progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua diff --git a/new_arch/progs/shells/zsh/yazi.nix b/progs/shells/zsh/yazi.nix similarity index 100% rename from new_arch/progs/shells/zsh/yazi.nix rename to progs/shells/zsh/yazi.nix diff --git a/new_arch/sys.nix b/sys.nix similarity index 100% rename from new_arch/sys.nix rename to sys.nix diff --git a/new_arch/sys/bootloader.nix b/sys/bootloader.nix similarity index 100% rename from new_arch/sys/bootloader.nix rename to sys/bootloader.nix diff --git a/new_arch/sys/filesystems.nix b/sys/filesystems.nix similarity index 100% rename from new_arch/sys/filesystems.nix rename to sys/filesystems.nix diff --git a/new_arch/sys/filesystems/btrfs.nix b/sys/filesystems/btrfs.nix similarity index 100% rename from new_arch/sys/filesystems/btrfs.nix rename to sys/filesystems/btrfs.nix diff --git a/new_arch/sys/filesystems/exfat.nix b/sys/filesystems/exfat.nix similarity index 100% rename from new_arch/sys/filesystems/exfat.nix rename to sys/filesystems/exfat.nix diff --git a/new_arch/sys/filesystems/ntfs.nix b/sys/filesystems/ntfs.nix similarity index 100% rename from new_arch/sys/filesystems/ntfs.nix rename to sys/filesystems/ntfs.nix diff --git a/new_arch/sys/hardware.nix b/sys/hardware.nix similarity index 100% rename from new_arch/sys/hardware.nix rename to sys/hardware.nix diff --git a/new_arch/sys/hardware/nvidia.nix b/sys/hardware/nvidia.nix similarity index 100% rename from new_arch/sys/hardware/nvidia.nix rename to sys/hardware/nvidia.nix diff --git a/new_arch/sys/hardware/printer.nix b/sys/hardware/printer.nix similarity index 100% rename from new_arch/sys/hardware/printer.nix rename to sys/hardware/printer.nix diff --git a/new_arch/sys/hardware/sound.nix b/sys/hardware/sound.nix similarity index 100% rename from new_arch/sys/hardware/sound.nix rename to sys/hardware/sound.nix diff --git a/new_arch/sys/lang.nix b/sys/lang.nix similarity index 100% rename from new_arch/sys/lang.nix rename to sys/lang.nix diff --git a/new_arch/sys/networking.nix b/sys/networking.nix similarity index 100% rename from new_arch/sys/networking.nix rename to sys/networking.nix diff --git a/new_arch/static/grub/00_Arch_Btrfs b/sys/static/grub/00_Arch_Btrfs similarity index 100% rename from new_arch/static/grub/00_Arch_Btrfs rename to sys/static/grub/00_Arch_Btrfs diff --git a/new_arch/static/grub/99_UEFI_Firmware b/sys/static/grub/99_UEFI_Firmware similarity index 100% rename from new_arch/static/grub/99_UEFI_Firmware rename to sys/static/grub/99_UEFI_Firmware diff --git a/new_arch/sys/users.nix b/sys/users.nix similarity index 100% rename from new_arch/sys/users.nix rename to sys/users.nix diff --git a/system.nix b/system.nix deleted file mode 100644 index 287b884..0000000 --- a/system.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - inputs, - system, - pkgs-list, - ... -} @ Inputs: let - name = "system"; - repo = "nix"; - branch = "unstable"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options.${name} = { - version = lib.mkOption { - type = lib.types.str; - default = "25.11"; - description = "The system state version."; - }; - }; - imports = map (file: ./system/${file}) [ - "bootloader.nix" - "lang.nix" - "users.nix" - "hardware.nix" - "networking.nix" - "filesystems.nix" - ]; - config = { - system.stateVersion = config.system.version; - nix.settings.experimental-features = ["nix-command" "flakes"]; - boot.kernelPackages = packages.linuxPackages_latest; - }; -} diff --git a/system/bootloader.nix b/system/bootloader.nix deleted file mode 100644 index 3810f15..0000000 --- a/system/bootloader.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = {}; - imports = []; - config = { - boot.loader = { - grub = { - enable = true; - devices = ["nodev"]; - efiSupport = true; - useOSProber = true; - extraEntries = '' - ${builtins.readFile "${../static/grub/00_Arch_Btrfs}"} - ${builtins.readFile "${../static/grub/99_UEFI_Firmware}"} - ''; - }; - efi = { - canTouchEfiVariables = true; - }; - }; - }; -} diff --git a/system/filesystems.nix b/system/filesystems.nix deleted file mode 100644 index 16a6cfa..0000000 --- a/system/filesystems.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "filesystems"; - folder = "filesystems"; - # cfg = config.${name}; - # settings = { - # ntfs.enable = cfg.enable && cfg.ntfs; - # exfat.enable = cfg.enable && cfg.exfat; - # btrfs.enable = cfg.enable && cfg.btrfs; - # }; -in { - # options.${name} = { - # enable = lib.mkEnableOption "Enables and configures ${name}."; - # ntfs = lib.mkEnableOption "Enables and configures NTFS filesystem support."; - # exfat = lib.mkEnableOption "Enables and configures exFAT filesystem support."; - # btrfs = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; - # }; - imports = map (file: ./${folder}/${file}) [ - "exfat.nix" - "btrfs.nix" - "ntfs.nix" - ]; - config = { - # inherit (settings) ntfs exfat btrfs; - }; -} diff --git a/system/filesystems/btrfs.nix b/system/filesystems/btrfs.nix deleted file mode 100644 index 7b22b44..0000000 --- a/system/filesystems/btrfs.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "btrfs"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - # cfg = config.${name}; -in { - # options.${name} = { - # enable = lib.mkEnableOption "Enables and configures Btrfs."; - # }; - imports = []; - config = { - #lib.mkIf cfg.enable - environment.systemPackages = with packages; [ - btrfs-progs - ]; - boot.supportedFilesystems = { - btrfs = true; - }; - }; -} diff --git a/system/filesystems/exfat.nix b/system/filesystems/exfat.nix deleted file mode 100644 index 7982c47..0000000 --- a/system/filesystems/exfat.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "exfat"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - # cfg = config.${name}; -in { - # options = { - # enable = lib.mkEnableOption "Enables and configures exFAT."; - # }; - imports = []; - config = { - #lib.mkIf cfg.enable - environment.systemPackages = with packages; [ - exfat - exfatprogs - ]; - boot.supportedFilesystems = { - exfat = true; - }; - }; -} diff --git a/system/filesystems/ntfs.nix b/system/filesystems/ntfs.nix deleted file mode 100644 index e19165c..0000000 --- a/system/filesystems/ntfs.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "ntfs"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - # cfg = config.${name}; -in { - # options = { - # enable = lib.mkEnableOption "Enables and configures NTFS."; - # }; - imports = []; - config = { - # lib.mkIf cfg.enable - environment.systemPackages = with packages; [ - ntfs3g - ntfsprogs - ]; - boot.supportedFilesystems = { - ntfs = true; - }; - }; -} diff --git a/system/hardware.nix b/system/hardware.nix deleted file mode 100644 index 8b509f4..0000000 --- a/system/hardware.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options = {}; - imports = map (file: ./hardware/${file}) [ - "nvidia.nix" - "printer.nix" - "sound.nix" - ]; - config = { - nvidia.enable = false; - # Enable Ledger hardware wallet support, seeing if better options are possible - hardware = { - # ledger.enable = true; - bluetooth.enable = true; - }; - # not sure where to put it yet TODO : FIX - services.libinput.enable = true; - services.blueman.enable = true; - # services.xserver.videoDrivers = - environment.systemPackages = with packages; [ - lshw - iw - usbutils - ]; - }; -} diff --git a/system/hardware/nvidia.nix b/system/hardware/nvidia.nix deleted file mode 100644 index 1ce2244..0000000 --- a/system/hardware/nvidia.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = { - nvidia.enable = lib.mkEnableOption "Enable NVIDIA proprietary driver support."; - }; - imports = []; - config = lib.mkIf config.nvidia.enable { - hardware = { - graphics = { - enable32Bit = true; - enable = true; - }; - nvidia = { - package = config.boot.kernelPackages.nvidiaPackages.latest; - open = true; - modesetting.enable = true; - nvidiaSettings = true; - prime = { - intelBusId = "PCI:0@0:2:0"; - nvidiaBusId = "PCI:0@1:0:0"; - offload = { - enable = true; - enableOffloadCmd = true; - }; - sync.enable = false; - reverseSync.enable = false; - # allowExternalGpus = false; - }; - }; - }; - services.xserver.videoDrivers = [ - "nvidia" - "modesetting" - ]; - }; -} diff --git a/system/hardware/printer.nix b/system/hardware/printer.nix deleted file mode 100644 index e906876..0000000 --- a/system/hardware/printer.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - packages = Inputs.pkgs-list.nix.latest; -in { - options = { - }; - imports = []; - config = { - services.printing.enable = true; - environment.systemPackages = with packages; [ - cnijfilter2 - ]; - }; -} diff --git a/system/hardware/sound.nix b/system/hardware/sound.nix deleted file mode 100644 index 0c950ce..0000000 --- a/system/hardware/sound.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "pipewire"; -in { - options = {}; - imports = []; - config = { - services.${name} = { - enable = true; - pulse.enable = true; - }; - }; -} diff --git a/system/lang.nix b/system/lang.nix deleted file mode 100644 index e72695f..0000000 --- a/system/lang.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: let -in { - options = {}; - imports = []; - config = { - time.timeZone = "America/Toronto"; - i18n = { - defaultLocale = "en_US.UTF-8"; - extraLocaleSettings = { - LC_TIME = "fr_FR.UTF-8"; - }; - }; - console.keyMap = "fr"; - services.xserver.xkb.layout = "fr"; - }; -} diff --git a/system/networking.nix b/system/networking.nix deleted file mode 100644 index d14a290..0000000 --- a/system/networking.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options = {}; - imports = []; - config = { - networking = { - hostName = "NixOs"; - networkmanager = { - enable = true; - plugins = with packages; [ - networkmanager-openvpn - ]; - }; - - firewall = rec { - enable = true; - # interfaces."wlp0s20f3".allowedTCPPorts = [10022]; - allowedTCPPorts = [10022 22]; - allowedTCPPortRanges = [ - { - from = 1714; - to = 1764; - } - ]; # FOR KDE CONNECT TODO: find a better way to do this - allowedUDPPortRanges = allowedTCPPortRanges; # FOR KDE CONNECT - }; - # TODO : fix proxy settings - # proxy.default = "http://user:password@proxy:port/"; - # proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - }; - services = { - openssh.enable = true; - }; ## TODO : FIX OPENSSH - environment.systemPackages = with packages; [ - openvpn - iproute2 - bridge-utils - ]; - }; -} diff --git a/system/users.nix b/system/users.nix deleted file mode 100644 index 767084d..0000000 --- a/system/users.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - latest = Inputs.pkgs-list.nix.latest; -in { - options = {}; - imports = []; - config = { - users = { - defaultUserShell = latest.zsh; - users = { - matthieu = { - description = "Moi"; - isNormalUser = true; - group = "users"; - extraGroups = [ - "wheel" - "docker" - "libvirtd" - ]; # Enable ‘sudo’ for the user. - createHome = true; - home = "/home/matthieu"; - /* - openssh.authorizedKeys.keys = [ - "" - ]; - */ - }; - }; - groups = { - libvirtd.members = ["matthieu"]; - }; - }; - }; -} diff --git a/templates/bundle-import.nix b/templates/bundle-import.nix deleted file mode 100644 index 9e63cf8..0000000 --- a/templates/bundle-import.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - folder = ""; -in { - options = {}; - imports = map (file: ./${folder}/${file}) []; - config = {}; -} diff --git a/templates/home/pkg.nix b/templates/home/pkg.nix deleted file mode 100644 index 8179f57..0000000 --- a/templates/home/pkg.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = ""; - branch = ""; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - ]; - }; -} diff --git a/templates/home/program.nix b/templates/home/program.nix deleted file mode 100644 index d2ee50a..0000000 --- a/templates/home/program.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = ""; -in { - options = {}; - imports = []; - config = { - programs.${name} = { - - }; - }; -} diff --git a/templates/module.nix b/templates/module.nix deleted file mode 100644 index 784f78e..0000000 --- a/templates/module.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = {}; - imports = []; - config = {}; -} diff --git a/templates/service.nix b/templates/service.nix deleted file mode 100644 index 55f79d7..0000000 --- a/templates/service.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = ""; -in { - options = {}; - imports = []; - config = { - services.${name} = { - - }; - }; -} diff --git a/templates/system/pkg.nix b/templates/system/pkg.nix deleted file mode 100644 index e291949..0000000 --- a/templates/system/pkg.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = ""; - branch = ""; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - environment.systemPackages = with packages; [ - ]; - }; -} diff --git a/templates/universal/multi.nix b/templates/universal/multi.nix deleted file mode 100644 index 222c2b4..0000000 --- a/templates/universal/multi.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = ""; - subfolder = ""; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/tools.nix b/tools.nix index a69ef55..d2b88e1 100644 --- a/tools.nix +++ b/tools.nix @@ -1,152 +1,117 @@ {lib, ...}: let - importWithAndContextArgs = { - file, - context, - args, - }: - ( - import file - args - ).config.${ - context - }; - - importWithArgs = { - file, - args, - }: - (import file args).config; - - contextArgsImport = { - file, + contextModuleImport = { + imports, + subfolder, context, - args, - }: - (importWithArgs { - inherit file args; - }).${ - context - }; + currentDirPath, + ... + } @ deps: + map (file: + (import ./${currentDirPath}/${subfolder}/${file}.nix { + inherit (deps) inputs config lib pkgs-list tools; + parentPathAsList = deps.currentPathAsList; + }).config.${ + context + }) + imports; - defaultContextArgsImport = { - file, - context, - args, - }: { - file, - context, - }: ( - contextArgsImport file context args - ); - contextualModule = { - name, - config, - lib, - options, - import-list ? [], - context, - }: let - cfg = config.${name}; - in { - config = lib.mkIf cfg.enable { - inherit options; - imports = import-list; - }; - }; inheritSettings = { - pathNames, + currentPathAsList, imports, settings, }: let - first = lib.lists.last (lib.lists.take 1 pathNames); + first = lib.lists.last (lib.lists.take 1 currentPathAsList); in builtins.listToAttrs (map (setting: { name = - if (pathNames == []) + if (currentPathAsList == []) then setting else first; value = - if (pathNames == []) + if (currentPathAsList == []) then settings.${setting} else (inheritSettings { - pathNames = lib.lists.drop 1 pathNames; + currentPathAsList = lib.lists.drop 1 currentPathAsList; imports = imports; settings = settings; }); }) imports); - universalModule = { - lib, + inheritConfig = { + currentPathAsList, config, - pkgs-list, - inputs, - name, - subfolder ? null, - options, - imports ? [], - settings ? {}, - oldPathNames ? [name], - Home ? {}, - System ? {}, - } @ Inputs: let - cfg = config.${name}; - pathNames = oldPathNames ++ [name]; - fullPath = lib.concatStringsSep "." pathNames; - options.${fullPath} = options; - settings.${fullPath} = settings; - in { - config = { - Home = { - lib, - config, - ... - }: { - inherit options; - imports = - if Inputs.imports - then - map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.Home) - Inputs.imports - else []; - config = - lib.mkIf cfg.enable (inheritSettings { - pathNames = pathNames; - imports = imports; - settings = settings; - }) - // Home; - }; - System = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.System) - imports; - config = - lib.mkIf cfg.enable (inheritSettings { - pathNames = pathNames; - imports = imports; - settings = settings; - }) - // System; + }: let + first = lib.lists.last (lib.lists.take 1 currentPathAsList); + in + if (currentPathAsList == []) + then config + else + inheritConfig { + currentPathAsList = lib.lists.drop 1 currentPathAsList; + config = config.${first}; }; + + inheritOptions = { + currentPathAsList, + options, + }: let + first = lib.lists.last (lib.lists.take 1 currentPathAsList); + in (lib.listToAttrs [ + { + name = first; + value = + if (currentPathAsList == [first]) + then options + else + inheritOptions { + currentPathAsList = lib.lists.drop 1 currentPathAsList; + inherit options; + }; + } + ]); + contextualModule = { + options ? null, + imports ? null, + togglable ? true, + Config, + context, + ... + } @ deps: { + lib, + config, + ... + }: let + inherit (deps) subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; + in + ( + if options != null + then { + options = tools.inheritOptions { + inherit currentPathAsList options; + }; + } + else { + } + ) + // ( + if imports != null + then { + imports = tools.contextModuleImport { + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; + context = context; + }; + } + else { + } + ) + // { + config = + if togglable + then (lib.mkIf deps.cfg.enable Config) + else Config; }; - }; in { - inherit importWithArgs contextArgsImport defaultContextArgsImport inheritSettings universalModule; - # multiContextModule; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule; } From eeec89841ab062c97a6b1ba272965ba1c01d4b0d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sat, 18 Apr 2026 18:11:34 -0400 Subject: [PATCH 139/236] refactor(static) : removed static files folder from root --- static/grub/00_Arch_Btrfs | 38 -- static/grub/99_UEFI_Firmware | 3 - static/yazi/init.lua | 1 - static/yazi/plugins/githead/main.lua | 598 ------------------- static/yazi/plugins/kdeconnect-send/main.lua | 420 ------------- 5 files changed, 1060 deletions(-) delete mode 100644 static/grub/00_Arch_Btrfs delete mode 100644 static/grub/99_UEFI_Firmware delete mode 100644 static/yazi/init.lua delete mode 100644 static/yazi/plugins/githead/main.lua delete mode 100644 static/yazi/plugins/kdeconnect-send/main.lua diff --git a/static/grub/00_Arch_Btrfs b/static/grub/00_Arch_Btrfs deleted file mode 100644 index 55b87fa..0000000 --- a/static/grub/00_Arch_Btrfs +++ /dev/null @@ -1,38 +0,0 @@ -menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-42020426-a6e6-4f7a-9535-81d6df53c479' { - load_video - set gfxpayload=keep - insmod gzio - insmod part_gpt - insmod btrfs - search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 - echo 'Loading Linux linux ...' - linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 - echo 'Loading initial ramdisk ...' - initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img -} -submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { - menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-42020426-a6e6-4f7a-9535-81d6df53c479' { - load_video - set gfxpayload=keep - insmod gzio - insmod part_gpt - insmod btrfs - search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 - echo 'Loading Linux linux ...' - linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 - echo 'Loading initial ramdisk ...' - initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux.img - } - menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-42020426-a6e6-4f7a-9535-81d6df53c479' { - load_video - set gfxpayload=keep - insmod gzio - insmod part_gpt - insmod btrfs - search --no-floppy --fs-uuid --set=root 42020426-a6e6-4f7a-9535-81d6df53c479 - echo 'Loading Linux linux ...' - linux /@/boot/vmlinuz-linux root=UUID=42020426-a6e6-4f7a-9535-81d6df53c479 rw rootflags=subvol=@ loglevel=8 - echo 'Loading initial ramdisk ...' - initrd /@/boot/intel-ucode.img /@/boot/initramfs-linux-fallback.img - } -} diff --git a/static/grub/99_UEFI_Firmware b/static/grub/99_UEFI_Firmware deleted file mode 100644 index 42fee81..0000000 --- a/static/grub/99_UEFI_Firmware +++ /dev/null @@ -1,3 +0,0 @@ -menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' { - fwsetup -} diff --git a/static/yazi/init.lua b/static/yazi/init.lua deleted file mode 100644 index 3ae68e5..0000000 --- a/static/yazi/init.lua +++ /dev/null @@ -1 +0,0 @@ --- require("githead"):setup() \ No newline at end of file diff --git a/static/yazi/plugins/githead/main.lua b/static/yazi/plugins/githead/main.lua deleted file mode 100644 index 6c7f74d..0000000 --- a/static/yazi/plugins/githead/main.lua +++ /dev/null @@ -1,598 +0,0 @@ ----@diagnostic disable: undefined-global - -local save = ya.sync(function(this, cwd, output) - if cwd:match("%.git[/\\]") or cwd:match("%.git$") then - this.output = nil - return - end - if cx.active.current.cwd == Url(cwd) then - this.output = output - ui.render() - end -end) - -return { - setup = function(this, options) - options = options or {} - - local config = { - order = options.order or { - "__spacer__", - "branch", - "remote_branch", - "__spacer__", - "tag", - "__spacer__", - "commit", - "__spacer__", - "behind_ahead_remote", - "__spacer__", - "stashes", - "__spacer__", - "state", - "__spacer__", - "staged", - "__spacer__", - "unstaged", - "__spacer__", - "untracked", - }, - - show_numbers = options.show_numbers == nil and true - or options.show_numbers, - - show_branch = options.show_branch == nil and true or options.show_branch, - branch_prefix = options.branch_prefix or "", - branch_color = options.branch_color or "blue", - branch_symbol = options.branch_symbol or "", - branch_borders = options.branch_borders or "", - - show_remote_branch = options.show_remote_branch == nil and true - or options.show_remote_branch, - always_show_remote_branch = options.always_show_remote_branch == nil - and false - or options.always_show_remote_branch, - always_show_remote_repo = options.always_show_remote_repo == nil - and false - or options.always_show_remote_repo, - remote_branch_prefix = options.remote_branch_prefix or ":", - remote_branch_color = options.remote_branch_color or "bright magenta", - - show_tag = options.show_tag == nil and true or options.show_tag, - always_show_tag = options.always_show_tag == nil and false - or options.always_show_tag, - tag_color = options.tag_color or "magenta", - tag_symbol = options.tag_symbol == nil and "#" or options.tag_symbol, - - show_commit = options.show_commit == nil and true or options.show_commit, - always_show_commit = options.always_show_commit == nil and false - or options.always_show_commit, - commit_color = options.commit_color or "bright magenta", - commit_symbol = options.commit_symbol == nil and "@" - or options.commit_symbol, - - show_behind_ahead_remote = options.show_behind_ahead_remote == nil - and true - or options.show_behind_ahead_remote, - behind_remote_color = options.behind_remote_color or "bright magenta", - behind_remote_symbol = options.behind_remote_symbol or "⇣", - ahead_remote_color = options.ahead_remote_color or "bright magenta", - ahead_remote_symbol = options.ahead_remote_symbol or "⇡", - - show_stashes = options.show_stashes == nil and true - or options.show_stashes, - stashes_color = options.stashes_color or "bright magenta", - stashes_symbol = options.stashes_symbol or "$", - - show_state = options.show_state == nil and true or options.show_state, - show_state_prefix = options.show_state_prefix == nil and true - or options.show_state_prefix, - state_color = options.state_color or "red", - state_symbol = options.state_symbol or "~", - - show_staged = options.show_staged == nil and true or options.show_staged, - staged_color = options.staged_color or "bright yellow", - staged_symbol = options.staged_symbol or "+", - - show_unstaged = options.show_unstaged == nil and true - or options.show_unstaged, - unstaged_color = options.unstaged_color or "bright yellow", - unstaged_symbol = options.unstaged_symbol or "!", - - show_untracked = options.show_untracked == nil and true - or options.show_untracked, - untracked_color = options.untracked_color or "bright blue", - untracked_symbol = options.untracked_symbol or "?", - } - - --- @param data GitStatusData - function Header:render_branch(data) - local branch = data.branch - - if not branch then - return nil - end - - local left_border = config.branch_borders:sub(1, 1) - local right_border = config.branch_borders:sub(2, 2) - - local branch_string = "" - - if config.branch_symbol == "" then - branch_string = left_border .. branch .. right_border - else - branch_string = left_border - .. config.branch_symbol - .. branch - .. right_border - end - - local branch_prefix = config.branch_prefix == "" and "" - or config.branch_prefix .. " " - - return ui.Line({ - ui.Span(branch_prefix), - ui.Span(branch_string):fg(config.branch_color), - }) - end - - --- @param data GitStatusData - function Header:render_remote_branch(data) - local branch = data.branch - local remote_branch = data.remote_branch - local remote_repo = data.remote_repo - - if not remote_branch then - return nil - end - - local show_remote = config.always_show_remote_branch - or branch ~= remote_branch - if not show_remote then - return nil - end - - local remote_branch_label = config.always_show_remote_repo - and (remote_repo .. "/" .. remote_branch) - or remote_branch - - return ui.Line({ - ui.Span(config.remote_branch_prefix), - ui.Span(remote_branch_label):fg(config.remote_branch_color), - }) - end - - --- @param data GitStatusData - function Header:render_tag(data) - local branch = data.branch - local tag = data.tag - - if not tag then - return nil - end - - if not branch or config.always_show_tag then - return ui.Line({ - ui.Span(config.tag_symbol), - ui.Span(tag):fg(config.tag_color), - }) - end - end - - --- @param data GitStatusData - function Header:render_commit(data) - local branch = data.branch - local tag = data.tag - local commit = data.commit - - if not commit then - return nil - end - - if (not branch and not tag) or config.always_show_commit then - return ui.Line({ - ui.Span(config.commit_symbol), - ui.Span(commit):fg(config.commit_color), - }) - end - end - - --- @param data GitStatusData - function Header:render_behind_ahead_remote(data) - local behind = data.behind_remote - local ahead = data.ahead_remote - - local behind_label = behind - and behind > 0 - and ui.Span( - config.behind_remote_symbol .. (config.show_numbers and behind or "") - ):fg(config.behind_remote_color) - - local ahead_label = ahead - and ahead > 0 - and ui.Span( - config.ahead_remote_symbol .. (config.show_numbers and ahead or "") - ):fg(config.ahead_remote_color) - - if ahead_label and behind_label then - return ui.Line({ - behind_label, - ahead_label, - }) - elseif ahead_label then - return ahead_label - elseif behind_label then - return behind_label - else - return nil - end - end - - --- @param data GitStatusData - function Header:render_stashes(data) - local stashes_count = data.stashes - - if not stashes_count then - return nil - end - - local stashes_label = config.stashes_symbol - - if config.show_numbers then - stashes_label = stashes_label .. stashes_count - end - - return ui.Span(stashes_label):fg(config.stashes_color) - end - - --- @param data GitStatusData - function Header:render_state(data) - local state_prefix = data.state_prefix - local unmerged_count = data.unmerged_count - local rebase_done = data.rebase_done - local rebase_total = data.rebase_total - - if state_prefix then - local state_label = "" - if config.show_state_prefix then - state_label = state_prefix - if - state_prefix == "rebase-i" - and config.show_numbers - and rebase_done - and rebase_total - then - state_label = state_label - .. " " - .. rebase_done - .. "/" - .. rebase_total - end - end - - local unmerged_label = "" - local symbol = "" - - if unmerged_count and unmerged_count > 0 then - symbol = " " .. config.state_symbol - if config.show_numbers then - unmerged_label = tostring(unmerged_count) - end - end - - return ui.Span(state_label .. symbol .. unmerged_label) - :fg(config.state_color) - end - return nil - end - - --- @param data GitStatusData - function Header:render_staged(data) - local staged = data.staged - - if staged then - local staged_label = config.staged_symbol - - if config.show_numbers then - local filtered_staged = staged:gsub("^[%s]*%b()[%s]*", "") - - local staged_count = 0 - for line in filtered_staged:gmatch("[^\r\n]+") do - if line:match("%S") then - staged_count = staged_count + 1 - end - end - - staged_label = staged_label .. staged_count - end - - return ui.Span(staged_label):fg(config.staged_color) - end - - return nil - end - - --- @param data GitStatusData - function Header:render_unstaged(data) - local unstaged = data.unstaged - - if unstaged then - local unstaged_label = config.unstaged_symbol - - if config.show_numbers then - local filtered_unstaged = - unstaged:gsub("^[%s]*%b()[\r\n]*", ""):gsub("^[%s]*%b()[\r\n]*", "") - - local unstaged_count = 0 - for line in filtered_unstaged:gmatch("[^\r\n]+") do - if line:match("%S") then - unstaged_count = unstaged_count + 1 - end - end - - unstaged_label = unstaged_label .. unstaged_count - end - - return ui.Span(unstaged_label):fg(config.unstaged_color) - end - - return nil - end - - --- @param data GitStatusData - function Header:render_untracked(data) - local untracked = data.untracked - - if untracked then - local untracked_label = config.untracked_symbol - - if config.show_numbers then - local filtered_untracked = untracked:gsub("^[%s]*%b()[\r\n]*", "") - local untracked_count = 0 - - for line in filtered_untracked:gmatch("[^\r\n]+") do - if line:match("%S") then - untracked_count = untracked_count + 1 - end - end - - untracked_label = untracked_label .. untracked_count - end - - return ui.Span(untracked_label):fg(config.untracked_color) - end - - return nil - end - - function Header:githead() - --- @type GitStatusData - local data = this.output - - if not data then - return ui.Line({}) - end - - local head = {} - - for _, key in ipairs(config.order) do - if key == "__spacer__" then - if head[#head] ~= " " then - table.insert(head, " ") - end - else - local fn = self["render_" .. key] - local is_shown = config["show_" .. key] - - if fn and is_shown then - local value = fn(self, data) - if value then - table.insert(head, value) - end - end - end - end - - return ui.Line(head) - end - - Header:children_add(Header.githead, 2000, Header.LEFT) - - local callback = function() - local cwd = cx.active.current.cwd - ya.emit("plugin", { - this._id, - ya.quote(tostring(cwd), true), - }) - end - - ps.sub("cd", callback) - ps.sub("rename", callback) - ps.sub("bulk", callback) - ps.sub("move", callback) - ps.sub("trash", callback) - ps.sub("delete", callback) - ps.sub("tab", callback) - end, - - entry = function(_, job) - local args = job.args or job - - ---@class GitStatusData - ---@field ahead_remote? integer - ---@field behind_remote? integer - ---@field branch? string - ---@field commit? string - ---@field rebase_done? integer - ---@field remote_branch? string - ---@field remote_repo? string - ---@field staged? string - ---@field stashes? integer - ---@field state_prefix? "bisect"|"cherry"|"merge"|"rebase-i"|"revert" - ---@field tag? string - ---@field unmerged_count? integer - ---@field unstaged? string - ---@field untracked? string - local data = {} - - --- @param status string - local get_behind_ahead_remote = function(status) - local diverged_ahead, diverged_behind = - status:match("have (%d+) and (%d+) different") - if diverged_ahead and diverged_behind then - data.behind_remote = tonumber(diverged_behind) - data.ahead_remote = tonumber(diverged_ahead) - else - local behind_remote = status:match("behind %S+ by (%d+) commits?") - local ahead_remote = status:match("ahead of %S+ by (%d+) commits?") - - data.behind_remote = tonumber(behind_remote) - data.ahead_remote = tonumber(ahead_remote) - end - end - - --- @param status string - local get_branch = function(status) - data.branch = status:match("On branch (%S+)") - end - - --- @param status string - local get_stashes = function(status) - data.stashes = tonumber(status:match("Your stash currently has (%d+)")) - end - - --- @param status string - local get_state = function(status) - local unmerged = status:match("Unmerged paths:%s*(.-)%s*\n\n") - if unmerged then - local filtered_unmerged = - unmerged:gsub("^[%s]*%b()[%s]*", ""):gsub("^[%s]*%b()[%s]*", "") - local count = 0 - for line in filtered_unmerged:gmatch("[^\r\n]+") do - if line:match("%S") then - count = count + 1 - end - end - data.unmerged_count = count - end - - if status:find("git merge") then - data.state_prefix = "merge" - elseif status:find("git cherry%-pick") then - data.state_prefix = "cherry" - elseif status:find("git rebase") then - data.state_prefix = "rebase-i" - local commands_done = status:match("%((%d+) commands? done%)") - if commands_done then - data.rebase_done = commands_done - if not data.unmerged_count then - data.rebase_total = commands_done - else - data.rebase_total = data.unmerged_count - end - end - elseif status:find("git revert") then - data.state_prefix = "revert" - elseif status:find("git bisect") then - data.state_prefix = "bisect" - end - end - - --- @param status string - local get_staged = function(status) - data.staged = status:match("Changes to be committed:%s*(.-)%s*\n\n") - end - - --- @param status string - local get_unstaged = function(status) - data.unstaged = - status:match("Changes not staged for commit:%s*(.-)%s*\n\n") - end - - --- @param status string - local get_untracked = function(status) - data.untracked = status:match("Untracked files:%s*(.-)%s*\n\n") - end - - local get_status = function() - local cmd = Command("git") - :arg({ - "status", - "--ignore-submodules=dirty", - "--branch", - "--show-stash", - "--ahead-behind", - }) - :cwd(args[1]) - :env("LANGUAGE", "en_US.UTF-8") - :stdout(Command.PIPED) - local cmd_output = cmd:output() - - if cmd_output then - local status = cmd_output.stdout - - get_branch(status) - get_behind_ahead_remote(status) - get_stashes(status) - get_state(status) - get_staged(status) - get_unstaged(status) - get_untracked(status) - end - end - - local get_remote_branch = function() - local cmd = Command("git") - :arg({ - "rev-parse", - "--abbrev-ref", - "--symbolic-full-name", - "@{upstream}", - }) - :cwd(args[1]) - :env("LANGUAGE", "en_US.UTF-8") - :stdout(Command.PIPED) - local cmd_output = cmd:output() - - if cmd_output then - local remote_branch = cmd_output.stdout - - data.remote_branch = - remote_branch:gsub("[\r\n]", ""):match("^[^/]+/(.+)") - data.remote_repo = remote_branch:gsub("[\r\n]", ""):match("^([^/]+)/") - end - end - - --- @param log string - local get_tag = function(log) - data.tag = log:match("tag: ([^, )]+)") - end - - --- @param log string - local get_commit = function(log) - data.commit = log:match("^commit%s+([a-f0-9]+)") - end - - local get_git_log = function() - local cmd = Command("git") - :arg({ "log", "--format=commit %h%d", "-n", "1" }) - :cwd(args[1]) - :env("LANGUAGE", "en_US.UTF-8") - :stdout(Command.PIPED) - local cmd_output = cmd:output() - - if cmd_output then - local log = cmd_output.stdout - - get_tag(log) - get_commit(log) - end - end - - get_status() - get_remote_branch() - get_git_log() - - save(args[1], data) - end, -} diff --git a/static/yazi/plugins/kdeconnect-send/main.lua b/static/yazi/plugins/kdeconnect-send/main.lua deleted file mode 100644 index d93e357..0000000 --- a/static/yazi/plugins/kdeconnect-send/main.lua +++ /dev/null @@ -1,420 +0,0 @@ --- ~/.config/yazi/plugins/kdeconnect-send.yazi/main.lua - --- Function to run a command and get its output (Corrected Args Handling) -local function run_command(cmd_args) - ya.dbg("[kdeconnect-send] Running command: ", table.concat(cmd_args, " ")) - - -- Separate the command from the arguments - local command_name = cmd_args[1] - local arguments = {} - for i = 2, #cmd_args do - table.insert(arguments, cmd_args[i]) - end - ya.dbg("[kdeconnect-send] Command Name: ", command_name) - ya.dbg("[kdeconnect-send] Arguments Table: ", arguments) - - -- Build the command correctly - local cmd_builder = Command(command_name) - for _, arg_value in ipairs(arguments) do - cmd_builder:arg(arg_value) - end - - local child, err = cmd_builder:stdout(Command.PIPED):stderr(Command.PIPED):spawn() - - if err then - ya.err("[kdeconnect-send] Spawn error: ", err) - return nil, err - end - local output, wait_err = child:wait_with_output() - ya.dbg("[kdeconnect-send] wait_with_output finished.") - if wait_err then - ya.err("[kdeconnect-send] Wait error received: ", wait_err) - return nil, wait_err - end - if not output then - ya.err("[kdeconnect-send] Wait finished but output object is nil.") - return nil, Error("Command wait returned nil output") - end - ya.dbg("[kdeconnect-send] Command Status Success: ", output.status.success) - ya.dbg("[kdeconnect-send] Command Status Code: ", output.status.code) - ya.dbg("[kdeconnect-send] Command Stdout: ", output.stdout or "nil") - ya.dbg("[kdeconnect-send] Command Stderr: ", output.stderr or "nil") - - -- Note: The check for "0 devices found" might need adjustment depending on the output format of 'kdeconnect-cli -a' - if output.stderr and output.stderr:match("^0 devices found") then - ya.dbg("[kdeconnect-send] Command reported 0 devices found in stderr. Returning empty.") - return "", nil - end - -- Also check stdout for potential "no devices" messages if -a uses stdout differently - if output.stdout and output.stdout:match("no available devices found") then -- Example check, adjust if needed - ya.dbg("[kdeconnect-send] Command reported no available devices in stdout. Returning empty.") - return "", nil - end - - if not output.status.success then - local error_msg = "Command failed with code " - .. tostring(output.status.code or "unknown") - .. ": " - .. command_name - if output.stderr and #output.stderr > 0 then - error_msg = error_msg .. "\nStderr: " .. output.stderr - end - if output.stdout and #output.stdout > 0 then - error_msg = error_msg .. "\nStdout: " .. output.stdout - end - ya.err("[kdeconnect-send] Command execution failed: ", error_msg) - return nil, Error(error_msg) - end - return output.stdout, nil -end - --- Helper function to check if a URL exists in the values of the selected map -local function isSelected(url_to_check, selected_map) - if not url_to_check or not selected_map then - return false - end - local url_str_to_check = tostring(url_to_check) -- Compare string representations for consistency - for _, selected_url in pairs(selected_map) do - if selected_url and tostring(selected_url) == url_str_to_check then - return true - end - end - return false -end - -local get_selection_details = ya.sync(function() - ya.dbg("[kdeconnect-send] Entering get_selection_details sync block (Using cha via current.files)") - local selected_map = cx.active.selected - local current_files = cx.active.current.files - - if not selected_map or not current_files then - ya.err("[kdeconnect-send] cx.active.selected or cx.active.current.files is nil!") - return {}, false -- Return empty if essential data is missing - end - - -- Check if selection is empty early to potentially save iteration - local selection_empty = true - for _ in pairs(selected_map) do - selection_empty = false - break - end - if selection_empty then - ya.dbg("[kdeconnect-send] Selection map is empty.") - return {}, false - end - - local regular_files = {} - local directory_selected = false - - local success, err = pcall(function() - -- Iterate through the files in the current view - for i = 1, #current_files do - local file = current_files[i] -- Access fs::File object by index [cite: 15] - - if file and file.url and file.cha then - -- Check if this file's URL is in the selected map - if isSelected(file.url, selected_map) then - ya.dbg("[kdeconnect-send] File is selected: ", tostring(file.url)) - - -- Now check its cha.is_dir property - if file.cha.is_dir == true then - ya.dbg("[kdeconnect-send] Selected item is a directory (cha.is_dir): ", tostring(file.url)) - directory_selected = true - -- Optional: If finding one directory is enough, you could break the loop here - -- if you primarily care about blocking directory sends. - -- break - elseif file.cha.is_dir == false then - -- It's selected and not a directory, assume regular file - ya.dbg( - "[kdeconnect-send] Selected item is a regular file (cha.is_dir is false): ", - tostring(file.url) - ) - table.insert(regular_files, tostring(file.url)) - else - -- cha.is_dir might be nil (e.g., dummy file) - ya.warn( - "[kdeconnect-send] file.cha.is_dir is nil for selected file: ", - tostring(file.url), - ". Treating as potential directory." - ) - directory_selected = true -- Treat indeterminate as directory for safety - end - end - elseif file and file.url then - -- File exists but cha doesn't? Check if it's selected anyway. - if isSelected(file.url, selected_map) then - ya.warn( - "[kdeconnect-send] Selected file is missing 'cha' property: ", - tostring(file.url), - ". Treating as potential directory." - ) - directory_selected = true -- Treat files missing 'cha' as directories for safety - end - else - -- Handle cases where file or file.url might be nil within the loop if necessary - ya.warn("[kdeconnect-send] Encountered nil file or file.url at index: ", i) - end - end - end) - - if not success then - ya.err("[kdeconnect-send] Error during current_files iteration or isSelected check: ", err) - return {}, false -- Return empty on error - end - - -- Add a final check: if directory_selected is true, we might not need the regular_files list depending on use case. - -- The current implementation returns both. - - ya.dbg( - "[kdeconnect-send] Exiting get_selection_details sync block. Found regular files: ", - #regular_files, - " Directory selected (based on cha): ", - directory_selected - ) - return regular_files, directory_selected -end) - -local state_option = ya.sync(function(state, attr) - return state[attr] -end) - -return { - setup = function(state, options) - state.auto_select_single = options.auto_select_single - end, - - entry = function(_, job) - ya.dbg("[kdeconnect-send] Plugin entry point triggered.") - - -- Get configuration option for auto_select_single (default: true) - local auto_select_single = state_option("auto_select_single") - if auto_select_single == nil then - auto_select_single = true - end - ya.dbg("[kdeconnect-send] auto_select_single option: ", auto_select_single) - - -- 1. Get selection details (files and directory flag) using Reverted Sync Check - local selected_files, directory_selected = get_selection_details() - - -- Handle potential errors if get_selection_details couldn't determine selection - if not selected_files then - ya.err("[kdeconnect-send] Failed to get selection details.") - ya.notify({ title = "Plugin Error", content = "Could not read selection.", level = "error", timeout = 5 }) - return - end - - -- 2. *** REVERTED DIRECTORY CHECK LOGIC *** - ya.dbg("[kdeconnect-send] Checking directory_selected flag. Value: ", directory_selected) - if directory_selected then - ya.dbg("[kdeconnect-send] directory_selected is true (from sync check). Showing error and exiting.") - ya.notify({ - title = "KDE Connect Send", - content = "Cannot send directories. Please select regular files only.", - level = "error", - timeout = 7, - }) - return -- Exit if a directory was detected by the sync check - end - ya.dbg("[kdeconnect-send] directory_selected is false (from sync check). Proceeding.") - - -- 3. Proceed only if no directory was selected and files exist - ya.dbg("[kdeconnect-send] Checking number of regular files.") - local len = #selected_files - ya.dbg("[kdeconnect-send] Length of selected_files (#): ", len) - - if len == 0 then - -- This case now means either truly no regular files were selected, - -- or only directories were selected (and handled above), - -- or an error occurred in get_selection_details. - ya.dbg("[kdeconnect-send] Length is 0. No regular files to send.") - -- Check if directory_selected was false - means no files were selected at all. - if not directory_selected then - ya.notify({ - title = "KDE Connect Send", - content = "No regular files selected.", - level = "warn", - timeout = 5, - }) - end - return -- Exit cleanly - end - - -- If we got here, directory_selected is false and len > 0. - ya.dbg("[kdeconnect-send] Regular files found and no directories detected. Proceeding to device check.") - - -- 4. Get KDE Connect devices (using -a flag) - ya.dbg("[kdeconnect-send] Attempting to list KDE Connect devices with 'kdeconnect-cli -a'...") - local devices_output, err = run_command({ "kdeconnect-cli", "-a" }) -- Using -a flag - - if err then - ya.err("[kdeconnect-send] Failed to list devices command: ", tostring(err), ". Exiting.") - ya.notify({ - title = "KDE Connect Error", - content = "Failed to run kdeconnect-cli -a: " .. tostring(err), - level = "error", - timeout = 5, - }) - return - end - - if not devices_output or devices_output == "" then - ya.dbg("[kdeconnect-send] No available devices reported by kdeconnect-cli -a. Exiting silently.") - ya.notify({ - title = "KDE Connect Send", - content = "No available KDE Connect devices found.", - level = "warn", - timeout = 4, - }) - return - end - - -- 5. Parse devices (Adjust parsing for '-a' output format if needed) - -- *** IMPORTANT: The parsing logic below ASSUMES '-a' output is similar to '-l' *** - local devices = {} - local device_list_str = "Available Devices:\n" - local has_reachable = false -- Keep track if *any* device is found - ya.dbg("[kdeconnect-send] Parsing device list (assuming -a format is like -l)...") - local pattern = "^%-%s*(.+):%s*([%w_]+)%s*%((.-)%)$" -- Adjust if -a format differs - for line in devices_output:gmatch("[^\r\n]+") do - local name, id, status_line = line:match(pattern) - if id and name and status_line then - name = name:match("^%s*(.-)%s*$") - table.insert(devices, { id = id, name = name, status = status_line }) - device_list_str = device_list_str - .. "- " - .. name - .. " (ID: " - .. id - .. ") Status: " - .. status_line - .. "\n" - has_reachable = true - else - ya.warn("[kdeconnect-send] Could not parse device line with pattern: ", line) - end - end - - if not has_reachable then - ya.dbg( - "[kdeconnect-send] No devices found after parsing output of 'kdeconnect-cli -a'. Exiting silently. List:\n", - device_list_str - ) - return - end - - -- 6. Select Device (Using ya.which) - local device_id = nil - local target_device_name = "Unknown" - - if #devices == 1 and auto_select_single then - device_id = devices[1].id - target_device_name = devices[1].name - ya.dbg( - "[kdeconnect-send] Only one device found and auto-select-single is true: ", - target_device_name, - " (", - device_id, - "). Using automatically." - ) - else - ya.dbg("[kdeconnect-send] Prompting user with ya.which (multiple devices or auto-select-single is false)...") - - -- Prepare candidates for ya.which - local device_choices = {} - for i, device in ipairs(devices) do - table.insert(device_choices, { - on = tostring(i), - desc = string.format("%s (%s) - %s", device.name, device.id, device.status), -- Show status in choice - }) - end - - -- Add a cancel option - table.insert(device_choices, { on = "q", desc = "Cancel" }) - - -- Prompt the user to choose a device index - local selected_index = ya.which({ - cands = device_choices, - }) - ya.dbg("[kdeconnect-send] ya.which returned index: ", selected_index or "nil") - - -- Check if the user cancelled or selected the cancel option ('q') - if not selected_index or selected_index > #devices then - ya.warn("[kdeconnect-send] Device selection cancelled by user.") - ya.notify({ title = "KDE Connect Send", content = "Send cancelled.", level = "info", timeout = 3 }) - return -- *** This return terminates the plugin *** - end - - -- Get the device ID and name based on the selected index - device_id = devices[selected_index].id - target_device_name = devices[selected_index].name - ya.dbg( - "[kdeconnect-send] User selected device index ", - selected_index, - ": ", - target_device_name, - " (", - device_id, - ")" - ) - end - - -- 7. Proceed with selected device - ya.dbg( - "[kdeconnect-send] Proceeding with selected device: ", - device_id, - " (", - target_device_name, - "). Starting file send loop..." - ) - - -- 8. Send files (Using selected_files list) - local success_count = 0 - local error_count = 0 - for i, file_path in ipairs(selected_files) do -- Use selected_files here - ya.dbg( - "[kdeconnect-send] Sending file ", - i, - "/", - #selected_files, -- Use #selected_files - ": ", - file_path, - " to ", - target_device_name - ) - local _, send_err = run_command({ "kdeconnect-cli", "--share", file_path, "--device", device_id }) - if send_err then - error_count = error_count + 1 - ya.err("[kdeconnect-send] Failed to send file ", file_path, " to ", device_id, ": ", tostring(send_err)) - ya.notify({ - title = "KDE Connect Error", - content = "Failed to send: " .. file_path .. "\n" .. tostring(send_err), - level = "error", - timeout = 5, - }) - else - success_count = success_count + 1 - end - end - - -- 9. Final Notification - local final_message = - string.format("Sent %d/%d files to %s.", success_count, #selected_files, target_device_name) - local final_level = "info" - if error_count > 0 then - final_message = string.format( - "Sent %d/%d files to %s. %d failed.", - success_count, - #selected_files, - target_device_name, - error_count - ) - final_level = "warn" - end - if success_count == 0 and error_count > 0 then - final_level = "error" - end - ya.dbg("[kdeconnect-send] Send process completed. Success: ", success_count, " Failed: ", error_count) - ya.notify({ title = "KDE Connect Send Complete", content = final_message, level = final_level, timeout = 5 }) - ya.dbg("[kdeconnect-send] Plugin execution finished.") - end, -} From 9615b6fa641e5a75363d21b1790a458ee925180d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Sat, 18 Apr 2026 18:13:10 -0400 Subject: [PATCH 140/236] fix(zsh) : point to correct .p10k --- progs/shells/zsh.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index b036071..4325e0e 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -87,7 +87,7 @@ # FIXME : move to a dedicated file initContent = '' - source ~/nixos-config/new_arch/progs/shells/${subfolder}/static/.p10k.zsh + source ~/nixos-config/progs/shells/${subfolder}/static/.p10k.zsh zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' menu no From b66cf766a77f033d6108e10febb1dc38c9b16e38 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 09:30:58 -0400 Subject: [PATCH 141/236] refactor(static) : moved static files to a more appropriate path --- progs/shells/zsh.nix | 3 +-- progs/shells/zsh/{static => }/.p10k.zsh | 0 progs/shells/zsh/yazi.nix | 8 ++++---- progs/shells/zsh/{static => }/yazi/init.lua | 0 .../shells/zsh/{static => }/yazi/plugins/githead/main.lua | 0 .../{static => }/yazi/plugins/kdeconnect-send/main.lua | 0 sys/bootloader.nix | 6 +++--- sys/{static/grub => bootloader}/00_Arch_Btrfs | 0 sys/{static/grub => bootloader}/99_UEFI_Firmware | 0 9 files changed, 8 insertions(+), 9 deletions(-) rename progs/shells/zsh/{static => }/.p10k.zsh (100%) rename progs/shells/zsh/{static => }/yazi/init.lua (100%) rename progs/shells/zsh/{static => }/yazi/plugins/githead/main.lua (100%) rename progs/shells/zsh/{static => }/yazi/plugins/kdeconnect-send/main.lua (100%) rename sys/{static/grub => bootloader}/00_Arch_Btrfs (100%) rename sys/{static/grub => bootloader}/99_UEFI_Firmware (100%) diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index 4325e0e..0b8860e 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -61,7 +61,7 @@ }; ###### # user defined Home = { - # home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/static/.p10k.zsh}"}"; + home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/.p10k.zsh}"}"; programs.zsh = { enable = true; enableCompletion = true; @@ -87,7 +87,6 @@ # FIXME : move to a dedicated file initContent = '' - source ~/nixos-config/progs/shells/${subfolder}/static/.p10k.zsh zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' menu no diff --git a/progs/shells/zsh/static/.p10k.zsh b/progs/shells/zsh/.p10k.zsh similarity index 100% rename from progs/shells/zsh/static/.p10k.zsh rename to progs/shells/zsh/.p10k.zsh diff --git a/progs/shells/zsh/yazi.nix b/progs/shells/zsh/yazi.nix index d0af3a4..a0c799b 100644 --- a/progs/shells/zsh/yazi.nix +++ b/progs/shells/zsh/yazi.nix @@ -8,7 +8,7 @@ }: let ###### # user defined name = "yazi"; - subfolder = null; + subfolder = "yazi"; main-repo = "nix"; branch = "latest"; imports = null; @@ -44,7 +44,7 @@ Home = { programs.yazi = { enable = true; - initLua = ./static/yazi/init.lua; + initLua = ./${subfolder}/init.lua; settings = { mgr = { show_hidden = true; @@ -59,8 +59,8 @@ inherit rich-preview; } // { - "githead" = ./static/yazi/plugins/githead; - "kdeconnect-send" = ./static/yazi/plugins/kdeconnect-send; + "githead" = ./${subfolder}/plugins/githead; + "kdeconnect-send" = ./${subfolder}/plugins/kdeconnect-send; }; keymap = { mgr = { diff --git a/progs/shells/zsh/static/yazi/init.lua b/progs/shells/zsh/yazi/init.lua similarity index 100% rename from progs/shells/zsh/static/yazi/init.lua rename to progs/shells/zsh/yazi/init.lua diff --git a/progs/shells/zsh/static/yazi/plugins/githead/main.lua b/progs/shells/zsh/yazi/plugins/githead/main.lua similarity index 100% rename from progs/shells/zsh/static/yazi/plugins/githead/main.lua rename to progs/shells/zsh/yazi/plugins/githead/main.lua diff --git a/progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua b/progs/shells/zsh/yazi/plugins/kdeconnect-send/main.lua similarity index 100% rename from progs/shells/zsh/static/yazi/plugins/kdeconnect-send/main.lua rename to progs/shells/zsh/yazi/plugins/kdeconnect-send/main.lua diff --git a/sys/bootloader.nix b/sys/bootloader.nix index 5abff16..6838067 100644 --- a/sys/bootloader.nix +++ b/sys/bootloader.nix @@ -8,7 +8,7 @@ }: let ###### # user defined name = "bootloader"; - subfolder = null; + subfolder = "bootloader"; main-repo = null; branch = null; imports = null; @@ -50,8 +50,8 @@ useOSProber = true; # FEAT : maybe move static files in dedicated folder. extraEntries = '' - ${builtins.readFile "${./static/grub/00_Arch_Btrfs}"} - ${builtins.readFile "${./static/grub/99_UEFI_Firmware}"} + ${builtins.readFile "${./${subfolder}/00_Arch_Btrfs}"} + ${builtins.readFile "${./${subfolder}/99_UEFI_Firmware}"} ''; }; efi = { diff --git a/sys/static/grub/00_Arch_Btrfs b/sys/bootloader/00_Arch_Btrfs similarity index 100% rename from sys/static/grub/00_Arch_Btrfs rename to sys/bootloader/00_Arch_Btrfs diff --git a/sys/static/grub/99_UEFI_Firmware b/sys/bootloader/99_UEFI_Firmware similarity index 100% rename from sys/static/grub/99_UEFI_Firmware rename to sys/bootloader/99_UEFI_Firmware From c008d0d60961b71afda57a55ca52b3b8eb8c4b2c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 09:41:10 -0400 Subject: [PATCH 142/236] fix(p10k) : fix the call for the right p10k config file --- progs/shells/zsh.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index 0b8860e..fe4bfe1 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -86,7 +86,7 @@ ]; # FIXME : move to a dedicated file initContent = '' - + source ~/.p10k.zsh zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' menu no From c6970b0774945bf69176891d8373a0a9d60742c3 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 11:44:04 -0400 Subject: [PATCH 143/236] feat(tools) : adding a parameter for special imports in contextualModule --- tools.nix | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tools.nix b/tools.nix index d2b88e1..35e62aa 100644 --- a/tools.nix +++ b/tools.nix @@ -74,6 +74,7 @@ contextualModule = { options ? null, imports ? null, + specialImports ? null, togglable ? true, Config, context, @@ -98,13 +99,26 @@ // ( if imports != null then { - imports = tools.contextModuleImport { - inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; - context = context; - }; - } - else { + imports = + tools.contextModuleImport { + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; + context = context; + } + ++ ( + if specialImports != null + then specialImports + else [] + ); } + else + ( + if specialImports != null + then { + imports = specialImports; + } + else { + } + ) ) // { config = From 12fc53b6e344da55ef49e10b13b58e4f9fe8f573 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 11:46:41 -0400 Subject: [PATCH 144/236] notes(refactor+fixes) : added notes for future fixes + refactor --- configuration.nix | 4 ++-- progs.nix | 29 +++++++++++++++-------------- progs/desktop/plasma.nix | 1 + progs/dev.nix | 6 +++--- progs/misc.nix | 2 +- 5 files changed, 22 insertions(+), 20 deletions(-) diff --git a/configuration.nix b/configuration.nix index 98bc7eb..7a17b86 100644 --- a/configuration.nix +++ b/configuration.nix @@ -38,8 +38,8 @@ in { # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; networking.hostName = "NixOs"; virtualisation = { - libvirtd.enable = true; - spiceUSBRedirection.enable = true; + libvirtd.enable = true; # Virtualization + spiceUSBRedirection.enable = true; # Virtualization vmVariant = { # the following configuration is added only when building VM with `build-vm` virtualisation = { diff --git a/progs.nix b/progs.nix index e2c56f9..943c10f 100644 --- a/progs.nix +++ b/progs.nix @@ -44,31 +44,32 @@ Home = { programs = { thunderbird = { - enable = true; - profiles = {}; + enable = true; # Office + profiles = {}; # Office }; }; }; System = { environment.systemPackages = with packages; [ - mangohud - plocate - mlocate - xdotool - protonup-ng - meld - wget + mangohud # Gaming + plocate # dev Misc + mlocate # dev Misc + xdotool # dev Misc + protonup-ng # Gaming + meld # dev Misc + wget # dev Misc ]; environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; # Gaming }; programs = { - gamemode.enable = true; + gamemode.enable = true; # Gaming steam = { - enable = true; - gamescopeSession.enable = true; + # Gaming + enable = true; # Gaming + gamescopeSession.enable = true; # Gaming }; - virt-manager.enable = true; + virt-manager.enable = true; # Virtualization }; }; ###### # computed diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 063370a..b190eb1 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -1,3 +1,4 @@ +# FIXME : Refactor this { config, lib, diff --git a/progs/dev.nix b/progs/dev.nix index 528d643..f82e47a 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -68,9 +68,9 @@ ###### # user defined Home = { home.packages = with packages; [ - python3 - nmap # for network - netcat-openbsd # for network + python3 # Lang + nmap # Network + netcat-openbsd # Network ]; }; System = { diff --git a/progs/misc.nix b/progs/misc.nix index a9ff92e..937e6f8 100644 --- a/progs/misc.nix +++ b/progs/misc.nix @@ -59,7 +59,7 @@ ###### # user defined Home = { home.packages = with packages; [ - vlc + vlc # Misc ]; }; System = { From 8aa3f6c0731985d1b3a15a16b6286502a8b3299b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 13:03:06 -0400 Subject: [PATCH 145/236] fix(zen) : moved the importation of the zen pkgs to zen module --- home.nix | 17 ++++++----------- progs/browsers/zen.nix | 2 ++ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/home.nix b/home.nix index d420f68..cc359d2 100644 --- a/home.nix +++ b/home.nix @@ -12,18 +12,13 @@ name = "home"; mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs imports = ["progs"]; - specialImports = [ - pkgs-list.others.zen-browser.homeModules.beta ## FIXME : Dont know yet how to handle this - ]; in { - imports = - map (file: - (import ./${mainModule}.nix { - inherit config lib pkgs-list tools baseSettings; - inherit inputs; - }).config.Home) - imports - ++ specialImports; + imports = map (file: + (import ./${mainModule}.nix { + inherit config lib pkgs-list tools baseSettings; + inherit inputs; + }).config.Home) + imports; home.stateVersion = nixos-version; home.username = "matthieu"; diff --git a/progs/browsers/zen.nix b/progs/browsers/zen.nix index bf1710e..729e861 100644 --- a/progs/browsers/zen.nix +++ b/progs/browsers/zen.nix @@ -16,6 +16,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; extras = { + specialImports = [pkgs-list.others.zen-browser.homeModules.beta]; }; settings = null; ###### # computed @@ -58,6 +59,7 @@ in { inherit lib config tools; # deps inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined + inherit (extras) specialImports; context = "Home"; Config = HomeConfig; }; From 623bc826d58563c2e7b98a93e0f569ac5183d4b0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 13:13:42 -0400 Subject: [PATCH 146/236] refactor(zsh) : moved shell-aliases to shell options + moved init content to a file --- progs/shells.nix | 2 ++ progs/shells/zsh.nix | 33 +++------------------------------ progs/shells/zsh/init.zsh | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 30 deletions(-) create mode 100644 progs/shells/zsh/init.zsh diff --git a/progs/shells.nix b/progs/shells.nix index dd1d213..c5a543c 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -22,6 +22,8 @@ nrs = "sudo nixos-rebuild switch"; ls = "ls --color -ah"; ".." = "cd .."; + yazi = "y"; + myip = "myip"; }; }; settings = { diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index fe4bfe1..a831d52 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -77,43 +77,16 @@ { name = "powerlevel10k"; src = packages.zsh-powerlevel10k; - file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; # FEAT : Maybe to a file owned by me ? + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; } { name = "fzf-tab"; src = "${packages.zsh-fzf-tab}/share/fzf-tab"; } ]; - # FIXME : move to a dedicated file - initContent = '' - source ~/.p10k.zsh + initContent = "${builtins.readFile ./${subfolder}/init.zsh}"; - zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' - zstyle ':completion:*' menu no - zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath' - - function y() { - local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd - yazi "$@" --cwd-file="$tmp" - IFS= read -r -d \'\' cwd < "$tmp" - [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" - rm -f -- "$tmp" - } - - function myip(){ - echo $(ip addr show wlp0s20f3 | grep -oP 'inet \K[^/]+') - } - - ''; - - # zstyle ':completion:*' menu no - # FIXME : move new aliases to shells extras - shellAliases = - cfg.aliases - // { - yazi = "y"; - myip = "myip"; - }; + shellAliases = cfg.aliases; }; }; System = { diff --git a/progs/shells/zsh/init.zsh b/progs/shells/zsh/init.zsh new file mode 100644 index 0000000..13aa533 --- /dev/null +++ b/progs/shells/zsh/init.zsh @@ -0,0 +1,17 @@ +source ~/.p10k.zsh + +zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' +zstyle ':completion:*' menu no +zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath' + +function y() { + local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd + yazi "$@" --cwd-file="$tmp" + IFS= read -r -d \'\' cwd < "$tmp" + [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" + rm -f -- "$tmp" +} + +function myip(){ + echo $(ip addr show wlp0s20f3 | grep -oP 'inet \K[^/]+') +} From f894df6eab0959f445fa0ce9909398b491d3b099 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 13:43:44 -0400 Subject: [PATCH 147/236] feat(tools) : added a moduleParams generator + fullModule generator --- tools.nix | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/tools.nix b/tools.nix index 35e62aa..088ea10 100644 --- a/tools.nix +++ b/tools.nix @@ -126,6 +126,93 @@ then (lib.mkIf deps.cfg.enable Config) else Config; }; + + moduleParams = { + config, + lib, + pkgs-list, + parentPathAsList, + tools, + name, + subfolder ? null, + main-repo ? null, # pas sur que ce soit necessaire plus j'y reflechis. + branch ? null, # pas sur que ce soit necessaire plus j'y reflechis. + imports ? null, + specialImports ? null, + options ? null, + settings ? null, + extras ? null, + }: rec { + inherit config lib pkgs-list parentPathAsList tools; + inherit name subfolder main-repo branch imports specialImports options settings extras; + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + cfg = tools.inheritConfig { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + tools.inheritSettings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + }; + fullModule = { + config, + lib, + pkgs-list, + parentPathAsList, + tools, + name, + subfolder ? null, + main-repo ? null, # pas sur que ce soit necessaire plus j'y reflechis. + branch ? null, # pas sur que ce soit necessaire plus j'y reflechis. + imports ? null, + specialImports ? null, + options ? null, + settings ? null, + extras ? null, + packages ? null, + currentPathAsList, + currentDirPath, + cfg, + inheritedSettings, + Common, + Home ? {}, + System ? {}, + }: let + HomeConfig = Common // Home; + SystemConfig = Common // System; + in { + config = { + Home = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + inherit specialImports; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + inherit specialImports; # user defined + context = "System"; + Config = SystemConfig; + }; + }; + }; in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule; } From 2d441bfcf0c36adb264f919d0bac0ca90c994831 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 13:45:10 -0400 Subject: [PATCH 148/236] refactor(shells) : used the new generator to get the new module with no variables --- progs/shells.nix | 106 ++++++++++++++--------------------------------- 1 file changed, 31 insertions(+), 75 deletions(-) diff --git a/progs/shells.nix b/progs/shells.nix index c5a543c..3d15c29 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -5,78 +5,34 @@ parentPathAsList, tools, ... -}: let - ###### # user defined - name = "shells"; - subfolder = "shells"; - main-repo = "nix"; - branch = "latest"; - imports = [ - "zsh" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - aliases = { - nrs = "sudo nixos-rebuild switch"; - ls = "ls --color -ah"; - ".." = "cd .."; - yazi = "y"; - myip = "myip"; - }; - }; - settings = { - zsh = { - enable = true; - aliases = extras.aliases; - }; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}: (tools.fullModule ((tools.moduleParams + rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "shells"; + subfolder = "shells"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "zsh" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + zsh = { + enable = true; + aliases = extras.aliases; + }; + }; + extras = { + aliases = { + nrs = "sudo nixos-rebuild switch"; + ls = "ls --color -ah"; + ".." = "cd .."; + yazi = "y"; + myip = "myip"; + }; + }; + }) + // { + })) From ca9895e731f14263a2d7556a212bb80cac853020 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 14:15:04 -0400 Subject: [PATCH 149/236] fix(shells) : fixed the structure to be easily reproduced for other modules --- progs/shells.nix | 61 +++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/progs/shells.nix b/progs/shells.nix index 3d15c29..bf7f39c 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -5,34 +5,37 @@ parentPathAsList, tools, ... -}: (tools.fullModule ((tools.moduleParams - rec { - inherit config lib pkgs-list parentPathAsList tools; - name = "shells"; - subfolder = "shells"; - main-repo = "nix"; - branch = "latest"; - imports = [ - "zsh" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "shells"; + subfolder = "shells"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "zsh" + ]; + extras = { + aliases = { + nrs = "sudo nixos-rebuild switch"; + ls = "ls --color -ah"; + ".." = "cd .."; + yazi = "y"; + myip = "myip"; }; - settings = { - zsh = { - enable = true; - aliases = extras.aliases; - }; + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + zsh = { + enable = true; + aliases = extras.aliases; }; - extras = { - aliases = { - nrs = "sudo nixos-rebuild switch"; - ls = "ls --color -ah"; - ".." = "cd .."; - yazi = "y"; - myip = "myip"; - }; - }; - }) - // { - })) + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) From 2123eb792b003359f57447f578b6fac5ccd2edc2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 14:28:52 -0400 Subject: [PATCH 150/236] refactor(desktop-modules) : refactored all modules with new generators --- progs/desktop/klassy.nix | 70 ++++++++-------------------------------- progs/desktop/plasma.nix | 70 ++++++++-------------------------------- progs/desktop/rofi.nix | 70 ++++++++-------------------------------- 3 files changed, 40 insertions(+), 170 deletions(-) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix index cebed5c..56c88d6 100644 --- a/progs/desktop/klassy.nix +++ b/progs/desktop/klassy.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "klassy"; - subfolder = null; - main-repo = "nur"; - branch = "klassy"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "klassy"; + main-repo = "nur"; + branch = "klassy"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages.repos; [ shadowrz.klassy-qt6 ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index b190eb1..bcdd137 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -7,41 +7,19 @@ tools, ... }: let - ###### # user defined - name = "plasma"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "plasma"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.plasma = { enable = true; @@ -141,7 +119,7 @@ taskDisplayMode = "IconsOnly"; showOnlyCurrentDesktop = true; groupTasks = true; - launchers = with packages; [ + launchers = [ "applications:systemsettings.desktop" "applications:org.kde.dolphin.desktop" "applications:firefox.desktop" @@ -187,24 +165,4 @@ discover ]; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/desktop/rofi.nix b/progs/desktop/rofi.nix index ee55913..6ef89b1 100644 --- a/progs/desktop/rofi.nix +++ b/progs/desktop/rofi.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "rofi"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "rofi"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.rofi = { enable = true; @@ -52,26 +30,4 @@ ]; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 73fe5eb288293d23f3b2886d852366e51192cfd9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:17:43 -0400 Subject: [PATCH 151/236] fix(tools) : adding a guard rail on special imports so it's safe to use for both context, even when the other should'nt import --- tools.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools.nix b/tools.nix index 088ea10..ac2501a 100644 --- a/tools.nix +++ b/tools.nix @@ -106,7 +106,10 @@ } ++ ( if specialImports != null - then specialImports + then + if builtins.hasAttr context specialImports + then specialImports.${context} + else [] else [] ); } @@ -114,7 +117,10 @@ ( if specialImports != null then { - imports = specialImports; + imports = + if builtins.hasAttr context specialImports + then specialImports.${context} + else []; } else { } From 0f0e3afa72fd7db38f7ef1a748917b18ce3f2622 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:19:01 -0400 Subject: [PATCH 152/236] refactor(browsers-modules) : refactored all modules with new generators --- progs/browsers/chromium.nix | 68 ++++++--------------------------- progs/browsers/firefox.nix | 76 ++++++++----------------------------- progs/browsers/zen.nix | 71 +++++++--------------------------- 3 files changed, 40 insertions(+), 175 deletions(-) diff --git a/progs/browsers/chromium.nix b/progs/browsers/chromium.nix index d4bdddb..21827ab 100644 --- a/progs/browsers/chromium.nix +++ b/progs/browsers/chromium.nix @@ -6,67 +6,21 @@ tools, ... }: let - ###### # user defined - name = "chromium"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "chromium"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.chromium = { enable = true; # FEAT TODO: profiles, settings, etc. }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/browsers/firefox.nix b/progs/browsers/firefox.nix index 6f6ee21..792c589 100644 --- a/progs/browsers/firefox.nix +++ b/progs/browsers/firefox.nix @@ -6,45 +6,23 @@ tools, ... }: let - ###### # user defined - name = "firefox"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - bitwarden-ID = "446900e4-71c2-419f-a6a7-df9c091e268b"; - adBlocker-ID = "adblockultimate@adblockultimate.net"; - plasmaIntegration-ID = "plasma-browser-integration@kde.org"; - qwant-ID = "qwantcomforfirefox@jetpack"; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "firefox"; + extras = { + bitwarden-ID = "446900e4-71c2-419f-a6a7-df9c091e268b"; + adBlocker-ID = "adblockultimate@adblockultimate.net"; + plasmaIntegration-ID = "plasma-browser-integration@kde.org"; + qwant-ID = "qwantcomforfirefox@jetpack"; }; - Common = - inheritedSettings - // { + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.firefox = { enable = true; @@ -140,26 +118,4 @@ }; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/browsers/zen.nix b/progs/browsers/zen.nix index 729e861..d6536bd 100644 --- a/progs/browsers/zen.nix +++ b/progs/browsers/zen.nix @@ -6,69 +6,24 @@ tools, ... }: let - ###### # user defined - name = "zen"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - specialImports = [pkgs-list.others.zen-browser.homeModules.beta]; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "zen"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { + specialImports = { + Home = [pkgs-list.others.zen-browser.homeModules.beta]; }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.zen-browser = { enable = true; # FEAT TODO: profiles, settings, etc. }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - inherit (extras) specialImports; - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From c52fafc0a068b056f77c480a612b2df93b9a356b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:21:12 -0400 Subject: [PATCH 153/236] refactor(desktop-modules) : unfied parameter orders --- progs/desktop/klassy.nix | 2 +- progs/desktop/plasma.nix | 2 +- progs/desktop/rofi.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix index 56c88d6..2dff631 100644 --- a/progs/desktop/klassy.nix +++ b/progs/desktop/klassy.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages.repos; [ diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index bcdd137..932df1d 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -18,7 +18,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.plasma = { diff --git a/progs/desktop/rofi.nix b/progs/desktop/rofi.nix index 6ef89b1..704f0d3 100644 --- a/progs/desktop/rofi.nix +++ b/progs/desktop/rofi.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.rofi = { From a0cd23b77e44bd0a320c9a79418dc0cf2d379e83 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:33:44 -0400 Subject: [PATCH 154/236] refactor(boot-modules) : refactored all modules with new generators --- progs/dev/boot/efibootmgr.nix | 70 +++++++---------------------------- progs/dev/boot/gparted.nix | 70 +++++++---------------------------- progs/dev/boot/grub.nix | 70 +++++++---------------------------- progs/dev/boot/os-prober.nix | 70 +++++++---------------------------- 4 files changed, 52 insertions(+), 228 deletions(-) diff --git a/progs/dev/boot/efibootmgr.nix b/progs/dev/boot/efibootmgr.nix index 306f7ea..5616e6b 100644 --- a/progs/dev/boot/efibootmgr.nix +++ b/progs/dev/boot/efibootmgr.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "efibootmgr"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "efibootmgr"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ efibootmgr ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/boot/gparted.nix b/progs/dev/boot/gparted.nix index 22b1c7a..05014b0 100644 --- a/progs/dev/boot/gparted.nix +++ b/progs/dev/boot/gparted.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "gparted"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "gparted"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ gparted ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/boot/grub.nix b/progs/dev/boot/grub.nix index 2e31a10..e0c44c2 100644 --- a/progs/dev/boot/grub.nix +++ b/progs/dev/boot/grub.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "grub"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "grub"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ grub2 ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/boot/os-prober.nix b/progs/dev/boot/os-prober.nix index cddd23b..8acdd5b 100644 --- a/progs/dev/boot/os-prober.nix +++ b/progs/dev/boot/os-prober.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "os-prober"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "os-prober"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ os-prober ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 7f8a143252c7e4b134aea69f63acd72ab38dd5f9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:41:11 -0400 Subject: [PATCH 155/236] refactor(nix-modules) : refactored all modules with new generators --- progs/dev/nix/alejandra.nix | 70 +++++++------------------------------ progs/dev/nix/nixd.nix | 70 +++++++------------------------------ 2 files changed, 26 insertions(+), 114 deletions(-) diff --git a/progs/dev/nix/alejandra.nix b/progs/dev/nix/alejandra.nix index 04c5db8..d471d98 100644 --- a/progs/dev/nix/alejandra.nix +++ b/progs/dev/nix/alejandra.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "alejandra"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "alejandra"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ alejandra ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/nix/nixd.nix b/progs/dev/nix/nixd.nix index 52b7e60..ff1982d 100644 --- a/progs/dev/nix/nixd.nix +++ b/progs/dev/nix/nixd.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "nixd"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "nixd"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ nixd ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 62b8ef2f1181d4ad2c2de684a3e8733b3a5779bb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:53:23 -0400 Subject: [PATCH 156/236] refactor(misc-modules) : refactored all modules with new generators --- progs/misc/bambu-studio.nix | 70 ++++++--------------------------- progs/misc/bitwarden.nix | 70 ++++++--------------------------- progs/misc/fastfetch.nix | 70 ++++++--------------------------- progs/misc/iso-image-writer.nix | 70 ++++++--------------------------- progs/misc/kdeconnect.nix | 66 ++++++------------------------- progs/misc/ledger.nix | 68 ++++++-------------------------- progs/misc/vesktop.nix | 68 ++++++-------------------------- 7 files changed, 87 insertions(+), 395 deletions(-) diff --git a/progs/misc/bambu-studio.nix b/progs/misc/bambu-studio.nix index aa04f14..3974b2b 100644 --- a/progs/misc/bambu-studio.nix +++ b/progs/misc/bambu-studio.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "bambu-studio"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bambu-studio"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ bambu-studio ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc/bitwarden.nix b/progs/misc/bitwarden.nix index 07bda58..0c9a92f 100644 --- a/progs/misc/bitwarden.nix +++ b/progs/misc/bitwarden.nix @@ -6,67 +6,23 @@ tools, ... }: let - ###### # user defined - name = "bitwarden"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bitwarden"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ bitwarden-desktop bitwarden-cli ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc/fastfetch.nix b/progs/misc/fastfetch.nix index b0d74cf..8dd7697 100644 --- a/progs/misc/fastfetch.nix +++ b/progs/misc/fastfetch.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "fastfetch"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "fastfetch"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ fastfetch ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc/iso-image-writer.nix b/progs/misc/iso-image-writer.nix index 0027c0e..d116bee 100644 --- a/progs/misc/iso-image-writer.nix +++ b/progs/misc/iso-image-writer.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "iso-image-writer"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "iso-image-writer"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ kdePackages.isoimagewriter ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc/kdeconnect.nix b/progs/misc/kdeconnect.nix index 77f60d4..f8b9fd6 100644 --- a/progs/misc/kdeconnect.nix +++ b/progs/misc/kdeconnect.nix @@ -6,41 +6,17 @@ tools, ... }: let - ###### # user defined - name = "kdeconnect"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "kdeconnect"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { services.kdeconnect.enable = true; }; @@ -55,24 +31,4 @@ allowedUDPPortRanges = allowedTCPPortRanges; }; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc/ledger.nix b/progs/misc/ledger.nix index 945c87f..34a79e2 100644 --- a/progs/misc/ledger.nix +++ b/progs/misc/ledger.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "ledger"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ledger"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ ledger-live-desktop @@ -49,24 +27,4 @@ System = { hardware.ledger.enable = true; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc/vesktop.nix b/progs/misc/vesktop.nix index e27e0a4..2fcf5de 100644 --- a/progs/misc/vesktop.nix +++ b/progs/misc/vesktop.nix @@ -6,66 +6,20 @@ tools, ... }: let - ###### # user defined - name = "vesktop"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vesktop"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.vesktop = { enable = true; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From ac318ed10f9b79acd3f70a88aa18d1ef107f84c3 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 15:57:31 -0400 Subject: [PATCH 157/236] refactor(office-modules) : refactored all modules with new generators --- progs/office/libreoffice.nix | 70 +++++++----------------------------- progs/office/qualculate.nix | 70 +++++++----------------------------- 2 files changed, 26 insertions(+), 114 deletions(-) diff --git a/progs/office/libreoffice.nix b/progs/office/libreoffice.nix index 086c63a..d191ce3 100644 --- a/progs/office/libreoffice.nix +++ b/progs/office/libreoffice.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "libreoffice"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = rec { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "libreoffice"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ libreoffice ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/office/qualculate.nix b/progs/office/qualculate.nix index 8b655b7..98c2d73 100644 --- a/progs/office/qualculate.nix +++ b/progs/office/qualculate.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "qualculate"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = rec { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "qualculate"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ qalculate-qt ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 0d14885ed51dc72ad402aa40f5df53e581902c40 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:03:45 -0400 Subject: [PATCH 158/236] refactor(zsh-modules) : refactored all modules with new generators --- progs/shells/zsh/fzf.nix | 70 ++++++------------------------- progs/shells/zsh/oh-my-zsh.nix | 76 +++++++--------------------------- progs/shells/zsh/yazi.nix | 71 +++++++------------------------ 3 files changed, 42 insertions(+), 175 deletions(-) diff --git a/progs/shells/zsh/fzf.nix b/progs/shells/zsh/fzf.nix index 35ad37b..54a77cc 100644 --- a/progs/shells/zsh/fzf.nix +++ b/progs/shells/zsh/fzf.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "fzf"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "fzf"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.fzf = { enable = true; @@ -50,26 +28,4 @@ zsh-fzf-tab ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/shells/zsh/oh-my-zsh.nix b/progs/shells/zsh/oh-my-zsh.nix index 47666e1..3a82e99 100644 --- a/progs/shells/zsh/oh-my-zsh.nix +++ b/progs/shells/zsh/oh-my-zsh.nix @@ -6,72 +6,26 @@ tools, ... }: let - ###### # user defined - name = "oh-my-zsh"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - plugins = lib.mkOption { - type = lib.types.listOf lib.types.str; - description = "A list of Oh My Zsh plugins to enable."; - default = []; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "oh-my-zsh"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + plugins = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "A list of Oh My Zsh plugins to enable."; + default = []; + }; }; }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.zsh.oh-my-zsh = { enable = true; plugins = cfg.plugins; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/shells/zsh/yazi.nix b/progs/shells/zsh/yazi.nix index a0c799b..0260b28 100644 --- a/progs/shells/zsh/yazi.nix +++ b/progs/shells/zsh/yazi.nix @@ -6,41 +6,20 @@ tools, ... }: let - ###### # user defined - name = "yazi"; - subfolder = "yazi"; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = rec { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "yazi"; + subfolder = "yazi"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.yazi = { enable = true; @@ -75,26 +54,4 @@ }; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From bcae6db29c71d79f754eaa364b252fba77ff7029 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:20:34 -0400 Subject: [PATCH 159/236] refactor(dev-modules) : refactored all modules with new generators --- progs/dev/boot.nix | 89 +++++++++++-------------------------------- progs/dev/docker.nix | 68 +++++++-------------------------- progs/dev/ghostty.nix | 68 ++++++--------------------------- progs/dev/git.nix | 68 ++++++--------------------------- progs/dev/network.nix | 70 +++++++--------------------------- progs/dev/nix.nix | 81 +++++++++------------------------------ progs/dev/postman.nix | 70 +++++++--------------------------- progs/dev/vim.nix | 68 ++++++--------------------------- progs/dev/vscode.nix | 70 +++++++--------------------------- 9 files changed, 126 insertions(+), 526 deletions(-) diff --git a/progs/dev/boot.nix b/progs/dev/boot.nix index e301d1b..e0f0a43 100644 --- a/progs/dev/boot.nix +++ b/progs/dev/boot.nix @@ -6,73 +6,28 @@ tools, ... }: let - ###### # user defined - name = "boot"; - subfolder = "boot"; - main-repo = null; - branch = null; - imports = [ - "efibootmgr" - "grub" - "gparted" - "os-prober" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - efibootmgr.enable = true; - grub.enable = true; - gparted.enable = true; - os-prober.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "boot"; + subfolder = "boot"; + imports = [ + "efibootmgr" + "grub" + "gparted" + "os-prober" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + settings = { + efibootmgr.enable = true; + grub.enable = true; + gparted.enable = true; + os-prober.enable = true; }; }; -} +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/docker.nix b/progs/dev/docker.nix index 17cecf9..a684152 100644 --- a/progs/dev/docker.nix +++ b/progs/dev/docker.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "docker"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "docker"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ docker @@ -51,24 +29,4 @@ System = { virtualisation.docker.enable = true; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/ghostty.nix b/progs/dev/ghostty.nix index bb5f51d..897e8e6 100644 --- a/progs/dev/ghostty.nix +++ b/progs/dev/ghostty.nix @@ -6,41 +6,17 @@ tools, ... }: let - ###### # user defined - name = "ghostty"; - subfolder = null; - main-repo = null; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ghostty"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.ghostty = { enable = true; @@ -53,26 +29,4 @@ }; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/git.nix b/progs/dev/git.nix index 3539567..4696ff6 100644 --- a/progs/dev/git.nix +++ b/progs/dev/git.nix @@ -6,41 +6,17 @@ tools, ... }: let - ###### # user defined - name = "git"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "git"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.git = { enable = true; @@ -53,26 +29,4 @@ }; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/network.nix b/progs/dev/network.nix index 420181a..252f556 100644 --- a/progs/dev/network.nix +++ b/progs/dev/network.nix @@ -6,67 +6,23 @@ tools, ... }: let - ###### # user defined - name = "network"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "network"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ netcat-openbsd nmap ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/nix.nix b/progs/dev/nix.nix index a6ab113..5c68084 100644 --- a/progs/dev/nix.nix +++ b/progs/dev/nix.nix @@ -6,69 +6,24 @@ tools, ... }: let - ###### # user defined - name = "nix"; - subfolder = "nix"; - main-repo = null; - branch = null; - imports = [ - "alejandra" - "nixd" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - alejandra.enable = true; - nixd.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "nix"; + subfolder = "nix"; + imports = [ + "alejandra" + "nixd" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + settings = { + alejandra.enable = true; + nixd.enable = true; }; }; -} +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/postman.nix b/progs/dev/postman.nix index 85dbc7e..c192c4e 100644 --- a/progs/dev/postman.nix +++ b/progs/dev/postman.nix @@ -6,66 +6,22 @@ tools, ... }: let - ###### # user defined - name = "postman"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "postman"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ postman ]; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/vim.nix b/progs/dev/vim.nix index 698d14a..f2a2eaf 100644 --- a/progs/dev/vim.nix +++ b/progs/dev/vim.nix @@ -6,41 +6,17 @@ tools, ... }: let - ###### # user defined - name = "vim"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vim"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.vim = { enable = true; @@ -51,26 +27,4 @@ }; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/dev/vscode.nix b/progs/dev/vscode.nix index bdcd8d1..c3f2ae2 100644 --- a/progs/dev/vscode.nix +++ b/progs/dev/vscode.nix @@ -6,41 +6,21 @@ tools, ... }: let - ###### # user defined - name = "vscode"; - subfolder = null; - main-repo = "nix"; - branch = "unstable"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vscode"; + main-repo = "nix"; + branch = "unstable"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { + extras = { }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.vscode = { enable = true; @@ -51,26 +31,4 @@ # }; }; }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 450f3f6f501941bbd24d64f4bf71311dfd64273b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:24:38 -0400 Subject: [PATCH 160/236] refactor(shells-modules) : refactored all modules with new generators --- progs/shells/zsh.nix | 105 ++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 72 deletions(-) diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index a831d52..67596b7 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -6,60 +6,41 @@ tools, ... }: let - ###### # user defined - name = "zsh"; - subfolder = "zsh"; - main-repo = "nix"; - branch = "latest"; - imports = [ - "oh-my-zsh" - "yazi" - "fzf" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - aliases = lib.mkOption { - type = lib.types.attrsOf lib.types.str; - description = "An attribute set of shell aliases to define."; - default = {}; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "zsh"; + subfolder = "zsh"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "oh-my-zsh" + "yazi" + "fzf" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + aliases = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + description = "An attribute set of shell aliases to define."; + default = {}; + }; }; - }; - extras = { - }; - settings = { - oh-my-zsh = { - enable = true; - plugins = [ - "git" - "sudo" - ]; + settings = { + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "sudo" + ]; + }; + fzf.enable = true; + yazi.enable = true; }; - fzf.enable = true; - yazi.enable = true; }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/.p10k.zsh}"}"; programs.zsh = { @@ -92,24 +73,4 @@ System = { programs.zsh.enable = true; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 9b19e0c5cac6419758ded142b560f151a5bcf23d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:33:50 -0400 Subject: [PATCH 161/236] refactor(progs-modules) : refactored all modules with new generators --- progs/browsers.nix | 85 ++++++++------------------------ progs/desktop.nix | 87 +++++++++------------------------ progs/dev.nix | 119 +++++++++++++++------------------------------ progs/misc.nix | 101 ++++++++++++-------------------------- progs/office.nix | 81 +++++++----------------------- 5 files changed, 133 insertions(+), 340 deletions(-) diff --git a/progs/browsers.nix b/progs/browsers.nix index c0f499d..7526f04 100644 --- a/progs/browsers.nix +++ b/progs/browsers.nix @@ -6,71 +6,28 @@ tools, ... }: let - ###### # user defined - name = "browsers"; - subfolder = "browsers"; - main-repo = null; - branch = null; - imports = [ - "firefox" - "chromium" - "zen" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - firefox.enable = true; - chromium.enable = true; - zen.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "browsers"; + subfolder = "browsers"; + imports = [ + "firefox" + "chromium" + "zen" + ]; + extras = { }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + settings = { + firefox.enable = true; + chromium.enable = true; + zen.enable = true; }; }; -} +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/desktop.nix b/progs/desktop.nix index b1aefe9..0db4423 100644 --- a/progs/desktop.nix +++ b/progs/desktop.nix @@ -6,71 +6,30 @@ tools, ... }: let - ###### # user defined - name = "desktop"; - subfolder = "desktop"; - main-repo = "nix"; - branch = "latest"; - imports = [ - "plasma" - "klassy" - "rofi" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - plasma.enable = true; - klassy.enable = true; - rofi.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "desktop"; + subfolder = "desktop"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "plasma" + "klassy" + "rofi" + ]; + extras = { }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + settings = { + plasma.enable = true; + klassy.enable = true; + rofi.enable = true; }; }; -} +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev.nix b/progs/dev.nix index f82e47a..4103328 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -6,66 +6,47 @@ tools, ... }: let - ###### # user defined - name = "dev"; - subfolder = "dev"; - main-repo = "nix"; - branch = "latest"; - imports = [ - ## "editors" => # "vim" "vscode" - ## "lang" => # "nix" - ## "terminals" => # "ghostty" - ## "virtualization" => # "docker" - ## "network" => # "postman" - "nix" - "boot" - "network" - "ghostty" - "git" #solo - "vim" - "vscode" - "docker" - "postman" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - nix.enable = true; - boot.enable = true; - network.enable = true; - ghostty.enable = true; - git.enable = true; - vim.enable = true; - vscode.enable = true; - docker.enable = true; - postman.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "dev"; + subfolder = "dev"; + main-repo = "nix"; + branch = "latest"; + imports = [ + ## "editors" => # "vim" "vscode" + ## "lang" => # "nix" + ## "terminals" => # "ghostty" + ## "virtualization" => # "docker" + ## "network" => # "postman" + "nix" + "boot" + "network" + "ghostty" #somewhere else + "git" #solo + "vim" + "vscode" + "docker" + "postman" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { + settings = { + nix.enable = true; + boot.enable = true; + network.enable = true; + ghostty.enable = true; + git.enable = true; + vim.enable = true; + vscode.enable = true; + docker.enable = true; + postman.enable = true; }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ python3 # Lang @@ -75,24 +56,4 @@ }; System = { }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/misc.nix b/progs/misc.nix index 937e6f8..43c1bd7 100644 --- a/progs/misc.nix +++ b/progs/misc.nix @@ -6,57 +6,38 @@ tools, ... }: let - ###### # user defined - name = "misc"; - subfolder = "misc"; - main-repo = "nix"; - branch = "latest"; - imports = [ - "ledger" - "bambu-studio" - "bitwarden" - "fastfetch" - "iso-image-writer" - "vesktop" - "kdeconnect" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - ledger.enable = true; - bambu-studio.enable = true; - bitwarden.enable = true; - fastfetch.enable = true; - iso-image-writer.enable = true; - kdeconnect.enable = true; - vesktop.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "misc"; + subfolder = "misc"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "ledger" + "bambu-studio" + "bitwarden" + "fastfetch" + "iso-image-writer" + "vesktop" + "kdeconnect" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - Common = - inheritedSettings - // { + settings = { + ledger.enable = true; + bambu-studio.enable = true; + bitwarden.enable = true; + fastfetch.enable = true; + iso-image-writer.enable = true; + kdeconnect.enable = true; + vesktop.enable = true; }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ vlc # Misc @@ -64,24 +45,4 @@ }; System = { }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/progs/office.nix b/progs/office.nix index e7f3c3c..cb15181 100644 --- a/progs/office.nix +++ b/progs/office.nix @@ -6,69 +6,24 @@ tools, ... }: let - ###### # user defined - name = "office"; - subfolder = "office"; - main-repo = null; - branch = null; - imports = [ - "libreoffice" - "qualculate" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} program and related settings."; - }; - extras = { - }; - settings = { - libreoffice.enable = true; - qualculate.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "office"; + subfolder = "office"; + imports = [ + "libreoffice" + "qualculate" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + settings = { + libreoffice.enable = true; + qualculate.enable = true; }; }; -} +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) From b4d93e4cfa38b32b5db0826a8cee48e9c9e116e2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:40:15 -0400 Subject: [PATCH 162/236] refactor(fs-modules) : refactored all modules with new generators --- sys/filesystems/btrfs.nix | 66 +++++++---------------------------- sys/filesystems/exfat.nix | 69 ++++++++---------------------------- sys/filesystems/ntfs.nix | 73 ++++++++------------------------------- 3 files changed, 42 insertions(+), 166 deletions(-) diff --git a/sys/filesystems/btrfs.nix b/sys/filesystems/btrfs.nix index 735bf33..099b5d7 100644 --- a/sys/filesystems/btrfs.nix +++ b/sys/filesystems/btrfs.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "btrfs"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "btrfs"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ btrfs-progs @@ -49,24 +27,4 @@ btrfs = true; }; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/filesystems/exfat.nix b/sys/filesystems/exfat.nix index 42297f0..48f1408 100644 --- a/sys/filesystems/exfat.nix +++ b/sys/filesystems/exfat.nix @@ -6,65 +6,26 @@ tools, ... }: let - ###### # user defined - name = "exfat"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; - }; - settings = null; - ###### # computed - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "exfat"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ - ntfs3g - ntfsprogs + exfat + exfatprogs ]; boot.supportedFilesystems = { - ntfs = true; - }; - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + exfat = true; }; }; -} +}) diff --git a/sys/filesystems/ntfs.nix b/sys/filesystems/ntfs.nix index 649bdbf..e5e86bb 100644 --- a/sys/filesystems/ntfs.nix +++ b/sys/filesystems/ntfs.nix @@ -6,69 +6,26 @@ tools, ... }: let - ###### # user defined - name = "ntfs"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ntfs"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ - exfat - exfatprogs + ntfs3g + ntfsprogs ]; boot.supportedFilesystems = { - exfat = true; - }; - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + ntfs = true; }; }; -} +}) From 9b5f1fd4325e19eac8bd63a06c31563055a76b2c Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:45:23 -0400 Subject: [PATCH 163/236] refactor(hw-modules) : refactored all modules with new generators --- sys/hardware/nvidia.nix | 63 ++++++-------------------------------- sys/hardware/printer.nix | 64 ++++++++------------------------------ sys/hardware/sound.nix | 66 ++++++++-------------------------------- 3 files changed, 35 insertions(+), 158 deletions(-) diff --git a/sys/hardware/nvidia.nix b/sys/hardware/nvidia.nix index abdb355..bf8c75f 100644 --- a/sys/hardware/nvidia.nix +++ b/sys/hardware/nvidia.nix @@ -7,40 +7,17 @@ tools, ... }: let - ###### # user defined - name = "nvidia"; - subfolder = null; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = config.sys.hardware.${name}; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "nvidia"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; - ###### # user defined - Home = { }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { hardware = { graphics = { @@ -70,24 +47,4 @@ "modesetting" ]; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/hardware/printer.nix b/sys/hardware/printer.nix index c78e9f9..48da5ec 100644 --- a/sys/hardware/printer.nix +++ b/sys/hardware/printer.nix @@ -6,37 +6,19 @@ tools, ... }: let - ###### # user defined - name = "printer"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; - }; - settings = null; - ###### # computed - packages = pkgs-list.${main-repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "printer"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; - - Common = - inheritedSettings - // { - }; - ###### # user defined + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { }; System = { @@ -45,24 +27,4 @@ cnijfilter2 ]; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/hardware/sound.nix b/sys/hardware/sound.nix index dda4482..6de0120 100644 --- a/sys/hardware/sound.nix +++ b/sys/hardware/sound.nix @@ -6,65 +6,23 @@ tools, ... }: let - ###### # user defined - name = "sound"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "sound"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; }; - ###### # user defined - Home = { }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { services.pipewire = { enable = true; pulse.enable = true; }; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 206218ef4c717ac51e6f9e10d59409b74df36378 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 16:59:28 -0400 Subject: [PATCH 164/236] refactor(sys-modules) : refactored all modules with new generators --- sys/bootloader.nix | 65 ++++++------------------------ sys/filesystems.nix | 83 ++++++++++----------------------------- sys/hardware.nix | 87 ++++++++++++---------------------------- sys/lang.nix | 96 +++++++++++++-------------------------------- sys/networking.nix | 66 ++++++------------------------- sys/users.nix | 66 ++++++------------------------- 6 files changed, 106 insertions(+), 357 deletions(-) diff --git a/sys/bootloader.nix b/sys/bootloader.nix index 6838067..c01059e 100644 --- a/sys/bootloader.nix +++ b/sys/bootloader.nix @@ -6,41 +6,18 @@ tools, ... }: let - ###### # user defined - name = "bootloader"; - subfolder = "bootloader"; - main-repo = null; - branch = null; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bootloader"; + subfolder = "bootloader"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { boot.loader = { grub = { @@ -59,24 +36,4 @@ }; }; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/filesystems.nix b/sys/filesystems.nix index 6cd98c0..6637387 100644 --- a/sys/filesystems.nix +++ b/sys/filesystems.nix @@ -6,69 +6,26 @@ tools, ... }: let - ###### # user defined - name = "filesystems"; - subfolder = "filesystems"; - main-repo = null; - branch = null; - imports = [ - "ntfs" - "exfat" - "btrfs" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; - }; - settings = { - ntfs.enable = true; - exfat.enable = true; - btrfs.enable = true; - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten (lib.lists.flatten ["./." parentPathAsList])); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined - Home = { - }; - System = { - }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "filesystems"; + subfolder = "filesystems"; + imports = [ + "ntfs" + "exfat" + "btrfs" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; + settings = { + ntfs.enable = true; + exfat.enable = true; + btrfs.enable = true; }; }; -} +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/sys/hardware.nix b/sys/hardware.nix index 329e286..acf810e 100644 --- a/sys/hardware.nix +++ b/sys/hardware.nix @@ -6,51 +6,32 @@ tools, ... }: let - ###### # user defined - name = "hardware"; - subfolder = "hardware"; - main-repo = "nix"; - branch = "latest"; - imports = [ - "nvidia" - "printer" - "sound" - # "bluetooth" - ]; - options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; - }; - settings = { - nvidia.enable = false; # FIX : module to fix once a stable and working nvidia version is available - printer.enable = true; - sound.enable = true; - # bluetooth.enable = true; #TODO : move bluetooth to its own module - }; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "hardware"; + subfolder = "hardware"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "nvidia" + "printer" + "sound" + # "bluetooth" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; }; - Common = - inheritedSettings - // { + settings = { + nvidia.enable = false; # FIX : module to fix once a stable and working nvidia version is available + printer.enable = true; + sound.enable = true; + # bluetooth.enable = true; #TODO : move bluetooth to its own module }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { # TODO : move bluetooth to its own module hardware = { @@ -68,24 +49,4 @@ usbutils ]; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/lang.nix b/sys/lang.nix index d9b7a8a..8ebd477 100644 --- a/sys/lang.nix +++ b/sys/lang.nix @@ -6,56 +6,34 @@ tools, ... }: let - ###### # user defined - name = "lang"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; - timeZone = lib.mkOption { - type = lib.types.str; - default = "America/Toronto"; - description = "The system time zone."; - }; - defaultLang = lib.mkOption { - type = lib.types.str; - default = "en_US.UTF-8"; - description = "The system default locale."; - }; - keyboardLayout = lib.mkOption { - type = lib.types.str; - default = "fr"; - description = "The system keyboard layout."; - }; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lang"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + timeZone = lib.mkOption { + type = lib.types.str; + default = "America/Toronto"; + description = "The system time zone."; + }; + defaultLang = lib.mkOption { + type = lib.types.str; + default = "en_US.UTF-8"; + description = "The system default locale."; + }; + keyboardLayout = lib.mkOption { + type = lib.types.str; + default = "fr"; + description = "The system keyboard layout."; + }; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { time.timeZone = cfg.timeZone; i18n = { @@ -67,24 +45,4 @@ console.keyMap = cfg.keyboardLayout; services.xserver.xkb.layout = cfg.keyboardLayout; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/networking.nix b/sys/networking.nix index 8404bd9..bfc3b22 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "networking"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "networking"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { networking = { hostName = "NixOs"; # FEAT : make this part of baseSettings @@ -78,24 +56,4 @@ ]; ## FEAT : maybe move somewhere else ? }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) diff --git a/sys/users.nix b/sys/users.nix index d94e9a8..1832534 100644 --- a/sys/users.nix +++ b/sys/users.nix @@ -6,41 +6,19 @@ tools, ... }: let - ###### # user defined - name = "users"; - subfolder = null; - main-repo = "nix"; - branch = "latest"; - imports = null; - options = { - enable = lib.mkEnableOption "Enables ${name} related settings."; - }; - settings = null; - ###### # computed - packages = - if main-repo != null && branch != null - then pkgs-list.${main-repo}.${branch} - else null; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { - inherit config currentPathAsList; - }; - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "users"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; }; - ###### # user defined - Home = { }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { users = { # mutableUsers = false; # BAZINGA @@ -72,24 +50,4 @@ }; }; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated - inherit imports options; # user defined - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 84743d0cfc00ecfd906d4ac000cd8e175e3027a5 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 17:17:34 -0400 Subject: [PATCH 165/236] fix(tools) : added toggable param --- tools.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools.nix b/tools.nix index ac2501a..9555c7f 100644 --- a/tools.nix +++ b/tools.nix @@ -140,6 +140,7 @@ parentPathAsList, tools, name, + togglable ? true, subfolder ? null, main-repo ? null, # pas sur que ce soit necessaire plus j'y reflechis. branch ? null, # pas sur que ce soit necessaire plus j'y reflechis. @@ -148,9 +149,10 @@ options ? null, settings ? null, extras ? null, + ... }: rec { inherit config lib pkgs-list parentPathAsList tools; - inherit name subfolder main-repo branch imports specialImports options settings extras; + inherit name togglable subfolder main-repo branch imports specialImports options settings extras; packages = if main-repo != null && branch != null then pkgs-list.${main-repo}.${branch} @@ -180,6 +182,7 @@ parentPathAsList, tools, name, + togglable ? true, subfolder ? null, main-repo ? null, # pas sur que ce soit necessaire plus j'y reflechis. branch ? null, # pas sur que ce soit necessaire plus j'y reflechis. @@ -196,6 +199,7 @@ Common, Home ? {}, System ? {}, + ... }: let HomeConfig = Common // Home; SystemConfig = Common // System; @@ -206,6 +210,7 @@ inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined inherit specialImports; # user defined + inherit togglable; # user defined context = "Home"; Config = HomeConfig; }; @@ -214,6 +219,7 @@ inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined inherit specialImports; # user defined + inherit togglable; # user defined context = "System"; Config = SystemConfig; }; From 376f4952d3b7f5f85650194bce2b9b88fe605fa8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 17:20:11 -0400 Subject: [PATCH 166/236] refactor(progs) : refactored all modules with new generators --- progs.nix | 78 +++++++++++++++---------------------------------------- 1 file changed, 21 insertions(+), 57 deletions(-) diff --git a/progs.nix b/progs.nix index 943c10f..c0c3ace 100644 --- a/progs.nix +++ b/progs.nix @@ -7,40 +7,27 @@ parentPathAsList ? [], ... }: let - ###### # user defined - name = "progs"; - subfolder = "progs"; - repo = "nix"; - branch = "latest"; - imports = [ - "dev" - "misc" - "shells" - "office" - "desktop" - "browsers" - ]; - options = null; - newSettings.${name} = { + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "progs"; + togglable = false; + subfolder = "progs"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "dev" + "misc" + "shells" + "office" + "desktop" + "browsers" + ]; + settings = (lib.recursiveUpdate baseSettings {}).${name}; }; - settings = (lib.recursiveUpdate baseSettings newSettings).${name}; - ###### # computed - packages = pkgs-list.${repo}.${branch}; - currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - inheritedSettings = - if imports != null || settings != null - then - tools.inheritSettings { - inherit currentPathAsList imports settings; - } - else { - }; - Common = - inheritedSettings - // { - }; - ###### # user defined +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch imports specialImports options settings extras; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs = { thunderbird = { @@ -72,27 +59,4 @@ virt-manager.enable = true; # Virtualization }; }; - ###### # computed - HomeConfig = Common // Home; - SystemConfig = Common // System; -in { - # FIXME : find a way to make more uniform with the other modules - config = { - Home = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated - inherit options imports; # user defined - togglable = false; - context = "Home"; - Config = HomeConfig; - }; - System = tools.contextualModule { - inherit lib config tools; # deps - inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated - inherit options imports; # user defined - togglable = false; - context = "System"; - Config = SystemConfig; - }; - }; -} +}) From 2abeb248c890fad06876fe6f5f146d19b7b6ea20 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 17:38:04 -0400 Subject: [PATCH 167/236] refactor(all) : added toggable option to all modules --- progs.nix | 2 +- progs/browsers.nix | 2 +- progs/browsers/chromium.nix | 2 +- progs/browsers/firefox.nix | 2 +- progs/browsers/zen.nix | 2 +- progs/desktop.nix | 2 +- progs/desktop/klassy.nix | 2 +- progs/desktop/plasma.nix | 2 +- progs/desktop/rofi.nix | 2 +- progs/dev.nix | 2 +- progs/dev/boot.nix | 2 +- progs/dev/boot/efibootmgr.nix | 2 +- progs/dev/boot/gparted.nix | 2 +- progs/dev/boot/grub.nix | 2 +- progs/dev/boot/os-prober.nix | 2 +- progs/dev/docker.nix | 2 +- progs/dev/ghostty.nix | 2 +- progs/dev/git.nix | 2 +- progs/dev/network.nix | 2 +- progs/dev/nix.nix | 2 +- progs/dev/nix/alejandra.nix | 2 +- progs/dev/nix/nixd.nix | 2 +- progs/dev/postman.nix | 2 +- progs/dev/vim.nix | 2 +- progs/dev/vscode.nix | 2 +- progs/misc.nix | 2 +- progs/misc/bambu-studio.nix | 2 +- progs/misc/bitwarden.nix | 2 +- progs/misc/fastfetch.nix | 2 +- progs/misc/iso-image-writer.nix | 2 +- progs/misc/kdeconnect.nix | 2 +- progs/misc/ledger.nix | 2 +- progs/misc/vesktop.nix | 2 +- progs/office.nix | 2 +- progs/office/libreoffice.nix | 2 +- progs/office/qualculate.nix | 2 +- progs/shells.nix | 2 +- progs/shells/zsh.nix | 2 +- progs/shells/zsh/fzf.nix | 2 +- progs/shells/zsh/oh-my-zsh.nix | 2 +- progs/shells/zsh/yazi.nix | 2 +- sys/bootloader.nix | 2 +- sys/filesystems.nix | 2 +- sys/filesystems/btrfs.nix | 2 +- sys/filesystems/exfat.nix | 2 +- sys/filesystems/ntfs.nix | 2 +- sys/hardware.nix | 2 +- sys/hardware/nvidia.nix | 2 +- sys/hardware/printer.nix | 2 +- sys/hardware/sound.nix | 2 +- sys/lang.nix | 2 +- sys/networking.nix | 2 +- sys/users.nix | 2 +- 53 files changed, 53 insertions(+), 53 deletions(-) diff --git a/progs.nix b/progs.nix index c0c3ace..1695768 100644 --- a/progs.nix +++ b/progs.nix @@ -26,7 +26,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name togglable subfolder main-repo branch imports specialImports options settings extras; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs = { diff --git a/progs/browsers.nix b/progs/browsers.nix index 7526f04..4d07c29 100644 --- a/progs/browsers.nix +++ b/progs/browsers.nix @@ -28,6 +28,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/progs/browsers/chromium.nix b/progs/browsers/chromium.nix index 21827ab..7446671 100644 --- a/progs/browsers/chromium.nix +++ b/progs/browsers/chromium.nix @@ -15,7 +15,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.chromium = { diff --git a/progs/browsers/firefox.nix b/progs/browsers/firefox.nix index 792c589..5ad14b4 100644 --- a/progs/browsers/firefox.nix +++ b/progs/browsers/firefox.nix @@ -21,7 +21,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.firefox = { diff --git a/progs/browsers/zen.nix b/progs/browsers/zen.nix index d6536bd..57f2752 100644 --- a/progs/browsers/zen.nix +++ b/progs/browsers/zen.nix @@ -18,7 +18,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.zen-browser = { diff --git a/progs/desktop.nix b/progs/desktop.nix index 0db4423..73d2ab0 100644 --- a/progs/desktop.nix +++ b/progs/desktop.nix @@ -30,6 +30,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix index 2dff631..18a5b8f 100644 --- a/progs/desktop/klassy.nix +++ b/progs/desktop/klassy.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages.repos; [ diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 932df1d..3fd51d0 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -18,7 +18,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.plasma = { diff --git a/progs/desktop/rofi.nix b/progs/desktop/rofi.nix index 704f0d3..505dacf 100644 --- a/progs/desktop/rofi.nix +++ b/progs/desktop/rofi.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.rofi = { diff --git a/progs/dev.nix b/progs/dev.nix index 4103328..f8def12 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -45,7 +45,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/boot.nix b/progs/dev/boot.nix index e0f0a43..de3cd11 100644 --- a/progs/dev/boot.nix +++ b/progs/dev/boot.nix @@ -28,6 +28,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/progs/dev/boot/efibootmgr.nix b/progs/dev/boot/efibootmgr.nix index 5616e6b..ae272f9 100644 --- a/progs/dev/boot/efibootmgr.nix +++ b/progs/dev/boot/efibootmgr.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/boot/gparted.nix b/progs/dev/boot/gparted.nix index 05014b0..8a348e7 100644 --- a/progs/dev/boot/gparted.nix +++ b/progs/dev/boot/gparted.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/boot/grub.nix b/progs/dev/boot/grub.nix index e0c44c2..9f23673 100644 --- a/progs/dev/boot/grub.nix +++ b/progs/dev/boot/grub.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/boot/os-prober.nix b/progs/dev/boot/os-prober.nix index 8acdd5b..3f52624 100644 --- a/progs/dev/boot/os-prober.nix +++ b/progs/dev/boot/os-prober.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/docker.nix b/progs/dev/docker.nix index a684152..e2b6ba7 100644 --- a/progs/dev/docker.nix +++ b/progs/dev/docker.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/ghostty.nix b/progs/dev/ghostty.nix index 897e8e6..2428657 100644 --- a/progs/dev/ghostty.nix +++ b/progs/dev/ghostty.nix @@ -15,7 +15,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.ghostty = { diff --git a/progs/dev/git.nix b/progs/dev/git.nix index 4696ff6..083cb4a 100644 --- a/progs/dev/git.nix +++ b/progs/dev/git.nix @@ -15,7 +15,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.git = { diff --git a/progs/dev/network.nix b/progs/dev/network.nix index 252f556..9fda8a8 100644 --- a/progs/dev/network.nix +++ b/progs/dev/network.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/nix.nix b/progs/dev/nix.nix index 5c68084..1762b9a 100644 --- a/progs/dev/nix.nix +++ b/progs/dev/nix.nix @@ -24,6 +24,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/progs/dev/nix/alejandra.nix b/progs/dev/nix/alejandra.nix index d471d98..f2b2ceb 100644 --- a/progs/dev/nix/alejandra.nix +++ b/progs/dev/nix/alejandra.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/nix/nixd.nix b/progs/dev/nix/nixd.nix index ff1982d..7c6cda7 100644 --- a/progs/dev/nix/nixd.nix +++ b/progs/dev/nix/nixd.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/postman.nix b/progs/dev/postman.nix index c192c4e..c1dfb80 100644 --- a/progs/dev/postman.nix +++ b/progs/dev/postman.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/dev/vim.nix b/progs/dev/vim.nix index f2a2eaf..ad6bae0 100644 --- a/progs/dev/vim.nix +++ b/progs/dev/vim.nix @@ -15,7 +15,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.vim = { diff --git a/progs/dev/vscode.nix b/progs/dev/vscode.nix index c3f2ae2..9575e84 100644 --- a/progs/dev/vscode.nix +++ b/progs/dev/vscode.nix @@ -19,7 +19,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.vscode = { diff --git a/progs/misc.nix b/progs/misc.nix index 43c1bd7..697431f 100644 --- a/progs/misc.nix +++ b/progs/misc.nix @@ -36,7 +36,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/misc/bambu-studio.nix b/progs/misc/bambu-studio.nix index 3974b2b..b0b1ed4 100644 --- a/progs/misc/bambu-studio.nix +++ b/progs/misc/bambu-studio.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/misc/bitwarden.nix b/progs/misc/bitwarden.nix index 0c9a92f..146083e 100644 --- a/progs/misc/bitwarden.nix +++ b/progs/misc/bitwarden.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/misc/fastfetch.nix b/progs/misc/fastfetch.nix index 8dd7697..1fa906e 100644 --- a/progs/misc/fastfetch.nix +++ b/progs/misc/fastfetch.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/misc/iso-image-writer.nix b/progs/misc/iso-image-writer.nix index d116bee..747b1df 100644 --- a/progs/misc/iso-image-writer.nix +++ b/progs/misc/iso-image-writer.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/misc/kdeconnect.nix b/progs/misc/kdeconnect.nix index f8b9fd6..17363f6 100644 --- a/progs/misc/kdeconnect.nix +++ b/progs/misc/kdeconnect.nix @@ -15,7 +15,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { services.kdeconnect.enable = true; diff --git a/progs/misc/ledger.nix b/progs/misc/ledger.nix index 34a79e2..c1723b8 100644 --- a/progs/misc/ledger.nix +++ b/progs/misc/ledger.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/misc/vesktop.nix b/progs/misc/vesktop.nix index 2fcf5de..2e8fe05 100644 --- a/progs/misc/vesktop.nix +++ b/progs/misc/vesktop.nix @@ -15,7 +15,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.vesktop = { diff --git a/progs/office.nix b/progs/office.nix index cb15181..88adb8c 100644 --- a/progs/office.nix +++ b/progs/office.nix @@ -24,6 +24,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/progs/office/libreoffice.nix b/progs/office/libreoffice.nix index d191ce3..d099174 100644 --- a/progs/office/libreoffice.nix +++ b/progs/office/libreoffice.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/office/qualculate.nix b/progs/office/qualculate.nix index 98c2d73..912419f 100644 --- a/progs/office/qualculate.nix +++ b/progs/office/qualculate.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ diff --git a/progs/shells.nix b/progs/shells.nix index bf7f39c..2ceeb3b 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -36,6 +36,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch imports options settings extras; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index 67596b7..a08da3d 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -39,7 +39,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/.p10k.zsh}"}"; diff --git a/progs/shells/zsh/fzf.nix b/progs/shells/zsh/fzf.nix index 54a77cc..38ee165 100644 --- a/progs/shells/zsh/fzf.nix +++ b/progs/shells/zsh/fzf.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.fzf = { diff --git a/progs/shells/zsh/oh-my-zsh.nix b/progs/shells/zsh/oh-my-zsh.nix index 3a82e99..45cc5fd 100644 --- a/progs/shells/zsh/oh-my-zsh.nix +++ b/progs/shells/zsh/oh-my-zsh.nix @@ -20,7 +20,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.zsh.oh-my-zsh = { diff --git a/progs/shells/zsh/yazi.nix b/progs/shells/zsh/yazi.nix index 0260b28..45fabb4 100644 --- a/progs/shells/zsh/yazi.nix +++ b/progs/shells/zsh/yazi.nix @@ -18,7 +18,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { programs.yazi = { diff --git a/sys/bootloader.nix b/sys/bootloader.nix index c01059e..da0e582 100644 --- a/sys/bootloader.nix +++ b/sys/bootloader.nix @@ -16,7 +16,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { boot.loader = { diff --git a/sys/filesystems.nix b/sys/filesystems.nix index 6637387..bfe1230 100644 --- a/sys/filesystems.nix +++ b/sys/filesystems.nix @@ -26,6 +26,6 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; }) diff --git a/sys/filesystems/btrfs.nix b/sys/filesystems/btrfs.nix index 099b5d7..e27be21 100644 --- a/sys/filesystems/btrfs.nix +++ b/sys/filesystems/btrfs.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ diff --git a/sys/filesystems/exfat.nix b/sys/filesystems/exfat.nix index 48f1408..0c0f0c0 100644 --- a/sys/filesystems/exfat.nix +++ b/sys/filesystems/exfat.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ diff --git a/sys/filesystems/ntfs.nix b/sys/filesystems/ntfs.nix index e5e86bb..c0f2f77 100644 --- a/sys/filesystems/ntfs.nix +++ b/sys/filesystems/ntfs.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ diff --git a/sys/hardware.nix b/sys/hardware.nix index acf810e..b26a768 100644 --- a/sys/hardware.nix +++ b/sys/hardware.nix @@ -30,7 +30,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { # TODO : move bluetooth to its own module diff --git a/sys/hardware/nvidia.nix b/sys/hardware/nvidia.nix index bf8c75f..324c2c0 100644 --- a/sys/hardware/nvidia.nix +++ b/sys/hardware/nvidia.nix @@ -16,7 +16,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { hardware = { diff --git a/sys/hardware/printer.nix b/sys/hardware/printer.nix index 48da5ec..5c2de98 100644 --- a/sys/hardware/printer.nix +++ b/sys/hardware/printer.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { }; diff --git a/sys/hardware/sound.nix b/sys/hardware/sound.nix index 6de0120..5df7614 100644 --- a/sys/hardware/sound.nix +++ b/sys/hardware/sound.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { services.pipewire = { diff --git a/sys/lang.nix b/sys/lang.nix index 8ebd477..215bb16 100644 --- a/sys/lang.nix +++ b/sys/lang.nix @@ -32,7 +32,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { time.timeZone = cfg.timeZone; diff --git a/sys/networking.nix b/sys/networking.nix index bfc3b22..21b2ae5 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { networking = { diff --git a/sys/users.nix b/sys/users.nix index 1832534..1eaa74d 100644 --- a/sys/users.nix +++ b/sys/users.nix @@ -17,7 +17,7 @@ }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; - inherit (moduleParams) name subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { users = { From 781e27f9849a2fbf296e88ea98b6558bc9d02749 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 18:16:38 -0400 Subject: [PATCH 168/236] fix(tools) : adding undefined params for generators --- tools.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools.nix b/tools.nix index 9555c7f..f5e3d6d 100644 --- a/tools.nix +++ b/tools.nix @@ -149,7 +149,6 @@ options ? null, settings ? null, extras ? null, - ... }: rec { inherit config lib pkgs-list parentPathAsList tools; inherit name togglable subfolder main-repo branch imports specialImports options settings extras; @@ -199,7 +198,6 @@ Common, Home ? {}, System ? {}, - ... }: let HomeConfig = Common // Home; SystemConfig = Common // System; From bc74d82a09efa9441bebca35d6a714f8e3d8a1e8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 18:22:15 -0400 Subject: [PATCH 169/236] feat(tooglable) : adding togglable parameter on modules not needing to be togglable WIP (needs to fix generators and inheritSettings) --- progs/desktop.nix | 1 + progs/shells.nix | 1 + sys/bootloader.nix | 1 + sys/filesystems.nix | 1 + sys/hardware.nix | 1 + sys/lang.nix | 1 + sys/networking.nix | 1 + sys/users.nix | 1 + 8 files changed, 8 insertions(+) diff --git a/progs/desktop.nix b/progs/desktop.nix index 73d2ab0..84e5314 100644 --- a/progs/desktop.nix +++ b/progs/desktop.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "desktop"; + togglable = false; subfolder = "desktop"; main-repo = "nix"; branch = "latest"; diff --git a/progs/shells.nix b/progs/shells.nix index 2ceeb3b..fc53cbb 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "shells"; + togglable = false; subfolder = "shells"; main-repo = "nix"; branch = "latest"; diff --git a/sys/bootloader.nix b/sys/bootloader.nix index da0e582..438e1e0 100644 --- a/sys/bootloader.nix +++ b/sys/bootloader.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "bootloader"; + togglable = false; subfolder = "bootloader"; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; diff --git a/sys/filesystems.nix b/sys/filesystems.nix index bfe1230..7fa946b 100644 --- a/sys/filesystems.nix +++ b/sys/filesystems.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "filesystems"; + togglable = false; subfolder = "filesystems"; imports = [ "ntfs" diff --git a/sys/hardware.nix b/sys/hardware.nix index b26a768..d0de27a 100644 --- a/sys/hardware.nix +++ b/sys/hardware.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "hardware"; + togglable = false; subfolder = "hardware"; main-repo = "nix"; branch = "latest"; diff --git a/sys/lang.nix b/sys/lang.nix index 215bb16..5316319 100644 --- a/sys/lang.nix +++ b/sys/lang.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "lang"; + togglable = false; main-repo = "nix"; branch = "latest"; options = { diff --git a/sys/networking.nix b/sys/networking.nix index 21b2ae5..ba31e33 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "networking"; + togglable = false; main-repo = "nix"; branch = "latest"; options = { diff --git a/sys/users.nix b/sys/users.nix index 1eaa74d..db51c2a 100644 --- a/sys/users.nix +++ b/sys/users.nix @@ -9,6 +9,7 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "users"; + togglable = false; main-repo = "nix"; branch = "latest"; options = { From 06c00630f407424183cf908e8c5173738d7c9e74 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 21:51:21 -0400 Subject: [PATCH 170/236] feat(terminals) : moved ghostty to a new folder --- flake.nix | 1 + progs.nix | 1 + progs/dev.nix | 2 -- progs/terminals.nix | 27 +++++++++++++++++++++++++++ progs/{dev => terminals}/ghostty.nix | 0 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 progs/terminals.nix rename progs/{dev => terminals}/ghostty.nix (100%) diff --git a/flake.nix b/flake.nix index e861c05..66c33c1 100644 --- a/flake.nix +++ b/flake.nix @@ -103,6 +103,7 @@ dev.enable = true; browsers.enable = true; desktop.enable = true; + terminals.enable = true; }; sys = { version = nixos-version; diff --git a/progs.nix b/progs.nix index 1695768..ede22a3 100644 --- a/progs.nix +++ b/progs.nix @@ -21,6 +21,7 @@ "office" "desktop" "browsers" + "terminals" ]; settings = (lib.recursiveUpdate baseSettings {}).${name}; }; diff --git a/progs/dev.nix b/progs/dev.nix index f8def12..6eb3a4e 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -21,7 +21,6 @@ "nix" "boot" "network" - "ghostty" #somewhere else "git" #solo "vim" "vscode" @@ -35,7 +34,6 @@ nix.enable = true; boot.enable = true; network.enable = true; - ghostty.enable = true; git.enable = true; vim.enable = true; vscode.enable = true; diff --git a/progs/terminals.nix b/progs/terminals.nix new file mode 100644 index 0000000..fb25ac5 --- /dev/null +++ b/progs/terminals.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "terminals"; + subfolder = "terminals"; + imports = [ + "ghostty" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + ghostty.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/ghostty.nix b/progs/terminals/ghostty.nix similarity index 100% rename from progs/dev/ghostty.nix rename to progs/terminals/ghostty.nix From ce34165ea33443c651168ac1a7edc5753e900314 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 21:55:19 -0400 Subject: [PATCH 171/236] feat(editors) : moved vscode + vim to a new folder --- flake.nix | 1 + progs.nix | 1 + progs/dev.nix | 4 ---- progs/editors.nix | 29 +++++++++++++++++++++++++++++ progs/{dev => editors}/vim.nix | 0 progs/{dev => editors}/vscode.nix | 0 6 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 progs/editors.nix rename progs/{dev => editors}/vim.nix (100%) rename progs/{dev => editors}/vscode.nix (100%) diff --git a/flake.nix b/flake.nix index 66c33c1..1d796d4 100644 --- a/flake.nix +++ b/flake.nix @@ -104,6 +104,7 @@ browsers.enable = true; desktop.enable = true; terminals.enable = true; + editors.enable = true; }; sys = { version = nixos-version; diff --git a/progs.nix b/progs.nix index ede22a3..fa22ddc 100644 --- a/progs.nix +++ b/progs.nix @@ -22,6 +22,7 @@ "desktop" "browsers" "terminals" + "editors" ]; settings = (lib.recursiveUpdate baseSettings {}).${name}; }; diff --git a/progs/dev.nix b/progs/dev.nix index 6eb3a4e..3e808a5 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -22,8 +22,6 @@ "boot" "network" "git" #solo - "vim" - "vscode" "docker" "postman" ]; @@ -35,8 +33,6 @@ boot.enable = true; network.enable = true; git.enable = true; - vim.enable = true; - vscode.enable = true; docker.enable = true; postman.enable = true; }; diff --git a/progs/editors.nix b/progs/editors.nix new file mode 100644 index 0000000..6c0333a --- /dev/null +++ b/progs/editors.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "editors"; + subfolder = "editors"; + imports = [ + "vim" + "vscode" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + vim.enable = true; + vscode.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/vim.nix b/progs/editors/vim.nix similarity index 100% rename from progs/dev/vim.nix rename to progs/editors/vim.nix diff --git a/progs/dev/vscode.nix b/progs/editors/vscode.nix similarity index 100% rename from progs/dev/vscode.nix rename to progs/editors/vscode.nix From ca7324b9ec9461919df9cd4bdba2a564348b9697 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:14:50 -0400 Subject: [PATCH 172/236] feat(virtualization) : moved docker + qemu to a new folder --- configuration.nix | 2 -- progs/dev.nix | 7 ++---- progs/dev/virtualization.nix | 29 +++++++++++++++++++++++ progs/dev/{ => virtualization}/docker.nix | 1 + progs/dev/virtualization/qemu.nix | 27 +++++++++++++++++++++ sys/users.nix | 5 ---- 6 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 progs/dev/virtualization.nix rename progs/dev/{ => virtualization}/docker.nix (94%) create mode 100644 progs/dev/virtualization/qemu.nix diff --git a/configuration.nix b/configuration.nix index 7a17b86..b5da1cc 100644 --- a/configuration.nix +++ b/configuration.nix @@ -38,8 +38,6 @@ in { # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; networking.hostName = "NixOs"; virtualisation = { - libvirtd.enable = true; # Virtualization - spiceUSBRedirection.enable = true; # Virtualization vmVariant = { # the following configuration is added only when building VM with `build-vm` virtualisation = { diff --git a/progs/dev.nix b/progs/dev.nix index 3e808a5..f3085c2 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -13,17 +13,14 @@ main-repo = "nix"; branch = "latest"; imports = [ - ## "editors" => # "vim" "vscode" ## "lang" => # "nix" - ## "terminals" => # "ghostty" - ## "virtualization" => # "docker" ## "network" => # "postman" "nix" "boot" "network" "git" #solo - "docker" "postman" + "virtualization" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -33,8 +30,8 @@ boot.enable = true; network.enable = true; git.enable = true; - docker.enable = true; postman.enable = true; + virtualization.enable = true; }; }; in (tools.fullModule rec { diff --git a/progs/dev/virtualization.nix b/progs/dev/virtualization.nix new file mode 100644 index 0000000..3cd46c2 --- /dev/null +++ b/progs/dev/virtualization.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "virtualization"; + subfolder = "virtualization"; + imports = [ + "docker" + "qemu" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + docker.enable = true; + qemu.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/docker.nix b/progs/dev/virtualization/docker.nix similarity index 94% rename from progs/dev/docker.nix rename to progs/dev/virtualization/docker.nix index e2b6ba7..56d80a9 100644 --- a/progs/dev/docker.nix +++ b/progs/dev/virtualization/docker.nix @@ -28,5 +28,6 @@ in (tools.fullModule rec { }; System = { virtualisation.docker.enable = true; + users.groups.docker.members = ["matthieu"]; }; }) diff --git a/progs/dev/virtualization/qemu.nix b/progs/dev/virtualization/qemu.nix new file mode 100644 index 0000000..c050d52 --- /dev/null +++ b/progs/dev/virtualization/qemu.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "qemu"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + virtualisation = { + libvirtd.enable = true; + spiceUSBRedirection.enable = true; + }; + users.groups.libvirtd.members = ["matthieu"]; + }; +}) diff --git a/sys/users.nix b/sys/users.nix index db51c2a..9af788a 100644 --- a/sys/users.nix +++ b/sys/users.nix @@ -33,8 +33,6 @@ in (tools.fullModule rec { group = "users"; extraGroups = [ "wheel" # Enable sudo for the user. - "docker" - "libvirtd" ]; createHome = true; home = "/home/matthieu"; @@ -46,9 +44,6 @@ in (tools.fullModule rec { }; # root.ignoreShellProgramCheck = true; # BAZINGA }; - groups = { - libvirtd.members = ["matthieu"]; - }; }; }; }) From f5a809c5f77fec918f4c0a7909a0f38097114f34 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:22:41 -0400 Subject: [PATCH 173/236] feat(lang) : moved python + nix to a new folder --- progs/dev.nix | 7 ++----- progs/dev/lang.nix | 29 ++++++++++++++++++++++++++ progs/dev/{ => lang}/nix.nix | 0 progs/dev/{ => lang}/nix/alejandra.nix | 0 progs/dev/{ => lang}/nix/nixd.nix | 0 progs/dev/lang/python.nix | 27 ++++++++++++++++++++++++ 6 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 progs/dev/lang.nix rename progs/dev/{ => lang}/nix.nix (100%) rename progs/dev/{ => lang}/nix/alejandra.nix (100%) rename progs/dev/{ => lang}/nix/nixd.nix (100%) create mode 100644 progs/dev/lang/python.nix diff --git a/progs/dev.nix b/progs/dev.nix index f3085c2..ad8e525 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -13,14 +13,13 @@ main-repo = "nix"; branch = "latest"; imports = [ - ## "lang" => # "nix" ## "network" => # "postman" - "nix" "boot" "network" "git" #solo "postman" "virtualization" + "lang" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -32,6 +31,7 @@ git.enable = true; postman.enable = true; virtualization.enable = true; + lang.enable = true; }; }; in (tools.fullModule rec { @@ -40,11 +40,8 @@ in (tools.fullModule rec { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ - python3 # Lang nmap # Network netcat-openbsd # Network ]; }; - System = { - }; }) diff --git a/progs/dev/lang.nix b/progs/dev/lang.nix new file mode 100644 index 0000000..c1801ea --- /dev/null +++ b/progs/dev/lang.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lang"; + subfolder = "lang"; + imports = [ + "nix" + "python" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + nix.enable = true; + python.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/nix.nix b/progs/dev/lang/nix.nix similarity index 100% rename from progs/dev/nix.nix rename to progs/dev/lang/nix.nix diff --git a/progs/dev/nix/alejandra.nix b/progs/dev/lang/nix/alejandra.nix similarity index 100% rename from progs/dev/nix/alejandra.nix rename to progs/dev/lang/nix/alejandra.nix diff --git a/progs/dev/nix/nixd.nix b/progs/dev/lang/nix/nixd.nix similarity index 100% rename from progs/dev/nix/nixd.nix rename to progs/dev/lang/nix/nixd.nix diff --git a/progs/dev/lang/python.nix b/progs/dev/lang/python.nix new file mode 100644 index 0000000..026ab30 --- /dev/null +++ b/progs/dev/lang/python.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "python"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + python3 + ]; + }; +}) From a08cb3fb2defd7c5e9f29a6ff4002f056a4f34b2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:31:56 -0400 Subject: [PATCH 174/236] feat(lang) : moved postman + misc nw pckages to a new folder --- progs/dev.nix | 9 --------- progs/dev/network.nix | 19 ++++++++++--------- progs/dev/network/misc.nix | 28 ++++++++++++++++++++++++++++ progs/dev/{ => network}/postman.nix | 0 4 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 progs/dev/network/misc.nix rename progs/dev/{ => network}/postman.nix (100%) diff --git a/progs/dev.nix b/progs/dev.nix index ad8e525..ab4aaaa 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -13,11 +13,9 @@ main-repo = "nix"; branch = "latest"; imports = [ - ## "network" => # "postman" "boot" "network" "git" #solo - "postman" "virtualization" "lang" ]; @@ -29,7 +27,6 @@ boot.enable = true; network.enable = true; git.enable = true; - postman.enable = true; virtualization.enable = true; lang.enable = true; }; @@ -38,10 +35,4 @@ in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - Home = { - home.packages = with packages; [ - nmap # Network - netcat-openbsd # Network - ]; - }; }) diff --git a/progs/dev/network.nix b/progs/dev/network.nix index 9fda8a8..7a5a3d5 100644 --- a/progs/dev/network.nix +++ b/progs/dev/network.nix @@ -9,20 +9,21 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "network"; - main-repo = "nix"; - branch = "latest"; + subfolder = "network"; + imports = [ + "misc" + "postman" + ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; + settings = { + misc.enable = true; + postman.enable = true; + }; }; -in (tools.fullModule rec { +in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - Home = { - home.packages = with packages; [ - netcat-openbsd - nmap - ]; - }; }) diff --git a/progs/dev/network/misc.nix b/progs/dev/network/misc.nix new file mode 100644 index 0000000..50ba2d3 --- /dev/null +++ b/progs/dev/network/misc.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "misc"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + netcat-openbsd + nmap + ]; + }; +}) diff --git a/progs/dev/postman.nix b/progs/dev/network/postman.nix similarity index 100% rename from progs/dev/postman.nix rename to progs/dev/network/postman.nix From 3230139de98577809c536d40c10ed9d5fc8e81b7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:38:02 -0400 Subject: [PATCH 175/236] feat(git) : adding lazygit to git module --- progs/dev.nix | 4 ++-- progs/dev/git.nix | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/progs/dev.nix b/progs/dev.nix index ab4aaaa..a1874b0 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -15,7 +15,7 @@ imports = [ "boot" "network" - "git" #solo + "git" "virtualization" "lang" ]; @@ -31,7 +31,7 @@ lang.enable = true; }; }; -in (tools.fullModule rec { +in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; diff --git a/progs/dev/git.nix b/progs/dev/git.nix index 083cb4a..8c5701b 100644 --- a/progs/dev/git.nix +++ b/progs/dev/git.nix @@ -18,14 +18,19 @@ in (tools.fullModule { inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { - programs.git = { - enable = true; - settings = { - user = { - name = "MatthieuGomes"; - email = "matthieu.gomes@ensea.fr"; + programs = { + git = { + enable = true; + settings = { + user = { + name = "MatthieuGomes"; + email = "matthieu.gomes@ensea.fr"; + }; + init.defaultBranch = "main"; }; - init.defaultBranch = "main"; + }; + lazygit = { + enable = true; }; }; }; From c7ecf6ff5934919a7a70b3fac26a7b5b4e871c53 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:47:51 -0400 Subject: [PATCH 176/236] feat(virtualization) : adding virt-manager --- progs.nix | 1 - progs/dev/virtualization.nix | 5 +++++ progs/dev/virtualization/virt-manager.nix | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 progs/dev/virtualization/virt-manager.nix diff --git a/progs.nix b/progs.nix index fa22ddc..24d28f9 100644 --- a/progs.nix +++ b/progs.nix @@ -58,7 +58,6 @@ in (tools.fullModule rec { enable = true; # Gaming gamescopeSession.enable = true; # Gaming }; - virt-manager.enable = true; # Virtualization }; }; }) diff --git a/progs/dev/virtualization.nix b/progs/dev/virtualization.nix index 3cd46c2..712fa6d 100644 --- a/progs/dev/virtualization.nix +++ b/progs/dev/virtualization.nix @@ -13,6 +13,7 @@ imports = [ "docker" "qemu" + "virt-manager" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -20,10 +21,14 @@ settings = { docker.enable = true; qemu.enable = true; + virt-manager.enable = true; }; }; in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + programs.virt-manager.enable = true; # Virtualization + }; }) diff --git a/progs/dev/virtualization/virt-manager.nix b/progs/dev/virtualization/virt-manager.nix new file mode 100644 index 0000000..722045b --- /dev/null +++ b/progs/dev/virtualization/virt-manager.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "virt-manager"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + programs.virt-manager.enable = true; # Virtualization + }; +}) From 4f0a917323775a0b09b287801e93f43610bafc15 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:52:13 -0400 Subject: [PATCH 177/236] feat(dev-misc) : adding misc dev packages --- progs.nix | 5 ----- progs/dev.nix | 2 ++ progs/dev/misc.nix | 31 +++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 progs/dev/misc.nix diff --git a/progs.nix b/progs.nix index 24d28f9..7a85c35 100644 --- a/progs.nix +++ b/progs.nix @@ -41,12 +41,7 @@ in (tools.fullModule rec { System = { environment.systemPackages = with packages; [ mangohud # Gaming - plocate # dev Misc - mlocate # dev Misc - xdotool # dev Misc protonup-ng # Gaming - meld # dev Misc - wget # dev Misc ]; environment.sessionVariables = { STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; # Gaming diff --git a/progs/dev.nix b/progs/dev.nix index a1874b0..d813b2c 100644 --- a/progs/dev.nix +++ b/progs/dev.nix @@ -18,6 +18,7 @@ "git" "virtualization" "lang" + "misc" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -29,6 +30,7 @@ git.enable = true; virtualization.enable = true; lang.enable = true; + misc.enable = true; }; }; in (tools.fullModule { diff --git a/progs/dev/misc.nix b/progs/dev/misc.nix new file mode 100644 index 0000000..380449f --- /dev/null +++ b/progs/dev/misc.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "misc"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + plocate + mlocate + xdotool + meld + wget + ]; + }; +}) From 501b9ed6e6353a67f0eb77b3435b277cf356540e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 22:55:43 -0400 Subject: [PATCH 178/236] feat(thunder-bird) : adding thunderbird to office --- progs.nix | 8 -------- progs/office.nix | 2 ++ progs/office/thunderbird.nix | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 progs/office/thunderbird.nix diff --git a/progs.nix b/progs.nix index 7a85c35..6a962f7 100644 --- a/progs.nix +++ b/progs.nix @@ -30,14 +30,6 @@ in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - Home = { - programs = { - thunderbird = { - enable = true; # Office - profiles = {}; # Office - }; - }; - }; System = { environment.systemPackages = with packages; [ mangohud # Gaming diff --git a/progs/office.nix b/progs/office.nix index 88adb8c..8b70ed3 100644 --- a/progs/office.nix +++ b/progs/office.nix @@ -13,6 +13,7 @@ imports = [ "libreoffice" "qualculate" + "thunderbird" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -20,6 +21,7 @@ settings = { libreoffice.enable = true; qualculate.enable = true; + thunderbird.enable = true; }; }; in (tools.fullModule { diff --git a/progs/office/thunderbird.nix b/progs/office/thunderbird.nix new file mode 100644 index 0000000..f9c2988 --- /dev/null +++ b/progs/office/thunderbird.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "thunderbird"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs = { + thunderbird = { + enable = true; + profiles = {}; + }; + }; + }; +}) From 86f814fcfd9209d112c15463fdd12f46497fb161 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 23:02:22 -0400 Subject: [PATCH 179/236] feat(gaming) : adding gaming --- flake.nix | 1 + progs.nix | 20 ++------------------ progs/gaming.nix | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 progs/gaming.nix diff --git a/flake.nix b/flake.nix index 1d796d4..fbc4b0f 100644 --- a/flake.nix +++ b/flake.nix @@ -105,6 +105,7 @@ desktop.enable = true; terminals.enable = true; editors.enable = true; + gaming.enable = true; }; sys = { version = nixos-version; diff --git a/progs.nix b/progs.nix index 6a962f7..7a0c7a3 100644 --- a/progs.nix +++ b/progs.nix @@ -23,28 +23,12 @@ "browsers" "terminals" "editors" + "gaming" ]; settings = (lib.recursiveUpdate baseSettings {}).${name}; }; -in (tools.fullModule rec { +in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - System = { - environment.systemPackages = with packages; [ - mangohud # Gaming - protonup-ng # Gaming - ]; - environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; # Gaming - }; - programs = { - gamemode.enable = true; # Gaming - steam = { - # Gaming - enable = true; # Gaming - gamescopeSession.enable = true; # Gaming - }; - }; - }; }) diff --git a/progs/gaming.nix b/progs/gaming.nix new file mode 100644 index 0000000..ff06b50 --- /dev/null +++ b/progs/gaming.nix @@ -0,0 +1,39 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "gaming"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + mangohud # Gaming + protonup-ng # Gaming + ]; + environment.sessionVariables = { + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; # Gaming + }; + programs = { + gamemode.enable = true; # Gaming + steam = { + # Gaming + enable = true; # Gaming + gamescopeSession.enable = true; # Gaming + }; + }; + }; +}) From e01544bdae2850b85193c2445d900b7cd05487a1 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 20 Apr 2026 23:11:32 -0400 Subject: [PATCH 180/236] feat(vlc) : adding vlc to misc --- progs/misc.nix | 13 +++---------- progs/misc/vlc.nix | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 progs/misc/vlc.nix diff --git a/progs/misc.nix b/progs/misc.nix index 697431f..15439ac 100644 --- a/progs/misc.nix +++ b/progs/misc.nix @@ -10,8 +10,6 @@ inherit config lib pkgs-list parentPathAsList tools; name = "misc"; subfolder = "misc"; - main-repo = "nix"; - branch = "latest"; imports = [ "ledger" "bambu-studio" @@ -20,6 +18,7 @@ "iso-image-writer" "vesktop" "kdeconnect" + "vlc" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -32,17 +31,11 @@ iso-image-writer.enable = true; kdeconnect.enable = true; vesktop.enable = true; + vlc.enable = true; }; }; -in (tools.fullModule rec { +in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - Home = { - home.packages = with packages; [ - vlc # Misc - ]; - }; - System = { - }; }) diff --git a/progs/misc/vlc.nix b/progs/misc/vlc.nix new file mode 100644 index 0000000..5fe0ea6 --- /dev/null +++ b/progs/misc/vlc.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vlc"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + vlc # Misc + ]; + }; +}) From 185bd1243f3ce16daefca1658b9adb9b5ee1cf0d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 08:36:17 -0400 Subject: [PATCH 181/236] clean(bootloader) : got rid of useless comment --- sys/bootloader.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/bootloader.nix b/sys/bootloader.nix index 438e1e0..c88109b 100644 --- a/sys/bootloader.nix +++ b/sys/bootloader.nix @@ -26,7 +26,6 @@ in (tools.fullModule rec { devices = ["nodev"]; efiSupport = true; useOSProber = true; - # FEAT : maybe move static files in dedicated folder. extraEntries = '' ${builtins.readFile "${./${subfolder}/00_Arch_Btrfs}"} ${builtins.readFile "${./${subfolder}/99_UEFI_Firmware}"} From cf53bb2bca3d38543ed32444dcff1e69917291e4 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 08:37:59 -0400 Subject: [PATCH 182/236] feat(bluetooth) : added bluetooth to hw --- sys/hardware.nix | 10 ++-------- sys/hardware/bluetooth.nix | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 sys/hardware/bluetooth.nix diff --git a/sys/hardware.nix b/sys/hardware.nix index d0de27a..992cf79 100644 --- a/sys/hardware.nix +++ b/sys/hardware.nix @@ -17,7 +17,7 @@ "nvidia" "printer" "sound" - # "bluetooth" + "bluetooth" ]; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; @@ -26,7 +26,7 @@ nvidia.enable = false; # FIX : module to fix once a stable and working nvidia version is available printer.enable = true; sound.enable = true; - # bluetooth.enable = true; #TODO : move bluetooth to its own module + bluetooth.enable = true; }; }; in (tools.fullModule rec { @@ -34,12 +34,6 @@ in (tools.fullModule rec { inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { - # TODO : move bluetooth to its own module - hardware = { - bluetooth.enable = true; - }; - services.blueman.enable = true; - services = { libinput.enable = true; # TODO : FIX - not sure where to put it yet }; diff --git a/sys/hardware/bluetooth.nix b/sys/hardware/bluetooth.nix new file mode 100644 index 0000000..2338788 --- /dev/null +++ b/sys/hardware/bluetooth.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bluetooth"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + hardware = { + bluetooth.enable = true; + }; + services.blueman.enable = true; + }; +}) From b6723f7dc8363ea0448709eab218f3e09aaee447 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 10:21:55 -0400 Subject: [PATCH 183/236] feat(ssh+vpn) : added ssh+vpn to networking --- sys/networking.nix | 23 +++++++++-------------- sys/networking/ssh.nix | 25 +++++++++++++++++++++++++ sys/networking/vpn.nix | 31 +++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 sys/networking/ssh.nix create mode 100644 sys/networking/vpn.nix diff --git a/sys/networking.nix b/sys/networking.nix index ba31e33..a2d56d6 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -9,12 +9,21 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "networking"; + subfolder = "networking"; togglable = false; main-repo = "nix"; branch = "latest"; + imports = [ + "vpn" + "ssh" + ]; options = { enable = lib.mkEnableOption "Enables ${name} related settings."; }; + settings = { + vpn.enable = true; + ssh.enable = true; + }; }; in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; @@ -25,15 +34,10 @@ in (tools.fullModule rec { hostName = "NixOs"; # FEAT : make this part of baseSettings networkmanager = { enable = true; - plugins = with packages; [ - networkmanager-openvpn - ]; }; firewall = rec { enable = true; - # interfaces."wlp0s20f3".allowedTCPPorts = [10022]; - allowedTCPPorts = [10022 22]; allowedTCPPortRanges = [ { from = 1714; @@ -42,19 +46,10 @@ in (tools.fullModule rec { ]; # FOR KDE CONNECT TODO: find a better way to do this allowedUDPPortRanges = allowedTCPPortRanges; # FOR KDE CONNECT }; - # TODO : fix proxy settings - # proxy.default = "http://user:password@proxy:port/"; - # proxy.noProxy = "127.0.0.1,localhost,internal.domain"; }; - # FEAT : maybe something dedicated to ssh ? - services = { - openssh.enable = true; - }; ## TODO : FIX OPENSSH environment.systemPackages = with packages; [ - openvpn iproute2 bridge-utils ]; - ## FEAT : maybe move somewhere else ? }; }) diff --git a/sys/networking/ssh.nix b/sys/networking/ssh.nix new file mode 100644 index 0000000..61f7b92 --- /dev/null +++ b/sys/networking/ssh.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ssh"; + togglable = false; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + services.openssh.enable = true; + networking.firewall.allowedTCPPorts = [10022 22]; # 10022 to qemu + }; +}) diff --git a/sys/networking/vpn.nix b/sys/networking/vpn.nix new file mode 100644 index 0000000..f15677d --- /dev/null +++ b/sys/networking/vpn.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vpn"; + togglable = false; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + openvpn + ]; + networking.networkmanager.plugins = with packages; [ + networkmanager-openvpn + ]; + }; +}) From f51c0d603c9e674885ebb08b6593704a01f89aab Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 11:15:54 -0400 Subject: [PATCH 184/236] feat(networking) : transfered allowedTCPPortRanges and allowedUDPPortRanges to kdeconnect --- sys/networking.nix | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/sys/networking.nix b/sys/networking.nix index a2d56d6..3c2e251 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -36,15 +36,8 @@ in (tools.fullModule rec { enable = true; }; - firewall = rec { + firewall = { enable = true; - allowedTCPPortRanges = [ - { - from = 1714; - to = 1764; - } - ]; # FOR KDE CONNECT TODO: find a better way to do this - allowedUDPPortRanges = allowedTCPPortRanges; # FOR KDE CONNECT }; }; environment.systemPackages = with packages; [ From 87979b77362dbdd430388d668f0ca2238e9b0954 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 13:42:32 -0400 Subject: [PATCH 185/236] feat(main-var) : moved main-user and hostname to basicSettings --- configuration.nix | 2 +- flake.nix | 6 ++++-- home.nix | 4 ++-- sys.nix | 10 ++++++++++ sys/users.nix | 4 ++-- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/configuration.nix b/configuration.nix index b5da1cc..c2d1f6b 100644 --- a/configuration.nix +++ b/configuration.nix @@ -36,7 +36,7 @@ in { ]; sys.version = baseSettings.sys.version; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; - networking.hostName = "NixOs"; + networking.hostName = baseSettings.sys.hostname; virtualisation = { vmVariant = { # the following configuration is added only when building VM with `build-vm` diff --git a/flake.nix b/flake.nix index fbc4b0f..4706ac3 100644 --- a/flake.nix +++ b/flake.nix @@ -109,6 +109,8 @@ }; sys = { version = nixos-version; + main-user = "matthieu"; + hostname = "NixOs"; bootloader.enable = true; lang.enable = true; users.enable = true; @@ -118,7 +120,7 @@ }; }; in { - nixosConfigurations.NixOs = latestPkgs.lib.nixosSystem { + nixosConfigurations.${baseSettings.sys.hostname} = latestPkgs.lib.nixosSystem { pkgs = pkgs-list.nix.latest; specialArgs = { inherit pkgs-list; @@ -143,7 +145,7 @@ useUserPackages = true; useGlobalPkgs = true; sharedModules = [plasma-manager.homeModules.plasma-manager]; - users.matthieu = import ./home.nix; + users.${baseSettings.sys.main-user} = import ./home.nix; backupFileExtension = "backup"; }; } diff --git a/home.nix b/home.nix index cc359d2..5355281 100644 --- a/home.nix +++ b/home.nix @@ -21,6 +21,6 @@ in { imports; home.stateVersion = nixos-version; - home.username = "matthieu"; - home.homeDirectory = "/home/matthieu"; + home.username = baseSettings.sys.main-user; + home.homeDirectory = "/home/${baseSettings.sys.main-user}"; } diff --git a/sys.nix b/sys.nix index 3587077..00b2d43 100644 --- a/sys.nix +++ b/sys.nix @@ -26,6 +26,16 @@ default = "25.11"; description = "The system state version."; }; + hostname = lib.mkOption { + type = lib.types.str; + default = "NixOs"; + description = "The system hostname."; + }; + main-user = lib.mkOption { + type = lib.types.str; + default = "matthieu"; + description = "The main user of the system."; + }; }; newSettings.${name} = { lang = { diff --git a/sys/users.nix b/sys/users.nix index 9af788a..666c531 100644 --- a/sys/users.nix +++ b/sys/users.nix @@ -25,7 +25,7 @@ in (tools.fullModule rec { # mutableUsers = false; # BAZINGA defaultUserShell = packages.zsh; users = { - matthieu = { + ${config.sys.main-user} = { # password = ""; # BAZINGA # ignoreShellProgramCheck = true; # BAZINGA description = "Moi"; @@ -35,7 +35,7 @@ in (tools.fullModule rec { "wheel" # Enable sudo for the user. ]; createHome = true; - home = "/home/matthieu"; + home = "/home/${config.sys.main-user}"; /* openssh.authorizedKeys.keys = [ "" From 22da489fc626d7ce7cb4e294b3a781552ce78dac Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 13:58:24 -0400 Subject: [PATCH 186/236] refactor(networking) : moved a pkg to networking --- sys/hardware.nix | 2 -- sys/networking.nix | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/hardware.nix b/sys/hardware.nix index 992cf79..4f39dea 100644 --- a/sys/hardware.nix +++ b/sys/hardware.nix @@ -37,10 +37,8 @@ in (tools.fullModule rec { services = { libinput.enable = true; # TODO : FIX - not sure where to put it yet }; - # FIX : dont know where to put that : temporary here environment.systemPackages = with packages; [ lshw - iw usbutils ]; }; diff --git a/sys/networking.nix b/sys/networking.nix index 3c2e251..eed1808 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -43,6 +43,7 @@ in (tools.fullModule rec { environment.systemPackages = with packages; [ iproute2 bridge-utils + iw ]; }; }) From 4319c14187f56f5398d708c7b98c1418fd600c45 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 14:00:46 -0400 Subject: [PATCH 187/236] feat(kernel) : switch kernel pkgs to stable --- sys.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys.nix b/sys.nix index 00b2d43..1b37822 100644 --- a/sys.nix +++ b/sys.nix @@ -11,7 +11,7 @@ name = "sys"; subfolder = "sys"; repo = "nix"; - branch = "unstable"; + branch = "latest"; imports = [ "bootloader" "lang" From f48fdf790c246125263a002b872ea379b5eab05f Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 18:27:43 -0400 Subject: [PATCH 188/236] feat(tools) : functions to add elements if a program exists --- tools.nix | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tools.nix b/tools.nix index f5e3d6d..10588ee 100644 --- a/tools.nix +++ b/tools.nix @@ -223,6 +223,28 @@ }; }; }; + ifExistsList = config: configPathString: value: let + pathAsList = lib.splitString "." configPathString; + name = lib.lists.last pathAsList; + parentPathAsList = lib.lists.drop 1 (lib.lists.reverseList (lib.lists.drop 1 (lib.lists.reverseList pathAsList))); + parentPath = lib.attrsets.getAttrFromPath parentPathAsList config; + configPath = lib.attrsets.getAttrFromPath (lib.lists.drop 1 pathAsList) config; + modulePath = configPath.enable; + in + if parentPath.enable && builtins.hasAttr name parentPath && modulePath + then value + else []; + ifExistsAttr = config: configPathString: value: let + pathAsList = lib.splitString "." configPathString; + name = lib.lists.last pathAsList; + parentPathAsList = lib.lists.drop 1 (lib.lists.reverseList (lib.lists.drop 1 (lib.lists.reverseList pathAsList))); + parentPath = lib.attrsets.getAttrFromPath parentPathAsList config; + configPath = lib.attrsets.getAttrFromPath (lib.lists.drop 1 pathAsList) config; + modulePath = configPath.enable; + in + if parentPath.enable && builtins.hasAttr name parentPath && modulePath + then value + else {}; in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExistsList ifExistsAttr; } From f32864e9f174fc06357d63de21658e36f62dc5b1 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 18:28:55 -0400 Subject: [PATCH 189/236] refactor(plasma) : used new functions to simplify and modularize the plasma desktop --- progs/desktop/plasma.nix | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 3fd51d0..b89b5f8 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -28,23 +28,11 @@ in (tools.fullModule rec { TerminalService = "com.mitchellh.ghostty.desktop"; }; window-rules = [ - { + (tools.ifExistsAttr config "config.progs.editors.vscode" { description = "vscode-desktop-file"; match.window-class = "code code"; apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic - } - { - description = "fix_LibreOffice_Icon"; - match.window-class = { - value = "libreoffice-draw"; - type = "substring"; - match-whole = true; - }; - apply.desktopfile = { - value = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/draw.desktop"; - apply = "initially"; - }; - } + }) ]; shortcuts = { "services/com.mitchellh.ghostty.desktop" = { @@ -119,15 +107,16 @@ in (tools.fullModule rec { taskDisplayMode = "IconsOnly"; showOnlyCurrentDesktop = true; groupTasks = true; - launchers = [ - "applications:systemsettings.desktop" - "applications:org.kde.dolphin.desktop" - "applications:firefox.desktop" - "applications:chromium-browser.desktop" - "applications:com.mitchellh.ghostty.desktop" - # "applications:code-url-handler.desktop" - "applications:code.desktop" - ]; + launchers = + [ + "applications:systemsettings.desktop" + "applications:org.kde.dolphin.desktop" + ] + ++ (tools.ifExistsList config "config.progs.browsers.firefox" ["applications:firefox.desktop"]) + ++ (tools.ifExistsList config "config.progs.browsers.chromium" ["applications:chromium-browser.desktop"]) + ++ (tools.ifExistsList config "config.progs.browsers.zen" ["applications:zen-beta.desktop"]) + ++ (tools.ifExistsList config "config.progs.terminals.ghostty" ["applications:com.mitchellh.ghostty.desktop"]) + ++ (tools.ifExistsList config "config.progs.editors.vscode" ["applications:code.desktop"]); }; } "org.kde.plasma.showdesktop" From 6c5569d446ecfb73b32fca0ef9bd36d5bb166adb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 21 Apr 2026 21:12:13 -0400 Subject: [PATCH 190/236] feat(shortcut) : adding sleep shortcut --- progs/desktop/plasma.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index b89b5f8..a849663 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -42,9 +42,11 @@ in (tools.fullModule rec { ]; new-window = ["Meta+Shift+Return"]; }; - "ksmserver" = { + ksmserver = { "Lock Session" = ["Meta+L"]; - "Sleep" = ["Meta+Shift+L"]; + }; + org_kde_powerdevil = { + "Sleep" = ["Meta+Shift+L" "Sleep"]; }; }; workspace = { From 141aee2b0741000701ad1d032c47fc193b266117 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 15:54:04 -0400 Subject: [PATCH 191/236] feat(bluetooth): got rid of blueman --- sys/hardware/bluetooth.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/hardware/bluetooth.nix b/sys/hardware/bluetooth.nix index 2338788..756a6c8 100644 --- a/sys/hardware/bluetooth.nix +++ b/sys/hardware/bluetooth.nix @@ -21,6 +21,5 @@ in (tools.fullModule { hardware = { bluetooth.enable = true; }; - services.blueman.enable = true; }; }) From 3e0aff30ca13daa276af9556ff33e62088425219 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 15:58:03 -0400 Subject: [PATCH 192/236] feat(plasma) : pinning logout button with selection screen --- progs/desktop/plasma.nix | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index a849663..6c97eff 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -80,17 +80,10 @@ in (tools.fullModule rec { "org.kde.plasma.battery" { name = "org.kde.plasma.lock_logout"; - # settings = { - # showLogoutScreen = true; - # }; + config = { + show_lockScreen = false; + }; } - # { - # name = "luisbocanegra.panelspacer.extended"; - # config = { - # expand = true; - # }; - # } - # "org.kde.plasma.systemmonitor" ]; } { From e1da62b33c2e3abab8fe870d90898e1b56a05cc3 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 16:29:58 -0400 Subject: [PATCH 193/236] feat(plasma) : pinning battery configuration state --- progs/desktop/plasma.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 6c97eff..0cd12fd 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -77,7 +77,12 @@ in (tools.fullModule rec { } "org.kde.plasma.volume" "org.kde.plasma.networkmanagement" - "org.kde.plasma.battery" + { + name = "org.kde.plasma.battery"; + config = { + showPercentage = "true"; + }; + } { name = "org.kde.plasma.lock_logout"; config = { From e05b9e298ef51b625e284a456d9b48d8b586fd9a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 16:32:22 -0400 Subject: [PATCH 194/236] feat(plasma) : TEMP pinning system tray configuration state (project to fix plasma-manager by myself) --- progs/desktop/plasma.nix | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 0cd12fd..c9115bd 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -71,10 +71,37 @@ in (tools.fullModule rec { "org.kde.plasma.digitalclock" "org.kde.plasma.notifications" "org.kde.plasma.panelspacer" + # PROJECT : Fixing plasma manager so it supports configuring the system tray correctly and fully. { name = "org.kde.plasma.systemtray"; - config = {}; + config = { + extraItems = ["org.kde.plasma.cameraindicator" "org.kde.kdeconnect" "org.kde.plasma.bluetooth" "org.kde.plasma.devicenotifier" "org.kde.plasma.printmanager" "org.kde.kscreen" "org.kde.plasma.keyboardlayout" "org.kde.plasma.manage-inputmethod"]; + hiddenItems = ["org.kde.kscreen" "org.kde.plasma.keyboardlayout" "org.kde.plasma.manage-inputmethod"]; + knownItems = ["org.kde.plasma.cameraindicator" "org.kde.plasma.clipboard" "org.kde.plasma.manage-inputmethod" "org.kde.kdeconnect" "org.kde.plasma.keyboardlayout" "org.kde.plasma.bluetooth" "org.kde.plasma.mediacontroller" "org.kde.plasma.notifications" "org.kde.plasma.devicenotifier" "org.kde.plasma.weather" "org.kde.kscreen" "org.kde.plasma.keyboardindicator" "org.kde.plasma.printmanager" "org.kde.plasma.brightness" "org.kde.plasma.volume" "org.kde.plasma.networkmanagement" "org.kde.plasma.battery"]; + }; } + # { + # systemTray = { + # pin = true; + # icons = { + # spacing = "medium"; + # scaleToFit = true; + # }; + # items = { + # showAll = false; + # shown = [ + # "org.kde.plasma.battery" + # "org.kde.plasma.networkmanagement" + # ]; + # hidden = [ + # "org.kde.plasma.volume" + # "org.kde.kscreen" + # ]; + # }; + # }; + # } + "org.kde.plasma.clipboard" + "org.kde.plasma.brightness" "org.kde.plasma.volume" "org.kde.plasma.networkmanagement" { From 4fd0c5a7684cf8921f27d3bc2daf84e6ffa01fc8 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 16:33:14 -0400 Subject: [PATCH 195/236] feat(plasma): adding new widgets to panel for more comfort --- progs/desktop/plasma.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index c9115bd..7ca923a 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -68,9 +68,11 @@ in (tools.fullModule rec { widgets = [ "org.kde.plasma.trash" "org.kde.plasma.panelspacer" + "org.kde.plasma.mediacontroller" "org.kde.plasma.digitalclock" "org.kde.plasma.notifications" "org.kde.plasma.panelspacer" + "org.kde.plasma.keyboardindicator" # PROJECT : Fixing plasma manager so it supports configuring the system tray correctly and fully. { name = "org.kde.plasma.systemtray"; From e90d72a278c9d0c9ff682bb92f9ece58a329ff41 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 16:47:58 -0400 Subject: [PATCH 196/236] feat(zsh): modularized more yazi + p10k + fzf --- progs/shells.nix | 21 ++++++++++++++------- progs/shells/zsh.nix | 9 +++++---- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/progs/shells.nix b/progs/shells.nix index fc53cbb..c07d532 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -17,12 +17,19 @@ "zsh" ]; extras = { - aliases = { - nrs = "sudo nixos-rebuild switch"; - ls = "ls --color -ah"; - ".." = "cd .."; - yazi = "y"; - myip = "myip"; + aliases = + { + nrs = "sudo nixos-rebuild switch"; + ls = "ls --color -ah"; + ".." = "cd .."; + myip = "myip"; + } + // (tools.ifExistsAttr config "config.progs.shells.zsh.yazi" { + yazi = "y"; + }); + + p10k = { + enable = true; }; }; options = { @@ -31,7 +38,7 @@ settings = { zsh = { enable = true; - aliases = extras.aliases; + inherit (extras) aliases p10k; }; }; }; diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index a08da3d..adcc562 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -24,6 +24,7 @@ description = "An attribute set of shell aliases to define."; default = {}; }; + p10k.enable = lib.mkEnableOption "Enables powerlevel10k zsh theme."; }; settings = { oh-my-zsh = { @@ -55,15 +56,15 @@ in (tools.fullModule rec { }; defaultKeymap = "emacs"; plugins = [ - { + (tools.ifExistsAttr config "config.progs.shells.zsh.p10k" { name = "powerlevel10k"; src = packages.zsh-powerlevel10k; file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - } - { + }) + (tools.ifExistsAttr config "config.progs.shells.zsh.fzf" { name = "fzf-tab"; src = "${packages.zsh-fzf-tab}/share/fzf-tab"; - } + }) ]; initContent = "${builtins.readFile ./${subfolder}/init.zsh}"; From 3d435ea1db881a89382ddb2bd51a01c9ffe80aef Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 17:11:03 -0400 Subject: [PATCH 197/236] feat(tools): added ifExistStr --- tools.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools.nix b/tools.nix index 10588ee..86acaee 100644 --- a/tools.nix +++ b/tools.nix @@ -245,6 +245,17 @@ if parentPath.enable && builtins.hasAttr name parentPath && modulePath then value else {}; + ifExistsStr = config: configPathString: value: let + pathAsList = lib.splitString "." configPathString; + name = lib.lists.last pathAsList; + parentPathAsList = lib.lists.drop 1 (lib.lists.reverseList (lib.lists.drop 1 (lib.lists.reverseList pathAsList))); + parentPath = lib.attrsets.getAttrFromPath parentPathAsList config; + configPath = lib.attrsets.getAttrFromPath (lib.lists.drop 1 pathAsList) config; + modulePath = configPath.enable; + in + if parentPath.enable && builtins.hasAttr name parentPath && modulePath + then value + else ""; in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExistsList ifExistsAttr; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExistsList ifExistsAttr ifExistsStr; } From 03a4aac554fedec612adc1929e42010ed775491d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 17:11:40 -0400 Subject: [PATCH 198/236] feat(zsh): fully modularized --- progs/shells/zsh.nix | 17 ++++++++++++++++- progs/shells/zsh/init.zsh | 17 +---------------- progs/shells/zsh/yazi/y.zsh | 5 +++++ 3 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 progs/shells/zsh/yazi/y.zsh diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index adcc562..1dcb857 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -66,7 +66,22 @@ in (tools.fullModule rec { src = "${packages.zsh-fzf-tab}/share/fzf-tab"; }) ]; - initContent = "${builtins.readFile ./${subfolder}/init.zsh}"; + initContent = + (tools.ifExistsStr config "config.progs.shells.zsh.p10k" + "source ~/.p10k.zsh\n") + + "${builtins.readFile ./${subfolder}/init.zsh}" + + (tools.ifExistsAttr config "config.progs.shells.zsh.fzf" + "zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath'"); + + siteFunctions = + { + myip = "echo $(ip addr show wlp0s20f3 | grep -oP 'inet \\K[^/]+')"; + } + // ( + tools.ifExistsAttr config "config.progs.shells.zsh.yazi" { + y = "${builtins.readFile ./${subfolder}/yazi/y.zsh}"; + } + ); shellAliases = cfg.aliases; }; diff --git a/progs/shells/zsh/init.zsh b/progs/shells/zsh/init.zsh index 13aa533..f147827 100644 --- a/progs/shells/zsh/init.zsh +++ b/progs/shells/zsh/init.zsh @@ -1,17 +1,2 @@ -source ~/.p10k.zsh - zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' -zstyle ':completion:*' menu no -zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath' - -function y() { - local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd - yazi "$@" --cwd-file="$tmp" - IFS= read -r -d \'\' cwd < "$tmp" - [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" - rm -f -- "$tmp" -} - -function myip(){ - echo $(ip addr show wlp0s20f3 | grep -oP 'inet \K[^/]+') -} +zstyle ':completion:*' menu no \ No newline at end of file diff --git a/progs/shells/zsh/yazi/y.zsh b/progs/shells/zsh/yazi/y.zsh new file mode 100644 index 0000000..ffc0c0f --- /dev/null +++ b/progs/shells/zsh/yazi/y.zsh @@ -0,0 +1,5 @@ +local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd +yazi "$@" --cwd-file="$tmp" +IFS= read -r -d \'\' cwd < "$tmp" +[ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" +rm -f -- "$tmp" \ No newline at end of file From 5ae3336a7be6502f623ce24e65881bf259a8b4be Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 17:27:52 -0400 Subject: [PATCH 199/236] feat+refactor(tuis): added tuis to progs + lazygit,lazydocker to tuis + moved yazi to tuis + removed lazygit from git & lazydocker from docker --- flake.nix | 1 + progs.nix | 1 + progs/dev/git.nix | 3 -- progs/dev/virtualization/docker.nix | 1 - progs/shells/zsh.nix | 6 ++-- progs/tuis.nix | 31 +++++++++++++++++++ progs/tuis/lazydocker.nix | 27 ++++++++++++++++ progs/tuis/lazygit.nix | 27 ++++++++++++++++ progs/{shells/zsh => tuis}/yazi.nix | 0 progs/{shells/zsh => tuis}/yazi/init.lua | 0 .../yazi/plugins/githead/main.lua | 0 .../yazi/plugins/kdeconnect-send/main.lua | 0 progs/{shells/zsh => tuis}/yazi/y.zsh | 0 13 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 progs/tuis.nix create mode 100644 progs/tuis/lazydocker.nix create mode 100644 progs/tuis/lazygit.nix rename progs/{shells/zsh => tuis}/yazi.nix (100%) rename progs/{shells/zsh => tuis}/yazi/init.lua (100%) rename progs/{shells/zsh => tuis}/yazi/plugins/githead/main.lua (100%) rename progs/{shells/zsh => tuis}/yazi/plugins/kdeconnect-send/main.lua (100%) rename progs/{shells/zsh => tuis}/yazi/y.zsh (100%) diff --git a/flake.nix b/flake.nix index 4706ac3..48f8632 100644 --- a/flake.nix +++ b/flake.nix @@ -106,6 +106,7 @@ terminals.enable = true; editors.enable = true; gaming.enable = true; + tuis.enable = true; }; sys = { version = nixos-version; diff --git a/progs.nix b/progs.nix index 7a0c7a3..c4353a2 100644 --- a/progs.nix +++ b/progs.nix @@ -24,6 +24,7 @@ "terminals" "editors" "gaming" + "tuis" ]; settings = (lib.recursiveUpdate baseSettings {}).${name}; }; diff --git a/progs/dev/git.nix b/progs/dev/git.nix index 8c5701b..2f7b99e 100644 --- a/progs/dev/git.nix +++ b/progs/dev/git.nix @@ -29,9 +29,6 @@ in (tools.fullModule { init.defaultBranch = "main"; }; }; - lazygit = { - enable = true; - }; }; }; }) diff --git a/progs/dev/virtualization/docker.nix b/progs/dev/virtualization/docker.nix index 56d80a9..6a7a665 100644 --- a/progs/dev/virtualization/docker.nix +++ b/progs/dev/virtualization/docker.nix @@ -23,7 +23,6 @@ in (tools.fullModule rec { home.packages = with packages; [ docker docker-compose - lazydocker ]; }; System = { diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index 1dcb857..abc8a34 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -14,7 +14,6 @@ branch = "latest"; imports = [ "oh-my-zsh" - "yazi" "fzf" ]; options = { @@ -35,7 +34,6 @@ ]; }; fzf.enable = true; - yazi.enable = true; }; }; in (tools.fullModule rec { @@ -78,8 +76,8 @@ in (tools.fullModule rec { myip = "echo $(ip addr show wlp0s20f3 | grep -oP 'inet \\K[^/]+')"; } // ( - tools.ifExistsAttr config "config.progs.shells.zsh.yazi" { - y = "${builtins.readFile ./${subfolder}/yazi/y.zsh}"; + tools.ifExistsAttr config "config.progs.tuis.yazi" { + y = "${builtins.readFile ../tuis/yazi/y.zsh}"; } ); diff --git a/progs/tuis.nix b/progs/tuis.nix new file mode 100644 index 0000000..ebb672e --- /dev/null +++ b/progs/tuis.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "tuis"; + subfolder = "tuis"; + imports = [ + "yazi" + "lazygit" + "lazydocker" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + yazi.enable = true; + lazygit.enable = true && config.progs.dev.git.enable; + lazydocker.enable = true && config.progs.dev.virtualization.docker.enable; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/tuis/lazydocker.nix b/progs/tuis/lazydocker.nix new file mode 100644 index 0000000..e042465 --- /dev/null +++ b/progs/tuis/lazydocker.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lazydocker"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + lazydocker + ]; + }; +}) diff --git a/progs/tuis/lazygit.nix b/progs/tuis/lazygit.nix new file mode 100644 index 0000000..3e866fa --- /dev/null +++ b/progs/tuis/lazygit.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lazygit"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs = { + lazygit = { + enable = true; + }; + }; + }; +}) diff --git a/progs/shells/zsh/yazi.nix b/progs/tuis/yazi.nix similarity index 100% rename from progs/shells/zsh/yazi.nix rename to progs/tuis/yazi.nix diff --git a/progs/shells/zsh/yazi/init.lua b/progs/tuis/yazi/init.lua similarity index 100% rename from progs/shells/zsh/yazi/init.lua rename to progs/tuis/yazi/init.lua diff --git a/progs/shells/zsh/yazi/plugins/githead/main.lua b/progs/tuis/yazi/plugins/githead/main.lua similarity index 100% rename from progs/shells/zsh/yazi/plugins/githead/main.lua rename to progs/tuis/yazi/plugins/githead/main.lua diff --git a/progs/shells/zsh/yazi/plugins/kdeconnect-send/main.lua b/progs/tuis/yazi/plugins/kdeconnect-send/main.lua similarity index 100% rename from progs/shells/zsh/yazi/plugins/kdeconnect-send/main.lua rename to progs/tuis/yazi/plugins/kdeconnect-send/main.lua diff --git a/progs/shells/zsh/yazi/y.zsh b/progs/tuis/yazi/y.zsh similarity index 100% rename from progs/shells/zsh/yazi/y.zsh rename to progs/tuis/yazi/y.zsh From 2f5cd90002a9f9bcbd29b86be4352beacb5e01b9 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 19:36:05 -0400 Subject: [PATCH 200/236] refactor(tools) : simplified code thanks to "with" --- tools.nix | 62 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/tools.nix b/tools.nix index 86acaee..0a41d61 100644 --- a/tools.nix +++ b/tools.nix @@ -1,4 +1,5 @@ -{lib, ...}: let +{lib, ...}: +with lib; let contextModuleImport = { imports, subfolder, @@ -20,7 +21,7 @@ imports, settings, }: let - first = lib.lists.last (lib.lists.take 1 currentPathAsList); + first = lists.last (lists.take 1 currentPathAsList); in builtins.listToAttrs (map (setting: { name = @@ -32,7 +33,7 @@ then settings.${setting} else (inheritSettings { - currentPathAsList = lib.lists.drop 1 currentPathAsList; + currentPathAsList = lists.drop 1 currentPathAsList; imports = imports; settings = settings; }); @@ -43,13 +44,13 @@ currentPathAsList, config, }: let - first = lib.lists.last (lib.lists.take 1 currentPathAsList); + first = lists.last (lists.take 1 currentPathAsList); in if (currentPathAsList == []) then config else inheritConfig { - currentPathAsList = lib.lists.drop 1 currentPathAsList; + currentPathAsList = lists.drop 1 currentPathAsList; config = config.${first}; }; @@ -57,8 +58,8 @@ currentPathAsList, options, }: let - first = lib.lists.last (lib.lists.take 1 currentPathAsList); - in (lib.listToAttrs [ + first = lists.last (lists.take 1 currentPathAsList); + in (listToAttrs [ { name = first; value = @@ -66,7 +67,7 @@ then options else inheritOptions { - currentPathAsList = lib.lists.drop 1 currentPathAsList; + currentPathAsList = lists.drop 1 currentPathAsList; inherit options; }; } @@ -100,7 +101,7 @@ if imports != null then { imports = - tools.contextModuleImport { + contextModuleImport { inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; context = context; } @@ -129,7 +130,7 @@ // { config = if togglable - then (lib.mkIf deps.cfg.enable Config) + then (mkIf deps.cfg.enable Config) else Config; }; @@ -147,6 +148,7 @@ imports ? null, specialImports ? null, options ? null, + specialOptions ? null, settings ? null, extras ? null, }: rec { @@ -157,14 +159,14 @@ then pkgs-list.${main-repo}.${branch} else null; currentPathAsList = parentPathAsList ++ [name]; - currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); - cfg = tools.inheritConfig { + currentDirPath = path.subpath.join (lists.flatten ["./." parentPathAsList]); + cfg = inheritConfig { inherit config currentPathAsList; }; inheritedSettings = if imports != null || settings != null then - tools.inheritSettings { + inheritSettings { inherit currentPathAsList imports settings; } else { @@ -203,7 +205,7 @@ SystemConfig = Common // System; in { config = { - Home = tools.contextualModule { + Home = contextualModule { inherit lib config tools; # deps inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined @@ -212,7 +214,7 @@ context = "Home"; Config = HomeConfig; }; - System = tools.contextualModule { + System = contextualModule { inherit lib config tools; # deps inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined @@ -224,33 +226,33 @@ }; }; ifExistsList = config: configPathString: value: let - pathAsList = lib.splitString "." configPathString; - name = lib.lists.last pathAsList; - parentPathAsList = lib.lists.drop 1 (lib.lists.reverseList (lib.lists.drop 1 (lib.lists.reverseList pathAsList))); - parentPath = lib.attrsets.getAttrFromPath parentPathAsList config; - configPath = lib.attrsets.getAttrFromPath (lib.lists.drop 1 pathAsList) config; + pathAsList = splitString "." configPathString; + name = lists.last pathAsList; + parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); + parentPath = attrsets.getAttrFromPath parentPathAsList config; + configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; modulePath = configPath.enable; in if parentPath.enable && builtins.hasAttr name parentPath && modulePath then value else []; ifExistsAttr = config: configPathString: value: let - pathAsList = lib.splitString "." configPathString; - name = lib.lists.last pathAsList; - parentPathAsList = lib.lists.drop 1 (lib.lists.reverseList (lib.lists.drop 1 (lib.lists.reverseList pathAsList))); - parentPath = lib.attrsets.getAttrFromPath parentPathAsList config; - configPath = lib.attrsets.getAttrFromPath (lib.lists.drop 1 pathAsList) config; + pathAsList = splitString "." configPathString; + name = lists.last pathAsList; + parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); + parentPath = attrsets.getAttrFromPath parentPathAsList config; + configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; modulePath = configPath.enable; in if parentPath.enable && builtins.hasAttr name parentPath && modulePath then value else {}; ifExistsStr = config: configPathString: value: let - pathAsList = lib.splitString "." configPathString; - name = lib.lists.last pathAsList; - parentPathAsList = lib.lists.drop 1 (lib.lists.reverseList (lib.lists.drop 1 (lib.lists.reverseList pathAsList))); - parentPath = lib.attrsets.getAttrFromPath parentPathAsList config; - configPath = lib.attrsets.getAttrFromPath (lib.lists.drop 1 pathAsList) config; + pathAsList = splitString "." configPathString; + name = lists.last pathAsList; + parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); + parentPath = attrsets.getAttrFromPath parentPathAsList config; + configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; modulePath = configPath.enable; in if parentPath.enable && builtins.hasAttr name parentPath && modulePath From 5ed455050c94e1d70a55614808dd38c502fbae9d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 19:37:11 -0400 Subject: [PATCH 201/236] =?UTF-8?q?feat(tools)=20:=20added=20specialOption?= =?UTF-8?q?s=20to=20all=20generators=20for...=20SpecialOptions=20d=C3=A9cl?= =?UTF-8?q?aration=20independant=20from=20current=20context=20(not=20sure?= =?UTF-8?q?=20if=20it's=20that=20usefull)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools.nix | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tools.nix b/tools.nix index 0a41d61..b0538df 100644 --- a/tools.nix +++ b/tools.nix @@ -74,6 +74,7 @@ with lib; let ]); contextualModule = { options ? null, + specialOptions ? null, imports ? null, specialImports ? null, togglable ? true, @@ -90,9 +91,18 @@ with lib; let ( if options != null then { - options = tools.inheritOptions { - inherit currentPathAsList options; - }; + options = + inheritOptions { + inherit currentPathAsList options; + } + // ( + if specialOptions != null + then + if builtins.hasAttr context specialOptions + then specialOptions + else {} + else {} + ); } else { } @@ -153,7 +163,7 @@ with lib; let extras ? null, }: rec { inherit config lib pkgs-list parentPathAsList tools; - inherit name togglable subfolder main-repo branch imports specialImports options settings extras; + inherit name togglable subfolder main-repo branch imports specialImports options specialOptions settings extras; packages = if main-repo != null && branch != null then pkgs-list.${main-repo}.${branch} @@ -190,6 +200,7 @@ with lib; let imports ? null, specialImports ? null, options ? null, + specialOptions ? null, settings ? null, extras ? null, packages ? null, @@ -209,7 +220,7 @@ with lib; let inherit lib config tools; # deps inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined - inherit specialImports; # user defined + inherit specialImports specialOptions; # user defined inherit togglable; # user defined context = "Home"; Config = HomeConfig; @@ -218,7 +229,7 @@ with lib; let inherit lib config tools; # deps inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated inherit imports options; # user defined - inherit specialImports; # user defined + inherit specialImports specialOptions; # user defined inherit togglable; # user defined context = "System"; Config = SystemConfig; From 35f375a5d7774a15980c37cf523958397acaea8a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Thu, 23 Apr 2026 19:38:57 -0400 Subject: [PATCH 202/236] feat(flutter) : added flutter to lang WIP disabled for now because it needs some tweaking --- flake.nix | 1 + progs/dev/lang.nix | 7 +++ progs/dev/lang/flutter.nix | 90 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 progs/dev/lang/flutter.nix diff --git a/flake.nix b/flake.nix index 48f8632..c5b6676 100644 --- a/flake.nix +++ b/flake.nix @@ -63,6 +63,7 @@ ]; config = { allowUnfree = true; + android_sdk.accept_license = true; }; }; nix = { diff --git a/progs/dev/lang.nix b/progs/dev/lang.nix index c1801ea..72be920 100644 --- a/progs/dev/lang.nix +++ b/progs/dev/lang.nix @@ -13,6 +13,7 @@ imports = [ "nix" "python" + "flutter" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -20,6 +21,12 @@ settings = { nix.enable = true; python.enable = true; + flutter = { + enable = false; + user = config.sys.main-user; + addToKvmGroup = true; + enableAdb = true; + }; }; }; in (tools.fullModule { diff --git a/progs/dev/lang/flutter.nix b/progs/dev/lang/flutter.nix new file mode 100644 index 0000000..0668393 --- /dev/null +++ b/progs/dev/lang/flutter.nix @@ -0,0 +1,90 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "flutter"; + main-repo = "nix"; + branch = "unstable"; + extras = rec { + androidComposition = pkgs-list.nix.unstable.androidenv.composeAndroidPackages { + toolsVersion = "26.1.1"; + platformToolsVersion = "35.0.1"; + buildToolsVersions = [ + "30.0.3" + "33.0.1" + "34.0.0" + ]; + platformVersions = [ + "31" + "33" + "34" + ]; + abiVersions = ["x86_64"]; + includeEmulator = true; + emulatorVersion = "35.1.4"; + includeSystemImages = true; + systemImageTypes = ["google_apis_playstore"]; + includeSources = false; + extraLicenses = [ + "android-googletv-license" + "android-sdk-arm-dbt-license" + "android-sdk-license" + "android-sdk-preview-license" + "google-gdk-license" + "intel-android-extra-license" + "intel-android-sysimage-license" + "mips-android-sysimage-license" + ]; + }; + androidSdk = androidComposition.androidsdk; + buildToolsVersion = "33.0.1"; + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + addToKvmGroup = lib.mkEnableOption "Add user to KVM group for hardware acceleration"; + enableAdb = lib.mkEnableOption "Enable ADB and add user to adbusers group"; + user = lib.mkOption { + type = lib.types.str; + description = "Username for Flutter development"; + }; + }; + # specialOptions = { + # options.programs.flutter = { + # enable = lib.mkEnableOption "Flutter development environment"; + # }; + # }; + }; +in + with tools; (fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = with extras; { + environment.systemPackages = with packages; [ + flutter + androidSdk + # android-studio + jdk17 + firebase-tools + ]; + environment.variables = { + ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + ANDROID_HOME = "${androidSdk}/libexec/android-sdk"; + JAVA_HOME = "${packages.jdk17}"; + GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/34.0.0/aapt2"; + }; + environment.shellInit = '' + export PATH=$PATH:${androidSdk}/libexec/android-sdk/platform-tools + export PATH=$PATH:${androidSdk}/libexec/android-sdk/cmdline-tools/latest/bin + export PATH=$PATH:${androidSdk}/libexec/android-sdk/emulator + export PATH="$PATH":"$HOME/.pub-cache/bin" + export NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE=1 + ''; + }; + }) From 9f84a82028a9bb1341762ff5858efbfde0df8647 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 07:50:52 -0400 Subject: [PATCH 203/236] feat(authenticator) : adding authenticator to misc progs --- progs/misc.nix | 2 ++ progs/misc/authenticator.nix | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 progs/misc/authenticator.nix diff --git a/progs/misc.nix b/progs/misc.nix index 15439ac..845948c 100644 --- a/progs/misc.nix +++ b/progs/misc.nix @@ -19,6 +19,7 @@ "vesktop" "kdeconnect" "vlc" + "authenticator" ]; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; @@ -32,6 +33,7 @@ kdeconnect.enable = true; vesktop.enable = true; vlc.enable = true; + authenticator.enable = true; }; }; in (tools.fullModule { diff --git a/progs/misc/authenticator.nix b/progs/misc/authenticator.nix new file mode 100644 index 0000000..31daea7 --- /dev/null +++ b/progs/misc/authenticator.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "authenticator"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + authenticator + ]; + }; +}) From 3464c37984cb9c7efc9459ea38e5baca601d7ae0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 08:00:18 -0400 Subject: [PATCH 204/236] feat(labels) : adding label to follow versions better --- configuration.nix | 4 ++++ flake.nix | 2 ++ sys.nix | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/configuration.nix b/configuration.nix index c2d1f6b..b069b27 100644 --- a/configuration.nix +++ b/configuration.nix @@ -37,6 +37,10 @@ in { sys.version = baseSettings.sys.version; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; networking.hostName = baseSettings.sys.hostname; + system.nixos = { + label = baseSettings.sys.label; + tags = baseSettings.sys.tags; + }; virtualisation = { vmVariant = { # the following configuration is added only when building VM with `build-vm` diff --git a/flake.nix b/flake.nix index c5b6676..9cf6238 100644 --- a/flake.nix +++ b/flake.nix @@ -110,6 +110,8 @@ tuis.enable = true; }; sys = { + label = "V.2.0"; + tags = []; version = nixos-version; main-user = "matthieu"; hostname = "NixOs"; diff --git a/sys.nix b/sys.nix index 1b37822..6a4261b 100644 --- a/sys.nix +++ b/sys.nix @@ -21,6 +21,16 @@ "filesystems" ]; options = { + label = lib.mkOption { + type = lib.types.str; + default = "ConfigLabel"; + description = "The label of the system configuration."; + }; + tags = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = []; + description = "The tags associated with the system configuration."; + }; version = lib.mkOption { type = lib.types.str; default = "25.11"; From 79beb1232e8c3b5a511798eaea23a3fbbc06b050 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 08:36:55 -0400 Subject: [PATCH 205/236] feat(fonts) : adding fonts to sys --- configuration.nix | 3 +-- flake.nix | 1 + sys.nix | 1 + sys/fonts.nix | 25 +++++++++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 sys/fonts.nix diff --git a/configuration.nix b/configuration.nix index b069b27..676f63f 100644 --- a/configuration.nix +++ b/configuration.nix @@ -49,6 +49,5 @@ in { cores = 3; # use 3 cpu cores }; }; - }; # FIXME : Move to somewhere else - fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; # FIXME : Move to somewhere else + }; } diff --git a/flake.nix b/flake.nix index 9cf6238..ae9d5fc 100644 --- a/flake.nix +++ b/flake.nix @@ -121,6 +121,7 @@ hardware.enable = true; networking.enable = true; filesystems.enable = true; + fonts.enable = true; }; }; in { diff --git a/sys.nix b/sys.nix index 6a4261b..31750a4 100644 --- a/sys.nix +++ b/sys.nix @@ -19,6 +19,7 @@ "hardware" "networking" "filesystems" + "fonts" ]; options = { label = lib.mkOption { diff --git a/sys/fonts.nix b/sys/fonts.nix new file mode 100644 index 0000000..d93cec2 --- /dev/null +++ b/sys/fonts.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "fonts"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + fonts.packages = with packages; [nerd-fonts.jetbrains-mono]; + }; +}) From 61f42743d6fcec41958a4ff27e6012c847a675da Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 11:31:07 -0400 Subject: [PATCH 206/236] feat(plasma) : setting virtual desktops --- progs/desktop/plasma.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 7ca923a..f932eb5 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -67,6 +67,17 @@ in (tools.fullModule rec { alignment = "center"; widgets = [ "org.kde.plasma.trash" + { + name = "org.kde.plasma.pager"; + config = { + currentDesktopSelected = "ShowDesktop"; + displayedText = "Name"; + showOnlyCurrentScreen = false; + showWindowOutlines = false; + wrapPage = true; + }; + } + "org.kde.plasma.pager" "org.kde.plasma.panelspacer" "org.kde.plasma.mediacontroller" "org.kde.plasma.digitalclock" @@ -152,6 +163,19 @@ in (tools.fullModule rec { ]; } ]; + kwin = { + virtualDesktops = { + rows = 1; + number = 3; + names = ["Casual" "Work" "Dev"]; + }; + effects = { + desktopSwitching = { + animation = "slide"; + navigationWrapping = true; + }; + }; + }; }; home.packages = with packages.kdePackages; [ sddm-kcm From d69bc09f61931a9ea5df14dfa3d587378cc0d697 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 11:33:32 -0400 Subject: [PATCH 207/236] note(plasma) : note suggestion for plasma manager devs --- progs/desktop/plasma.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index f932eb5..23c4b02 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -172,7 +172,7 @@ in (tools.fullModule rec { effects = { desktopSwitching = { animation = "slide"; - navigationWrapping = true; + navigationWrapping = true; # NOTE : suggest to put this setting in "virtualDesktops" instead of "effects" }; }; }; From 1447509e2fa91f708983356f2fc34997c0778a8b Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 11:35:43 -0400 Subject: [PATCH 208/236] feat(plasma) : setting hiding cursor --- progs/desktop/plasma.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 23c4b02..62eaa4b 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -174,6 +174,11 @@ in (tools.fullModule rec { animation = "slide"; navigationWrapping = true; # NOTE : suggest to put this setting in "virtualDesktops" instead of "effects" }; + hideCursor = { + enable = true; + hideOnInactivity = 3; # seconds + hideOnTyping = true; + }; }; }; }; From 8b89c93e4e917e0dcb0e836331bf8f87ad201834 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 13:54:15 -0400 Subject: [PATCH 209/236] note(klassy) : adding a todo to configure and rebuild my own klassy pkgs --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ae9d5fc..35225bc 100644 --- a/flake.nix +++ b/flake.nix @@ -15,7 +15,7 @@ nur-klassy-version = { url = "github:nix-community/nur/82a02f13454ca5b23248d9fe8fb15618a11b09f0"; # sha256 = "0d8iwisgw15ivwbd9s041fbf33mqgccsmwxcvgwf3y84i2d1rb7a"; - }; + }; # TODO : Rebuild with my own + add options for configuration nur-unstable-pkgs = { url = "github:nix-community/nur"; inputs.nixpkgs.follows = "unstablePkgs"; From 22c7bbf8dc08197a087e430643c92dd9fcabacaf Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 20:02:51 -0400 Subject: [PATCH 210/236] feat(ghostty) : changed the opacity --- progs/terminals/ghostty.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/progs/terminals/ghostty.nix b/progs/terminals/ghostty.nix index 2428657..4efe727 100644 --- a/progs/terminals/ghostty.nix +++ b/progs/terminals/ghostty.nix @@ -26,6 +26,7 @@ in (tools.fullModule { working-directory = "$HOME"; gtk-single-instance = false; window-inherit-working-directory = true; + background-opacity = "0.8"; }; }; }; From c239346b4c9b2405cc7fc5c2372a6d4d58ea2ad7 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 21:58:43 -0400 Subject: [PATCH 211/236] feat(customPkgs) : adding my first custom package = klassy last version --- customPkgs.nix | 5 ++++ customPkgs/klassy/package.nix | 55 +++++++++++++++++++++++++++++++++++ flake.nix | 5 ++++ 3 files changed, 65 insertions(+) create mode 100644 customPkgs.nix create mode 100644 customPkgs/klassy/package.nix diff --git a/customPkgs.nix b/customPkgs.nix new file mode 100644 index 0000000..b2294fd --- /dev/null +++ b/customPkgs.nix @@ -0,0 +1,5 @@ +{pkgs ? import {}}: +pkgs.lib.filesystem.packagesFromDirectoryRecursive { + callPackage = pkgs.callPackage; + directory = ./customPkgs; +} diff --git a/customPkgs/klassy/package.nix b/customPkgs/klassy/package.nix new file mode 100644 index 0000000..d92aa39 --- /dev/null +++ b/customPkgs/klassy/package.nix @@ -0,0 +1,55 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + kdePackages, +}: +stdenv.mkDerivation rec { + pname = "klassy"; + version = "v6.5.3"; + + src = fetchFromGitHub { + owner = "paulmcauley"; + repo = pname; + rev = version; + sha256 = "1pvc69bchwwagwfpzz5kr65i16nvrhdbw3jv09spc4hjcqd55kfq"; + }; + + cmakeFlags = [ + "-DBUILD_TESTING=OFF" + "-DBUILD_QT5=OFF" + ]; + + nativeBuildInputs = [ + cmake + kdePackages.extra-cmake-modules + kdePackages.wrapQtAppsHook + ]; + + buildInputs = [ + kdePackages.kdecoration + kdePackages.kcoreaddons + kdePackages.kguiaddons + kdePackages.kconfigwidgets + kdePackages.kiconthemes + kdePackages.kwayland + kdePackages.kwindowsystem + kdePackages.kirigami + kdePackages.frameworkintegration + kdePackages.kcmutils + kdePackages.qtsvg + ]; + + meta = with lib; { + description = "A highly customizable binary Window Decoration and Application Style plugin for recent versions of the KDE Plasma desktop"; + homepage = "https://github.com/paulmcauley/klassy"; + license = with licenses; [ + gpl2Only + gpl2Plus + gpl3Only + bsd3 + mit + ]; + }; +} diff --git a/flake.nix b/flake.nix index 35225bc..b932758 100644 --- a/flake.nix +++ b/flake.nix @@ -79,8 +79,13 @@ unstable = nur-unstable; klassy = nur-klassy; }; + + customPkgs = import ./customPkgs.nix { + pkgs = Inputs.latestPkgs.legacyPackages.${system}; + }; others = { zen-browser = Inputs.zen-browser; + customPkgs = customPkgs; }; pkgs-list = { inherit nix; From 61ff0fb39675a2d426a4ed950838d6eb65845dca Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Mon, 27 Apr 2026 22:00:31 -0400 Subject: [PATCH 212/236] update(klassy) : using now custom klassy package --- progs/desktop/klassy.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix index 18a5b8f..2237c32 100644 --- a/progs/desktop/klassy.nix +++ b/progs/desktop/klassy.nix @@ -9,8 +9,8 @@ moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "klassy"; - main-repo = "nur"; - branch = "klassy"; + main-repo = "others"; + branch = "customPkgs"; options = { enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; @@ -20,8 +20,8 @@ in (tools.fullModule rec { inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { - home.packages = with packages.repos; [ - shadowrz.klassy-qt6 + home.packages = with packages; [ + klassy ]; }; }) From 941c8b944402f315fc4e9e044c6db5f5e4ca2be0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 28 Apr 2026 10:45:42 -0400 Subject: [PATCH 213/236] fix(plasma) : made the config of pager widger more robust --- progs/desktop/plasma.nix | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index 62eaa4b..fda7fbd 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -70,14 +70,20 @@ in (tools.fullModule rec { { name = "org.kde.plasma.pager"; config = { - currentDesktopSelected = "ShowDesktop"; - displayedText = "Name"; - showOnlyCurrentScreen = false; - showWindowOutlines = false; - wrapPage = true; + "currentDesktopSelected" = "ShowDesktop"; + "showOnlyCurrentScreen" = false; + "showWindowOutlines" = false; + "displayedText" = "Name"; + "wrapPage" = true; + General = { + "displayedText" = "Name"; + "wrapPage" = true; + "currentDesktopSelected" = "ShowDesktop"; + "showOnlyCurrentScreen" = false; + "showWindowOutlines" = false; + }; }; } - "org.kde.plasma.pager" "org.kde.plasma.panelspacer" "org.kde.plasma.mediacontroller" "org.kde.plasma.digitalclock" From 97bee0a6d0d5fbab4fa8ea944f3354e5aed1b2bb Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 28 Apr 2026 10:46:49 -0400 Subject: [PATCH 214/236] fix(ghostty) : opening term in home directory instead of the working directory BUT when opening a new one from an existing one keeps the working directory --- progs/terminals/ghostty.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/progs/terminals/ghostty.nix b/progs/terminals/ghostty.nix index 4efe727..a6a8534 100644 --- a/progs/terminals/ghostty.nix +++ b/progs/terminals/ghostty.nix @@ -24,7 +24,7 @@ in (tools.fullModule { installVimSyntax = true; settings = { working-directory = "$HOME"; - gtk-single-instance = false; + gtk-single-instance = true; window-inherit-working-directory = true; background-opacity = "0.8"; }; From 07db1575b3dc4c4f7dac27b77cab32c1b87363e4 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:05:11 -0400 Subject: [PATCH 215/236] update(klassy) : updating defaults files --- progs/desktop/klassy/defaults/params.json | 376 +++ progs/desktop/klassy/defaults/presets.klpw | 3079 ++++++++++++++++++++ 2 files changed, 3455 insertions(+) create mode 100644 progs/desktop/klassy/defaults/params.json create mode 100644 progs/desktop/klassy/defaults/presets.klpw diff --git a/progs/desktop/klassy/defaults/params.json b/progs/desktop/klassy/defaults/params.json new file mode 100644 index 0000000..01b4241 --- /dev/null +++ b/progs/desktop/klassy/defaults/params.json @@ -0,0 +1,376 @@ +{ + "style": { + "general": { + "corner_radius": { + "choice": "SameAsWindowDecoration", + "value": 3.0 + }, + "center_tabbar_tabs": false, + "show_button_gradient_effects": false, + "draw_toolbar_item_separators": true, + "draw_focus_indicator_in_lists": true, + "draw_sliders_ticks_marks": true, + "enable_extended_resize_handles": false, + "keyboard_accelerator_visibility": "", + "windows_drag_mode": "" + }, + "frames": { + "draw_frame_around_dockable_panels": false, + "draw_frame_around_side_panels": false, + "draw_a_thin_line_to_indicate_focus_in_menubars": false + }, + "scrollbars": { + "draw_scroll_bar_separator": false, + "scrollbar_top_n_bottom_margins": 4, + "arrow_buttons": { + "auto_hide_arrows": true, + "top_arrow_button": { + "type": 1, + "space_between_arrow_button_and_groove": { + "1": -4, + "2": -1 + } + }, + "bottom_arrow_button": { + "type": 1, + "space_between_arrow_button_and_groove": { + "1": -4, + "2": -1 + } + } + }, + "groove_or_slider": { + "slider_thickness_when_mouse_over": 8, + "slider_thickness_when_mouse_not_over": 75, + "slider_side_padding": 5, + "slider_minimum_height": 36 + } + }, + "transparency": { + "value": 100 + } + }, + "window_decoration": { + "buttons": { + "icons": "StyleKite", + "shape": "ShapeIntegratedRoundedRectangle", + "icon_size": "IconLargeMedium", + "bold_icons": "BoldIconsActiveHiDpi", + "system_icon_generation": { + "klassy_icon_theme_inherits_from": "breeze", + "klassy_dark_icon_theme_inherits_from": "breeze-dark" + }, + "button_size_n_spacing": { + "button_sizing": { + "left_hand_buttons_width_margins": 6, + "same_left_n_right_hand_buttons_width_margins": false, + "right_hand_buttons_width_margins": 18, + "close_button_width_margins": 100, + "spacer_button_width": 50, + "scale_touch_mode_buttons": 150 + }, + "button_spacing": { + "spacing_between_left_hand_buttons": 2, + "same_spacing_between_left_hand_buttons_n_right_hand_buttons": false, + "spacing_between_right_hand_buttons": 4, + "bottom_padding": 1.5 + }, + "button_corner_radius": { + "choice": "SameAsWindow", + "value": 2.5 + } + }, + "button_colours": { + "active_window": { + "icon_colours": { + "choice": "TitleBarText", + "close_button_icon_colour": "WhiteWhenHoverPress", + "contrast": { + "when_poor_contrast_detected": "TitleBarBackground", + "threshold": 1.5 + }, + "opacity": 100 + }, + "background_n_outline_colours": { + "choice": "AccentNegativeClose", + "use_hover_colour_from_colour_scheme": false, + "contrast": { + "adjust_colour_when_poor_contrast_detected": true, + "threshold": 1.1 + }, + "opacity": 60 + }, + "override_idividual_colours": false + }, + "inactive_window": { + "icon_colours": { + "choice": "TitleBarText", + "close_button_icon_colour": "WhiteWhenHoverPress", + "contrast": { + "when_poor_contrast_detected": "TitleBarBackground", + "threshold": 1.5 + }, + "opacity": 100 + }, + "background_n_outline_colours": { + "choice": "AccentNegativeClose", + "use_hover_colour_from_colour_scheme": false, + "contrast": { + "adjust_colour_when_poor_contrast_detected": true, + "threshold": 1.1 + }, + "opacity": 60 + }, + "override_idividual_colours": false, + "lock_active": true, + "use_same_hover_n_press_colours_as_active_window": true + }, + "lock_active_inactive": true + }, + "button_behaviour": { + "unison_hovering": false, + "active_window": { + "normal_buttons": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "state_to_use_for_checked_buttons": "Press" + }, + "lock_to_make_same_changes_to_normal_button_and_closse_button": true, + "close_button": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + } + }, + "lock_active_inactive": true + }, + "inactive_window": { + "normal_buttons": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "state_to_use_for_checked_buttons": "Press" + }, + "lock_to_make_same_changes_to_normal_button_and_closse_button": true, + "close_button": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + } + }, + "lock_active": true + } + } + }, + "titlebar": { + "spacing": { + "title_bar_top_margins": 3.6, + "same_titlebar_top_n_bottom_margins": true, + "title_bar_bottom_margins": 3.6, + "titlebar_left_margins": 0, + "same_titlebar_left_n_right_margins": true, + "titlebar_right_margins": 0, + "title_side_padding": 4, + "title_alignment": "AlignCenterFullWidth", + "title_top_n_bottom_margins_for_maximized_windows": 85 + }, + "opacity": { + "active_window": 100, + "inactive_window": 100, + "always_make_titlebar_opaque_when_maximized": true, + "blur_titlebar_that_have_transparency": true, + "apply_these_opacity_to_entire_header_area": true + }, + "match_titlebar_colour_to_application": false, + "on_active_window": { + "draw_titlebar_background_gradient": false, + "draw_separator_under_titlebar": true, + "make_title_bold": true, + "underline_title": false + } + }, + "window": { + "corners": { + "conor_radius": 4, + "round_corners_when_no_borders": true + }, + "borders": { + "title_bar_colour_for_window_borders": true, + "draw_borders_on_maximized_windows": false + }, + "thin_window_outline": { + "window_outline_style": { + "window_outline_thickness": 1.0, + "snap_to_whole_pixel": true, + "overlap": true, + "same_active_n_inactive_window_outline": false, + "active_window": { + "window_outline_style": "WindowOutlineShadowColor", + "opacity": { + "WindowOutlineNone": null, + "WindowOutlineShadowColor": { + "name": "WindowOutlineShadowColorOpacity", + "value": 20 + }, + "WindowOutlineContrast": { + "name": "WindowOutlineContrastOpacityActive", + "value": 25 + }, + "WindowOutlineAccentColor": { + "name": "WindowOutlineAccentColorOpacityActive", + "value": 67 + }, + "WindowOutlineAccentWithContrast": { + "name": "WindowOutlineAccentWithContrastOpacityActive", + "value": 50 + }, + "WindowOutlineCustomColor": { + "name": "WindowOutlineCustomColorOpacityActive", + "value": 60 + }, + "WindowOutlineCustomWithContrast": { + "name": "WindowOutlineCustomWithContrastOpacityActive", + "value": 40 + } + }, + "color": { + "choice": "0,0,0", + "lock_custom_colour_active_inactive": true + } + }, + "inactive_window": { + "window_outline_style": "WindowOutlineShadowColor", + "opacity": { + "WindowOutlineNone": null, + "WindowOutlineShadowColor": { + "name": "WindowOutlineShadowColorOpacity", + "value": 20 + }, + "WindowOutlineContrast": { + "name": "WindowOutlineContrastOpacityInactive", + "value": 25 + }, + "WindowOutlineAccentColor": { + "name": "WindowOutlineAccentColorOpacityInactive", + "value": 67 + }, + "WindowOutlineAccentWithContrast": { + "name": "WindowOutlineAccentWithContrastOpacityInactive", + "value": 50 + }, + "WindowOutlineCustomColor": { + "name": "WindowOutlineCustomColorOpacityInactive", + "value": 60 + }, + "WindowOutlineCustomWithContrast": { + "name": "WindowOutlineCustomWithContrastOpacityInactive", + "value": 40 + } + }, + "color": { + "choice": "0,0,0" + } + } + }, + "colourize_with_higlighted_buttons_colour": true + }, + "shadow": { + "size": "ShadowLarge", + "strength": 100, + "colour": "0,0,0" + } + }, + "animations": { + "enable": true, + "animations_speed": 0 + }, + "window_specific_overrides": { + "defaults_overrides": { + "enabled": true + }, + "user_specific_overrides": { + "enabled": true, + "window_identification": { + "window_property": 0, + "regex": "" + }, + "windeco_options": { + "preset": { + "enabled": false, + "value": "" + }, + "hide_window_titlebar": 0, + "opaque_titlebar": false, + "match_titlebar_colour_to_application": false, + "border_size": { + "enabled": false, + "value": 0 + } + }, + "application_style_options": { + "application_name_regex": "", + "opaque_header": false + } + } + } + } +} \ No newline at end of file diff --git a/progs/desktop/klassy/defaults/presets.klpw b/progs/desktop/klassy/defaults/presets.klpw new file mode 100644 index 0000000..1b837d3 --- /dev/null +++ b/progs/desktop/klassy/defaults/presets.klpw @@ -0,0 +1,3079 @@ +[Global] +BundledWindecoPresetsImportedVersion=6.5.3 + +[Windeco Preset Breeze Original] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=false +AdjustBackgroundColorOnPoorContrastInactive=false +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsFine +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=100 +ButtonBackgroundOpacityInactive=70 +ButtonColorsInactiveSameHoverPress=false +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleOxygen +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=4 +ButtonSpacingRight=4 +ButtonStateCheckedActive=Hover +ButtonStateCheckedInactive=Hover +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=true +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=true +NegativeCloseBackgroundHoverPressInactive=true +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=MoreTitleBar +VaryColorBackgroundInactive=MoreTitleBar +VaryColorCloseBackgroundActive=Light +VaryColorCloseBackgroundInactive=Light +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=No +VaryColorCloseOutlineInactive=No +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=No +VaryColorOutlineInactive=No +WindowCornerRadius=3 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset Chroma] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=-2 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=87 +ButtonBackgroundOpacityInactive=38 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleOxygen +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=10 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HAIX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=true +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=105 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon18 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=6 +TitleBarLeftMargin=8 +TitleBarRightMargin=8 +TitleBarTopMargin=6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Opaque +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Transparent +VaryColorOutlineInactive=Opaque +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset ClassiK v3] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKlasse +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeFullHeightRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=8 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=NoSides +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=80 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Opaque +VaryColorCloseOutlineInactive=Opaque +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineAccentColor +WindowOutlineStyleInactive=WindowOutlineAccentWithContrast +WindowOutlineThickness=1 + +[Windeco Preset ClassikStyles] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKlasse +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeFullHeightRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=0 +FullHeightButtonSpacingRight=0 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=80 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 10] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsFine +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=13 +ButtonBackgroundOpacityInactive=13 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleMetro +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeFullySaturated",60]} +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeFullySaturated",60]} +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=8 +FullHeightButtonWidthMarginRight=24 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MSF +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=50 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignLeft +TitleBarBottomMargin=4.5 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4.5 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=50 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 11] +ActiveTitleBarOpacity=75 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsFine +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=10 +ButtonBackgroundOpacityInactive=10 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=0 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleFluent +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeSaturated",80]} +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeSaturated",80]} +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeFullHeightRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=0 +FullHeightButtonSpacingRight=0 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=28 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=false +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=true +OverrideInactiveTitleBarOpacity=true +PercentMaximizedTopBottomMargins=50 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon20 +TitleAlignment=AlignLeft +TitleBarBottomMargin=4.5 +TitleBarLeftMargin=4 +TitleBarRightMargin=0 +TitleBarTopMargin=4.5 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=8 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 7] +ActiveTitleBarOpacity=50 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=70 +ButtonBackgroundOpacityInactive=70 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=2.4 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveClose={"IconHover":[254,254,254],"IconNormal":[254,254,254],"IconPress":[254,254,254],"OutlineHover":[60,254,254,254],"OutlineNormal":[60,254,254,254],"OutlinePress":[60,254,254,254]} +ButtonOverrideColorsActiveContextHelp={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveKeepAbove={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveKeepBelow={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveMaximize={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveMenu={"BackgroundHover":[0,0,0,0],"BackgroundNormal":[0,0,0,0],"BackgroundPress":[0,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",0],"OutlineNormal":["White",0],"OutlinePress":["White",0]} +ButtonOverrideColorsActiveMinimize={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveOnAllDesktops={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveShade={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveApplicationMenu={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveClose={"IconHover":[254,254,254],"IconPress":[254,254,254],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveContextHelp={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveKeepAbove={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveKeepBelow={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveMaximize={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveMenu={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",0],"OutlineNormal":["White",0],"OutlinePress":["White",0]} +ButtonOverrideColorsInactiveMinimize={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveOnAllDesktops={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveShade={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive=["OutlineHover","OutlinePress"] +ButtonShape=ShapeIntegratedRoundedRectangleGrouped +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=300 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=0 +FullHeightButtonSpacingRight=0 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=10 +IconSize=IconMedium +InactiveTitleBarOpacity=30 +IntegratedRoundedRectangleBottomPadding=8 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=BlackWhite +OnPoorIconContrastInactive=BlackWhite +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=true +OverrideInactiveTitleBarOpacity=true +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.2 +PoorBackgroundContrastThresholdInactive=1.2 +PoorIconContrastThresholdActive=1.2 +PoorIconContrastThresholdInactive=1.2 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=6 +TitleBarRightMargin=6 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Light +VaryColorCloseBackgroundInactive=Light +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Light +VaryColorCloseOutlineInactive=Light +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 8] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=0 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose={"BackgroundNormal":[15,0,0,0]} +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangleGrouped +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=White +CloseButtonIconColorInactive=White +CloseFullHeightButtonWidthMarginRelative=300 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=10 +IconSize=IconSmallMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=9 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=6 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Eaten Fruits] +ActiveTitleBarOpacity=50 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=85 +ButtonBackgroundOpacityInactive=50 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleArk +ButtonOverrideColorsActiveApplicationMenu={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveClose={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveContextHelp={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveKeepAbove={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveKeepBelow={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveMaximize={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveMenu={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveMinimize={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveOnAllDesktops={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveShade={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveApplicationMenu={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveClose={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveContextHelp={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveKeepAbove={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveKeepBelow={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveMaximize={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveMenu={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveMinimize={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveOnAllDesktops={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveShade={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsLockStatesActive=["OutlineNormal","OutlineHover","OutlinePress"] +ButtonOverrideColorsLockStatesInactive=["BackgroundNormal","OutlineNormal","OutlineHover","OutlinePress"] +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=10 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=30 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=XIA +KwinButtonsOnRight=HFSM +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=true +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=false +ShowCloseIconNormallyInactive=false +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=false +ShowIconNormallyInactive=false +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon18 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=7 +TitleBarLeftMargin=10 +TitleBarRightMargin=10 +TitleBarTopMargin=7 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=true +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Opaque +VaryColorCloseOutlineInactive=Opaque +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=10 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Garden Ornaments] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActive +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarText +ButtonBackgroundColorsInactive=TitleBarText +ButtonBackgroundOpacityActive=16 +ButtonBackgroundOpacityInactive=12 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=10 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=16 +IconSize=IconSmallMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=70 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=150 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=6 +TitleBarLeftMargin=8 +TitleBarRightMargin=8 +TitleBarTopMargin=6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=No +VaryColorCloseOutlineInactive=No +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=No +VaryColorOutlineInactive=No +WindowCornerRadius=10 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Glassy Klassy] +ActiveTitleBarOpacity=50 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=30 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=true +OverrideInactiveTitleBarOpacity=true +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=50 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset KLCXP] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=false +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=50 +ButtonBackgroundOpacityInactive=30 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=2 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive=["OutlineNormal","OutlineHover","OutlinePress"] +ButtonOverrideColorsLockStatesInactive=["OutlineNormal","OutlineHover","OutlinePress"] +ButtonShape=ShapeSmallRoundedSquare +ButtonSpacingLeft=2 +ButtonSpacingRight=2 +ButtonStateCheckedActive=Hover +ButtonStateCheckedInactive=Hover +CloseButtonIconColorActive=White +CloseButtonIconColorInactive=White +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=120 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=2 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=2 +TitleSidePadding=8 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=MostOpaqueHover +VaryColorBackgroundInactive=MostOpaqueHover +VaryColorCloseBackgroundActive=MostOpaqueHover +VaryColorCloseBackgroundInactive=MostOpaqueHover +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=MostOpaqueHover +VaryColorCloseOutlineInactive=MostOpaqueHover +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=MostOpaqueHover +VaryColorOutlineInactive=MostOpaqueHover +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineNone +WindowOutlineStyleInactive=WindowOutlineNone +WindowOutlineThickness=2 + +[Windeco Preset Kite] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset Kite-Aurorae] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActive +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=6 +ButtonSpacingRight=12 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=false +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=115 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=6 +TitleBarRightMargin=6 +TitleBarTopMargin=3 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=3.2 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Opal Fruits] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsHiDpiOnly +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=50 +ButtonIconStyle=StyleSuessigKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=4 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=8 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HAI_X +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=33 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=5 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineAccentColor +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=2 + +[Windeco Preset Plastik] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=false +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActive +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=40 +ButtonBackgroundOpacityInactive=25 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=2 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveClose={"BackgroundNormal":["White",10],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveContextHelp={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveKeepAbove={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"IconPress":["AccentButtonFocus"],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveKeepBelow={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveMaximize={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveMinimize={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveOnAllDesktops={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveShade={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveApplicationMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveClose={"BackgroundNormal":["White",5],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveContextHelp={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveKeepAbove={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"IconPress":["AccentButtonFocus"],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveKeepBelow={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveMaximize={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveMinimize={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveOnAllDesktops={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveShade={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsLockStatesActive=["BackgroundNormal","BackgroundHover","BackgroundPress","OutlineNormal","OutlineHover","OutlinePress"] +ButtonOverrideColorsLockStatesInactive=["BackgroundNormal","BackgroundHover","OutlineNormal","OutlineHover","OutlinePress"] +ButtonShape=ShapeSmallRoundedSquare +ButtonSpacingLeft=2 +ButtonSpacingRight=2 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=120 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignLeft +TitleBarBottomMargin=2 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=2 +TitleSidePadding=8 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=LightestHover +VaryColorBackgroundInactive=LightestHover +VaryColorCloseBackgroundActive=LightestHover +VaryColorCloseBackgroundInactive=LightestHover +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=LightestHover +VaryColorCloseOutlineInactive=LightestHover +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=LightestHover +VaryColorOutlineInactive=LightestHover +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset SuessigKite] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleSuessigKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 From 8ea7c2c003569063fe9081d6c759ba66f2966082 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:05:25 -0400 Subject: [PATCH 216/236] update(klassy) : updating presets files --- progs/desktop/klassy/presets/Clean.klpw | 182 ++++++++++++++++++ .../klassy/presets/CleanTranslucid.klpw | 182 ++++++++++++++++++ 2 files changed, 364 insertions(+) create mode 100644 progs/desktop/klassy/presets/Clean.klpw create mode 100644 progs/desktop/klassy/presets/CleanTranslucid.klpw diff --git a/progs/desktop/klassy/presets/Clean.klpw b/progs/desktop/klassy/presets/Clean.klpw new file mode 100644 index 0000000..2da0189 --- /dev/null +++ b/progs/desktop/klassy/presets/Clean.klpw @@ -0,0 +1,182 @@ +[Klassy Window Decoration Preset File] +version=6.5.3 + +[Windeco Preset Clean] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=AccentTrafficLights +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleMetro +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=M +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=true +UseHoverAccentInactive=true +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 diff --git a/progs/desktop/klassy/presets/CleanTranslucid.klpw b/progs/desktop/klassy/presets/CleanTranslucid.klpw new file mode 100644 index 0000000..60048e3 --- /dev/null +++ b/progs/desktop/klassy/presets/CleanTranslucid.klpw @@ -0,0 +1,182 @@ +[Klassy Window Decoration Preset File] +version=6.5.3 + +[Windeco Preset CleanTranslucid] +ActiveTitleBarOpacity=80 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=AccentTrafficLights +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleMetro +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=3 +ButtonSpacingRight=5 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=80 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=M +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 From 64f3ff1ba56934d42d41f23ef4c639d2e4601a3f Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:06:00 -0400 Subject: [PATCH 217/236] misc(klassy) : adding files for developpement --- progs/desktop/klassy/.dev/allFields.txt | 161 ++++++++++++++++++++++++ progs/desktop/klassy/.dev/klassyrc.bak | 40 ++++++ 2 files changed, 201 insertions(+) create mode 100644 progs/desktop/klassy/.dev/allFields.txt create mode 100644 progs/desktop/klassy/.dev/klassyrc.bak diff --git a/progs/desktop/klassy/.dev/allFields.txt b/progs/desktop/klassy/.dev/allFields.txt new file mode 100644 index 0000000..0a4d511 --- /dev/null +++ b/progs/desktop/klassy/.dev/allFields.txt @@ -0,0 +1,161 @@ +[Windeco] +BoldButtonIcons= +BoldTitle= +ButtonIconStyle= +ButtonShape= +ColorizeWindowOutlineWithButton= +IconSize= +RoundAllCornersWhenNoBorders= +WindowCornerRadius= +AnimationsSpeedRelativeSystem= +SystemIconSize= +DrawBackgroundGradient= +DrawTitleBarSeparator= +MatchTitleBarToApplicationColor= + +[ButtonColors] +AdjustBackgroundColorOnPoorContrastActive= +AdjustBackgroundColorOnPoorContrastInactive= +ButtonBackgroundColorsActive= +ButtonBackgroundColorsInactive= +ButtonBackgroundOpacityActive= +ButtonBackgroundOpacityInactive= +ButtonColorsInactiveSameHoverPress= +LockButtonColorsActiveInactive= +NegativeCloseBackgroundHoverPressActive= +NegativeCloseBackgroundHoverPressInactive= +ButtonIconColorsActive= +ButtonIconColorsInactive= +CloseButtonIconColorActive= +CloseButtonIconColorInactive= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsInactiveClose= +OnPoorIconContrastActive= +OnPoorIconContrastInactive= +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesInactive= +PoorBackgroundContrastThresholdActive= +PoorBackgroundContrastThresholdInactive= +PoorIconContrastThresholdActive= +PoorIconContrastThresholdInactive= +ButtonOverrideColorsLockStatesActive= +ButtonIconOpacityInactive= + +[ButtonBehaviour] +ShowBackgroundNormallyActive= +ShowBackgroundNormallyInactive= +ShowCloseBackgroundNormallyActive= +ShowCloseBackgroundNormallyInactive= +ShowCloseOutlineNormallyActive= +ShowCloseOutlineNormallyInactive= +ShowOutlineNormallyActive= +ShowOutlineNormallyInactive= +VaryColorBackgroundActive= +VaryColorBackgroundInactive= +VaryColorCloseBackgroundActive= +VaryColorCloseBackgroundInactive= +VaryColorCloseOutlineActive= +VaryColorCloseOutlineInactive= +VaryColorOutlineActive= +VaryColorOutlineInactive= +ButtonStateCheckedActive= +ButtonStateCheckedInactive= +LockCloseButtonBehaviourActive= +LockCloseButtonBehaviourInactive= +ShowCloseOutlineOnHoverActive= +ShowCloseOutlineOnHoverInactive= +ShowCloseOutlineOnPressActive= +ShowCloseOutlineOnPressInactive= +ShowOutlineOnHoverActive= +ShowOutlineOnHoverInactive= +ShowOutlineOnPressActive= +ShowOutlineOnPressInactive= +ShowCloseIconNormallyActive= +ShowCloseIconNormallyInactive= +ShowIconNormallyActive= +ShowIconNormallyInactive= +UnisonHovering= + +[ButtonSizing] +ButtonCornerRadius= +ButtonCustomCornerRadius= +ButtonSpacingLeft= +ButtonSpacingRight= +FullHeightIntegratedRoundedRectangleBottomPadding= +LockFullHeightButtonSpacingLeftRight= +ScaleBackgroundPercent= +LockButtonSpacingLeftRight= +FullHeightFullHeightButtonWidthMarginLeft= +IntegratedRoundedRectangleBottomPadding= +FullHeightFullHeightButtonWidthMarginRight= +FullHeightCloseFullHeightButtonWidthMarginRelative= +CloseFullHeightButtonWidthMarginRelative= +SpacerButtonWidthRelative= + +[TitleBarSpacing] +PercentMaximizedTopBottomMargins= +TitleAlignment= +TitleBarBottomMargin= +TitleBarLeftMargin= +TitleBarRightMargin= +TitleBarTopMargin= +TitleSidePadding= +LockTitleBarLeftRightMargins= +LockTitleBarTopBottomMargins= +TitleBarTopMargin= + +[TitleBarOpacity] +ActiveTitleBarOpacity= +InactiveTitleBarOpacity= +OpaqueMaximizedTitleBars= + +[WindowOutlineStyle] +LockWindowOutlineStyleActiveInactive= +WindowOutlineOverlap= +WindowOutlineStyleActive= +WindowOutlineStyleInactive= +WindowOutlineContrastOpacityActive= +WindowOutlineThickness= + +[Style] +ButtonGradient= +FrameCornerRadius= +FrameCustomCornerRadius= +MenuItemDrawStrongFocus= +MnemonicsMode= +ScrollBarAddLineButtons= +ScrollBarBottomTwoButtonSpacing= +ScrollBarMinSliderHeight= +ScrollBarSeparator= +ScrollBarSliderPadding= +ScrollBarSliderThicknessMouseNotOverPercent= +ScrollBarSliderThicknessMouseOver= +ScrollBarSubLineButtons= +ScrollBarTopBottomMargins= +ScrollBarTopTwoButtonSpacing= +SliderDrawTickMarks= +SplitterProxyEnabled= +TabBarDrawCenteredTabs= +ToolBarDrawItemSeparator= +ViewDrawFocusIndicator= +WindowDragMode= +MenuOpacity= +ScrollBarBottomOneButtonSpacing= +ScrollBarTopOneButtonSpacing= \ No newline at end of file diff --git a/progs/desktop/klassy/.dev/klassyrc.bak b/progs/desktop/klassy/.dev/klassyrc.bak new file mode 100644 index 0000000..2659ef7 --- /dev/null +++ b/progs/desktop/klassy/.dev/klassyrc.bak @@ -0,0 +1,40 @@ +[ButtonColors] +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonColorsInactiveSameHoverPress=false +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=AccentTrafficLights +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +LockButtonColorsActiveInactive=false + +[Global] +LookAndFeelSet=org.kde.klassykisweetdarkbottompanel.desktop +RefreshedConfig=6.5.3 + +[Style] +DockWidgetDrawFrame=true +MenuItemDrawStrongFocus=false +SidePanelDrawFrame=true +SplitterProxyEnabled=true + +[Windeco] +ButtonIconStyle=StyleMetro +ColorizeWindowOutlineWithButton=false +DrawTitleBarSeparator=false +MatchTitleBarToApplicationColor=true +RoundAllCornersWhenNoBorders=false +WindowCornerRadius=0 + +[Windeco Exception 0] +BorderSize=0 +Enabled=true +ExceptionBorder=true +ExceptionMatchTitleBarToApplicationColor=true +ExceptionPreset=CleanTranslucid +ExceptionProgramNamePattern= +ExceptionWindowPropertyPattern=com.mitchellh.ghostty +ExceptionWindowPropertyType=0 +HideTitleBar=0 +OpaqueTitleBar=false +PreventApplyOpacityToHeader=false From 3b6714aaa4486b279fedd8e2dd946b1d3e737ca0 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:07:09 -0400 Subject: [PATCH 218/236] misc(klassy+general) : adding a todo list of tasks I want to do/dev --- TODO.MD | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 TODO.MD diff --git a/TODO.MD b/TODO.MD new file mode 100644 index 0000000..687494e --- /dev/null +++ b/TODO.MD @@ -0,0 +1,29 @@ +[ x ] Make klassy configurable from nix file raw in klassy module + [ x ] Win decorations + [ x ] Implement parsing of Windeco section of config file + [ ] SystemIconSize ? WTF (not essential) + [ x ] Implement parsing of ButtonColors section of config file + [ ] Manage ULTRA PERSONALIZATION (later) + [ x ] Implement parsing of ButtonBehaviour section of config file + [ x ] Implement parsing of ButtonSizing section of config file + [ x ] Implement parsing of TitleBarSpacing section of config file + [ x ] Implement parsing of TitleBarOpacity section of config file + [ x ] WindowOutlineStyle section of config file + [ x ] ShadowStyle section of config file + [ x ] Define all options in menu + [ x ] Find defaults + [ x ] Implement parsing of ShadowStyle section of config file + [ x ] Implement parsing of ShadowStyle section of config file + [ x ] Windeco Exception + [ x ] Defaults + [ x ] Users + [ x ] Style + [ x ] Define all options in menu + [ x ] Find defaults + [ ] keyboard_accelerator_visibility (not that important) + [ ] + windows_drag_mode (not that important) + [ x ] Implement parsing of Style section of config file + [ x ] Presets + [ x ] Importing exising presets as files + [ ] Creating presets from nix config files (later) From 2d9fa7c6606d7509f5adb3ec522f9097de57bb2e Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:07:17 -0400 Subject: [PATCH 219/236] feat(klassy) : making klassy a declarative module of home manager that is reproduicable --- progs/desktop/klassy.nix | 978 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 977 insertions(+), 1 deletion(-) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix index 2237c32..514f3c7 100644 --- a/progs/desktop/klassy.nix +++ b/progs/desktop/klassy.nix @@ -6,6 +6,969 @@ tools, ... }: let + defaultsParams = builtins.fromJSON (builtins.readFile ./klassy/defaults/params.json); + definedOrNull = fullAttrs: subAttrPath: let + subAttrPathList = lib.splitString "." subAttrPath; + first = lib.lists.last (lib.lists.take 1 subAttrPathList); + subAttrPathWithoutFirst = lib.lists.drop 1 subAttrPathList; + in + if fullAttrs != null && builtins.isAttrs fullAttrs && builtins.hasAttr first fullAttrs + then + if subAttrPathWithoutFirst == [] + then fullAttrs.${first} + else definedOrNull fullAttrs.${first} (lib.concatStringsSep "." subAttrPathWithoutFirst) + else null; + getDefault = defaults: path: let + subAttrPathList = lib.splitString "." path; + first = lib.lists.last (lib.lists.take 1 subAttrPathList); + subAttrPathWithoutFirst = lib.lists.drop 1 subAttrPathList; + in + if subAttrPathWithoutFirst == [] + then defaults.${first} + else getDefault defaults.${first} (lib.concatStringsSep "." subAttrPathWithoutFirst); + defaultIfUndefined = params: defaults: path: let + value = definedOrNull params path; + default = getDefault defaults path; + in + if value != null + then value + else default; + boolToString = value: + if value == true + then "true" + else "false"; + parseDefaultOverrides = counter: settings: defaultSettings: let + Enabled = defaultIfUndefined settings defaultSettings "enabled"; + in '' + [Default Windeco Exception ${toString counter}] + Enabled=${boolToString Enabled} + ''; + + parseUserSpecificOverride = counter: settings: defaultSettings: let + Enabled = defaultIfUndefined settings defaultSettings "enabled"; + windowIdenticationSettingsPath = "window_identification"; + ExceptionWindowPropertyType = defaultIfUndefined settings defaultSettings "${windowIdenticationSettingsPath}.window_property"; + ExceptionWindowPropertyPattern = defaultIfUndefined settings defaultSettings "${windowIdenticationSettingsPath}.regex"; + windecoOptionsSettingsPath = "windeco_options"; + borderSizeSettingsPath = "${windecoOptionsSettingsPath}.border_size"; + ExceptionBorder = defaultIfUndefined settings defaultSettings "${borderSizeSettingsPath}.enabled"; + BorderSize = defaultIfUndefined settings defaultSettings "${borderSizeSettingsPath}.value"; + ExceptionMatchTitleBarToApplicationColor = defaultIfUndefined settings defaultSettings "${windecoOptionsSettingsPath}.match_titlebar_colour_to_application"; + HideTitleBar = defaultIfUndefined settings defaultSettings "${windecoOptionsSettingsPath}.hide_window_titlebar"; + OpaqueTitleBar = defaultIfUndefined settings defaultSettings "${windecoOptionsSettingsPath}.opaque_titlebar"; + presetSettingsPath = "${windecoOptionsSettingsPath}.preset"; + enablePreset = defaultIfUndefined settings defaultSettings "${presetSettingsPath}.enabled"; + + ExceptionPreset = + if enablePreset + then defaultIfUndefined settings defaultSettings "${presetSettingsPath}.value" + else ""; + + applicationStyleOptionsSettingsPath = "application_style_options"; + ExceptionProgramNamePattern = defaultIfUndefined settings defaultSettings "${applicationStyleOptionsSettingsPath}.application_name_regex"; + PreventApplyOpacityToHeader = defaultIfUndefined settings defaultSettings "${applicationStyleOptionsSettingsPath}.opaque_header"; + in '' + [Windeco Exception ${toString counter}] + Enabled=${boolToString Enabled} + ExceptionWindowPropertyType=${toString ExceptionWindowPropertyType} + ExceptionWindowPropertyPattern=${toString ExceptionWindowPropertyPattern} + ExceptionBorder=${boolToString ExceptionBorder} + BorderSize=${toString BorderSize} + ExceptionMatchTitleBarToApplicationColor=${boolToString ExceptionMatchTitleBarToApplicationColor} + HideTitleBar=${toString HideTitleBar} + OpaqueTitleBar=${boolToString OpaqueTitleBar} + ExceptionPreset=${ExceptionPreset} + ExceptionProgramNamePattern=${ExceptionProgramNamePattern} + PreventApplyOpacityToHeader=${boolToString PreventApplyOpacityToHeader} + ''; + parseParams = settings: let + KlassySettings = settings.klassy; + styleSettingsPath = "style"; + decorationSettingsPath = "window_decoration"; + windowSettingsPath = "${decorationSettingsPath}.window"; + titlebarSettingsPath = "${decorationSettingsPath}.titlebar"; + buttonsSettingsPath = "${decorationSettingsPath}.buttons"; + animationsSettingsPath = "${decorationSettingsPath}.animations"; + windowSpecificOverridesSettingsPath = "${decorationSettingsPath}.window_specific_overrides"; + + Windeco = let + ButtonIconStyle = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.icons"; + ButtonShape = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.shape"; + IconSize = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.icon_size"; + BoldButtonIcons = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.bold_icons"; + + BoldTitle = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.on_active_window.make_title_bold"; + + ColorizeWindowOutlineWithButton = defaultIfUndefined KlassySettings defaultsParams "${windowSettingsPath}.thin_window_outline.colourize_with_higlighted_buttons_colour"; + RoundAllCornersWhenNoBorders = defaultIfUndefined KlassySettings defaultsParams "${windowSettingsPath}.corners.round_corners_when_no_borders"; + WindowCornerRadius = defaultIfUndefined KlassySettings defaultsParams "${windowSettingsPath}.corners.corner_radius"; + AnimationsEnabled = defaultIfUndefined KlassySettings defaultsParams "${animationsSettingsPath}.enable"; + AnimationsSpeedRelativeSystem = defaultIfUndefined KlassySettings defaultsParams "${animationsSettingsPath}.animations_speed"; + DrawBackgroundGradient = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.on_active_window.draw_titlebar_background_gradient"; + DrawTitleBarSeparator = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.on_active_window.draw_separator_under_titlebar"; + MatchTitleBarToApplicationColor = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.match_titlebar_colour_to_application"; + in '' + ButtonIconStyle=${ButtonIconStyle} + ButtonShape=${ButtonShape} + IconSize=${IconSize} + BoldButtonIcons=${boolToString BoldButtonIcons} + BoldTitle=${boolToString BoldTitle} + ColorizeWindowOutlineWithButton=${boolToString ColorizeWindowOutlineWithButton} + RoundAllCornersWhenNoBorders=${boolToString RoundAllCornersWhenNoBorders} + WindowCornerRadius=${toString WindowCornerRadius} + AnimationsEnabled=${boolToString AnimationsEnabled} + AnimationsSpeedRelativeSystem=${toString AnimationsSpeedRelativeSystem} + # SystemIconSize= : find the parameter that determines this + DrawBackgroundGradient=${boolToString DrawBackgroundGradient} + DrawTitleBarSeparator=${boolToString DrawTitleBarSeparator} + MatchTitleBarToApplicationColor=${boolToString MatchTitleBarToApplicationColor} + ''; + ButtonColors = let + buttonSettingsPath = "${buttonsSettingsPath}.button_colours"; + + LockButtonColorsActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${buttonSettingsPath}.lock_active_inactive"; + + buttonsColoursActiveSettingsPath = "${buttonSettingsPath}.active_window"; + buttonsIconColoursActiveSettingsPath = "${buttonsColoursActiveSettingsPath}.icon_colours"; + + ButtonIconColorsActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.choice"; + CloseButtonIconColorActive = + if defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.close_button_icon_colour" == ButtonIconColorsActive + then "AsSelected" + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.close_button_icon_colour"; + ButtonIconOpacityActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.opacity"; + + buttonsColoursActiveContrastSettingsPath = "${buttonsIconColoursActiveSettingsPath}.contrast"; + + OnPoorIconContrastActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursActiveContrastSettingsPath}.when_poor_contrast_detected"; + PoorIconContrastThresholdActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursActiveContrastSettingsPath}.threshold"; + + buttonsBackground_N_OutlineColoursActiveSettingsPath = "${buttonsColoursActiveSettingsPath}.background_n_outline_colours"; + + ButtonBackgroundColorsActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.choice"; + UseHoverAccentActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.use_hover_colour_from_colour_scheme"; + ButtonBackgroundOpacityActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.opacity"; + + buttonsBackgroundActiveContrastSettingsPath = "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.contrast"; + + AdjustBackgroundColorOnPoorContrastActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundActiveContrastSettingsPath}.adjust_colour_when_poor_contrast_detected"; + PoorBackgroundContrastThresholdActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundActiveContrastSettingsPath}.threshold"; + + ############ Inactive window buttons settings + + buttonsColoursInactiveSettingsPath = "${buttonSettingsPath}.inactive_window"; + + ButtonColorsInactiveSameHoverPress = defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursInactiveSettingsPath}.use_same_hover_n_press_colours_as_active_window"; + + buttonsIconColoursInactiveSettingsPath = "${buttonsColoursInactiveSettingsPath}.icon_colours"; + + ButtonIconColorsInactive = + if LockButtonColorsActiveInactive + then ButtonIconColorsActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursInactiveSettingsPath}.choice"; + CloseButtonIconColorInactive = + if LockButtonColorsActiveInactive + then CloseButtonIconColorActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursInactiveSettingsPath}.close_button_icon_colour"; + ButtonIconOpacityInactive = + if LockButtonColorsActiveInactive + then ButtonIconOpacityActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursInactiveSettingsPath}.opacity"; + + buttonsColoursInactiveContrastSettingsPath = "${buttonsIconColoursInactiveSettingsPath}.contrast"; + + OnPoorIconContrastInactive = + if LockButtonColorsActiveInactive + then OnPoorIconContrastActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursInactiveContrastSettingsPath}.when_poor_contrast_detected"; + PoorIconContrastThresholdInactive = + if LockButtonColorsActiveInactive + then PoorIconContrastThresholdActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursInactiveContrastSettingsPath}.threshold"; + + buttonsBackground_N_OutlineColoursInactiveSettingsPath = "${buttonsColoursInactiveSettingsPath}.background_n_outline_colours"; + + ButtonBackgroundColorsInactive = + if LockButtonColorsActiveInactive + then ButtonBackgroundColorsActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.choice"; + UseHoverAccentInactive = + if LockButtonColorsActiveInactive + then UseHoverAccentActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.use_hover_colour_from_colour_scheme"; + ButtonBackgroundOpacityInactive = + if LockButtonColorsActiveInactive + then ButtonBackgroundOpacityActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.opacity"; + + buttonsBackgroundInactiveContrastSettingsPath = "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.contrast"; + + AdjustBackgroundColorOnPoorContrastInactive = + if LockButtonColorsActiveInactive + then AdjustBackgroundColorOnPoorContrastActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundInactiveContrastSettingsPath}.adjust_colour_when_poor_contrast_detected"; + PoorBackgroundContrastThresholdInactive = + if LockButtonColorsActiveInactive + then PoorBackgroundContrastThresholdActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundInactiveContrastSettingsPath}.threshold"; + in '' + AdjustBackgroundColorOnPoorContrastActive=${boolToString AdjustBackgroundColorOnPoorContrastActive} + AdjustBackgroundColorOnPoorContrastInactive=${boolToString AdjustBackgroundColorOnPoorContrastInactive} + ButtonBackgroundColorsActive=${ButtonBackgroundColorsActive} + ButtonBackgroundColorsInactive=${ButtonBackgroundColorsInactive} + ButtonBackgroundOpacityActive=${toString ButtonBackgroundOpacityActive} + ButtonBackgroundOpacityInactive=${toString ButtonBackgroundOpacityInactive} + ButtonColorsInactiveSameHoverPress=${boolToString ButtonColorsInactiveSameHoverPress} + LockButtonColorsActiveInactive=${boolToString LockButtonColorsActiveInactive} + #TODO NegativeCloseBackgroundHoverPressActive= + #TODO NegativeCloseBackgroundHoverPressInactive= + ButtonIconColorsActive=${ButtonIconColorsActive} + ButtonIconColorsInactive=${ButtonIconColorsInactive} + CloseButtonIconColorActive=${CloseButtonIconColorActive} + CloseButtonIconColorInactive=${CloseButtonIconColorInactive} + #TODO ButtonOverrideColorsActiveClose= + #TODO ButtonOverrideColorsInactiveClose= + OnPoorIconContrastActive=${boolToString OnPoorIconContrastActive} + OnPoorIconContrastInactive=${boolToString OnPoorIconContrastInactive} + #TODO ButtonOverrideColorsActiveApplicationMenu= + #TODO ButtonOverrideColorsActiveContextHelp= + #TODO ButtonOverrideColorsActiveKeepAbove= + #TODO ButtonOverrideColorsActiveKeepBelow= + #TODO ButtonOverrideColorsActiveMaximize= + #TODO ButtonOverrideColorsActiveMenu= + #TODO ButtonOverrideColorsActiveMinimize= + #TODO ButtonOverrideColorsActiveOnAllDesktops= + #TODO ButtonOverrideColorsActiveShade= + #TODO ButtonOverrideColorsInactiveApplicationMenu= + #TODO ButtonOverrideColorsInactiveContextHelp= + #TODO ButtonOverrideColorsInactiveKeepAbove= + #TODO ButtonOverrideColorsInactiveKeepBelow= + #TODO ButtonOverrideColorsInactiveMaximize= + #TODO ButtonOverrideColorsInactiveMenu= + #TODO ButtonOverrideColorsInactiveMinimize= + #TODO ButtonOverrideColorsInactiveOnAllDesktops= + #TODO ButtonOverrideColorsInactiveShade= + #TODO ButtonOverrideColorsLockStatesInactive= + PoorBackgroundContrastThresholdActive=${toString PoorBackgroundContrastThresholdActive} + PoorBackgroundContrastThresholdInactive=${toString PoorBackgroundContrastThresholdInactive} + PoorIconContrastThresholdActive=${toString PoorIconContrastThresholdActive} + PoorIconContrastThresholdInactive=${toString PoorIconContrastThresholdInactive} + #TODO ButtonOverrideColorsLockStatesActive= + ButtonIconOpacityActive=${toString ButtonIconOpacityActive} + ButtonIconOpacityInactive=${toString ButtonIconOpacityInactive} + UseHoverAccentActive=${boolToString UseHoverAccentActive} + UseHoverAccentInactive=${boolToString UseHoverAccentInactive} + ''; + ButtonBehaviour = let + buttonBehaviourSettingsPath = "${buttonsSettingsPath}.button_behaviour"; + UnisonHovering = defaultIfUndefined KlassySettings defaultsParams "${buttonBehaviourSettingsPath}.unison_hovering"; + + activeWindowSettingsPath = "${buttonBehaviourSettingsPath}.active_window"; + LockButtonBehaviourActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${activeWindowSettingsPath}.lock_active_inactive"; + LockCloseButtonBehaviourActive = defaultIfUndefined KlassySettings defaultsParams "${activeWindowSettingsPath}.lock_to_make_same_changes_to_normal_button_and_closse_button"; + activeNormalButtonsSettingsPath = "${activeWindowSettingsPath}.normal_buttons"; + ButtonStateCheckedActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalButtonsSettingsPath}.state_to_use_for_checked_buttons"; + activeNormalIconsSettingsPath = "${activeNormalButtonsSettingsPath}.icons"; + ShowIconNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.show_normally"; + ShowIconOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.show_on_hover"; + ShowIconOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.show_on_press"; + VaryColorIconActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.vary_color_on_state"; + activeNormalBackgroundsSettingsPath = "${activeNormalButtonsSettingsPath}.backgrounds"; + ShowBackgroundNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.show_normally"; + ShowBackgroundOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.show_on_hover"; + ShowBackgroundOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.show_on_press"; + VaryColorBackgroundActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.vary_color_on_state"; + activeNormalOutlinesSettingsPath = "${activeNormalButtonsSettingsPath}.outlines"; + ShowOutlineNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.show_normally"; + ShowOutlineOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.show_on_hover"; + ShowOutlineOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.show_on_press"; + VaryColorOutlineActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.vary_color_on_state"; + + activeCloseButtonSettingsPath = "${activeWindowSettingsPath}.close_button"; + activeCloseIconsSettingsPath = "${activeCloseButtonSettingsPath}.icons"; + ShowCloseIconNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.show_normally"; + ShowCloseIconOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.show_on_hover"; + ShowCloseIconOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.show_on_press"; + VaryColorCloseIconActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.vary_color_on_state"; + activeCloseBackgroundsSettingsPath = "${activeCloseButtonSettingsPath}.backgrounds"; + ShowCloseBackgroundNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.show_normally"; + ShowCloseBackgroundOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.show_on_hover"; + ShowCloseBackgroundOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.show_on_press"; + VaryColorCloseBackgroundActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.vary_color_on_state"; + activeCloseOutlinesSettingsPath = "${activeCloseButtonSettingsPath}.outlines"; + ShowCloseOutlineNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.show_normally"; + ShowCloseOutlineOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.show_on_hover"; + ShowCloseOutlineOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.show_on_press"; + VaryColorCloseOutlineActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.vary_color_on_state"; + + inactiveWindowSettingsPath = "${buttonBehaviourSettingsPath}.inactive_window"; + LockCloseButtonBehaviourInactive = + if LockButtonBehaviourActiveInactive + then LockCloseButtonBehaviourActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveWindowSettingsPath}.lock_to_make_same_changes_to_normal_button_and_closse_button"; + inactiveNormalButtonsSettingsPath = "${inactiveWindowSettingsPath}.normal_buttons"; + ButtonStateCheckedInactive = + if LockButtonBehaviourActiveInactive + then ButtonStateCheckedActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalButtonsSettingsPath}.state_to_use_for_checked_buttons"; + inactiveNormalIconsSettingsPath = "${inactiveNormalButtonsSettingsPath}.icons"; + ShowIconNormallyInactive = + if LockButtonBehaviourActiveInactive + then ShowIconNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.show_normally"; + ShowIconOnHoverInactive = + if LockButtonBehaviourActiveInactive + then ShowIconOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.show_on_hover"; + ShowIconOnPressInactive = + if LockButtonBehaviourActiveInactive + then ShowIconOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.show_on_press"; + VaryColorIconInactive = + if LockButtonBehaviourActiveInactive + then VaryColorIconActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.vary_color_on_state"; + inactiveNormalBackgroundsSettingsPath = "${inactiveNormalButtonsSettingsPath}.backgrounds"; + ShowBackgroundNormallyInactive = + if LockButtonBehaviourActiveInactive + then ShowBackgroundNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.show_normally"; + ShowBackgroundOnHoverInactive = + if LockButtonBehaviourActiveInactive + then ShowBackgroundOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.show_on_hover"; + ShowBackgroundOnPressInactive = + if LockButtonBehaviourActiveInactive + then ShowBackgroundOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.show_on_press"; + VaryColorBackgroundInactive = + if LockButtonBehaviourActiveInactive + then VaryColorBackgroundActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.vary_color_on_state"; + inactiveNormalOutlinesSettingsPath = "${inactiveNormalButtonsSettingsPath}.outlines"; + ShowOutlineNormallyInactive = + if LockButtonBehaviourActiveInactive + then ShowOutlineNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.show_normally"; + ShowOutlineOnHoverInactive = + if LockButtonBehaviourActiveInactive + then ShowOutlineOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.show_on_hover"; + ShowOutlineOnPressInactive = + if LockButtonBehaviourActiveInactive + then ShowOutlineOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.show_on_press"; + VaryColorOutlineInactive = + if LockButtonBehaviourActiveInactive + then VaryColorOutlineActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.vary_color_on_state"; + + inactiveCloseButtonSettingsPath = "${activeWindowSettingsPath}.close_button"; + inactiveCloseIconsSettingsPath = "${inactiveCloseButtonSettingsPath}.icons"; + ShowCloseIconNormallyInactive = + if LockCloseButtonBehaviourInactive + then ShowIconNormallyInactive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.show_normally"; + ShowCloseIconOnHoverInactive = + if LockCloseButtonBehaviourInactive + then ShowIconOnHoverInactive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.show_on_hover"; + ShowCloseIconOnPressInactive = + if LockCloseButtonBehaviourInactive + then ShowIconOnPressInactive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.show_on_press"; + VaryColorCloseIconInactive = + if LockCloseButtonBehaviourInactive + then VaryColorCloseIconActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.vary_color_on_state"; + inactiveCloseBackgroundsSettingsPath = "${inactiveCloseButtonSettingsPath}.backgrounds"; + ShowCloseBackgroundNormallyInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseBackgroundNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.show_normally"; + ShowCloseBackgroundOnHoverInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseBackgroundOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.show_on_hover"; + ShowCloseBackgroundOnPressInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseBackgroundOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.show_on_press"; + VaryColorCloseBackgroundInactive = + if LockCloseButtonBehaviourInactive + then VaryColorCloseBackgroundActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.vary_color_on_state"; + inactiveCloseOutlinesSettingsPath = "${inactiveCloseButtonSettingsPath}.outlines"; + ShowCloseOutlineNormallyInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseOutlineNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.show_normally"; + ShowCloseOutlineOnHoverInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseOutlineOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.show_on_hover"; + ShowCloseOutlineOnPressInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseOutlineOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.show_on_press"; + VaryColorCloseOutlineInactive = + if LockCloseButtonBehaviourInactive + then VaryColorCloseOutlineActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.vary_color_on_state"; + in '' + UnisonHovering=${boolToString UnisonHovering} + LockButtonBehaviourActiveInactive=${boolToString LockButtonBehaviourActiveInactive} + ButtonStateCheckedActive=${toString ButtonStateCheckedActive} + ShowIconNormallyActive=${boolToString ShowIconNormallyActive} + ShowIconOnHoverActive=${boolToString ShowIconOnHoverActive} + ShowIconOnPressActive=${boolToString ShowIconOnPressActive} + VaryColorIconActive=${VaryColorIconActive} + ShowBackgroundNormallyActive=${boolToString ShowBackgroundNormallyActive} + ShowBackgroundOnHoverActive=${boolToString ShowBackgroundOnHoverActive} + ShowBackgroundOnPressActive=${boolToString ShowBackgroundOnPressActive} + VaryColorBackgroundActive=${VaryColorBackgroundActive} + ShowOutlineNormallyActive=${boolToString ShowOutlineNormallyActive} + ShowOutlineOnHoverActive=${boolToString ShowOutlineOnHoverActive} + ShowOutlineOnPressActive=${boolToString ShowOutlineOnPressActive} + VaryColorOutlineActive=${VaryColorOutlineActive} + LockCloseButtonBehaviourActive=${boolToString LockCloseButtonBehaviourActive} + ShowCloseIconNormallyActive=${boolToString ShowCloseIconNormallyActive} + ShowCloseIconOnHoverActive=${boolToString ShowCloseIconOnHoverActive} + ShowCloseIconOnPressActive=${boolToString ShowCloseIconOnPressActive} + VaryColorCloseIconActive=${VaryColorCloseIconActive} + ShowCloseBackgroundNormallyActive=${boolToString ShowCloseBackgroundNormallyActive} + ShowCloseBackgroundOnHoverActive=${boolToString ShowCloseBackgroundOnHoverActive} + ShowCloseBackgroundOnPressActive=${boolToString ShowCloseBackgroundOnPressActive} + VaryColorCloseBackgroundActive=${VaryColorCloseBackgroundActive} + ShowCloseOutlineNormallyActive=${boolToString ShowCloseOutlineNormallyActive} + ShowCloseOutlineOnHoverActive=${boolToString ShowCloseOutlineOnHoverActive} + ShowCloseOutlineOnPressActive=${boolToString ShowCloseOutlineOnPressActive} + VaryColorCloseOutlineActive=${VaryColorCloseOutlineActive} + ButtonStateCheckedInactive=${boolToString ButtonStateCheckedInactive} + ShowIconNormallyInactive=${boolToString ShowIconNormallyInactive} + ShowIconOnHoverInactive=${boolToString ShowIconOnHoverInactive} + ShowIconOnPressInactive=${boolToString ShowIconOnPressInactive} + VaryColorIconInactive=${VaryColorIconInactive} + ShowBackgroundNormallyInactive=${boolToString ShowBackgroundNormallyInactive} + ShowBackgroundOnHoverInactive=${boolToString ShowBackgroundOnHoverInactive} + ShowBackgroundOnPressInactive=${boolToString ShowBackgroundOnPressInactive} + VaryColorBackgroundInactive=${VaryColorBackgroundInactive} + ShowOutlineNormallyInactive=${boolToString ShowOutlineNormallyInactive} + ShowOutlineOnHoverInactive=${boolToString ShowOutlineOnHoverInactive} + ShowOutlineOnPressInactive=${boolToString ShowOutlineOnPressInactive} + VaryColorOutlineInactive=${VaryColorOutlineInactive} + LockCloseButtonBehaviourInactive=${boolToString LockCloseButtonBehaviourInactive} + ShowCloseIconNormallyInactive=${boolToString ShowCloseIconNormallyInactive} + ShowCloseIconOnHoverInactive=${boolToString ShowCloseIconOnHoverInactive} + ShowCloseIconOnPressInactive=${boolToString ShowCloseIconOnPressInactive} + VaryColorCloseIconInactive=${VaryColorCloseIconInactive} + ShowCloseBackgroundNormallyInactive=${boolToString ShowCloseBackgroundNormallyInactive} + ShowCloseBackgroundOnHoverInactive=${boolToString ShowCloseBackgroundOnHoverInactive} + ShowCloseBackgroundOnPressInactive=${boolToString ShowCloseBackgroundOnPressInactive} + VaryColorCloseBackgroundInactive=${VaryColorCloseBackgroundInactive} + ShowCloseOutlineNormallyInactive=${boolToString ShowCloseOutlineNormallyInactive} + ShowCloseOutlineOnHoverInactive=${boolToString ShowCloseOutlineOnHoverInactive} + ShowCloseOutlineOnPressInactive=${boolToString ShowCloseOutlineOnPressInactive} + VaryColorCloseOutlineInactive=${VaryColorCloseOutlineInactive} + ''; + ButtonSizing = let + buttonSizingAndSpacingSettingsPath = "${buttonsSettingsPath}.button_size_n_spacing"; + buttonSizingSettingsPath = "${buttonSizingAndSpacingSettingsPath}.button_sizing"; + LockFullHeightButtonWidthMargins = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.same_left_n_right_hand_buttons_width_margins"; + FullHeightButtonWidthMarginLeft = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.left_hand_buttons_width_margins"; + FullHeightButtonWidthMarginRight = + if LockFullHeightButtonWidthMargins + then FullHeightButtonWidthMarginLeft + else defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.right_hand_buttons_width_margins"; + CloseFullHeightButtonWidthMarginRelative = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.close_button_width_margins"; + SpacerButtonWidthRelative = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.spacer_button_width"; + ScaleTouchMode = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.scale_touch_mode_buttons"; + buttonSpacingSettingsPath = "${buttonSizingAndSpacingSettingsPath}.button_spacing"; + LockFullHeightButtonSpacingLeftRight = defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.same_spacing_between_left_hand_buttons_n_right_hand_buttons"; + FullHeightButtonSpacingLeft = defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.spacing_between_left_hand_buttons"; + FullHeightButtonSpacingRight = + if LockFullHeightButtonSpacingLeftRight + then FullHeightButtonSpacingLeft + else defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.spacing_between_right_hand_buttons"; + IntegratedRoundedRectangleBottomPadding = defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.bottom_padding"; + buttonCornerRadiusSettingsPath = "${buttonSizingAndSpacingSettingsPath}.button_corner_radius"; + ButtonCornerRadius = defaultIfUndefined KlassySettings defaultsParams "${buttonCornerRadiusSettingsPath}.choice"; + ButtonCustomCornerRadius = + if ButtonCornerRadius == getDefault defaultsParams "${buttonCornerRadiusSettingsPath}.choice" + then "" + else defaultIfUndefined KlassySettings defaultsParams "${buttonCornerRadiusSettingsPath}.value"; + in '' + ButtonCornerRadius=${ButtonCornerRadius} + ButtonCustomCornerRadius=${toString ButtonCustomCornerRadius} + CloseFullHeightButtonWidthMarginRelative=${toString CloseFullHeightButtonWidthMarginRelative} + FullHeightButtonSpacingLeft=${toString FullHeightButtonSpacingLeft} + FullHeightButtonSpacingRight=${toString FullHeightButtonSpacingRight} + FullHeightButtonWidthMarginLeft=${toString FullHeightButtonWidthMarginLeft} + FullHeightButtonWidthMarginRight=${toString FullHeightButtonWidthMarginRight} + IntegratedRoundedRectangleBottomPadding=${toString IntegratedRoundedRectangleBottomPadding} + LockFullHeightButtonSpacingLeftRight=${boolToString LockFullHeightButtonSpacingLeftRight} + LockFullHeightButtonWidthMargins=${boolToString LockFullHeightButtonWidthMargins} + ScaleTouchMode=${toString ScaleTouchMode} + SpacerButtonWidthRelative=${toString SpacerButtonWidthRelative} + ''; + TitleBarSpacing = let + titleBarSpacingSettingsPath = "${titlebarSettingsPath}.spacing"; + TitleAlignment = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_alignment"; + TitleSidePadding = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_side_padding"; + PercentMaximizedTopBottomMargins = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_top_n_bottom_margins_for_maximized_windows"; + LockTitleBarLeftRightMargins = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.same_titlebar_left_n_right_margins"; + TitleBarLeftMargin = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.titlebar_left_margins"; + TitleBarRightMargin = + if LockTitleBarLeftRightMargins + then TitleBarLeftMargin + else defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.titlebar_right_margins"; + LockTitleBarTopBottomMargins = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.same_titlebar_top_n_bottom_margins"; + TitleBarTopMargin = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_bar_top_margins"; + TitleBarBottomMargin = + if LockTitleBarTopBottomMargins + then TitleBarTopMargin + else defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_bar_bottom_margins"; + in '' + PercentMaximizedTopBottomMargins=${toString PercentMaximizedTopBottomMargins} + TitleAlignment=${TitleAlignment} + TitleBarBottomMargin=${toString TitleBarBottomMargin} + TitleBarLeftMargin=${toString TitleBarLeftMargin} + TitleBarRightMargin=${toString TitleBarRightMargin} + TitleBarTopMargin=${toString TitleBarTopMargin} + TitleSidePadding=${toString TitleSidePadding} + LockTitleBarLeftRightMargins=${boolToString LockTitleBarLeftRightMargins} + LockTitleBarTopBottomMargins=${boolToString LockTitleBarTopBottomMargins} + ''; + TitleBarOpacity = let + titleBarOpacitySettingsPath = "${titlebarSettingsPath}.opacity"; + ActiveTitleBarOpacity = defaultIfUndefined KlassySettings defaultsParams "${titleBarOpacitySettingsPath}.active_window"; + InactiveTitleBarOpacity = defaultIfUndefined KlassySettings defaultsParams "${titleBarOpacitySettingsPath}.inactive_window"; + OpaqueMaximizedTitleBars = defaultIfUndefined KlassySettings defaultsParams "${titleBarOpacitySettingsPath}.always_make_titlebar_opaque_when_maximized"; + in '' + ActiveTitleBarOpacity=${toString ActiveTitleBarOpacity} + InactiveTitleBarOpacity=${toString InactiveTitleBarOpacity} + OpaqueMaximizedTitleBars=${boolToString OpaqueMaximizedTitleBars} + ''; + WindowOutlineStyle = let + thinWindowOutlineStyleSettingsPath = "${windowSettingsPath}.thin_window_outline"; + windowOutlineStyleSettingsPath = "${thinWindowOutlineStyleSettingsPath}.window_outline_style"; + WindowOutlineThickness = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.window_outline_thickness"; + WindowOutlineSnapToWholePixel = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.snap_to_whole_pixel"; + WindowOutlineOverlap = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.overlap"; + LockWindowOutlineStyleActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.same_active_n_inactive_window_outline"; + activeWindowSettingsPath = "${windowOutlineStyleSettingsPath}.active_window"; + WindowOutlineStyleActive = defaultIfUndefined KlassySettings defaultsParams "${activeWindowSettingsPath}.window_outline_style"; + activeOpacitySettingsPath = "${activeWindowSettingsPath}.opacity"; + activeOpacityParamsName = + if WindowOutlineStyleActive == "WindowOutlineNone" + then "" + else defaultIfUndefined KlassySettings defaultsParams "${activeOpacitySettingsPath}.${WindowOutlineStyleActive}.name"; + activeOpacityParametersValue = rec { + value = + if (definedOrNull KlassySettings "${activeWindowSettingsPath}.opacity") == null + then getDefault defaultsParams "${activeOpacitySettingsPath}.${WindowOutlineStyleActive}.value" + else definedOrNull KlassySettings "${activeWindowSettingsPath}.opacity"; + isNone = WindowOutlineStyleActive == "WindowOutlineNone"; + name = + if isNone + then "" + else activeOpacityParamsName; + }; + ActiveOpacityParametersString = + if activeOpacityParametersValue.isNone + then "" + else '' + ${activeOpacityParametersValue.name}=${toString activeOpacityParametersValue.value} + ''; + activeCustomColorSettingsPath = "${activeWindowSettingsPath}.color"; + LockWindowOutlineCustomColorActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${activeCustomColorSettingsPath}.lock_custom_colour_active_inactive"; + WindowOutlineCustomColorActive = defaultIfUndefined KlassySettings defaultsParams "${activeCustomColorSettingsPath}.choice"; + inactiveWindowSettingsPath = "${windowOutlineStyleSettingsPath}.inactive_window"; + WindowOutlineStyleInactive = + if LockWindowOutlineStyleActiveInactive + then WindowOutlineStyleActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveWindowSettingsPath}.window_outline_style"; + inactiveOpacitySettingsPath = "${inactiveWindowSettingsPath}.opacity"; + inactiveOpacityParamsName = + if LockWindowOutlineStyleActiveInactive + then activeOpacityParamsName + else if WindowOutlineStyleInactive == "WindowOutlineNone" || (WindowOutlineStyleInactive == "WindowOutlineShadowColor" && WindowOutlineStyleInactive == WindowOutlineStyleActive) + then "" + else defaultIfUndefined KlassySettings defaultsParams "${inactiveOpacitySettingsPath}.${WindowOutlineStyleInactive}.name"; + inactiveOpacityParametersValue = rec { + value = + if (WindowOutlineStyleInactive == WindowOutlineStyleActive && WindowOutlineStyleActive == "WindowOutlineShadowColor") + then activeOpacityParametersValue.value + else if (definedOrNull KlassySettings "${inactiveWindowSettingsPath}.opacity") == null + then getDefault defaultsParams "${inactiveOpacitySettingsPath}.${WindowOutlineStyleInactive}.value" + else definedOrNull KlassySettings "${inactiveWindowSettingsPath}.opacity"; + isNone = + if LockWindowOutlineStyleActiveInactive + then activeOpacityParametersValue.isNone + else WindowOutlineStyleInactive == "WindowOutlineNone"; + name = + if LockWindowOutlineStyleActiveInactive + then activeOpacityParametersValue.name + else if isNone + then "" + else inactiveOpacityParamsName; + }; + InactiveOpacityParametersValue = + if inactiveOpacityParametersValue.isNone || (WindowOutlineStyleInactive == "WindowOutlineShadowColor" && WindowOutlineStyleInactive == WindowOutlineStyleActive) + then "" + else '' + ${inactiveOpacityParametersValue.name}=${toString inactiveOpacityParametersValue.value} + ''; + inactiveCustomColorSettingsPath = "${inactiveWindowSettingsPath}.color"; + WindowOutlineCustomColorInactive = + if LockWindowOutlineCustomColorActiveInactive && (WindowOutlineStyleActive == "WindowOutlineCustomColor" || WindowOutlineStyleActive == "WindowOutlineCustomWithContrast") + then WindowOutlineCustomColorActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCustomColorSettingsPath}.choice"; + in '' + LockWindowOutlineStyleActiveInactive=${boolToString LockWindowOutlineStyleActiveInactive} + WindowOutlineStyleActive=${WindowOutlineStyleActive} + ${ActiveOpacityParametersString}WindowOutlineStyleInactive=${WindowOutlineStyleInactive} + ${InactiveOpacityParametersValue}${ + if WindowOutlineStyleActive == "WindowOutlineCustomColor" || WindowOutlineStyleActive == "WindowOutlineCustomWithContrast" + then '' + WindowOutlineCustomColorActive=${toString WindowOutlineCustomColorActive} + '' + else "" + }${ + if WindowOutlineStyleInactive == "WindowOutlineCustomColor" || WindowOutlineStyleInactive == "WindowOutlineCustomWithContrast" + then '' + WindowOutlineCustomColorInactive=${toString WindowOutlineCustomColorInactive} + '' + else "" + }WindowOutlineThickness=${toString WindowOutlineThickness} + WindowOutlineSnapToWholePixel=${boolToString WindowOutlineSnapToWholePixel} + WindowOutlineOverlap=${boolToString WindowOutlineOverlap} + LockWindowOutlineCustomColorActiveInactive=${boolToString LockWindowOutlineCustomColorActiveInactive} + ''; + ShadowStyle = let + shadowSettingsPath = "${windowSettingsPath}.shadow"; + ShadowColor = defaultIfUndefined KlassySettings defaultsParams "${shadowSettingsPath}.colour"; + ShadowSize = defaultIfUndefined KlassySettings defaultsParams "${shadowSettingsPath}.size"; + ShadowStrength = defaultIfUndefined KlassySettings defaultsParams "${shadowSettingsPath}.strength"; + in '' + ShadowColor=${toString ShadowColor} + ShadowSize=${toString ShadowSize} + ShadowStrength=${toString ShadowStrength} + ''; + Global = let + Version = "6.5.3"; #TODO : fix + LookAndFeelSet = "org.kde.klassykisweetdarkbottompanel.desktop"; #TODO : find the parameter that determines this. + in '' + LookAndFeelSet=${LookAndFeelSet} + RefreshedConfig=${Version} + ''; + Style = let + generalSettingsPath = "${styleSettingsPath}.general"; + framesSettingsPath = "${styleSettingsPath}.frames"; + scrollbarsSettingsPath = "${styleSettingsPath}.scrollbars"; + transparencySettingsPath = "${styleSettingsPath}.transparency"; + DockWidgetDrawFrame = defaultIfUndefined KlassySettings defaultsParams "${framesSettingsPath}.draw_frame_around_dockable_panels"; + MenuItemDrawStrongFocus = ! defaultIfUndefined KlassySettings defaultsParams "${framesSettingsPath}.draw_a_thin_line_to_indicate_focus_in_menubars"; + SidePanelDrawFrame = defaultIfUndefined KlassySettings defaultsParams "${framesSettingsPath}.draw_frame_around_side_panels"; + SplitterProxyEnabled = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.enable_extended_resize_handles"; + ButtonGradient = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.show_button_gradient_effects"; + MenuOpacity = defaultIfUndefined KlassySettings defaultsParams "${transparencySettingsPath}.value"; + WindowDragMode = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.windows_drag_mode"; + MnemonicsMode = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.keyboard_accelerator_visibility"; + FrameCornerRadius = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.corner_radius.choice"; + FrameCustomCornerRadius = + if FrameCornerRadius == getDefault defaultsParams "${generalSettingsPath}.corner_radius.choice" + then "" + else defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.corner_radius.value"; + TabBarDrawCenteredTabs = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.center_tabbar_tabs"; + SliderDrawTickMarks = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.draw_sliders_ticks_marks"; + ToolBarDrawItemSeparator = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.draw_toolbar_item_separators"; + ViewDrawFocusIndicator = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.draw_focus_indicator_in_lists"; + ScrollBarSeparator = defaultIfUndefined KlassySettings defaultsParams "${scrollbarsSettingsPath}.draw_scroll_bar_separator"; + ScrollBarTopBottomMargins = defaultIfUndefined KlassySettings defaultsParams "${scrollbarsSettingsPath}.scrollbar_top_n_bottom_margins"; + arrowButtonsSettingsPath = "${scrollbarsSettingsPath}.arrow_buttons"; + ScrollBarAutoHideArrows = defaultIfUndefined KlassySettings defaultsParams "${arrowButtonsSettingsPath}.auto_hide_arrows"; + grooveSettingsPath = "${scrollbarsSettingsPath}.groove_or_slider"; + ScrollBarSliderThicknessMouseOver = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_thickness_when_mouse_over"; + ScrollBarSliderThicknessMouseNotOverPercent = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_thickness_when_mouse_not_over"; + ScrollBarSliderPadding = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_side_padding"; + ScrollBarMinSliderHeight = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_minimum_height"; + topArrowButtonSettingsPath = "${arrowButtonsSettingsPath}.top_arrow_button"; + ScrollBarSubLineButtons = defaultIfUndefined KlassySettings defaultsParams "${topArrowButtonSettingsPath}.type"; + ScrollBarTopOneButtonSpacing = + if ScrollBarSubLineButtons == 1 + then let + defined = definedOrNull KlassySettings "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarSubLineButtons} + else ""; + ScrollBarTopTwoButtonSpacing = + if ScrollBarSubLineButtons == 2 + then let + defined = definedOrNull KlassySettings "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarSubLineButtons} + else ""; + bottomArrowButtonSettingsPath = "${arrowButtonsSettingsPath}.bottom_arrow_button"; + ScrollBarAddLineButtons = defaultIfUndefined KlassySettings defaultsParams "${bottomArrowButtonSettingsPath}.type"; + ScrollBarBottomOneButtonSpacing = + if ScrollBarAddLineButtons == 1 + then + if ScrollBarAddLineButtons == ScrollBarSubLineButtons + then ScrollBarTopOneButtonSpacing + else let + defined = definedOrNull KlassySettings "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarAddLineButtons} + else ""; + ScrollBarBottomTwoButtonSpacing = + if ScrollBarAddLineButtons == 2 + then + if ScrollBarAddLineButtons == ScrollBarSubLineButtons + then ScrollBarTopTwoButtonSpacing + else let + defined = definedOrNull KlassySettings "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarAddLineButtons} + else ""; + in '' + DockWidgetDrawFrame=${boolToString DockWidgetDrawFrame} + MenuItemDrawStrongFocus=${boolToString MenuItemDrawStrongFocus} + SidePanelDrawFrame=${boolToString SidePanelDrawFrame} + SplitterProxyEnabled=${boolToString SplitterProxyEnabled} + ButtonGradient=${boolToString ButtonGradient} + FrameCornerRadius=${FrameCornerRadius} + FrameCustomCornerRadius=${FrameCustomCornerRadius} + MnemonicsMode=${MnemonicsMode} + ScrollBarAutoHideArrows=${boolToString ScrollBarAutoHideArrows} + ScrollBarAddLineButtons=${toString ScrollBarAddLineButtons} + ScrollBarBottomTwoButtonSpacing=${toString ScrollBarBottomTwoButtonSpacing} + ScrollBarMinSliderHeight=${toString ScrollBarMinSliderHeight} + ScrollBarSeparator=${boolToString ScrollBarSeparator} + ScrollBarSliderPadding=${toString ScrollBarSliderPadding} + ScrollBarSliderThicknessMouseNotOverPercent=${toString ScrollBarSliderThicknessMouseNotOverPercent} + ScrollBarSliderThicknessMouseOver=${toString ScrollBarSliderThicknessMouseOver} + ScrollBarSubLineButtons=${toString ScrollBarSubLineButtons} + ScrollBarTopBottomMargins=${toString ScrollBarTopBottomMargins} + ScrollBarTopTwoButtonSpacing=${toString ScrollBarTopTwoButtonSpacing} + SliderDrawTickMarks=${boolToString SliderDrawTickMarks} + TabBarDrawCenteredTabs=${boolToString TabBarDrawCenteredTabs} + ToolBarDrawItemSeparator=${boolToString ToolBarDrawItemSeparator} + ViewDrawFocusIndicator=${boolToString ViewDrawFocusIndicator} + WindowDragMode=${WindowDragMode} + MenuOpacity=${toString MenuOpacity} + ScrollBarBottomOneButtonSpacing=${toString ScrollBarBottomOneButtonSpacing} + ScrollBarTopOneButtonSpacing=${toString ScrollBarTopOneButtonSpacing} + ''; + SystemIconGeneration = let + systemIconGenerationSettingsPath = "${buttonsSettingsPath}.system_icon_generation"; + KlassyDarkIconThemeInherits = defaultIfUndefined KlassySettings defaultsParams "${systemIconGenerationSettingsPath}.klassy_dark_icon_theme_inherits_from"; + KlassyIconThemeInherits = defaultIfUndefined KlassySettings defaultsParams "${systemIconGenerationSettingsPath}.klassy_icon_theme_inherits_from"; + in '' + KlassyDarkIconThemeInherits=${KlassyDarkIconThemeInherits} + KlassyIconThemeInherits=${KlassyIconThemeInherits} + ''; + WindowDefaultExceptions = let + windowDefaultExceptionsSettingsPath = "${windowSpecificOverridesSettingsPath}.defaults_overrides"; + defaultOverridesDefaults = getDefault defaultsParams windowDefaultExceptionsSettingsPath; + defaultExceptionList = + if (definedOrNull KlassySettings windowDefaultExceptionsSettingsPath) == null + then [] + else + builtins.filter (exception: builtins.isAttrs exception) ( + if builtins.isAttrs (defaultIfUndefined KlassySettings defaultsParams windowDefaultExceptionsSettingsPath) + then [] + else defaultIfUndefined KlassySettings defaultsParams windowDefaultExceptionsSettingsPath + ); + in + lib.strings.concatLines + (lib.foldl' (acc: exception: + acc + // { + result = acc.result ++ [(parseDefaultOverrides acc.counter exception defaultOverridesDefaults)]; + counter = acc.counter + 1; + }) { + result = []; + counter = 0; + } + defaultExceptionList).result; + WindowUserSpecificOverrides = let + userDefaultExceptionsSettingsPath = "${windowSpecificOverridesSettingsPath}.user_specific_overrides"; + userOverridesDefaults = getDefault defaultsParams userDefaultExceptionsSettingsPath; + userExceptionList = + if (definedOrNull KlassySettings userDefaultExceptionsSettingsPath) == null + then [] + else + builtins.filter (exception: builtins.isAttrs exception) ( + if builtins.isAttrs (defaultIfUndefined KlassySettings defaultsParams userDefaultExceptionsSettingsPath) + then [] + else defaultIfUndefined KlassySettings defaultsParams userDefaultExceptionsSettingsPath + ); + in + lib.strings.concatLines + (lib.foldl' (acc: exception: + acc + // { + result = acc.result ++ [(parseUserSpecificOverride acc.counter exception userOverridesDefaults)]; + counter = acc.counter + 1; + }) { + result = []; + counter = 0; + } + userExceptionList).result; + in '' + ${WindowDefaultExceptions}[Windeco] + ${Windeco} + [ButtonColors] + ${ButtonColors} + [ButtonBehaviour] + ${ButtonBehaviour} + [ButtonSizing] + ${ButtonSizing} + [TitleBarSpacing] + ${TitleBarSpacing} + [TitleBarOpacity] + ${TitleBarOpacity} + [WindowOutlineStyle] + ${WindowOutlineStyle} + [ShadowStyle] + ${ShadowStyle} + [SystemIconGeneration] + ${SystemIconGeneration} + [Global] + ${Global} + [Style] + ${Style} + ${WindowUserSpecificOverrides}''; + + parsePreset = preset: let + name = + if lib.isPath preset + then lib.lists.last (lib.lists.take 1 (lib.splitString "." (builtins.baseNameOf preset))) + else preset.name; + content = + if lib.isPath preset + then builtins.readFile preset + else preset.content; + contentLines = + if lib.isString content + then lib.splitString "\n" content + else let attrNames = lib.attrNames content; in map (attrName: "${attrName}=${content.${attrName}}") attrNames; + cleanedContentLines = + if lib.isPath preset + then lib.lists.drop 4 contentLines + else contentLines; + in '' + [Windeco Preset ${name}] + ${lib.trim (lib.strings.concatLines cleanedContentLines)} + ''; + + parsePresets = presets: defaultsPresets: let + presetsContent = map parsePreset presets; + defaultsPresetsContent = builtins.readFile defaultsPresets; + in '' + ${defaultsPresetsContent} + ${lib.strings.concatLines presetsContent} + ''; + params.klassy = { + style = { + general = { + enable_extended_resize_handles = true; + }; + frames = { + draw_frame_around_dockable_panels = true; + draw_frame_around_side_panels = true; + draw_a_thin_line_to_indicate_focus_in_menubars = true; #Attention inversion + }; + }; + window_decoration = { + buttons = { + icons = "StyleMetro"; + button_colours = { + lock_active_inactive = true; + active_window = { + icon_colours = rec { + choice = "AccentTrafficLights"; + close_button_icon_colour = choice; + }; + background_n_outline_colours = { + choice = "AccentTrafficLights"; + }; + }; + inactive_window = { + use_same_hover_n_press_colours_as_active_window = true; + }; + }; + }; + titlebar = { + on_active_window = { + make_title_bold = true; + draw_titlebar_background_gradient = false; + draw_separator_under_titlebar = false; + }; + match_titlebar_colour_to_application = true; + }; + window = { + corners = { + round_corners_when_no_borders = false; + corner_radius = 0.0; + }; + thin_window_outline = { + colourize_with_higlighted_buttons_colour = false; + }; + }; + window_specific_overrides = { + defaults_overrides = [ + { + enabled = true; + } + ]; + user_specific_overrides = [ + { + enabled = true; + window_identification = { + window_property = 0; + regex = "com.mitchellh.ghostty"; + }; + windeco_options = { + preset = { + enabled = true; + value = "CleanTranslucid"; + }; + hide_window_titlebar = 0; + match_titlebar_colour_to_application = true; + opaque_titlebar = false; + border_size = { + enabled = true; + value = 0; + }; + }; + application_style_options = { + application_name_regex = ""; + opaque_header = false; + }; + } + ]; + }; + }; + }; + presets = [ + ./klassy/presets/Clean.klpw + ./klassy/presets/CleanTranslucid.klpw + ]; + defaultsPreset = ./klassy/defaults/presets.klpw; moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "klassy"; @@ -19,9 +982,22 @@ in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - Home = { + Home = let + configFile = pkgs-list.nix.latest.writeText "klassyrc" (parseParams params); + presetFile = pkgs-list.nix.latest.writeText "windecopresetsrc" (parsePresets presets defaultsPreset); + in { home.packages = with packages; [ klassy ]; + + home.activation = { + ${name} = lib.mkBefore '' + mkdir -p ${config.xdg.configHome}/klassy + cp ${configFile} ${config.xdg.configHome}/klassy/klassyrc + cp ${presetFile} ${config.xdg.configHome}/klassy/windecopresetsrc + chmod 600 ${config.xdg.configHome}/klassy/klassyrc + chmod 600 ${config.xdg.configHome}/klassy/windecopresetsrc + ''; + }; }; }) From 4520cc82ff658fd9335be751c857bffa35d1af50 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:09:57 -0400 Subject: [PATCH 220/236] refactor(inheritances) : group inheritances functions in a attrSet --- tools.nix | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/tools.nix b/tools.nix index b0538df..d73dc08 100644 --- a/tools.nix +++ b/tools.nix @@ -236,6 +236,64 @@ with lib; let }; }; }; + # TODO : group inheritance functions together + inheritance = { + settings = { + currentPathAsList, + imports, + settings, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in + builtins.listToAttrs (map (setting: { + name = + if (currentPathAsList == []) + then setting + else first; + value = + if (currentPathAsList == []) + then settings.${setting} + else + (inheritSettings { + currentPathAsList = lists.drop 1 currentPathAsList; + imports = imports; + settings = settings; + }); + }) + imports); + config = { + currentPathAsList, + config, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in + if (currentPathAsList == []) + then config + else + inheritConfig { + currentPathAsList = lists.drop 1 currentPathAsList; + config = config.${first}; + }; + options = { + currentPathAsList, + options, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in (listToAttrs [ + { + name = first; + value = + if (currentPathAsList == [first]) + then options + else + inheritOptions { + currentPathAsList = lists.drop 1 currentPathAsList; + inherit options; + }; + } + ]); + }; + ifExistsList = config: configPathString: value: let pathAsList = splitString "." configPathString; name = lists.last pathAsList; From 8e8a7896b3a894dc71faac002012b08c3a9fb729 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:10:57 -0400 Subject: [PATCH 221/236] refactor(ifExists) : group ifExists functions under 1 function --- tools.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools.nix b/tools.nix index d73dc08..4ad0217 100644 --- a/tools.nix +++ b/tools.nix @@ -294,6 +294,24 @@ with lib; let ]); }; + # TODO : the 3 following can be one function using isStr, isList, ... to determine the type of value to return + ifExists = config: configPathString: value: let + pathAsList = splitString "." configPathString; + name = lists.last pathAsList; + parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); + parentPath = attrsets.getAttrFromPath parentPathAsList config; + configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; + modulePath = configPath.enable; + emptyValue = + if isStr value + then "" + else if isList value + then [] + else {}; + in + if parentPath.enable && builtins.hasAttr name parentPath && modulePath + then value + else emptyValue; ifExistsList = config: configPathString: value: let pathAsList = splitString "." configPathString; name = lists.last pathAsList; From 56d4924705beffe9db95cf94559822765d1deec4 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:18:24 -0400 Subject: [PATCH 222/236] fix(tools) : fixing ifExists function --- tools.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools.nix b/tools.nix index 4ad0217..d497f74 100644 --- a/tools.nix +++ b/tools.nix @@ -303,7 +303,7 @@ with lib; let configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; modulePath = configPath.enable; emptyValue = - if isStr value + if isString value then "" else if isList value then [] @@ -346,5 +346,5 @@ with lib; let then value else ""; in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExistsList ifExistsAttr ifExistsStr; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExistsList ifExistsAttr ifExistsStr ifExists; } From 40fa801ba2b62815332803fbb2ea286f1ecc8f30 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:19:45 -0400 Subject: [PATCH 223/236] note(label) : putting dev state in label : REFACTORING WIP --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index b932758..803bd56 100644 --- a/flake.nix +++ b/flake.nix @@ -115,7 +115,7 @@ tuis.enable = true; }; sys = { - label = "V.2.0"; + label = "V.2.0_REFACORING_WIP"; tags = []; version = nixos-version; main-user = "matthieu"; From fb05b27c9fd3310c6ce85469726806d408d8be38 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:32:45 -0400 Subject: [PATCH 224/236] refactor(ifExists) : using ifExists instead of variants of it --- progs/desktop/plasma.nix | 12 ++++++------ progs/shells.nix | 2 +- progs/shells/zsh.nix | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index fda7fbd..e1347a6 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -28,7 +28,7 @@ in (tools.fullModule rec { TerminalService = "com.mitchellh.ghostty.desktop"; }; window-rules = [ - (tools.ifExistsAttr config "config.progs.editors.vscode" { + (tools.ifExists config "config.progs.editors.vscode" { description = "vscode-desktop-file"; match.window-class = "code code"; apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic @@ -158,11 +158,11 @@ in (tools.fullModule rec { "applications:systemsettings.desktop" "applications:org.kde.dolphin.desktop" ] - ++ (tools.ifExistsList config "config.progs.browsers.firefox" ["applications:firefox.desktop"]) - ++ (tools.ifExistsList config "config.progs.browsers.chromium" ["applications:chromium-browser.desktop"]) - ++ (tools.ifExistsList config "config.progs.browsers.zen" ["applications:zen-beta.desktop"]) - ++ (tools.ifExistsList config "config.progs.terminals.ghostty" ["applications:com.mitchellh.ghostty.desktop"]) - ++ (tools.ifExistsList config "config.progs.editors.vscode" ["applications:code.desktop"]); + ++ (tools.ifExists config "config.progs.browsers.firefox" ["applications:firefox.desktop"]) + ++ (tools.ifExists config "config.progs.browsers.chromium" ["applications:chromium-browser.desktop"]) + ++ (tools.ifExists config "config.progs.browsers.zen" ["applications:zen-beta.desktop"]) + ++ (tools.ifExists config "config.progs.terminals.ghostty" ["applications:com.mitchellh.ghostty.desktop"]) + ++ (tools.ifExists config "config.progs.editors.vscode" ["applications:code.desktop"]); }; } "org.kde.plasma.showdesktop" diff --git a/progs/shells.nix b/progs/shells.nix index c07d532..eae0867 100644 --- a/progs/shells.nix +++ b/progs/shells.nix @@ -24,7 +24,7 @@ ".." = "cd .."; myip = "myip"; } - // (tools.ifExistsAttr config "config.progs.shells.zsh.yazi" { + // (tools.ifExists config "config.progs.shells.zsh.yazi" { yazi = "y"; }); diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix index abc8a34..5672867 100644 --- a/progs/shells/zsh.nix +++ b/progs/shells/zsh.nix @@ -54,21 +54,21 @@ in (tools.fullModule rec { }; defaultKeymap = "emacs"; plugins = [ - (tools.ifExistsAttr config "config.progs.shells.zsh.p10k" { + (tools.ifExists config "config.progs.shells.zsh.p10k" { name = "powerlevel10k"; src = packages.zsh-powerlevel10k; file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; }) - (tools.ifExistsAttr config "config.progs.shells.zsh.fzf" { + (tools.ifExists config "config.progs.shells.zsh.fzf" { name = "fzf-tab"; src = "${packages.zsh-fzf-tab}/share/fzf-tab"; }) ]; initContent = - (tools.ifExistsStr config "config.progs.shells.zsh.p10k" + (tools.ifExists config "config.progs.shells.zsh.p10k" "source ~/.p10k.zsh\n") + "${builtins.readFile ./${subfolder}/init.zsh}" - + (tools.ifExistsAttr config "config.progs.shells.zsh.fzf" + + (tools.ifExists config "config.progs.shells.zsh.fzf" "zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath'"); siteFunctions = @@ -76,7 +76,7 @@ in (tools.fullModule rec { myip = "echo $(ip addr show wlp0s20f3 | grep -oP 'inet \\K[^/]+')"; } // ( - tools.ifExistsAttr config "config.progs.tuis.yazi" { + tools.ifExists config "config.progs.tuis.yazi" { y = "${builtins.readFile ../tuis/yazi/y.zsh}"; } ); From 70f81f621b1c89d3ae16d7acbe6b4948424985f2 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:37:34 -0400 Subject: [PATCH 225/236] refactor(ifExists) : getting ride of old variants --- tools.nix | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/tools.nix b/tools.nix index d497f74..b8bad5e 100644 --- a/tools.nix +++ b/tools.nix @@ -312,39 +312,6 @@ with lib; let if parentPath.enable && builtins.hasAttr name parentPath && modulePath then value else emptyValue; - ifExistsList = config: configPathString: value: let - pathAsList = splitString "." configPathString; - name = lists.last pathAsList; - parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); - parentPath = attrsets.getAttrFromPath parentPathAsList config; - configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; - modulePath = configPath.enable; - in - if parentPath.enable && builtins.hasAttr name parentPath && modulePath - then value - else []; - ifExistsAttr = config: configPathString: value: let - pathAsList = splitString "." configPathString; - name = lists.last pathAsList; - parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); - parentPath = attrsets.getAttrFromPath parentPathAsList config; - configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; - modulePath = configPath.enable; - in - if parentPath.enable && builtins.hasAttr name parentPath && modulePath - then value - else {}; - ifExistsStr = config: configPathString: value: let - pathAsList = splitString "." configPathString; - name = lists.last pathAsList; - parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); - parentPath = attrsets.getAttrFromPath parentPathAsList config; - configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; - modulePath = configPath.enable; - in - if parentPath.enable && builtins.hasAttr name parentPath && modulePath - then value - else ""; in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExistsList ifExistsAttr ifExistsStr ifExists; + inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExists; } From 67529402006f8a034c01a2077a7475649252cd5d Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:44:01 -0400 Subject: [PATCH 226/236] clean(ifExists) : getting rid of todo comment --- tools.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/tools.nix b/tools.nix index b8bad5e..7887158 100644 --- a/tools.nix +++ b/tools.nix @@ -294,7 +294,6 @@ with lib; let ]); }; - # TODO : the 3 following can be one function using isStr, isList, ... to determine the type of value to return ifExists = config: configPathString: value: let pathAsList = splitString "." configPathString; name = lists.last pathAsList; From fb3725355235ece335edf6949b2eb8b995ee28f5 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:48:59 -0400 Subject: [PATCH 227/236] refactor(ifExists) : moving inheritance attrSet hover functions that use inheritance functions in tools --- tools.nix | 115 +++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/tools.nix b/tools.nix index 7887158..994bbc4 100644 --- a/tools.nix +++ b/tools.nix @@ -15,6 +15,63 @@ with lib; let context }) imports; + # TODO : group inheritance functions together + inheritance = { + settings = { + currentPathAsList, + imports, + settings, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in + builtins.listToAttrs (map (setting: { + name = + if (currentPathAsList == []) + then setting + else first; + value = + if (currentPathAsList == []) + then settings.${setting} + else + (inheritSettings { + currentPathAsList = lists.drop 1 currentPathAsList; + imports = imports; + settings = settings; + }); + }) + imports); + config = { + currentPathAsList, + config, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in + if (currentPathAsList == []) + then config + else + inheritConfig { + currentPathAsList = lists.drop 1 currentPathAsList; + config = config.${first}; + }; + options = { + currentPathAsList, + options, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in (listToAttrs [ + { + name = first; + value = + if (currentPathAsList == [first]) + then options + else + inheritOptions { + currentPathAsList = lists.drop 1 currentPathAsList; + inherit options; + }; + } + ]); + }; inheritSettings = { currentPathAsList, @@ -72,6 +129,7 @@ with lib; let }; } ]); + contextualModule = { options ? null, specialOptions ? null, @@ -236,63 +294,6 @@ with lib; let }; }; }; - # TODO : group inheritance functions together - inheritance = { - settings = { - currentPathAsList, - imports, - settings, - }: let - first = lists.last (lists.take 1 currentPathAsList); - in - builtins.listToAttrs (map (setting: { - name = - if (currentPathAsList == []) - then setting - else first; - value = - if (currentPathAsList == []) - then settings.${setting} - else - (inheritSettings { - currentPathAsList = lists.drop 1 currentPathAsList; - imports = imports; - settings = settings; - }); - }) - imports); - config = { - currentPathAsList, - config, - }: let - first = lists.last (lists.take 1 currentPathAsList); - in - if (currentPathAsList == []) - then config - else - inheritConfig { - currentPathAsList = lists.drop 1 currentPathAsList; - config = config.${first}; - }; - options = { - currentPathAsList, - options, - }: let - first = lists.last (lists.take 1 currentPathAsList); - in (listToAttrs [ - { - name = first; - value = - if (currentPathAsList == [first]) - then options - else - inheritOptions { - currentPathAsList = lists.drop 1 currentPathAsList; - inherit options; - }; - } - ]); - }; ifExists = config: configPathString: value: let pathAsList = splitString "." configPathString; From 0a76a4747ce426939aa7d4d8c0e721fe4ce13543 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 13:56:50 -0400 Subject: [PATCH 228/236] refactor(inheritance) : replaced old functions by grouped functions in tools --- tools.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools.nix b/tools.nix index 994bbc4..2776a00 100644 --- a/tools.nix +++ b/tools.nix @@ -33,7 +33,7 @@ with lib; let if (currentPathAsList == []) then settings.${setting} else - (inheritSettings { + (inheritance.settings { currentPathAsList = lists.drop 1 currentPathAsList; imports = imports; settings = settings; @@ -49,7 +49,7 @@ with lib; let if (currentPathAsList == []) then config else - inheritConfig { + inheritance.config { currentPathAsList = lists.drop 1 currentPathAsList; config = config.${first}; }; @@ -65,7 +65,7 @@ with lib; let if (currentPathAsList == [first]) then options else - inheritOptions { + inheritance.options { currentPathAsList = lists.drop 1 currentPathAsList; inherit options; }; @@ -150,7 +150,7 @@ with lib; let if options != null then { options = - inheritOptions { + inheritance.options { inherit currentPathAsList options; } // ( @@ -228,13 +228,13 @@ with lib; let else null; currentPathAsList = parentPathAsList ++ [name]; currentDirPath = path.subpath.join (lists.flatten ["./." parentPathAsList]); - cfg = inheritConfig { + cfg = inheritance.config { inherit config currentPathAsList; }; inheritedSettings = if imports != null || settings != null then - inheritSettings { + inheritance.settings { inherit currentPathAsList imports settings; } else { @@ -313,5 +313,5 @@ with lib; let then value else emptyValue; in { - inherit inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExists; + inherit inheritance inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExists; } From 9d56ebb342da4ac578767ede61323f39adc5501a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 14:32:02 -0400 Subject: [PATCH 229/236] clean(inehritance) : getting rid of old functions + todo comment --- tools.nix | 61 ++----------------------------------------------------- 1 file changed, 2 insertions(+), 59 deletions(-) diff --git a/tools.nix b/tools.nix index 2776a00..48bebc1 100644 --- a/tools.nix +++ b/tools.nix @@ -15,7 +15,7 @@ with lib; let context }) imports; - # TODO : group inheritance functions together + inheritance = { settings = { currentPathAsList, @@ -73,63 +73,6 @@ with lib; let ]); }; - inheritSettings = { - currentPathAsList, - imports, - settings, - }: let - first = lists.last (lists.take 1 currentPathAsList); - in - builtins.listToAttrs (map (setting: { - name = - if (currentPathAsList == []) - then setting - else first; - value = - if (currentPathAsList == []) - then settings.${setting} - else - (inheritSettings { - currentPathAsList = lists.drop 1 currentPathAsList; - imports = imports; - settings = settings; - }); - }) - imports); - - inheritConfig = { - currentPathAsList, - config, - }: let - first = lists.last (lists.take 1 currentPathAsList); - in - if (currentPathAsList == []) - then config - else - inheritConfig { - currentPathAsList = lists.drop 1 currentPathAsList; - config = config.${first}; - }; - - inheritOptions = { - currentPathAsList, - options, - }: let - first = lists.last (lists.take 1 currentPathAsList); - in (listToAttrs [ - { - name = first; - value = - if (currentPathAsList == [first]) - then options - else - inheritOptions { - currentPathAsList = lists.drop 1 currentPathAsList; - inherit options; - }; - } - ]); - contextualModule = { options ? null, specialOptions ? null, @@ -313,5 +256,5 @@ with lib; let then value else emptyValue; in { - inherit inheritance inheritSettings contextModuleImport inheritConfig inheritOptions contextualModule moduleParams fullModule ifExists; + inherit inheritance contextModuleImport contextualModule moduleParams fullModule ifExists; } From d3235bf19bfaee3022f76961c21c3579a6ce7d39 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 14:39:43 -0400 Subject: [PATCH 230/236] refactor(inheritance) : replaced old functions by grouped functions in sys --- sys.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys.nix b/sys.nix index 31750a4..a4ef4f3 100644 --- a/sys.nix +++ b/sys.nix @@ -63,7 +63,7 @@ inheritedSettings = if imports != null || settings != null then - tools.inheritSettings { + tools.inheritance.settings { inherit currentPathAsList imports settings; } else { From 95edc9a232a603057b728bbd6a7100e12ab86896 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 15:50:04 -0400 Subject: [PATCH 231/236] note(todo) : adding new tasks for the futur --- TODO.MD | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO.MD b/TODO.MD index 687494e..b472722 100644 --- a/TODO.MD +++ b/TODO.MD @@ -27,3 +27,8 @@ [ x ] Presets [ x ] Importing exising presets as files [ ] Creating presets from nix config files (later) +[ ] Make Dolphin a configurable module +[ ] Fix plasma-manager Module + [ ] Separate monitor configuration from plasma configuration + [ ] Allow nested paramaters in applets configuration + [ ] Make system tray configuration more understandable \ No newline at end of file From c6c2c64a2b66b9571a517de7e1e7c16bad04ba6a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 16:32:06 -0400 Subject: [PATCH 232/236] clean(comments) : got rid of useless comments --- progs/dev/virtualization/virt-manager.nix | 2 +- progs/gaming.nix | 13 ++++++------- progs/misc/vlc.nix | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/progs/dev/virtualization/virt-manager.nix b/progs/dev/virtualization/virt-manager.nix index 722045b..6cd5260 100644 --- a/progs/dev/virtualization/virt-manager.nix +++ b/progs/dev/virtualization/virt-manager.nix @@ -18,6 +18,6 @@ in (tools.fullModule { inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { - programs.virt-manager.enable = true; # Virtualization + programs.virt-manager.enable = true; }; }) diff --git a/progs/gaming.nix b/progs/gaming.nix index ff06b50..7cda97f 100644 --- a/progs/gaming.nix +++ b/progs/gaming.nix @@ -21,18 +21,17 @@ in (tools.fullModule rec { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { environment.systemPackages = with packages; [ - mangohud # Gaming - protonup-ng # Gaming + mangohud + protonup-ng ]; environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; # Gaming + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; }; programs = { - gamemode.enable = true; # Gaming + gamemode.enable = true; steam = { - # Gaming - enable = true; # Gaming - gamescopeSession.enable = true; # Gaming + enable = true; + gamescopeSession.enable = true; }; }; }; diff --git a/progs/misc/vlc.nix b/progs/misc/vlc.nix index 5fe0ea6..32a7b9f 100644 --- a/progs/misc/vlc.nix +++ b/progs/misc/vlc.nix @@ -21,7 +21,7 @@ in (tools.fullModule rec { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; Home = { home.packages = with packages; [ - vlc # Misc + vlc ]; }; }) From 30395d8385270e7c852ac46db55cefb0002f05cd Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 16:33:37 -0400 Subject: [PATCH 233/236] note(generals) : added TODOS in files --- home.nix | 2 +- progs/browsers/chromium.nix | 2 +- progs/browsers/firefox.nix | 1 + progs/browsers/zen.nix | 2 +- progs/desktop/klassy.nix | 2 ++ progs/desktop/plasma.nix | 2 +- progs/desktop/rofi.nix | 1 + progs/dev/boot/gparted.nix | 1 + progs/dev/lang/flutter.nix | 4 +++- progs/dev/virtualization.nix | 5 +++-- progs/editors/vscode.nix | 1 + progs/misc/bitwarden.nix | 1 + progs/misc/vesktop.nix | 1 + progs/office/thunderbird.nix | 1 + sys/hardware.nix | 4 ++-- sys/networking.nix | 2 +- sys/networking/ssh.nix | 2 +- 17 files changed, 23 insertions(+), 11 deletions(-) diff --git a/home.nix b/home.nix index 5355281..1b0b230 100644 --- a/home.nix +++ b/home.nix @@ -1,4 +1,4 @@ -# FEAT : unify format +# TODO FEAT : unify format { config, lib, diff --git a/progs/browsers/chromium.nix b/progs/browsers/chromium.nix index 7446671..680763e 100644 --- a/progs/browsers/chromium.nix +++ b/progs/browsers/chromium.nix @@ -20,7 +20,7 @@ in (tools.fullModule { Home = { programs.chromium = { enable = true; - # FEAT TODO: profiles, settings, etc. + # TODO: profiles, settings, etc. }; }; }) diff --git a/progs/browsers/firefox.nix b/progs/browsers/firefox.nix index 5ad14b4..405af2a 100644 --- a/progs/browsers/firefox.nix +++ b/progs/browsers/firefox.nix @@ -19,6 +19,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; }; + # TODO : Try to fix things in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/progs/browsers/zen.nix b/progs/browsers/zen.nix index 57f2752..5e87df8 100644 --- a/progs/browsers/zen.nix +++ b/progs/browsers/zen.nix @@ -23,7 +23,7 @@ in (tools.fullModule { Home = { programs.zen-browser = { enable = true; - # FEAT TODO: profiles, settings, etc. + # TODO: profiles, settings, etc. }; }; }) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix index 514f3c7..d533a9d 100644 --- a/progs/desktop/klassy.nix +++ b/progs/desktop/klassy.nix @@ -1,3 +1,4 @@ +# TODO : stuffs in todo list { config, lib, @@ -211,6 +212,7 @@ if LockButtonColorsActiveInactive then PoorBackgroundContrastThresholdActive else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundInactiveContrastSettingsPath}.threshold"; + # TODO : Parse ultra personalization settings in '' AdjustBackgroundColorOnPoorContrastActive=${boolToString AdjustBackgroundColorOnPoorContrastActive} AdjustBackgroundColorOnPoorContrastInactive=${boolToString AdjustBackgroundColorOnPoorContrastInactive} diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix index e1347a6..ffdf20a 100644 --- a/progs/desktop/plasma.nix +++ b/progs/desktop/plasma.nix @@ -90,7 +90,7 @@ in (tools.fullModule rec { "org.kde.plasma.notifications" "org.kde.plasma.panelspacer" "org.kde.plasma.keyboardindicator" - # PROJECT : Fixing plasma manager so it supports configuring the system tray correctly and fully. + # PROJECT TODO : Fixing plasma manager so it supports configuring the system tray correctly and fully. { name = "org.kde.plasma.systemtray"; config = { diff --git a/progs/desktop/rofi.nix b/progs/desktop/rofi.nix index 505dacf..a9f6ad0 100644 --- a/progs/desktop/rofi.nix +++ b/progs/desktop/rofi.nix @@ -15,6 +15,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; }; + # TODO : configure a shortcut and other stuffs ! in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/progs/dev/boot/gparted.nix b/progs/dev/boot/gparted.nix index 8a348e7..1209ccf 100644 --- a/progs/dev/boot/gparted.nix +++ b/progs/dev/boot/gparted.nix @@ -15,6 +15,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; }; + # TODO : fix the fact that gparted needs root to run and thus cant be opened from rofi or similar launchers in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/progs/dev/lang/flutter.nix b/progs/dev/lang/flutter.nix index 0668393..06e98a0 100644 --- a/progs/dev/lang/flutter.nix +++ b/progs/dev/lang/flutter.nix @@ -5,7 +5,9 @@ parentPathAsList, tools, ... -}: let +}: +# TODO : needs to be throughly tested/configured +let moduleParams = tools.moduleParams rec { inherit config lib pkgs-list parentPathAsList tools; name = "flutter"; diff --git a/progs/dev/virtualization.nix b/progs/dev/virtualization.nix index 712fa6d..f7eeefb 100644 --- a/progs/dev/virtualization.nix +++ b/progs/dev/virtualization.nix @@ -29,6 +29,7 @@ in (tools.fullModule { inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { - programs.virt-manager.enable = true; # Virtualization - }; + # BAZINGA : DELETE + programs.virt-manager.enable = true; # Virtualization # BAZINGA : DELETE + }; # BAZINGA : DELETE }) diff --git a/progs/editors/vscode.nix b/progs/editors/vscode.nix index 9575e84..f029890 100644 --- a/progs/editors/vscode.nix +++ b/progs/editors/vscode.nix @@ -17,6 +17,7 @@ extras = { }; }; + # TODO : Needs to be configured (profiles.defaults) in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/progs/misc/bitwarden.nix b/progs/misc/bitwarden.nix index 146083e..8eb283d 100644 --- a/progs/misc/bitwarden.nix +++ b/progs/misc/bitwarden.nix @@ -15,6 +15,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; }; + # PROJECT TODO : make it configurable (settings,...) in (tools.fullModule rec { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/progs/misc/vesktop.nix b/progs/misc/vesktop.nix index 2e8fe05..ca5d5ef 100644 --- a/progs/misc/vesktop.nix +++ b/progs/misc/vesktop.nix @@ -13,6 +13,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; }; + # TODO : configure (themes,...) in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/progs/office/thunderbird.nix b/progs/office/thunderbird.nix index f9c2988..c7f75fb 100644 --- a/progs/office/thunderbird.nix +++ b/progs/office/thunderbird.nix @@ -13,6 +13,7 @@ enable = lib.mkEnableOption "Enables ${name} program and related settings."; }; }; + # TODO : Configure (profiles,...) in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; diff --git a/sys/hardware.nix b/sys/hardware.nix index 4f39dea..3eddba5 100644 --- a/sys/hardware.nix +++ b/sys/hardware.nix @@ -23,7 +23,7 @@ enable = lib.mkEnableOption "Enables ${name} related settings."; }; settings = { - nvidia.enable = false; # FIX : module to fix once a stable and working nvidia version is available + nvidia.enable = false; # TODO FIX : module to fix once a stable and working nvidia version is available printer.enable = true; sound.enable = true; bluetooth.enable = true; @@ -35,7 +35,7 @@ in (tools.fullModule rec { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { services = { - libinput.enable = true; # TODO : FIX - not sure where to put it yet + libinput.enable = true; # TODO FIX - not sure where to put it yet }; environment.systemPackages = with packages; [ lshw diff --git a/sys/networking.nix b/sys/networking.nix index eed1808..c028452 100644 --- a/sys/networking.nix +++ b/sys/networking.nix @@ -31,7 +31,7 @@ in (tools.fullModule rec { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { networking = { - hostName = "NixOs"; # FEAT : make this part of baseSettings + hostName = "NixOs"; # TODO FEAT : make this part of baseSettings networkmanager = { enable = true; }; diff --git a/sys/networking/ssh.nix b/sys/networking/ssh.nix index 61f7b92..1ac1ef3 100644 --- a/sys/networking/ssh.nix +++ b/sys/networking/ssh.nix @@ -20,6 +20,6 @@ in (tools.fullModule { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { services.openssh.enable = true; - networking.firewall.allowedTCPPorts = [10022 22]; # 10022 to qemu + networking.firewall.allowedTCPPorts = [10022 22]; # TODO : Move to Qemu module with ssh activated }; }) From 34d073921fd5ec495a537047a7db508ad1b55a0a Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 16:43:57 -0400 Subject: [PATCH 234/236] labels() : FIX WIP --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 803bd56..30b790a 100644 --- a/flake.nix +++ b/flake.nix @@ -115,7 +115,7 @@ tuis.enable = true; }; sys = { - label = "V.2.0_REFACORING_WIP"; + label = "V.2.0_FIX_WIP"; tags = []; version = nixos-version; main-user = "matthieu"; From 14da77eaa842e73aaf33cebfa3aabd1476a35424 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 16:45:33 -0400 Subject: [PATCH 235/236] fix(virtualization) : deleted useless programs --- progs/dev/virtualization.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/progs/dev/virtualization.nix b/progs/dev/virtualization.nix index f7eeefb..c6ce13b 100644 --- a/progs/dev/virtualization.nix +++ b/progs/dev/virtualization.nix @@ -28,8 +28,4 @@ in (tools.fullModule { inherit (moduleParams) config lib pkgs-list parentPathAsList tools; inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; - System = { - # BAZINGA : DELETE - programs.virt-manager.enable = true; # Virtualization # BAZINGA : DELETE - }; # BAZINGA : DELETE }) From b4c2da5756a63c24805e39c12a8f111255e61954 Mon Sep 17 00:00:00 2001 From: MatthieuGomes Date: Tue, 12 May 2026 17:02:25 -0400 Subject: [PATCH 236/236] fix(ssh) : moved allowedTCPPorts to qemu --- progs/dev/virtualization/qemu.nix | 1 + sys/networking/ssh.nix | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/progs/dev/virtualization/qemu.nix b/progs/dev/virtualization/qemu.nix index c050d52..ffd7e19 100644 --- a/progs/dev/virtualization/qemu.nix +++ b/progs/dev/virtualization/qemu.nix @@ -23,5 +23,6 @@ in (tools.fullModule { spiceUSBRedirection.enable = true; }; users.groups.libvirtd.members = ["matthieu"]; + networking.firewall.allowedTCPPorts = tools.ifExists config "config.sys.networking.ssh" [10022 22]; }; }) diff --git a/sys/networking/ssh.nix b/sys/networking/ssh.nix index 1ac1ef3..6bde036 100644 --- a/sys/networking/ssh.nix +++ b/sys/networking/ssh.nix @@ -20,6 +20,5 @@ in (tools.fullModule { inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; System = { services.openssh.enable = true; - networking.firewall.allowedTCPPorts = [10022 22]; # TODO : Move to Qemu module with ssh activated }; })