Compare
9026be364d5e7ec04c739bfbc5fcc20b03bddf43
…
new-bootloader-next
· 41 commits
Commits
@@ -1,3 +1,4 @@
current
home-config/sway/monitors
*.gif
+home-config/fish/fish_variables
@@ -1,9 +1,9 @@
(list (channel
(name 'guix)
- (url "https://git.savannah.gnu.org/git/guix.git")
+ (url "https://git.rschanz.org/ryan77627/guix.git")
(branch "master")
(commit
- "c3f15443bc6d457758aad1326dcc6dcad9cf8d6e")
+ "308877be17b2c2c92d972e105e8cc6a782ab4c82")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
@@ -14,7 +14,7 @@
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(commit
- "a4356defe7d4ee9b0ac6789d67f94d00714a9409")
+ "ea84538b887df3aa3bdd61d5e4c284f1548e5520")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
@@ -25,7 +25,7 @@
(url "https://codeberg.org/hako/rosenthal.git")
(branch "trunk")
(commit
- "2c967e048f53aaaef002f114a9ee6c985be1278b")
+ "1deb97ada4d7d8c2d501738fcc1532a605de51a7")
(introduction
(make-channel-introduction
"7677db76330121a901604dfbad19077893865f35"
@@ -10,6 +10,16 @@ signature-file = ~/.config/aerc/signature_personal
check-mail = 5m
aliases = Ryan S <ryan+ritlugdemo@rschanz.org>, Ryan Schanzenbacher <ryan+guixdevel@rschanz.org>
+[Development]
+source = imaps://ryan_devel%40rschanz.org@mail.rschanz.org:993
+source-cred-cmd = pass emails/development 2>/dev/null | tr -d '\n'
+outgoing = smtps://ryan_devel%40rschanz.org@mail.rschanz.org:465
+outgoing-cred-cmd = pass emails/development 2>/dev/null | tr -d '\n'
+default = INBOX
+from = Ryan <ryan_devel@rschanz.org>
+copy-to = Sent
+check-mail = 5m
+
[School]
source = imaps+oauthbearer://rjs1877%40rit.edu@imap.gmail.com:993?token_endpoint=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken&client_id=667738788924-0rdfvaq9ijfo1vk4474eb3quf8206h2t.apps.googleusercontent.com&client_secret=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
source-cred-cmd = pass emails/rit_personal 2>/dev/null | tr -d '\n'
@@ -51,5 +51,4 @@ export XDG_DATA_DIRS=$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:/home/ryan/.l
#gpgconf --launch gpg-agent
export GPG_TTY=$(tty)
-# Replace process with fish
-exec fish
+eval "$(zoxide init bash)"
@@ -0,0 +1,138 @@
+# Setup Nix
+
+# We need to distinguish between single-user and multi-user installs.
+# This is difficult because there's no official way to do this.
+# We could look for the presence of /nix/var/nix/daemon-socket/socket but this will fail if the
+# daemon hasn't started yet. /nix/var/nix/daemon-socket will exist if the daemon has ever run, but
+# I don't think there's any protection against accidentally running `nix-daemon` as a user.
+# We also can't just look for /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh because
+# older single-user installs used the default profile instead of a per-user profile.
+# We can still check for it first, because all multi-user installs should have it, and so if it's
+# not present that's a pretty big indicator that this is a single-user install. If it does exist,
+# we still need to verify the install type. To that end we'll look for a root owner and sticky bit
+# on /nix/store. Multi-user installs set both, single-user installs don't. It's certainly possible
+# someone could do a single-user install as root and then manually set the sticky bit but that
+# would be extremely unusual.
+
+set -l nix_profile_path /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
+set -l single_user_profile_path ~/.nix-profile/etc/profile.d/nix.sh
+if test -e $nix_profile_path
+ # The path exists. Double-check that this is a multi-user install.
+ # We can't just check for ~/.nix-profile/… because this may be a single-user install running as
+ # the wrong user.
+
+ # stat is not portable. Splitting the output of ls -nd is reliable on most platforms.
+ set -l owner (string split -n ' ' (command ls -nd /nix/store 2>/dev/null))[3]
+ if not test -k /nix/store -a $owner -eq 0
+ # /nix/store is either not owned by root or not sticky. Assume single-user.
+ set nix_profile_path $single_user_profile_path
+ end
+else
+ # The path doesn't exist. Assume single-user
+ set nix_profile_path $single_user_profile_path
+end
+
+if test -e $nix_profile_path
+ # Source the nix setup script
+ # We're going to run the regular Nix profile under bash and then print out a few variables
+ for line in (command env -u BASH_ENV bash -c '. "$0"; for name in PATH "${!NIX_@}"; do printf "%s=%s\0" "$name" "${!name}"; done' $nix_profile_path | string split0)
+ set -xg (string split -m 1 = $line)
+ end
+
+ # Insert Nix's fish share directories into fish's special variables.
+ # nixpkgs-installed fish tries to set these up already if NIX_PROFILES is defined, which won't
+ # be the case when sourcing $__fish_data_dir/share/config.fish normally, but might be for a
+ # recursive invocation. To guard against that, we'll only insert paths that don't already exit.
+ # Furthermore, for the vendor_conf.d sourcing, we'll use the pre-existing presence of a path in
+ # $fish_function_path to determine whether we want to source the relevant vendor_conf.d folder.
+
+ # To start, let's locally define NIX_PROFILES if it doesn't already exist.
+ set -al NIX_PROFILES
+ if test (count $NIX_PROFILES) -eq 0
+ set -a NIX_PROFILES $HOME/.nix-profile
+ end
+ # Replicate the logic from nixpkgs version of $__fish_data_dir/__fish_build_paths.fish.
+ set -l __nix_profile_paths (string split ' ' -- $NIX_PROFILES)[-1..1]
+ set -l __extra_completionsdir \
+ $__nix_profile_paths/etc/fish/completions \
+ $__nix_profile_paths/share/fish/vendor_completions.d
+ set -l __extra_functionsdir \
+ $__nix_profile_paths/etc/fish/functions \
+ $__nix_profile_paths/share/fish/vendor_functions.d
+ set -l __extra_confdir \
+ $__nix_profile_paths/etc/fish/conf.d \
+ $__nix_profile_paths/share/fish/vendor_conf.d \
+
+ ### Configure fish_function_path ###
+ # Remove any of our extra paths that may already exist.
+ # Record the equivalent __extra_confdir path for any function path that exists.
+ set -l existing_conf_paths
+ for path in $__extra_functionsdir
+ if set -l idx (contains --index -- $path $fish_function_path)
+ set -e fish_function_path[$idx]
+ set -a existing_conf_paths $__extra_confdir[(contains --index -- $path $__extra_functionsdir)]
+ end
+ end
+ # Insert the paths before $__fish_data_dir.
+ if set -l idx (contains --index -- $__fish_data_dir/functions $fish_function_path)
+ # Fish has no way to simply insert into the middle of an array.
+ set -l new_path $fish_function_path[1..$idx]
+ set -e new_path[$idx]
+ set -a new_path $__extra_functionsdir
+ set fish_function_path $new_path $fish_function_path[$idx..-1]
+ else
+ set -a fish_function_path $__extra_functionsdir
+ end
+
+ ### Configure fish_complete_path ###
+ # Remove any of our extra paths that may already exist.
+ for path in $__extra_completionsdir
+ if set -l idx (contains --index -- $path $fish_complete_path)
+ set -e fish_complete_path[$idx]
+ end
+ end
+ # Insert the paths before $__fish_data_dir.
+ if set -l idx (contains --index -- $__fish_data_dir/completions $fish_complete_path)
+ set -l new_path $fish_complete_path[1..$idx]
+ set -e new_path[$idx]
+ set -a new_path $__extra_completionsdir
+ set fish_complete_path $new_path $fish_complete_path[$idx..-1]
+ else
+ set -a fish_complete_path $__extra_completionsdir
+ end
+
+ ### Source conf directories ###
+ # The built-in directories were already sourced during shell initialization.
+ # Any __extra_confdir that came from $__fish_data_dir/__fish_build_paths.fish was also sourced.
+ # As explained above, we're using the presence of pre-existing paths in $fish_function_path as a
+ # signal that the corresponding conf dir has also already been sourced.
+ # In order to simulate this, we'll run through the same algorithm as found in
+ # $__fish_data_dir/config.fish except we'll avoid sourcing the file if it comes from an
+ # already-sourced location.
+ # Caveats:
+ # * Files will be sourced in a different order than we'd ideally do (because we're coming in
+ # after the fact to source them).
+ # * If there are existing extra conf paths, files in them may have been sourced that should have
+ # been suppressed by paths we're inserting in front.
+ # * Similarly any files in $__fish_data_dir/vendor_conf.d that should have been suppressed won't
+ # have been.
+ set -l sourcelist
+ for file in $__fish_config_dir/conf.d/*.fish $__fish_sysconf_dir/conf.d/*.fish
+ # We know these paths were sourced already. Just record them.
+ set -l basename (string replace -r '^.*/' '' -- $file)
+ contains -- $basename $sourcelist
+ or set -a sourcelist $basename
+ end
+ for root in $__extra_confdir
+ for file in $root/*.fish
+ set -l basename (string replace -r '^.*/' '' -- $file)
+ contains -- $basename $sourcelist
+ and continue
+ set -a sourcelist $basename
+ contains -- $root $existing_conf_paths
+ and continue # this is a pre-existing path, it will have been sourced already
+ [ -f $file -a -r $file ]
+ and source $file
+ end
+ end
+end
@@ -1,4 +1,29 @@
+if status is-login
+ eval "$(guix package --search-paths \
+ -p ~/.config/guix/current \
+ -p ~/.guix-profile \
+ -p /run/current-system/profile)"
+
+ fenv source /etc/profile
+ set -gx HOME_ENVIRONMENT $HOME/.guix-home
+ fenv source $HOME_ENVIRONMENT/setup-environment
+ fenv $HOME_ENVIRONMENT/on-first-login
+ fish_add_path -Pp ~/.local/bin
+ fish_add_path -Pp ~/.guix-home/profile/bin
+ fish_add_path -Pp /run/setuid-programs
+ fish_add_path -Pp ~/.nix-profile/bin
+ fish_add_path -Pp ~/.go/bin
+ set -gx GOPATH ~/.go
+ set -gx EDITOR nvim
+ set -gax --path XDG_DATA_DIRS ~/.nix-profile/share
+ # Bad
+ find ~/.config/fish/ -name "*tmp*" -exec rm {} +
+end
if status is-interactive
+ set -gax --path XDG_DATA_DIRS ~/.local/share/flatpak/exports/share
+
+ set GPG_TTY $(tty)
+ export GPG_TTY
# Commands to run in interactive sessions can go here
alias quit exit
alias cat "bat --paging=never"
@@ -12,11 +37,7 @@ if status is-interactive
alias ls "ls -p --color=auto"
alias grep "grep --color=auto"
alias ll "ls -l"
- set -gx EDITOR nvim
- set -gax XDG_DATA_DIRS ~/.nix-profile/share
- fish_add_path ~/.local/bin
- fish_add_path ~/.nix-profile/bin
- zoxide init fish | source
+ zoxide init --cmd cd fish | source
end
@@ -1,3 +1,5 @@
jorgebucaran/fisher
ilancosman/tide@v6
patrickf1/fzf.fish
+lilyball/nix-env.fish
+oh-my-fish/plugin-foreign-env
@@ -1,209 +0,0 @@
-# This file contains fish universal variable definitions.
-# VERSION: 3.0
-SETUVAR VIRTUAL_ENV_DISABLE_PROMPT:true
-SETUVAR __fish_initialized:3400
-SETUVAR _fisher_ilancosman_2F_tide_40_v6_files:\x7e/\x2econfig/fish/functions/_tide_1_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_2_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_cache_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_detect_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_find_and_remove\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_fish_colorize\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_aws\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_character\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_cmd_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_crystal\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_direnv\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_distrobox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_docker\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_elixir\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_gcloud\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_go\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_java\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_kubectl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_nix_shell\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_node\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_php\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_private_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_pulumi\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_python\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_ruby\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_rustc\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_shlvl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_terraform\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_toolbox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_vi_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_zig\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_parent_dirs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_print_item\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_pwd\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_remove_unusable_items\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_bug\x2dreport\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_configure\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_reload\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/tide\x1e\x7e/\x2econfig/fish/functions/tide\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_tide_init\x2efish\x1e\x7e/\x2econfig/fish/completions/tide\x2efish
-SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
-SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
-SETUVAR _fisher_plugins:jorgebucaran/fisher\x1eilancosman/tide\x40v6\x1epatrickf1/fzf\x2efish
-SETUVAR _fisher_upgraded_to_4_4:\x1d
-SETUVAR _tide_left_items:pwd\x1egit\x1enewline\x1echaracter
-SETUVAR _tide_prompt_13884:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\ue0b1\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0mmain\x1b\x5b38\x3b2\x3b255\x3b0\x3b0m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\x20\u21e11\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\x20\x2a1\x1b\x5b38\x3b2\x3b255\x3b0\x3b0m\x1b\x5b38\x3b2\x3b215\x3b175\x3b0m\x1b\x5b38\x3b2\x3b215\x3b175\x3b0m\x20\x212\x1b\x5b38\x3b2\x3b0\x3b175\x3b255m\x20\x3f1\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b135\x3b135\x3b95m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2024m\x202s\x20\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\ue0b3\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2017\x3a08\x3a10\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_16289:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2020\x3a12\x3a56\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_17673:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2011\x3a24\x3a10\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_18590:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2015\x3a38\x3a52\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_18873:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b135\x3b135\x3b95m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x203m\x200s\x20\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\ue0b3\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2017\x3a12\x3a18\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_22821:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2014\x3a24\x3a33\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_22829:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2011\x3a35\x3a00\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_24017:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2017\x3a25\x3a34\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_28874:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b135\x3b135\x3b95m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2026s\x20\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\ue0b3\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2011\x3a56\x3a53\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_7930:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2015\x3a20\x3a57\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_8003:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2015\x3a20\x3a59\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_prompt_945:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x40PWD\x40\x20\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\ue0b1\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0mmain\x1b\x5b38\x3b2\x3b255\x3b0\x3b0m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\x20\x2a1\x1b\x5b38\x3b2\x3b255\x3b0\x3b0m\x1b\x5b38\x3b2\x3b215\x3b175\x3b0m\x1b\x5b38\x3b2\x3b215\x3b175\x3b0m\x20\x214\x1b\x5b38\x3b2\x3b0\x3b175\x3b255m\x20\x3f1\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b0\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m\ue0b2\x1b\x5b38\x3b2\x3b95\x3b135\x3b135m\x1b\x5b48\x3b2\x3b48\x3b48\x3b48m\x2014\x3a34\x3a04\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b48\x3b48\x3b48m
-SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enode\x1epython\x1erustc\x1ego\x1enix_shell\x1etime
-SETUVAR fish_color_autosuggestion:brblack
-SETUVAR fish_color_cancel:\x2dr
-SETUVAR fish_color_command:blue
-SETUVAR fish_color_comment:red
-SETUVAR fish_color_cwd:green
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:green
-SETUVAR fish_color_error:brred
-SETUVAR fish_color_escape:brcyan
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_host_remote:yellow
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:brcyan
-SETUVAR fish_color_param:cyan
-SETUVAR fish_color_quote:yellow
-SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
-SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_status:red
-SETUVAR fish_color_user:brgreen
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
-SETUVAR fish_greeting:\x1d
-SETUVAR fish_key_bindings:fish_default_key_bindings
-SETUVAR fish_pager_color_completion:normal
-SETUVAR fish_pager_color_description:yellow\x1e\x2di
-SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
-SETUVAR fish_pager_color_selected_background:\x2dr
-SETUVAR fish_user_paths:/home/ryan/\x2enix\x2dprofile/bin\x1e/home/ryan/\x2elocal/bin
-SETUVAR tide_aws_bg_color:303030
-SETUVAR tide_aws_color:FF9900
-SETUVAR tide_aws_icon:\uf270
-SETUVAR tide_character_color:5FD700
-SETUVAR tide_character_color_failure:FF0000
-SETUVAR tide_character_icon:\u276f
-SETUVAR tide_character_vi_icon_default:\u276e
-SETUVAR tide_character_vi_icon_replace:\u25b6
-SETUVAR tide_character_vi_icon_visual:V
-SETUVAR tide_cmd_duration_bg_color:303030
-SETUVAR tide_cmd_duration_color:87875F
-SETUVAR tide_cmd_duration_decimals:0
-SETUVAR tide_cmd_duration_icon:\x1d
-SETUVAR tide_cmd_duration_threshold:3000
-SETUVAR tide_context_always_display:false
-SETUVAR tide_context_bg_color:303030
-SETUVAR tide_context_color_default:D7AF87
-SETUVAR tide_context_color_root:D7AF00
-SETUVAR tide_context_color_ssh:D7AF87
-SETUVAR tide_context_hostname_parts:1
-SETUVAR tide_crystal_bg_color:303030
-SETUVAR tide_crystal_color:FFFFFF
-SETUVAR tide_crystal_icon:\ue62f
-SETUVAR tide_direnv_bg_color:303030
-SETUVAR tide_direnv_bg_color_denied:303030
-SETUVAR tide_direnv_color:D7AF00
-SETUVAR tide_direnv_color_denied:FF0000
-SETUVAR tide_direnv_icon:\u25bc
-SETUVAR tide_distrobox_bg_color:303030
-SETUVAR tide_distrobox_color:FF00FF
-SETUVAR tide_distrobox_icon:\U000f01a7
-SETUVAR tide_docker_bg_color:303030
-SETUVAR tide_docker_color:2496ED
-SETUVAR tide_docker_default_contexts:default\x1ecolima
-SETUVAR tide_docker_icon:\uf308
-SETUVAR tide_elixir_bg_color:303030
-SETUVAR tide_elixir_color:4E2A8E
-SETUVAR tide_elixir_icon:\ue62d
-SETUVAR tide_gcloud_bg_color:303030
-SETUVAR tide_gcloud_color:4285F4
-SETUVAR tide_gcloud_icon:\U000f02ad
-SETUVAR tide_git_bg_color:303030
-SETUVAR tide_git_bg_color_unstable:303030
-SETUVAR tide_git_bg_color_urgent:303030
-SETUVAR tide_git_color_branch:5FD700
-SETUVAR tide_git_color_conflicted:FF0000
-SETUVAR tide_git_color_dirty:D7AF00
-SETUVAR tide_git_color_operation:FF0000
-SETUVAR tide_git_color_staged:D7AF00
-SETUVAR tide_git_color_stash:5FD700
-SETUVAR tide_git_color_untracked:00AFFF
-SETUVAR tide_git_color_upstream:5FD700
-SETUVAR tide_git_icon:\x1d
-SETUVAR tide_git_truncation_length:24
-SETUVAR tide_git_truncation_strategy:\x1d
-SETUVAR tide_go_bg_color:303030
-SETUVAR tide_go_color:00ACD7
-SETUVAR tide_go_icon:\ue627
-SETUVAR tide_java_bg_color:303030
-SETUVAR tide_java_color:ED8B00
-SETUVAR tide_java_icon:\ue256
-SETUVAR tide_jobs_bg_color:303030
-SETUVAR tide_jobs_color:5FAF00
-SETUVAR tide_jobs_icon:\uf013
-SETUVAR tide_jobs_number_threshold:1000
-SETUVAR tide_kubectl_bg_color:303030
-SETUVAR tide_kubectl_color:326CE5
-SETUVAR tide_kubectl_icon:\U000f10fe
-SETUVAR tide_left_prompt_frame_enabled:true
-SETUVAR tide_left_prompt_items:pwd\x1egit\x1enewline\x1echaracter
-SETUVAR tide_left_prompt_prefix:
-SETUVAR tide_left_prompt_separator_diff_color:\ue0b0
-SETUVAR tide_left_prompt_separator_same_color:\ue0b1
-SETUVAR tide_left_prompt_suffix:\ue0b0
-SETUVAR tide_nix_shell_bg_color:303030
-SETUVAR tide_nix_shell_color:7EBAE4
-SETUVAR tide_nix_shell_icon:\uf313
-SETUVAR tide_node_bg_color:303030
-SETUVAR tide_node_color:44883E
-SETUVAR tide_node_icon:\ue24f
-SETUVAR tide_os_bg_color:303030
-SETUVAR tide_os_color:EEEEEE
-SETUVAR tide_os_icon:\uf17c
-SETUVAR tide_php_bg_color:303030
-SETUVAR tide_php_color:617CBE
-SETUVAR tide_php_icon:\ue608
-SETUVAR tide_private_mode_bg_color:303030
-SETUVAR tide_private_mode_color:FFFFFF
-SETUVAR tide_private_mode_icon:\U000f05f9
-SETUVAR tide_prompt_add_newline_before:false
-SETUVAR tide_prompt_color_frame_and_connection:6C6C6C
-SETUVAR tide_prompt_color_separator_same_color:949494
-SETUVAR tide_prompt_icon_connection:\x20
-SETUVAR tide_prompt_min_cols:34
-SETUVAR tide_prompt_pad_items:true
-SETUVAR tide_prompt_transient_enabled:true
-SETUVAR tide_pulumi_bg_color:303030
-SETUVAR tide_pulumi_color:F7BF2A
-SETUVAR tide_pulumi_icon:\uf1b2
-SETUVAR tide_pwd_bg_color:303030
-SETUVAR tide_pwd_color_anchors:00AFFF
-SETUVAR tide_pwd_color_dirs:0087AF
-SETUVAR tide_pwd_color_truncated_dirs:8787AF
-SETUVAR tide_pwd_icon:\x1d
-SETUVAR tide_pwd_icon_home:\x1d
-SETUVAR tide_pwd_icon_unwritable:\uf023
-SETUVAR tide_pwd_markers:\x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig
-SETUVAR tide_python_bg_color:303030
-SETUVAR tide_python_color:00AFAF
-SETUVAR tide_python_icon:\U000f0320
-SETUVAR tide_right_prompt_frame_enabled:false
-SETUVAR tide_right_prompt_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig\x1etime
-SETUVAR tide_right_prompt_prefix:\ue0b2
-SETUVAR tide_right_prompt_separator_diff_color:\ue0b2
-SETUVAR tide_right_prompt_separator_same_color:\ue0b3
-SETUVAR tide_right_prompt_suffix:
-SETUVAR tide_ruby_bg_color:303030
-SETUVAR tide_ruby_color:B31209
-SETUVAR tide_ruby_icon:\ue23e
-SETUVAR tide_rustc_bg_color:303030
-SETUVAR tide_rustc_color:F74C00
-SETUVAR tide_rustc_icon:\ue7a8
-SETUVAR tide_shlvl_bg_color:303030
-SETUVAR tide_shlvl_color:d78700
-SETUVAR tide_shlvl_icon:\uf120
-SETUVAR tide_shlvl_threshold:1
-SETUVAR tide_status_bg_color:303030
-SETUVAR tide_status_bg_color_failure:303030
-SETUVAR tide_status_color:5FAF00
-SETUVAR tide_status_color_failure:D70000
-SETUVAR tide_status_icon:\u2714
-SETUVAR tide_status_icon_failure:\u2718
-SETUVAR tide_terraform_bg_color:303030
-SETUVAR tide_terraform_color:844FBA
-SETUVAR tide_terraform_icon:\U000f1062
-SETUVAR tide_time_bg_color:303030
-SETUVAR tide_time_color:5F8787
-SETUVAR tide_time_format:\x25T
-SETUVAR tide_toolbox_bg_color:303030
-SETUVAR tide_toolbox_color:613583
-SETUVAR tide_toolbox_icon:\ue24f
-SETUVAR tide_vi_mode_bg_color_default:303030
-SETUVAR tide_vi_mode_bg_color_insert:303030
-SETUVAR tide_vi_mode_bg_color_replace:303030
-SETUVAR tide_vi_mode_bg_color_visual:303030
-SETUVAR tide_vi_mode_color_default:949494
-SETUVAR tide_vi_mode_color_insert:87AFAF
-SETUVAR tide_vi_mode_color_replace:87AF87
-SETUVAR tide_vi_mode_color_visual:FF8700
-SETUVAR tide_vi_mode_icon_default:D
-SETUVAR tide_vi_mode_icon_insert:I
-SETUVAR tide_vi_mode_icon_replace:R
-SETUVAR tide_vi_mode_icon_visual:V
-SETUVAR tide_zig_bg_color:303030
-SETUVAR tide_zig_color:F7A41D
-SETUVAR tide_zig_icon:\ue6a9
@@ -0,0 +1,36 @@
+# The MIT License (MIT)
+
+# Copyright (c) 2015 Derek Willian Stavis
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+function fenv -d "Run bash scripts and import variables modified by them"
+ if count $argv >/dev/null
+ if string trim -- $argv | string length -q
+ fenv.main $argv
+ return $status
+ end
+ return 0
+ else
+ echo (set_color red)'error:' (set_color normal)'parameter missing'
+ echo (set_color cyan)'usage:' (set_color normal)'fenv <bash command>'
+ return 23 # EINVAL
+ end
+end
@@ -0,0 +1,39 @@
+# The MIT License (MIT)
+
+# Copyright (c) 2015 Derek Willian Stavis
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+function fenv.main
+ bash -c "$argv && env -0 >&31" 31>| while read -l -z env_var
+ set -l kv (string split -m 1 = $env_var); or continue
+ # Skip read-only variables
+ contains $kv[1] _ SHLVL PWD; and continue
+ string match -rq '^BASH_.*%%$' $kv[1]; and continue
+ # Variable
+ # - is not defined
+ # - OR variable differs
+ # - OR variable is not exported
+ if not set -q $kv[1]; or test "$$kv[1]" != $kv[2]; or not set -qx $kv[1]
+ set -gx $kv
+ end
+ end
+ return $pipestatus[1]
+end
@@ -1,93 +0,0 @@
-Copyright (c) 2019, The Lilex Project Authors (https://github.com/mishamyrt/lilex)
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete Mono Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete Mono.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete Mono.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Bold Nerd Font Complete.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete Mono Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete Mono.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete Mono.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Light Nerd Font Complete.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete Mono Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete Mono.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete Mono.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Medium Nerd Font Complete.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete Mono Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete Mono Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete Mono.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete Mono.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete Windows Compatible.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete Windows Compatible.ttf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete.otf and /dev/null differ
Binary files a/home-config/fonts/Lilex/Lilex Regular Nerd Font Complete.ttf and /dev/null differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFont-Bold.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFont-ExtraLight.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFont-ExtraThick.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFont-Medium.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFont-Regular.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFont-Thin.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontMono-Bold.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontMono-ExtraLight.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontMono-ExtraThick.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontMono-Medium.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontMono-Regular.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontMono-Thin.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontPropo-Bold.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraLight.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontPropo-ExtraThick.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontPropo-Medium.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontPropo-Regular.ttf differ
Binary files /dev/null and b/home-config/fonts/Lilex/LilexNerdFontPropo-Thin.ttf differ
@@ -1,8 +0,0 @@
-
-# Nerd Fonts
-
-This is an archived font from a Nerd Fonts release.
-
-For more information see:
-* https://github.com/ryanoasis/nerd-fonts/
-* https://github.com/ryanoasis/nerd-fonts/releases/latest/
@@ -1,6 +1,7 @@
-font=Monofur Nerd Font Mono:size=15
+font=Lilex Nerd Font Mono:size=14,FiraCode Nerd Font Mono:size=14
-notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
+[desktop-notifications]
+command=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
[colors]
alpha=0.75
@@ -22,6 +22,8 @@
(ryan-config utils)
(ryan-packages freedesktop)
(ryan-packages calcurse)
+ ;(ryan-packages binaries)
+ (rosenthal packages binaries)
(ryan-packages mozilla))
(define my-neovim
@@ -32,7 +34,10 @@
(prepend gcc-12)))))
(define %home-symlinks
- `((".config/guix/home-config/fish/fish_variables" ".config/fish/fish_variables")))
+ `((".config/guix/home-config/fish" ".config/fish")
+ (".config/guix/home-config/nix-config" ".config/nix")
+ (".config/guix/home-config/tridactyl/native_main" ".local/share/tridactyl/native_main")
+ (".config/guix/home-config/nix-home-manager" ".config/home-manager")))
(home-symlinks %home-symlinks)
@@ -47,11 +52,13 @@
"libnotify"
"fzf"
"waypipe"
+ "foot"
"pulseaudio" ;only for pactl
"qpwgraph"
"gnunet"
- "ffmpeg"
+ ;"ffmpeg" ; removed for mpv prop input
"qrencode"
+ "tmux"
"binutils"
"gcc-toolchain"
"borg"
@@ -60,6 +67,7 @@
"cloc"
"sc-im"
"pv"
+ "jq"
"bombadillo"
"python-msgpack"
"wdisplays"
@@ -77,7 +85,7 @@
"syncthing"
"taskwarrior"
"tasksh"
- "imv"
+ ;"imv" ; Nix pkg now for MESA stuff
"perl"
"tor"
"unzip"
@@ -111,7 +119,7 @@
"python-lsp-server"
"kdenlive"
"sqlite"
- "mpv"
+ ;"mpv" ; Now a nix pkg for MESA stuff
"qbittorrent"
"playerctl"
;"aerc"
@@ -123,43 +131,41 @@
"node"
"kanshi"
;"firefox"
+ "signal-desktop"
+ "sc-im"
"git-lfs"))
- (list my-neovim wl-mirror firefox-wrapped calcurse-fixed)))
+ (list my-neovim wl-mirror firefox-wrapped calcurse-fixed )))
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.
(services
- (list (service home-bash-service-type
- (home-bash-configuration
+ (list ;(service home-bash-service-type
+ ; (home-bash-configuration
;(aliases '(("grep" . "grep --color=auto") ("ll" . "ls -l")
; ("ls" . "ls -p --color=auto")
; ("spt" . "spotify_player")
; ("python" . "python3")))
- (bashrc (list (local-file
- "bashrc")))
- (bash-profile (list (local-file
- "bash_profile")))))
+ ; (bashrc (list (local-file
+ ; "bashrc")))
+ ; (bash-profile (list (local-file
+ ; "bash_profile")))))
(service home-xdg-configuration-files-service-type
`(("nvim/init.vim" ,(local-file "nvim/config/init.vim"))
("nvim/after/ftplugin/markdown/custom.vim" ,(local-file "nvim/config/after/ftplugin/markdown/custom.vim"))
("nvim/after/ftplugin/mail/custom.vim" ,(local-file "nvim/config/after/ftplugin/mail/custom.vim"))
("sway" ,(local-file "sway" #:recursive? #t))
("hypr" ,(local-file "hypr" #:recursive? #t))
+ ("mpv" ,(local-file "mpv" #:recursive? #t))
("foot" ,(local-file "foot" #:recursive? #t))
- ("fish/completions" ,(local-file "fish/completions" #:recursive? #t))
- ("fish/conf.d" ,(local-file "fish/conf.d" #:recursive? #t))
- ("fish/fish_plugins" ,(local-file "fish/fish_plugins"))
- ("fish/functions" ,(local-file "fish/functions" #:recursive? #t))
- ("fish/config.fish" ,(local-file "fish/config.fish"))
("pulse/client.conf" ,(local-file "pulseaudio/client.conf"))
("waybar" ,(local-file "waybar" #:recursive? #t))
("alacritty" ,(local-file "alacritty" #:recursive? #t))
- ("aerc" ,(local-file "aerc" #:recursive? #t))
- ("home-manager" ,(local-file "nix-home-manager" #:recursive? #t))
- ("nix" ,(local-file "nix-config" #:recursive? #t)) ))
+ ("aerc" ,(local-file "aerc" #:recursive? #t)) ))
(service home-files-service-type
`((".local/share/nvim/site/autoload/plug.vim" ,(local-file "nvim/plugin-manager/plug.vim"))
(".ssh/config" ,(local-file "ssh/config"))
+ (".icons" ,(local-file "icons" #:recursive? #t))
+ (".mozilla/native-messaging-hosts/tridactyl.json" ,(local-file "tridactyl/tridactyl.json"))
;(".gnupg/sshcontrol" ,(local-file "gnupg/sshcontrol"))
;(".gnupg/gpg-agent.conf" ,(local-file "gnupg/gpg-agent.conf"))
(".fonts" ,(local-file "fonts" #:recursive? #t))
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1685362396481634.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1693169418078790.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1694792956043641.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1708470532817406.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1720750738377603.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1720751011150282.png differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1723625710776950.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1723626275390685.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/1728661127589872.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/4yglzy4rkh4d1.jpeg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/7xosa7um3ohd1.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/83juiltm3ohd1.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/CN62QXJ.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-bluehour-1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-budapest.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-close-to-the-sun-1920.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-cold-1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-dreamy-1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-lights-1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-lines1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-mountains1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-new-year1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-reflect1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-serenity-1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-sky1k.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-wait.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/alena-aenami-wings-hd.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/autumn1.png differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/sah1k8tm3ohd1.jpg differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/vfcfyfyehhi31.png differ
Binary files /dev/null and b/home-config/hypr/Wallpapers/static/w7ufw5eb3cuz.jpg differ
@@ -8,14 +8,27 @@ mako &
nice -n13 swww init &
-~/.config/hypr/wallpaper-daemon.sh &
+#~/.config/hypr/wallpaper-daemon.sh &
+wpaperd -d &
swayidle -w timeout 300 'swaylock --screenshots --clock --indicator --grace 3 --fade-in 1 --effect-blur 7x5 --effect-greyscale' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f -c 000000' &
syncthing serve --no-browser &
-wl-clip-persist -c regular &
+# Kill any orphans of this
+killall wl-clip-persist
+wl-clip-persist -c regular --reconnect-tries 5 &
-~/.config/guix/home-config/hypr/hyprland-monitor-attached ~/.config/hypr/wallpaper.sh ~/.config/hypr/wallpaper.sh &
+kanshi -c ~/.config/hypr/kanshi.conf &
-kanshi -c ~/.config/hypr/kanshi.conf
+# Start the portals
+
+sleep 0.5
+killall -e xdg-desktop-portal-hyprland
+killall xdg-desktop-portal-gtk
+killall xdk-desktop-portal
+
+~/.nix-profile/libexec/xdg-desktop-portal-hyprland &
+~/.nix-profile/libexec/xdg-desktop-portal-gtk &
+sleep 2
+XDG_DESKTOP_PORTAL_DIR="/home/ryan/.nix-profile/share/xdg-desktop-portal/portals" ~/.nix-profile/libexec/xdg-desktop-portal &
Binary files a/home-config/hypr/hyprland-monitor-attached and /dev/null differ
@@ -8,6 +8,12 @@ exec-once = dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,1
+# Set cursor theme
+env = HYPRCURSOR_THEME,XCursor-Pro-Dark-Hyprcursor
+env = HYPRCURSOR_SIZE,26
+env = XCURSOR_THEME,XCursor-Pro-Dark
+env = XCURSOR_SIZE,26
+
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
@@ -20,6 +26,11 @@ source = ~/.config/hypr/monitors.conf
# Some default env vars.
env = XCURSOR_SIZE,24
+debug {
+ disable_logs = false
+ enable_stdout_logs = true
+}
+
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
@@ -88,10 +99,10 @@ dwindle {
preserve_split = yes # you probably want this
}
-master {
- # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
- new_is_master = true
-}
+#master {
+# # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+# new_is_master = true
+#}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
@@ -198,6 +209,7 @@ bind = $mainMod SHIFT, L, exec, swaylock --screenshots --clock --indicator --eff
# Keybind for screenshot
bind = $mainMod SHIFT, S, exec, grimblast copy area
bind = $mainMod SHIFT, Print, exec, grimblast edit area
+bind = $mainMod, S, exec, grimblast save area - | imv -
# Notifications keybinds
bind = $mainMod, N, exec, makoctl dismiss
@@ -0,0 +1,55 @@
+background {
+ monitor =
+ path = /home/ryan/.config/hypr/Wallpapers/static/autumn1.png
+
+ # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
+ blur_passes = 2 # 0 disables blurring
+ blur_size = 7
+ noise = 0.2
+ contrast = 0.8916
+ brightness = 0.8172
+ vibrancy = 0.1696
+ vibrancy_darkness = 0.0
+}
+
+input-field {
+ monitor =
+ size = 200, 50
+ outline_thickness = 3
+ dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = false
+ dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
+ outer_color = rgb(151515)
+ inner_color = rgb(200, 200, 200)
+ font_color = rgb(10, 10, 10)
+ fade_on_empty = true
+ fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
+ placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
+ hide_input = false
+ rounding = -1 # -1 means complete rounding (circle/oval)
+ check_color = rgb(204, 136, 34)
+ fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
+ fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
+ fail_timeout = 2000 # milliseconds before fail_text and fail_color disappears
+ fail_transition = 300 # transition time in ms between normal outer_color and fail_color
+ capslock_color = -1
+ numlock_color = -1
+ bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
+ invert_numlock = false # change color if numlock is off
+ swap_font_color = false # see below
+
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ text = cmd[update:1000] echo "$(date +"%-H:%M:%S")"
+ #color = rgba(255, 255, 255, 0.6)
+ font_size = 80
+ position = 0, 300
+ halign = center
+ valign = center
+}
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/X_cursor.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/all-scroll.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_left_corner.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_right_corner.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/bottom_tee.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/center_ptr.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/context-menu.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/copy.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/cross.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crossed_circle.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/crosshair.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dnd_no_drop.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/dotbox.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand1.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/hand2.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_ptr_watch.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_side.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/left_tee.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/link.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ll_angle.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/lr_angle.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/move.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pencil.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/person.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/pin.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/plus.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/question_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_ptr.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/right_tee.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_down_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_h_double_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_left_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_right_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_up_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/sb_v_double_arrow.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_side.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/top_tee.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ul_angle.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/ur_angle.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/vertical-text.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wait.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/wayland-cursor.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/xterm.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-in.hlc differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark-Hyprcursor/hyprcursors/zoom-out.hlc differ
@@ -0,0 +1,4 @@
+name = XCursor-Pro-Dark-Hyprcursor
+description = XCursor-Pro-Dark Hyprcursor version
+version = 1.0
+cursors_directory = hyprcursors
@@ -0,0 +1,3 @@
+[Icon Theme]
+Name=XCursor-Pro-Dark
+Inherits="XCursor-Pro-Dark"
\ No newline at end of file
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
@@ -0,0 +1 @@
+copy
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+link
\ No newline at end of file
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+copy
\ No newline at end of file
@@ -0,0 +1 @@
+link
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/X_cursor differ
@@ -0,0 +1 @@
+link
\ No newline at end of file
@@ -0,0 +1 @@
+link
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/all-scroll differ
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
@@ -0,0 +1 @@
+copy
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_left_corner differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_right_corner differ
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/bottom_tee differ
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
@@ -0,0 +1 @@
+plus
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/center_ptr differ
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+cross
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/context-menu differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/copy differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/cross differ
@@ -0,0 +1 @@
+cross
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/crossed_circle differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/crosshair differ
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
@@ -0,0 +1 @@
+cross
\ No newline at end of file
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+copy
\ No newline at end of file
@@ -0,0 +1 @@
+link
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/dnd_no_drop differ
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/dotbox differ
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_down_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+pencil
\ No newline at end of file
@@ -0,0 +1 @@
+right_ptr
\ No newline at end of file
@@ -0,0 +1 @@
+right_ptr
\ No newline at end of file
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
@@ -0,0 +1 @@
+all-scroll
\ No newline at end of file
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
@@ -0,0 +1 @@
+hand1
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/hand1 differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/hand2 differ
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+xterm
\ No newline at end of file
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
@@ -0,0 +1 @@
+sb_left_arrow
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr differ
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_ptr_watch differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_side differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/left_tee differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/link differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/ll_angle differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/lr_angle differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/move differ
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
@@ -0,0 +1 @@
+dnd_no_drop
\ No newline at end of file
@@ -0,0 +1 @@
+crossed_circle
\ No newline at end of file
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
@@ -0,0 +1 @@
+hand1
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/pencil differ
@@ -0,0 +1 @@
+X_cursor
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/plus differ
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
@@ -0,0 +1 @@
+move
\ No newline at end of file
@@ -0,0 +1 @@
+hand2
\ No newline at end of file
@@ -0,0 +1 @@
+left_ptr_watch
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/question_arrow differ
@@ -0,0 +1 @@
+sb_right_arrow
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/right_ptr differ
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/right_tee differ
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+top_side
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_down_arrow differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_h_double_arrow differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_left_arrow differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_right_arrow differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_up_arrow differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/sb_v_double_arrow differ
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+all-scroll
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_h_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
@@ -0,0 +1 @@
+dotbox
\ No newline at end of file
@@ -0,0 +1 @@
+cross
\ No newline at end of file
@@ -0,0 +1 @@
+xterm
\ No newline at end of file
@@ -0,0 +1 @@
+left_ptr
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_right_corner
\ No newline at end of file
@@ -0,0 +1 @@
+bottom_left_corner
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/top_side differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/top_tee differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/ul_angle differ
@@ -0,0 +1 @@
+sb_up_arrow
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/ur_angle differ
@@ -0,0 +1 @@
+sb_v_double_arrow
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/vertical-text differ
@@ -0,0 +1 @@
+left_side
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/wait differ
@@ -0,0 +1 @@
+wait
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/wayland-cursor differ
@@ -0,0 +1 @@
+question_arrow
\ No newline at end of file
@@ -0,0 +1 @@
+X_cursor
\ No newline at end of file
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/xterm differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/zoom-in differ
Binary files /dev/null and b/home-config/icons/XCursor-Pro-Dark/cursors/zoom-out differ
@@ -0,0 +1,4 @@
+[Icon Theme]
+Name=XCursor-Pro-Dark
+Comment=Modern, Proffesional Dark (v2.0.2) XCursors
+Inherits="hicolor"
\ No newline at end of file
@@ -0,0 +1,254 @@
+local msg = require('mp.msg')
+local assdraw = require('mp.assdraw')
+
+local script_name = "easycrop"
+
+-- Number of crop points currently chosen (0 to 2)
+local points = {}
+-- True if in cropping selection mode
+local cropping = false
+-- Original value of osc property
+local osc_prop = false
+
+-- Helper that converts two points to top-left and bottom-right
+local swizzle_points = function (p1, p2)
+ if p1.x > p2.x then p1.x, p2.x = p2.x, p1.x end
+ if p1.y > p2.y then p1.y, p2.y = p2.y, p1.y end
+end
+
+local clamp = function (val, min, max)
+ assert(min <= max)
+ if val < min then return min end
+ if val > max then return max end
+ return val
+end
+
+local video_space_from_screen_space = function (ssp)
+ -- Video native dimensions and screen size
+ local vid_w = mp.get_property("width")
+ local vid_h = mp.get_property("height")
+ local osd_w = mp.get_property("osd-width")
+ local osd_h = mp.get_property("osd-height")
+
+ -- Factor by which the video is scaled to fit the screen
+ local scale = math.min(osd_w/vid_w, osd_h/vid_h)
+
+ -- Size video takes up in screen
+ local vid_sw, vid_sh = scale*vid_w, scale*vid_h
+
+ -- Video offset within screen
+ local off_x = math.floor((osd_w - vid_sw)/2)
+ local off_y = math.floor((osd_h - vid_sh)/2)
+
+ local vsp = {}
+
+ -- Move the point to within the video
+ vsp.x = clamp(ssp.x, off_x, off_x + vid_sw)
+ vsp.y = clamp(ssp.y, off_y, off_y + vid_sh)
+
+ -- Convert screen-space to video-space
+ vsp.x = math.floor((vsp.x - off_x) / scale)
+ vsp.y = math.floor((vsp.y - off_y) / scale)
+
+ return vsp
+end
+
+local screen_space_from_video_space = function (vsp)
+ -- Video native dimensions and screen size
+ local vid_w = mp.get_property("width")
+ local vid_h = mp.get_property("height")
+ local osd_w = mp.get_property("osd-width")
+ local osd_h = mp.get_property("osd-height")
+
+ -- Factor by which the video is scaled to fit the screen
+ local scale = math.min(osd_w/vid_w, osd_h/vid_h)
+
+ -- Size video takes up in screen
+ local vid_sw, vid_sh = scale*vid_w, scale*vid_h
+
+ -- Video offset within screen
+ local off_x = math.floor((osd_w - vid_sw)/2)
+ local off_y = math.floor((osd_h - vid_sh)/2)
+
+ local ssp = {}
+ ssp.x = vsp.x * scale + off_x
+ ssp.y = vsp.y * scale + off_y
+ return ssp
+end
+
+-- Wrapper that converts RRGGBB / RRGGBBAA to ASS format
+local ass_set_color = function (idx, color)
+ assert(color:len() == 8 or color:len() == 6)
+ local ass = ""
+
+ -- Set alpha value (if present)
+ if color:len() == 8 then
+ local alpha = 0xff - tonumber(color:sub(7, 8), 16)
+ ass = ass .. string.format("\\%da&H%X&", idx, alpha)
+ end
+
+ -- Swizzle RGB to BGR and build ASS string
+ color = color:sub(5, 6) .. color:sub(3, 4) .. color:sub(1, 2)
+ return "{" .. ass .. string.format("\\%dc&H%s&", idx, color) .. "}"
+end
+
+local draw_rect = function (p1, p2)
+ local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
+
+ ass = assdraw.ass_new()
+
+ -- Draw overlay over surrounding unselected region
+
+ ass:draw_start()
+ ass:pos(0, 0)
+
+ ass:append(ass_set_color(1, "000000aa"))
+ ass:append(ass_set_color(3, "00000000"))
+
+ local l = math.min(p1.x, p2.x)
+ local r = math.max(p1.x, p2.x)
+ local u = math.min(p1.y, p2.y)
+ local d = math.max(p1.y, p2.y)
+
+ ass:rect_cw(0, 0, l, osd_h)
+ ass:rect_cw(r, 0, osd_w, osd_h)
+ ass:rect_cw(l, 0, r, u)
+ ass:rect_cw(l, d, r, osd_h)
+
+ ass:draw_stop()
+
+ -- Draw border around selected region
+
+ ass:new_event()
+ ass:draw_start()
+ ass:pos(0, 0)
+
+ ass:append(ass_set_color(1, "00000000"))
+ ass:append(ass_set_color(3, "000000ff"))
+ ass:append("{\\bord2}")
+
+ ass:rect_cw(p1.x, p1.y, p2.x, p2.y)
+
+ ass:draw_stop()
+
+ mp.set_osd_ass(osd_w, osd_h, ass.text)
+end
+
+local draw_fill = function ()
+ local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
+
+ ass = assdraw.ass_new()
+ ass:draw_start()
+ ass:pos(0, 0)
+
+ ass:append(ass_set_color(1, "000000aa"))
+ ass:append(ass_set_color(3, "00000000"))
+ ass:rect_cw(0, 0, osd_w, osd_h)
+
+ ass:draw_stop()
+ mp.set_osd_ass(osd_w, osd_h, ass.text)
+end
+
+local draw_clear = function ()
+ local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
+ mp.set_osd_ass(osd_w, osd_h, "")
+end
+
+local draw_cropper = function ()
+ if #points == 1 then
+ local p1 = screen_space_from_video_space(points[1])
+ local p2 = {}
+ p2.x, p2.y = mp.get_mouse_pos()
+ draw_rect(p1, p2)
+ end
+end
+
+local uncrop = function ()
+ mp.command("no-osd vf del @" .. script_name .. ":crop")
+end
+
+local crop = function(p1, p2)
+ swizzle_points(p1, p2)
+
+ local w = p2.x - p1.x
+ local h = p2.y - p1.y
+ local ok, err = mp.command(string.format(
+ "no-osd vf add @%s:crop=%s:%s:%s:%s", script_name, w, h, p1.x, p1.y))
+
+ if not ok then
+ mp.osd_message("Cropping failed")
+ points = {}
+ end
+end
+
+local easycrop_stop = function ()
+ mp.set_property("osc", osc_prop)
+ cropping = false
+ mp.remove_key_binding("easycrop_mouse_btn0")
+ draw_clear()
+end
+
+local mouse_btn0_cb = function ()
+ if not cropping then
+ return
+ end
+
+ local mx, my = mp.get_mouse_pos()
+ table.insert(points, video_space_from_screen_space({ x = mx, y = my }))
+
+ if #points == 2 then
+ crop(points[1], points[2])
+ easycrop_stop()
+ end
+end
+
+local easycrop_start = function ()
+ -- Cropping requires swdec or hwdec with copy-back
+ local hwdec = mp.get_property("hwdec-current")
+ if hwdec == nil then
+ return mp.msg.error("Cannot determine current hardware decoder mode")
+ end
+ -- Check whitelist of ok values
+ local valid_hwdec = {
+ ["no"] = true, -- software decoding
+ -- Taken from mpv manual
+ ["videotoolbox-co"] = true,
+ ["vaapi-copy"] = true,
+ ["dxva2-copy"] = true,
+ ["d3d11va-copy"] = true,
+ ["mediacodec"] = true
+ }
+ if not valid_hwdec[hwdec] then
+ return mp.osd_message("Cropping requires swdec or hwdec with copy-back (see mpv manual)")
+ end
+
+ -- Just clear the current crop and return, if there is one
+ if #points ~= 0 then
+ uncrop()
+ points = {}
+ return
+ end
+
+ -- Hide OSC
+ osc_prop = mp.get_property("osc")
+ mp.set_property("osc", "no")
+
+ cropping = true
+ mp.add_forced_key_binding("mouse_btn0", "easycrop_mouse_btn0", mouse_btn0_cb)
+ draw_fill()
+end
+
+local easycrop_activate = function ()
+ if cropping then
+ easycrop_stop()
+ else
+ easycrop_start()
+ end
+end
+
+mp.add_key_binding("mouse_move", draw_cropper)
+mp.observe_property("osd-width", "native", draw_cropper)
+mp.observe_property("osd-height", "native", draw_cropper)
+
+mp.add_key_binding("c", "easy_crop", easycrop_activate)
+
@@ -1,5 +1,53 @@
{
"nodes": {
+ "aquamarine": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1727261104,
+ "narHash": "sha256-rxDI7WrxIRV9it9mDCHcLa7xQykf1JloXnoXr5xQ8zI=",
+ "owner": "hyprwm",
+ "repo": "aquamarine",
+ "rev": "b82fdaff917582a9d568969e15e61b398c71e990",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "aquamarine",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -7,61 +55,397 @@
]
},
"locked": {
- "lastModified": 1708031129,
- "narHash": "sha256-EH20hJfNnc1/ODdDVat9B7aKm0B95L3YtkIRwKLvQG8=",
+ "lastModified": 1729321331,
+ "narHash": "sha256-KVyQq+ez/oB30/WbdNgVD8g/bda34z8NiU187QKQb74=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "3d6791b3897b526c82920a2ab5f61d71985b3cf8",
+ "rev": "122f70545b29ccb922e655b08acfe05bfb44ec68",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
+ "rev": "122f70545b29ccb922e655b08acfe05bfb44ec68",
"type": "github"
}
},
- "hyprpicker-git": {
+ "hyprcursor": {
"inputs": {
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
"nixpkgs": [
+ "hyprland",
"nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
]
},
"locked": {
- "lastModified": 1703987863,
- "narHash": "sha256-MHhAk74uk0qHVwSkLCcXLXMe4478M2oZEFPXwjSoo2E=",
+ "lastModified": 1727532803,
+ "narHash": "sha256-ZaZ7h7PY8mQc4vtGmVqWLAq9CAO02gHMyNR5yY8zDmM=",
+ "owner": "hyprwm",
+ "repo": "hyprcursor",
+ "rev": "b98726e431d4d3ed58bd58bee1047cdb81cec69f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprcursor",
+ "type": "github"
+ }
+ },
+ "hyprland": {
+ "inputs": {
+ "aquamarine": "aquamarine",
+ "hyprcursor": "hyprcursor",
+ "hyprland-protocols": "hyprland-protocols",
+ "hyprlang": "hyprlang",
+ "hyprutils": "hyprutils",
+ "hyprwayland-scanner": "hyprwayland-scanner",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "systems": "systems",
+ "xdph": "xdph"
+ },
+ "locked": {
+ "lastModified": 1728478479,
+ "narHash": "sha256-AbfdIlK92oWpI39xlIaUekPeL9u95sXzxVsSqhIMfIc=",
+ "owner": "hyprwm",
+ "repo": "hyprland",
+ "rev": "4520b30d498daca8079365bdb909a8dea38e8d55",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "ref": "v0.44.1",
+ "repo": "hyprland",
+ "type": "github"
+ }
+ },
+ "hyprland-protocols": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1727451107,
+ "narHash": "sha256-qV9savtHwmZUa0eJE294WYJjKPGB2+bJhwByFShsVyo=",
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "rev": "6b3261ee13a6d2b99de79a31d352f6996e35bde3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "type": "github"
+ }
+ },
+ "hyprland-protocols_2": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "xdph",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "xdph",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1721326555,
+ "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=",
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "type": "github"
+ }
+ },
+ "hyprlang": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1725997860,
+ "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=",
+ "owner": "hyprwm",
+ "repo": "hyprlang",
+ "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprlang",
+ "type": "github"
+ }
+ },
+ "hyprpicker-git": {
+ "inputs": {
+ "hyprutils": "hyprutils_2",
+ "hyprwayland-scanner": "hyprwayland-scanner_2",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "systems": "systems_2"
+ },
+ "locked": {
+ "lastModified": 1727705155,
+ "narHash": "sha256-gu26MSYbTlRLMUpZ9PeYXtqqhzPDQXxEDkjiJgwzIIc=",
"owner": "hyprwm",
"repo": "hyprpicker",
- "rev": "2ef703474fb96e97e03e66e8820f213359f29382",
+ "rev": "116cec14a552191a9ad69ca96252ca12ecfa9826",
"type": "github"
},
"original": {
"owner": "hyprwm",
+ "ref": "v0.4.1",
"repo": "hyprpicker",
"type": "github"
}
},
+ "hyprutils": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1727300645,
+ "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=",
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "type": "github"
+ }
+ },
+ "hyprutils_2": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprpicker-git",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprpicker-git",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1727300645,
+ "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=",
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "type": "github"
+ }
+ },
+ "hyprwayland-scanner": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1726874836,
+ "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=",
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "type": "github"
+ }
+ },
+ "hyprwayland-scanner_2": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprpicker-git",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprpicker-git",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1726874836,
+ "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=",
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "type": "github"
+ }
+ },
+ "nixgl": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1713543440,
+ "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
+ "owner": "nix-community",
+ "repo": "nixGL",
+ "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixGL",
+ "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
+ "type": "github"
+ }
+ },
"nixpkgs": {
"locked": {
- "lastModified": 1707956935,
- "narHash": "sha256-ZL2TrjVsiFNKOYwYQozpbvQSwvtV/3Me7Zwhmdsfyu4=",
+ "lastModified": 1729168305,
+ "narHash": "sha256-jmhxZnrlOyLEMUL2+JkVfkN0XWXI5uE6EB5kVZFR0fo=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "a4d4fe8c5002202493e87ec8dbc91335ff55552c",
+ "rev": "2a55bdc8cfcf41551323a4a6cef24d3f566c824d",
"type": "github"
},
"original": {
"owner": "nixos",
- "ref": "nixos-unstable",
"repo": "nixpkgs",
+ "rev": "2a55bdc8cfcf41551323a4a6cef24d3f566c824d",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
+ "hyprland": "hyprland",
"hyprpicker-git": "hyprpicker-git",
+ "nixgl": "nixgl",
"nixpkgs": "nixpkgs"
}
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "type": "github"
+ }
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "type": "github"
+ }
+ },
+ "xdph": {
+ "inputs": {
+ "hyprland-protocols": "hyprland-protocols_2",
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1727524473,
+ "narHash": "sha256-1DGktDtSWIJpnDbVoj/qpvJSH5zg6JbOfuh6xqZMap0=",
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "rev": "7e500e679ede40e79cf2d89b5f5fa3e34923bd26",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "type": "github"
+ }
}
},
"root": "root",
@@ -3,24 +3,33 @@
inputs = {
# Specify the source of Home Manager and Nixpkgs.
- nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ nixpkgs.url = "github:nixos/nixpkgs/2a55bdc8cfcf41551323a4a6cef24d3f566c824d";
home-manager = {
- url = "github:nix-community/home-manager";
+ url = "github:nix-community/home-manager/122f70545b29ccb922e655b08acfe05bfb44ec68";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprpicker-git = {
- url = "github:hyprwm/hyprpicker";
+ url = "github:hyprwm/hyprpicker/v0.4.1";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ hyprland = {
+ url = "github:hyprwm/hyprland/v0.44.1";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ nixgl = {
+ url = "github:nix-community/nixGL/310f8e49a149e4c9ea52f1adf70cdc768ec53f8a";
inputs.nixpkgs.follows = "nixpkgs";
};
};
- outputs = { nixpkgs, home-manager, hyprpicker-git, ... }:
+ outputs = { nixpkgs, home-manager, hyprpicker-git, hyprland, nixgl, ... }@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
overlays = [
hyprpicker-git.overlays.default
- ];
+ nixgl.overlay
+ ];
in {
homeConfigurations."ryan" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
@@ -30,10 +39,17 @@
modules = [
./home.nix
{nixpkgs.overlays = overlays;}
+ {
+ _module.args = {
+ inherit hyprland;
+ inherit nixgl;
+ };
+ }
];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
+ #extraSpecialArgs = { inherit inputs; };
};
};
}
@@ -1,4 +1,4 @@
-{ config, pkgs, ... }:
+{ config, pkgs, hyprland, nixgl, ... }:
{
# Home Manager needs a bit of information about you and the paths it should
@@ -21,6 +21,8 @@
#targets.genericLinux.enable = true;
fonts.fontconfig.enable = true;
+ # wayland.windowManager.hyprland.enable = true;
+
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
@@ -43,6 +45,26 @@
gdu
spotify-player
hyprpicker
+ hyprlock
+ xwayland
+ xdg-desktop-portal
+ xdg-desktop-portal-gtk
+ mpv
+ imv
+ libva
+ libvdpau
+ wpaperd
+
+ # Flakes specific things defined in flake.nix
+ hyprland.packages.${pkgs.system}.default
+ hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
+ nixgl.packages.${pkgs.system}.nixGLIntel
+
+ # Fonts!
+ noto-fonts
+ liberation_ttf
+ noto-fonts-cjk-sans
+ noto-fonts-emoji
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
@@ -27,7 +27,7 @@ Plug 'ms-jpq/coq.artifacts', {'branch':'artifacts'}
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
Plug 'neovim/nvim-lspconfig'
-Plug 'nvim-orgmode/orgmode'
+"Plug 'nvim-orgmode/orgmode'
Plug 'ggandor/leap.nvim'
Plug 'xiyaowong/transparent.nvim'
call plug#end()
@@ -43,7 +43,6 @@ lua << END
require('lualine').setup()
require('coq')
require("transparent")
-require('orgmode').setup_ts_grammar()
require("mason").setup()
require("mason-lspconfig").setup {
ensure_installed = { "pyright" },
@@ -62,18 +61,9 @@ require('nvim-treesitter.configs').setup {
enable = true,
additional_vim_regex_highlighting = {'org'},
},
- ensure_installed = {'org', 'vim', 'python'},
+ ensure_installed = {'vim', 'python'},
}
-require('orgmode').setup({
- org_agenda_files = {'~/Sync/org/**/*'},
- org_default_notes_file = '~/Sync/org/refile.org',
- org_blank_before_new_entry = {
- heading = false,
- plain_list_item = false,
- },
-})
-
vim.opt.conceallevel = 2
vim.opt.concealcursor = nc
@@ -12,5 +12,13 @@ Host hetzner
HostName 5.161.207.21
User root
+Host rncorepub
+ Hostname 5.161.89.186
+ User root
+
+Host 192.168.216.1
+ HostkeyAlgorithms +ssh-rsa
+ PubkeyAcceptedAlgorithms +ssh-rsa
+
Host *
KexAlgorithms -sntrup761x25519-sha512@openssh.com
Binary files /dev/null and b/home-config/tridactyl/native_main differ
@@ -0,0 +1,7 @@
+{
+ "name": "tridactyl",
+ "description": "Tridactyl native command handler",
+ "path": "/home/ryan/.local/share/tridactyl/native_main",
+ "type": "stdio",
+ "allowed_extensions": [ "tridactyl.vim@cmcaine.co.uk","tridactyl.vim.betas@cmcaine.co.uk", "tridactyl.vim.betas.nonewtab@cmcaine.co.uk" ]
+}
@@ -110,8 +110,8 @@
"format": "{percent}% {icon}",
"format-alt-click": "click-right",
"format-icons": ["", ""],
- "on-scroll-down": "light -A 1",
- "on-scroll-up": "light -U 1"
+ "on-scroll-up": "light -A 1",
+ "on-scroll-down": "light -U 1"
},
"custom/weather_OLD": {
"format-alt": "{}",
@@ -12,11 +12,13 @@
#:use-module (gnu packages spice)
#:use-module (srfi srfi-1)
#:use-module (ryan-packages freedesktop)
+ ;#:use-module (ryan-packages hyprland)
#:use-module (ryan-packages wm)
#:use-module (ryan-packages virtualization)
#:use-module (ryan-packages linux)
#:use-module (ryan-packages networking)
#:use-module (rosenthal packages wm)
+ #:use-module (rosenthal services networking)
#:use-module (gnu packages security-token)
#:use-module (gnu services security-token)
#:use-module (gnu services cups)
@@ -100,7 +102,7 @@
(define-public base-operating-system
(operating-system
- (kernel linux-6.8)
+ (kernel linux)
(firmware (list linux-firmware))
(locale "en_US.utf8")
(timezone "America/New_York")
@@ -112,7 +114,7 @@
(name "ryan")
(comment "Ryan")
(group "users")
- ;(shell (file-append fish "/bin/fish"))
+ (shell (file-append fish "/bin/fish"))
(home-directory "/home/ryan")
(supplementary-groups '("wheel" "netdev" "audio" "video" "lp" "plugdev" "docker" "libvirt" "kvm" "dialout")))
%base-user-accounts))
@@ -121,7 +123,7 @@
;; under their own account: use 'guix search KEYWORD' to search
;; for packages and 'guix install PACKAGE' to install a package.
(packages (append (map specification->package (list "sway"
- "hyprland"
+ ;"hyprland"
"swaybg"
;"swayidle"
;"swaylock-effects"
@@ -131,8 +133,7 @@
"adwaita-icon-theme"
"hicolor-icon-theme"
"git"
- "nss-certs"
- ;"waybar"
+ "waybar-experimental"
"gnupg"
"light"
"avahi"
@@ -148,8 +149,8 @@
"libfdk"
"opendoas"
;"xdg-desktop-portal-wlr"
- "xdg-desktop-portal"
- "xdg-desktop-portal-gtk"
+ ;"xdg-desktop-portal"
+ ;"xdg-desktop-portal-gtk"
"v4l2loopback-linux-module"
"pipewire"
"docker"
@@ -158,8 +159,9 @@
"dconf"
"wireplumber"
"wireshark"
+ "webkitgtk-with-libsoup2" ; Needed for Go wails development
"zsh"))
- (list my-ca-certs swaylock-effects-new waybar-new xdg-desktop-portal-hyprland-ryan virt-manager-ovmf bluez-ryan blueman-ryan swayidle-new)
+ (list my-ca-certs virt-manager-ovmf bluez-ryan blueman-ryan swayidle-new)
%my-base-packages ))
;; Below is the list of system services. To search for available
@@ -180,6 +182,11 @@
(publish? #f) ;; do not advertise this machine
(publish-workstation? #f))) ;; do not advertise, I want this to be as silent as possible
(service docker-service-type)
+ ; Tailscale daemon from rosenthal
+ (service tailscale-service-type
+ (tailscale-configuration
+ (socket "/var/run/tailscale/tailscaled.sock")))
+ (service containerd-service-type)
(service nix-service-type)
(service libvirt-service-type
(libvirt-configuration
@@ -232,11 +239,11 @@
(delete alsa-service-type) )))
(name-service-switch %mdns-host-lookup-nss) ;; Enable .local lookup
(setuid-programs
- (append (list (file-like->setuid-program
- (file-append
+ (append (list ;(file-like->setuid-program
+ ;(file-append
;(specification->package "swaylock-effects")
- swaylock-effects-new
- "/bin/swaylock"))
+ ; swaylock-effects-new
+ ; "/bin/swaylock"))
(file-like->setuid-program
(file-append
(specification->package "wireshark")
@@ -0,0 +1,68 @@
+(define-module (ryan-packages binaries)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system copy)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bootstrap)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages elf)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages glib))
+
+(define-public superfile-bin
+ (package
+ (name "superfile-bin")
+ (version "1.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/yorukot/superfile" "/releases/download/v"
+ version "/superfile-linux-v" version "-amd64.tar.gz"))
+ (sha256
+ (base32
+ "1hnhkd6ihp0wcrn54ipyki500xmz1kapaj8sykg7ykh1vv8y6hmm"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan #~'((#$(string-append
+ "superfile-linux-v" (package-version this-package) "-amd64/spf")
+ "bin/spf"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'strip)
+ (add-after 'install 'patch-elf
+ (lambda _
+ (let ((spf (string-append #$output "/bin/spf")))
+ (invoke "patchelf" "--set-interpreter"
+ (string-append #$(this-package-input "glibc")
+ #$(glibc-dynamic-linker))
+ spf)
+ (invoke "patchelf" "--set-rpath"
+ (string-append (ungexp (this-package-input "gcc")
+ "lib")
+ "/lib")
+ spf)))))))
+ (supported-systems '("x86_64-linux"))
+ (native-inputs (list patchelf))
+ (inputs (list `(,gcc "lib") glibc))
+ (home-page "https://github.com/yorukot/superfile")
+ (synopsis "Pretty fancy and modern terminal file manager")
+ (description
+ "Terminal file-manager written in Go that is modern and extensible.")
+ (license license:expat)))
+
+(define-public brave-bin
+ (package
+ (name "brave-bin")
+ (version "nightly_1.72.12")
+ (source (origin
+ (method url-fetch)
+ (url (string-append "https://github.com/brave/brave-browser/releases/download/v1.72.12/brave-browser-" version "_amd64.deb"))
+ (sha256
+ (base32
+ "1ry62ck61gn4bxnkih3775pdlndp2ldxwifbjkxbj3wfd4f67xiv"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan
+ #~'(("bin" "bin" #:include ("wrap
@@ -1,10 +1,16 @@
(define-module (ryan-packages calcurse)
#:use-module (guix download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
#:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages calcurse)
#:use-module (gnu packages python-web)
+ #:use-module (gnu packages rust)
+ #:use-module (gnu packages rust-apps)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages linux)
#:use-module (guix git-download)
#:use-module (guix utils))
@@ -21,4 +27,3 @@
(base32 "02l3spj2ai97b87winz3kvsxvf66g74lm46b7kcbhsgx2iqb6syq"))))
(propagated-inputs (list python-httplib2))))
-calcurse-fixed
@@ -0,0 +1,224 @@
+(define-module (ryan-packages gl)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix gexp)
+ #:use-module (guix utils)
+ #:use-module (ice-9 match)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages gl))
+
+(define-public mesa-libglvnd
+ (package
+ (inherit mesa)
+ (inputs (modify-inputs (package-inputs mesa) (prepend libglvnd)))
+ (arguments
+ (list
+ #:configure-flags
+ #~(list
+ #$@(cond
+ ((or (target-aarch64?) (target-arm32?))
+ '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,\
+panfrost,r300,r600,svga,swrast,tegra,v3d,vc4,virgl,zink"))
+ ((or (target-ppc64le?) (target-ppc32?) (target-riscv64?))
+ '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,svga,swrast,virgl,zink"))
+ (else
+ '("-Dgallium-drivers=crocus,iris,nouveau,r300,r600,radeonsi,\
+svga,swrast,virgl,zink")))
+ ;; Enable various optional features. TODO: opencl requires libclc,
+ ;; omx requires libomxil-bellagio
+ "-Dplatforms=x11,wayland"
+ "-Dglx=dri" ;Thread Local Storage, improves performance
+ ;; "-Dopencl=true"
+ ;; "-Domx=true"
+ "-Dosmesa=true"
+ "-Dgallium-xa=enabled"
+
+ ;; features required by wayland
+ "-Dgles2=enabled"
+ "-Dgbm=enabled"
+ "-Dshared-glapi=enabled"
+ "-Dglvnd=true"
+
+ ;; Explicitly enable Vulkan on some architectures.
+ #$@(cond
+ ((or (target-x86-32?) (target-x86-64?))
+ '("-Dvulkan-drivers=intel,intel_hasvk,amd,swrast"))
+ ((or (target-ppc64le?) (target-ppc32?))
+ '("-Dvulkan-drivers=amd,swrast"))
+ ((target-aarch64?)
+ '("-Dvulkan-drivers=freedreno,amd,broadcom,swrast"))
+ ((target-riscv64?)
+ '("-Dvulkan-drivers=amd,swrast"))
+ (else
+ '("-Dvulkan-drivers=auto")))
+
+ ;; Enable the Vulkan overlay layer on all architectures.
+ "-Dvulkan-layers=device-select,overlay"
+
+ ;; Enable all the codecs that were built by default as part of the
+ ;; 21.3.x releases to avoid functionality regressions.
+ "-Dvideo-codecs=all"
+
+ ;; Enable ZSTD compression for shader cache.
+ "-Dzstd=enabled"
+
+ ;; Also enable the tests.
+ "-Dbuild-tests=true"
+
+ "-Dllvm=enabled") ; default is x86/x86_64 only
+
+ ;; XXX: 'debugoptimized' causes LTO link failures on some drivers. The
+ ;; documentation recommends using 'release' for performance anyway.
+ #:build-type "release"
+
+ #:modules '((ice-9 match)
+ (srfi srfi-1)
+ (guix build utils)
+ (guix build meson-build-system))
+ #:phases
+ #~(modify-phases %standard-phases
+ #$@(if (%current-target-system)
+ #~((add-after 'unpack 'fix-cross-compiling
+ (lambda* (#:key native-inputs #:allow-other-keys)
+ ;; When cross compiling, we use cmake to find llvm, not
+ ;; llvm-config, because llvm-config cannot be executed
+ ;; see https://github.com/llvm/llvm-project/issues/58984
+ (substitute* "meson.build"
+ (("method : host_machine\\.system.*")
+ "method : 'cmake',\n"))
+ (setenv "CMAKE"
+ (search-input-file
+ native-inputs "/bin/cmake")))))
+ #~())
+ (add-after 'unpack 'disable-failing-test
+ (lambda _
+ ;; Disable the intel vulkan (anv_state_pool) tests, as they may
+ ;; fail in a nondeterministic fashion (see:
+ ;; https://gitlab.freedesktop.org/mesa/mesa/-/issues/5446).
+ (substitute* "src/intel/vulkan/meson.build"
+ (("if with_tests")
+ "if false"))
+ #$@(match (%current-system)
+ ("riscv64-linux"
+ ;; According to the test logs the llvm JIT is not designed
+ ;; for this architecture and the llvmpipe tests all segfault.
+ ;; The same is true for mesa:gallium / osmesa-render.
+ `((substitute* '("src/gallium/drivers/llvmpipe/meson.build"
+ "src/gallium/targets/osmesa/meson.build")
+ (("if with_tests") "if false"))))
+ ("powerpc64le-linux"
+ ;; Disable some of the llvmpipe tests.
+ `((substitute* "src/gallium/drivers/llvmpipe/lp_test_arit.c"
+ (("0\\.5, ") ""))))
+ ("powerpc-linux"
+ ;; There are some tests which fail specifically on powerpc.
+ `((substitute* '(;; LLVM ERROR: Relocation type not implemented yet!
+ "src/gallium/drivers/llvmpipe/meson.build"
+ "src/gallium/targets/osmesa/meson.build")
+ (("if with_tests") "if not with_tests"))
+ ;; This is probably a big-endian test failure.
+ (substitute* "src/amd/common/meson.build"
+ (("and not with_platform_windows")
+ "and with_platform_windows"))))
+ ("i686-linux"
+ ;; This test is known to fail on i686 (see:
+ ;; https://gitlab.freedesktop.org/mesa/mesa/-/issues/4091).
+ `((substitute* "src/util/meson.build"
+ ((".*'tests/u_debug_stack_test.cpp',.*") ""))))
+ ("armhf-linux"
+ ;; Disable some of the llvmpipe tests.
+ `((substitute* "src/gallium/drivers/llvmpipe/meson.build"
+ (("'lp_test_arit', ") ""))))
+ (_
+ '((display "No tests to disable on this architecture.\n"))))))
+ (add-before 'configure 'fix-dlopen-libnames
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((out #$output))
+ ;; Remain agnostic to .so.X.Y.Z versions while doing
+ ;; the substitutions so we're future-safe.
+ (substitute* "src/glx/meson.build"
+ (("-DGL_LIB_NAME=\"lib@0@\\.so\\.@1@\"")
+ (string-append "-DGL_LIB_NAME=\"" out
+ "/lib/lib@0@.so.@1@\"")))
+ (substitute* "src/gbm/backends/dri/gbm_dri.c"
+ (("\"libglapi\\.so")
+ (string-append "\"" out "/lib/libglapi.so")))
+ (substitute* "src/gbm/main/backend.c"
+ ;; No need to patch the gbm_gallium_drm.so reference;
+ ;; it's never installed since Mesa removed its
+ ;; egl_gallium support.
+ (("\"gbm_dri\\.so")
+ (string-append "\"" out "/lib/dri/gbm_dri.so")))
+ (substitute* "src/gallium/drivers/zink/zink_screen.c"
+ (("util_dl_open\\(VK_LIBNAME\\)")
+ (format #f "util_dl_open(\"~a\")"
+ (search-input-file inputs
+ "lib/libvulkan.so.1")))))))
+ (add-after 'install 'split-outputs
+ (lambda _
+ (let ((out #$output)
+ (bin #$output:bin))
+ ;; Not all architectures have the Vulkan overlay control script.
+ (mkdir-p (string-append out "/bin"))
+ (call-with-output-file (string-append out "/bin/.empty")
+ (const #t))
+ (copy-recursively (string-append out "/bin")
+ (string-append bin "/bin"))
+ (delete-file-recursively (string-append out "/bin")))))
+ (add-after 'install 'symlinks-instead-of-hard-links
+ (lambda _
+ ;; All the drivers and gallium targets create hard links upon
+ ;; installation (search for "hardlink each megadriver instance"
+ ;; in the makefiles). This is no good for us since we'd produce
+ ;; nars that contain several copies of these files. Thus, turn
+ ;; them into symlinks, which saves ~124 MiB.
+ (let* ((out #$output)
+ (lib (string-append out "/lib"))
+ (files (find-files lib
+ (lambda (file stat)
+ (and (string-contains file ".so")
+ (eq? 'regular
+ (stat:type stat))))))
+ (inodes (map (compose stat:ino stat) files)))
+ (for-each (lambda (inode)
+ (match (filter-map (match-lambda
+ ((file ino)
+ (and (= ino inode) file)))
+ (zip files inodes))
+ ((_)
+ #f)
+ ((reference others ..1)
+ (format #t "creating ~a symlinks to '~a'~%"
+ (length others) reference)
+ (for-each delete-file others)
+ (for-each (lambda (file)
+ (if (string=? (dirname file)
+ (dirname reference))
+ (symlink (basename reference)
+ file)
+ (symlink reference file)))
+ others))))
+ (delete-duplicates inodes)))))
+ (add-after 'install 'set-layer-path-in-manifests
+ (lambda _
+ (let* ((out #$output)
+ (implicit-path (string-append
+ out
+ "/share/vulkan/implicit_layer.d/"))
+ (explicit-path (string-append
+ out
+ "/share/vulkan/explicit_layer.d/"))
+ (fix-layer-path
+ (lambda (layer-name)
+ (let* ((explicit (string-append explicit-path layer-name ".json"))
+ (implicit (string-append implicit-path layer-name ".json"))
+ (manifest (if (file-exists? explicit)
+ explicit
+ implicit)))
+ (substitute* manifest
+ (((string-append "\"lib" layer-name ".so\""))
+ (string-append "\"" out "/lib/lib" layer-name ".so\"")))))))
+ (for-each fix-layer-path '("VkLayer_MESA_device_select"
+ "VkLayer_MESA_overlay"))))))))))
+
+mesa-libglvnd
@@ -0,0 +1,46 @@
+(define-module (ryan-packages hyprland)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix download))
+
+(define aquamarine
+ (package
+ (name "aquamarine")
+ (version "0.4.3")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/aquamarine")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "114fspibmrwvzdmzv4xdy000vg7mn9r5vas3pr1ndb9xyl15ja1s"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:tests? #f))
+ (native-inputs
+ (list
+ gcc-14
+ pkg-config
+ mesa-headers
+ hyprwayland-scanner
+ hwdata))
+ (inputs
+ (list
+ libglvnd
+ mesa-libglvnd
+ libseat
+ libinput
+ libxkbcommon
+ libdisplay-info
+ libxcb
+ libxinerama
+ libxcursor
+ wayland
+ wayland-protocols
@@ -0,0 +1,495 @@
+(define-module (ryan-packages hyprland)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages wm)
+ #:use-module (gnu packages gl)
+ #:use-module (ryan-packages gl)
+ #:use-module (guix utils))
+
+; hyprland deps
+(define-public libseat-0.8.0
+ (package
+ (inherit libseat)
+ (name "libseat")
+ (version "0.8.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~kennylevinsen/seatd")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02wzrgp8di6hqmicnm2fim6jnvbn62wy248ikvdvrhiywrb7i931"))))))
+
+(define-public libinput-minimal-1.26.1
+ (package
+ (inherit libinput-minimal)
+ (name "libinput-minimal")
+ (version "1.26.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.freedesktop.org/libinput/libinput.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "094k23i10jjmgdzhv5lj7xpc3fgkwi9afcihf0l2fjj71ym8l9fy"))))
+ (native-inputs
+ (modify-inputs (package-native-inputs libinput)
+ (append python-minimal-wrapper python-pytest)))))
+
+(define-public cmake-minimal-3.27.0
+ (package
+ (inherit cmake-minimal)
+ (name "cmake-minimal")
+ (version "3.27.0")
+ (source (origin
+ (inherit (package-source cmake-minimal))
+ (method url-fetch)
+ (uri (string-append "https://cmake.org/files/v"
+ (version-major+minor version)
+ "/cmake-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1f1w9mb868q38nzy145b6q9mc5waf8yi521cwfkd14xr51mxpvda"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments cmake-minimal)
+ ((#:configure-flags flags ''())
+ #~(append (list "-DCMake_ENABLE_DEBUGGER=false") #$flags))
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (delete 'delete-help-documentation)
+ (delete 'check)))))))
+
+; hypr suite
+
+(define hyprutils
+ (package
+ (name "hyprutils")
+ (version "0.2.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprutils")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0nxx5yb5k9726x95n8gi27xyxyzwb0ma0nj3czpb51sda1k0hz0g"))))
+ (build-system cmake-build-system)
+ ;(arguments (list #:tests? #f))
+ (native-inputs (list pkg-config gcc-13))
+ (inputs (list pixman))
+ (home-page "https://hyprland.org/")
+ (synopsis "Small C++ library for utilities used across the Hypr* ecosystem")
+ (description "C++ library for utilities in the Hypr ecosystem")
+ (license license:bsd-3)))
+
+(define-public libliftoff
+ (package
+ (name "libliftoff")
+ (version "0.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/emersion/libliftoff"
+ "/archive/refs/tags/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "17ssbjbv8njgvfha8zsx4nixpi5xxl1rwvk0lcacgqk0nmjyb23s"))))
+ (build-system meson-build-system)
+ (native-inputs (list gcc-13
+ pkg-config
+ cmake-minimal
+ libdrm))
+ (home-page "https://github.com/emersion/libliftoff")
+ (synopsis "Lightweight KMS plane library")
+ (description "")
+ (license license:expat)))
+
+(define udis86
+ (let ((revision "186")
+ (commit "5336633af70f3917760a6d441ff02d93477b0c86"))
+ (package
+ (name "udis86")
+ (version (git-version "1.7.2" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/canihavesomecoffee/udis86")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0y5z1169wff578jylpafsww4px4y6gickhcs885a9c660d8xs9qy"))))
+ (build-system gnu-build-system)
+ (native-inputs (list autoconf automake libtool python-minimal-wrapper))
+ (home-page "https://github.com/canihavesomecoffee/udis86")
+ (synopsis "Disassembler Library for x86 and x86-64")
+ (description
+ "Udis86 is a disassembler for the x86 and x86-64 class of instruction
+set architectures. It consists of a C library called @code{libudis86} and a
+command line tool called @code{udcli} that incorporates the library.")
+ (license license:bsd-2))))
+
+(define hyprlang
+ (package
+ (name "hyprlang")
+ (version "0.5.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprlang")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "17i0372yv0fcwnyki36crz7afw8c5f3j985m083p7rjbh4fn3br6"))))
+ (build-system cmake-build-system)
+ (native-inputs (list gcc-13))
+ (home-page "https://hyprland.org/hyprlang/")
+ (synopsis "Official implementation library for hypr config language")
+ (description
+ "This package provides the official implementation for hypr configuration
+language used in @code{hyprland}.")
+ (license license:gpl3+)))
+
+(define-public hyprcursor
+ (package
+ (name "hyprcursor")
+ (version "0.1.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprcursor")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0z3ar580n630145nq80qw0p8v0kai6knvhi6nr9z0y1jrb07b0ql"))))
+ (build-system cmake-build-system)
+ (arguments (list #:tests? #f)) ;FIXME
+ (inputs (list cairo hyprlang librsvg libzip tomlplusplus))
+ (native-inputs (list gcc-13 pkg-config))
+ (home-page "https://hyprland.org/")
+ (synopsis "Hyprland cursor format, library and utilities")
+ (description
+ "This package provides Hyprland cursor format, library and utilities.")
+ (license license:bsd-3)))
+
+(define-public hyprland-protocols
+ (package
+ (name "hyprland-protocols")
+ (version "0.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprland-protocols")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1drjznj7fn6m5m6skhzh0p031cb5x0bb4i56jxnxwpwaa71g1z20"))))
+ (build-system meson-build-system)
+ (home-page "https://hyprland.org")
+ (synopsis "Wayland protocol extensions for Hyprland")
+ (description
+ "This package provides Wayland protocol extensions for Hyprland and it
+exists in an effort to bridge the gap between Hyprland and KDE/Gnome's
+functionality. Since @code{wlr-protocols} is closed for new submissions, and
+@code{wayland-protocols} is very slow with changes, this package will hold
+protocols used by Hyprland to bridge the aforementioned gap.")
+ (license license:bsd-3)))
+
+(define-public hyprwayland-scanner
+ (package
+ (name "hyprwayland-scanner")
+ (version "0.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprwayland-scanner")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1xc2xcxpq61lg964ihk0wbfzqqvibw20iz09g0p33ym51gwlpxr4"))))
+ (build-system cmake-build-system)
+ (arguments (list #:tests? #f)) ;No tests.
+ (inputs (list pugixml))
+ (native-inputs (list gcc-13 pkg-config))
+ (home-page "https://github.com/hyprwm/hyprwayland-scanner")
+ (synopsis "Hyprland implementation of wayland-scanner, in and for C++")
+ (description
+ "This package provides a Hyprland implementation of wayland-scanner, in and
+for C++.")
+ (license license:bsd-3)))
+
+(define hwdata-for-hyprland
+ (package
+ (inherit hwdata)
+ (arguments
+ (substitute-keyword-arguments (package-arguments hwdata)
+ ((#:phases _) #~%standard-phases)))
+ (outputs '("out"))))
+
+(define-public wayland-protocols-1.36
+ (package
+ (inherit wayland-protocols)
+ (name "wayland-protocols")
+ (version "1.36")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://gitlab.freedesktop.org/wayland/wayland-protocols"
+ "/-/releases/" version "/downloads/"
+ "wayland-protocols-" version ".tar.xz"))
+ (sha256
+ (base32
+ "14kyxywpfkgpjpkrybs28q1s2prnz30k1b4zap5a3ybrbvh4vzbi"))))))
+
+
+(define-public aquamarine
+ (package
+ (name "aquamarine")
+ (version "0.3.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/aquamarine")
+ (commit (string-append "v" version))))
+ (patches (list
+ (local-file "patches/aquamarine-fix-cmake.patch")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "114fspibmrwvzdmzv4xdy000vg7mn9r5vas3pr1ndb9xyl15ja1s"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f))
+ (native-inputs
+ (list gcc-13
+ pkg-config
+ mesa-headers
+ hyprwayland-scanner
+ hwdata-for-hyprland))
+ (propagated-inputs
+ (list mesa-libglvnd
+ libglvnd
+ libseat-0.8.0
+ libinput-minimal-1.26.1
+ libxkbcommon
+ libdisplay-info
+ libxcb
+ libxinerama
+ libxcursor
+ xcb-util
+ xcb-util-errors
+ xcb-util-keysyms
+ xcb-util-wm
+ wayland
+ wayland-protocols-1.36))
+ (inputs
+ (list hyprutils pixman))
+ (home-page "https://hyprland.org")
+ (synopsis "Aquamarine is a very light linux rendering backend library ")
+ (description "") ;; TODO: this
+ (license license:bsd-3)))
+
+
+(define xorg-server-xwayland-for-hyprland
+ (package
+ (inherit xorg-server-xwayland)
+ (arguments
+ (substitute-keyword-arguments (package-arguments xorg-server-xwayland)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'install-headers
+ (lambda _
+ (let ((fmw (string-append #$output "/include")))
+ (mkdir-p fmw)
+ (copy-recursively "include" fmw))
+ ))
+ ))))))
+
+
+(define-public hyprland-ryan
+ (package
+ (name "hyprland")
+ (version "0.42.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/Hyprland")
+ (commit (string-append "v" version))))
+ (patches (list
+ (local-file "patches/hyprland-fix-cmake.patch")))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (for-each delete-file-recursively
+ '("hyprpm"
+ "subprojects"))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hp2xafvlymikxsi6pr8iik35g46683bg376n9hkjxgh9y6njzqv"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f
+ #:build-type "release"
+ #:cmake cmake-minimal-3.27.0
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "src" "\\.cpp$")
+ (("/usr/local(/bin/Hyprland)" _ path)
+ (string-append #$output path))
+ (("/usr") #$output)
+ (("(execAndGet\\(\")\\<(cat|fc-list|lspci)\\>"
+ _ pre cmd)
+ (string-append
+ pre (search-input-file
+ inputs (string-append "bin/" cmd))))
+ (("\\<cc\\>") (search-input-file inputs "bin/gcc"))
+ ;; NOTE: Add binutils to inputs will override ld-wrapper.
+ (("(execAndGet\\(\\(\")\\<nm\\>" _ pre)
+ (string-append pre #$binutils "/bin/nm"))
+ (("\\<(addr2line|objcopy)\\>" _ cmd)
+ (string-append #$binutils "/bin/" cmd)))
+ (substitute* "CMakeLists.txt"
+ (("libudis86") "udis86"))
+ ))
+ (add-after 'fix-path 'fix-protocols
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((protocols (string-append
+ (getcwd)
+ "/subprojects/hyprland-protocols/protocols")))
+ (mkdir-p protocols)
+ (copy-recursively
+ (search-input-directory inputs "share/hyprland-protocols/protocols")
+ protocols))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (mesa (assoc-ref inputs "mesa")))
+ (wrap-program (string-append out "/bin/Hyprland")
+ `("__EGL_VENDOR_LIBRARY_DIRS" prefix ,(list (string-append mesa "/share/glvnd/egl_vendor.d")))))))
+ )))
+ (native-inputs
+ (list gcc-13
+ jq
+ pkg-config
+ hyprwayland-scanner
+ hwdata-for-hyprland))
+ (inputs
+ (list gcc-13
+
+ cairo
+ pango
+ pciutils
+ libliftoff
+ udis86
+
+ aquamarine
+ hyprcursor
+ hyprland-protocols
+ hyprlang
+ hyprutils
+
+ xorg-server-xwayland-for-hyprland))
+ (home-page "https://hyprland.org")
+ (synopsis "Dynamic tiling Wayland compositor based on wlroots")
+ (description
+ "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots}
+that doesn't sacrifice on its looks. It supports multiple layouts, fancy
+effects, has a very flexible IPC model allowing for a lot of customization, and
+more.")
+ (license license:bsd-3)))
+
+
+(define-public hyprpaper
+ (package
+ (name "hyprpaper")
+ (version "0.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/hyprwm/hyprpaper"
+ "/archive/refs/tags/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1d23nsj5hzyxwvhkg9a7x1b8jgyqwzad91zb1894jnxr2d844h28"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f))
+ (native-inputs
+ (list gcc-13
+ pkg-config))
+ (inputs
+ (list hyprlang
+ wayland-protocols-1.36
+ wayland
+ cairo
+ libjpeg-turbo
+ libwebp
+ mesa
+ pango
+ libglvnd))
+ (home-page "https://github.com/hyprwm/hyprpaper")
+ (license license:bsd-3)
+ (synopsis "Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.")
+ (description "Hyprpaper is a blazing fast wayland wallpaper utility with IPC controls.")))
+
+
+(define-public hypridle
+ (package
+ (name "hypridle")
+ (version "0.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/hyprwm/hypridle"
+ "/archive/refs/tags/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ybwip7yq9q569naz5bnrvcdz99648c4pln2zi30z21y333hpas0"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f))
+ (native-inputs
+ (list gcc-13
+ pkg-config))
+ (inputs
+ (list hyprlang
+ wayland-protocols-1.36
+ wayland
+ sdbus-c++))
+ (home-page "https://github.com/hyprwm/hypridle")
+ (license license:bsd-3)
+ (synopsis "Hyprland's idle daemon ")
+ (description "Hyprland's idle daemon ")))
@@ -0,0 +1,25 @@
+From 7b6f11ed0708d8775f42107e19d9099835e2498e Mon Sep 17 00:00:00 2001
+From: Freya Murphy <freya@freyacat.org>
+Date: Mon, 5 Aug 2024 17:52:48 -0400
+Subject: [PATCH] fix cmake
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bb7a4d6..7f7e7ff 100644
+--- a/CMakeLists.txt
+@@ -19,7 +19,7 @@ set(INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR})
+ set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
+
+ find_package(PkgConfig REQUIRED)
+-find_package(OpenGL REQUIRED COMPONENTS "GLES2")
++find_package(OpenGL REQUIRED)
+ find_package(hyprwayland-scanner 0.4.0 REQUIRED)
+ pkg_check_modules(
+ deps
+--
+2.45.1
+
@@ -0,0 +1,41 @@
+From 33fac66982422104cc1c2664f9a841fc96295c13 Mon Sep 17 00:00:00 2001
+From: Freya Murphy <freya@freyacat.org>
+Date: Mon, 5 Aug 2024 20:35:50 -0400
+Subject: [PATCH] fix cmake
+
+---
+ CMakeLists.txt | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fa58b63d..51ea6cfa 100644
+--- a/CMakeLists.txt
+@@ -26,7 +26,6 @@ execute_process(COMMAND ./scripts/generateVersion.sh
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+
+ # udis
+-add_subdirectory("subprojects/udis86")
+
+ if(CMAKE_BUILD_TYPE)
+ string(TOLOWER ${CMAKE_BUILD_TYPE} BUILDTYPE_LOWER)
+@@ -85,7 +84,7 @@ if(LEGACY_RENDERER)
+ else()
+ set(GLES_VERSION "GLES3")
+ endif()
+-find_package(OpenGL REQUIRED COMPONENTS ${GLES_VERSION})
++find_package(OpenGL REQUIRED)
+
+ pkg_check_modules(
+ deps
+@@ -314,7 +313,6 @@ protocolwayland()
+
+ # tools
+ add_subdirectory(hyprctl)
+-add_subdirectory(hyprpm)
+
+ # binary and symlink
+ install(TARGETS Hyprland)
+--
+2.45.1
+
@@ -16,6 +16,7 @@
#:use-module (gnu packages xorg)
#:use-module (gnu packages linux)
#:use-module (gnu packages gl)
+ #:use-module (gnu packages image)
#:use-module (gnu packages llvm)
#:use-module (gnu packages gcc)
#:use-module (gnu packages check)
@@ -23,6 +24,7 @@
#:use-module (guix utils)
#:use-module (rosenthal packages wm)
#:use-module (ryan-packages gtk)
+ #:use-module (ryan-packages gl)
#:use-module (gnu packages wm))
(define-public swaylock-effects-new
@@ -57,7 +59,7 @@
(package
(inherit waybar)
(name "waybar-new")
- (version "0.10.0")
+ (version "0.10.3")
(source
(origin
(method git-fetch)
@@ -66,11 +68,11 @@
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "00a8npilvcvicn9mff00i5rdzdll0zrmq0y8wgr314gnljn52md7"))))
+ (base32 "04xd61ycn1nisq1s5ch14zkbsjcfcy6n29nkjn68s2ribmws0iid"))))
(arguments
(list
- #:configure-flags #~(list "--wrap-mode=nodownload" "-Dexperimental=true")))
- (inputs (modify-inputs (package-inputs waybar) (delete "gtkmm") (prepend gtkmm-ryan))))) ;(prepend python cava catch2 gtkmm)))))
+ #:configure-flags #~(list "--wrap-mode=nodownload" "-Dexperimental=true")))))
+ ;(inputs (modify-inputs (package-inputs waybar) (delete "gtkmm") (prepend gtkmm-ryan))))) ;(prepend python cava catch2 gtkmm)))))
;(native-inputs (modify-inputs (package-native-inputs waybar) (prepend gcc-13)))))
(define cairo-hypr ;;; stolen from rosenthal since it is not exported
@@ -93,71 +95,50 @@
#~(list "-Dspectre=disabled")))
(outputs '("out"))))
-
(define-public hyprlock
- (package
- (name "hyprlock")
- (version "0.2.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/hyprwm/hyprlock")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0vj8jfflc8zw769dqdqq7ms3dfafsirb2c0g37xsqkc4rzzri7nn"))))
- (build-system cmake-build-system)
- (native-inputs
- (list gcc-13
- pkg-config
- mesa-headers
- wayland))
- (inputs
- (list cairo
- pango
- libxkbcommon
- hyprlang
- mesa
- wayland-protocols
- linux-pam))
- (home-page "https://github.com/hyprwm/hyprlock")
- (license license:bsd-3)
- (synopsis "Screen locker for Hyprland")
- (description "Screen locker for hyprland.")))
-
-
-;(define hyprland-unbundle-wlroots-patch
-; (origin
-; (method url-fetch)
-; (uri (string-append "https://github.com/hyprwm/Hyprland" "/raw/"
-; "13f6f0b923ff3ec94a3bec886c28b90402ceef91"
-; "/nix/patches/meson-build.patch"))
-; (sha256
-; (base32 "02sq5ymxxrxp93mccafc4ilpsvs4m8bxc3whp7bcc5v9dx41va8k"))))
-
-;(define-public hyprland-temp
-; (package
-; (inherit hyprland)
-; (version "12985fa0d8e43b1e33326dfb49be681970dfaea5")
-; (source (origin
-; (method git-fetch)
-; (uri (git-reference
-; (url "https://github.com/hyprwm/Hyprland")
-; (commit version)))
-; (file-name (git-file-name "hyprland" version))
-; (modules '((guix build utils)))
-; (snippet
-; '(begin
-; (substitute* "meson.build"
-; ((".*hyprpm/src.*") ""))
-; (for-each delete-file-recursively
-; '("hyprpm"
-; "subprojects"))
-; (copy-file "src/version.h.in" "src/version.h")))
-; (sha256
-; (base32
-; "13l95h5krmv7syidw9c4gn62ac5qcqg9pmfh6x8ydjws97h05jvz"))
-; (patches (list hyprland-unbundle-wlroots-patch))))))
+ (let ((commit "dba9d8b5175a6f23463035aafc6b0c741f9b73a5")
+ (revision "1"))
+ (package
+ (name "hyprlock")
+ (version (git-version "0.4.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprlock")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1zzv7w7hn8k71w75a9mz548cbl4f8zcsd8i92abgnrx5x9i35q63"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (mesa (assoc-ref inputs "mesa")))
+ (wrap-program (string-append out "/bin/hyprlock")
+ `("__EGL_VENDOR_LIBRARY_DIRS" prefix ,(list (string-append mesa "/share/glvnd/egl_vendor.d"))))))))))
+ (native-inputs
+ (list gcc-13
+ pkg-config
+ mesa-headers
+ wayland))
+ (inputs
+ (list cairo
+ pango
+ libxkbcommon
+ hyprlang
+ mesa-libglvnd
+ libdrm
+ libglvnd
+ wayland-protocols
+ linux-pam))
+ (home-page "https://github.com/hyprwm/hyprlock")
+ (license license:bsd-3)
+ (synopsis "Screen locker for Hyprland")
+ (description "Screen locker for hyprland."))))
-hyprlock
@@ -0,0 +1,371 @@
+(define-module (ryan-packages wmrosenthal)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system qt)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages man)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages wm)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (rosenthal packages freedesktop))
+
+(define cairo-for-hyprland
+ (package
+ (inherit cairo)
+ (name "cairo")
+ (version "1.18.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://cairographics.org/releases/cairo-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0r0by563s75xyzz0d0j1nmjqmdrk2x9agk7r57p3v8vqp4v0ffi4"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:tests? #f
+ #:glib-or-gtk? #t
+ #:configure-flags
+ #~(list "-Dspectre=disabled")))
+ (outputs '("out"))))
+
+(define hwdata-for-hyprland
+ (package
+ (inherit hwdata)
+ (arguments
+ (substitute-keyword-arguments (package-arguments hwdata)
+ ((#:phases _) #~%standard-phases)))
+ (outputs '("out"))))
+
+(define libdrm-for-hyprland
+ (package
+ (inherit libdrm)
+ (name "libdrm")
+ (version "2.4.120")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://dri.freedesktop.org/libdrm/libdrm-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0yijzgg6rdsa68bz03sw0lcfa2nclv9m3as1cja50wkcyxim7x9v"))))))
+
+(define udis86-for-hyprland
+ (let ((revision "186")
+ (commit "5336633af70f3917760a6d441ff02d93477b0c86"))
+ (package
+ (name "udis86")
+ (version (git-version "1.7.2" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/canihavesomecoffee/udis86")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0y5z1169wff578jylpafsww4px4y6gickhcs885a9c660d8xs9qy"))))
+ (build-system gnu-build-system)
+ (native-inputs (list autoconf automake libtool python-minimal-wrapper))
+ (home-page "https://github.com/canihavesomecoffee/udis86")
+ (synopsis "Disassembler Library for x86 and x86-64")
+ (description
+ "Udis86 is a disassembler for the x86 and x86-64 class of instruction
+set architectures. It consists of a C library called @code{libudis86} and a
+command line tool called @code{udcli} that incorporates the library.")
+ (license license:bsd-2))))
+
+(define wayland-protocols-for-hyprland
+ (package
+ (inherit wayland-protocols)
+ (name "wayland-protocols")
+ (version "1.34")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://gitlab.freedesktop.org/wayland/wayland-protocols"
+ "/-/releases/" version "/downloads/"
+ "wayland-protocols-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1sxgvis0abkymc02nhx2svm60myiq3shvy759sphpxl5rp52g6y5"))))))
+
+(define wlroots-hyprland
+ (package
+ (inherit wlroots)
+ (name "wlroots")
+ (version "611a4f24cd2384378f6e500253983107c6656c64")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/wlroots-hyprland")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0wpqa241656rcnpszkq14ikz4dxsal2xrrc7ryn22xmciw4rkxxw"))))
+ (propagated-inputs
+ (modify-inputs (package-propagated-inputs wlroots)
+ (prepend libdrm-for-hyprland)
+ (replace "libinput-minimal" libinput-minimal-1.24.0)
+ (replace "wayland-protocols" wayland-protocols-for-hyprland)))
+ (native-inputs
+ (modify-inputs (package-native-inputs wlroots)
+ (replace "hwdata" `(,hwdata-for-hyprland "out"))))))
+
+(define-public hyprcursor
+ (package
+ (name "hyprcursor")
+ (version "0.1.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprcursor")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0252abb9yjskclhxjc2ar6r2x9pfllpbas7rfp4597i2gnxrzbvv"))))
+ (build-system cmake-build-system)
+ (arguments (list #:tests? #f)) ;FIXME
+ (inputs (list cairo-for-hyprland hyprlang librsvg libzip))
+ (native-inputs (list gcc-13 pkg-config))
+ (home-page "https://hyprland.org/")
+ (synopsis "Hyprland cursor format, library and utilities")
+ (description
+ "This package provides Hyprland cursor format, library and utilities.")
+ (license license:bsd-3)))
+
+(define-public hyprland-protocols
+ (package
+ (name "hyprland-protocols")
+ (version "0.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprland-protocols")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1drjznj7fn6m5m6skhzh0p031cb5x0bb4i56jxnxwpwaa71g1z20"))))
+ (build-system meson-build-system)
+ (home-page "https://hyprland.org")
+ (synopsis "Wayland protocol extensions for Hyprland")
+ (description
+ "This package provides Wayland protocol extensions for Hyprland and it
+exists in an effort to bridge the gap between Hyprland and KDE/Gnome's
+functionality. Since @code{wlr-protocols} is closed for new submissions, and
+@code{wayland-protocols} is very slow with changes, this package will hold
+protocols used by Hyprland to bridge the aforementioned gap.")
+ (license license:bsd-3)))
+
+(define-public hyprland
+ (package
+ (name "hyprland")
+ (version "fe7b748eb668136dd0558b7c8279bfcd7ab4d759")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/Hyprland")
+ (commit version)
+ (recursive? #t)))
+ (file-name (git-file-name name "0.39.1"))
+ ; (modules '((guix build utils)))
+ ; (snippet
+ ; '(begin
+ ; ;; Remove bundled sources and hyprpm utility.
+ ; (substitute* "meson.build"
+ ; ((".*hyprpm/src.*") ""))
+ ; (for-each delete-file-recursively
+ ; '("hyprpm"
+ ; "subprojects"))))
+ (sha256
+ (base32
+ "1b2l1j7i7fgy66c1nai7z16l0a95ay3xqq7yr2r6h7sq0jlnpgpc"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:build-type "release"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "src" "\\.cpp$")
+ (("/usr/local(/bin/Hyprland)" _ path)
+ (string-append #$output path))
+ (("/usr") #$output)
+ (("(execAndGet\\(\")\\<(cat|fc-list|lspci)\\>"
+ _ pre cmd)
+ (string-append
+ pre (search-input-file
+ inputs (string-append "bin/" cmd))))
+ (("\\<cc\\>") (search-input-file inputs "bin/gcc"))
+ ;; NOTE: Add binutils to inputs will override ld-wrapper.
+ (("(execAndGet\\(\\(\")\\<nm\\>" _ pre)
+ (string-append pre #$binutils "/bin/nm"))
+ (("\\<(addr2line|objcopy)\\>" _ cmd)
+ (string-append #$binutils "/bin/" cmd))))))))
+ (native-inputs (cons* (list "gcc-13" gcc-13) (list "jq" jq) (list "pkg-config" pkg-config) (list "cmake" cmake) (list "hwdata" hwdata-for-hyprland) (package-native-inputs wlroots)))
+ (propagated-inputs
+ (cons*
+ (list "libdrm-for-hyprland" libdrm-for-hyprland)
+ (list "libinput-minimal" libinput-minimal-1.24.0)
+ (list "wayland-protocols" wayland-protocols-for-hyprland)
+ (package-propagated-inputs wlroots)))
+
+ (inputs
+ (list cairo-for-hyprland
+ gcc-13
+ hyprcursor
+ hyprland-protocols
+ hyprlang
+ pango
+ pciutils))
+ (home-page "https://hyprland.org")
+ (synopsis "Dynamic tiling Wayland compositor based on wlroots")
+ (description
+ "Hyprland is a dynamic tiling Wayland compositor based on @code{wlroots}
+that doesn't sacrifice on its looks. It supports multiple layouts, fancy
+effects, has a very flexible IPC model allowing for a lot of customization, and
+more.")
+ (license license:bsd-3)))
+
+(define-public hyprlang
+ (package
+ (name "hyprlang")
+ (version "0.5.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/hyprlang")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0f8mahg6d6wylybvh6hgayls57miwwv4w69fbaskd8d7dkg2h7kd"))))
+ (build-system cmake-build-system)
+ (native-inputs (list gcc-13))
+ (home-page "https://hyprland.org/hyprlang/")
+ (synopsis "Official implementation library for hypr config language")
+ (description
+ "This package provides the official implementation for hypr configuration
+language used in @code{hyprland}.")
+ (license license:gpl3+)))
+
+(define-public grimblast
+ (package
+ (name "grimblast")
+ (version "0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/contrib")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ld0sj7ahf9jf8cqzbqkhj3m2w60027ixic24ih26nwy90b5qjwx"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:tests? #f ;no tests
+ #:make-flags
+ #~(list (string-append "PREFIX=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "grimblast")))
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((grimblast (string-append #$output "/bin/grimblast")))
+ (wrap-script grimblast
+ `("PATH" suffix
+ ,(map (lambda (program)
+ (dirname (search-input-file
+ inputs (string-append "/bin/" program))))
+ '("grim" "slurp" "hyprctl" "wl-copy" "jq"
+ "notify-send" "date"))))))))))
+ (native-inputs (list scdoc))
+ (inputs (list grim guile-3.0 jq libnotify slurp hyprland wl-clipboard))
+ (home-page "https://github.com/hyprwm/contrib")
+ (synopsis "Hyprland version of Grimshot")
+ (description "A Hyprland version of Grimshot.")
+ (license license:expat)))
+
+(define-public xdg-desktop-portal-hyprland
+ (package
+ (name "xdg-desktop-portal-hyprland")
+ (version "1.3.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hyprwm/xdg-desktop-portal-hyprland")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0fdbzxanmmzrvb9wfzg1pdsnlg7dl6v5k8bl44w10n48s7bbbzn0"))))
+ (build-system qt-build-system)
+ (arguments
+ (list #:tests? #f ;No tests
+ #:qtbase qtbase
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (find-files "." "\\.cp?*$")
+ (("/bin/sh") "sh")
+ (("\\<(sh|grim|hyprctl|slurp)\\>" _ cmd)
+ (search-input-file inputs (string-append "/bin/" cmd)))
+ (("\\<(hyprland-share-picker)\\>" _ cmd)
+ (string-append #$output "/bin/" cmd))))))))
+ (native-inputs
+ (list gcc-13 pkg-config wayland))
+ (inputs
+ (list bash-minimal
+ grim
+ hyprland
+ hyprland-protocols
+ hyprlang
+ mesa
+ pipewire
+ qtwayland
+ sdbus-c++
+ slurp
+ wayland-protocols))
+ (home-page "https://github.com/hyprwm/xdg-desktop-portal-hyprland")
+ (synopsis "XDG Desktop Portal backend for Hyprland")
+ (description
+ "This package provides @code{xdg-desktop-portal-hyprland}, which extends
+@code{xdg-desktop-portal-wlr} for Hyprland with support for
+@code{xdg-desktop-portal} screenshot and casting interfaces, while adding a few
+extra portals specific to Hyprland, mostly for window sharing.")
+ (license license:bsd-3)))
+
+hyprland