diff --git a/flake.lock b/flake.lock
index f984d327..a57e3c65 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,36 +1,13 @@
{
"nodes": {
- "beautysh": {
- "inputs": {
- "nixpkgs": [
- "nixvim",
- "nixpkgs"
- ],
- "poetry2nix": "poetry2nix",
- "utils": "utils"
- },
- "locked": {
- "lastModified": 1680308980,
- "narHash": "sha256-aUEHV0jk2qIFP3jlsWYWhBbm+w/N9gzH3e4I5DcdB5s=",
- "owner": "lovesegfault",
- "repo": "beautysh",
- "rev": "9845efc3ea3e86cc0d41465d720a47f521b2799c",
- "type": "github"
- },
- "original": {
- "owner": "lovesegfault",
- "repo": "beautysh",
- "type": "github"
- }
- },
"flake-compat": {
"flake": false,
"locked": {
- "lastModified": 1673956053,
- "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
+ "lastModified": 1650374568,
+ "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
- "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
+ "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
@@ -57,49 +34,30 @@
"type": "github"
}
},
- "flake-utils_2": {
- "inputs": {
- "systems": "systems_2"
- },
- "locked": {
- "lastModified": 1685518550,
- "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "gitignore": {
+ "home-manager": {
"inputs": {
"nixpkgs": [
- "nixvim",
- "pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
- "lastModified": 1660459072,
- "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
- "owner": "hercules-ci",
- "repo": "gitignore.nix",
- "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
+ "lastModified": 1688731042,
+ "narHash": "sha256-D1p/LLP1SpDYjutt9W+O5Ek+XGdszsjYjvL30ad++OY=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "34db2f05219bcb0e41cc85490e4c338e2405546c",
"type": "github"
},
"original": {
- "owner": "hercules-ci",
- "repo": "gitignore.nix",
+ "owner": "nix-community",
+ "repo": "home-manager",
"type": "github"
}
},
- "home-manager": {
+ "home-manager_2": {
"inputs": {
"nixpkgs": [
+ "nixneovim",
"nixpkgs"
]
},
@@ -125,11 +83,11 @@
"xdph": "xdph"
},
"locked": {
- "lastModified": 1688653598,
- "narHash": "sha256-gLNu5/SEw3gg5SjuAfkwFSR473Wnc6GaFvS7kmySi7A=",
+ "lastModified": 1688750375,
+ "narHash": "sha256-BjFycq8qgBYFYC+b2/fb75Mp6fn1xo0bL4MSSsVu0hM=",
"owner": "hyprwm",
"repo": "Hyprland",
- "rev": "e632bf176b04968ca6a22f6e5d5f1a7bf77b6fa6",
+ "rev": "f49af187bc0755f9b5be9376bfd52c0cf12c1e11",
"type": "github"
},
"original": {
@@ -138,6 +96,24 @@
"type": "github"
}
},
+ "hyprland-plugins": {
+ "inputs": {
+ "hyprland": "hyprland_2"
+ },
+ "locked": {
+ "lastModified": 1687802267,
+ "narHash": "sha256-8kLOKO8+jfzE5cxicqZX0vaqR2Xj7KaZJN0ElJVFsww=",
+ "owner": "hyprwm",
+ "repo": "hyprland-plugins",
+ "rev": "16dc2927bdfb1b133fd682fa0b451155918a07d9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-plugins",
+ "type": "github"
+ }
+ },
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
@@ -159,6 +135,114 @@
"type": "github"
}
},
+ "hyprland-protocols_2": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland-plugins",
+ "hyprland",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1681065697,
+ "narHash": "sha256-QPzwwlGKX95tl6ZEshboZbEwwAXww6lNLdVYd6T9Mrc=",
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "rev": "4d29e48433270a2af06b8bc711ca1fe5109746cd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "type": "github"
+ }
+ },
+ "hyprland_2": {
+ "inputs": {
+ "hyprland-protocols": "hyprland-protocols_2",
+ "nixpkgs": "nixpkgs_2",
+ "wlroots": "wlroots_2",
+ "xdph": "xdph_2"
+ },
+ "locked": {
+ "lastModified": 1682548480,
+ "narHash": "sha256-aycGKS+Vv/lQQFaYJNpK054leLKIapfUobgzt8fohFA=",
+ "owner": "hyprwm",
+ "repo": "Hyprland",
+ "rev": "72d2f33b34951b7f5be6cdbc302b1c6a33cbf60f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "Hyprland",
+ "type": "github"
+ }
+ },
+ "nix-flake-tests": {
+ "locked": {
+ "lastModified": 1677844186,
+ "narHash": "sha256-ErJZ/Gs1rxh561CJeWP5bohA2IcTq1rDneu1WT6CVII=",
+ "owner": "antifuchs",
+ "repo": "nix-flake-tests",
+ "rev": "bbd9216bd0f6495bb961a8eb8392b7ef55c67afb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "antifuchs",
+ "repo": "nix-flake-tests",
+ "type": "github"
+ }
+ },
+ "nixneovim": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "home-manager": "home-manager_2",
+ "nix-flake-tests": "nix-flake-tests",
+ "nixneovimplugins": "nixneovimplugins",
+ "nixpkgs": "nixpkgs_3",
+ "nmd": "nmd",
+ "nmt": "nmt"
+ },
+ "locked": {
+ "lastModified": 1688653494,
+ "narHash": "sha256-BVOOhT8hx/8QoowVEAdWxP2W/UgoZMbbTsj1xBglYlo=",
+ "owner": "nixneovim",
+ "repo": "nixneovim",
+ "rev": "218db8db7435d893dfeb3267a3a44e0fee8ecb06",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixneovim",
+ "repo": "nixneovim",
+ "type": "github"
+ }
+ },
+ "nixneovimplugins": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": [
+ "nixneovim",
+ "flake-utils"
+ ],
+ "nixpkgs": [
+ "nixneovim",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1688371914,
+ "narHash": "sha256-jq43Ke9HThX0NG1qO08GgezjPkCwBX8pzvsixYjLQIs=",
+ "owner": "nixneovim",
+ "repo": "nixneovimplugins",
+ "rev": "f7ce3c7d9bbf50dc1d25921fa2c74e03c23bb541",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixneovim",
+ "repo": "nixneovimplugins",
+ "type": "github"
+ }
+ },
"nixpkgs": {
"locked": {
"lastModified": 1688500189,
@@ -175,23 +259,39 @@
"type": "github"
}
},
- "nixpkgs-stable": {
+ "nixpkgs_2": {
"locked": {
- "lastModified": 1685801374,
- "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
+ "lastModified": 1682453498,
+ "narHash": "sha256-WoWiAd7KZt5Eh6n+qojcivaVpnXKqBsVgpixpV2L9CE=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
+ "rev": "c8018361fa1d1650ee8d4b96294783cf564e8a7f",
"type": "github"
},
"original": {
"owner": "NixOS",
- "ref": "nixos-23.05",
+ "ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
- "nixpkgs_2": {
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1688590700,
+ "narHash": "sha256-ZF055rIUP89cVwiLpG5xkJzx00gEuuGFF60Bs/LM3wc=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "f292b4964cb71f9dfbbd30dc9f511d6165cd109b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
"locked": {
"lastModified": 1688590700,
"narHash": "sha256-ZF055rIUP89cVwiLpG5xkJzx00gEuuGFF60Bs/LM3wc=",
@@ -207,92 +307,35 @@
"type": "github"
}
},
- "nixpkgs_3": {
+ "nmd": {
+ "flake": false,
"locked": {
- "lastModified": 1688500189,
- "narHash": "sha256-djYYiY4lzJOlXOnTHytH6BUugrxHDZjuGxTSrU4gt4M=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "78419edadf0fabbe5618643bd850b2f2198ed060",
- "type": "github"
+ "lastModified": 1687627428,
+ "narHash": "sha256-7zGfXuNS5RHqhpEdz2fwrtqvF86JRo5U1hrxZSYgcm8=",
+ "owner": "~rycee",
+ "repo": "nmd",
+ "rev": "824a380546b5d0d0eb701ff8cd5dbafb360750ff",
+ "type": "sourcehut"
},
"original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
+ "owner": "~rycee",
+ "repo": "nmd",
+ "type": "sourcehut"
}
},
- "nixvim": {
- "inputs": {
- "beautysh": "beautysh",
- "flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs_3",
- "pre-commit-hooks": "pre-commit-hooks"
- },
+ "nmt": {
+ "flake": false,
"locked": {
- "lastModified": 1688709814,
- "narHash": "sha256-4VRfLCNiU0IXsB2OK34E/hQ+xQBFFoAYrYEurWqm/wU=",
- "owner": "pta2002",
- "repo": "nixvim",
- "rev": "3ef05b4f13b427b271a477b7368c9efc1f3a1b73",
+ "lastModified": 1683843030,
+ "narHash": "sha256-2K9tFpypgSORyUTRAL7MFRKCXU4GykmhIDrrIydtPdI=",
+ "owner": "jooooscha",
+ "repo": "nmt",
+ "rev": "f30b96093eb056f1bcc60199545344b4e4a72c5a",
"type": "github"
},
"original": {
- "owner": "pta2002",
- "repo": "nixvim",
- "type": "github"
- }
- },
- "poetry2nix": {
- "inputs": {
- "flake-utils": [
- "nixvim",
- "beautysh",
- "utils"
- ],
- "nixpkgs": [
- "nixvim",
- "beautysh",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1658665240,
- "narHash": "sha256-/wkx7D7enyBPRjIkK0w7QxLQhzEkb3UxNQnjyc3FTUI=",
- "owner": "nix-community",
- "repo": "poetry2nix",
- "rev": "8b8edc85d24661d5a6d0d71d6a7011f3e699780f",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "poetry2nix",
- "type": "github"
- }
- },
- "pre-commit-hooks": {
- "inputs": {
- "flake-compat": "flake-compat",
- "flake-utils": "flake-utils_2",
- "gitignore": "gitignore",
- "nixpkgs": [
- "nixvim",
- "nixpkgs"
- ],
- "nixpkgs-stable": "nixpkgs-stable"
- },
- "locked": {
- "lastModified": 1688473851,
- "narHash": "sha256-j+ViA3lh4uQGIDqB6TjM4+wijX2M5mfNb6MVJVekpAs=",
- "owner": "cachix",
- "repo": "pre-commit-hooks.nix",
- "rev": "f6a6863a3bcb61e846a9e4777b90ee365607a925",
- "type": "github"
- },
- "original": {
- "owner": "cachix",
- "repo": "pre-commit-hooks.nix",
+ "owner": "jooooscha",
+ "repo": "nmt",
"type": "github"
}
},
@@ -300,8 +343,9 @@
"inputs": {
"home-manager": "home-manager",
"hyprland": "hyprland",
- "nixpkgs": "nixpkgs_2",
- "nixvim": "nixvim"
+ "hyprland-plugins": "hyprland-plugins",
+ "nixneovim": "nixneovim",
+ "nixpkgs": "nixpkgs_4"
}
},
"systems": {
@@ -319,36 +363,6 @@
"type": "github"
}
},
- "systems_2": {
- "locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default",
- "type": "github"
- }
- },
- "utils": {
- "locked": {
- "lastModified": 1678901627,
- "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
"wlroots": {
"flake": false,
"locked": {
@@ -367,6 +381,24 @@
"type": "gitlab"
}
},
+ "wlroots_2": {
+ "flake": false,
+ "locked": {
+ "host": "gitlab.freedesktop.org",
+ "lastModified": 1682436395,
+ "narHash": "sha256-GGEjkQO9m7YLYIXIXM76HWdhjg4Ye+oafOtyaFAYKI4=",
+ "owner": "wlroots",
+ "repo": "wlroots",
+ "rev": "6830bfc17fd94709e2cdd4da0af989f102a26e59",
+ "type": "gitlab"
+ },
+ "original": {
+ "host": "gitlab.freedesktop.org",
+ "owner": "wlroots",
+ "repo": "wlroots",
+ "type": "gitlab"
+ }
+ },
"xdph": {
"inputs": {
"hyprland-protocols": [
@@ -391,6 +423,33 @@
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
+ },
+ "xdph_2": {
+ "inputs": {
+ "hyprland-protocols": [
+ "hyprland-plugins",
+ "hyprland",
+ "hyprland-protocols"
+ ],
+ "nixpkgs": [
+ "hyprland-plugins",
+ "hyprland",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1682439384,
+ "narHash": "sha256-zHDa8LCZs05TZHQSIZ3ucwyMPglBGHcqTBzfkLjYXTM=",
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "rev": "c0e233955568fbea4e859336f6d3d14d51294d7c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "type": "github"
+ }
}
},
"root": "root",
diff --git a/flake.nix b/flake.nix
index 3672afdb..5d280ce0 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,26 +1,27 @@
{
- description = "the poz";
+ description = "the poz";
- outputs = {
- self,
- nixpkgs,
- ...
- } @ inputs: let
- inherit (nixpkgs) lib; # we isolate lib from nixpkgs to be able to pass it to specific flake options, alternatively use nixpkgs.lib
- in {
- # instead of cluttering flake.nix, import all nixosConfigurations from their own dedicated file
- nixosConfigurations = import ./hosts {inherit nixpkgs inputs lib;};
- };
-
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-
- hyprland.url = "github:hyprwm/Hyprland";
-
- home-manager = {
- url = "github:nix-community/home-manager";
- inputs.nixpkgs.follows = "nixpkgs";
+ outputs = {
+ self,
+ nixpkgs,
+ ...
+ } @ inputs: let
+ inherit (nixpkgs) lib; # we isolate lib from nixpkgs to be able to pass it to specific flake options, alternatively use nixpkgs.lib
+ in {
+ # instead of cluttering flake.nix, import all nixosConfigurations from their own dedicated file
+ nixosConfigurations = import ./hosts {inherit nixpkgs inputs lib;};
+ };
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+
+ hyprland.url = "github:hyprwm/Hyprland";
+ hyprland-plugins.url = "github:hyprwm/hyprland-plugins";
+
+ home-manager = {
+ url = "github:nix-community/home-manager";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ nixneovim.url = "github:nixneovim/nixneovim";
};
- nixvim.url = "github:pta2002/nixvim";
- };
}
diff --git a/homes/default.nix b/homes/default.nix
index 7ed0ab0c..e75b9f5c 100644
--- a/homes/default.nix
+++ b/homes/default.nix
@@ -1,14 +1,14 @@
{
- inputs,
- self,
- ...
+ inputs,
+ self,
+ ...
}: {
- home-manager = {
- useUserPackages = true;
- useGlobalPkgs = true;
- extraSpecialArgs = {inherit inputs self;}; # let home-manager access inputs and self
- users = {
- jacek = import ./jacek; # if more users to be added, create a directory for each one of them with a file called default.nix in them
+ home-manager = {
+ useUserPackages = true;
+ useGlobalPkgs = true;
+ extraSpecialArgs = {inherit inputs self;}; # let home-manager access inputs and self
+ users = {
+ jacek = import ./jacek;
+ };
};
- };
}
diff --git a/homes/jacek/cli/default.nix b/homes/jacek/cli/default.nix
new file mode 100644
index 00000000..24f4eca0
--- /dev/null
+++ b/homes/jacek/cli/default.nix
@@ -0,0 +1,8 @@
+_: {
+ imports = [
+ ./git
+ ./starship
+ ./zoxide
+ ./zsh
+ ];
+}
diff --git a/homes/jacek/cli/git/default.nix b/homes/jacek/cli/git/default.nix
new file mode 100644
index 00000000..bd314cc5
--- /dev/null
+++ b/homes/jacek/cli/git/default.nix
@@ -0,0 +1,14 @@
+{
+ config,
+ pkgs,
+ ...
+}:
+{
+ config = {
+ programs.git = {
+ enable = true;
+ userName = "jacekpoz";
+ userEmail = "jacekpoz@cock.li";
+ };
+ };
+}
diff --git a/homes/jacek/cli/starship/default.nix b/homes/jacek/cli/starship/default.nix
new file mode 100644
index 00000000..2ae021a5
--- /dev/null
+++ b/homes/jacek/cli/starship/default.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ ...
+}: {
+ config = {
+ programs.starship = {
+ enable = true;
+ enableZshIntegration = true;
+ settings = {
+ add_newline = false;
+ command_timeout = 1000;
+ line_break = {
+ disabled = true;
+ };
+ directory = {
+ truncation_length = 3;
+ truncate_to_repo = false;
+ truncation_symbol = "…/";
+ read_only = "";
+ };
+ };
+ };
+ };
+}
diff --git a/homes/jacek/cli/zoxide/default.nix b/homes/jacek/cli/zoxide/default.nix
new file mode 100644
index 00000000..85e5b113
--- /dev/null
+++ b/homes/jacek/cli/zoxide/default.nix
@@ -0,0 +1,11 @@
+{
+ config,
+ ...
+}: {
+ config = {
+ programs.zoxide = {
+ enable = true;
+ enableZshIntegration = true;
+ };
+ };
+}
diff --git a/homes/jacek/cli/zsh/default.nix b/homes/jacek/cli/zsh/default.nix
new file mode 100644
index 00000000..830af557
--- /dev/null
+++ b/homes/jacek/cli/zsh/default.nix
@@ -0,0 +1,54 @@
+{
+ config,
+ pkgs,
+ ...
+}: {
+ config = {
+ programs.zsh = {
+ enable = true;
+ shellAliases = {
+ cl = "clear";
+ cp = "cp -ivr";
+ mv = "mv -iv";
+ rm = "trash -v";
+ l = "ls -A --color=auto";
+ ll = "exa -lha --git";
+ untar = "tar -xvf";
+ untargz = "tar -xzf";
+ mnt = "udisksctl mount -b";
+ umnt = "udisksctl unmount -b";
+ v = "nvim";
+ kys = "shutdown now";
+ gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
+ agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
+ wget = "wget --hsts-file=\"${config.xdg.dataHome}/wget-hsts\"";
+ g = "git";
+ };
+ initExtra = ''
+ bindkey '^H' backward-kill-word
+ '';
+ history = {
+ path = "${config.xdg.dataHome}/zsh/zsh_history";
+ size = 999999999;
+ extended = true;
+ ignoreSpace = true;
+ };
+ enableAutosuggestions = true;
+ enableCompletion = true;
+ autocd = false;
+ dotDir = ".config/zsh";
+ plugins = [
+ {
+ name = "fast-syntax-highlighting";
+ file = "fast-syntax-highlighting.plugin.zsh";
+ src = pkgs.fetchFromGitHub {
+ owner = "zdharma-continuum";
+ repo = "fast-syntax-highlighting";
+ rev = "cf318e06a9b7c9f2219d78f41b46fa6e06011fd9";
+ sha256 = "sha256-RVX9ZSzjBW3LpFs2W86lKI6vtcvDWP6EPxzeTcRZua4=";
+ };
+ }
+ ];
+ };
+ };
+}
diff --git a/homes/jacek/default.nix b/homes/jacek/default.nix
index f2bedada..2695c797 100644
--- a/homes/jacek/default.nix
+++ b/homes/jacek/default.nix
@@ -1,380 +1,97 @@
{
- config,
- inputs,
- lib,
- pkgs,
- ...
+ config,
+ inputs,
+ lib,
+ pkgs,
+ ...
}: {
- imports = [
- inputs.hyprland.homeManagerModules.default
- ];
+ imports = [
+ inputs.hyprland.homeManagerModules.default
+ ./gui
+ ./tui
+ ./cli
+ ];
- config = {
- programs = {
- home-manager.enable = true; # let home-manager enable itself
- git = {
- enable = true;
- userName = "jacekpoz";
- userEmail = "jacekpoz@cock.li";
- };
- zsh = {
- enable = true;
- shellAliases = {
- cl = "clear";
- cp = "cp -ivr";
- mv = "mv -iv";
- rm = "trash -v";
- l = "ls -A --color=auto";
- ll = "exa -lha --git";
- untar = "tar -xvf";
- untargz = "tar -xzf";
- mnt = "udisksctl mount -b";
- umnt = "udisksctl unmount -b";
- v = "nvim";
- kys = "shutdown now";
- gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
- agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
- wget = "wget --hsts-file=\"${config.xdg.dataHome}/wget-hsts\"";
+ config = {
+ programs = {
+ home-manager.enable = true;
};
- initExtra = ''
- bindkey '^H' backward-kill-word
- '';
- history = {
- path = "${config.xdg.dataHome}/zsh/zsh_history";
- size = 999999999;
- extended = true;
- ignoreSpace = true;
+
+ home = {
+ username = "jacek";
+ homeDirectory = "/home/jacek";
+ packages = with pkgs; [
+ git
+ librewolf-wayland
+ firefox-wayland
+ foot
+ keepassxc
+ exa
+ ripgrep
+ dunst
+ libnotify
+ rofi-wayland
+ rofi-calc
+ mpv
+ webcord-vencord
+ session-desktop
+ osu-lazer-bin
+ oppai-ng
+ signal-desktop-beta
+ schildichat-desktop
+ obs-studio
+ heroic
+ steam
+ ungoogled-chromium
+ amdgpu_top
+ tor-browser-bundle-bin
+ mullvad-browser
+ thunderbird
+ telegram-desktop
+ livecaptions
+ gimp
+ mullvad-vpn
+ helvum
+ ddccontrol
+ ddccontrol-db
+ bluez
+ blueman
+ btop
+ easyeffects
+ fcitx5
+ fcitx5-gtk
+ fcitx5-skk
+ firejail
+ helix
+ lbry
+ libreoffice-fresh
+ minetest
+ airshipper
+ onionshare-gui
+ prismlauncher
+ qbittorrent
+ retroarchFull
+ ventoy-full
+ zathura
+ zellij
+ cargo
+ rustc
+ nodejs
+ unzip
+ cmake
+ gcc
+ sway
+ caprine-bin
+ libsForQt5.qt5ct
+ libsForQt5.kdenlive
+ telegram-desktop
+ waypipe
+ swaylock
+ trash-cli
+ ];
+
+ stateVersion = lib.mkDefault "23.11";
};
- enableAutosuggestions = true;
- enableCompletion = true;
- autocd = false;
- dotDir = ".config/zsh";
- plugins = [
- {
- name = "fast-syntax-highlighting";
- file = "fast-syntax-highlighting.plugin.zsh";
- src = pkgs.fetchFromGitHub {
- owner = "zdharma-continuum";
- repo = "fast-syntax-highlighting";
- rev = "cf318e06a9b7c9f2219d78f41b46fa6e06011fd9";
- sha256 = "sha256-RVX9ZSzjBW3LpFs2W86lKI6vtcvDWP6EPxzeTcRZua4=";
- };
- }
- ];
- };
- zoxide = {
- enable = true;
- enableZshIntegration = true;
- };
- starship = {
- enable = true;
- enableZshIntegration = true;
- settings = {
- add_newline = false;
- command_timeout = 1000;
- line_break = {
- disabled = true;
- };
- directory = {
- truncation_length = 3;
- truncate_to_repo = false;
- truncation_symbol = ".../";
- read_only = "";
- };
- };
- };
- waybar = {
- enable = true;
- #package = pkgs.waybar.overrideAttrs (oldAttrs: {
- # mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
- #});
- settings = {
- bar = {
- gtk-layer-shell = true;
- layer = "top";
- modules-left = [ "custom/launcher" "custom/power_profile" "custom/xwayland" "tray" "wlr/workspaces" ];
- modules-center = [ "hyprland/window" ];
- modules-right = [ "custom/dnd" "backlight" "cava" "pulseaudio" "clock" "battery" "custom/power" ];
-
- pulseaudio = {
- tooltip = false;
- scroll-step = "1";
- format = " {icon} {volume}%";
- format-muted = " {volume}%";
- format-icons = {
- default = ["" "" ""];
- };
- on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
- };
- };
- };
- };
};
-
- home = {
- username = "jacek";
- homeDirectory = "/home/jacek";
- packages = with pkgs; [
- neofetch
- git
- librewolf-wayland
- firefox-wayland
- foot
- keepassxc
- neovim
- exa
- waybar
- ];
- stateVersion = lib.mkDefault "23.11";
- };
-
- wayland.windowManager.hyprland = {
- enable = true;
- extraConfig = ''
- #laptop
- #monitor=eDP-1,2560@1440@165,0x0,1
- #workspace=eDP-1,1
- #second monitor
- #monitor=HDMI-A-1,2560x1440@144,2560x0,1
- #workspace=HDMI-A-1,11
-
- workspace = 1, monitor: eDP-1
- workspace = 2, monitor: eDP-1
- workspace = 3, monitor: eDP-1
- workspace = 4, monitor: eDP-1
- workspace = 5, monitor: eDP-1
- workspace = 6, monitor: eDP-1
- workspace = 7, monitor: eDP-1
- workspace = 8, monitor: eDP-1
- workspace = 9, monitor: eDP-1
- workspace = 10, monitor: eDP-1
-
- #wsbind = 11, HDMI-a-1
- #wsbind = 12, HDMI-a-1
- #wsbind = 13, HDMI-a-1
- #wsbind = 14, HDMI-a-1
- #wsbind = 15, HDMI-a-1
- #wsbind = 16, HDMI-a-1
- #wsbind = 17, HDMI-a-1
- #wsbind = 18, HDMI-a-1
- #wsbind = 19, HDMI-a-1
- #wsbind = 20, HDMI-a-1
-
- input {
- kb_layout=pl
- kb_variant=
- kb_model=
- kb_options=
- kb_rules=
-
- follow_mouse=1
- touchpad {
- disable_while_typing=true
- }
-
- }
-
- general {
- sensitivity=1.0 # for mouse cursor
-
- gaps_in=5
- gaps_out=5
- #gaps_in=0
- #gaps_out=0
- border_size=2
- #border_size=1
- col.active_border=0xFFCC241D
- col.inactive_border=0xFF928374
- col.group_border_active=0xFF98971A
- col.group_border=0xFF928374
-
- apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse)
-
- #no_border_on_floating=true
- }
-
- decoration {
- #rounding=0
- rounding=10
- blur=1
- blur_size=3
- blur_passes=2
- blur_new_optimizations=1
-
- drop_shadow=1
- shadow_range=15
- shadow_render_power=2
- shadow_ignore_window=1
- shadow_offset= 2 4
- shadow_scale=1
- col.shadow=0xAF282828
- }
-
- gestures {
- workspace_swipe=1
- workspace_swipe_distance=200
- workspace_swipe_invert=1
- workspace_swipe_min_speed_to_force=20
- workspace_swipe_cancel_ratio=0.5
- }
-
- bezier=dupa, 0.1, 0.9, 0.1, 1.05
-
- animations {
- enabled=1
- animation=windows,1,4,dupa,popin
- animation=windowsOut,1,7,dupa,slide
- animation=border,1,15,default
- animation=fade,1,10,default
- animation=workspaces,1,5,dupa,slidevert
- }
-
- dwindle {
- no_gaps_when_only=1
- }
-
- misc {
- enable_swallow=0
- swallow_regex=foot
- focus_on_activate=true
- vrr=1
- animate_manual_resizes=false
- animate_mouse_windowdragging=false
- }
-
- windowrulev2 = float, class:^(Tor Browser)$
- windowrulev2 = float, class:^(foot)$
- windowrulev2 = float, class:^(mpv)$
- windowrulev2 = float, class:^(imv)$
- windowrulev2 = float, class:^(Vieb)$
- windowrulev2 = float, title:^(Picture-in-Picture)$
-
- windowrulev2 = float, class:^(code), title: ^(Open*)
- windowrulev2 = size 70% 70%, class:^(code), title: ^(Open*)
- windowrulev2 = center, class: ^(code), title: ^(Open*)
- windowrulev2 = float, class:^(org.keepassxc.KeePassXC)$
- windowrulev2 = size 960 670, title:^(ROG Control Center)$
-
- bind = SUPER, RETURN, exec, footclient
- bind = SUPER, W, exec, librewolf
- bind = SUPERSHIFT, W, exec, firefox
- bind = SUPER, Q, killactive
- bind = SUPER, F, fullscreen, 0
- bind = SUPER, M, fullscreen, 1
- bind = SUPER, D, exec, ~/.config/rofi/launchers/type-4/launcher.sh
- bind = SUPER, SPACE, togglefloating,
- bind = SUPER, C, exec, rofi -show calc -modi calc -no-show-match -no-sort
- bind = SUPERSHIFT, C, centerwindow
- bind = SUPER, R, bringactivetotop
- binde = SUPER, H, exec, hyprsome focus l
- binde = SUPER, J, exec, hyprsome focus d
- binde = SUPER, K, exec, hyprsome focus u
- binde = SUPER, L, exec, hyprsome focus r
- binde = SUPERCTRL, J, focusmonitor, l
- binde = SUPERCTRL, K, focusmonitor, r
- bind = SUPER, 1, exec, hyprsome workspace 1
- bind = SUPER, 2, exec, hyprsome workspace 2
- bind = SUPER, 3, exec, hyprsome workspace 3
- bind = SUPER, 4, exec, hyprsome workspace 4
- bind = SUPER, 5, exec, hyprsome workspace 5
- bind = SUPER, 6, exec, hyprsome workspace 6
- bind = SUPER, 7, exec, hyprsome workspace 7
- bind = SUPER, 8, exec, hyprsome workspace 8
- bind = SUPER, 9, exec, hyprsome workspace 9
- bind = SUPER, 0, exec, hyprsome workspace 10
- bind = SUPERSHIFT, 1, exec, hyprsome move 1
- bind = SUPERSHIFT, 2, exec, hyprsome move 2
- bind = SUPERSHIFT, 3, exec, hyprsome move 3
- bind = SUPERSHIFT, 4, exec, hyprsome move 4
- bind = SUPERSHIFT, 5, exec, hyprsome move 5
- bind = SUPERSHIFT, 6, exec, hyprsome move 6
- bind = SUPERSHIFT, 7, exec, hyprsome move 7
- bind = SUPERSHIFT, 8, exec, hyprsome move 8
- bind = SUPERSHIFT, 9, exec, hyprsome move 9
- bindle = , XF86MonBrightnessUp, exec, ~/Scripts/notif_brightness.sh set +5%
- bindle = , XF86MonBrightnessDown, exec, ~/Scripts/notif_brightness.sh set 5%-
- bindl = , XF86AudioMedia, exec, playerctl play-pause
- bindl = , XF86AudioPlay, exec, playerctl play-pause
- bindl = , XF86AudioStop, exec, playerctl stop
- bindl = , XF86AudioPrev, exec, playerctl previous
- bindl = , XF86AudioNext, exec, playerctl next
- bindle = , XF86AudioRaiseVolume, exec, ~/Scripts/notif_volume.sh -ui 5
- bindle = , XF86AudioLowerVolume, exec, ~/Scripts/notif_volume.sh -ud 5
- bindl = , XF86AudioMute, exec, ~/Scripts/notif_volume.sh --toggle-mute
- # https://github.com/n3oney/shadower
- bind = SUPER, S, exec, grimblast save area - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy
- bind = SUPERSHIFT, S, exec, grimblast save area - | swappy -f - -o - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy
- bind = SUPERSHIFT, R, exec, hyprctl reload
- bind = SUPER, P, pin
- bind = , XF86Launch1, exec, rog-control-center
- binde = , XF86Launch3, exec, asusctl led-mode -n
- bind = , XF86Launch4, exec, asusctl profile -n; pkill -SIGRTMIN+8 waybar
- binde = , XF86KbdBrightnessUp, exec, asusctl -n
- binde = , XF86KbdBrightnessDown, exec, asusctl -p
- bind = , XF86TouchpadToggle, exec,
- bind = SUPER, T, exec, grim -g "$(slurp)" -t ppm - | tesseract -l pol - - | wl-copy && notify-send "Copied text: " "\"$(wl-paste)\""
- bind = SUPER, SEMICOLON, exec, ~/.config/rofi/powermenu/type-2/powermenu.sh
- bind = SUPER, X, exec, keepassxc
- bind = SUPERSHIFT, M, exec, ~/Scripts/man.sh
- bind = SUPER, E, exec, wl-paste | spd-say -e -w -i 10
- bind = SUPERCONTROL, E, exec, wl-paste | spd-say -e -w -i 10 -l pl
- bind = SUPERSHIFT, E, exec, spd-say -C
- bind = SUPER, G, togglegroup
- binde = SUPERSHIFT, G, changegroupactive, f
- bind = SUPERCONTROL, R, exec, replay-sorcery save
-
- bindm = SUPER, mouse:272, movewindow
- bindm = SUPER, mouse:273, resizewindow
-
- binds {
- pass_mouse_when_bound=0
- }
-
- exec=killall -9 waybar; waybar
-
-
- exec-once=foot --server
- exec-once=hyprctl setcursor Bibata-Modern-Classic 24
-
- exec-once=wl-paste --watch cliphist store
-
-
- exec-once=hyprctl dispatch exec "swww init" && sleep 0.5
- exec-once=swww img -o eDP-1 ~/wall0.jpg
- exec-once=swww img -o HDMI-A-1 ~/wall1.jpg
-
- exec-once=rog-control-center
- exec-once=mullvad-vpn
- exec-once=gammastep-indicator
-
- exec-once=sleep 1 && keepassxc
-
- exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
-
- #exec-once=foot -e nvim ~/todo.md
-
- exec-once=nm-applet --indicator
-
- exec-once=blueman-applet
-
- exec-once=$HOME/.local/share/hyprload/hyprload.sh
-
- # no black border on grimblast screenshots
- layerrule = noanim, ^(selection)$
-
- layerrule = blur, ^(waybar)$
-
- # temporary fix to swaylock screenshoting rofi before locking
- layerrule = noanim, ^(rofi)$
-
- plugin {
- csgo-vulkan-fix {
- res_w = 2560
- res_h = 1440
- }
- }
- '';
- };
- };
}
diff --git a/homes/jacek/gui/default.nix b/homes/jacek/gui/default.nix
new file mode 100644
index 00000000..fa541cd2
--- /dev/null
+++ b/homes/jacek/gui/default.nix
@@ -0,0 +1,8 @@
+_: {
+ imports = [
+ ./foot
+ ./hypr
+ ./rofi
+ ./waybar
+ ];
+}
diff --git a/homes/jacek/gui/firefox/default.nix b/homes/jacek/gui/firefox/default.nix
new file mode 100644
index 00000000..e69de29b
diff --git a/homes/jacek/gui/foot/default.nix b/homes/jacek/gui/foot/default.nix
new file mode 100644
index 00000000..380d710e
--- /dev/null
+++ b/homes/jacek/gui/foot/default.nix
@@ -0,0 +1,107 @@
+{
+ config,
+ ...
+}:
+{
+ config = {
+ programs.foot = {
+ enable = true;
+ server.enable = true;
+ settings = {
+ main = {
+ term = "xterm-256color";
+ app-id = "foot";
+ title = "foot";
+ locked-title = "no";
+
+ font = "JetBrains Mono Nerd Font:size=16";
+ line-height = 20;
+ letter-spacing = 0;
+ horizontal-letter-offset = 0;
+ vertical-letter-offset = -0.75;
+ box-drawings-uses-font-glyphs = "no";
+ dpi-aware = "no";
+
+ initial-window-size-chars = "104x36";
+ initial-window-mode = "windowed";
+ pad = "5x5 center";
+ resize-delay-ms = 100;
+
+ notify = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
+
+ bold-text-in-bright = "no";
+ word-delimiters = ",│`|:\"'()[]{}<>";
+ selection-target = "primary";
+ };
+ bell = {
+ urgent = "yes";
+ notify = "yes";
+ command = "notify-send bell";
+ command-focused = "no";
+ };
+ scrollback = {
+ lines = 100000;
+ multiplier = 10.0;
+ indicator-position = "relative";
+ indicator-format = "line";
+ };
+ url = {
+ launch = "xdg-open \${url}";
+ label-letters = "sadfjklewcmpgh";
+ osc8-underline = "always";
+ protocols = "http, https, ftp, ftps, file, gemini, gopher, irc, ircs";
+ uri-characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+=\"'()[]";
+ };
+ cursor = {
+ style = "block";
+ blink = "no";
+ };
+ mouse = {
+ hide-when-typing = "yes";
+ alternate-scroll-mode = "yes";
+ };
+ colors = {
+ alpha = 0.85;
+ foreground = "dee1e6";
+ background = "101419";
+# Normal/regular colors (color palette 0-7)
+ regular0 = "c5c8cd"; # black
+ regular1 = "bd3c42"; # red
+ regular2 = "69b373"; # green
+ regular3 = "ceac67"; # yellow
+ regular4 = "4d82c8"; # blue
+ regular5 = "a367cb"; # magenta
+ regular6 = "519bc6"; # cyan
+ regular7 = "101419"; # white
+# Bright colors (color palette 8-15)
+ bright0 = "989ba0"; # bright black
+ bright1 = "c24147"; # bright red
+ bright2 = "6eb878"; # bright green
+ bright3 = "d3b16c"; # bright yellow
+ bright4 = "5287cd"; # bright blue
+ bright5 = "a86cd0"; # bright magenta
+ bright6 = "56a0cb"; # bright cyan
+ bright7 = "1f2328"; # bright white
+ };
+ csd = {
+ preferred = "server";
+ };
+ key-bindings = {
+ show-urls-launch = "Control+Shift+u";
+ unicode-input = "Control+Shift+i";
+ };
+ mouse-bindings = {
+ selection-override-modifiers = "Shift";
+ primary-paste = "BTN_MIDDLE";
+ select-begin = "BTN_LEFT";
+ select-begin-block = "Control+BTN_LEFT";
+ select-extend = "BTN_RIGHT";
+ select-extend-character-wise = "Control+BTN_RIGHT";
+ select-word = "BTN_LEFT-2";
+ select-word-whitespace = "Control+BTN_LEFT-2";
+ select-row = "BTN_LEFT-3";
+ };
+ };
+ };
+ };
+}
diff --git a/homes/jacek/gui/hypr/default.nix b/homes/jacek/gui/hypr/default.nix
new file mode 100644
index 00000000..1c3d4408
--- /dev/null
+++ b/homes/jacek/gui/hypr/default.nix
@@ -0,0 +1,260 @@
+{
+ config,
+ inputs,
+ pkgs,
+ ...
+}: {
+ config = {
+ wayland.windowManager.hyprland = {
+ enable = true;
+ plugins = [
+ inputs.hyprland-plugins.packages.${pkgs.system}.csgo-vulkan-fix
+ ];
+ extraConfig = ''
+ #laptop
+ #monitor=eDP-1,2560@1440@165,0x0,1
+ #workspace=eDP-1,1
+ #second monitor
+ #monitor=HDMI-A-1,2560x1440@144,2560x0,1
+ #workspace=HDMI-A-1,11
+
+ workspace = 1, monitor: eDP-1
+ workspace = 2, monitor: eDP-1
+ workspace = 3, monitor: eDP-1
+ workspace = 4, monitor: eDP-1
+ workspace = 5, monitor: eDP-1
+ workspace = 6, monitor: eDP-1
+ workspace = 7, monitor: eDP-1
+ workspace = 8, monitor: eDP-1
+ workspace = 9, monitor: eDP-1
+ workspace = 10, monitor: eDP-1
+
+ #wsbind = 11, HDMI-a-1
+ #wsbind = 12, HDMI-a-1
+ #wsbind = 13, HDMI-a-1
+ #wsbind = 14, HDMI-a-1
+ #wsbind = 15, HDMI-a-1
+ #wsbind = 16, HDMI-a-1
+ #wsbind = 17, HDMI-a-1
+ #wsbind = 18, HDMI-a-1
+ #wsbind = 19, HDMI-a-1
+ #wsbind = 20, HDMI-a-1
+
+ input {
+ kb_layout=pl
+ kb_variant=
+ kb_model=
+ kb_options=
+ kb_rules=
+
+ follow_mouse=1
+ touchpad {
+ disable_while_typing=true
+ }
+
+ }
+
+ general {
+ sensitivity=1.0 # for mouse cursor
+
+ gaps_in=5
+ gaps_out=5
+ #gaps_in=0
+ #gaps_out=0
+ border_size=2
+ #border_size=1
+ col.active_border=0xFFCC241D
+ col.inactive_border=0xFF928374
+ col.group_border_active=0xFF98971A
+ col.group_border=0xFF928374
+
+ apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse)
+
+ #no_border_on_floating=true
+ }
+
+ decoration {
+ #rounding=0
+ rounding=10
+ blur=1
+ blur_size=3
+ blur_passes=2
+ blur_new_optimizations=1
+
+ drop_shadow=1
+ shadow_range=15
+ shadow_render_power=2
+ shadow_ignore_window=1
+ shadow_offset= 2 4
+ shadow_scale=1
+ col.shadow=0xAF282828
+ }
+
+ gestures {
+ workspace_swipe=1
+ workspace_swipe_distance=200
+ workspace_swipe_invert=1
+ workspace_swipe_min_speed_to_force=20
+ workspace_swipe_cancel_ratio=0.5
+ }
+
+ bezier=dupa, 0.1, 0.9, 0.1, 1.05
+
+ animations {
+ enabled=1
+ animation=windows,1,4,dupa,popin
+ animation=windowsOut,1,7,dupa,slide
+ animation=border,1,15,default
+ animation=fade,1,10,default
+ animation=workspaces,1,5,dupa,slidevert
+ }
+
+ dwindle {
+ no_gaps_when_only=1
+ }
+
+ misc {
+ enable_swallow=0
+ swallow_regex=foot
+ focus_on_activate=true
+ vrr=1
+ animate_manual_resizes=false
+ animate_mouse_windowdragging=false
+ }
+
+ windowrulev2 = float, class:^(Tor Browser)$
+ windowrulev2 = float, class:^(foot)$
+ windowrulev2 = float, class:^(mpv)$
+ windowrulev2 = float, class:^(imv)$
+ windowrulev2 = float, class:^(Vieb)$
+ windowrulev2 = float, title:^(Picture-in-Picture)$
+
+ windowrulev2 = float, class:^(code), title: ^(Open*)
+ windowrulev2 = size 70% 70%, class:^(code), title: ^(Open*)
+ windowrulev2 = center, class: ^(code), title: ^(Open*)
+ windowrulev2 = float, class:^(org.keepassxc.KeePassXC)$
+ windowrulev2 = size 960 670, title:^(ROG Control Center)$
+
+ bind = SUPER, RETURN, exec, footclient
+ bind = SUPER, W, exec, librewolf
+ bind = SUPERSHIFT, W, exec, firefox
+ bind = SUPER, Q, killactive
+ bind = SUPER, F, fullscreen, 0
+ bind = SUPER, M, fullscreen, 1
+ bind = SUPER, D, exec, rofi -show drun
+ bind = SUPER, SPACE, togglefloating,
+ bind = SUPER, C, exec, rofi -show calc -modi calc -no-show-match -no-sort
+ bind = SUPERSHIFT, C, centerwindow
+ bind = SUPER, R, bringactivetotop
+ binde = SUPER, H, exec, hyprsome focus l
+ binde = SUPER, J, exec, hyprsome focus d
+ binde = SUPER, K, exec, hyprsome focus u
+ binde = SUPER, L, exec, hyprsome focus r
+ binde = SUPERCTRL, J, focusmonitor, l
+ binde = SUPERCTRL, K, focusmonitor, r
+ bind = SUPER, 1, exec, hyprsome workspace 1
+ bind = SUPER, 2, exec, hyprsome workspace 2
+ bind = SUPER, 3, exec, hyprsome workspace 3
+ bind = SUPER, 4, exec, hyprsome workspace 4
+ bind = SUPER, 5, exec, hyprsome workspace 5
+ bind = SUPER, 6, exec, hyprsome workspace 6
+ bind = SUPER, 7, exec, hyprsome workspace 7
+ bind = SUPER, 8, exec, hyprsome workspace 8
+ bind = SUPER, 9, exec, hyprsome workspace 9
+ bind = SUPER, 0, exec, hyprsome workspace 10
+ bind = SUPERSHIFT, 1, exec, hyprsome move 1
+ bind = SUPERSHIFT, 2, exec, hyprsome move 2
+ bind = SUPERSHIFT, 3, exec, hyprsome move 3
+ bind = SUPERSHIFT, 4, exec, hyprsome move 4
+ bind = SUPERSHIFT, 5, exec, hyprsome move 5
+ bind = SUPERSHIFT, 6, exec, hyprsome move 6
+ bind = SUPERSHIFT, 7, exec, hyprsome move 7
+ bind = SUPERSHIFT, 8, exec, hyprsome move 8
+ bind = SUPERSHIFT, 9, exec, hyprsome move 9
+ bindle = , XF86MonBrightnessUp, exec, ~/Scripts/notif_brightness.sh set +5%
+ bindle = , XF86MonBrightnessDown, exec, ~/Scripts/notif_brightness.sh set 5%-
+ bindl = , XF86AudioMedia, exec, playerctl play-pause
+ bindl = , XF86AudioPlay, exec, playerctl play-pause
+ bindl = , XF86AudioStop, exec, playerctl stop
+ bindl = , XF86AudioPrev, exec, playerctl previous
+ bindl = , XF86AudioNext, exec, playerctl next
+ bindle = , XF86AudioRaiseVolume, exec, ~/Scripts/notif_volume.sh -ui 5
+ bindle = , XF86AudioLowerVolume, exec, ~/Scripts/notif_volume.sh -ud 5
+ bindl = , XF86AudioMute, exec, ~/Scripts/notif_volume.sh --toggle-mute
+ # https://github.com/n3oney/shadower
+ bind = SUPER, S, exec, grimblast save area - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy
+ bind = SUPERSHIFT, S, exec, grimblast save area - | swappy -f - -o - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy
+ bind = SUPERSHIFT, R, exec, hyprctl reload
+ bind = SUPER, P, pin
+ bind = , XF86Launch1, exec, rog-control-center
+ binde = , XF86Launch3, exec, asusctl led-mode -n
+ bind = , XF86Launch4, exec, asusctl profile -n; pkill -SIGRTMIN+8 waybar
+ binde = , XF86KbdBrightnessUp, exec, asusctl -n
+ binde = , XF86KbdBrightnessDown, exec, asusctl -p
+ bind = , XF86TouchpadToggle, exec,
+ bind = SUPER, T, exec, grim -g "$(slurp)" -t ppm - | tesseract -l pol - - | wl-copy && notify-send "Copied text: " "\"$(wl-paste)\""
+ bind = SUPER, SEMICOLON, exec, ~/.config/rofi/powermenu/type-2/powermenu.sh
+ bind = SUPER, X, exec, keepassxc
+ bind = SUPERSHIFT, M, exec, ~/Scripts/man.sh
+ bind = SUPER, E, exec, wl-paste | spd-say -e -w -i 10
+ bind = SUPERCONTROL, E, exec, wl-paste | spd-say -e -w -i 10 -l pl
+ bind = SUPERSHIFT, E, exec, spd-say -C
+ bind = SUPER, G, togglegroup
+ binde = SUPERSHIFT, G, changegroupactive, f
+ bind = SUPERCONTROL, R, exec, replay-sorcery save
+
+ bindm = SUPER, mouse:272, movewindow
+ bindm = SUPER, mouse:273, resizewindow
+
+ binds {
+ pass_mouse_when_bound=0
+ }
+
+ #exec=pkill -9 waybar; waybar
+ exec=systemctl restart --user waybar.service
+
+
+ exec-once=foot --server
+ exec-once=hyprctl setcursor Bibata-Modern-Classic 24
+
+ exec-once=wl-paste --watch cliphist store
+
+
+ exec-once=hyprctl dispatch exec "swww init" && sleep 0.5
+ exec-once=swww img -o eDP-1 ~/wall0.jpg
+ exec-once=swww img -o HDMI-A-1 ~/wall1.jpg
+
+ exec-once=rog-control-center
+ exec-once=mullvad-vpn
+ exec-once=gammastep-indicator
+
+ exec-once=sleep 1 && keepassxc
+
+ exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+
+ #exec-once=foot -e nvim ~/todo.md
+
+ exec-once=nm-applet --indicator
+
+ exec-once=blueman-applet
+
+ exec-once=$HOME/.local/share/hyprload/hyprload.sh
+
+ # no black border on grimblast screenshots
+ layerrule = noanim, ^(selection)$
+
+ layerrule = blur, ^(waybar)$
+
+ # temporary fix to swaylock screenshoting rofi before locking
+ layerrule = noanim, ^(rofi)$
+
+ plugin {
+ csgo-vulkan-fix {
+ res_w = 2560
+ res_h = 1440
+ }
+ }
+ '';
+ };
+ };
+}
diff --git a/homes/jacek/gui/rofi/default.nix b/homes/jacek/gui/rofi/default.nix
new file mode 100644
index 00000000..03c77d34
--- /dev/null
+++ b/homes/jacek/gui/rofi/default.nix
@@ -0,0 +1,14 @@
+{
+ config,
+ pkgs,
+ ...
+}: {
+ config = {
+ programs.rofi = {
+ enable = true;
+ package = pkgs.rofi-wayland;
+ cycle = true;
+ terminal = "foot";
+ };
+ };
+}
diff --git a/homes/jacek/gui/waybar/default.nix b/homes/jacek/gui/waybar/default.nix
new file mode 100644
index 00000000..c20c77f2
--- /dev/null
+++ b/homes/jacek/gui/waybar/default.nix
@@ -0,0 +1,525 @@
+{
+ config,
+ inputs,
+ pkgs,
+ ...
+}: {
+ config = {
+ programs.waybar = {
+ enable = true;
+ package = inputs.hyprland.packages.${pkgs.system}.waybar-hyprland;
+ systemd.enable = true;
+ settings.mainBar = {
+ gtk-layer-shell = true;
+ layer = "top";
+ modules-left = [ "custom/launcher" "custom/power_profile" "custom/xwayland" "tray" "hyprland/workspaces" ];
+ modules-center = [ "hyprland/window" ];
+ modules-right = [ "custom/dnd" "backlight" "cava" "pulseaudio" "clock" "battery" "custom/power" ];
+
+ pulseaudio = {
+ tooltip = false;
+ scroll-step = "1";
+ format = " {icon} {volume}%";
+ format-muted = " {volume}%";
+ format-icons = {
+ default = ["" "" ""];
+ };
+ on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
+ };
+ "hyprland/workspaces" = {
+ sort-by-name = false;
+ sort-by-coordinates = true;
+ on-click = "activate";
+ on-scroll = "~/Scripts/cycle_workspace.sh 1";
+ active-only = false;
+ format = "{icon}";
+ format-icons = {
+ "1" = "1";
+ "2" = "2";
+ "3" = "3";
+ "4" = "4";
+ "5" = "5";
+ "6" = "6";
+ "7" = "7";
+ "8" = "8";
+ "9" = "9";
+ "10" = "10";
+ "11" = "1";
+ "12" = "2";
+ "13" = "3";
+ "14" = "4";
+ "15" = "5";
+ "16" = "6";
+ "17" = "7";
+ "18" = "8";
+ "19" = "9";
+ "20" = "10";
+ };
+ persistent_workspaces = {
+ "1" = [ "eDP-1" ];
+ "2" = [ "eDP-1" ];
+ "3" = [ "eDP-1" ];
+ "4" = [ "eDP-1" ];
+ "5" = [ "eDP-1" ];
+ "6" = [ "eDP-1" ];
+ "7" = [ "eDP-1" ];
+ "8" = [ "eDP-1" ];
+ "9" = [ "eDP-1" ];
+ "10" = [ "eDP-1" ];
+ "11" = [ "HDMI-A-1" ];
+ "12" = [ "HDMI-A-1" ];
+ "13" = [ "HDMI-A-1" ];
+ "14" = [ "HDMI-A-1" ];
+ "15" = [ "HDMI-A-1" ];
+ "16" = [ "HDMI-A-1" ];
+ "17" = [ "HDMI-A-1" ];
+ "18" = [ "HDMI-A-1" ];
+ "19" = [ "HDMI-A-1" ];
+ "20" = [ "HDMI-A-1" ];
+ };
+ };
+ network = {
+ tooltip = false;
+ format = "{ipaddr} {icon}";
+ format-alt = "{icon}";
+ format-icons = {
+ wifi = [ "" ];
+ ethernet = [ "" ];
+ disconnected = [ "" ];
+ };
+ on-click-right = "foot -e nmtui";
+ };
+ backlight = {
+ interval = 1;
+ align = 0;
+ rotate = 0;
+ format = "{icon} {percent}%";
+ format-icons = [ "" "" "" "" "" "" "" ];
+ on-scroll-up = "~/Scripts/bright.sh s +1%";
+ on-scroll-down = "~/Scripts/bright.sh s 1%-";
+ smooth-scrolling-threshold = 1;
+ };
+ battery = {
+ interval = 1;
+ states = {
+ good = 75;
+ warning = 30;
+ critical = 20;
+ };
+ format = "{icon}{capacity}%";
+ format-charging = "{icon}{capacity}% {power}";
+ format-discharging = "{icon}{capacity}% {power}";
+ format-icons = ["" "" "" "" "" "" "" "" "" "" ""];
+ format-charging-icons = ["" "" "" "" "" "" "" "" "" "" ""];
+ };
+ tray = {
+ icon-size = 18;
+ spacing = 10;
+ };
+ clock = {
+ interval = 1;
+ format = "{: %H:%M:%S %d/%m/%Y}";
+ format-alt = "{: %H:%M:%S}";
+ tooltip-format = "{calendar}";
+ calendar = {
+ mode = "year";
+ mode-mon-col = 3;
+ weeks-pos = "right";
+ on-scroll = 1;
+ on-click-right = "mode";
+ format = {
+ months = "{}";
+ days = "{}";
+ weeks = "T{:%W}";
+ weekdays = "{}";
+ today = "{}";
+ };
+ actions = {
+ on-click-right = "mode";
+ on-click-forward = "tz_up";
+ on-click-backward = "tz_down";
+ on-scroll-up = "shift_up";
+ on-scroll-down = "shift_down";
+ };
+ };
+ };
+ cpu = {
+ interval = 1;
+ format = " {}%";
+ max-length = 10;
+ };
+ memory = {
+ interval = 1;
+ format = " {}%";
+ max-length = 10;
+ };
+ "custom/media" = {
+ interval = 30;
+ format = "{icon} {}";
+ return-type = "json";
+ max-length = 20;
+ format-icons = {
+ spotify = " ";
+ default = " ";
+ };
+ escape = true;
+ exec = "$HOME/.config/system_scripts/mediaplayer.py 2> /dev/null";
+ on-click = "playerctl play-pause";
+ };
+ "custom/launcher" = {
+ format = " ";
+ on-click = "~/.config/rofi/launchers/type-2/launcher.sh";
+ on-click-right = "pkill rofi";
+ };
+ "custom/power" = {
+ format = "";
+ on-click = "~/.config/rofi/powermenu/type-2/powermenu.sh";
+ };
+ "hyprland/window" = {
+ format = "{}";
+ separate-outputs = true;
+ };
+ gamemode = {
+ format = "{glyph}";
+ format-alt = "{glyph} {count}";
+ glyph = "";
+ hide-not-running = true;
+ use-icon = true;
+ icon-name = "input-gaming-symbolic";
+ icon-spacing = 4;
+ icon-size = 20;
+ tooltip = true;
+ tooltip-format = "Games running: {count}";
+ };
+ "custom/dnd" = {
+ exec = "~/Scripts/waybar-dunst.sh";
+ on-click = "~/Scripts/dnd.sh";
+ restart-interval = 1;
+ tooltip = false;
+ };
+ cava = {
+ framerate = 165;
+ autosens = 1;
+ sensitivity = 100;
+ bars = 14;
+ lower_cutoff_freq = 50;
+ higher_cutoff_freq = 10000;
+ method = "pipewire";
+ source = "auto";
+ stereo = true;
+ reverse = false;
+ bar_delimiter = 0;
+ monstercat = false;
+ waves = false;
+ noise_reduction = 0.77;
+ input_delay = 2;
+ format-icons = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
+ actions = {
+ on-click-right = "mode";
+ };
+ };
+ "custom/power_profile" = {
+ exec = "asusctl profile -p | sed s:'Active profile is'::";
+ interval = 30;
+ format = "{}";
+ format-alt-click = "click-right";
+ format-alt = "";
+ on-click = "asusctl profile -n; pkill -SIGRTMIN+8 waybar";
+ signal = 8;
+ };
+ "custom/xwayland" = {
+ exec = "hyprctl clients | rg -e 'xwayland: [1]' | wc -l";
+ interval = 1;
+ format = "X {}";
+ };
+ };
+ style = ''
+ @define-color base #1e1e2e;
+ @define-color mantle #181825;
+ @define-color crust #11111b;
+
+ @define-color text #cdd6f4;
+ @define-color subtext0 #a6adc8;
+ @define-color subtext1 #bac2de;
+
+ @define-color surface0 #313244;
+ @define-color surface1 #45475a;
+ @define-color surface2 #585b70;
+
+ @define-color overlay0 #6c7086;
+ @define-color overlay1 #7f849c;
+ @define-color overlay2 #9399b2;
+
+ @define-color blue #89b4fa;
+ @define-color lavender #b4befe;
+ @define-color sapphire #74c7ec;
+ @define-color sky #89dceb;
+ @define-color teal #94e2d5;
+ @define-color green #a6e3a1;
+ @define-color yellow #f9e2af;
+ @define-color peach #fab387;
+ @define-color maroon #eba0ac;
+ @define-color red #f38ba8;
+ @define-color mauve #cba6f7;
+ @define-color pink #f5c2e7;
+ @define-color flamingo #f2cdcd;
+ @define-color rosewater #f5e0dc;
+
+ * {
+ border-radius: 10px;
+ font-family: Material Design Icons;
+ font-size: 16px;
+ color: @text;
+ }
+
+ window#waybar {
+ background-color: alpha(@base, 0.5);
+ border-radius: 0px;
+ }
+
+ window#waybar.hidden {
+ opacity: 0.2;
+ }
+
+ #window {
+ margin-top: 4px;
+ margin-bottom: 4px;
+ padding-left: 5px;
+ padding-right: 5px;
+ background: @mantle;
+ color: @teal;
+ font-family: JetBrains Mono;
+ }
+
+ #workspaces {
+ padding-left: 5px;
+ }
+
+ #workspaces button {
+ border-radius: 15px;
+ padding-top: 0px;
+ padding-right: 0px;
+ padding-bottom: 0px;
+ padding-left: 0px;
+ margin-top: 6px;
+ margin-right: 3px;
+ margin-bottom: 6px;
+ margin-left: 3px;
+ background-color: @mantle;
+ min-width: 24px;
+ }
+
+ #workspaces button.active {
+ padding-top: 0px;
+ padding-bottom: 0px;
+ padding-right: 0px;
+ padding-left: 0px;
+ margin-top: 6px;
+ margin-right: 3px;
+ margin-bottom: 6px;
+ margin-left: 3px;
+ background-color: @blue;
+ min-width: 24px;
+ }
+
+ #workspaces button:hover {
+ background: alpha(@mantle, 0.7);
+ transition-property: background, min-width;
+ transition-duration: 0.5s;
+ transition-timing-function: ease;
+ }
+
+ #workspaces button.focused {
+ background-color: @yellow;
+ }
+
+ #workspaces button.urgent {
+ background-color: @red;
+ }
+
+ .modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+ }
+
+ .modules-right > widget:first-child > #workspaces {
+ margin-right: 0;
+ }
+
+ #pulseaudio {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @peach;
+ }
+
+ #cava {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ margin-right: 0px;
+ padding-left: 10px;
+ padding-right: 0px;
+ transition: none;
+ background: @mantle;
+ color: @peach;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+
+ #battery {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @teal;
+ }
+
+ @keyframes blink {
+ to {
+ background-color: @red;
+ }
+ }
+
+ #battery.charging, #battery.plugged {
+ background-color: @mantle;
+ }
+
+ #battery.critical:not(.charging) {
+ background-color: @mantle;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ }
+
+ #backlight {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @yellow;
+ }
+ #clock {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition-property: min-width;
+ transition-duration: 0.5s;
+ background: @mantle;
+ color: @pink;
+ }
+
+ #custom-power_profile {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @rosewater;
+ }
+
+ #tray {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ }
+
+ #custom-launcher {
+ font-size: 16px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 5px;
+ transition: none;
+ background: @mantle;
+ color: @blue;
+ }
+
+ #custom-power {
+ font-size: 20px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ margin-right: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @red;
+ }
+
+ #custom-wallpaper {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ }
+
+ #custom-updates {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ }
+
+ #custom-media {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ }
+
+ #custom-dnd {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @flamingo;
+ }
+
+ #custom-xwayland {
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ transition: none;
+ background: @mantle;
+ color: @green;
+ }
+ '';
+ };
+ };
+}
diff --git a/homes/jacek/services/default.nix b/homes/jacek/services/default.nix
new file mode 100644
index 00000000..cec20dd6
--- /dev/null
+++ b/homes/jacek/services/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./dunst
+ ];
+}
diff --git a/homes/jacek/services/dunst/default.nix b/homes/jacek/services/dunst/default.nix
new file mode 100644
index 00000000..f73687d5
--- /dev/null
+++ b/homes/jacek/services/dunst/default.nix
@@ -0,0 +1,86 @@
+{
+ config,
+ ...
+}: {
+ config = {
+ services.dunst = {
+ enable = true;
+ settings = {
+ global = {
+ monitor = 0;
+ follow = "mouse";
+ width = 300;
+ height = 300;
+ origin = "top-center";
+ offset = "0x15";
+ scale = 0;
+ notification_limit = 3;
+ idle_threshold = 120;
+ progress_bar = true;
+ progress_bar_height = 10;
+ progress_bar_frame_width = 0;
+ progress_bar_min_width = 150;
+ progress_bar_max_width = 300;
+ indicate_hidden = "yes";
+ transparency = 10;
+ separator_height = 2;
+ padding = 10;
+ frame_width = 3;
+ frame_color = "#98971A";
+ separator_color = "#689D6A";
+ highlight = "#458588";
+ sort = "yes";
+ font = "JetBrains Mono 12";
+ line_height = 0;
+ markup = "full";
+ format = "%s\n%b";
+ alignment = "right";
+ vertical_alignment = "center";
+ show_age_threshold = 60;
+ ellipsize = "middle";
+ ignore_newline = "no";
+ stack_duplicates = true;
+ hide_duplicate_count = false;
+ show_indicators = "yes";
+ icon_position = "left";
+ min_icon_size = 0;
+ max_icon_size = 32;
+ icon_path = "/usr/share/icons/Gruvbox-Material-Dark/16x16/status/:/usr/share/icons/Gruvbox-Material-Dark/16x16/devices/";
+ sticky_history = "yes";
+ history_length = 20;
+ dmenu = "/usr/bin/dmenu -p dunst:";
+ browser = "/usr/bin/xdg-open";
+ always_run_script = true;
+ title = "Dunst";
+ class = "dunst";
+ corner_radius = 10;
+ ignore_dbusclose = false;
+ force_xwayland = false;
+ force_xinerama = false;
+ mouse_left_click = "do_action, close_current";
+ mouse_middle_click = "context";
+ mouse_right_click = "close_all";
+ };
+ experimental = {
+ per_monitor_dpi = false;
+ };
+ urgency_low = {
+ background = "#3C3836";
+ foreground = "#EBDBB2";
+ timeout = 5;
+ };
+ urgency_normal = {
+ background = "#7C6F64";
+ foreground = "#EBDBB2";
+ timeout = 6;
+ };
+ urgency_critical = {
+ background = "#CC241D";
+ foreground = "#EBDBB2";
+ frame_color = "#DB4934";
+ timeout = 0;
+ };
+ };
+ };
+ };
+}
diff --git a/homes/jacek/tui/default.nix b/homes/jacek/tui/default.nix
new file mode 100644
index 00000000..a9981060
--- /dev/null
+++ b/homes/jacek/tui/default.nix
@@ -0,0 +1,5 @@
+_: {
+ imports = [
+ ./neovim
+ ];
+}
diff --git a/homes/jacek/tui/neovim/default.nix b/homes/jacek/tui/neovim/default.nix
new file mode 100644
index 00000000..4f02f2b4
--- /dev/null
+++ b/homes/jacek/tui/neovim/default.nix
@@ -0,0 +1,116 @@
+{
+ config,
+ inputs,
+ pkgs,
+ ...
+}: {
+ xdg.configFile."nvim" = { source = ./lua; recursive = true; };
+ programs.neovim = {
+ enable = true;
+ viAlias = true;
+ vimAlias = true;
+ vimdiffAlias = true;
+ withPython3 = true;
+ #plugins = {
+ # plenary-nvim.enable = true;
+ # fugitive.enable = true;
+ # airline = {
+ # enable = true;
+ # powerline = true;
+ # theme = "gruvbox";
+ # };
+ # treesitter = {
+ # enable = true;
+ # grammars = [
+ # "bash"
+ # "c"
+ # "cmake"
+ # "comment"
+ # "cpp"
+ # "css"
+ # "git_config"
+ # "git_rebase"
+ # "gitattributes"
+ # "gitcommit"
+ # "gitignore"
+ # "html"
+ # "ini"
+ # "java"
+ # "json"
+ # "kotlin"
+ # "lua"
+ # "markdown"
+ # "markdown_inline"
+ # "meson"
+ # "ninja"
+ # "nix"
+ # "python"
+ # "regex"
+ # "ron"
+ # "rust"
+ # "sql"
+ # "toml"
+ # "typescript"
+ # "vim"
+ # "vimdoc"
+ # "wgsl"
+ # "yaml"
+ # ];
+ # };
+ # coq-nvim = {
+ # enable = true;
+ # autoStart = "shut-up";
+ # installArtifacts = true;
+ # recommendedKeymaps = true;
+ # };
+ # gitsigns = {
+ # enable = true;
+ # signcolumn = true;
+ # numhl = true;
+ # wordDiff = true;
+ # currentLineBlame = true;
+ # };
+ # lsp = {
+ # enable = true;
+ # coqSupport = true;
+ # servers = {
+ # bashls.enable = true;
+ # clangd.enable = true;
+ # cssls.enable = true;
+ # html.enable = true;
+ # kotlin-language-server.enable = true;
+ # ltex.enable = true;
+ # nil.enable = true;
+ # rust-analyzer.enable = true;
+ # };
+ # };
+ # telescope.enable = true;
+ # comment.enable = true;
+ #};
+ #mappings = {
+ #
+ #};
+ #options = {
+ # number = true;
+ # relativenumber = true;
+ # autoread = true;
+ # so = 7;
+ # cmdheight = 1;
+ # ignorecase = true;
+ # smartcase = true;
+ # showmatch = true;
+ # timeoutlen = 500;
+ # encoding = "utf8";
+ # smarttab = true;
+ # shiftwidth = 4;
+ # tabstop = 4;
+ # expandtab = true;
+ # linebreak = true;
+ # smartindent = true;
+ # updatetime = 300;
+ # hidden = true;
+ # background = "dark";
+ # mousemoveevent = true;
+ #};
+ };
+}
diff --git a/homes/jacek/tui/neovim/lua/after/ftplugin/PKGBUILD.lua b/homes/jacek/tui/neovim/lua/after/ftplugin/PKGBUILD.lua
new file mode 100644
index 00000000..9fd7363c
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/after/ftplugin/PKGBUILD.lua
@@ -0,0 +1,2 @@
+vim.opt.shiftwidth=2
+vim.opt.tabstop=2
diff --git a/homes/jacek/tui/neovim/lua/after/ftplugin/html.lua b/homes/jacek/tui/neovim/lua/after/ftplugin/html.lua
new file mode 100644
index 00000000..9fd7363c
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/after/ftplugin/html.lua
@@ -0,0 +1,2 @@
+vim.opt.shiftwidth=2
+vim.opt.tabstop=2
diff --git a/homes/jacek/tui/neovim/lua/after/ftplugin/makefile.lua b/homes/jacek/tui/neovim/lua/after/ftplugin/makefile.lua
new file mode 100644
index 00000000..465fa626
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/after/ftplugin/makefile.lua
@@ -0,0 +1,2 @@
+vim.opt.shiftwidth=8
+vim.opt.tabstop=8
diff --git a/homes/jacek/tui/neovim/lua/after/ftplugin/nix.lua b/homes/jacek/tui/neovim/lua/after/ftplugin/nix.lua
new file mode 100644
index 00000000..75f2a880
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/after/ftplugin/nix.lua
@@ -0,0 +1,2 @@
+vim.opt.shiftwidth=4
+vim.opt.tabstop=4
diff --git a/homes/jacek/tui/neovim/lua/after/ftplugin/svelte.lua b/homes/jacek/tui/neovim/lua/after/ftplugin/svelte.lua
new file mode 100644
index 00000000..9fd7363c
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/after/ftplugin/svelte.lua
@@ -0,0 +1,2 @@
+vim.opt.shiftwidth=2
+vim.opt.tabstop=2
diff --git a/homes/jacek/tui/neovim/lua/init.lua b/homes/jacek/tui/neovim/lua/init.lua
new file mode 100644
index 00000000..b74b4ec0
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/init.lua
@@ -0,0 +1,16 @@
+require("global")
+require("keymap")
+require("plugins")
+require("opts")
+require("diagnostic")
+require("lsp")
+require("dap_conf")
+
+-- shit I haven't been able to port yet
+vim.cmd [[
+ if has('termguicolors')
+ set termguicolors
+ endif
+ filetype plugin indent on
+ autocmd VimEnter * hi Normal guibg=none
+]]
diff --git a/homes/jacek/tui/neovim/lua/lua/.luarc.json b/homes/jacek/tui/neovim/lua/lua/.luarc.json
new file mode 100644
index 00000000..23b9ee27
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/.luarc.json
@@ -0,0 +1,3 @@
+{
+ "workspace.checkThirdParty": false
+}
\ No newline at end of file
diff --git a/homes/jacek/tui/neovim/lua/lua/dap_conf.lua b/homes/jacek/tui/neovim/lua/lua/dap_conf.lua
new file mode 100644
index 00000000..0d7d022e
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/dap_conf.lua
@@ -0,0 +1 @@
+local dap = require("dap")
diff --git a/homes/jacek/tui/neovim/lua/lua/diagnostic.lua b/homes/jacek/tui/neovim/lua/lua/diagnostic.lua
new file mode 100644
index 00000000..c193cc07
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/diagnostic.lua
@@ -0,0 +1,12 @@
+vim.diagnostic.config({
+ -- text after the erroneous line
+ virtual_text = true,
+ signs = false,
+ --float = { border = "single" },
+})
+
+local opts = { noremap = true, silent = true }
+vim.keymap.set('n', 'e', vim.diagnostic.open_float, opts)
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
+vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts)
diff --git a/homes/jacek/tui/neovim/lua/lua/global.lua b/homes/jacek/tui/neovim/lua/lua/global.lua
new file mode 100644
index 00000000..f18fad79
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/global.lua
@@ -0,0 +1,15 @@
+-- no triangles without it
+vim.g.airline_powerline_fonts = true
+vim.g.airline_theme="catppuccin"
+
+-- TODO idk if these actually do anything
+vim.g.mapleader = ' '
+vim.g.maplocalleader = ' '
+
+if vim.fn.exists("g:neovide") then
+ vim.g.neovide_refresh_rate = 165
+ vim.g.neovide_transparency = 0.85
+ vim.g.neovide_cursor_vfx_mode = "railgun"
+end
+
+vim.g.lichess_api_token = os.getenv("LICHESS_API_TOKEN")
diff --git a/homes/jacek/tui/neovim/lua/lua/keymap.lua b/homes/jacek/tui/neovim/lua/lua/keymap.lua
new file mode 100644
index 00000000..55fe4f81
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/keymap.lua
@@ -0,0 +1,7 @@
+--vim.keymap.set("n", "n", "h")
+--vim.keymap.set("n", "e", "j")
+--vim.keymap.set("n", "i", "k")
+--vim.keymap.set("n", "o", "l")
+--vim.keymap.set("n", "K", "N")
+--vim.keymap.set("n", "k", "n")
+--vim.keymap.set("n", "z", "b")
diff --git a/homes/jacek/tui/neovim/lua/lua/lsp.lua b/homes/jacek/tui/neovim/lua/lua/lsp.lua
new file mode 100644
index 00000000..0950e30b
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/lsp.lua
@@ -0,0 +1,97 @@
+require("mason").setup()
+require("mason-lspconfig").setup {
+ ensure_installed = {
+ "rust_analyzer",
+ "wgsl_analyzer",
+ "tsserver",
+ "svelte",
+ "lua_ls",
+ "clangd",
+ "kotlin_language_server",
+ "jedi_language_server",
+ "jdtls",
+ },
+}
+
+local servers = {
+ "tsserver",
+ "svelte",
+ "lua_ls",
+ "clangd",
+ "kotlin_language_server",
+ "html",
+ "cssls",
+ "bashls",
+ "cmake",
+ "jedi_language_server",
+ "jdtls",
+ "wgsl_analyzer",
+ "nil_ls",
+}
+
+-- shit wouldn't stop whining about an unused local variable
+---@diagnostic disable-next-line: unused-local
+local on_attach = function(client, bufnr)
+ vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+
+ local bufopts = { noremap = true, silent = true, buffer = bufnr }
+ vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
+ vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
+ vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
+ vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
+ vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts)
+ vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts)
+ vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts)
+ vim.keymap.set('n', 'wl', function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, bufopts)
+ vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts)
+ vim.keymap.set('n', 'r', vim.lsp.buf.rename, bufopts)
+ vim.keymap.set('n', 'a', vim.lsp.buf.code_action, bufopts)
+ vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
+ vim.keymap.set('n', '', function() vim.lsp.buf.format { async = true } end, bufopts)
+end
+
+local lsp_flags = {
+}
+
+for _, server in ipairs(servers) do
+ require("lspconfig")[server].setup(require("coq").lsp_ensure_capabilities({
+ on_attach = on_attach,
+ flags = lsp_flags,
+ }))
+end
+
+require("flutter-tools").setup {
+ lsp = require("coq").lsp_ensure_capabilities({
+ on_attach = on_attach,
+ flags = lsp_flags,
+ virtual_text = true,
+ }),
+}
+
+local rt = require("rust-tools")
+rt.setup({
+ tools = {
+ inlay_hints = {
+ auto = true,
+ only_current_line = true,
+ show_parameter_hints = true,
+ }
+ },
+ server = {
+ on_attach = function(client, bufnr)
+ on_attach(client, bufnr)
+ -- Hover actions
+ vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr })
+ -- Code action groups
+ vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr })
+ end,
+ -- https://github.com/simrat39/rust-tools.nvim/issues/300
+ settings = {
+ ["rust-analyzer"] = {
+ inlayHints = { locationLinks = false },
+ },
+ },
+ },
+})
diff --git a/homes/jacek/tui/neovim/lua/lua/opts.lua b/homes/jacek/tui/neovim/lua/lua/opts.lua
new file mode 100644
index 00000000..d5270f96
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/opts.lua
@@ -0,0 +1,39 @@
+-- line numbers on the left
+vim.opt.number = true
+-- show number relative to current line
+vim.opt.relativenumber = true
+-- re-reads a file when it's changed
+vim.opt.autoread = true
+-- it scrolls the file when the cursor is x amount of lines from the edge
+vim.opt.so = 7
+-- show cmd even if not used
+vim.opt.cmdheight = 1
+-- ignores the case when searching
+vim.opt.ignorecase = true
+-- IDK do :help options and read the part about this I don't understand
+vim.opt.smartcase = true
+-- when you type a closing bracket it briefly jump to the opening one
+vim.opt.showmatch = true
+-- time in millis how long it wauts for another key in a sequence
+vim.opt.timeoutlen = 500
+-- yeah
+vim.opt.encoding = "utf8"
+-- IDK read the manual
+vim.opt.smarttab = true
+-- insert 4 spaces instead of tab
+vim.opt.shiftwidth = 4
+vim.opt.tabstop = 4
+vim.opt.expandtab = true
+-- breaks line when too long
+vim.opt.linebreak = true
+-- indents but smart !
+vim.opt.smartindent = true
+-- saves the swap file to disk after this many millis
+vim.opt.updatetime = 300
+-- to keep the terminals from toggleterm on when hidden
+vim.opt.hidden = true
+vim.opt.background = "dark"
+-- for bufferline hover shit
+vim.opt.mousemoveevent = true
+-- true color
+--vim.opt.termguicolors = true
diff --git a/homes/jacek/tui/neovim/lua/lua/plugins.lua b/homes/jacek/tui/neovim/lua/lua/plugins.lua
new file mode 100644
index 00000000..1b084cf4
--- /dev/null
+++ b/homes/jacek/tui/neovim/lua/lua/plugins.lua
@@ -0,0 +1,186 @@
+require "paq" {
+ -- the paq:
+ "savq/paq-nvim",
+ -- tj lib
+ "nvim-lua/plenary.nvim",
+ -- TODO do I need this
+ "cdelledonne/vim-cmake",
+ -- TODO do I need this
+ "tpope/vim-fugitive",
+ -- the line on the bottom
+ "vim-airline/vim-airline",
+ "vim-airline/vim-airline-themes",
+ -- switch between .c and .h
+ "nacitar/a.vim",
+ -- sitting on the tree
+ "nvim-treesitter/nvim-treesitter",
+ -- fast as FUCK completion
+ "ms-jpq/coq_nvim",
+ "ms-jpq/coq.artifacts",
+ -- file explorer
+ { "ms-jpq/chadtree", run = "python3 -m chadtree deps" },
+ -- better term
+ "akinsho/toggleterm.nvim",
+ -- hide secrets and shit
+ "laytan/cloak.nvim",
+ -- some cool icons for other plugins
+ "nvim-tree/nvim-web-devicons",
+ -- shows git changes at the start of the line
+ "lewis6991/gitsigns.nvim",
+ -- lsp manager
+ "williamboman/mason.nvim",
+ "williamboman/mason-lspconfig.nvim",
+ -- the one and only
+ "neovim/nvim-lspconfig",
+ -- flutter takes up too much space man
+ "akinsho/flutter-tools.nvim",
+ -- <3
+ "simrat39/rust-tools.nvim",
+ -- s to jump to what you see on the screen
+ "ggandor/leap.nvim",
+ -- color picker
+ "uga-rosa/ccc.nvim",
+ -- some fun shit
+ "Eandrju/cellular-automaton.nvim",
+ -- progress thingy for lsp loading
+ { "j-hui/fidget.nvim", branch = "legacy" },
+ -- better lsp for nvim config
+ "folke/neodev.nvim",
+ -- zen like me kernel
+ "folke/zen-mode.nvim",
+ -- dims inactive code
+ "folke/twilight.nvim",
+ -- the scope:
+ "nvim-telescope/telescope.nvim",
+ -- the comment:
+ "numToStr/Comment.nvim",
+ -- needed for cheat sheet
+ "RishabhRD/popfix",
+ -- cheat sheet
+ "RishabhRD/nvim-cheat.sh",
+ -- rust :3
+ "Saecki/crates.nvim",
+ -- chess :3
+ "luk400/vim-lichess",
+ --
+ "mfussenegger/nvim-dap",
+ "lrangell/theme-cycler.nvim",
+ { "catppuccin/nvim", as="catppuccin" },
+}
+
+vim.filetype.add({extension = {wgsl = "wgsl"}})
+
+require("nvim-treesitter.configs").setup {
+ highlight = { enable = true, },
+ incremental_selection = {
+ enable = true,
+ keymaps = {
+ init_selection = "gnn",
+ node_incremental = "gzn",
+ node_decremental = "gzm",
+ scope_incremental = "gzb",
+ },
+ },
+}
+
+vim.wo.foldmethod = "expr"
+vim.wo.foldexpr = "nvim_treesitter#foldexpr()"
+vim.o.foldlevelstart = 99
+
+require("toggleterm").setup {
+ size = 10,
+ open_mapping = [[]],
+ shade_terminals = true,
+ shading_factor = 2,
+ auto_scroll = true,
+ direction = "float",
+}
+
+-- cock
+vim.g.coq_settings = {
+ auto_start = "shut-up",
+ display = {
+ pum = {
+ fast_close = true,
+ },
+ },
+ completion = {
+ always = false,
+ },
+}
+
+vim.keymap.set("n", "v", vim.cmd.CHADopen)
+
+require("neodev").setup()
+
+require("cloak").setup({
+ cloak_character = "•",
+})
+
+vim.keymap.set("n", "", require("cloak").toggle)
+
+require("gitsigns").setup {
+ signcolumn = true,
+ numhl = true,
+ word_diff = true,
+ current_line_blame = true,
+}
+
+require("leap").add_default_mappings()
+
+require("fidget").setup()
+
+require("ccc").setup({
+ highlighter = {
+ auto_enable = true
+ }
+})
+
+local opts = { noremap = true, silent = true }
+
+local builtin = require("telescope.builtin")
+vim.keymap.set("n", "ff", builtin.find_files, opts)
+vim.keymap.set("n", "fg", builtin.live_grep, opts)
+vim.keymap.set("n", "fb", builtin.buffers, opts)
+vim.keymap.set("n", "fh", builtin.help_tags, opts)
+
+require("Comment").setup()
+
+local chadtree_settings = {
+ keymap = {
+ tertiary = { "t", "" }
+ }
+}
+vim.api.nvim_set_var("chadtree_settings", chadtree_settings)
+
+local crates = require("crates")
+
+crates.setup {
+ src = {
+ coq = {
+ enabled = true,
+ name = "crates.nvim",
+ }
+ }
+}
+
+vim.keymap.set('n', 'ct', crates.toggle, opts)
+vim.keymap.set('n', 'cr', crates.reload, opts)
+
+vim.keymap.set('n', 'cv', crates.show_versions_popup, opts)
+vim.keymap.set('n', 'cf', crates.show_features_popup, opts)
+vim.keymap.set('n', 'cd', crates.show_dependencies_popup, opts)
+
+vim.keymap.set('n', 'cu', crates.update_crate, opts)
+vim.keymap.set('v', 'cu', crates.update_crates, opts)
+vim.keymap.set('n', 'ca', crates.update_all_crates, opts)
+vim.keymap.set('n', 'cU', crates.upgrade_crate, opts)
+vim.keymap.set('v', 'cU', crates.upgrade_crates, opts)
+vim.keymap.set('n', 'cA', crates.upgrade_all_crates, opts)
+
+vim.keymap.set('n', 'cH', crates.open_homepage, opts)
+vim.keymap.set('n', 'cR', crates.open_repository, opts)
+vim.keymap.set('n', 'cD', crates.open_documentation, opts)
+vim.keymap.set('n', 'cC', crates.open_crates_io, opts)
+
+vim.keymap.set("n", "t", require("themeCycler").open_lazy)
diff --git a/hosts/chmura/configuration.nix b/hosts/chmura/configuration.nix
new file mode 100644
index 00000000..0839aad0
--- /dev/null
+++ b/hosts/chmura/configuration.nix
@@ -0,0 +1,49 @@
+{
+ config,
+ pkgs,
+ inputs,
+ ...
+}: {
+ # fuck broadcom
+ nixpkgs.config.allowUnfree = true;
+
+ # Use the systemd-boot EFI boot loader.
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ networking.hostName = "chmura";
+
+ time.timeZone = "Europe/Warsaw";
+
+ nix.settings = {
+ experimental-features = [
+ "flakes"
+ "nix-command"
+ ];
+ };
+
+ programs.zsh.enable = true;
+
+ users.users.jacek = {
+ isNormalUser = true;
+ extraGroups = ["wheel" "networkmanager"];
+ shell = pkgs.zsh;
+ };
+
+ environment = {
+ shells = with pkgs; [zsh];
+ pathsToLink = [ "/share/zsh" ];
+ sessionVariables = rec {
+ EDITOR = "nvim";
+ };
+ };
+
+ services.openssh = {
+ enable = true;
+ passwordAuthentication = true;
+ };
+
+ networking.firewall.allowedTCPPorts = [ 80 443 22 ];
+
+ system.stateVersion = "23.11";
+}
diff --git a/hosts/chmura/default.nix b/hosts/chmura/default.nix
new file mode 100644
index 00000000..7ab916bd
--- /dev/null
+++ b/hosts/chmura/default.nix
@@ -0,0 +1,6 @@
+_: {
+ imports = [
+ ./configuration.nix
+ ./hardware-configuration.nix
+ ];
+}
diff --git a/hosts/chmura/hardware-configuration.nix b/hosts/chmura/hardware-configuration.nix
new file mode 100644
index 00000000..97f8ad0f
--- /dev/null
+++ b/hosts/chmura/hardware-configuration.nix
@@ -0,0 +1,46 @@
+# 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" "ahci" "ohci_pci" "ehci_pci" "usb_storage" "usbhid" "sd_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-amd" "wl" ];
+ boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/ba9b94f8-7c2e-43e4-ae8b-d48836819321";
+ fsType = "btrfs";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/43B9-A358";
+ fsType = "vfat";
+ };
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/8553092f-8960-4326-97d8-43af396eef82"; }
+ ];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp3s0f0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp3s0f1.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp4s0f0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp4s0f1.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp6s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+ # high-resolution display
+ hardware.video.hidpi.enable = lib.mkDefault true;
+}
diff --git a/hosts/default.nix b/hosts/default.nix
index f03825d2..557bf838 100644
--- a/hosts/default.nix
+++ b/hosts/default.nix
@@ -1,26 +1,24 @@
{
- lib,
- inputs,
- ...
+ lib,
+ inputs,
+ ...
}: let
- self = inputs.self;
+ self = inputs.self;
- home-manager = inputs.home-manager.nixosModules.home-manager;
- home-configs = import ../homes;
+ home-manager = inputs.home-manager.nixosModules.home-manager;
+ home-configs = import ../homes;
in {
- niksos = lib.nixosSystem {
- system = "x86_64-linux";
- specialArgs = {inherit lib inputs self;};
- modules =
- [
- {networking.hostName = "niksos";}
- ./niksos
- ]
- ++ [
- # this concatenates to lists
- # this list includes an alias for the home-manager module, and another for the global home-manager configuration directory
- home-manager
- home-configs
- ];
- };
+ niksos = lib.nixosSystem {
+ system = "x86_64-linux";
+ specialArgs = {inherit lib inputs self;};
+ modules = [
+ {networking.hostName = "niksos";}
+ ./niksos
+ ]
+ ++ [
+ # this list includes an alias for the home-manager module, and another for the global home-manager configuration directory
+ home-manager
+ home-configs
+ ];
+ };
}
diff --git a/hosts/niksos/configuration.nix b/hosts/niksos/configuration.nix
index dc000bd3..8cfdfe0e 100644
--- a/hosts/niksos/configuration.nix
+++ b/hosts/niksos/configuration.nix
@@ -1,117 +1,156 @@
{
- config,
- pkgs,
- inputs,
- ...
-}: {
- nixpkgs.config.allowUnfree = true;
+ config,
+ pkgs,
+ inputs,
+ ...
+}:
+let
+ swayConfig = pkgs.writeText "greetd-sway-config" ''
+ exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit"
+ bindsym Mod4+shift+e exec swaynag \
+ -t warning \
+ -m 'What do you want to do?' \
+ -b 'Poweroff' 'systemctl poweroff' \
+ -b 'Reboot' 'systemctl reboot'
+ '';
+in
+{
+ nixpkgs.config.allowUnfree = true;
- # Use the GRUB 2 boot loader.
- boot.loader.grub.enable = true;
- boot.loader.grub.device = "/dev/sda";
+ # Use the GRUB 2 boot loader.
+ boot.loader.grub.enable = true;
+ boot.loader.grub.device = "/dev/sda";
- networking.networkmanager.enable = true;
+ networking.networkmanager.enable = true;
- time.timeZone = "Europe/Warsaw";
+ time.timeZone = "Europe/Warsaw";
- # Enable the X11 windowing system.
- # services.xserver.enable = true;
+ # Enable the X11 windowing system.
+ # services.xserver.enable = true;
- nix.settings = {
- experimental-features = [
- "flakes"
- "nix-command"
+ nix.settings = {
+ experimental-features = [
+ "flakes"
+ "nix-command"
+ ];
+ substituters = [
+ "https://hyprland.cachix.org"
+ "https://neovim-nightly.cachix.org/"
+ ];
+ trusted-public-keys = [
+ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
+ "neovim-nightly.cachix.org-1:feIoInHRevVEplgdZvQDjhp11kYASYCE2NGY9hNrwxY="
+ ];
+ };
+
+ # Enable sound.
+ # sound.enable = true;
+ # hardware.pulseaudio.enable = true;
+
+ # Enable touchpad support (enabled default in most desktopManager).
+ # services.xserver.libinput.enable = true;
+
+ programs.zsh.enable = true;
+
+ programs.hyprland = {
+ enable = true;
+ xwayland = {
+ enable = true;
+ hidpi = true;
+ };
+ nvidiaPatches = false;
+ };
+
+ fonts.fonts = with pkgs; [
+ material-design-icons
+ (nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
- substituters = ["https://hyprland.cachix.org"];
- trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
- };
- # Enable sound.
- # sound.enable = true;
- # hardware.pulseaudio.enable = true;
-
- # Enable touchpad support (enabled default in most desktopManager).
- # services.xserver.libinput.enable = true;
-
- programs.zsh.enable = true;
-
- programs.hyprland = {
- enable = true;
- xwayland = {
- enable = true;
- hidpi = true;
+ users.users.jacek = {
+ isNormalUser = true;
+ extraGroups = ["wheel" "networkmanager"];
+ shell = pkgs.zsh;
};
- nvidiaPatches = false;
- };
- users.users.jacek = {
- isNormalUser = true;
- extraGroups = ["wheel" "networkmanager"];
- shell = pkgs.zsh;
- };
+ environment = {
+ shells = with pkgs; [zsh];
+ pathsToLink = [ "/share/zsh" ];
+ enableAllTerminfo = true;
+ sessionVariables = {
+ TERM = "foot";
+ EDITOR = "nvim";
+ SSH_AUTH_SOCK = "\$XDG_RUNTIME_DIR/ssh-agent.socket";
- environment = {
- shells = with pkgs; [zsh];
- pathsToLink = [ "/share/zsh" ];
- sessionVariables = rec {
- TERM = "foot";
- EDITOR = "nvim";
- SSH_AUTH_SOCK = "\$XDG_RUNTIME_DIR/ssh-agent.socket";
+ GTK_IM_MODULE = "fcitx";
+ QT_IM_MODULE = "fcitx";
+ XMODIFIERS = "@im=fcitx";
- GTK_IM_MODULE = "fcitx";
- QT_IM_MODULE = "fcitx";
- XMODIFIERS = "@im=fcitx";
+ LIBSEAT_BACKEND = "logind";
+ QT_STYLE_OVERRIDE = "kvantum";
+ QT_QPA_PLATFORMTHEME = "qt5ct";
- LIBSEAT_BACKEND = "logind";
- QT_STYLE_OVERRIDE = "kvantum";
- QT_QPA_PLATFORMTHEME = "qt5ct";
+ GOPATH = "\$HOME/.local/share/go";
- #GOPATH = "${config.xdg.dataHome}/go";
+ XDG_CURRENT_DESKTOP = "Hyprland";
+ XDG_SESSION_TYPE = "wayland";
+ XDG_SESSION_DESKTOP = "Hyprland";
- XDG_CURRENT_DESKTOP = "Hyprland";
- XDG_SESSION_TYPE = "wayland";
- XDG_SESSION_DESKTOP = "Hyprland";
+ QT_QPA_PLATFORM = "wayland";
+ MOZ_ENABLE_WAYLAND = "1";
+ MOZ_DRM_DEVICE = "/dev/dri/card0";
- QT_QPA_PLATFORM = "wayland";
- MOZ_ENABLE_WAYLAND = "1";
- MOZ_DRM_DEVICE = "/dev/dri/card0";
+ SDL_VIDEODRIVER = "wayland";
- SDL_VIDEODRIVER = "wayland";
+ _JAVA_AWT_WM_NONEREPARENTING = "1";
+
+ CLUTTER_BACKEND = "wayland";
+
+ GDK_BACKEND = "wayland";
+
+ XCURSOR_THEME = "Bibata-Modern-Classic";
+ XCURSOR_SIZE = "24";
- _JAVA_AWT_WM_NONEREPARENTING = "1";
-
- CLUTTER_BACKEND = "wayland";
-
- GDK_BACKEND = "wayland";
-
- XCURSOR_THEME = "Bibata-Modern-Classic";
- XCURSOR_SIZE = "24";
-
- SYSTEMD_TIMEDATED_NTP_SERVICES = "chronyd.service:systemd-timesyncd.service";
+ SYSTEMD_TIMEDATED_NTP_SERVICES = "chronyd.service:systemd-timesyncd.service";
+ };
+ etc."greetd/environments".text = ''
+ Hyprland
+ sway
+ zsh
+ shutdown now
+ '';
};
- };
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- };
+ services = {
+ pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ };
+ openssh = {
+ enable = true;
+ settings.PasswordAuthentication = true;
+ };
+ greetd = {
+ enable = true;
+ settings = {
+ default_session = {
+ command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
+ };
+ };
+ };
+ };
- services.openssh = {
- enable = true;
- settings.PasswordAuthentication = true;
- };
- #environment.systemPackages = with pkgs; [
- # neovim
- #];
+ #environment.systemPackages = with pkgs; [
+ # neovim
+ #];
- # This value determines the NixOS release from which the default
- # settings for stateful data, like file locations and database versions
- # on your system were taken. It's perfectly fine and recommended to leave
- # this value at the release version of the first install of this system.
- # Before changing this value read the documentation for this option
- # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
- system.stateVersion = "23.11"; # Did you read the comment?
+ # This value determines the NixOS release from which the default
+ # settings for stateful data, like file locations and database versions
+ # on your system were taken. It's perfectly fine and recommended to leave
+ # this value at the release version of the first install of this system.
+ # Before changing this value read the documentation for this option
+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+ system.stateVersion = "23.11"; # Did you read the comment?
}
diff --git a/hosts/niksos/default.nix b/hosts/niksos/default.nix
index 0ba368a5..7ab916bd 100644
--- a/hosts/niksos/default.nix
+++ b/hosts/niksos/default.nix
@@ -1,6 +1,6 @@
_: {
- imports = [
- ./configuration.nix
- ./hardware-configuration.nix
- ];
+ imports = [
+ ./configuration.nix
+ ./hardware-configuration.nix
+ ];
}