diff --git a/flake.lock b/flake.lock index 8f7ce21..845ce51 100644 --- a/flake.lock +++ b/flake.lock @@ -41,27 +41,6 @@ "type": "github" } }, - "anyrun": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1692476235, - "narHash": "sha256-NGUDp/24HCIVWE0xZNHIdzz3q2WDk7MQz1wC7ub/e2U=", - "owner": "Kirottu", - "repo": "anyrun", - "rev": "76af3eb198f376303194c31a83f2399a043acf1b", - "type": "github" - }, - "original": { - "owner": "Kirottu", - "repo": "anyrun", - "type": "github" - } - }, "crane": { "inputs": { "flake-compat": "flake-compat", @@ -103,11 +82,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1688772518, - "narHash": "sha256-ol7gZxwvgLnxNSZwFTDJJ49xVY5teaSvF7lzlo3YQfM=", + "lastModified": 1693439040, + "narHash": "sha256-t2nOxBcP0Q/XJt6Ild4v0hJ49OSl9F3nE1cdIT4xsDg=", "owner": "ipetkov", "repo": "crane", - "rev": "8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e", + "rev": "174604795d316b75777e28185c3a4918bc69b399", "type": "github" }, "original": { @@ -176,7 +155,7 @@ "all-cabal-json": "all-cabal-json", "crane": "crane_3", "devshell": "devshell_2", - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts", "flake-utils-pre-commit": "flake-utils-pre-commit", "ghc-utils": "ghc-utils", "gomod2nix": "gomod2nix", @@ -315,27 +294,6 @@ } }, "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "anyrun", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685662779, - "narHash": "sha256-cKDDciXGpMEjP1n6HlzKinN0H+oLmNpgeCTzYnsA2po=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "71fb97f0d875fd4de4994dfb849f2c75e17eb6c3", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "persway", @@ -357,16 +315,52 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" }, "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -413,11 +407,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1687709756, - "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -539,11 +533,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1692817399, - "narHash": "sha256-gbLru0aup6iI0JnDGMQd1jsb8H6IJUNr/Xln3/ouAZc=", + "lastModified": 1695693919, + "narHash": "sha256-ik3qDGRspMyx1LP/m/Bc2O9LTpDIeg3x4Y2EJBin1tQ=", "owner": "helix-editor", "repo": "helix", - "rev": "c9694f680f97823ac9b893239a78bf45bfee0403", + "rev": "01e281ce107e57cc1865a0e09e89a8e8c79f2a4e", "type": "github" }, "original": { @@ -559,11 +553,11 @@ ] }, "locked": { - "lastModified": 1692763155, - "narHash": "sha256-qMrGKZ8c/q/mHO3ZdrcBPwiVVXPLLgXjY98Ejqb5kAA=", + "lastModified": 1695708052, + "narHash": "sha256-QiWOrZcCmY+zH2NVM6/opZaMRMgam9u+qVYycKLqL10=", "owner": "nix-community", "repo": "home-manager", - "rev": "6a20e40acaebf067da682661aa67da8b36812606", + "rev": "dd88dbc69438384bd94f8282584a86798750028c", "type": "github" }, "original": { @@ -584,11 +578,11 @@ ] }, "locked": { - "lastModified": 1693000981, - "narHash": "sha256-1FnbFJ6vWfCmucD74o+KjnASEySeyhCKlE54ldp5PwU=", + "lastModified": 1695668783, + "narHash": "sha256-pXVei5KZMxALQ8ibx0oqbfh5N/FI3VzJHodDNAh41xE=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "6c38ff29c4b4c74d8200ad41d8b0d4075952aade", + "rev": "0c0163cfa1a8c0286edf231507026dd6f5798644", "type": "github" }, "original": { @@ -633,11 +627,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1690373729, - "narHash": "sha256-e136hTT7LqQ2QjOTZQMW+jnsevWwBpMj78u6FRUsH9I=", + "lastModified": 1692351612, + "narHash": "sha256-KTGonidcdaLadRnv9KFgwSMh1ZbXoR/OBmPjeNMhFwU=", "owner": "nix-community", "repo": "naersk", - "rev": "d9a33d69a9c421d64c8d925428864e93be895dcc", + "rev": "78789c30d64dea2396c9da516bbcc8db3a475207", "type": "github" }, "original": { @@ -653,11 +647,11 @@ ] }, "locked": { - "lastModified": 1692503351, - "narHash": "sha256-FdG0wnizM9mAUgi58KP1tXaX4ogVooPDS6VwsGEqZ9s=", + "lastModified": 1695526222, + "narHash": "sha256-/NwZz3QcVplrfiDKk1thYg1EIHLSNucVHNUi2uwO3RI=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "4becac130db930e9de8c3fe58bfa245c119b9eeb", + "rev": "25d6369c232bbea1ec1f90226fd17982e7a0a647", "type": "github" }, "original": { @@ -721,11 +715,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1690833316, - "narHash": "sha256-+YU+/pTJmVKNW12R07/SJiTn7PQk90xwCI4D2PfLRPs=", + "lastModified": 1693355128, + "narHash": "sha256-+ZoAny3ZxLcfMaUoLVgL9Ywb/57wP+EtsdNGuXUJrwg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9418167277f665de6f4a29f414d438cf39c55b9e", + "rev": "a63a64b593dcf2fe05f7c5d666eb395950f36bc9", "type": "github" }, "original": { @@ -748,6 +742,42 @@ "type": "github" } }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1693471703, + "narHash": "sha256-0l03ZBL8P1P6z8MaSDS/MvuU8E75rVxe5eE1N6gxeTo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e52e76b70d5508f3cec70b882a29199f4d1ee85", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_3": { + "locked": { + "dir": "lib", + "lastModified": 1693471703, + "narHash": "sha256-0l03ZBL8P1P6z8MaSDS/MvuU8E75rVxe5eE1N6gxeTo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e52e76b70d5508f3cec70b882a29199f4d1ee85", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1678872516, @@ -766,11 +796,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1692986144, - "narHash": "sha256-M4VFpy7Av9j+33HF5nIGm0k2+DXXW4qSSKdidIKg5jY=", + "lastModified": 1695559356, + "narHash": "sha256-kXZ1pUoImD9OEbPCwpTz4tHsNTr4CIyIfXb3ocuR8sI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "74e5bdc5478ebbe7ba5849f0d765f92757bb9dbf", + "rev": "261abe8a44a7e8392598d038d2e01f7b33cf26d0", "type": "github" }, "original": { @@ -798,11 +828,27 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1693003285, - "narHash": "sha256-5nm4yrEHKupjn62MibENtfqlP6pWcRTuSKrMiH9bLkc=", + "lastModified": 1695360818, + "narHash": "sha256-JlkN3R/SSoMTa+CasbxS1gq+GpGxXQlNZRUh9+LIy/0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5690c4271f2998c304a45c91a0aeb8fb69feaea7", + "rev": "e35dcc04a3853da485a396bdd332217d0ac9054f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1695644571, + "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", "type": "github" }, "original": { @@ -814,11 +860,11 @@ }, "nur": { "locked": { - "lastModified": 1693057602, - "narHash": "sha256-EGNBYNeEO9pcF8e8QSt+SyJf4goBpC1E7D69hFJ3r70=", + "lastModified": 1695733013, + "narHash": "sha256-dyQjcUNqZk7kR3exhwDvpZV4U/1gJNNtbypacMGMJyA=", "owner": "nix-community", "repo": "NUR", - "rev": "4c58adf6f6d01ee9392343f578f8c701aa0373b5", + "rev": "4af599c0027f63d4812df1a7835a3fe71e26ea12", "type": "github" }, "original": { @@ -939,9 +985,77 @@ "type": "github" } }, + "pywlroots": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_4", + "pywlroots-src": "pywlroots-src" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-W8zExI9+M6/4XcyncAFpnLvr+lNgDXMTZ1Nfb6JtkIU=", + "path": "pywlroots", + "type": "path" + }, + "original": { + "path": "pywlroots", + "type": "path" + } + }, + "pywlroots-src": { + "flake": false, + "locked": { + "lastModified": 1694810594, + "narHash": "sha256-TjOYziToYqXbhAK+h/h00/e7oPluDsGaBP3DJ68jPXM=", + "owner": "flacjacket", + "repo": "pywlroots", + "rev": "fca5c8142930ed4a6c23a906e77813207d993480", + "type": "github" + }, + "original": { + "owner": "flacjacket", + "repo": "pywlroots", + "type": "github" + } + }, + "qtile": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], + "pywlroots": "pywlroots", + "qtile-src": "qtile-src" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-tldqXihJfgtVFVvUKNfa01TnMfN9+1/8RMoHfczYsKY=", + "path": "flakes/qtile", + "type": "path" + }, + "original": { + "path": "flakes/qtile", + "type": "path" + } + }, + "qtile-src": { + "flake": false, + "locked": { + "lastModified": 1695682843, + "narHash": "sha256-8Dqe2OoFND6n9d++uxgEcUffVT8V5/g9fXqszJ/IpEU=", + "owner": "qtile", + "repo": "qtile", + "rev": "ad5d0538c51c7ba57ef8520b45b2728fe6caa3a3", + "type": "github" + }, + "original": { + "owner": "qtile", + "repo": "qtile", + "type": "github" + } + }, "root": { "inputs": { - "anyrun": "anyrun", "flake-utils": "flake-utils", "helix": "helix", "home-manager": "home-manager", @@ -953,6 +1067,7 @@ "nixpkgs-stable": "nixpkgs-stable_2", "nur": "nur", "persway": "persway", + "qtile": "qtile", "rust-overlay": "rust-overlay_3" } }, @@ -1029,11 +1144,11 @@ ] }, "locked": { - "lastModified": 1688351637, - "narHash": "sha256-CLTufJ29VxNOIZ8UTg0lepsn3X03AmopmaLTTeHDCL4=", + "lastModified": 1691374719, + "narHash": "sha256-HCodqnx1Mi2vN4f3hjRPc7+lSQy18vRn8xWW68GeQOg=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f9b92316727af9e6c7fee4a761242f7f46880329", + "rev": "b520a3889b24aaf909e287d19d406862ced9ffc9", "type": "github" }, "original": { @@ -1052,11 +1167,11 @@ ] }, "locked": { - "lastModified": 1693015707, - "narHash": "sha256-SFr93DYn502sVT9nB5U8/cKg1INyEk/jCeq8tHioz7Y=", + "lastModified": 1695694299, + "narHash": "sha256-0CucEiOZzOVHwmGDJKNXLj7aDYOqbRtqChp9nbGrh18=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "e90223633068a44f0fb62374e0fa360ccc987292", + "rev": "c89a55d2d91cf55234466934b25deeffa365188a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 77f816b..305f026 100644 --- a/flake.nix +++ b/flake.nix @@ -45,6 +45,12 @@ }; nix-rice.url = "github:bertof/nix-rice"; + + qtile = { + url = "path:flakes/qtile"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; outputs = { @@ -56,6 +62,7 @@ ironbar, persway, helix, + qtile, nix-index-database, nix-rice, nix-std, @@ -65,40 +72,9 @@ forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ]; - overlays = import ./overlay.nix {inherit inputs;}; - in rec { overlays = import ./overlay.nix {inherit inputs;}; - homeConfigurations = { - "twitchin" = home-manager.lib.homeManagerConfiguration { - pkgs = (import nixpkgs { - system = "x86_64-linux"; - overlays = [ - inputs.nur.overlay - outputs.overlays.additions - outputs.overlays.pkg-sets - outputs.overlays.wlroots - outputs.overlays.sway-unwrapped - outputs.overlays.sway - inputs.nix-rice.overlays.default - outputs.overlays.rice - inputs.helix.overlays.default - inputs.persway.overlays.default - # inputs.eww.overlays.default - ]; - config = { - allowUnfree = true; - allowUnfreePredicate = _: true; - }; - }); - extraSpecialArgs = {inherit inputs outputs;}; - modules = [ - ./home/twitchin.nix - ]; - }; - }; - nixosConfigurations = { "quiver" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; diff --git a/flakes/kile/flake.lock b/flakes/kile/flake.lock new file mode 100644 index 0000000..b563250 --- /dev/null +++ b/flakes/kile/flake.lock @@ -0,0 +1,176 @@ +{ + "nodes": { + "crane": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1693787605, + "narHash": "sha256-rwq5U8dy+a9JFny/73L0SJu1GfWwATMPMTp7D+mjHy8=", + "owner": "ipetkov", + "repo": "crane", + "rev": "8b4f7a4dab2120cf41e7957a28a853f45016bd9d", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "kile-src": { + "flake": false, + "locked": { + "lastModified": 1693732213, + "narHash": "sha256-QK6oJ4YpncUJvJWfnSFnz9OeMKf3CPz/P4vjOkJ8pmQ=", + "owner": "snakedye", + "repo": "kile", + "rev": "683efdd637afca25bcb61b3e8140f7485ac50939", + "type": "gitlab" + }, + "original": { + "owner": "snakedye", + "repo": "kile", + "type": "gitlab" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1694593561, + "narHash": "sha256-WSaIQZ5s9N9bDFkEMTw6P9eaZ9bv39ZhsiW12GtTNM0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1697b7d480449b01111e352021f46e5879e47643", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils_2", + "kile-src": "kile-src", + "nixpkgs": "nixpkgs" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "crane", + "flake-utils" + ], + "nixpkgs": [ + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1693707092, + "narHash": "sha256-HR1EnynBSPqbt+04/yxxqsG1E3n6uXrOl7SPco/UnYo=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "98ccb73e6eefc481da6039ee57ad8818d1ca8d56", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "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" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flakes/kile/flake.nix b/flakes/kile/flake.nix new file mode 100644 index 0000000..9be5189 --- /dev/null +++ b/flakes/kile/flake.nix @@ -0,0 +1,62 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + crane = { + url = "github:ipetkov/crane"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + flake-utils.url = "github:numtide/flake-utils"; + + kile-src = { + url = "gitlab:snakedye/kile"; + flake = false; + }; + }; + + outputs = { self, nixpkgs, crane, flake-utils, kile-src, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + # import nixpkgs { + # inherit system; + # }; + + craneLib = crane.lib.${system}; + kile = craneLib.buildPackage { + src = kile-src; + + buildInputs = with pkgs; [ + wayland + ]; + + # Additional environment variables can be set directly + # MY_CUSTOM_VAR = "some value"; + }; + in + { + checks = { + inherit kile; + }; + + packages.default = kile; + + apps.default = flake-utils.lib.mkApp { + drv = kile; + }; + + devShells.default = craneLib.devShell { + # Inherit inputs from checks. + checks = self.checks.${system}; + + # Additional dev-shell environment variables can be set directly + # MY_CUSTOM_DEVELOPMENT_VAR = "something else"; + + # Extra inputs can be added here; cargo and rustc are provided by default. + packages = [ + # pkgs.ripgrep + ]; + }; + }); +} diff --git a/flakes/qtile/flake.lock b/flakes/qtile/flake.lock new file mode 100644 index 0000000..50754d3 --- /dev/null +++ b/flakes/qtile/flake.lock @@ -0,0 +1,167 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1695644571, + "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1693471703, + "narHash": "sha256-0l03ZBL8P1P6z8MaSDS/MvuU8E75rVxe5eE1N6gxeTo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e52e76b70d5508f3cec70b882a29199f4d1ee85", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1693471703, + "narHash": "sha256-0l03ZBL8P1P6z8MaSDS/MvuU8E75rVxe5eE1N6gxeTo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e52e76b70d5508f3cec70b882a29199f4d1ee85", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1695644571, + "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pywlroots": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2", + "pywlroots-src": "pywlroots-src" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-W8zExI9+M6/4XcyncAFpnLvr+lNgDXMTZ1Nfb6JtkIU=", + "path": "pywlroots", + "type": "path" + }, + "original": { + "path": "pywlroots", + "type": "path" + } + }, + "pywlroots-src": { + "flake": false, + "locked": { + "lastModified": 1694810594, + "narHash": "sha256-TjOYziToYqXbhAK+h/h00/e7oPluDsGaBP3DJ68jPXM=", + "owner": "flacjacket", + "repo": "pywlroots", + "rev": "fca5c8142930ed4a6c23a906e77813207d993480", + "type": "github" + }, + "original": { + "owner": "flacjacket", + "repo": "pywlroots", + "type": "github" + } + }, + "qtile-src": { + "flake": false, + "locked": { + "lastModified": 1695682843, + "narHash": "sha256-8Dqe2OoFND6n9d++uxgEcUffVT8V5/g9fXqszJ/IpEU=", + "owner": "qtile", + "repo": "qtile", + "rev": "ad5d0538c51c7ba57ef8520b45b2728fe6caa3a3", + "type": "github" + }, + "original": { + "owner": "qtile", + "repo": "qtile", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "pywlroots": "pywlroots", + "qtile-src": "qtile-src" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flakes/qtile/flake.nix b/flakes/qtile/flake.nix new file mode 100644 index 0000000..75f04ab --- /dev/null +++ b/flakes/qtile/flake.nix @@ -0,0 +1,80 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + flake-parts.url = "github:hercules-ci/flake-parts"; + + qtile-src = { + url = "github:qtile/qtile"; + flake = false; + }; + + pywlroots = { + url = "path:pywlroots"; + }; + }; + + outputs = inputs@{ flake-parts, qtile-src, pywlroots, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = [ "x86_64-linux" ]; + perSystem = { config, self', inputs', pkgs, system, ...}: { + packages.qtile = with pkgs; with pkgs.python3Packages; buildPythonPackage rec { + pname = "qtile"; + version = "unstable-${inputs.qtile-src.lastModifiedDate}"; + src = inputs.qtile-src; + SETUPTOOLS_SCM_PRETEND_VERSION = "0.23.0"; + postPatch = '' + substituteInPlace libqtile/pangocffi.py \ + --replace libgobject-2.0.so.0 ${pkgs.glib.out}/lib/libgobject-2.0.so.0 \ + --replace libpangocairo-1.0.so.0 ${pkgs.pango.out}/lib/libpangocairo-1.0.so.0 \ + --replace libpango-1.0.so.0 ${pkgs.pango.out}/lib/libpango-1.0.so.0 + substituteInPlace libqtile/backend/x11/xcursors.py \ + --replace libxcb-cursor.so.0 ${pkgs.xcb-util-cursor.out}/lib/libxcb-cursor.so.0 + substituteInPlace libqtile/backend/wayland/cffi/cairo_buffer.py \ + --replace drm_fourcc.h libdrm/drm_fourcc.h + substituteInPlace libqtile/backend/wayland/cffi/build.py \ + --replace /usr/include/pixman-1 ${lib.getDev pkgs.pixman}/include \ + --replace /usr/include/libdrm ${lib.getDev pkgs.libdrm}/include/libdrm + ''; + nativeBuildInputs = [ + pkg-config + setuptools-scm + setuptools + ]; + propagatedBuildInputs = [ + xcffib + (cairocffi.override { withXcffib = true; }) + python-dateutil + dbus-python + dbus-next + mpd2 + psutil + pulsectl-asyncio + pyxdg + pygobject3 + pywayland + inputs'.pywlroots.packages.default + xkbcommon + ]; + buildInputs = [ + libinput + libxkbcommon + libdrm + wayland + xorg.xcbutilwm + (wlroots.overrideAttrs (wf: wp: { + postPatch = + wp.postPatch + + '' + substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();" + ''; + })) + ]; + makeWrapperArgs = [ + "--suffix PATH : ${lib.makeBinPath [ mypy ]}" + ]; + doCheck = false; + }; + }; + }; +} diff --git a/flakes/qtile/pywlroots/flake.lock b/flakes/qtile/pywlroots/flake.lock new file mode 100644 index 0000000..8fa428e --- /dev/null +++ b/flakes/qtile/pywlroots/flake.lock @@ -0,0 +1,81 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1695644571, + "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1693471703, + "narHash": "sha256-0l03ZBL8P1P6z8MaSDS/MvuU8E75rVxe5eE1N6gxeTo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e52e76b70d5508f3cec70b882a29199f4d1ee85", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pywlroots-src": { + "flake": false, + "locked": { + "lastModified": 1694810594, + "narHash": "sha256-TjOYziToYqXbhAK+h/h00/e7oPluDsGaBP3DJ68jPXM=", + "owner": "flacjacket", + "repo": "pywlroots", + "rev": "fca5c8142930ed4a6c23a906e77813207d993480", + "type": "github" + }, + "original": { + "owner": "flacjacket", + "repo": "pywlroots", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "pywlroots-src": "pywlroots-src" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flakes/qtile/pywlroots/flake.nix b/flakes/qtile/pywlroots/flake.nix new file mode 100644 index 0000000..b03a056 --- /dev/null +++ b/flakes/qtile/pywlroots/flake.nix @@ -0,0 +1,49 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + flake-parts.url = "github:hercules-ci/flake-parts"; + + pywlroots-src = { + url = "github:flacjacket/pywlroots"; + flake = false; + }; + + }; + + outputs = inputs@{ flake-parts, pywlroots-src, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = [ "x86_64-linux" ]; + perSystem = { config, self', inputs', pkgs, system, ...}: { + packages.default = with pkgs; with pkgs.python3Packages; buildPythonPackage rec { + pname = "pywlroots"; + version = "unstable-${inputs.pywlroots-src.lastModifiedDate}"; + format = "setuptools"; + disable = pythonOlder "3.7"; + src = inputs.pywlroots-src; + + nativeBuildInputs = [ pkg-config ]; + propagatedNativeBuildInputs = [ cffi ]; + buildInputs = [ libinput libxkbcommon pixman xorg.libxcb xorg.xcbutilwm udev wayland + ((wlroots_0_16.override {xwayland = xwayland; enableXWayland = true;}).overrideAttrs (wf: wp: { + postPatch = + wp.postPatch + + '' + substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();" + ''; + })) + ]; + propagatedBuildInputs = [ cffi pywayland xkbcommon + ]; + nativeCheckInputs = [ pytestCheckHook ]; + postBuild = '' + ${python3.pythonForBuild.interpreter} wlroots/ffi_build.py + ''; + + pythonImportsCheck = [ "wlroots" ]; + passthru.test = { inherit qtile; }; + }; + }; + + }; #/mkFlake +} diff --git a/header.sh b/header.sh old mode 100644 new mode 100755 diff --git a/home/dots/qtile/.direnv/flake-inputs/dn5wzc9a8hrpml66i6kz5f3q6dr3jjmk-source b/home/dots/qtile/.direnv/flake-inputs/dn5wzc9a8hrpml66i6kz5f3q6dr3jjmk-source new file mode 120000 index 0000000..a86a3c9 --- /dev/null +++ b/home/dots/qtile/.direnv/flake-inputs/dn5wzc9a8hrpml66i6kz5f3q6dr3jjmk-source @@ -0,0 +1 @@ +/nix/store/dn5wzc9a8hrpml66i6kz5f3q6dr3jjmk-source \ No newline at end of file diff --git a/home/dots/qtile/.direnv/flake-inputs/p58d2j0ac7zvja5jl14xzbc19fakjxh2-source b/home/dots/qtile/.direnv/flake-inputs/p58d2j0ac7zvja5jl14xzbc19fakjxh2-source new file mode 120000 index 0000000..5529c3b --- /dev/null +++ b/home/dots/qtile/.direnv/flake-inputs/p58d2j0ac7zvja5jl14xzbc19fakjxh2-source @@ -0,0 +1 @@ +/nix/store/p58d2j0ac7zvja5jl14xzbc19fakjxh2-source \ No newline at end of file diff --git a/home/dots/qtile/.direnv/flake-inputs/p7iz0r8gs6ppkhj83zjmwyd21k8b7v3y-source b/home/dots/qtile/.direnv/flake-inputs/p7iz0r8gs6ppkhj83zjmwyd21k8b7v3y-source new file mode 120000 index 0000000..859a0b1 --- /dev/null +++ b/home/dots/qtile/.direnv/flake-inputs/p7iz0r8gs6ppkhj83zjmwyd21k8b7v3y-source @@ -0,0 +1 @@ +/nix/store/p7iz0r8gs6ppkhj83zjmwyd21k8b7v3y-source \ No newline at end of file diff --git a/home/dots/qtile/.direnv/flake-inputs/xdms5kxx5gzkjfsfkaz3akvh0y8vqx1r-source b/home/dots/qtile/.direnv/flake-inputs/xdms5kxx5gzkjfsfkaz3akvh0y8vqx1r-source new file mode 120000 index 0000000..ec47f9f --- /dev/null +++ b/home/dots/qtile/.direnv/flake-inputs/xdms5kxx5gzkjfsfkaz3akvh0y8vqx1r-source @@ -0,0 +1 @@ +/nix/store/xdms5kxx5gzkjfsfkaz3akvh0y8vqx1r-source \ No newline at end of file diff --git a/home/dots/qtile/.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source b/home/dots/qtile/.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source new file mode 120000 index 0000000..f17959f --- /dev/null +++ b/home/dots/qtile/.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source @@ -0,0 +1 @@ +/nix/store/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source \ No newline at end of file diff --git a/home/dots/qtile/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa b/home/dots/qtile/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa new file mode 120000 index 0000000..090a0a1 --- /dev/null +++ b/home/dots/qtile/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa @@ -0,0 +1 @@ +/nix/store/ipg70lcppm6g4xs075am8pgihccvg3sr-nix-shell-env \ No newline at end of file diff --git a/home/dots/qtile/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc b/home/dots/qtile/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc new file mode 100644 index 0000000..6df07bb --- /dev/null +++ b/home/dots/qtile/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc @@ -0,0 +1,1960 @@ +unset shellHook +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +AR='ar' +export AR +AS='as' +export AS +BASH='/nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15/bin/bash' +CC='gcc' +export CC +CONFIG_SHELL='/nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15/bin/bash' +export CONFIG_SHELL +CXX='g++' +export CXX +DETERMINISTIC_BUILD='1' +export DETERMINISTIC_BUILD +GETTEXTDATADIRS='/nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/share/gettext:/nix/store/4vrk6zldfblhry2hi4p0jsy4j7nsvgaz-glib-2.76.2/share/gettext' +export GETTEXTDATADIRS +GSETTINGS_SCHEMAS_PATH='/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1/share/gsettings-schemas/pulseaudio-16.1' +export GSETTINGS_SCHEMAS_PATH +HOSTTYPE='x86_64' +HOST_PATH='/nix/store/d8hhsar0clw26fqd431g5q5y9fkkdzdn-python3.10-python-lsp-server-1.8.0/bin:/nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/bin:/nix/store/y94n52mp45d6mmn6jkrf288nlhlawflb-python3.10-mypy-1.4.1/bin:/nix/store/ndyvvxm68dm5shqlcinwb23b2vfksdq4-python3.10-black-23.9.1/bin:/nix/store/61v95mv2habbba1vs8j8l9k0rkbbvinw-python3.10-pygments-2.15.1/bin:/nix/store/jh03yisvsmiadccv61ssq0sv4cs1i46r-python3.10-pyupgrade-3.3.1/bin:/nix/store/2rw3p0d03mn1c02kyaqsi1gl3yhf6m77-python3.10-tokenize-rt-4.2.1/bin:/nix/store/dc1sy59c20fr053zp3nkhyg3lzlxcvxr-python3.10-coconut-3.0.3/bin:/nix/store/gn0mk48qwq13ymw1ha515ckbwnxg8yxq-python3.10-ipython-8.11.0/bin:/nix/store/06359h6dm3j9sv7ia1slg4kpdwjpb7aq-python3.10-jupyter_client-8.0.3/bin:/nix/store/hxszm8q323kc9f57c9k35yfsis2l7bdq-python3.10-jupyter-core-5.2.0/bin:/nix/store/3rx38hz57h40zzwrnhsa85nal2dlld7c-python3.10-watchdog-3.0.0/bin:/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/bin:/nix/store/086vzhw3zfinwd52sd856625jarpz5n4-python3.10-qtile-0.22.1/bin:/nix/store/314m0fk5sg3ac86hmkddd55yc889wzaq-cairo-1.16.0-dev/bin:/nix/store/i6lgx0z9casfkhzpfprqblc9m8fx20s2-freetype-2.13.0-dev/bin:/nix/store/bsca0mm8zc66gnibdvp5wwpfqh5c91xa-bzip2-1.0.8-bin/bin:/nix/store/1q9k4q7im5l9x581rzj42spp04xxkdk0-brotli-1.0.9/bin:/nix/store/r9isndk4r4vrrcg45zawd5prlgswxbgg-libpng-apng-1.6.39-dev/bin:/nix/store/xs5s7b308hv7lgqifpw9rfp6q25qqywq-fontconfig-2.14.0-bin/bin:/nix/store/c9dqnnhwdy64zqwpjkzk1s81zvz0infj-expat-2.5.0-dev/bin:/nix/store/dypzmzgjvyfs32gg8sj0rb6q79nf4390-glib-2.76.2-dev/bin:/nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/bin:/nix/store/plhal7yavzpaqwy7lr4fk90sx2mrwksk-glib-2.76.2-bin/bin:/nix/store/fgqa9ws8wwzp6ixjdixl9djnwdmcq4z4-python3.10-pywayland-0.4.15/bin:/nix/store/zphqjmf8n6f3bws7m1sy6nk5jhhp5l5i-attr-2.5.1-bin/bin:/nix/store/7bsbw8mg2w40qll05xq5h550m3lbpwy4-libcap-2.69/bin:/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1/bin:/nix/store/apn3p2b40xvirn7w740wv2gy330ppib5-coreutils-9.3/bin:/nix/store/xvhh3dzdqfaz78nhya1xildz2r38sy3s-findutils-4.9.0/bin:/nix/store/5ca2vh08sq8m20mv4z3wd1lij6wngym0-diffutils-3.10/bin:/nix/store/7snlgj0l0ys6lbcl5pyy8vwnmk26wh8x-gnused-4.9/bin:/nix/store/4hx292xs95frrd1hqwwfc2fpcz0niwgp-gnugrep-3.11/bin:/nix/store/47pwjwir6m3r0czs8zir5wzfvk7i5z6i-gawk-5.2.2/bin:/nix/store/d960k69nahxms669k9fl5rqhk0fkfzr5-gnutar-1.35/bin:/nix/store/7nfcdvrmdbpms7wcrjjsqwkv07lswhli-gzip-1.13/bin:/nix/store/dwxydys9kcz5l2901asxdvh3qdh981b1-bzip2-1.0.8-bin/bin:/nix/store/s806iqg5vwsnp434i5whcn1rf605y9s6-gnumake-4.4.1/bin:/nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15/bin:/nix/store/63m0np3ypqr741nn1a3xmg39p6f97ix1-patch-2.7.6/bin:/nix/store/b1rpgx8n48m6520gakkf9rsqf7kv7sra-xz-5.4.4-bin/bin:/nix/store/vzjkllqadhpmy9jbzqvq94xipvd5xk5f-file-5.45/bin' +export HOST_PATH +IFS=' +' +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +LD='ld' +export LD +LINENO='76' +MACHTYPE='x86_64-pc-linux-gnu' +NIX_BINTOOLS='/nix/store/5rykrx2q8y58zkkpd5968iaprb33xa9l-binutils-wrapper-2.40' +export NIX_BINTOOLS +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BUILD_CORES='16' +export NIX_BUILD_CORES +NIX_CC='/nix/store/75slks1wr3b3sxr5advswjzg9lvbv9jc-gcc-wrapper-12.3.0' +export NIX_CC +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_CFLAGS_COMPILE=' -frandom-seed=ipg70lcppm -isystem /nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/include -isystem /nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/include -isystem /nix/store/314m0fk5sg3ac86hmkddd55yc889wzaq-cairo-1.16.0-dev/include -isystem /nix/store/js1byxz3pj3ijnrv1jy5ffiljdqjwvbj-fontconfig-2.14.0-dev/include -isystem /nix/store/i6lgx0z9casfkhzpfprqblc9m8fx20s2-freetype-2.13.0-dev/include -isystem /nix/store/03grn1z9pl9m8702wkshj5pwnvknazim-zlib-1.2.13-dev/include -isystem /nix/store/5kpzvx2j4pdxmyd7w2pm53jv58smdn6m-bzip2-1.0.8-dev/include -isystem /nix/store/mlvv3yjci2vjf3b1nqf03zjh13haclk0-brotli-1.0.9-dev/include -isystem /nix/store/r9isndk4r4vrrcg45zawd5prlgswxbgg-libpng-apng-1.6.39-dev/include -isystem /nix/store/c9dqnnhwdy64zqwpjkzk1s81zvz0infj-expat-2.5.0-dev/include -isystem /nix/store/izrqpvgiiji0i1xrk719vghaypy5zh6l-pixman-0.42.2/include -isystem /nix/store/ig0cmlw59834hpmk0v6azipl0ss7lxcb-libXext-1.3.4-dev/include -isystem /nix/store/245c0wsqvmkz7wrcbcw2zwcjvgd42v4b-xorgproto-2021.5/include -isystem /nix/store/q0fh1fgyyj43x8nfjn2fyxwr6xki9pf0-libXau-1.0.9-dev/include -isystem /nix/store/afzk1lvv5306hnsbarq1ww9j655060vq-libXrender-0.9.10-dev/include -isystem /nix/store/kp13ab0k35fq4ffbkygip2mxm30lfwjb-libX11-1.8.6-dev/include -isystem /nix/store/wmhp81hly5bghkayfhp7r692qq4qnjnc-libxcb-1.14-dev/include -isystem /nix/store/cbqfil2vgbp0s62qxhcdyvlyw4x8zay4-xcb-util-0.4.1-dev/include -isystem /nix/store/dypzmzgjvyfs32gg8sj0rb6q79nf4390-glib-2.76.2-dev/include -isystem /nix/store/798wjzmkdxczl9jlvbsi95f0vfhd33fq-libffi-3.4.4-dev/include -isystem /nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/include -isystem /nix/store/wd2678n4jhz1clp28d2niyliv4smjhbm-glibc-iconv-2.37/include -isystem /nix/store/chfsxwdy3ai6b3g8pcr95rsfw41n15zj-libGL-1.6.0-dev/include -isystem /nix/store/6dyhz7aj4cx3c9p73qvnn6gay1j4a48m-libglvnd-1.6.0-dev/include -isystem /nix/store/yfk0yyr55phmv2cpdp1334f0qpi1jlxb-python3.10-dbus-python-1.2.18-dev/include -isystem /nix/store/y4r0m01bydixyssq7jl40x7yzvvzvkqa-python3.10-pygobject-3.44.1-dev/include -isystem /nix/store/zx9bss9ql02r2rqx30v0qgszadzjx40s-python3.10-pycairo-1.23.0/include -isystem /nix/store/1h034png2n5ifzbxdkr894x4dkc958y5-pulseaudio-16.1-dev/include -isystem /nix/store/vwq5sf5gvr4bins0a960lrwr83a7l65a-libcap-2.69-dev/include -isystem /nix/store/bb586h9sinhwsmcylm9h9f4md6hjmlxv-attr-2.5.1-dev/include -isystem /nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/include -isystem /nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/include -isystem /nix/store/314m0fk5sg3ac86hmkddd55yc889wzaq-cairo-1.16.0-dev/include -isystem /nix/store/js1byxz3pj3ijnrv1jy5ffiljdqjwvbj-fontconfig-2.14.0-dev/include -isystem /nix/store/i6lgx0z9casfkhzpfprqblc9m8fx20s2-freetype-2.13.0-dev/include -isystem /nix/store/03grn1z9pl9m8702wkshj5pwnvknazim-zlib-1.2.13-dev/include -isystem /nix/store/5kpzvx2j4pdxmyd7w2pm53jv58smdn6m-bzip2-1.0.8-dev/include -isystem /nix/store/mlvv3yjci2vjf3b1nqf03zjh13haclk0-brotli-1.0.9-dev/include -isystem /nix/store/r9isndk4r4vrrcg45zawd5prlgswxbgg-libpng-apng-1.6.39-dev/include -isystem /nix/store/c9dqnnhwdy64zqwpjkzk1s81zvz0infj-expat-2.5.0-dev/include -isystem /nix/store/izrqpvgiiji0i1xrk719vghaypy5zh6l-pixman-0.42.2/include -isystem /nix/store/ig0cmlw59834hpmk0v6azipl0ss7lxcb-libXext-1.3.4-dev/include -isystem /nix/store/245c0wsqvmkz7wrcbcw2zwcjvgd42v4b-xorgproto-2021.5/include -isystem /nix/store/q0fh1fgyyj43x8nfjn2fyxwr6xki9pf0-libXau-1.0.9-dev/include -isystem /nix/store/afzk1lvv5306hnsbarq1ww9j655060vq-libXrender-0.9.10-dev/include -isystem /nix/store/kp13ab0k35fq4ffbkygip2mxm30lfwjb-libX11-1.8.6-dev/include -isystem /nix/store/wmhp81hly5bghkayfhp7r692qq4qnjnc-libxcb-1.14-dev/include -isystem /nix/store/cbqfil2vgbp0s62qxhcdyvlyw4x8zay4-xcb-util-0.4.1-dev/include -isystem /nix/store/dypzmzgjvyfs32gg8sj0rb6q79nf4390-glib-2.76.2-dev/include -isystem /nix/store/798wjzmkdxczl9jlvbsi95f0vfhd33fq-libffi-3.4.4-dev/include -isystem /nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/include -isystem /nix/store/wd2678n4jhz1clp28d2niyliv4smjhbm-glibc-iconv-2.37/include -isystem /nix/store/chfsxwdy3ai6b3g8pcr95rsfw41n15zj-libGL-1.6.0-dev/include -isystem /nix/store/6dyhz7aj4cx3c9p73qvnn6gay1j4a48m-libglvnd-1.6.0-dev/include -isystem /nix/store/yfk0yyr55phmv2cpdp1334f0qpi1jlxb-python3.10-dbus-python-1.2.18-dev/include -isystem /nix/store/y4r0m01bydixyssq7jl40x7yzvvzvkqa-python3.10-pygobject-3.44.1-dev/include -isystem /nix/store/zx9bss9ql02r2rqx30v0qgszadzjx40s-python3.10-pycairo-1.23.0/include -isystem /nix/store/1h034png2n5ifzbxdkr894x4dkc958y5-pulseaudio-16.1-dev/include -isystem /nix/store/vwq5sf5gvr4bins0a960lrwr83a7l65a-libcap-2.69-dev/include -isystem /nix/store/bb586h9sinhwsmcylm9h9f4md6hjmlxv-attr-2.5.1-dev/include' +export NIX_CFLAGS_COMPILE +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +NIX_HARDENING_ENABLE='fortify fortify3 stackprotector pic strictoverflow format relro bindnow' +export NIX_HARDENING_ENABLE +NIX_LDFLAGS='-rpath /home/bolt/.nix/home/dots/qtile/outputs/out/lib -L/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/lib -L/nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/lib -L/nix/store/69jpyha5zbll6ppqzhbihhp51lac1hrp-zlib-1.2.13/lib -L/nix/store/v0iir4ksr0vb1px00yd80hip9yy5p4hk-bzip2-1.0.8/lib -L/nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib/lib -L/nix/store/23rqq5igphh0li64kzxw34hr6l713hbv-libpng-apng-1.6.39/lib -L/nix/store/xxl2wa5b4pq7mnw4jmkmz5vl5fnvbz6h-freetype-2.13.0/lib -L/nix/store/m17k3kbyrpbr14ai23gxfgzbqh6dnx03-fontconfig-2.14.0-lib/lib -L/nix/store/m0inyjcw7p1h9677mv9gah92ksz1mg03-expat-2.5.0/lib -L/nix/store/izrqpvgiiji0i1xrk719vghaypy5zh6l-pixman-0.42.2/lib -L/nix/store/n1iy4vr7ikx2h9pi1ikmh61ayxl8i3g9-libXau-1.0.9/lib -L/nix/store/4zkhmhn9krccx97d2ad0z7fna278ksiv-libXext-1.3.4/lib -L/nix/store/jyb9nwgpc8y6k3z4x5nn6bh3r495mw26-libxcb-1.14/lib -L/nix/store/z5dlm8l0yzh4d3l2370lb1m2hfmcdfiy-libX11-1.8.6/lib -L/nix/store/pcj0rysjwcshrw9nwgvii19123a0cs1p-libXrender-0.9.10/lib -L/nix/store/srv1z1igfn2km62gjg88rk39y066mxbz-xcb-util-0.4.1/lib -L/nix/store/4a6iv3pl9npf4iwm72dskwl89hckdcdj-libffi-3.4.4/lib -L/nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/lib -L/nix/store/4vrk6zldfblhry2hi4p0jsy4j7nsvgaz-glib-2.76.2/lib -L/nix/store/xfgkyzqz46jxdkrfjz2ksv9cyvaqcx8v-libGL-1.6.0/lib -L/nix/store/g1kflwfc5ym6xi59c16qscpr1ibhnyf1-libglvnd-1.6.0/lib -L/nix/store/6xlhgbmp2dz86d1zdxmvl34291is9pns-cairo-1.16.0/lib -L/nix/store/whkpnh2db07rn1b7hcvfjfwag8imygvp-attr-2.5.1/lib -L/nix/store/zr9dzm8zrxdb40lbmy56bfgzp4qnd64f-libcap-2.69-lib/lib -L/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1/lib -L/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/lib -L/nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/lib -L/nix/store/69jpyha5zbll6ppqzhbihhp51lac1hrp-zlib-1.2.13/lib -L/nix/store/v0iir4ksr0vb1px00yd80hip9yy5p4hk-bzip2-1.0.8/lib -L/nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib/lib -L/nix/store/23rqq5igphh0li64kzxw34hr6l713hbv-libpng-apng-1.6.39/lib -L/nix/store/xxl2wa5b4pq7mnw4jmkmz5vl5fnvbz6h-freetype-2.13.0/lib -L/nix/store/m17k3kbyrpbr14ai23gxfgzbqh6dnx03-fontconfig-2.14.0-lib/lib -L/nix/store/m0inyjcw7p1h9677mv9gah92ksz1mg03-expat-2.5.0/lib -L/nix/store/izrqpvgiiji0i1xrk719vghaypy5zh6l-pixman-0.42.2/lib -L/nix/store/n1iy4vr7ikx2h9pi1ikmh61ayxl8i3g9-libXau-1.0.9/lib -L/nix/store/4zkhmhn9krccx97d2ad0z7fna278ksiv-libXext-1.3.4/lib -L/nix/store/jyb9nwgpc8y6k3z4x5nn6bh3r495mw26-libxcb-1.14/lib -L/nix/store/z5dlm8l0yzh4d3l2370lb1m2hfmcdfiy-libX11-1.8.6/lib -L/nix/store/pcj0rysjwcshrw9nwgvii19123a0cs1p-libXrender-0.9.10/lib -L/nix/store/srv1z1igfn2km62gjg88rk39y066mxbz-xcb-util-0.4.1/lib -L/nix/store/4a6iv3pl9npf4iwm72dskwl89hckdcdj-libffi-3.4.4/lib -L/nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/lib -L/nix/store/4vrk6zldfblhry2hi4p0jsy4j7nsvgaz-glib-2.76.2/lib -L/nix/store/xfgkyzqz46jxdkrfjz2ksv9cyvaqcx8v-libGL-1.6.0/lib -L/nix/store/g1kflwfc5ym6xi59c16qscpr1ibhnyf1-libglvnd-1.6.0/lib -L/nix/store/6xlhgbmp2dz86d1zdxmvl34291is9pns-cairo-1.16.0/lib -L/nix/store/whkpnh2db07rn1b7hcvfjfwag8imygvp-attr-2.5.1/lib -L/nix/store/zr9dzm8zrxdb40lbmy56bfgzp4qnd64f-libcap-2.69-lib/lib -L/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1/lib' +export NIX_LDFLAGS +NIX_NO_SELF_RPATH='1' +NIX_STORE='/nix/store' +export NIX_STORE +NM='nm' +export NM +OBJCOPY='objcopy' +export OBJCOPY +OBJDUMP='objdump' +export OBJDUMP +OLDPWD='' +export OLDPWD +OPTERR='1' +OSTYPE='linux-gnu' +PATH='/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/bin:/nix/store/v553h3r3f0xqxpvb9pgzx006qrmmv12m-patchelf-0.15.0/bin:/nix/store/75slks1wr3b3sxr5advswjzg9lvbv9jc-gcc-wrapper-12.3.0/bin:/nix/store/n8dryz4xf7ln028j37zapgzg4j47p743-gcc-12.3.0/bin:/nix/store/3xdipdscl5v1ghhkwmc7d9ag4qigmvyc-glibc-2.37-8-bin/bin:/nix/store/apn3p2b40xvirn7w740wv2gy330ppib5-coreutils-9.3/bin:/nix/store/5rykrx2q8y58zkkpd5968iaprb33xa9l-binutils-wrapper-2.40/bin:/nix/store/rhhll3vwpj38ri72ahrrrvcbkhz4fhh6-binutils-2.40/bin:/nix/store/d8hhsar0clw26fqd431g5q5y9fkkdzdn-python3.10-python-lsp-server-1.8.0/bin:/nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/bin:/nix/store/y94n52mp45d6mmn6jkrf288nlhlawflb-python3.10-mypy-1.4.1/bin:/nix/store/ndyvvxm68dm5shqlcinwb23b2vfksdq4-python3.10-black-23.9.1/bin:/nix/store/61v95mv2habbba1vs8j8l9k0rkbbvinw-python3.10-pygments-2.15.1/bin:/nix/store/jh03yisvsmiadccv61ssq0sv4cs1i46r-python3.10-pyupgrade-3.3.1/bin:/nix/store/2rw3p0d03mn1c02kyaqsi1gl3yhf6m77-python3.10-tokenize-rt-4.2.1/bin:/nix/store/dc1sy59c20fr053zp3nkhyg3lzlxcvxr-python3.10-coconut-3.0.3/bin:/nix/store/gn0mk48qwq13ymw1ha515ckbwnxg8yxq-python3.10-ipython-8.11.0/bin:/nix/store/06359h6dm3j9sv7ia1slg4kpdwjpb7aq-python3.10-jupyter_client-8.0.3/bin:/nix/store/hxszm8q323kc9f57c9k35yfsis2l7bdq-python3.10-jupyter-core-5.2.0/bin:/nix/store/3rx38hz57h40zzwrnhsa85nal2dlld7c-python3.10-watchdog-3.0.0/bin:/nix/store/086vzhw3zfinwd52sd856625jarpz5n4-python3.10-qtile-0.22.1/bin:/nix/store/314m0fk5sg3ac86hmkddd55yc889wzaq-cairo-1.16.0-dev/bin:/nix/store/i6lgx0z9casfkhzpfprqblc9m8fx20s2-freetype-2.13.0-dev/bin:/nix/store/bsca0mm8zc66gnibdvp5wwpfqh5c91xa-bzip2-1.0.8-bin/bin:/nix/store/1q9k4q7im5l9x581rzj42spp04xxkdk0-brotli-1.0.9/bin:/nix/store/r9isndk4r4vrrcg45zawd5prlgswxbgg-libpng-apng-1.6.39-dev/bin:/nix/store/xs5s7b308hv7lgqifpw9rfp6q25qqywq-fontconfig-2.14.0-bin/bin:/nix/store/c9dqnnhwdy64zqwpjkzk1s81zvz0infj-expat-2.5.0-dev/bin:/nix/store/dypzmzgjvyfs32gg8sj0rb6q79nf4390-glib-2.76.2-dev/bin:/nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21/bin:/nix/store/plhal7yavzpaqwy7lr4fk90sx2mrwksk-glib-2.76.2-bin/bin:/nix/store/fgqa9ws8wwzp6ixjdixl9djnwdmcq4z4-python3.10-pywayland-0.4.15/bin:/nix/store/zphqjmf8n6f3bws7m1sy6nk5jhhp5l5i-attr-2.5.1-bin/bin:/nix/store/7bsbw8mg2w40qll05xq5h550m3lbpwy4-libcap-2.69/bin:/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1/bin:/nix/store/apn3p2b40xvirn7w740wv2gy330ppib5-coreutils-9.3/bin:/nix/store/xvhh3dzdqfaz78nhya1xildz2r38sy3s-findutils-4.9.0/bin:/nix/store/5ca2vh08sq8m20mv4z3wd1lij6wngym0-diffutils-3.10/bin:/nix/store/7snlgj0l0ys6lbcl5pyy8vwnmk26wh8x-gnused-4.9/bin:/nix/store/4hx292xs95frrd1hqwwfc2fpcz0niwgp-gnugrep-3.11/bin:/nix/store/47pwjwir6m3r0czs8zir5wzfvk7i5z6i-gawk-5.2.2/bin:/nix/store/d960k69nahxms669k9fl5rqhk0fkfzr5-gnutar-1.35/bin:/nix/store/7nfcdvrmdbpms7wcrjjsqwkv07lswhli-gzip-1.13/bin:/nix/store/dwxydys9kcz5l2901asxdvh3qdh981b1-bzip2-1.0.8-bin/bin:/nix/store/s806iqg5vwsnp434i5whcn1rf605y9s6-gnumake-4.4.1/bin:/nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15/bin:/nix/store/63m0np3ypqr741nn1a3xmg39p6f97ix1-patch-2.7.6/bin:/nix/store/b1rpgx8n48m6520gakkf9rsqf7kv7sra-xz-5.4.4-bin/bin:/nix/store/vzjkllqadhpmy9jbzqvq94xipvd5xk5f-file-5.45/bin' +export PATH +PS4='+ ' +PYTHONHASHSEED='0' +export PYTHONHASHSEED +PYTHONNOUSERSITE='1' +export PYTHONNOUSERSITE +PYTHONPATH='/nix/store/h9j9ff76qk97wi9bg94yx5725bf21dw5-python3.10-cffi-1.15.1/lib/python3.10/site-packages:/nix/store/vfbsns2ryx3lr09ix3f8d0s46qhmv5ky-python3.10-pycparser-2.21/lib/python3.10/site-packages:/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/lib/python3.10/site-packages:/nix/store/d8hhsar0clw26fqd431g5q5y9fkkdzdn-python3.10-python-lsp-server-1.8.0/lib/python3.10/site-packages:/nix/store/hgn4m95nn9s5f7qv3ar2227f00yryrhi-python3.10-docstring-to-markdown-0.12/lib/python3.10/site-packages:/nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12/lib/python3.10/site-packages:/nix/store/5jdzafg2c2a5791njixfzxd5flgz524l-python3.10-jedi-0.19.0/lib/python3.10/site-packages:/nix/store/paijr7da98rhi5crnclh859nz4dj6zil-python3.10-parso-0.8.3/lib/python3.10/site-packages:/nix/store/7m8bcdlivqw78qi5c4s38nqn5ngw78m8-python3.10-pluggy-1.2.0/lib/python3.10/site-packages:/nix/store/9dkbjr2vsj7lmcrhhgyqm62ql5j5wd9n-python3.10-python-lsp-jsonrpc-1.1.1/lib/python3.10/site-packages:/nix/store/vn6mk9jkxphggwxkxxsx0jf9qzx3czdl-python3.10-ujson-5.7.0/lib/python3.10/site-packages:/nix/store/4mm6znbhkrxm02q9gda7xwfqj7dnc53r-python3.10-setuptools-68.0.0/lib/python3.10/site-packages:/nix/store/y94n52mp45d6mmn6jkrf288nlhlawflb-python3.10-mypy-1.4.1/lib/python3.10/site-packages:/nix/store/61vfyff4g2hch0jps23svl03kzhhjhim-python3.10-mypy-extensions-1.0.0/lib/python3.10/site-packages:/nix/store/ivgyvzz1qlw0vjmhz956wg2mbwg5n3w2-python3.10-typing-extensions-4.7.1/lib/python3.10/site-packages:/nix/store/9kqzmsyjdh3kkv42ykhpmr0g2vqzvrmz-python3.10-tomli-2.0.1/lib/python3.10/site-packages:/nix/store/fc0wxwsp7bs2brivkhaixr7xf15xal89-python3.10-pylsp-mypy-0.6.7/lib/python3.10/site-packages:/nix/store/ndyvvxm68dm5shqlcinwb23b2vfksdq4-python3.10-black-23.9.1/lib/python3.10/site-packages:/nix/store/6di1gnrlnl2v26pxg6xh1k70hrm7m76p-python3.10-click-8.1.6/lib/python3.10/site-packages:/nix/store/l8kpyzpagrampic9783mrh5y0xq6zxz6-python3.10-packaging-23.1/lib/python3.10/site-packages:/nix/store/jkjhvhfy088xnrpl0yird8qcj56zknlk-python3.10-pathspec-0.11.0/lib/python3.10/site-packages:/nix/store/3pw73kd67pnawf60z9r5iyj82zlhk8lk-python3.10-platformdirs-3.9.1/lib/python3.10/site-packages:/nix/store/pb3h1yzyly2gyd2yqhryw1ksi2b17jmx-python3.10-pydantic-1.10.9/lib/python3.10/site-packages:/nix/store/pi6jgxr3psvw6p76hy8n8723afc5dyzs-python3.10-devtools-0.11.0/lib/python3.10/site-packages:/nix/store/2v8cz8hy7nm05261hgnz8631ra9gwfy5-python3.10-asttokens-2.2.1/lib/python3.10/site-packages:/nix/store/phnsx4m49ymyyyfcs36lgjkprkbvnhi5-python3.10-six-1.16.0/lib/python3.10/site-packages:/nix/store/glxjkmmqg5y2y9g2qvivwijqls0dysr9-python3.10-executing-1.2.0/lib/python3.10/site-packages:/nix/store/61v95mv2habbba1vs8j8l9k0rkbbvinw-python3.10-pygments-2.15.1/lib/python3.10/site-packages:/nix/store/jh03yisvsmiadccv61ssq0sv4cs1i46r-python3.10-pyupgrade-3.3.1/lib/python3.10/site-packages:/nix/store/2rw3p0d03mn1c02kyaqsi1gl3yhf6m77-python3.10-tokenize-rt-4.2.1/lib/python3.10/site-packages:/nix/store/dc1sy59c20fr053zp3nkhyg3lzlxcvxr-python3.10-coconut-3.0.3/lib/python3.10/site-packages:/nix/store/sfwi1vikc3hdzss2j41rcprb4y0iqxn8-python3.10-cpyparsing-2.4.7.2.1.2/lib/python3.10/site-packages:/nix/store/jr5skh0f01gb47bs8h1rskq3fq4mplna-python3.10-ipykernel-6.21.2/lib/python3.10/site-packages:/nix/store/krqjfpz0pk2hwf0l9njipymr5y6k46js-python3.10-comm-0.1.3/lib/python3.10/site-packages:/nix/store/kf5y20ah87hvhy96pnj6bph71dc09jii-python3.10-traitlets-5.9.0/lib/python3.10/site-packages:/nix/store/gn0mk48qwq13ymw1ha515ckbwnxg8yxq-python3.10-ipython-8.11.0/lib/python3.10/site-packages:/nix/store/bpxafz2v0mn9m3pc6m5v965i6nsw4p9w-python3.10-backcall-0.2.0/lib/python3.10/site-packages:/nix/store/6xn10jn52f65f4ig53njgc2615c0zvkz-python3.10-decorator-5.1.1/lib/python3.10/site-packages:/nix/store/385sa2wxq9h1ln2005jw8qa5r0a98pn5-python3.10-matplotlib-inline-0.1.6/lib/python3.10/site-packages:/nix/store/ailh4fksg9gzpqnkc07nc8jsjfqsj83n-python3.10-pexpect-4.8.0/lib/python3.10/site-packages:/nix/store/pspcn13kdlf4p5i6f2vnsb70qwaq1b2a-python3.10-ptyprocess-0.7.0/lib/python3.10/site-packages:/nix/store/ly9klic8vilmrvgcbgm7d8f0rs609xfi-python3.10-pickleshare-0.7.5/lib/python3.10/site-packages:/nix/store/1a7z4b124bfalvp96946k90xxhfyh207-python3.10-path-16.6.0/lib/python3.10/site-packages:/nix/store/qpcm11z5mkydikhafvi4sc0yvyjpzwri-python3.10-prompt-toolkit-3.0.38/lib/python3.10/site-packages:/nix/store/sdhx45p0f545xp0bp7wmh5cdlk6mx3p8-python3.10-wcwidth-0.2.6/lib/python3.10/site-packages:/nix/store/wck1vsd3q6jlidzr6ddw3h5wlak76fqj-python3.10-stack-data-0.2.0/lib/python3.10/site-packages:/nix/store/90mmc1f4ffq3pqb445cp8fkmk2q1fycy-python3.10-pure_eval-0.2.2/lib/python3.10/site-packages:/nix/store/8yip99b5f1fpg1199wf1l6g534mhjzc2-python3.10-toml-0.10.2/lib/python3.10/site-packages:/nix/store/06359h6dm3j9sv7ia1slg4kpdwjpb7aq-python3.10-jupyter_client-8.0.3/lib/python3.10/site-packages:/nix/store/53a0bw0zfvi36pqycnpyqzc4k0xsgjk9-python3.10-entrypoints-0.4/lib/python3.10/site-packages:/nix/store/hxszm8q323kc9f57c9k35yfsis2l7bdq-python3.10-jupyter-core-5.2.0/lib/python3.10/site-packages:/nix/store/adykgq19hjgfi4g28i2ndw5mnv4ga6qn-python3.10-nest_asyncio-1.5.6/lib/python3.10/site-packages:/nix/store/3kyj27dcm3wiaiyiwm7d9x0yjp7sk4k9-python3.10-python-dateutil-2.8.2/lib/python3.10/site-packages:/nix/store/sd5kkxh84l0aby9yf2nnj9xhk7k71n1r-python3.10-pyzmq-24.0.1/lib/python3.10/site-packages:/nix/store/9d7v7jl67m3az17apc1k9fjp6zn60r8p-python3.10-py-1.11.0/lib/python3.10/site-packages:/nix/store/xwkvp67nn881al86q3lh41kf7psb92i2-python3.10-tornado-6.3.3/lib/python3.10/site-packages:/nix/store/pixkn388xw5dbzwkd4lg3i2h4g471z1c-python3.10-psutil-5.9.5/lib/python3.10/site-packages:/nix/store/3rx38hz57h40zzwrnhsa85nal2dlld7c-python3.10-watchdog-3.0.0/lib/python3.10/site-packages:/nix/store/q730a89ri32n5xf9mll3v8nlgwksrra7-python3.10-qtile-extras-0.22.1/lib/python3.10/site-packages:/nix/store/086vzhw3zfinwd52sd856625jarpz5n4-python3.10-qtile-0.22.1/lib/python3.10/site-packages:/nix/store/bll6wzbsywcbx46vr83igac7m265202z-python3.10-xcffib-1.2.0/lib/python3.10/site-packages:/nix/store/mn1mbnfj0pvzxn87by4lc47fpj0k40nb-python3.10-cairocffi-1.4.0/lib/python3.10/site-packages:/nix/store/1njqv0iwxwri2hg5am2p553y99yg3430-python3.10-python-dateutil-2.8.2/lib/python3.10/site-packages:/nix/store/9szkk2hqxfm7z7r7yywzqjia6hnlahxg-python3.10-six-1.16.0/lib/python3.10/site-packages:/nix/store/6hyv2yddaa60ipkkb3szmlz87pajzn8s-python3.10-dbus-python-1.2.18/lib/python3.10/site-packages:/nix/store/y2p8y7cys7kbi6h1cq4dishd82rlryw9-python3.10-dbus-next-0.2.3/lib/python3.10/site-packages:/nix/store/p0024kg9ndcmwm8zm4bfn19k957jrmis-python3.10-python-mpd2-3.1.0/lib/python3.10/site-packages:/nix/store/nll88g5mx01v76qn0pv72caw4r9q39kq-python3.10-psutil-5.9.5/lib/python3.10/site-packages:/nix/store/gkvskd3g0kbjlr2amcmpgv21rz22p816-python3.10-pyxdg-0.28/lib/python3.10/site-packages:/nix/store/zx9bss9ql02r2rqx30v0qgszadzjx40s-python3.10-pycairo-1.23.0/lib/python3.10/site-packages:/nix/store/5di6lhp9vf2629iz4qg1i7y0avp8xrd6-python3.10-pygobject-3.44.1/lib/python3.10/site-packages:/nix/store/fgqa9ws8wwzp6ixjdixl9djnwdmcq4z4-python3.10-pywayland-0.4.15/lib/python3.10/site-packages:/nix/store/qi1svz5qg7ylaziamscrwkp5jd5rxvc8-python3.10-pywlroots-0.15.24/lib/python3.10/site-packages:/nix/store/05x7ard0a47sd3a78pdvspa607fr6g65-python3.10-xkbcommon-0.8/lib/python3.10/site-packages' +export PYTHONPATH +RANLIB='ranlib' +export RANLIB +READELF='readelf' +export READELF +SIZE='size' +export SIZE +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +STRINGS='strings' +export STRINGS +STRIP='strip' +export STRIP +XDG_DATA_DIRS='/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12/share:/nix/store/v553h3r3f0xqxpvb9pgzx006qrmmv12m-patchelf-0.15.0/share' +export XDG_DATA_DIRS +_PYTHON_HOST_PLATFORM='linux-x86_64' +export _PYTHON_HOST_PLATFORM +_PYTHON_SYSCONFIGDATA_NAME='_sysconfigdata__linux_x86_64-linux-gnu' +export _PYTHON_SYSCONFIGDATA_NAME +__structuredAttrs='' +export __structuredAttrs +buildInputs='/nix/store/d8hhsar0clw26fqd431g5q5y9fkkdzdn-python3.10-python-lsp-server-1.8.0 /nix/store/y94n52mp45d6mmn6jkrf288nlhlawflb-python3.10-mypy-1.4.1 /nix/store/fc0wxwsp7bs2brivkhaixr7xf15xal89-python3.10-pylsp-mypy-0.6.7 /nix/store/ndyvvxm68dm5shqlcinwb23b2vfksdq4-python3.10-black-23.9.1 /nix/store/pb3h1yzyly2gyd2yqhryw1ksi2b17jmx-python3.10-pydantic-1.10.9 /nix/store/dc1sy59c20fr053zp3nkhyg3lzlxcvxr-python3.10-coconut-3.0.3 /nix/store/q730a89ri32n5xf9mll3v8nlgwksrra7-python3.10-qtile-extras-0.22.1 /nix/store/086vzhw3zfinwd52sd856625jarpz5n4-python3.10-qtile-0.22.1' +export buildInputs +buildPhase='{ echo "------------------------------------------------------------"; + echo " WARNING: the existence of this path is not guaranteed."; + echo " It is an internal implementation detail for pkgs.mkShell."; + echo "------------------------------------------------------------"; + echo; + # Record all build inputs as runtime dependencies + export; +} >> "$out" +' +export buildPhase +builder='/nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15/bin/bash' +export builder +cmakeFlags='' +export cmakeFlags +configureFlags='' +export configureFlags +defaultBuildInputs='' +defaultNativeBuildInputs='/nix/store/v553h3r3f0xqxpvb9pgzx006qrmmv12m-patchelf-0.15.0 /nix/store/fdgkgam7dgivvg4dzc12k3mlyx6sxrq5-update-autotools-gnu-config-scripts-hook /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh /nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh /nix/store/75slks1wr3b3sxr5advswjzg9lvbv9jc-gcc-wrapper-12.3.0' +depsBuildBuild='' +export depsBuildBuild +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +depsBuildTarget='' +export depsBuildTarget +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +depsHostHost='' +export depsHostHost +depsHostHostPropagated='' +export depsHostHostPropagated +depsTargetTarget='' +export depsTargetTarget +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +doCheck='' +export doCheck +doInstallCheck='' +export doInstallCheck +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +declare -a envBuildBuildHooks=('addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' ) +declare -a envBuildHostHooks=('addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' ) +declare -a envBuildTargetHooks=('addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' ) +declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' 'gettextDataDirsHook' ) +declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'addPythonPath' 'sysconfigdataHook' 'addPythonPath' 'sysconfigdataHook' 'gettextDataDirsHook' ) +declare -a envTargetTargetHooks=('make_glib_find_gsettings_schemas' ) +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +guess='16' +initialPath='/nix/store/apn3p2b40xvirn7w740wv2gy330ppib5-coreutils-9.3 /nix/store/xvhh3dzdqfaz78nhya1xildz2r38sy3s-findutils-4.9.0 /nix/store/5ca2vh08sq8m20mv4z3wd1lij6wngym0-diffutils-3.10 /nix/store/7snlgj0l0ys6lbcl5pyy8vwnmk26wh8x-gnused-4.9 /nix/store/4hx292xs95frrd1hqwwfc2fpcz0niwgp-gnugrep-3.11 /nix/store/47pwjwir6m3r0czs8zir5wzfvk7i5z6i-gawk-5.2.2 /nix/store/d960k69nahxms669k9fl5rqhk0fkfzr5-gnutar-1.35 /nix/store/7nfcdvrmdbpms7wcrjjsqwkv07lswhli-gzip-1.13 /nix/store/dwxydys9kcz5l2901asxdvh3qdh981b1-bzip2-1.0.8-bin /nix/store/s806iqg5vwsnp434i5whcn1rf605y9s6-gnumake-4.4.1 /nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15 /nix/store/63m0np3ypqr741nn1a3xmg39p6f97ix1-patch-2.7.6 /nix/store/b1rpgx8n48m6520gakkf9rsqf7kv7sra-xz-5.4.4-bin /nix/store/vzjkllqadhpmy9jbzqvq94xipvd5xk5f-file-5.45' +maybe_dir='/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1/share/gsettings-schemas/pulseaudio-16.1' +mesonFlags='' +export mesonFlags +name='nix-shell-env' +export name +nativeBuildInputs='' +export nativeBuildInputs +out='/home/bolt/.nix/home/dots/qtile/outputs/out' +export out +outputBin='out' +outputDev='out' +outputDevdoc='REMOVE' +outputDevman='out' +outputDoc='out' +outputInclude='out' +outputInfo='out' +outputLib='out' +outputMan='out' +outputs='out' +export outputs +patches='' +export patches +phases='buildPhase' +export phases +pkg='/nix/store/75slks1wr3b3sxr5advswjzg9lvbv9jc-gcc-wrapper-12.3.0' +declare -a pkgsBuildBuild=() +declare -a pkgsBuildHost=('/nix/store/h9j9ff76qk97wi9bg94yx5725bf21dw5-python3.10-cffi-1.15.1' '/nix/store/vfbsns2ryx3lr09ix3f8d0s46qhmv5ky-python3.10-pycparser-2.21' '/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12' '/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12' '/nix/store/h9j9ff76qk97wi9bg94yx5725bf21dw5-python3.10-cffi-1.15.1' '/nix/store/h9j9ff76qk97wi9bg94yx5725bf21dw5-python3.10-cffi-1.15.1' '/nix/store/v553h3r3f0xqxpvb9pgzx006qrmmv12m-patchelf-0.15.0' '/nix/store/fdgkgam7dgivvg4dzc12k3mlyx6sxrq5-update-autotools-gnu-config-scripts-hook' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh' '/nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh' '/nix/store/75slks1wr3b3sxr5advswjzg9lvbv9jc-gcc-wrapper-12.3.0' '/nix/store/5rykrx2q8y58zkkpd5968iaprb33xa9l-binutils-wrapper-2.40' ) +declare -a pkgsBuildTarget=() +declare -a pkgsHostHost=() +declare -a pkgsHostTarget=('/nix/store/d8hhsar0clw26fqd431g5q5y9fkkdzdn-python3.10-python-lsp-server-1.8.0' '/nix/store/hgn4m95nn9s5f7qv3ar2227f00yryrhi-python3.10-docstring-to-markdown-0.12' '/nix/store/lx8vhp4fxclp494svlfis3sb2g8z4l9h-python3-3.10.12' '/nix/store/5jdzafg2c2a5791njixfzxd5flgz524l-python3.10-jedi-0.19.0' '/nix/store/paijr7da98rhi5crnclh859nz4dj6zil-python3.10-parso-0.8.3' '/nix/store/7m8bcdlivqw78qi5c4s38nqn5ngw78m8-python3.10-pluggy-1.2.0' '/nix/store/9dkbjr2vsj7lmcrhhgyqm62ql5j5wd9n-python3.10-python-lsp-jsonrpc-1.1.1' '/nix/store/vn6mk9jkxphggwxkxxsx0jf9qzx3czdl-python3.10-ujson-5.7.0' '/nix/store/4mm6znbhkrxm02q9gda7xwfqj7dnc53r-python3.10-setuptools-68.0.0' '/nix/store/y94n52mp45d6mmn6jkrf288nlhlawflb-python3.10-mypy-1.4.1' '/nix/store/61vfyff4g2hch0jps23svl03kzhhjhim-python3.10-mypy-extensions-1.0.0' '/nix/store/ivgyvzz1qlw0vjmhz956wg2mbwg5n3w2-python3.10-typing-extensions-4.7.1' '/nix/store/9kqzmsyjdh3kkv42ykhpmr0g2vqzvrmz-python3.10-tomli-2.0.1' '/nix/store/fc0wxwsp7bs2brivkhaixr7xf15xal89-python3.10-pylsp-mypy-0.6.7' '/nix/store/d8hhsar0clw26fqd431g5q5y9fkkdzdn-python3.10-python-lsp-server-1.8.0' '/nix/store/ndyvvxm68dm5shqlcinwb23b2vfksdq4-python3.10-black-23.9.1' '/nix/store/6di1gnrlnl2v26pxg6xh1k70hrm7m76p-python3.10-click-8.1.6' '/nix/store/l8kpyzpagrampic9783mrh5y0xq6zxz6-python3.10-packaging-23.1' '/nix/store/jkjhvhfy088xnrpl0yird8qcj56zknlk-python3.10-pathspec-0.11.0' '/nix/store/3pw73kd67pnawf60z9r5iyj82zlhk8lk-python3.10-platformdirs-3.9.1' '/nix/store/pb3h1yzyly2gyd2yqhryw1ksi2b17jmx-python3.10-pydantic-1.10.9' '/nix/store/pi6jgxr3psvw6p76hy8n8723afc5dyzs-python3.10-devtools-0.11.0' '/nix/store/2v8cz8hy7nm05261hgnz8631ra9gwfy5-python3.10-asttokens-2.2.1' '/nix/store/phnsx4m49ymyyyfcs36lgjkprkbvnhi5-python3.10-six-1.16.0' '/nix/store/glxjkmmqg5y2y9g2qvivwijqls0dysr9-python3.10-executing-1.2.0' '/nix/store/61v95mv2habbba1vs8j8l9k0rkbbvinw-python3.10-pygments-2.15.1' '/nix/store/jh03yisvsmiadccv61ssq0sv4cs1i46r-python3.10-pyupgrade-3.3.1' '/nix/store/2rw3p0d03mn1c02kyaqsi1gl3yhf6m77-python3.10-tokenize-rt-4.2.1' '/nix/store/dc1sy59c20fr053zp3nkhyg3lzlxcvxr-python3.10-coconut-3.0.3' '/nix/store/sfwi1vikc3hdzss2j41rcprb4y0iqxn8-python3.10-cpyparsing-2.4.7.2.1.2' '/nix/store/jr5skh0f01gb47bs8h1rskq3fq4mplna-python3.10-ipykernel-6.21.2' '/nix/store/krqjfpz0pk2hwf0l9njipymr5y6k46js-python3.10-comm-0.1.3' '/nix/store/kf5y20ah87hvhy96pnj6bph71dc09jii-python3.10-traitlets-5.9.0' '/nix/store/gn0mk48qwq13ymw1ha515ckbwnxg8yxq-python3.10-ipython-8.11.0' '/nix/store/bpxafz2v0mn9m3pc6m5v965i6nsw4p9w-python3.10-backcall-0.2.0' '/nix/store/6xn10jn52f65f4ig53njgc2615c0zvkz-python3.10-decorator-5.1.1' '/nix/store/385sa2wxq9h1ln2005jw8qa5r0a98pn5-python3.10-matplotlib-inline-0.1.6' '/nix/store/ailh4fksg9gzpqnkc07nc8jsjfqsj83n-python3.10-pexpect-4.8.0' '/nix/store/pspcn13kdlf4p5i6f2vnsb70qwaq1b2a-python3.10-ptyprocess-0.7.0' '/nix/store/ly9klic8vilmrvgcbgm7d8f0rs609xfi-python3.10-pickleshare-0.7.5' '/nix/store/1a7z4b124bfalvp96946k90xxhfyh207-python3.10-path-16.6.0' '/nix/store/qpcm11z5mkydikhafvi4sc0yvyjpzwri-python3.10-prompt-toolkit-3.0.38' '/nix/store/sdhx45p0f545xp0bp7wmh5cdlk6mx3p8-python3.10-wcwidth-0.2.6' '/nix/store/wck1vsd3q6jlidzr6ddw3h5wlak76fqj-python3.10-stack-data-0.2.0' '/nix/store/90mmc1f4ffq3pqb445cp8fkmk2q1fycy-python3.10-pure_eval-0.2.2' '/nix/store/8yip99b5f1fpg1199wf1l6g534mhjzc2-python3.10-toml-0.10.2' '/nix/store/06359h6dm3j9sv7ia1slg4kpdwjpb7aq-python3.10-jupyter_client-8.0.3' '/nix/store/53a0bw0zfvi36pqycnpyqzc4k0xsgjk9-python3.10-entrypoints-0.4' '/nix/store/hxszm8q323kc9f57c9k35yfsis2l7bdq-python3.10-jupyter-core-5.2.0' '/nix/store/adykgq19hjgfi4g28i2ndw5mnv4ga6qn-python3.10-nest_asyncio-1.5.6' '/nix/store/3kyj27dcm3wiaiyiwm7d9x0yjp7sk4k9-python3.10-python-dateutil-2.8.2' '/nix/store/sd5kkxh84l0aby9yf2nnj9xhk7k71n1r-python3.10-pyzmq-24.0.1' '/nix/store/9d7v7jl67m3az17apc1k9fjp6zn60r8p-python3.10-py-1.11.0' '/nix/store/xwkvp67nn881al86q3lh41kf7psb92i2-python3.10-tornado-6.3.3' '/nix/store/pixkn388xw5dbzwkd4lg3i2h4g471z1c-python3.10-psutil-5.9.5' '/nix/store/3rx38hz57h40zzwrnhsa85nal2dlld7c-python3.10-watchdog-3.0.0' '/nix/store/q730a89ri32n5xf9mll3v8nlgwksrra7-python3.10-qtile-extras-0.22.1' '/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12' '/nix/store/086vzhw3zfinwd52sd856625jarpz5n4-python3.10-qtile-0.22.1' '/nix/store/bll6wzbsywcbx46vr83igac7m265202z-python3.10-xcffib-1.2.0' '/nix/store/h9j9ff76qk97wi9bg94yx5725bf21dw5-python3.10-cffi-1.15.1' '/nix/store/vfbsns2ryx3lr09ix3f8d0s46qhmv5ky-python3.10-pycparser-2.21' '/nix/store/mn1mbnfj0pvzxn87by4lc47fpj0k40nb-python3.10-cairocffi-1.4.0' '/nix/store/314m0fk5sg3ac86hmkddd55yc889wzaq-cairo-1.16.0-dev' '/nix/store/js1byxz3pj3ijnrv1jy5ffiljdqjwvbj-fontconfig-2.14.0-dev' '/nix/store/i6lgx0z9casfkhzpfprqblc9m8fx20s2-freetype-2.13.0-dev' '/nix/store/03grn1z9pl9m8702wkshj5pwnvknazim-zlib-1.2.13-dev' '/nix/store/69jpyha5zbll6ppqzhbihhp51lac1hrp-zlib-1.2.13' '/nix/store/5kpzvx2j4pdxmyd7w2pm53jv58smdn6m-bzip2-1.0.8-dev' '/nix/store/bsca0mm8zc66gnibdvp5wwpfqh5c91xa-bzip2-1.0.8-bin' '/nix/store/v0iir4ksr0vb1px00yd80hip9yy5p4hk-bzip2-1.0.8' '/nix/store/mlvv3yjci2vjf3b1nqf03zjh13haclk0-brotli-1.0.9-dev' '/nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib' '/nix/store/1q9k4q7im5l9x581rzj42spp04xxkdk0-brotli-1.0.9' '/nix/store/r9isndk4r4vrrcg45zawd5prlgswxbgg-libpng-apng-1.6.39-dev' '/nix/store/23rqq5igphh0li64kzxw34hr6l713hbv-libpng-apng-1.6.39' '/nix/store/xxl2wa5b4pq7mnw4jmkmz5vl5fnvbz6h-freetype-2.13.0' '/nix/store/xs5s7b308hv7lgqifpw9rfp6q25qqywq-fontconfig-2.14.0-bin' '/nix/store/m17k3kbyrpbr14ai23gxfgzbqh6dnx03-fontconfig-2.14.0-lib' '/nix/store/c9dqnnhwdy64zqwpjkzk1s81zvz0infj-expat-2.5.0-dev' '/nix/store/m0inyjcw7p1h9677mv9gah92ksz1mg03-expat-2.5.0' '/nix/store/izrqpvgiiji0i1xrk719vghaypy5zh6l-pixman-0.42.2' '/nix/store/ig0cmlw59834hpmk0v6azipl0ss7lxcb-libXext-1.3.4-dev' '/nix/store/245c0wsqvmkz7wrcbcw2zwcjvgd42v4b-xorgproto-2021.5' '/nix/store/q0fh1fgyyj43x8nfjn2fyxwr6xki9pf0-libXau-1.0.9-dev' '/nix/store/n1iy4vr7ikx2h9pi1ikmh61ayxl8i3g9-libXau-1.0.9' '/nix/store/4zkhmhn9krccx97d2ad0z7fna278ksiv-libXext-1.3.4' '/nix/store/afzk1lvv5306hnsbarq1ww9j655060vq-libXrender-0.9.10-dev' '/nix/store/kp13ab0k35fq4ffbkygip2mxm30lfwjb-libX11-1.8.6-dev' '/nix/store/wmhp81hly5bghkayfhp7r692qq4qnjnc-libxcb-1.14-dev' '/nix/store/jyb9nwgpc8y6k3z4x5nn6bh3r495mw26-libxcb-1.14' '/nix/store/z5dlm8l0yzh4d3l2370lb1m2hfmcdfiy-libX11-1.8.6' '/nix/store/pcj0rysjwcshrw9nwgvii19123a0cs1p-libXrender-0.9.10' '/nix/store/cbqfil2vgbp0s62qxhcdyvlyw4x8zay4-xcb-util-0.4.1-dev' '/nix/store/srv1z1igfn2km62gjg88rk39y066mxbz-xcb-util-0.4.1' '/nix/store/dypzmzgjvyfs32gg8sj0rb6q79nf4390-glib-2.76.2-dev' '/nix/store/798wjzmkdxczl9jlvbsi95f0vfhd33fq-libffi-3.4.4-dev' '/nix/store/4a6iv3pl9npf4iwm72dskwl89hckdcdj-libffi-3.4.4' '/nix/store/fgr89gfh5if2x12qm0wz2s996jyn5qx9-gettext-0.21' '/nix/store/wd2678n4jhz1clp28d2niyliv4smjhbm-glibc-iconv-2.37' '/nix/store/plhal7yavzpaqwy7lr4fk90sx2mrwksk-glib-2.76.2-bin' '/nix/store/4vrk6zldfblhry2hi4p0jsy4j7nsvgaz-glib-2.76.2' '/nix/store/chfsxwdy3ai6b3g8pcr95rsfw41n15zj-libGL-1.6.0-dev' '/nix/store/xfgkyzqz46jxdkrfjz2ksv9cyvaqcx8v-libGL-1.6.0' '/nix/store/g1kflwfc5ym6xi59c16qscpr1ibhnyf1-libglvnd-1.6.0' '/nix/store/6dyhz7aj4cx3c9p73qvnn6gay1j4a48m-libglvnd-1.6.0-dev' '/nix/store/6xlhgbmp2dz86d1zdxmvl34291is9pns-cairo-1.16.0' '/nix/store/1njqv0iwxwri2hg5am2p553y99yg3430-python3.10-python-dateutil-2.8.2' '/nix/store/9szkk2hqxfm7z7r7yywzqjia6hnlahxg-python3.10-six-1.16.0' '/nix/store/yfk0yyr55phmv2cpdp1334f0qpi1jlxb-python3.10-dbus-python-1.2.18-dev' '/nix/store/6hyv2yddaa60ipkkb3szmlz87pajzn8s-python3.10-dbus-python-1.2.18' '/nix/store/y2p8y7cys7kbi6h1cq4dishd82rlryw9-python3.10-dbus-next-0.2.3' '/nix/store/p0024kg9ndcmwm8zm4bfn19k957jrmis-python3.10-python-mpd2-3.1.0' '/nix/store/nll88g5mx01v76qn0pv72caw4r9q39kq-python3.10-psutil-5.9.5' '/nix/store/gkvskd3g0kbjlr2amcmpgv21rz22p816-python3.10-pyxdg-0.28' '/nix/store/y4r0m01bydixyssq7jl40x7yzvvzvkqa-python3.10-pygobject-3.44.1-dev' '/nix/store/zx9bss9ql02r2rqx30v0qgszadzjx40s-python3.10-pycairo-1.23.0' '/nix/store/5di6lhp9vf2629iz4qg1i7y0avp8xrd6-python3.10-pygobject-3.44.1' '/nix/store/fgqa9ws8wwzp6ixjdixl9djnwdmcq4z4-python3.10-pywayland-0.4.15' '/nix/store/qi1svz5qg7ylaziamscrwkp5jd5rxvc8-python3.10-pywlroots-0.15.24' '/nix/store/05x7ard0a47sd3a78pdvspa607fr6g65-python3.10-xkbcommon-0.8' '/nix/store/05x7ard0a47sd3a78pdvspa607fr6g65-python3.10-xkbcommon-0.8' '/nix/store/1h034png2n5ifzbxdkr894x4dkc958y5-pulseaudio-16.1-dev' '/nix/store/vwq5sf5gvr4bins0a960lrwr83a7l65a-libcap-2.69-dev' '/nix/store/bb586h9sinhwsmcylm9h9f4md6hjmlxv-attr-2.5.1-dev' '/nix/store/zphqjmf8n6f3bws7m1sy6nk5jhhp5l5i-attr-2.5.1-bin' '/nix/store/whkpnh2db07rn1b7hcvfjfwag8imygvp-attr-2.5.1' '/nix/store/zr9dzm8zrxdb40lbmy56bfgzp4qnd64f-libcap-2.69-lib' '/nix/store/7bsbw8mg2w40qll05xq5h550m3lbpwy4-libcap-2.69' '/nix/store/sipy4b8k40rv4bw4mscar56saf43vx5i-pulseaudio-16.1' ) +declare -a pkgsTargetTarget=() +declare -a postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' ) +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +declare -a preConfigureHooks=('_multioutConfig' ) +preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +preFixupPhases=' glibPreFixupPhase' +preInstallPhases=' glibPreInstallPhase' +preferLocalBuild='1' +export preferLocalBuild +prefix='/home/bolt/.nix/home/dots/qtile/outputs/out' +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +propagatedBuildInputs='' +export propagatedBuildInputs +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +role_post='' +shell='/nix/store/vqvj60h076bhqj6977caz0pfxs6543nb-bash-5.2-p15/bin/bash' +export shell +shellHook='' +export shellHook +stdenv='/nix/store/vr6wwdxkmyy44sg0gwxi10b8fc5zhwz0-stdenv-linux' +export stdenv +strictDeps='' +export strictDeps +system='x86_64-linux' +export system +declare -a unpackCmdHooks=('_defaultUnpack' ) +_accumFlagsArray () +{ + + local name; + if [ -n "$__structuredAttrs" ]; then + for name in "$@"; + do + local -n nameref="$name"; + flagsArray+=(${nameref+"${nameref[@]}"}); + done; + else + for name in "$@"; + do + local -n nameref="$name"; + case "$name" in + *Array) + flagsArray+=(${nameref+"${nameref[@]}"}) + ;; + *) + flagsArray+=(${nameref-}) + ;; + esac; + done; + fi +} +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +_allFlags () +{ + + export system pname name version; + for varName in $(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }'); + do + if (( "${NIX_DEBUG:-0}" >= 1 )); then + printf "@%s@ -> %q\n" "${varName}" "${!varName}" 1>&2; + fi; + args+=("--subst-var" "$varName"); + done +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -pr --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + xz -d < "$fn" | tar xf - --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +_makeSymlinksRelative () +{ + + local symlinkTarget; + if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + while IFS= read -r -d '' f; do + symlinkTarget=$(readlink "$f"); + if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then + continue; + fi; + if [ ! -e "$symlinkTarget" ]; then + echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)"; + fi; + echo "rewriting symlink $f to be relative to $prefix"; + ln -snrf "$symlinkTarget" "$f"; + done < <(find $prefix -type l -print0) +} +_makeSymlinksRelativeInAllOutputs () +{ + + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" _makeSymlinksRelative; + done +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + source "$pkg/nix-support/setup-hook"; + fi +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +addPythonPath () +{ + + addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.10/site-packages +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if declare -p "$1" 2> /dev/null | grep -q '^'; then + type="$(declare -p "$1")"; + if [[ "$type" =~ "declare -A" ]]; then + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1; + else + if [[ "$type" =~ "declare -a" ]]; then + useArray=true; + else + useArray=false; + fi; + fi; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local i; + find "$dir" -type f -print0 | while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if isELF "$i"; then + if { + printf :; + patchelf --print-rpath "$i" + } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + if isScript "$i"; then + if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then + if grep -q -F "$TMPDIR/" "$i"; then + echo "wrapper script $i contains a forbidden reference to $TMPDIR/"; + exit 1; + fi; + fi; + fi; + done +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + fi +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget=check; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget=test; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray; + if [ -n "$__structuredAttrs" ]; then + flagsArray+=("${checkFlags[@]:-VERBOSE=y}"); + else + flagsArray+=(${checkFlags:-VERBOSE=y}); + fi; + _accumFlagsArray checkFlagsArray; + flagsArray+=(${checkTarget}); + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do + if gzip -c -n "$f" > "$f".gz; then + rm "$f"; + else + rm "$f".gz; + fi; + done; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + prependToVar configureFlags "${prefixKey:---prefix=}$prefix"; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + _accumFlagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + _accumFlagsArray distFlags distFlagsArray; + flagsArray+=(${distTarget:-dist}); + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +dumpVars () +{ + + if [ "${noDumpEnvVars:-0}" != 1 ]; then + export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" || true; + fi +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case "${!varSlice-}" in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi; + for curPhase in ${phases[*]}; + do + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + continue; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + continue; + fi; + if [[ -n $NIX_LOG_FD ]]; then + echo "@nix { \"action\": \"setPhase\", \"phase\": \"$curPhase\" }" >&"$NIX_LOG_FD"; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + local endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x "${sourceRoot}"; + cd "${sourceRoot:-.}"; + fi; + done +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +getHostRole () +{ + + getRole "$hostOffset" +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "gettext-0.21: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +getTargetRole () +{ + + getRole "$targetOffset" +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_@wrapperName@_TARGET_BUILD_@suffixSalt@=1 + ;; + 0) + export NIX_@wrapperName@_TARGET_HOST_@suffixSalt@=1 + ;; + 1) + export NIX_@wrapperName@_TARGET_TARGET_@suffixSalt@=1 + ;; + *) + echo "gettext-0.21: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +gettextDataDirsHook () +{ + + getHostRoleEnvHook; + if [ -d "$1/share/gettext" ]; then + addToSearchPath "GETTEXTDATADIRS${role_post}" "$1/share/gettext"; + fi +} +glibPreFixupPhase () +{ + + if [ -d "$prefix/share/glib-2.0/schemas" ]; then + mkdir -p "${!outputLib}/share/gsettings-schemas/$name/glib-2.0"; + mv "$prefix/share/glib-2.0/schemas" "${!outputLib}/share/gsettings-schemas/$name/glib-2.0/"; + fi; + addToSearchPath GSETTINGS_SCHEMAS_PATH "${!outputLib}/share/gsettings-schemas/$name" +} +glibPreInstallPhase () +{ + + makeFlagsArray+=("gsettingsschemadir=${!outputLib}/share/gsettings-schemas/$name/glib-2.0/schemas/") +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray; + flagsArray+=(${installCheckTarget:-installcheck}); + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); + _accumFlagsArray makeFlags makeFlagsArray installFlags installFlagsArray; + if [ -n "$__structuredAttrs" ]; then + flagsArray+=("${installTargets[@]:-install}"); + else + flagsArray+=(${installTargets:-install}); + fi; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +make_glib_find_gsettings_schemas () +{ + + for maybe_dir in "$1"/share/gsettings-schemas/*; + do + if [[ -d "$maybe_dir/glib-2.0/schemas" ]]; then + addToSearchPath GSETTINGS_SCHEMAS_PATH "$maybe_dir"; + fi; + done +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0) +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + if [ -n "$__structuredAttrs" ]; then + patchesArray=(${patches:+"${patches[@]}"}); + else + patchesArray=(${patches:-}); + fi; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + local -a flagsArray; + if [ -n "$__structuredAttrs" ]; then + flagsArray=("${patchFlags[@]:--p1}"); + else + flagsArray=(${patchFlags:--p1}); + fi; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +patchShebangs () +{ + + local pathName; + local update; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f"; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + args=${args#* }; + newPath="$(PATH="${!pathName}" command -v "env" || true)"; + args="-S $(PATH="${!pathName}" command -v "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" command -v "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f"; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if declare -p "$1" 2> /dev/null | grep -q '^'; then + type="$(declare -p "$1")"; + if [[ "$type" =~ "declare -A" ]]; then + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1; + else + if [[ "$type" =~ "declare -a" ]]; then + useArray=true; + else + useArray=false; + fi; + fi; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _eval "$hook" "$@"; + done; + return 0 +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +showPhaseHeader () +{ + + local phase="$1"; + case "$phase" in + unpackPhase) + echo "unpacking sources" + ;; + patchPhase) + echo "patching sources" + ;; + configurePhase) + echo "configuring" + ;; + buildPhase) + echo "building" + ;; + checkPhase) + echo "running tests" + ;; + installPhase) + echo "installing" + ;; + fixupPhase) + echo "post-installation fixup" + ;; + installCheckPhase) + echo "running install tests" + ;; + *) + echo "$phase" + ;; + esac +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -print0 | xargs -r -0 -n1 -- realpath -z | sort -u -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + case "$1" in + --replace) + pattern="$2"; + replacement="$3"; + shift 3; + local savedvar; + savedvar="${!var}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + if [ "$pattern" != "$replacement" ]; then + if [ "${!var}" == "$savedvar" ]; then + echo "substituteStream(): WARNING: pattern '$pattern' doesn't match anything in $description" 1>&2; + fi; + fi + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream(): ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream(): ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream(): ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +sysconfigdataHook () +{ + + if [ "$1" = '/nix/store/bc45k1n0pkrdkr3xa6w84w1xhkl1kkyp-python3-3.10.12' ]; then + export _PYTHON_HOST_PLATFORM='linux-x86_64'; + export _PYTHON_SYSCONFIGDATA_NAME='_sysconfigdata__linux_x86_64-linux-gnu'; + fi +} +toPythonPath () +{ + + local paths="$1"; + local result=; + for i in $paths; + do + p="$i/lib/python3.10/site-packages"; + result="${result}${result:+:}$p"; + done; + echo $result +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + if [ -n "$__structuredAttrs" ]; then + srcsArray=("${srcs[@]}"); + else + srcsArray=($srcs); + fi; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/knwyqhxbsxflilyy0mkpai2fp3lxarqz-gnu-config-2023-07-31/$script" "$f"; + done; + done +} +updateSourceDateEpoch () +{ + + local path="$1"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" +export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)" +export TMP="$NIX_BUILD_TOP" +export TMPDIR="$NIX_BUILD_TOP" +export TEMP="$NIX_BUILD_TOP" +export TEMPDIR="$NIX_BUILD_TOP" +eval "$shellHook" diff --git a/home/dots/qtile/.envrc b/home/dots/qtile/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/home/dots/qtile/.envrc @@ -0,0 +1 @@ +use flake diff --git a/home/dots/qtile/autostart.sh b/home/dots/qtile/autostart.sh new file mode 100755 index 0000000..76fc677 --- /dev/null +++ b/home/dots/qtile/autostart.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +ckb-next -c -b & +mullvad connect & +xrdb -l ~/.Xresources & + +# for later.. +# gsettings set org.gnome.desktop.interface gtk-theme '${rice.gtk-theme.name}'";} +# gsettings set org.gnome.desktop.interface font-name '${rice.fonts.sans.name}'";} +# gsettings set org.gnome.desktop.interface icon-theme '${rice.icons.name}'";} + +dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE NIXOS_OZONE_WL; systemctl --user start qtile-session.target diff --git a/home/dots/qtile/config.py b/home/dots/qtile/config.py new file mode 100755 index 0000000..5012693 --- /dev/null +++ b/home/dots/qtile/config.py @@ -0,0 +1,175 @@ +#!/usr/bin/env python3 +# import coconut.api + +from __future__ import annotations + +import importlib +import subprocess +import sys +import os +from typing import List + +from libqtile import bar, hook, layout, qtile, utils, widget +from libqtile.backend import base +from libqtile.lazy import lazy +from libqtile.config import Key, Match, Screen, Click, Drag, Group, ScratchPad, DropDown + +# import qtile_extras.widget as extra_widgets + +assert qtile is not None + +from typing import Any +from libqtile.core.manager import Qtile + +from libqtile.backend.wayland import InputConfig + +wl_input_rules = { + "type:keyboard": InputConfig(kb_options="caps:escape"), + "*": InputConfig(accel_profile="flat", pointer_accel="0.0"), +} +mod = "mod4" + + +class Apps: + term = "kitty" + launcher = "fuzzel" + browser = "firefox" + fm = "thunar" + logout = "wlogout" + noti = "swaync-client -t" + ss = '''grim -g "$(slurp)" -t png -o "~/Pictures/$(date +%F_%H-%m-%S).png" && notify-send "Screenshot taken."''' + passmgr = "keepassxc" + + +class OSD: + mute = "swayosd --output-volume mute-toggle" + vol_up = "swayosd --output-volume raise" + vol_down = "swayosd --output-volume lower" + next = "playerctl next" + prev = "playerctl prev" + stop = "playerctl stop" + play = "playerctl play-pause" + brightup = "swayosd --brightness raise" + brightdown = "swayosd --brightness lower" + + +keys = [ + Key([mod], "Return", lazy.spawn(Apps.term)), + Key([mod], "d", lazy.spawn(Apps.launcher)), + Key([mod], "f", lazy.spawn(Apps.browser)), + Key([mod], "e", lazy.spawn(Apps.fm)), + Key([mod, "Shift"], "e", lazy.spawn(Apps.logout)), + Key([mod], "n", lazy.spawn(Apps.noti)), + Key([mod, "Shift"], "s", lazy.spawn(Apps.ss)), + Key([], "XF86AudioMute", lazy.spawn(OSD.mute)), + Key([], "XF86AudioRaiseVolume", lazy.spawn(OSD.vol_up)), + Key([], "XF86AudioLowerVolume", lazy.spawn(OSD.vol_down)), + Key([], "XF86AudioStop", lazy.spawn(OSD.stop)), + Key([], "XF86AudioPlay", lazy.spawn(OSD.play)), + Key([], "XF86AudioPrev", lazy.spawn(OSD.prev)), + Key([], "XF86AudioNext", lazy.spawn(OSD.next)), + Key([], "XF86MonBrightnessUp", lazy.spawn(OSD.brightup)), + Key([], "XF86MonBrightnessDown", lazy.spawn(OSD.brightdown)), + Key([mod, "shift"], "q", lazy.window.kill()), + Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), + Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), + Key([mod], "j", lazy.layout.down(), desc="Move focus down"), + Key([mod], "k", lazy.layout.up(), desc="Move focus up"), + Key( + [mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left" + ), + Key( + [mod, "shift"], + "l", + lazy.layout.shuffle_right(), + desc="Move window to the right", + ), + Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"), + Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), + Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"), + Key( + [mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right" + ), + Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"), + Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"), + Key([mod], "space", lazy.window.toggle_floating()), + Key([mod, "shift"], "space", lazy.window.toggle_fullscreen()), + Key([mod], "Tab", lazy.layout.next_layout()), +] + + +groups = [Group(i) for i in "123456"] + +for i in groups: + keys.extend( + [ + # mod1 + letter of group = switch to group + Key( + [mod], + i.name, + lazy.group[i.name].toscreen(), + desc="Switch to group {}".format(i.name), + ), + # mod1 + shift + letter of group = move focused window to group + Key( + [mod, "shift"], + i.name, + lazy.window.togroup(i.name), + desc="move focused window to group {}".format(i.name), + ), + ] + ) + +groups.append(ScratchPad("scratch", [ + DropDown("term", Apps.term, width=0.8, height=0.45, x=0.2, y=0.0), + DropDown("pass", Apps.passmgr, width=0.5, height=0.5, x=0.25, y=0.25), +])) + +keys.extend([ + Key([mod], 'grave', lazy.group['scratch'].dropdown_toggle('term')), + Key([mod], 'minus', lazy.group['scratch'].dropdown_toggle('pass')), +]) + +layouts = [ + layout.Bsp(margin_on_single=0), + layout.Slice(fallback=layout.Bsp(), side="top", width=1280), +] + +widget_defaults = dict( + font="Inria Sans", + fontsize=12, +) + +mouse = [ + Drag([mod], "Button1", lazy.window.set_position_floating(), start=lazy.window.get_position()), + Drag([mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()), +] + +screens = [ + Screen( + top = bar.Bar( + [ + widget.GroupBox(), + widget.WindowTabs(), + widget.CurrentLayout(), + # widget.Volume(), + # widget.Systray(), + widget.Clock() + # widget.Clock('%B %d %a %I:%M %p'), + ], + 16, + ) + ) +] + +dgroups_key_binder = None +dgroups_app_rules: List[str] = [] +follow_mouse_focus = True +bring_front_click = False +cursor_warp = True +focus_on_window_activation = "smart" + +@hook.subscribe.startup +def autostart(): + home = os.path.expanduser("~/.config/qtile/autostart.sh") + subprocess.Popen([home]) diff --git a/home/dots/qtile/flake.lock b/home/dots/qtile/flake.lock new file mode 100644 index 0000000..0c98746 --- /dev/null +++ b/home/dots/qtile/flake.lock @@ -0,0 +1,78 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1695559356, + "narHash": "sha256-kXZ1pUoImD9OEbPCwpTz4tHsNTr4CIyIfXb3ocuR8sI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "261abe8a44a7e8392598d038d2e01f7b33cf26d0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable", + "utils": "utils" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home/dots/qtile/flake.nix b/home/dots/qtile/flake.nix new file mode 100644 index 0000000..10e32ce --- /dev/null +++ b/home/dots/qtile/flake.nix @@ -0,0 +1,29 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, nixpkgs-unstable, utils, ... }: + utils.lib.eachDefaultSystem (system: + let + stable = import nixpkgs { inherit system; }; + unstable = import nixpkgs-unstable { inherit system; }; + in + { + devShell = with unstable; with unstable.python3Packages; mkShell { + buildInputs = [ + python-lsp-server + mypy + pylsp-mypy + black + pydantic + coconut + stable.python3Packages.qtile-extras + stable.python3Packages.qtile + ]; + }; + } + ); +} diff --git a/home/dots/river/init b/home/dots/river/init new file mode 100755 index 0000000..e35e68e --- /dev/null +++ b/home/dots/river/init @@ -0,0 +1,166 @@ +#!/bin/sh + +# This is the example configuration file for river. +# +# If you wish to edit this, you will probably want to copy it to +# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first. +# +# See the river(1), riverctl(1), and kile(1) man pages for complete +# documentation. + +# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc. + +# MY BINDS + +riverctl map normal Super Return spawn kitty +riverctl map normal Super D spawn fuzzel +riverctl map normal Super E spawn thunar +riverctl map normal Super F spawn firefox +riverctl map normal Super+Shift E spawn wlogout +riverctl map normal Super+Shift S spawn grim -g "$(slurp)" -t png -o ~/Pictures/$(date +%F_%H-%m-%S).png && notify-send "Screenshot taken." +riverctl map normal Super+Shift+Ctrl S spawn kooha + +# Super+Q to close the focused view +riverctl map normal Super+Shift Q close + +# Super+J and Super+K to focus the next/previous view in the layout stack +riverctl map normal Super J focus-view next +riverctl map normal Super K focus-view previous + +# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous +# view in the layout stack +riverctl map normal Super+Shift J swap next +riverctl map normal Super+Shift K swap previous + +# Super+Period and Super+Comma to focus the next/previous output +riverctl map normal Super Period focus-output next +riverctl map normal Super Comma focus-output previous + +# Super+Shift+{Period,Comma} to send the focused view to the next/previous output +riverctl map normal Super+Shift Period send-to-output next +riverctl map normal Super+Shift Comma send-to-output previous + +# Super+Return to bump the focused view to the top of the layout stack +riverctl map normal Super+Shift Return zoom + +# Super+H and Super+L to decrease/increase the main ratio of kile(1) +riverctl map normal Super H send-layout-cmd kile "main-ratio -0.05" +riverctl map normal Super L send-layout-cmd kile "main-ratio +0.05" + +# Super+Shift+H and Super+Shift+L to increment/decrement the main count of kile(1) +riverctl map normal Super+Shift H send-layout-cmd kile "main-count +1" +riverctl map normal Super+Shift L send-layout-cmd kile "main-count -1" + +# Super+Alt+{H,J,K,L} to move views +riverctl map normal Super+Alt H move left 100 +riverctl map normal Super+Alt J move down 100 +riverctl map normal Super+Alt K move up 100 +riverctl map normal Super+Alt L move right 100 + +# Super+Alt+Control+{H,J,K,L} to snap views to screen edges +riverctl map normal Super+Alt+Control H snap left +riverctl map normal Super+Alt+Control J snap down +riverctl map normal Super+Alt+Control K snap up +riverctl map normal Super+Alt+Control L snap right + +# Super+Alt+Shift+{H,J,K,L} to resize views +riverctl map normal Super+Alt+Shift H resize horizontal -100 +riverctl map normal Super+Alt+Shift J resize vertical 100 +riverctl map normal Super+Alt+Shift K resize vertical -100 +riverctl map normal Super+Alt+Shift L resize horizontal 100 + +# Super + Left Mouse Button to move views +riverctl map-pointer normal Super BTN_LEFT move-view + +# Super + Right Mouse Button to resize views +riverctl map-pointer normal Super BTN_RIGHT resize-view + +# Super + Middle Mouse Button to toggle float +riverctl map-pointer normal Super BTN_MIDDLE toggle-float + +for i in $(seq 1 9) +do + tags=$((1 << ($i - 1))) + + # Super+[1-9] to focus tag [0-8] + riverctl map normal Super $i set-focused-tags $tags + + # Super+Shift+[1-9] to tag focused view with tag [0-8] + riverctl map normal Super+Shift $i set-view-tags $tags + + # Super+Control+[1-9] to toggle focus of tag [0-8] + riverctl map normal Super+Control $i toggle-focused-tags $tags + + # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view + riverctl map normal Super+Shift+Control $i toggle-view-tags $tags +done + +# Super+0 to focus all tags +# Super+Shift+0 to tag focused view with all tags +all_tags=$(((1 << 32) - 1)) +riverctl map normal Super 0 set-focused-tags $all_tags +riverctl map normal Super+Shift 0 set-view-tags $all_tags + +# Super+Space to toggle float +riverctl map normal Super Space toggle-float + +# Super+F to toggle fullscreen +riverctl map normal Super+Shift Space toggle-fullscreen + +# Super+{Up,Right,Down,Left} to change layout orientation +riverctl map normal Super Up send-layout-cmd kile "main-location top" +riverctl map normal Super Right send-layout-cmd kile "main-location right" +riverctl map normal Super Down send-layout-cmd kile "main-location bottom" +riverctl map normal Super Left send-layout-cmd kile "main-location left" + +# Declare a passthrough mode. This mode has only a single mapping to return to +# normal mode. This makes it useful for testing a nested wayland compositor +riverctl declare-mode passthrough + +# Super+F11 to enter passthrough mode +riverctl map normal Super F11 enter-mode passthrough + +# Super+F11 to return to normal mode +riverctl map passthrough Super F11 enter-mode normal + +# Various media key mapping examples for both normal and locked mode which do +# not have a modifier +for mode in normal locked +do + # Eject the optical drive (well if you still have one that is) + riverctl map $mode None XF86Eject spawn 'eject -T' + + # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) + riverctl map $mode None XF86AudioRaiseVolume spawn 'swayosd --output-volume raise' + riverctl map $mode None XF86AudioLowerVolume spawn 'swayosd --output-volume lower' + riverctl map $mode None XF86AudioMute spawn 'swayosd --output-volume mute-toggle' + + # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) + riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' + riverctl map $mode None XF86AudioNext spawn 'playerctl next' + + # Control screen backlight brightness with light (https://github.com/haikarainen/light) + riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5' + riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5' +done + +# Set background and border color +riverctl background-color 0x#BGCOLOUR +riverctl border-color-focused 0x#BORDERCOLOUR +riverctl border-color-unfocused 0x#UNFOCUSEDCOLOUR + +# Set keyboard repeat rate +riverctl set-repeat 50 300 + +# Make all views with an app-id that starts with "float" and title "foo" start floating. +# riverctl rule-add float -app-id 'float*' -title 'foo' + +# Make all views with app-id "bar" and any title use client-side decorations +# riverctl rule-add csd -app-id "bar" + +# Set the default layout generator to be kile and start it. +# River will send the process group of the init executable SIGTERM on exit. +riverctl default-layout kile +kile & diff --git a/home/dots/river/layout.kl b/home/dots/river/layout.kl new file mode 100644 index 0000000..199ee01 --- /dev/null +++ b/home/dots/river/layout.kl @@ -0,0 +1,7 @@ +const ver Vertical +const hor Horizontal + +const vsplit (ver | hor ([1 - 0.5] *hsplit)) +const hsplit (hor | ver ([1 - 0.5] *vsplit)) + +const default vsplit diff --git a/home/home.nix b/home/home.nix index 2a39d5c..97535fd 100644 --- a/home/home.nix +++ b/home/home.nix @@ -60,12 +60,8 @@ in { mpv - river - gtk-engine-murrine - persway - flashfocus ] ++ pkgs.rice.fonts.pkgs ++ pkgs.rice.icons.pkgs; @@ -90,7 +86,7 @@ in { }; programs.ironbar = with pkgs.rice; { - enable = true; + # enable = true; config = { anchor_to_edges = true; position = "top"; @@ -205,7 +201,7 @@ in { {command = "${lib.getExe' ckb-next "ckb-next"} -c -b";} {command = "${lib.getExe' mullvad "mullvad"} connect";} {command = "${lib.getExe' xorg.xrdb "xrdb"} -l ~/.Xresources";} - {command = "${lib.getExe' flashfocus "flashfocus"} -o 0.97 -t 175 -n 30 --no-flash-fullscreen -l on_open_close";} + {command = "${lib.getExe' flashfocus "flashfocus"} -o 0.95 -t 175 -n 30 --no-flash-fullscreen -l on_open_close";} {command = "${lib.getExe' glib.bin "gsettings"} set org.gnome.desktop.interface gtk-theme '${rice.gtk-theme.name}'";} {command = "${lib.getExe' glib.bin "gsettings"} set org.gnome.desktop.interface font-name '${rice.fonts.sans.name}'";} {command = "${lib.getExe' glib.bin "gsettings"} set org.gnome.desktop.interface icon-theme '${rice.icons.name}'";} @@ -310,26 +306,31 @@ in { builtins.mapAttrs (name: cmd: { Unit = { Description = "${name}"; - Requires = ["sway-session.target"]; + Requires = [ "graphical-session.target" "qtile-session.target" ]; + After = [ "graphical-session.target" "qtile-session.target" ]; }; Service = { ExecStart = cmd; }; Install = { - WantedBy = ["sway-session.target"]; + WantedBy = ["qtile-session.target"]; }; }) { swaybg = "${lib.getExe swaybg} -i ${rice.bg.image} -m fill"; - # QT APPS CANT THEME PROPERLY HOW EMBARASSING - # keepassxc = "${lib.getExe' keepassxc "keepassxc"}"; - # ckb-next = "${lib.getExe' ckb-next "ckb-next"} -c -b"; swayosd = "${lib.getExe' swayosd "swayosd"} --max-volume 100"; swaync = "${lib.getExe swaynotificationcenter}"; - persway = "${lib.getExe' persway "persway"} daemon -d spiral"; - # PYTHON APP CANT RUN AS SYSTEMD SERVICE HOW EMBARASSING - flashfocus = "${lib.getExe flashfocus} -o 0.95 -t 175 -n 30 --no-flash-fullscreen -l on_open_close"; + # persway = "${lib.getExe' persway "persway"} daemon -d spiral"; + # nb. python or qt apps fail as sd services, use wm to launch }; + systemd.user.targets.qtile-session = { + Unit = { + BindsTo = [ "graphical-session.target" ]; + Wants = [ "graphical-session-pre.target" "xdg-desktop-autostart.target" ]; + After = [ "graphical-session-pre.target" ]; + Before = [ "xdg-desktop-autostart.target" ]; + }; + }; xdg.enable = true; xresources.properties = with palette-hex; { @@ -358,11 +359,13 @@ in { xdg.configFile = builtins.mapAttrs (name: value: { enable = true; - text = builtins.readFile value; + source = value; }) { "swaync/config.json" = dots/swaync/config.json; "swaync/configSchema.json" = dots/swaync/configSchema.json; + "qtile/config.py" = dots/qtile/config.py; + "qtile/autostart.sh" = dots/qtile/autostart.sh; } // { "swaync/style.css" = { diff --git a/overlay.nix b/overlay.nix index 134f4e0..2188346 100644 --- a/overlay.nix +++ b/overlay.nix @@ -10,10 +10,11 @@ config.allowUnfree = true; }; }; + rice = import ./rice.nix; - podman-stable = final: prev: {podman-stable = final.stable.podman;}; + wlroots = final: prev: { - wlroots = final.unstable.wlroots_0_16.overrideAttrs (wfinal: wprev: { + wlroots = final.unstable.wlroots.overrideAttrs (wfinal: wprev: { postPatch = wprev.postPatch + '' @@ -21,6 +22,7 @@ ''; }); }; + sway-unwrapped = final: prev: { sway-unwrapped = (final.unstable.sway-unwrapped.override { @@ -34,6 +36,7 @@ } ); }; + sway = final: prev: { sway = final.unstable.sway.override { sway-unwrapped = final.sway-unwrapped; @@ -41,9 +44,5 @@ withGtkWrapper = true; }; }; - river = final: prev: { - river = final.unstable.river.override { - wlroots = final.wlroots; - }; - }; + } diff --git a/sway-nvidia.patch b/sway-nvidia.patch index 5435d4a..5247dfe 100644 --- a/sway-nvidia.patch +++ b/sway-nvidia.patch @@ -1,11 +1,19 @@ diff --git a/sway/main.c b/sway/main.c -index 85bc2f1..0129a58 100644 +index 85bc2f1c..a2f76590 100644 --- a/sway/main.c +++ b/sway/main.c -@@ -58,16 +58,25 @@ void detect_proprietary(int allow_unsupported_gpu) { - size_t line_size = 0; - while (getline(&line, &line_size, f) != -1) { - if (strncmp(line, "nvidia ", 7) == 0) { +@@ -50,41 +50,7 @@ void sig_handler(int signal) { + } + + void detect_proprietary(int allow_unsupported_gpu) { +- FILE *f = fopen("/proc/modules", "r"); +- if (!f) { +- return; +- } +- char *line = NULL; +- size_t line_size = 0; +- while (getline(&line, &line_size, f) != -1) { +- if (strncmp(line, "nvidia ", 7) == 0) { - if (allow_unsupported_gpu) { - sway_log(SWAY_ERROR, - "!!! Proprietary Nvidia drivers are in use !!!"); @@ -16,25 +24,24 @@ index 85bc2f1..0129a58 100644 - "--unsupported-gpu and DO NOT report issues."); - exit(EXIT_FAILURE); - } -+ sway_log(SWAY_INFO, -+ "Thank you, based Nvidia user! o7" -+ ); -+ sway_log(SWAY_INFO, -+ " _ ___ __ " -+ ); -+ sway_log(SWAY_INFO, -+ " ____ _ __(_)___/ (_)___ _ _________ _____/ /_______" -+ ); -+ sway_log(SWAY_INFO, -+ " / __ \\ | / / / __ / / __ `/ / ___/ __ \\/ ___/ //_/ ___/" -+ ); -+ sway_log(SWAY_INFO, -+ " / / / / |/ / / /_/ / / /_/ / / / / /_/ / /__/ ,< (__ ) " -+ ); -+ sway_log(SWAY_INFO, -+ "/_/ /_/|___/_/\\__,_/_/\\__,_/ /_/ \\____/\\___/_/|_/____/ " -+ ); -+ - break; - } - if (strstr(line, "fglrx")) { +- break; +- } +- if (strstr(line, "fglrx")) { +- if (allow_unsupported_gpu) { +- sway_log(SWAY_ERROR, +- "!!! Proprietary AMD drivers are in use !!!"); +- } else { +- sway_log(SWAY_ERROR, "Proprietary AMD drivers do NOT support " +- "Wayland. Use radeon. To try anyway, launch sway with " +- "--unsupported-gpu and DO NOT report issues."); +- exit(EXIT_FAILURE); +- } +- break; +- } +- } +- free(line); +- fclose(f); ++ return; + } + + void run_as_ipc_client(char *command, char *socket_path) { diff --git a/system/configuration.nix b/system/configuration.nix index 56e7dbf..bc7bff6 100644 --- a/system/configuration.nix +++ b/system/configuration.nix @@ -34,15 +34,15 @@ trusted-users = ["bolt" "plank"]; experimental-features = "nix-command flakes"; substitute = true; - substituters = ["https://anyrun.cachix.org" "https://jakestanger.cachix.org"]; + substituters = ["https://jakestanger.cachix.org"]; trusted-public-keys = [ "jakestanger.cachix.org-1:VWJE7AWNe5/KOEvCQRxoE8UsI2Xs2nHULJ7TEjYm7mM=" - "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" ]; }; }; imports = [ + ]; nix.extraOptions = '' @@ -87,11 +87,23 @@ services.udisks2.enable = true; + services.xserver.windowManager.qtile = { + enable = true; + backend = "wayland"; + package = inputs.qtile.packages.x86_64-linux.default; + configFile = null; # using hm instead + extraPackages = python3Packages: with python3Packages; [ + pkgs.stable.python3Packages.qtile-extras + coconut + ]; + }; + services.greetd = { enable = true; settings = { default_session = { - command = "${lib.getExe pkgs.greetd.tuigreet} -r -g \"what's good\" --time --sessions ${pkgs.sway}/share/wayland-sessions"; + # command = "${lib.getExe pkgs.greetd.tuigreet} -r -g \"what's good\" --time --cmd sway"; + command = "${lib.getExe pkgs.greetd.tuigreet} -r -g \"what's good\" --time --cmd \"qtile start -b wayland\""; user = "greeter"; }; };