diff --git a/.gitignore b/.gitignore index b2be92b..e69de29 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +0,0 @@ -result diff --git a/flake.lock b/flake.lock index 0e7d694..d6589ec 100644 --- a/flake.lock +++ b/flake.lock @@ -1,50 +1,140 @@ { "nodes": { - "easy-hosts": { + "aagl": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1755470564, - "narHash": "sha256-KB1ZryVDoQcbIsItOf4WtxkHhh3ppj+XwMpSnt/2QHc=", - "owner": "tgirlcloud", - "repo": "easy-hosts", - "rev": "d0422bc7b3db26268982aa15d07e60370e76ee1d", + "lastModified": 1755609725, + "narHash": "sha256-r0Y5VDxpiA1AJy02VkmeCNudZ8/JJR1OP3ldtfce0ls=", + "owner": "ezKEa", + "repo": "aagl-gtk-on-nix", + "rev": "7566a0bcc55dbfaeb28791c06aa02060cf5bd0bf", "type": "github" }, "original": { - "owner": "tgirlcloud", - "repo": "easy-hosts", + "owner": "ezKEa", + "repo": "aagl-gtk-on-nix", "type": "github" } }, - "flake-parts": { + "ags": { "inputs": { - "nixpkgs-lib": [ + "astal": "astal", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1756679577, + "narHash": "sha256-pkfftqE2CxVN6nKDZvlNdBxIkb/x5ch4wVfwZMYNGCM=", + "owner": "Aylur", + "repo": "ags", + "rev": "04d51ac4082af3ec47e8a803417a1a55b75151d7", + "type": "github" + }, + "original": { + "owner": "Aylur", + "repo": "ags", + "type": "github" + } + }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755946532, + "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "astal": { + "inputs": { + "nixpkgs": [ + "ags", "nixpkgs" ] }, "locked": { - "lastModified": 1762980239, - "narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "52a2caecc898d0b46b2b905f058ccc5081f842da", + "lastModified": 1756474652, + "narHash": "sha256-iiBU6itpEqE0spXeNJ3uJTfioSyKYjt5bNepykpDXTE=", + "owner": "aylur", + "repo": "astal", + "rev": "20bd8318e4136fbd3d4eb2d64dbabc3acbc915dd", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, "flake-utils": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -68,18 +158,38 @@ "type": "github" } }, - "home-manager": { + "gitignore": { "inputs": { "nixpkgs": [ + "hyprland", + "pre-commit-hooks", "nixpkgs" ] }, "locked": { - "lastModified": 1763416652, - "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1757075491, + "narHash": "sha256-a+NMGl5tcvm+hyfSG2DlVPa8nZLpsumuRj1FfcKb2mQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312", + "rev": "f56bf065f9abedc7bc15e1f2454aa5c8edabaacf", "type": "github" }, "original": { @@ -88,60 +198,331 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755678602, + "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_5", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1756977414, + "narHash": "sha256-Hz5S4fILpYd1smWDZ+uLYjHgW22v6JS/04j15I4cFZE=", + "ref": "refs/heads/main", + "rev": "4e785d12a91117cd5b255052799d1a051d9976c0", + "revCount": 6409, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-contrib": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1755680610, + "narHash": "sha256-g7/g5o0spemkZCzPa8I21RgCmN0Kv41B5z9Z5HQWraY=", + "owner": "hyprwm", + "repo": "contrib", + "rev": "04721247f417256ca96acf28cdfe946cf1006263", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "contrib", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753819801, + "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753622892, + "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1756117388, + "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755184602, + "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "lix": { "flake": false, "locked": { - "lastModified": 1763570812, - "narHash": "sha256-A42G8ulTZ1MFCR0VsLF21CoKi0XKGUYwtVBHGm5mFgQ=", - "rev": "f3b2f3496bd6d346cba475d0ba152a9d3a83dec7", + "lastModified": 1729298361, + "narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=", + "rev": "ad9d06f7838a25beec425ff406fe68721fef73be", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/f3b2f3496bd6d346cba475d0ba152a9d3a83dec7.tar.gz" + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be" }, "original": { "type": "tarball", - "url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz" + "url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz" } }, "lix-module": { "inputs": { "flake-utils": "flake-utils", "flakey-profile": "flakey-profile", - "lix": [ - "lix" - ], - "nixpkgs": [ - "nixpkgs" - ] + "lix": "lix", + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1763435414, - "narHash": "sha256-i2467FddWfd19q5Qoj+1/BAeg6LZmM5m4mYGRSQn/as=", - "rev": "192c92b603731fbc1bade6c1b18c8d8a0086f703", + "lastModified": 1732605668, + "narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=", + "rev": "f19bd752910bbe3a861c9cad269bd078689d50fe", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/192c92b603731fbc1bade6c1b18c8d8a0086f703.tar.gz" + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz" }, "original": { "type": "tarball", - "url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz" + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz" } }, "niri": { "inputs": { "niri-stable": "niri-stable", "niri-unstable": "niri-unstable", - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs_8", "nixpkgs-stable": "nixpkgs-stable", "xwayland-satellite-stable": "xwayland-satellite-stable", "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1763538184, - "narHash": "sha256-6umNY06L6ZUjinthjVZIwyWyAjxOXSPhXfY0U1CVTWw=", + "lastModified": 1757071535, + "narHash": "sha256-I3ppQKxd2oxQfwMCW04TSWnIwp5an5kTMY+tx0W8jaA=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "85a16f400641eed912431efcec16f12e2100d46a", + "rev": "efa08fc58d7da5be64cfebc52b7dc44bf8d19ba9", "type": "github" }, "original": { @@ -170,11 +551,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1763531615, - "narHash": "sha256-cMi8tz+0+gWtlYqVnyMv7phOeQ0/4WmzZ/lxCyraUVw=", + "lastModified": 1756926064, + "narHash": "sha256-5/1vyFRLvJWxhBgpPaV2orC0pjSgIny6JM6+joLyZok=", "owner": "YaLTeR", "repo": "niri", - "rev": "c722634c269ae97a5ea185691bcd0b8c73a600e5", + "rev": "c69464c1288789020d9a086f86c970a7dc49b8c7", "type": "github" }, "original": { @@ -185,24 +566,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1763464769, - "narHash": "sha256-mU85VDFRIgKGq1EhT71bLjhvjJ5yuMEe0Ip1kwCbR80=", - "rev": "6f374686605df381de8541c072038472a5ea2e2d", - "type": "tarball", - "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre898015.6f374686605d/nixexprs.tar.xz" + "lastModified": 1754498491, + "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-stable": { "locked": { - "lastModified": 1763334038, - "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=", + "lastModified": 1757020766, + "narHash": "sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c", + "rev": "fe83bbdde2ccdc2cb9573aa846abe8363f79a97a", "type": "github" }, "original": { @@ -212,30 +596,213 @@ "type": "github" } }, - "root": { - "inputs": { - "easy-hosts": "easy-hosts", - "flake-parts": "flake-parts", - "home-manager": "home-manager", - "lix": "lix", - "lix-module": "lix-module", - "niri": "niri", - "nixpkgs": "nixpkgs", - "sops-nix": "sops-nix" + "nixpkgs_10": { + "locked": { + "lastModified": 1744868846, + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "sops-nix": { + "nixpkgs_2": { + "locked": { + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1756542300, + "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1712163089, + "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1729070438, + "narHash": "sha256-KOTTUfPkugH52avUvXGxvWy8ibKKj4genodIYUED+Kc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "5785b6bb5eaae44e627d541023034e1601455827", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "pre-commit-hooks": { "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore", "nixpkgs": [ + "hyprland", "nixpkgs" ] }, "locked": { - "lastModified": 1763509310, - "narHash": "sha256-s2WzTAD3vJtPACBCZXezNUMTG/wC6SFsU9DxazB9wDI=", + "lastModified": 1755960406, + "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "aagl": "aagl", + "ags": "ags", + "home-manager": "home-manager", + "hyprland": "hyprland", + "hyprland-contrib": "hyprland-contrib", + "lix-module": "lix-module", + "niri": "niri", + "nixpkgs": "nixpkgs_9", + "sops-nix": "sops-nix" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1754575663, + "narHash": "sha256-afOx8AG0KYtw7mlt6s6ahBBy7eEHZwws3iCRoiuRQS4=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "6db0fb0e9cec2e9729dc52bf4898e6c135bb8a0f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_10" + }, + "locked": { + "lastModified": 1754988908, + "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3ee33c0ed7c5aa61b4e10484d2ebdbdc98afb03e", + "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48", "type": "github" }, "original": { @@ -245,6 +812,21 @@ } }, "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -259,6 +841,47 @@ "type": "github" } }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755354946, + "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { @@ -279,11 +902,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1762747449, - "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=", + "lastModified": 1756869116, + "narHash": "sha256-SGcqX3amLH4xiA+dwF2Fu2mt1O8zHc60v0+NEZGDJhw=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "6338574bc5c036487486acde264f38f39ea15fad", + "rev": "41e865c8d35468c67b991ef5a245a98b3e44108c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 37dafc1..eeb4bd0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,89 +1,94 @@ { - outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { - imports = with inputs; [ - easy-hosts.flakeModule - home-manager.flakeModules.home-manager - ]; + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; - systems = [ "x86_64-linux" ]; - easy-hosts = { - autoConstruct = true; - path = ./hosts; - onlySystem = "x86_64-nixos"; + home-manager.url = "github:nix-community/home-manager"; - shared = { - modules = [ - inputs.lix-module.nixosModules.default - ./nixosModules - ]; - }; - }; + lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz"; - flake = { - homeConfigurations = let - userConfig = system: extraModules: - inputs.home-manager.lib.homeManagerConfiguration { - extraSpecialArgs = { inherit inputs; }; - pkgs = inputs.nixpkgs.legacyPackages.${system}; - modules = [ ./hmModules ] ++ extraModules; - }; - in { - "pan@juri" = userConfig "x86_64-linux" [ ./users/juri ]; - "pan@jibril" = userConfig "x86_64-linux" [ ./users/jibril ]; - "pan@onizuka" = userConfig "x86_64-linux" [ ./users/onizuka ]; - }; - }; + hyprland.url = "git+https://github.com/hyprwm/Hyprland"; + hyprland-contrib.url = "github:hyprwm/contrib"; + + niri.url = "github:sodiboo/niri-flake"; + + sops-nix.url = "github:Mic92/sops-nix"; + ags.url = "github:Aylur/ags"; + aagl.url = "github:ezKEa/aagl-gtk-on-nix"; }; - inputs = { - # Save data with this url. Source: - # at://did:plc:mojgntlezho4qt7uvcfkdndg/app.bsky.feed.post/3loogwsoqok2w - # cid: bafyreidhuuxs3cuabneygtxir65hnd7hvy4hwj5rwrylpwmp7jhxciasve - nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; + outputs = { self, home-manager, nixpkgs, lix-module, ... }@inputs: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + fs = pkgs.lib.fileset; + st = pkgs.lib.strings; + as = pkgs.lib.attrsets; - home-manager = { - type = "github"; - owner = "nix-community"; - repo = "home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; + hosts = let + hostFilter = { name, ...}: name == "host.nix"; + hostPaths = fs.toList (fs.fileFilter hostFilter ./hosts); + # Assumes dir structure is start_of_path/hosts/hostname/host.nix + extractHostName = path: builtins.unsafeDiscardStringContext ( + st.removeSuffix "/host.nix" ( + builtins.elemAt (st.splitString "/hosts/" path) 1 + ) + ); + in builtins.listToAttrs (map (path: { + value = path; + name = extractHostName path; + }) hostPaths); + + users = let + userFilter = { name, ...}: name == "user.nix"; + userPaths = fs.toList (fs.fileFilter userFilter ./hosts); + in builtins.listToAttrs (map (path: let + dirsAndFiles = st.splitString "/" path; + dAFLength = builtins.length dirsAndFiles; + # Assumes dir structure is start_of_path/hosts/hostname/users/username/user.nix + hostname = builtins.unsafeDiscardStringContext ( + builtins.elemAt dirsAndFiles (dAFLength - 4)); + username = builtins.unsafeDiscardStringContext ( + builtins.elemAt dirsAndFiles (dAFLength - 2)); + in { + name = username + "@" + hostname; + value = path; + } + ) userPaths); + + userConfig = usernameAtHostname: userpath: home-manager.lib.homeManagerConfiguration { + inherit pkgs; + extraSpecialArgs = { + inherit inputs; + inherit usernameAtHostname; + }; + modules = [ + ./hmModules + userpath + ]; }; - flake-parts = { - type = "github"; - owner = "hercules-ci"; - repo = "flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; + hostConfig = hostname: hostpath: nixpkgs.lib.nixosSystem { + specialArgs = let + hostFilteredUsers = as.filterAttrs ( + name: value: let + userHostname = builtins.elemAt (st.splitString "@" name) 1; + in userHostname == hostname + ) users; - easy-hosts = { - type = "github"; - owner = "tgirlcloud"; - repo = "easy-hosts"; - }; - - lix = { - url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"; - flake = false; - }; - - lix-module = { - url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.lix.follows = "lix"; - }; - - niri = { - type = "github"; - owner = "sodiboo"; - repo = "niri-flake"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - sops-nix = { - type = "github"; - owner = "Mic92"; - repo = "sops-nix"; - inputs.nixpkgs.follows = "nixpkgs"; + hostUsers = as.mapAttrsToList ( + name: value: builtins.elemAt (st.splitString "@" name) 0 + ) hostFilteredUsers; + in { + inherit inputs; + inherit hostname; + "usernameList" = hostUsers; + }; + modules = [ + ./nixosModules + hostpath + ]; }; + in { + nixosConfigurations = builtins.mapAttrs (name: path: hostConfig name path) hosts; + homeConfigurations = builtins.mapAttrs (name: path: userConfig name path) users; }; } diff --git a/hmModules/apps/git/app.nix b/hmModules/apps/git/app.nix index bd98b70..569ee14 100644 --- a/hmModules/apps/git/app.nix +++ b/hmModules/apps/git/app.nix @@ -12,12 +12,10 @@ config = lib.mkIf config.git.enable { programs.git = { enable = true; - settings = { - user = { - name = config.git.username; - email = config.git.email; - signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub"; - }; + userName = config.git.username; + userEmail = config.git.email; + extraConfig = { + user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub"; gpg.format = "ssh"; commit.gpgSign = "true"; tag.gpgSign = "true"; diff --git a/hmModules/apps/hypr/app.nix b/hmModules/apps/hypr/app.nix index 8bdc848..85e7b6f 100644 --- a/hmModules/apps/hypr/app.nix +++ b/hmModules/apps/hypr/app.nix @@ -1,5 +1,5 @@ -{ config, lib, ... }: -# let rootPath = ./.; in +{ config, inputs, pkgs, lib, ... }: +let rootPath = ./.; in { options.hypr = { enable = lib.mkEnableOption "Enables hyprland"; @@ -34,224 +34,220 @@ polkit.enable = lib.mkEnableOption "Enables polkit agent"; screenshot.enable = lib.mkEnableOption "Enables Screenshotting"; }; - - config.warnings = lib.mkIf config.hypr.enable ['' - hypr.* has been deprecated to allow the removal of hyprland from flake inputs. - '']; - # imports = [ inputs.hyprland.homeManagerModules.default ]; + imports = [ inputs.hyprland.homeManagerModules.default ]; - # config = let - # lopts = lib.lists.optionals; - # in { - # nix.settings = { - # substituters = ["https://hyprland.cachix.org"]; - # trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; - # }; - # } // lib.mkIf config.hypr.enable { - # wayland.windowManager.hyprland = let - # mod = config.hypr.mod_key; - # # p-s = let - # # chw = config.hypr.workspace; - # # findDefaultWs = id: if (builtins.hasAttr id chw.workspaces) - # # then (builtins.head (builtins.getAttr id chw.workspaces)) - # # else ""; - # # in with config.hypr.workspace; lib.mkIf primary-secondary.enable { - # # primaryWs = findDefaultWs primary-secondary.primary; - # # secondaryWs = findDefaultWs primary-secondary.secondary; - # # }; - # in { - # enable = true; - # settings = { - # monitor = config.hypr.monitor.details; - # workspace = let - # wsMonitor = monitor: wrksps: map (ws: - # if ws == (builtins.head wrksps) - # then "name:"+ws+", monitor:"+monitor+", persistent:true, default:true" - # else "name:"+ws+", monitor:"+monitor+", persistent:true" - # ) wrksps; - # makeRules = wsAttr: builtins.concatLists (builtins.attrValues ( - # builtins.mapAttrs wsMonitor wsAttr - # )); - # in makeRules config.hypr.workspace.workspaces - # ++ [ - # "w[t1], gapsout:0, gapsin:0" - # "w[tg1], gapsout:0, gapsin:0" - # "f[1], gapsout:0, gapsin:0" - # ] - # ++ lopts config.hypr.workspace.scratchpad.enable [ - # "special:scratch, on-created-empty: [float; size 50% 50%; center] ${config.defaultApps.terminal}" - # ]; - # input = { - # accel_profile = "flat"; - # sensitivity = config.hypr.mouse.sensitivity; - # }; - # general = { - # gaps_in = 3; - # gaps_out = 3; - # border_size = 2; - # "col.active_border" = "rgb(F5C2E7)"; - # "col.inactive_border" = "rgb(1E1D2F)"; - # layout = "master"; - # }; - # decoration = { - # rounding = 2; - # blur = { - # enabled = true; - # size = 12; - # passes = 2; - # special = true; - # }; - # }; - # animation = [ - # "windows, 1, 4, default, popin 50%" - # "windowsOut, 1, 4, default, popin 50%" - # "windowsMove, 1, 3, default" - # "border, 1, 3, default" - # "fade, 1, 3, default" - # "workspaces, 1, 3, default" - # ]; - # master = { - # mfact = config.hypr.master.mfact; - # }; - # misc = { - # focus_on_activate = true; - # }; - # - # exec-once = lopts config.hypr.polkit.enable [ - # "${pkgs.kdePackages.polkit-kde-agent-1}/bin/libexec/polkit-kde-authentication-agent-1" - # ] ++ lopts config.hypr.background.enable [ - # "${pkgs.swww}/bin/swww-daemon" - # "${pkgs.swww}/bin/swww img ${config.hypr.background.path}" - # ] ++ lopts config.ags.enable [ - # "ags" - # ] ++ lopts config.beeper.enable [ - # "[workspace name:chat silent] Beeper" - # ]; - # - # env = with config.hypr; [ - # # "HYPR_MON_PRIMARY, ${workspace.primary-secondary.primary}" - # # "HYPR_MON_SECONDARY, ${workspace.primary-secondary.secondary}" - # "HYPR_WORK_DB, ${config.xdg.cacheHome}/hypr/workspace.db" - # ] ++ lopts cursor.enable [ - # "HYPRCURSOR_THEME,${cursor.theme}" - # "HYPRCURSOR_SIZE,${cursor.size}" - # ] ++ lopts config.nvidia.enable [ - # "LIBVA_DRIVER_NAME,nvidia" - # "XDG_SESSION_TYPE,wayland" - # "GBM_BACKEND,nvidia-drm" - # "__GLX_VENDOR_LIBRARY_NAME,nvidia" - # "WLR_RENDERER_ALLOW_SOFTWARE,1" - # "WLR_DRM_DEVICES,/dev/dri/card1" - # ]; - # - # windowrulev2 = let - # workspaceDefaults = wsname: applist: map ( - # app: "workspace " + wsname + ", " + app - # ) applist; - # allDefault = wsAttr: builtins.concatLists (builtins.attrValues ( - # builtins.mapAttrs workspaceDefaults wsAttr - # )); - # in allDefault config.hypr.workspace.defaults - # ++ [ - # "bordersize 0, floating:0, onworkspace:w[t1]" - # "rounding 0, floating:0, onworkspace:w[t1]" - # "bordersize 0, floating:0, onworkspace:w[tg1]" - # "rounding 0, floating:0, onworkspace:w[tg1]" - # "bordersize 0, floating:0, onworkspace:f[1]" - # "rounding 0, floating:0, onworkspace:f[1]" - # ] - # ++ lopts config.hypr.xwayland.videobridge.enable [ - # "opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$" - # "noanim,class:^(xwaylandvideobridge)$" - # "noinitialfocus,class:^(xwaylandvideobridge)$" - # "maxsize 1 1,class:^(xwaylandvideobridge)$" - # "noblur,class:^(xwaylandvideobridge)$" - # ] ++ map (id: "opacity 1 override, " + id) config.hypr.windows.opaque - # ++ [ - # "opacity 0.94 fullscreen:0" - # "opacity 0.79 override, class:^(${config.defaultApps.terminal})$" - # ]; - # - # # 1, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh home - # # 2, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh web - # # 3, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh med - # # 4, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh game - # # 5, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh etc - # # _, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh hell - # # TAB, exec, $XDG_CONFIG_HOME/hypr/scripts/changesecondary.xsh - # # - # # SHIFT, 1, movetoworkspacesilent, name:home - # # SHIFT, 2, movetoworkspacesilent, name:web - # # SHIFT, 3, movetoworkspacesilent, name:med - # # SHIFT, 4, movetoworkspacesilent, name:game - # # SHIFT, TAB, movetoworkspacesilent, r-1 - # - # bind = let - # modPrefix = kb: if (lib.strings.hasPrefix "&" kb) - # then ("${mod}" + kb) - # else ("${mod}, " + kb); - # in map modPrefix ([ - # "Return, exec, ${config.defaultApps.terminal}" - # "&SHIFT, Q, exit" - # "h, focusmonitor, l" - # "l, focusmonitor, r" - # "j, cyclenext," - # "k, cyclenext, prev" - # "&SHIFT, h, movecurrentworkspacetomonitor, -1" - # "&SHIFT, l, movecurrentworkspacetomonitor, +1" - # "&SHIFT, j, swapnext," - # "&SHIFT, k, swapnext, prev" - # "c, killactive" - # "f, togglefloating" - # "&SHIFT, f, fullscreen" - # ] ++ (let - # workspaces = builtins.concatLists ( - # builtins.attrValues config.hypr.workspace.workspaces); - # wsBinds = with builtins; wrksps: depth: if depth > (length wrksps) - # then [] - # else let ws = builtins.elemAt wrksps (depth -1); in [ - # "${toString depth}, workspace, name:${ws}" - # "&SHIFT, ${toString depth}, movetoworkspacesilent, name:${ws}" - # ] ++ wsBinds wrksps (depth + 1); - # in wsBinds workspaces 1) ++ lopts config.rofi.enable [ - # "&SHIFT, return, exec, ${pkgs.rofi}/bin/rofi -show run" - # ] ++ lopts config.hypr.screenshot.enable [ - # "P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copy area" - # "&SHIFT, P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copysave area" - # ] ++ lopts config.hypr.workspace.scratchpad.enable [ - # "i, togglespecialworkspace, scratch" - # ]); - # - # bindm = map (kb: "${mod}, " + kb) [ - # "mouse:272, movewindow" - # "mouse:273, movewindow" - # ]; - # }; - # }; - # - # home.packages = with pkgs; [ - # wlr-randr # Xrandr for wayland - # wl-clipboard # Clipboard manager for wayland - # ] ++ lopts config.hypr.xwayland.videobridge.enable [ - # kdePackages.xwaylandvideobridge - # ] ++ lopts config.hypr.cursor.enable [ - # hyprcursor - # ] ++ lopts config.hypr.screenshot.enable [ - # hyprpicker # Colorpicker, needed for screenshot tool - # inputs.hyprland-contrib.packages.${pkgs.system}.grimblast - # ]; - # - # xdg.configFile."hypr-scripts" = { - # source = rootPath + "/scripts"; - # target = "hypr/scripts"; - # executable = true; - # }; - # - # xdg.dataFile."hypr-icons" = lib.mkIf config.hypr.cursor.enable { - # source = rootPath + "/icons"; - # target = "icons/"; - # recursive = true; - # }; - # }; + config = let + lopts = lib.lists.optionals; + in { + nix.settings = { + substituters = ["https://hyprland.cachix.org"]; + trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; + }; + } // lib.mkIf config.hypr.enable { + wayland.windowManager.hyprland = let + mod = config.hypr.mod_key; + # p-s = let + # chw = config.hypr.workspace; + # findDefaultWs = id: if (builtins.hasAttr id chw.workspaces) + # then (builtins.head (builtins.getAttr id chw.workspaces)) + # else ""; + # in with config.hypr.workspace; lib.mkIf primary-secondary.enable { + # primaryWs = findDefaultWs primary-secondary.primary; + # secondaryWs = findDefaultWs primary-secondary.secondary; + # }; + in { + enable = true; + settings = { + monitor = config.hypr.monitor.details; + workspace = let + wsMonitor = monitor: wrksps: map (ws: + if ws == (builtins.head wrksps) + then "name:"+ws+", monitor:"+monitor+", persistent:true, default:true" + else "name:"+ws+", monitor:"+monitor+", persistent:true" + ) wrksps; + makeRules = wsAttr: builtins.concatLists (builtins.attrValues ( + builtins.mapAttrs wsMonitor wsAttr + )); + in makeRules config.hypr.workspace.workspaces + ++ [ + "w[t1], gapsout:0, gapsin:0" + "w[tg1], gapsout:0, gapsin:0" + "f[1], gapsout:0, gapsin:0" + ] + ++ lopts config.hypr.workspace.scratchpad.enable [ + "special:scratch, on-created-empty: [float; size 50% 50%; center] ${config.defaultApps.terminal}" + ]; + input = { + accel_profile = "flat"; + sensitivity = config.hypr.mouse.sensitivity; + }; + general = { + gaps_in = 3; + gaps_out = 3; + border_size = 2; + "col.active_border" = "rgb(F5C2E7)"; + "col.inactive_border" = "rgb(1E1D2F)"; + layout = "master"; + }; + decoration = { + rounding = 2; + blur = { + enabled = true; + size = 12; + passes = 2; + special = true; + }; + }; + animation = [ + "windows, 1, 4, default, popin 50%" + "windowsOut, 1, 4, default, popin 50%" + "windowsMove, 1, 3, default" + "border, 1, 3, default" + "fade, 1, 3, default" + "workspaces, 1, 3, default" + ]; + master = { + mfact = config.hypr.master.mfact; + }; + misc = { + focus_on_activate = true; + }; + + exec-once = lopts config.hypr.polkit.enable [ + "${pkgs.kdePackages.polkit-kde-agent-1}/bin/libexec/polkit-kde-authentication-agent-1" + ] ++ lopts config.hypr.background.enable [ + "${pkgs.swww}/bin/swww-daemon" + "${pkgs.swww}/bin/swww img ${config.hypr.background.path}" + ] ++ lopts config.ags.enable [ + "ags" + ] ++ lopts config.beeper.enable [ + "[workspace name:chat silent] Beeper" + ]; + + env = with config.hypr; [ + # "HYPR_MON_PRIMARY, ${workspace.primary-secondary.primary}" + # "HYPR_MON_SECONDARY, ${workspace.primary-secondary.secondary}" + "HYPR_WORK_DB, ${config.xdg.cacheHome}/hypr/workspace.db" + ] ++ lopts cursor.enable [ + "HYPRCURSOR_THEME,${cursor.theme}" + "HYPRCURSOR_SIZE,${cursor.size}" + ] ++ lopts config.nvidia.enable [ + "LIBVA_DRIVER_NAME,nvidia" + "XDG_SESSION_TYPE,wayland" + "GBM_BACKEND,nvidia-drm" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "WLR_RENDERER_ALLOW_SOFTWARE,1" + "WLR_DRM_DEVICES,/dev/dri/card1" + ]; + + windowrulev2 = let + workspaceDefaults = wsname: applist: map ( + app: "workspace " + wsname + ", " + app + ) applist; + allDefault = wsAttr: builtins.concatLists (builtins.attrValues ( + builtins.mapAttrs workspaceDefaults wsAttr + )); + in allDefault config.hypr.workspace.defaults + ++ [ + "bordersize 0, floating:0, onworkspace:w[t1]" + "rounding 0, floating:0, onworkspace:w[t1]" + "bordersize 0, floating:0, onworkspace:w[tg1]" + "rounding 0, floating:0, onworkspace:w[tg1]" + "bordersize 0, floating:0, onworkspace:f[1]" + "rounding 0, floating:0, onworkspace:f[1]" + ] + ++ lopts config.hypr.xwayland.videobridge.enable [ + "opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$" + "noanim,class:^(xwaylandvideobridge)$" + "noinitialfocus,class:^(xwaylandvideobridge)$" + "maxsize 1 1,class:^(xwaylandvideobridge)$" + "noblur,class:^(xwaylandvideobridge)$" + ] ++ map (id: "opacity 1 override, " + id) config.hypr.windows.opaque + ++ [ + "opacity 0.94 fullscreen:0" + "opacity 0.79 override, class:^(${config.defaultApps.terminal})$" + ]; + + # 1, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh home + # 2, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh web + # 3, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh med + # 4, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh game + # 5, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh etc + # _, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh hell + # TAB, exec, $XDG_CONFIG_HOME/hypr/scripts/changesecondary.xsh + # + # SHIFT, 1, movetoworkspacesilent, name:home + # SHIFT, 2, movetoworkspacesilent, name:web + # SHIFT, 3, movetoworkspacesilent, name:med + # SHIFT, 4, movetoworkspacesilent, name:game + # SHIFT, TAB, movetoworkspacesilent, r-1 + + bind = let + modPrefix = kb: if (lib.strings.hasPrefix "&" kb) + then ("${mod}" + kb) + else ("${mod}, " + kb); + in map modPrefix ([ + "Return, exec, ${config.defaultApps.terminal}" + "&SHIFT, Q, exit" + "h, focusmonitor, l" + "l, focusmonitor, r" + "j, cyclenext," + "k, cyclenext, prev" + "&SHIFT, h, movecurrentworkspacetomonitor, -1" + "&SHIFT, l, movecurrentworkspacetomonitor, +1" + "&SHIFT, j, swapnext," + "&SHIFT, k, swapnext, prev" + "c, killactive" + "f, togglefloating" + "&SHIFT, f, fullscreen" + ] ++ (let + workspaces = builtins.concatLists ( + builtins.attrValues config.hypr.workspace.workspaces); + wsBinds = with builtins; wrksps: depth: if depth > (length wrksps) + then [] + else let ws = builtins.elemAt wrksps (depth -1); in [ + "${toString depth}, workspace, name:${ws}" + "&SHIFT, ${toString depth}, movetoworkspacesilent, name:${ws}" + ] ++ wsBinds wrksps (depth + 1); + in wsBinds workspaces 1) ++ lopts config.rofi.enable [ + "&SHIFT, return, exec, ${pkgs.rofi}/bin/rofi -show run" + ] ++ lopts config.hypr.screenshot.enable [ + "P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copy area" + "&SHIFT, P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copysave area" + ] ++ lopts config.hypr.workspace.scratchpad.enable [ + "i, togglespecialworkspace, scratch" + ]); + + bindm = map (kb: "${mod}, " + kb) [ + "mouse:272, movewindow" + "mouse:273, movewindow" + ]; + }; + }; + + home.packages = with pkgs; [ + wlr-randr # Xrandr for wayland + wl-clipboard # Clipboard manager for wayland + ] ++ lopts config.hypr.xwayland.videobridge.enable [ + kdePackages.xwaylandvideobridge + ] ++ lopts config.hypr.cursor.enable [ + hyprcursor + ] ++ lopts config.hypr.screenshot.enable [ + hyprpicker # Colorpicker, needed for screenshot tool + inputs.hyprland-contrib.packages.${pkgs.system}.grimblast + ]; + + xdg.configFile."hypr-scripts" = { + source = rootPath + "/scripts"; + target = "hypr/scripts"; + executable = true; + }; + + xdg.dataFile."hypr-icons" = lib.mkIf config.hypr.cursor.enable { + source = rootPath + "/icons"; + target = "icons/"; + recursive = true; + }; + }; } diff --git a/hmModules/apps/lf/app.nix b/hmModules/apps/lf/app.nix index ecc428e..f4ff3da 100644 --- a/hmModules/apps/lf/app.nix +++ b/hmModules/apps/lf/app.nix @@ -33,7 +33,7 @@ relativenumber = true; }; commands = { - dragon-out = ''%${pkgs.dragon-drop}/bin/dragon-drop -a -x "$fx"''; + dragon-out = ''%${pkgs.xdragon}/bin/xdragon -a -x "$fx"''; trash = lib.mkIf config.trash.enable '' %${pkgs.trash-cli}/bin/trash "$fx" ''; diff --git a/hmModules/apps/niri/app.nix b/hmModules/apps/niri/app.nix index ae70ea9..2b84d94 100644 --- a/hmModules/apps/niri/app.nix +++ b/hmModules/apps/niri/app.nix @@ -53,8 +53,8 @@ binds = with config.lib.niri.actions; { "Mod+Return".action= spawn "${config.defaultApps.terminal}"; "Mod+Shift+Return".action = spawn "${pkgs.fuzzel}/bin/fuzzel"; - "Mod+P".action.screenshot = []; - "Mod+Shift+P".action.screenshot-window = []; + "Mod+P".action = screenshot; + "Mod+Shift+P".action = screenshot-window; "Mod+Tab".action = switch-preset-column-width; "Mod+Shift+Q".action = quit; diff --git a/hmModules/automatic/default.nix b/hmModules/automatic/default.nix index 18c78ef..f974b21 100644 --- a/hmModules/automatic/default.nix +++ b/hmModules/automatic/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, usernameAtHostname, ... }: { options = { @@ -9,15 +9,17 @@ browser = lib.mkOption { default = ""; }; }; }; - config = { + config = let + st = lib.strings; + in { # Let Home Manager install and manage itself. programs.home-manager.enable = true; nixpkgs.config.allowUnfree = true; home.stateVersion = "23.05"; home = { - username = "pan"; - homeDirectory = "/home/pan"; + username = builtins.elemAt (st.splitString "@" usernameAtHostname) 0; + homeDirectory = "/home/" + config.home.username; packages = config.extraPkgs; }; diff --git a/hmModules/services/widgets/ags/default.nix b/hmModules/services/widgets/ags/default.nix index 5403b1e..5d248d1 100644 --- a/hmModules/services/widgets/ags/default.nix +++ b/hmModules/services/widgets/ags/default.nix @@ -1,30 +1,25 @@ -{ config, lib, ... }: +{ config, inputs, pkgs, lib, ... }: { options.ags = { enable = lib.mkEnableOption "Enable ags"; }; - - config.warnings = lib.mkIf config.ags.enable ['' - ags.enable has been deprecated to allow the removal of ags from flake - inputs. - '']; - # imports = [ inputs.ags.homeManagerModules.default ]; + imports = [ inputs.ags.homeManagerModules.default ]; - # config = lib.mkIf config.ags.enable { - # home.packages = with pkgs; [ - # libnotify # Notifications through ags - # ]; - # programs.ags = { - # enable = true; - # configDir = ./config; - # - # extraPackages = with pkgs; [ - # gtksourceview - # webkitgtk - # accountsservice - # ]; - # }; - # }; + config = lib.mkIf config.ags.enable { + home.packages = with pkgs; [ + libnotify # Notifications through ags + ]; + programs.ags = { + enable = true; + configDir = ./config; + + extraPackages = with pkgs; [ + gtksourceview + webkitgtk + accountsservice + ]; + }; + }; } diff --git a/hosts/jibril/default.nix b/hosts/jibril/host.nix similarity index 100% rename from hosts/jibril/default.nix rename to hosts/jibril/host.nix diff --git a/users/jibril/default.nix b/hosts/jibril/users/pan/user.nix similarity index 100% rename from users/jibril/default.nix rename to hosts/jibril/users/pan/user.nix diff --git a/hosts/juri/default.nix b/hosts/juri/host.nix similarity index 100% rename from hosts/juri/default.nix rename to hosts/juri/host.nix diff --git a/hosts/juri/users/badtz/user.nix b/hosts/juri/users/badtz/user.nix new file mode 100644 index 0000000..5972fdb --- /dev/null +++ b/hosts/juri/users/badtz/user.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: + +{ + fish.enable = true; + git = { + enable = true; + username = "Badtz"; + email = "may@badtz.dev"; + }; +} diff --git a/users/juri/default.nix b/hosts/juri/users/pan/user.nix similarity index 100% rename from users/juri/default.nix rename to hosts/juri/users/pan/user.nix diff --git a/hosts/onizuka/default.nix b/hosts/onizuka/host.nix similarity index 91% rename from hosts/onizuka/default.nix rename to hosts/onizuka/host.nix index 46a9717..d2dbc49 100644 --- a/hosts/onizuka/default.nix +++ b/hosts/onizuka/host.nix @@ -20,6 +20,8 @@ steam.enable = true; steam.gamemode = true; + aagl.enable = true; + aagl.honkai-rail = true; input-remapper.enable = true; postgres.enable = true; diff --git a/users/onizuka/default.nix b/hosts/onizuka/users/pan/user.nix similarity index 100% rename from users/onizuka/default.nix rename to hosts/onizuka/users/pan/user.nix diff --git a/nixosModules/apps/animelauncher/app.nix b/nixosModules/apps/animelauncher/app.nix index 27f1406..5cf1a9b 100644 --- a/nixosModules/apps/animelauncher/app.nix +++ b/nixosModules/apps/animelauncher/app.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, inputs, lib, ... }: { options.aagl = { @@ -12,21 +12,16 @@ "Enables honkai 3rd impact"; }; - # imports = [ inputs.aagl.nixosModules.default ]; + imports = [ inputs.aagl.nixosModules.default ]; - config.warnings = lib.mkIf (config.aagl.enable || config.aagl.honkai-rail || - config.aagl.genshin || config.aagl.honkai-3rd) ['' - aagl.* has been deprecated to allow the removal of aagl from flake inputs. - '']; + config = lib.mkIf config.aagl.enable { + nix.settings = inputs.aagl.nixConfig; - # config = lib.mkIf config.aagl.enable { - # nix.settings = inputs.aagl.nixConfig; - # - # programs.honkers-railway-launcher.enable = - # lib.mkIf config.aagl.honkai-rail true; - # programs.anime-game-launcher.enable = - # lib.mkIf config.aagl.genshin true; - # programs.honkers-launcher.enable = - # lib.mkIf config.aagl.honkai-3rd true; - # }; + programs.honkers-railway-launcher.enable = + lib.mkIf config.aagl.honkai-rail true; + programs.anime-game-launcher.enable = + lib.mkIf config.aagl.genshin true; + programs.honkers-launcher.enable = + lib.mkIf config.aagl.honkai-3rd true; + }; } diff --git a/nixosModules/automatic/default.nix b/nixosModules/automatic/default.nix index 2bbeffd..2f80ace 100644 --- a/nixosModules/automatic/default.nix +++ b/nixosModules/automatic/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, lib, ... }: +{ config, pkgs, lib, hostname, usernameList, ... }: { options.system = { @@ -22,6 +22,7 @@ boot.loader.efi.canTouchEfiVariables = true; }) { + networking.hostName = hostname; system.stateVersion = lib.mkDefault "23.05"; time.timeZone = config.system.timezone; @@ -38,24 +39,24 @@ # XDG Compliance nix.settings.use-xdg-base-directories = true; - # users = { - # users = builtins.listToAttrs (map ( - # user: { - # name = user; - # value = { - # name = user; - # isNormalUser = true; - # extraGroups = [ "network" ]; - # }; - # } - # ) usernameList); - # groups = { - # wheel = { - # members = config.system.users.bigWheels; - # }; - # network = { }; - # }; - # }; + users = { + users = builtins.listToAttrs (map ( + user: { + name = user; + value = { + name = user; + isNormalUser = true; + extraGroups = [ "network" ]; + }; + } + ) usernameList); + groups = { + wheel = { + members = config.system.users.bigWheels; + }; + network = { }; + }; + }; fonts = { enableDefaultPackages = true; diff --git a/nixosModules/services/caddy/service.nix b/nixosModules/services/caddy/service.nix index eaf0965..e24f701 100644 --- a/nixosModules/services/caddy/service.nix +++ b/nixosModules/services/caddy/service.nix @@ -20,7 +20,7 @@ ''; package = pkgs.caddy.withPlugins { plugins = [ "github.com/caddy-dns/porkbun@v0.3.1" ]; - hash = "sha256-NlZY/EEY9TbqrMAkSHK2aGm5AjFTvpvBXV1GW1PnXCc="; + hash = "sha256-g/Nmi4X/qlqqjY/zoG90iyP5Y5fse6Akr8exG5Spf08="; }; virtualHosts = config.caddy.vhosts; email = config.caddy.adminEmail; diff --git a/nixosModules/services/hyprland/service.nix b/nixosModules/services/hyprland/service.nix index 3d13ac0..779a8fe 100644 --- a/nixosModules/services/hyprland/service.nix +++ b/nixosModules/services/hyprland/service.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ inputs, config, lib, ... }: { @@ -6,14 +6,18 @@ enable = lib.mkEnableOption "Enables hyprland"; }; - # imports = [ - # inputs.hyprland.nixosModules.default - # ]; + imports = [ + inputs.hyprland.nixosModules.default + ]; - config.warnings = lib.mkIf config.hyprland.enable ['' - hyprland.enable has been deprecated to allow the removal of hyprland from - flake inputs. - '']; - - # config.programs.hyprland.enable = lib.mkIf config.hyprland.enable true; + config = { + nix.settings = { + substituters = [ "https://hyprland.cachix.org" ]; + trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + ]; + experimental-features = [ "nix-command" "flakes" ]; + }; + programs.hyprland.enable = lib.mkIf config.hyprland.enable true; + }; }