diff --git a/.gitignore b/.gitignore index 37e2304b..0160b36b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ result -dist-newstyle +result-bin +dist-newstyle/ +target/ __pycache__ diff --git a/config/penrose/Cargo.lock b/config/penrose/Cargo.lock new file mode 100644 index 00000000..876c925d --- /dev/null +++ b/config/penrose/Cargo.lock @@ -0,0 +1,499 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "anymap" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "nix" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" +dependencies = [ + "autocfg", + "bitflags", + "cfg-if", + "libc", + "memoffset", + "pin-utils", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "orcinus-wm" +version = "0.1.0" +dependencies = [ + "penrose", + "tracing-subscriber", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "penrose" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eefe76e3ad5f6194a0ad63f1ff75929e74196440daa426628736048331f45af" +dependencies = [ + "anymap", + "bitflags", + "nix", + "penrose_keysyms", + "strum 0.24.1", + "strum_macros 0.24.3", + "thiserror", + "tracing", + "x11rb", +] + +[[package]] +name = "penrose_keysyms" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a574df0fe3d7e0bb1fd297dd722d8aea8ea33a734d862451509814062bec2d6" +dependencies = [ + "strum 0.20.0", + "strum_macros 0.20.1", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro2" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.3.0", + "regex-syntax 0.7.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" + +[[package]] +name = "rustversion" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "strum" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" +dependencies = [ + "strum_macros 0.20.1", +] + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum_macros" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.23", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.23", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "unicode-ident" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "x11rb" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf3c79412dd91bae7a7366b8ad1565a85e35dd049affc3a6a2c549e97419617" +dependencies = [ + "gethostname", + "libc", + "nix", + "winapi", + "winapi-wsapoll", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0b1513b141123073ce54d5bb1d33f801f17508fbd61e02060b1214e96d39c56" +dependencies = [ + "nix", +] diff --git a/config/penrose/Cargo.toml b/config/penrose/Cargo.toml new file mode 100644 index 00000000..b4ea6566 --- /dev/null +++ b/config/penrose/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "orcinus-wm" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +penrose = "0.3.2" +tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } diff --git a/config/penrose/default.nix b/config/penrose/default.nix new file mode 100644 index 00000000..c7332dc3 --- /dev/null +++ b/config/penrose/default.nix @@ -0,0 +1,1047 @@ +# This file was @generated by cargo2nix 0.11.0. +# It is not intended to be manually edited. +args @ { + release ? true, + rootFeatures ? [ + "orcinus-wm/default" + ], + rustPackages, + buildRustPackages, + hostPlatform, + hostPlatformCpu ? null, + hostPlatformFeatures ? [], + target ? null, + codegenOpts ? null, + profileOpts ? null, + rustcLinkFlags ? null, + rustcBuildFlags ? null, + mkRustCrate, + rustLib, + lib, + workspaceSrc, +}: let + workspaceSrc = + if args.workspaceSrc == null + then ./. + else args.workspaceSrc; +in let + inherit (rustLib) fetchCratesIo fetchCrateLocal fetchCrateGit fetchCrateAlternativeRegistry expandFeatures decideProfile genDrvsByProfile; + profilesByName = { + }; + rootFeatures' = expandFeatures rootFeatures; + overridableMkRustCrate = f: let + drvs = genDrvsByProfile profilesByName ({ + profile, + profileName, + }: + mkRustCrate ({inherit release profile hostPlatformCpu hostPlatformFeatures target profileOpts codegenOpts rustcLinkFlags rustcBuildFlags;} // (f profileName))); + in + { + compileMode ? null, + profileName ? decideProfile compileMode release, + }: let + drv = drvs.${profileName}; + in + if compileMode == null + then drv + else drv.override {inherit compileMode;}; +in { + cargo2nixVersion = "0.11.0"; + workspace = { + orcinus-wm = rustPackages.unknown.orcinus-wm."0.1.0"; + }; + "registry+https://github.com/rust-lang/crates.io-index".aho-corasick."1.0.2" = overridableMkRustCrate (profileName: rec { + name = "aho-corasick"; + version = "1.0.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"; + }; + features = builtins.concatLists [ + ["default"] + ["perf-literal"] + ["std"] + ]; + dependencies = { + memchr = rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".anymap."0.12.1" = overridableMkRustCrate (profileName: rec { + name = "anymap"; + version = "0.12.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" = overridableMkRustCrate (profileName: rec { + name = "autocfg"; + version = "1.1.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" = overridableMkRustCrate (profileName: rec { + name = "bitflags"; + version = "1.3.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"; + }; + features = builtins.concatLists [ + ["default"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" = overridableMkRustCrate (profileName: rec { + name = "cfg-if"; + version = "1.0.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".gethostname."0.2.3" = overridableMkRustCrate (profileName: rec { + name = "gethostname"; + version = "0.2.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e"; + }; + dependencies = { + ${ + if !hostPlatform.isWindows + then "libc" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.147" {inherit profileName;}; + ${ + if hostPlatform.isWindows + then "winapi" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".heck."0.3.3" = overridableMkRustCrate (profileName: rec { + name = "heck"; + version = "0.3.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"; + }; + dependencies = { + unicode_segmentation = rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-segmentation."1.10.1" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".heck."0.4.1" = overridableMkRustCrate (profileName: rec { + name = "heck"; + version = "0.4.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"; + }; + features = builtins.concatLists [ + ["default"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" = overridableMkRustCrate (profileName: rec { + name = "lazy_static"; + version = "1.4.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".libc."0.2.147" = overridableMkRustCrate (profileName: rec { + name = "libc"; + version = "0.2.147"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"; + }; + features = builtins.concatLists [ + ["default"] + ["extra_traits"] + ["std"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".log."0.4.19" = overridableMkRustCrate (profileName: rec { + name = "log"; + version = "0.4.19"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"; + }; + features = builtins.concatLists [ + ["std"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".matchers."0.1.0" = overridableMkRustCrate (profileName: rec { + name = "matchers"; + version = "0.1.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"; + }; + dependencies = { + regex_automata = rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-automata."0.1.10" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" = overridableMkRustCrate (profileName: rec { + name = "memchr"; + version = "2.5.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"; + }; + features = builtins.concatLists [ + ["default"] + ["std"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".memoffset."0.6.5" = overridableMkRustCrate (profileName: rec { + name = "memoffset"; + version = "0.6.5"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"; + }; + features = builtins.concatLists [ + ["default"] + ]; + buildDependencies = { + autocfg = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" {profileName = "__noProfile";}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".nix."0.25.1" = overridableMkRustCrate (profileName: rec { + name = "nix"; + version = "0.25.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"; + }; + features = builtins.concatLists [ + ["acct"] + ["aio"] + ["default"] + ["dir"] + ["env"] + ["event"] + ["feature"] + ["fs"] + ["hostname"] + ["inotify"] + ["ioctl"] + ["kmod"] + ["memoffset"] + ["mman"] + ["mount"] + ["mqueue"] + ["net"] + ["personality"] + ["pin-utils"] + ["poll"] + ["process"] + ["pthread"] + ["ptrace"] + ["quota"] + ["reboot"] + ["resource"] + ["sched"] + ["signal"] + ["socket"] + ["term"] + ["time"] + ["ucontext"] + ["uio"] + ["user"] + ["zerocopy"] + ]; + dependencies = { + bitflags = rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" {inherit profileName;}; + cfg_if = rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" {inherit profileName;}; + libc = rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.147" {inherit profileName;}; + ${ + if !(hostPlatform.parsed.kernel.name == "redox") + then "memoffset" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".memoffset."0.6.5" {inherit profileName;}; + pin_utils = rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-utils."0.1.0" {inherit profileName;}; + }; + buildDependencies = { + autocfg = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".autocfg."1.1.0" {profileName = "__noProfile";}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".nu-ansi-term."0.46.0" = overridableMkRustCrate (profileName: rec { + name = "nu-ansi-term"; + version = "0.46.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"; + }; + dependencies = { + overload = rustPackages."registry+https://github.com/rust-lang/crates.io-index".overload."0.1.1" {inherit profileName;}; + ${ + if hostPlatform.parsed.kernel.name == "windows" + then "winapi" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".once_cell."1.18.0" = overridableMkRustCrate (profileName: rec { + name = "once_cell"; + version = "1.18.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"; + }; + features = builtins.concatLists [ + ["alloc"] + ["default"] + ["race"] + ["std"] + ]; + }); + + "unknown".orcinus-wm."0.1.0" = overridableMkRustCrate (profileName: rec { + name = "orcinus-wm"; + version = "0.1.0"; + registry = "unknown"; + src = fetchCrateLocal workspaceSrc; + dependencies = { + penrose = rustPackages."registry+https://github.com/rust-lang/crates.io-index".penrose."0.3.2" {inherit profileName;}; + tracing_subscriber = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-subscriber."0.3.17" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".overload."0.1.1" = overridableMkRustCrate (profileName: rec { + name = "overload"; + version = "0.1.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".penrose."0.3.2" = overridableMkRustCrate (profileName: rec { + name = "penrose"; + version = "0.3.2"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "5eefe76e3ad5f6194a0ad63f1ff75929e74196440daa426628736048331f45af"; + }; + features = builtins.concatLists [ + ["default"] + ["keysyms"] + ["penrose_keysyms"] + ["x11rb"] + ["x11rb-xcb"] + ]; + dependencies = { + anymap = rustPackages."registry+https://github.com/rust-lang/crates.io-index".anymap."0.12.1" {inherit profileName;}; + bitflags = rustPackages."registry+https://github.com/rust-lang/crates.io-index".bitflags."1.3.2" {inherit profileName;}; + nix = rustPackages."registry+https://github.com/rust-lang/crates.io-index".nix."0.25.1" {inherit profileName;}; + penrose_keysyms = rustPackages."registry+https://github.com/rust-lang/crates.io-index".penrose_keysyms."0.1.1" {inherit profileName;}; + strum = rustPackages."registry+https://github.com/rust-lang/crates.io-index".strum."0.24.1" {inherit profileName;}; + strum_macros = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".strum_macros."0.24.3" {profileName = "__noProfile";}; + thiserror = rustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.41" {inherit profileName;}; + tracing = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" {inherit profileName;}; + x11rb = rustPackages."registry+https://github.com/rust-lang/crates.io-index".x11rb."0.11.1" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".penrose_keysyms."0.1.1" = overridableMkRustCrate (profileName: rec { + name = "penrose_keysyms"; + version = "0.1.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "7a574df0fe3d7e0bb1fd297dd722d8aea8ea33a734d862451509814062bec2d6"; + }; + dependencies = { + strum = rustPackages."registry+https://github.com/rust-lang/crates.io-index".strum."0.20.0" {inherit profileName;}; + strum_macros = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".strum_macros."0.20.1" {profileName = "__noProfile";}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.10" = overridableMkRustCrate (profileName: rec { + name = "pin-project-lite"; + version = "0.2.10"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".pin-utils."0.1.0" = overridableMkRustCrate (profileName: rec { + name = "pin-utils"; + version = "0.1.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" = overridableMkRustCrate (profileName: rec { + name = "proc-macro2"; + version = "1.0.63"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"; + }; + features = builtins.concatLists [ + ["default"] + ["proc-macro"] + ]; + dependencies = { + unicode_ident = rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.10" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" = overridableMkRustCrate (profileName: rec { + name = "quote"; + version = "1.0.29"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"; + }; + features = builtins.concatLists [ + ["default"] + ["proc-macro"] + ]; + dependencies = { + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".regex."1.9.0" = overridableMkRustCrate (profileName: rec { + name = "regex"; + version = "1.9.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484"; + }; + features = builtins.concatLists [ + ["std"] + ["unicode-case"] + ["unicode-perl"] + ]; + dependencies = { + aho_corasick = rustPackages."registry+https://github.com/rust-lang/crates.io-index".aho-corasick."1.0.2" {inherit profileName;}; + memchr = rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" {inherit profileName;}; + regex_automata = rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-automata."0.3.0" {inherit profileName;}; + regex_syntax = rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.7.3" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".regex-automata."0.1.10" = overridableMkRustCrate (profileName: rec { + name = "regex-automata"; + version = "0.1.10"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"; + }; + features = builtins.concatLists [ + ["default"] + ["regex-syntax"] + ["std"] + ]; + dependencies = { + regex_syntax = rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.29" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".regex-automata."0.3.0" = overridableMkRustCrate (profileName: rec { + name = "regex-automata"; + version = "0.3.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56"; + }; + features = builtins.concatLists [ + ["alloc"] + ["meta"] + ["nfa-pikevm"] + ["nfa-thompson"] + ["std"] + ["syntax"] + ["unicode-case"] + ["unicode-perl"] + ["unicode-word-boundary"] + ]; + dependencies = { + aho_corasick = rustPackages."registry+https://github.com/rust-lang/crates.io-index".aho-corasick."1.0.2" {inherit profileName;}; + memchr = rustPackages."registry+https://github.com/rust-lang/crates.io-index".memchr."2.5.0" {inherit profileName;}; + regex_syntax = rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.7.3" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.6.29" = overridableMkRustCrate (profileName: rec { + name = "regex-syntax"; + version = "0.6.29"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"; + }; + features = builtins.concatLists [ + ["default"] + ["unicode"] + ["unicode-age"] + ["unicode-bool"] + ["unicode-case"] + ["unicode-gencat"] + ["unicode-perl"] + ["unicode-script"] + ["unicode-segment"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".regex-syntax."0.7.3" = overridableMkRustCrate (profileName: rec { + name = "regex-syntax"; + version = "0.7.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846"; + }; + features = builtins.concatLists [ + ["std"] + ["unicode-case"] + ["unicode-perl"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".rustversion."1.0.13" = overridableMkRustCrate (profileName: rec { + name = "rustversion"; + version = "1.0.13"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".sharded-slab."0.1.4" = overridableMkRustCrate (profileName: rec { + name = "sharded-slab"; + version = "0.1.4"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"; + }; + dependencies = { + lazy_static = rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".smallvec."1.11.0" = overridableMkRustCrate (profileName: rec { + name = "smallvec"; + version = "1.11.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".strum."0.20.0" = overridableMkRustCrate (profileName: rec { + name = "strum"; + version = "0.20.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c"; + }; + features = builtins.concatLists [ + ["derive"] + ["strum_macros"] + ]; + dependencies = { + strum_macros = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".strum_macros."0.20.1" {profileName = "__noProfile";}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".strum."0.24.1" = overridableMkRustCrate (profileName: rec { + name = "strum"; + version = "0.24.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"; + }; + features = builtins.concatLists [ + ["default"] + ["derive"] + ["std"] + ["strum_macros"] + ]; + dependencies = { + strum_macros = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".strum_macros."0.24.3" {profileName = "__noProfile";}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".strum_macros."0.20.1" = overridableMkRustCrate (profileName: rec { + name = "strum_macros"; + version = "0.20.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149"; + }; + dependencies = { + heck = rustPackages."registry+https://github.com/rust-lang/crates.io-index".heck."0.3.3" {inherit profileName;}; + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" {inherit profileName;}; + syn = rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.109" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".strum_macros."0.24.3" = overridableMkRustCrate (profileName: rec { + name = "strum_macros"; + version = "0.24.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"; + }; + dependencies = { + heck = rustPackages."registry+https://github.com/rust-lang/crates.io-index".heck."0.4.1" {inherit profileName;}; + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" {inherit profileName;}; + rustversion = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".rustversion."1.0.13" {profileName = "__noProfile";}; + syn = rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."1.0.109" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".syn."1.0.109" = overridableMkRustCrate (profileName: rec { + name = "syn"; + version = "1.0.109"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"; + }; + features = builtins.concatLists [ + ["clone-impls"] + ["default"] + ["derive"] + ["extra-traits"] + ["parsing"] + ["printing"] + ["proc-macro"] + ["quote"] + ]; + dependencies = { + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" {inherit profileName;}; + unicode_ident = rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.10" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".syn."2.0.23" = overridableMkRustCrate (profileName: rec { + name = "syn"; + version = "2.0.23"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"; + }; + features = builtins.concatLists [ + ["clone-impls"] + ["default"] + ["derive"] + ["extra-traits"] + ["full"] + ["parsing"] + ["printing"] + ["proc-macro"] + ["quote"] + ["visit-mut"] + ]; + dependencies = { + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" {inherit profileName;}; + unicode_ident = rustPackages."registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.10" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".thiserror."1.0.41" = overridableMkRustCrate (profileName: rec { + name = "thiserror"; + version = "1.0.41"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"; + }; + dependencies = { + thiserror_impl = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".thiserror-impl."1.0.41" {profileName = "__noProfile";}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".thiserror-impl."1.0.41" = overridableMkRustCrate (profileName: rec { + name = "thiserror-impl"; + version = "1.0.41"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"; + }; + dependencies = { + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" {inherit profileName;}; + syn = rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."2.0.23" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".thread_local."1.1.7" = overridableMkRustCrate (profileName: rec { + name = "thread_local"; + version = "1.1.7"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"; + }; + dependencies = { + cfg_if = rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" {inherit profileName;}; + once_cell = rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.18.0" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" = overridableMkRustCrate (profileName: rec { + name = "tracing"; + version = "0.1.37"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"; + }; + features = builtins.concatLists [ + ["attributes"] + ["default"] + ["log"] + ["std"] + ["tracing-attributes"] + ]; + dependencies = { + cfg_if = rustPackages."registry+https://github.com/rust-lang/crates.io-index".cfg-if."1.0.0" {inherit profileName;}; + log = rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.19" {inherit profileName;}; + pin_project_lite = rustPackages."registry+https://github.com/rust-lang/crates.io-index".pin-project-lite."0.2.10" {inherit profileName;}; + tracing_attributes = buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-attributes."0.1.26" {profileName = "__noProfile";}; + tracing_core = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.31" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".tracing-attributes."0.1.26" = overridableMkRustCrate (profileName: rec { + name = "tracing-attributes"; + version = "0.1.26"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"; + }; + dependencies = { + proc_macro2 = rustPackages."registry+https://github.com/rust-lang/crates.io-index".proc-macro2."1.0.63" {inherit profileName;}; + quote = rustPackages."registry+https://github.com/rust-lang/crates.io-index".quote."1.0.29" {inherit profileName;}; + syn = rustPackages."registry+https://github.com/rust-lang/crates.io-index".syn."2.0.23" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.31" = overridableMkRustCrate (profileName: rec { + name = "tracing-core"; + version = "0.1.31"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"; + }; + features = builtins.concatLists [ + ["default"] + ["once_cell"] + ["std"] + ["valuable"] + ]; + dependencies = { + once_cell = rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.18.0" {inherit profileName;}; + ${ + if false + then "valuable" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".valuable."0.1.0" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".tracing-log."0.1.3" = overridableMkRustCrate (profileName: rec { + name = "tracing-log"; + version = "0.1.3"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"; + }; + features = builtins.concatLists [ + ["log-tracer"] + ["std"] + ]; + dependencies = { + lazy_static = rustPackages."registry+https://github.com/rust-lang/crates.io-index".lazy_static."1.4.0" {inherit profileName;}; + log = rustPackages."registry+https://github.com/rust-lang/crates.io-index".log."0.4.19" {inherit profileName;}; + tracing_core = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.31" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".tracing-subscriber."0.3.17" = overridableMkRustCrate (profileName: rec { + name = "tracing-subscriber"; + version = "0.3.17"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"; + }; + features = builtins.concatLists [ + ["alloc"] + ["ansi"] + ["default"] + ["env-filter"] + ["fmt"] + ["matchers"] + ["nu-ansi-term"] + ["once_cell"] + ["regex"] + ["registry"] + ["sharded-slab"] + ["smallvec"] + ["std"] + ["thread_local"] + ["tracing"] + ["tracing-log"] + ]; + dependencies = { + matchers = rustPackages."registry+https://github.com/rust-lang/crates.io-index".matchers."0.1.0" {inherit profileName;}; + nu_ansi_term = rustPackages."registry+https://github.com/rust-lang/crates.io-index".nu-ansi-term."0.46.0" {inherit profileName;}; + once_cell = rustPackages."registry+https://github.com/rust-lang/crates.io-index".once_cell."1.18.0" {inherit profileName;}; + regex = rustPackages."registry+https://github.com/rust-lang/crates.io-index".regex."1.9.0" {inherit profileName;}; + sharded_slab = rustPackages."registry+https://github.com/rust-lang/crates.io-index".sharded-slab."0.1.4" {inherit profileName;}; + smallvec = rustPackages."registry+https://github.com/rust-lang/crates.io-index".smallvec."1.11.0" {inherit profileName;}; + thread_local = rustPackages."registry+https://github.com/rust-lang/crates.io-index".thread_local."1.1.7" {inherit profileName;}; + tracing = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing."0.1.37" {inherit profileName;}; + tracing_core = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-core."0.1.31" {inherit profileName;}; + tracing_log = rustPackages."registry+https://github.com/rust-lang/crates.io-index".tracing-log."0.1.3" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".unicode-ident."1.0.10" = overridableMkRustCrate (profileName: rec { + name = "unicode-ident"; + version = "1.0.10"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".unicode-segmentation."1.10.1" = overridableMkRustCrate (profileName: rec { + name = "unicode-segmentation"; + version = "1.10.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".valuable."0.1.0" = overridableMkRustCrate (profileName: rec { + name = "valuable"; + version = "0.1.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"; + }; + features = builtins.concatLists [ + ["alloc"] + ["std"] + ]; + }); + + "registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" = overridableMkRustCrate (profileName: rec { + name = "winapi"; + version = "0.3.9"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"; + }; + features = builtins.concatLists [ + ["consoleapi"] + ["errhandlingapi"] + ["fileapi"] + ["handleapi"] + ["processenv"] + ["sysinfoapi"] + ["winsock2"] + ]; + dependencies = { + ${ + if hostPlatform.config == "i686-pc-windows-gnu" + then "winapi_i686_pc_windows_gnu" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi-i686-pc-windows-gnu."0.4.0" {inherit profileName;}; + ${ + if hostPlatform.config == "x86_64-pc-windows-gnu" + then "winapi_x86_64_pc_windows_gnu" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi-x86_64-pc-windows-gnu."0.4.0" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".winapi-i686-pc-windows-gnu."0.4.0" = overridableMkRustCrate (profileName: rec { + name = "winapi-i686-pc-windows-gnu"; + version = "0.4.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".winapi-wsapoll."0.1.1" = overridableMkRustCrate (profileName: rec { + name = "winapi-wsapoll"; + version = "0.1.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"; + }; + dependencies = { + ${ + if hostPlatform.isWindows + then "winapi" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".winapi-x86_64-pc-windows-gnu."0.4.0" = overridableMkRustCrate (profileName: rec { + name = "winapi-x86_64-pc-windows-gnu"; + version = "0.4.0"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".x11rb."0.11.1" = overridableMkRustCrate (profileName: rec { + name = "x11rb"; + version = "0.11.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "cdf3c79412dd91bae7a7366b8ad1565a85e35dd049affc3a6a2c549e97419617"; + }; + features = builtins.concatLists [ + ["allow-unsafe-code"] + ["libc"] + ["randr"] + ["render"] + ]; + dependencies = { + gethostname = rustPackages."registry+https://github.com/rust-lang/crates.io-index".gethostname."0.2.3" {inherit profileName;}; + libc = rustPackages."registry+https://github.com/rust-lang/crates.io-index".libc."0.2.147" {inherit profileName;}; + ${ + if hostPlatform.isUnix + then "nix" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".nix."0.25.1" {inherit profileName;}; + ${ + if hostPlatform.isWindows + then "winapi" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi."0.3.9" {inherit profileName;}; + ${ + if hostPlatform.isWindows + then "winapi_wsapoll" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".winapi-wsapoll."0.1.1" {inherit profileName;}; + x11rb_protocol = rustPackages."registry+https://github.com/rust-lang/crates.io-index".x11rb-protocol."0.11.1" {inherit profileName;}; + }; + }); + + "registry+https://github.com/rust-lang/crates.io-index".x11rb-protocol."0.11.1" = overridableMkRustCrate (profileName: rec { + name = "x11rb-protocol"; + version = "0.11.1"; + registry = "registry+https://github.com/rust-lang/crates.io-index"; + src = fetchCratesIo { + inherit name version; + sha256 = "e0b1513b141123073ce54d5bb1d33f801f17508fbd61e02060b1214e96d39c56"; + }; + features = builtins.concatLists [ + ["default"] + ["nix"] + ["randr"] + ["render"] + ["std"] + ]; + dependencies = { + ${ + if hostPlatform.isUnix + then "nix" + else null + } = + rustPackages."registry+https://github.com/rust-lang/crates.io-index".nix."0.25.1" {inherit profileName;}; + }; + }); +} diff --git a/config/penrose/flake.lock b/config/penrose/flake.lock new file mode 100644 index 00000000..1141be60 --- /dev/null +++ b/config/penrose/flake.lock @@ -0,0 +1,182 @@ +{ + "nodes": { + "cargo2nix": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1682891040, + "narHash": "sha256-hjajsi7lq24uYitUh4o04UJi1g0Qe6ruPL0s5DgPQMY=", + "owner": "cargo2nix", + "repo": "cargo2nix", + "rev": "0167b39f198d72acdf009265634504fd6f5ace15", + "type": "github" + }, + "original": { + "owner": "cargo2nix", + "ref": "release-0.11.0", + "repo": "cargo2nix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1654275867, + "narHash": "sha256-pt14ZE4jVPGvfB2NynGsl34pgXfOqum5YJNpDK4+b9E=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "7a20c208aacf4964c19186dcad51f89165dc7ed0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1681358109, + "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "cargo2nix": "cargo2nix", + "flake-utils": [ + "cargo2nix", + "flake-utils" + ], + "nixpkgs": [ + "cargo2nix", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "cargo2nix", + "flake-utils" + ], + "nixpkgs": [ + "cargo2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653878966, + "narHash": "sha256-T51Gck/vrJZi1m+uTbhEFTRgZmE59sydVONadADv358=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "8526d618af012a923ca116be9603e818b502a8db", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1688524421, + "narHash": "sha256-EFauqXKKjbJKPWv3kbzl1lm1GnXl0+DBK4RcLuFndZQ=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ab050286f18ea354bfe7a49ca8ddcbd633cae1ca", + "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" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/config/penrose/flake.nix b/config/penrose/flake.nix new file mode 100644 index 00000000..cdcd8cdb --- /dev/null +++ b/config/penrose/flake.nix @@ -0,0 +1,72 @@ +# Regernate Cargo2Nix: nix run github:cargo2nix/cargo2nix +{ + inputs = { + cargo2nix.url = "github:cargo2nix/cargo2nix/release-0.11.0"; + flake-utils.follows = "cargo2nix/flake-utils"; + nixpkgs.follows = "cargo2nix/nixpkgs"; + rust-overlay.url = "github:oxalica/rust-overlay"; + }; + + outputs = { + self, + cargo2nix, + rust-overlay, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem ( + system: let + pkgs = import nixpkgs { + inherit system; + overlays = [cargo2nix.overlays.default rust-overlay.overlays.default]; + }; + + rustPkgs = pkgs.rustBuilder.makePackageSet { + rustChannel = "stable"; + rustVersion = "1.70.0"; + packageFun = import ./default.nix; + packageOverrides = pkgs: + pkgs.rustBuilder.overrides.all + ++ [ + (pkgs.rustBuilder.rustLib.makeOverride { + name = "orcinus-wm"; + overrideAttrs = drv: { + propagatedNativeBuildInputs = + drv.propagatedNativeBuildInputs + or [] + ++ [ + pkgs.xorg.libxcb + pkgs.xorg.xmodmap + ]; + }; + }) + ]; + }; + + workspaceShell = rustPkgs.workspaceShell { + buildInputs = with pkgs; [ + rust-analyzer + xorg.libxcb + xorg.xmodmap + alejandra + ]; + + nativeBuildInputs = with pkgs; [ + rust-bin.stable.latest.default + ]; + }; + in rec { + # Executed by `nix build` + packages = { + orcinusWM = (rustPkgs.workspace.orcinus-wm {}).bin; + default = packages.orcinusWM; + }; + + # Used by `nix develop` + devShells.default = workspaceShell; + + # Executed by `nix run` :TODO| xephyr script on run + # apps.default = packages.orcinusWM; + } + ); +} diff --git a/config/penrose/src/main.rs b/config/penrose/src/main.rs new file mode 100644 index 00000000..b938312c --- /dev/null +++ b/config/penrose/src/main.rs @@ -0,0 +1,85 @@ +//! penrose :: minimal configuration +//! +//! This file will give you a functional if incredibly minimal window manager that +//! has multiple workspaces and simple client / workspace movement. +use penrose::{ + builtin::{ + actions::{exit, modify_with, send_layout_message, spawn}, + layout::messages::{ExpandMain, IncMain, ShrinkMain}, + }, + core::{ + bindings::{parse_keybindings_with_xmodmap, KeyEventHandler}, + Config, WindowManager, + }, + map, + x11rb::RustConn, + Result, +}; +use std::collections::HashMap; +use tracing_subscriber::{self, prelude::*}; + +fn raw_key_bindings() -> HashMap>> { + let mut raw_bindings = map! { + map_keys: |k: &str| k.to_string(); + + "M-j" => modify_with(|cs| cs.focus_down()), + "M-k" => modify_with(|cs| cs.focus_up()), + "M-S-j" => modify_with(|cs| cs.swap_down()), + "M-S-k" => modify_with(|cs| cs.swap_up()), + "M-S-q" => modify_with(|cs| cs.kill_focused()), + "M-Tab" => modify_with(|cs| cs.toggle_tag()), + "M-bracketright" => modify_with(|cs| cs.next_screen()), + "M-bracketleft" => modify_with(|cs| cs.previous_screen()), + "M-grave" => modify_with(|cs| cs.next_layout()), + "M-S-grave" => modify_with(|cs| cs.previous_layout()), + "M-S-Up" => send_layout_message(|| IncMain(1)), + "M-S-Down" => send_layout_message(|| IncMain(-1)), + "M-S-Right" => send_layout_message(|| ExpandMain), + "M-S-Left" => send_layout_message(|| ShrinkMain), + "M-semicolon" => spawn("dmenu_run"), + "M-Return" => spawn("st"), + "M-A-Escape" => exit(), + }; + + for tag in &["1", "2", "3", "4", "5", "6", "7", "8", "9"] { + raw_bindings.extend([ + ( + format!("M-{tag}"), + modify_with(move |client_set| client_set.focus_tag(tag)), + ), + ( + format!("M-S-{tag}"), + modify_with(move |client_set| client_set.move_focused_to_tag(tag)), + ), + ]); + } + + raw_bindings +} + +fn main() -> Result<()> { + tracing_subscriber::fmt() + .with_env_filter("info") + .finish() + .init(); + + let conn = RustConn::new()?; + let key_bindings = parse_keybindings_with_xmodmap(raw_key_bindings())?; + let wm = WindowManager::new(Config::default(), key_bindings, HashMap::new(), conn)?; + + wm.run() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn bindings_parse_correctly_with_xmodmap() { + let res = parse_keybindings_with_xmodmap(raw_key_bindings()); + + if let Err(e) = res { + panic!("{e}"); + } + } +} diff --git a/config/penrose/xephyr.sh b/config/penrose/xephyr.sh new file mode 100755 index 00000000..a2743849 --- /dev/null +++ b/config/penrose/xephyr.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Run an example build of penrose in an embeded Xephyr session. +# +# This is intended to be run via the `run-embeded` makefile target +# which will also handle compilation of the examples themselves. +# You will need to have the xephyr utility installed on your system +# for this script to run: +# https://wiki.archlinux.org/title/Xephyr +# +# usage: +# EXAMPLE=with_layout_transformers APP=st make run-embeded +# +CUR_DIR="$(dirname $(readlink -f $0))" +SCREEN_SIZE=${SCREEN_SIZE:-800x600} +XDISPLAY=${XDISPLAY:-:1} +EXAMPLE=${EXAMPLE:-orcinus-wm} +APP=${APP:-st} + +touch $CUR_DIR/../xephyr.log + +Xephyr +extension RANDR -screen ${SCREEN_SIZE} ${XDISPLAY} -ac & +XEPHYR_PID=$! + +sleep 1 +env DISPLAY=${XDISPLAY} "$CUR_DIR/result-bin/bin/$EXAMPLE" 2>&1 $CUR_DIR/xephyr.log & +WM_PID=$! + +trap "kill $XEPHYR_PID && kill $WM_PID && rm $CUR_DIR/xephyr.log" SIGINT SIGTERM exit + +env DISPLAY=${XDISPLAY} ${APP} & + +tail -f $CUR_DIR/../xephyr.log + +wait $WM_PID +kill $XEPHYR_PID diff --git a/modules/desktop/skeleton/penrose.nix b/modules/desktop/skeleton/penrose.nix new file mode 100644 index 00000000..ee94f09f --- /dev/null +++ b/modules/desktop/skeleton/penrose.nix @@ -0,0 +1,69 @@ +{ + inputs, + options, + config, + lib, + pkgs, + ... +}: let + inherit (lib.attrsets) attrValues; + inherit (lib.meta) getExe; + inherit (lib.modules) mkIf; +in { + options.modules.desktop.penrose = let + inherit (lib.options) mkEnableOption; + in {enable = mkEnableOption "Rust-based tiling window manager";}; + + config = mkIf config.modules.desktop.penrose.enable { + modules.desktop = { + envProto = "x11"; + toolset.fileManager = { + enable = true; + program = "thunar"; + }; + extensions = { + fcitx5.enable = true; + mimeApps.enable = true; # mimeApps -> default launch application + picom = { + enable = true; + animation.enable = true; + }; + dunst.enable = true; + rofi.enable = true; + taffybar.enable = true; + # elkowar.enable = true; + }; + }; + modules.shell.scripts = { + brightness.enable = true; + microphone.enable = true; + volume.enable = true; + screenshot.enable = true; + }; + modules.hardware.kmonad.enable = true; + + environment.systemPackages = attrValues { + inherit (pkgs) libnotify playerctl gxmessage xdotool feh; + }; + + services.greetd = { + settings.initial_session = {command = "none+penrose";}; + }; + + services.xserver = { + windowManager.session = [ + { + name = "penrose"; + start = '' + /usr/bin/env orcinusWM & + waitPID=$! + ''; + } + ]; + }; + + hm.xsession.windowManager = { + command = "${getExe pkgs.my.orcinusWM}"; + }; + }; +}