diff --git a/flake.lock b/flake.lock index ee08373..071f3ed 100755 --- a/flake.lock +++ b/flake.lock @@ -107,11 +107,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1771354440, - "narHash": "sha256-WuwTJAZh1Sot89h63kKWIMhy8ComS+sv1BsijvYhX5E=", + "lastModified": 1771523612, + "narHash": "sha256-ScRqXJaqDTonQ1cs7VKxPw5pO0TQ/OnErfjOKCHX4Ps=", "owner": "9001", "repo": "copyparty", - "rev": "f1a433a61718947853162043d3dd66905adc2657", + "rev": "6f1d6647546832c6640cbad88817e28fb63ea3ec", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1771355198, - "narHash": "sha256-89m5VKxIs8QNiIvLsxHu5NpyhDsoXTtoN801IAurnW4=", + "lastModified": 1771469470, + "narHash": "sha256-GnqdqhrguKNN3HtVfl6z+zbV9R9jhHFm3Z8nu7R6ml0=", "owner": "nix-community", "repo": "disko", - "rev": "92fceb111901a6f13e81199be4fab95fce86a5c9", + "rev": "4707eec8d1d2db5182ea06ed48c820a86a42dc13", "type": "github" }, "original": { @@ -138,6 +138,25 @@ "type": "github" } }, + "fern": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1771568980, + "narHash": "sha256-/qbVs2dZVibeg9mDfeKIapmJ3glHgCOYxUuOf8pRKcQ=", + "owner": "km-clay", + "repo": "fern", + "rev": "9b8c8d704b5e1485e15e29d7340cf8a62aa8fb52", + "type": "github" + }, + "original": { + "owner": "km-clay", + "repo": "fern", + "type": "github" + } + }, "firefox-gnome-theme": { "flake": false, "locked": { @@ -227,6 +246,24 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -291,11 +328,11 @@ ] }, "locked": { - "lastModified": 1771422582, - "narHash": "sha256-xK5kl3OBZaF1VwziVMX+SZ2LT9Fbu5o8vRDt78uR7no=", + "lastModified": 1771531206, + "narHash": "sha256-1R3Wx6KUkMb4x4E5UOhW9p6rqiexzSGGWxZqSHqW5n0=", "owner": "nix-community", "repo": "home-manager", - "rev": "b3ccd4bb262f4e6d3248b46cede92b90c4a42094", + "rev": "91be7cce763fa4022c7cf025a71b0c366d1b6e77", "type": "github" }, "original": { @@ -306,14 +343,14 @@ }, "hypr-contrib": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1771266242, - "narHash": "sha256-ubwGVNkVs/AqOypM+aOSVNBcJqu6p11H/M0cO03mc64=", + "lastModified": 1771502235, + "narHash": "sha256-aH8h5ZOiyEGtHmEyuE/eFxx8TN7a+NGDnl4V+dbzJ6E=", "owner": "hyprwm", "repo": "contrib", - "rev": "36b79e54887b9a8a1211a327f1653c6308a52a16", + "rev": "918f266dddae39fa4184a1b8bf51ec5381cf29f7", "type": "github" }, "original": { @@ -391,17 +428,17 @@ "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "hyprwire": "hyprwire", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems", + "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1771426136, - "narHash": "sha256-wx/Ev7U6MlDzd2HyGlSjoXcTlkaO7s8fk1g5BSlov54=", + "lastModified": 1771522877, + "narHash": "sha256-dqnkEwXPWuI8MW38kKjs880qaVA+WEWziz5liznzLYA=", "ref": "refs/heads/main", - "rev": "184af52f24c3267a4210239aba45a998404bb073", - "revCount": 6898, + "rev": "9ea6d0e15fddccf321c035e83b007a55d6829dd9", + "revCount": 6902, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -516,8 +553,8 @@ "inputs": { "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_5", - "systems": "systems_2" + "nixpkgs": "nixpkgs_6", + "systems": "systems_3" }, "locked": { "lastModified": 1770751064, @@ -731,11 +768,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1771177547, - "narHash": "sha256-trTtk3WTOHz7hSw89xIIvahkgoFJYQ0G43IlqprFoMA=", + "lastModified": 1771207753, + "narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ac055f38c798b0d87695240c7b761b82fc7e5bc2", + "rev": "d1c15b7d5806069da59e819999d70e1cec0760bf", "type": "github" }, "original": { @@ -746,54 +783,6 @@ } }, "nixpkgs_3": { - "locked": { - "lastModified": 1712163089, - "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1770841267, - "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1748929857, - "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { "locked": { "lastModified": 1771369470, "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", @@ -809,7 +798,71 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1712163089, + "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1770841267, + "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1748929857, + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_7": { + "locked": { + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0182a361324364ae3f436a63005877674cf45efb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { "locked": { "lastModified": 1770380644, "narHash": "sha256-P7dWMHRUWG5m4G+06jDyThXO7kwSk46C1kgjEWcybkE=", @@ -825,7 +878,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1767767207, "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", @@ -844,8 +897,8 @@ "nixvim": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_7", - "systems": "systems_3" + "nixpkgs": "nixpkgs_8", + "systems": "systems_4" }, "locked": { "lastModified": 1771135771, @@ -913,11 +966,12 @@ "inputs": { "copyparty": "copyparty", "disko": "disko", + "fern": "fern", "home-manager": "home-manager", "hypr-contrib": "hypr-contrib", "hyprland": "hyprland", "hyprpicker": "hyprpicker", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_7", "nixvim": "nixvim", "spicetify-nix": "spicetify-nix", "stylix": "stylix" @@ -928,7 +982,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1771268051, @@ -953,9 +1007,9 @@ "firefox-gnome-theme": "firefox-gnome-theme", "flake-parts": "flake-parts_2", "gnome-shell": "gnome-shell", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_9", "nur": "nur", - "systems": "systems_5", + "systems": "systems_6", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -963,11 +1017,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1771428844, - "narHash": "sha256-rTzo6bZEsdT7yHUZ0B4BYe32XQZzm8SiWKvWLJnxerE=", + "lastModified": 1771541829, + "narHash": "sha256-jtrIUcFoZuS6R4P18907H0pPyHaGoF5Tomez7j3KIHs=", "owner": "danth", "repo": "stylix", - "rev": "801843d10e9e22d7a00f660d069e2de70aa2980a", + "rev": "cb73f89d3ecef7e790c42f828e2228ff82975de5", "type": "github" }, "original": { @@ -978,16 +1032,16 @@ }, "systems": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -1008,16 +1062,16 @@ }, "systems_3": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -1051,6 +1105,21 @@ "type": "github" } }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tinted-foot": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 217ee2f..9507807 100755 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,7 @@ hyprpicker.url = "github:hyprwm/hyprpicker"; stylix.url = "github:danth/stylix"; disko.url = "github:nix-community/disko"; + fern.url = "github:km-clay/fern"; nixvim.url = "github:nix-community/nixvim"; @@ -41,17 +42,6 @@ hostDir = "desktop"; kind = "both"; } - { - host = "phosphorous"; - hostDir = "work"; - kind = "both"; - extraNixosModules = [ - inputs.copyparty.nixosModules.default - ]; - extraOverlays = [ - inputs.copyparty.overlays.default - ]; - } { host = "mercury"; hostDir = "laptop"; @@ -65,6 +55,22 @@ ./modules/server ]; } + { + host = "phosphorous"; + hostDir = "work"; + kind = "both"; + extraNixosModules = [ + inputs.fern.nixosModules.fern + inputs.copyparty.nixosModules.default + ]; + extraHomeModules = [ + inputs.fern.homeModules.fern + ]; + extraOverlays = [ + inputs.fern.overlays.default + inputs.copyparty.overlays.default + ]; + } ]; in { inherit (hosts) nixosConfigurations homeConfigurations; diff --git a/hosts/desktop/config.nix b/hosts/desktop/config.nix index 8772293..a68a843 100755 --- a/hosts/desktop/config.nix +++ b/hosts/desktop/config.nix @@ -1,5 +1,8 @@ -{ slash, pkgs, username, ... }: +{ inputs, pkgs, username, ... }: +let + fern = inputs.fern.packages.${pkgs.stdenv.hostPlatform.system}.default; +in { imports = [ ./hardware.nix ]; @@ -39,7 +42,7 @@ ${username} = { isNormalUser = true; initialPassword = "1234"; - shell = pkgs.zsh; + shell = fern; extraGroups = [ "input" "wheel" "persist" "libvirtd" ]; }; }; diff --git a/hosts/work/config.nix b/hosts/work/config.nix index b3c4cf7..9149e18 100755 --- a/hosts/work/config.nix +++ b/hosts/work/config.nix @@ -1,4 +1,8 @@ -{ slash, pkgs, username, ... }: +{ inputs, pkgs, username, ... }: + +let + fern = inputs.fern.packages.${pkgs.stdenv.hostPlatform.system}.default; +in { imports = [ ./hardware.nix @@ -33,6 +37,8 @@ shells = [ pkgs.myPkgs.slash pkgs.zsh pkgs.bash ]; }; + programs.fern.enable = true; + users = { groups.persist = { }; groups.davfs2 = { }; @@ -41,7 +47,7 @@ ${username} = { isNormalUser = true; initialPassword = "1234"; - shell = pkgs.zsh; + shell = pkgs.fern; extraGroups = [ "davfs2" "input" "wheel" "persist" "libvirtd" ]; }; }; diff --git a/modules/home/environment/default.nix b/modules/home/environment/default.nix index c9b5bd4..5b9a6d9 100755 --- a/modules/home/environment/default.nix +++ b/modules/home/environment/default.nix @@ -7,6 +7,7 @@ ./starship.nix ./userpkgs.nix ./zsh + ./fern ./swaync.nix ./hyprland.nix ./waybar.nix diff --git a/modules/home/environment/fern/aliases.nix b/modules/home/environment/fern/aliases.nix new file mode 100644 index 0000000..7ad9d9f --- /dev/null +++ b/modules/home/environment/fern/aliases.nix @@ -0,0 +1,32 @@ +{ lib, config, self, ... }: +{ + programs.fern = { + aliases = { + mv = "mv -v"; + cp = "cp -vr"; + gt = "gtrash"; + gtp = "playshellsound ${self}/assets/sound/rm.wav"; + sr = "source ~/.fernrc"; + psg = "ps aux | grep -v grep | grep -i -e VSZ -e"; + mkdir = "mkdir -p"; + pk = "pkill -9 -f"; + svc = "sudo systemctl"; + svcu = "systemctl --user"; + iv = "invoke"; + cfgfilecount = ''find ".\.nix" $FLAKEPATH | wc -l | toilet -f 3d | lolcat''; + vide = "neovide"; + vi = "nvim"; + mkexe = "chmod +x"; + shortdate = "date +%m-%d-%y"; + suvi = "sudoedit"; + suvide = "EDITOR=neovide; suvi"; + rustdev = "nix develop github:km-clay/devshells#rust"; + + ga = "playshellsound ${self}/assets/sound/gitadd.wav; git add"; + gcomm = "gitcommit_sfx"; + gpush = "gitpush_sfx"; + gpull = "gitpull_sfx"; + grebase = "gitrebase_sfx"; + }; + }; +} diff --git a/modules/home/environment/fern/default.nix b/modules/home/environment/fern/default.nix new file mode 100644 index 0000000..9c590c8 --- /dev/null +++ b/modules/home/environment/fern/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + imports = [ + ./env.nix + ./aliases.nix + ./extraconfig.nix + ./options.nix + ]; +} diff --git a/modules/home/environment/fern/env.nix b/modules/home/environment/fern/env.nix new file mode 100644 index 0000000..72e2296 --- /dev/null +++ b/modules/home/environment/fern/env.nix @@ -0,0 +1,18 @@ +{ lib, config, ... }: +{ + programs.fern = { + environmentVars = { + SOUNDS_ENABLED = "true"; + EDITOR = "nvim"; + SUDO_EDITOR = "nvim"; + VISUAL = "nvim"; + LANG = "en_US.UTF-8"; + BROWSER = "firefox"; + FLAKEPATH = "$HOME/.sysflake"; + STEAMPATH = "$HOME/.local/share/Steam"; + + FZF_DEFAULT_COMMAND = "fd"; + FZF_DEFAULT_OPTS = "--height 40% --layout=reverse --border"; + }; + }; +} diff --git a/modules/home/environment/fern/extraconfig.nix b/modules/home/environment/fern/extraconfig.nix new file mode 100644 index 0000000..ac5838c --- /dev/null +++ b/modules/home/environment/fern/extraconfig.nix @@ -0,0 +1,174 @@ +{ lib, config, self, pkgs, ... }: +let + shellsound = "${pkgs.myScripts.playshellsound}/bin/playshellsound"; + color-commit = "${pkgs.myScripts.color-commit}/bin/color-commit"; + sndpath = "${self}/assets/sound"; +in +{ + programs.fern = { + settings.extraPreConfig = '' + prompt_topline() { + if [ "$?" -eq "0" ]; then + last_cmd_status="\e[1;32m\e[0m" + else + last_cmd_status="\e[1;31m\e[0m" + fi + user_and_host="\e[1m$USER\e[1;36m@\e[1;31m$HOST\e[0m" + last_runtime_raw="$(echo -p "\t")" + if [ -z "$last_runtime_raw" ]; then + last_cmd_runtime="" + last_cmd_status="" + else + last_cmd_runtime="\e[1;38;2;249;226;175m󰔛 $(echo -p "\T")\e[0m" + fi + echo -n "$user_and_host $last_cmd_runtime $last_cmd_status\n" + } + + prompt_midline() { + git rev-parse --is-inside-work-tree > /dev/null 2>&1 || return + + status="$(git status --porcelain 2>/dev/null)" + gitsigns="" + + [ -n "$status" ] && echo "$status" | command grep -q '^ [MADR]' && gitsigns="$gitsigns!" + [ -n "$status" ] && echo "$status" | command grep -q '^??' && gitsigns="$gitsigns?" + [ -n "$status" ] && echo "$status" | command grep -q '^[MADR]' && gitsigns="$gitsigns+" + + ahead="$(git rev-list --count @{upstream}..HEAD 2>/dev/null)" + behind="$(git rev-list --count HEAD..@{upstream} 2>/dev/null)" + [ $ahead -gt 0 ] && gitsigns="$gitsigns↑" + [ $behind -gt 0 ] && gitsigns="$gitsigns↓" + + branch="$(git branch --show-current 2>/dev/null)" + + if [ -n "$gitsigns" ] || [ -n "$branch" ]; then + if [ -n "$gitsigns" ]; then + gitsigns="\e[1;31m[$gitsigns]" + fi + echo -n "\e[0mon \e[1;35m ''${branch}$gitsigns\e[0m\n" + fi + } + + prompt_botline() { + echo -p "\e[1;36m\W\e[1;32m/" + } + + prompt() { + top="$(prompt_topline)" + mid="$(prompt_midline)" + bot="$(prompt_botline)" + dollar="$(echo -p "\$ ")" + dollar="$(echo -e "\e[1;32m$dollar\e[0m")" + echo -en "$top$mid$bot\n$dollar" + } + + export PS1="\n\!prompt " + ''; + settings.extraPostConfig = '' + encrypt() { + if [ -z "$1" ]; then + echo "Usage: encrypt [recipient]" + return 1 + fi + if [ -z "$2" ]; then + gpg --encrypt --armor -r "$1" + else + echo "$1" | gpg --encrypt --armor -r "$2" + fi + } + decrypt() { + if [ -z "$1" ]; then + gpg --decrypt --quiet 2>/dev/null + else + echo "$1" | gpg --decrypt --quiet + fi + } + + viflake() { + ( + while ! [ -f ./flake.nix ]; do + builtin cd .. + if [ "$PWD" = "/" ]; then + echo "No flake.nix found in this directory or any parent directories." + return 1 + fi + done + nvim ./flake.nix + ) + } + + nvim() { + ${shellsound} ${sndpath}/nvim.wav + command nvim "$@" + } + neovide() { + ${shellsound} ${sndpath}/nvim.wav + command neovide "$@" + } + grimblast() { + if command grimblast "$@"; then + ${shellsound} ${sndpath}/screenshot.wav + fi + } + gitcheckout_sfx() { + if git checkout "$@"; then + ${shellsound} ${sndpath}/gitcheckout.wav + else + ${shellsound} ${sndpath}/error.wav + fi + } + gitrebase_sfx() { + if git rebase "$@"; then + ${shellsound} ${sndpath}/gitrebase.wav + else + ${shellsound} ${sndpath}/error.wav + fi + } + gitcommit_sfx() { + output="$(git commit "$@")" + if [ "$?" -eq "0" ]; then + ${shellsound} ${sndpath}/gitcommit.wav + echo "$output" | ${color-commit} + return 0 + else + ${shellsound} ${sndpath}/error.wav + echo "$output" + return 1 + fi + } + gitpush_sfx() { + if git push "$@"; then + ${shellsound} ${sndpath}/gitpush.wav + else + ${shellsound} ${sndpath}/error.wav + fi + } + gitpull_sfx() { + if git pull "$@"; then + ${shellsound} ${sndpath}/gitpull.wav + else + ${shellsound} ${sndpath}/error.wav + fi + } + + ls() { + eza -1 --group-directories-first --icons "$@" + ${shellsound} ${sndpath}/ls.wav + } + + mkcd() { + command mkdir -p "$1" && builtin cd "$1" + } + + cd() { + eza -1 --group-directories-first --icons "$@" 2> /dev/null + builtin cd "$@" + ${shellsound} ${sndpath}/cd.wav + } + + if [ "$0" = "-fern" ]; then + ${shellsound} $FLAKEPATH/assets/sound/login.wav + fi + ''; + }; +} diff --git a/modules/home/environment/fern/options.nix b/modules/home/environment/fern/options.nix new file mode 100644 index 0000000..3bd16ab --- /dev/null +++ b/modules/home/environment/fern/options.nix @@ -0,0 +1,12 @@ +{ lib, config, ... }: + +{ + programs.fern = { + enable = true; + + settings = { + autocd = true; + autoHistory = true; + }; + }; +} diff --git a/modules/home/environment/hyprland.nix b/modules/home/environment/hyprland.nix index 99c9336..efe531d 100755 --- a/modules/home/environment/hyprland.nix +++ b/modules/home/environment/hyprland.nix @@ -43,7 +43,7 @@ in { config = lib.mkIf config.movOpts.envConfig.hyprlandConfig.enable { home.packages = with pkgs; [ swaybg - inputs.hypr-contrib.packages.${pkgs.system}.grimblast + inputs.hypr-contrib.packages.${pkgs.stdenv.hostPlatform.system}.grimblast hyprpicker grim slurp diff --git a/modules/home/environment/spicetify.nix b/modules/home/environment/spicetify.nix index 20f1048..7d6d7bf 100755 --- a/modules/home/environment/spicetify.nix +++ b/modules/home/environment/spicetify.nix @@ -1,6 +1,6 @@ { lib, config, pkgs, inputs, ... }: let - spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; scheme = config.lib.stylix.colors; in { imports = [ inputs.spicetify-nix.homeManagerModules.default ]; diff --git a/modules/home/environment/userpkgs.nix b/modules/home/environment/userpkgs.nix index 2b11b5b..94c303a 100755 --- a/modules/home/environment/userpkgs.nix +++ b/modules/home/environment/userpkgs.nix @@ -1,4 +1,4 @@ -{ lib, config, pkgs, self, ... }: +{ inputs, lib, config, pkgs, self, ... }: let scripts = with pkgs; [ diff --git a/modules/home/programs/kitty.nix b/modules/home/programs/kitty.nix index bb82937..2354aad 100755 --- a/modules/home/programs/kitty.nix +++ b/modules/home/programs/kitty.nix @@ -1,4 +1,4 @@ -{ lib, config, pkgs, ... }: { +{ self, lib, config, pkgs, ... }: { options = { movOpts.programConfigs.kittyConfig.enable = lib.mkEnableOption "enables my kitty configuration"; @@ -16,9 +16,10 @@ confirm_os_window_close = 0; window_padding_width = 4; scrollback_lines = 10000; - enable_audio_bell = false; + enable_audio_bell = true; allow_remote_control = true; mouse_hide_wait = 60; + command_on_bell = "${pkgs.myScripts.playshellsound}/bin/playshellsound ${self}/assets/sound/bell.wav"; ## Tabs tab_title_template = "{index}"; diff --git a/modules/home/programs/nixvim/options.nix b/modules/home/programs/nixvim/options.nix index b926afb..e73fd43 100755 --- a/modules/home/programs/nixvim/options.nix +++ b/modules/home/programs/nixvim/options.nix @@ -41,6 +41,12 @@ in { vim.g.vimwiki_list = {{path = '~/vimwiki/', syntax = 'markdown', ext = '.md'}} + vim.filetype.add({ + filename = { + [".fernrc"] = "sh", + } + }) + vim.opt.number = true vim.opt.autochdir = false vim.opt.relativenumber = true diff --git a/modules/home/programs/yazi.nix b/modules/home/programs/yazi.nix index 8798114..714c69e 100755 --- a/modules/home/programs/yazi.nix +++ b/modules/home/programs/yazi.nix @@ -7,6 +7,7 @@ programs.yazi = { enable = true; enableZshIntegration = true; + shellWrapperName = "y"; }; }; } diff --git a/modules/sys/software/packages.nix b/modules/sys/software/packages.nix index 4aa4ae4..dc6ec80 100755 --- a/modules/sys/software/packages.nix +++ b/modules/sys/software/packages.nix @@ -3,11 +3,16 @@ movOpts.softwareCfg.sysPkgs.enable = lib.mkEnableOption "enables default system packages"; }; - config = lib.mkIf config.movOpts.softwareCfg.sysPkgs.enable { + config = + let + fern = inputs.fern.packages.${pkgs.stdenv.hostPlatform.system}.default; + in + lib.mkIf config.movOpts.softwareCfg.sysPkgs.enable { environment.systemPackages = with pkgs; [ dotnetCorePackages.sdk_8_0_4xx alsa-lib xwayland + fern wayland alsa-utils bc @@ -33,7 +38,7 @@ nixos-option nix-search-cli nix-template - nixfmt-classic + nixfmt sshfs nvd pamixer diff --git a/overlay/scripts/nix/rebuild.nix b/overlay/scripts/nix/rebuild.nix index 0b0d70a..6357d0d 100755 --- a/overlay/scripts/nix/rebuild.nix +++ b/overlay/scripts/nix/rebuild.nix @@ -29,6 +29,7 @@ pkgs.writeShellApplication { hooray() { playshellsound "${self}/assets/sound/update.wav"; } damn() { playshellsound "${self}/assets/sound/error.wav"; } + start() { playshellsound "${self}/assets/sound/nixswitch-start.wav"; } usage="\033[1;4;38;2;243;139;168mUsage\033[0m: rebuild -h for home config, rebuild -s for sys config, rebuild -a for both. Including 'n' with the flag does a dry run, i.e. rebuild -nh" @@ -42,8 +43,8 @@ pkgs.writeShellApplication { dry_flag="" [ "$dry" = true ] && dry_flag="-n" - [ "$all" = true ] && if sudo sleep 0.1 && nh os switch $dry_flag -H "${host}" "$FLAKEPATH" && nh home switch $dry_flag -c "${host}Home" "$FLAKEPATH"; then hooray; else damn; fi - [ "$system" = true ] && if nh os switch $dry_flag -H "${host}" "$FLAKEPATH"; then hooray; else damn; fi - [ "$home" = true ] && if nh home switch $dry_flag -c "${host}Home" "$FLAKEPATH"; then hooray; else damn; fi + [ "$all" = true ] && if sudo sleep 0.1 && start && nh os switch $dry_flag -H "${host}" "$FLAKEPATH" && nh home switch $dry_flag -c "${host}Home" "$FLAKEPATH"; then hooray; else damn; fi + [ "$system" = true ] && start && if nh os switch $dry_flag -H "${host}" "$FLAKEPATH"; then hooray; else damn; fi + [ "$home" = true ] && start && if nh home switch $dry_flag -c "${host}Home" "$FLAKEPATH"; then hooray; else damn; fi ''; } diff --git a/overlay/scripts/wm-controls/playshellsound.nix b/overlay/scripts/wm-controls/playshellsound.nix index b492e4c..dabf7e2 100644 --- a/overlay/scripts/wm-controls/playshellsound.nix +++ b/overlay/scripts/wm-controls/playshellsound.nix @@ -12,7 +12,7 @@ pkgs.writeShellApplication { exit 1 fi if scheck; then - runbg aplay "$1" + runbg aplay "$1" > /dev/null 2>&1 else exit 1 fi