diff --git a/.gitignore b/.gitignore
index d5fec98..e43b0f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
.DS_Store
-result
diff --git a/README.md b/README.md
index d1e8ea4..10533e4 100644
--- a/README.md
+++ b/README.md
@@ -1,54 +1,46 @@
-# dots
-## overview
-
+# my little nix system
-my dotfiles for NixOS, macOS or POSIX systems. primarily for systems that support [Nix](https://nixos.org) since they have declarative configuration. although dotfiles (in the stow directory) are made to keep them portable without the need for nix necessarily.
-- OS: [NixOS](https://nixos.org) and macOS
-- Shell: [fish](https://fishshell.com/)
-- Terminal: [Ghostty](https://ghostty.org/)
-- Browser: Firefox
+## installation
+### linux - desktop
+1. Boot up NixOS live iso on a system.
+2. Clone flake
+3. Make a folder for the system under hosts/
+4. Run `nixos-generate-config --dir hosts/HOSTNAME`
+6. Set LUKS encryption passphrase via `sudo nano /tmp/secret.key`
+7. Run disko `sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount /path/to/disko-config.nix`
+8. Copy over flake directory to new system
+9. Install system with `sudo nixos-install --flake .#HOSTNAME` - set a password for root
+10. Reboot into new system.
+11. Open a terminal and run `passwd`
+12. Log into normal user and configure networking via `nmtui`
+13. Apply dotfiles via `stow stow` in the base of the dotfiles directory.
+14. Download a wallpaper and apply it via `matugen image`
-linux specific:
-- Desktop: [Hyprland](https://hyprland.org/) and [Niri](https://github.com/YaLTeR/niri)
-- Status Bar: [Waybar](https://github.com/Alexays/Waybar)
-- Launcher: [Vicinae](https://github.com/vicinaehq/vicinae)
+#### Secure boot
+If a system has a secure boot, install the system WITHOUT the secureboot module. Once the steps above have been completed return here.
-macOS specific:
-- Launcher: [Raycast](https://www.raycast.com/)
-- Application Firewall: [Lulu](https://objective-see.org/products/lulu.html)
+1. Generate secureboot signing keys with `sudo nix run nixpkgs#sbctl create-keys`
+2. Rebuild the system WITH the secureboot module.
+3. Run `sudo sbctl verify` to check if SOME of the files are signed.
+4. Reboot your system, in the UEFI enable onboarding secureboot keys, usually a setting called 'Reset to setup mode'.
+5. Boot into your NixOS system and run `sudo sbctl enroll-keys --microsoft` to enroll your keys.
+6. Reboot into your UEFI again and enable secure boot.
-# showcase
-
-
-
- | NixOS |
- macOS |
-
-
-  |
-  |
-
-
-  |
-  |
-
-
-  |
-  |
-
-
-
-# license
-all content in this repository is licensed under the BSD0 license aka 0-Clause BSD license.
-```
-Permission to use, copy, modify, and/or distribute this software for
-any purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
-FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
-DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+### macOS
+1. Install xcode developer tools, determinate nix and brew.
+```sh
+xcode-select --install
+curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinate
+/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
+2. Install Nix flake to system. `nix run nix-darwin/master#darwin-rebuild -- switch`
+3. Reboot
+4. Install OpenUTAU `https://github.com/stakira/OpenUtau/releases/latest/download/OpenUtau-osx-x64.dmg`
+5. Configure non-automated settings
+- set accent colour
+- set display to be spacious
+- customise spotlight settings
+- disable bluetooth
+- enable firewall
+- set wallpaper
+- enable switching workspace keybinds
diff --git a/assets/linux-bocchi-fastfetch.webp b/assets/linux-bocchi-fastfetch.webp
deleted file mode 100644
index 9e72c02..0000000
Binary files a/assets/linux-bocchi-fastfetch.webp and /dev/null differ
diff --git a/assets/linux-mafuyu.webp b/assets/linux-mafuyu.webp
deleted file mode 100644
index de5d205..0000000
Binary files a/assets/linux-mafuyu.webp and /dev/null differ
diff --git a/assets/linux-oneshot-launcher.webp b/assets/linux-oneshot-launcher.webp
deleted file mode 100644
index 9c36428..0000000
Binary files a/assets/linux-oneshot-launcher.webp and /dev/null differ
diff --git a/assets/macos-bocchi-fastfetch.webp b/assets/macos-bocchi-fastfetch.webp
deleted file mode 100644
index 432108c..0000000
Binary files a/assets/macos-bocchi-fastfetch.webp and /dev/null differ
diff --git a/assets/macos-nene.webp b/assets/macos-nene.webp
deleted file mode 100644
index 5513f14..0000000
Binary files a/assets/macos-nene.webp and /dev/null differ
diff --git a/assets/macos-oneshot-light.webp b/assets/macos-oneshot-light.webp
deleted file mode 100644
index f6df2c8..0000000
Binary files a/assets/macos-oneshot-light.webp and /dev/null differ
diff --git a/backup.sh b/backup.sh
deleted file mode 100755
index 3773530..0000000
--- a/backup.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-# stops the script immediately if any error is encountered
-set -e
-
-PINK="\033[35m"
-RESET="\033[0m"
-
-kanidm_backup() {
- # $1 = out path
- echo -e "$PINK kanidm: backing up database$RESET"
-
- DATABASE_DUMP_PATH="$(mktemp)"
- chown kanidm:kanidm "$DATABASE_DUMP_PATH"
- run0 -u kanidm --unit=kanidmd sh -c "kanidmd database backup \"$DATABASE_DUMP_PATH\""
-
- rsync "$DATABASE_DUMP_PATH" "$1"
- rm "$DATABASE_DUMP_PATH"
-
- echo -e "$PINK kanidm: DONE$RESET"
-}
-
-postgres_backup() {
- # $1 = database to backup
- # $2 = location to put backup
- echo -e "$PINK postgres($1): backing up database $1 to stdout$RESET"
- run0 -u postgres pg_dump --dbname="$1" > "$2"
-
- echo -e "$PINK postgres($1): DONE$RESET"
-}
-
-if [ "$1" = "" ]; then
- echo "$0: [BACKUP_DIR]"
- exit 1
-elif [ "$USER" != "root" ]; then
- echo "$0: rerun the script as root"
- exit 1
-fi
-
-case "$1" in
- /*) echo " ";;
- *) echo "$0: use absolute path for backup dir"; exit 1;;
-esac
-
-BACKUP_DIR="$1"
-echo -e "$PINK using folder $BACKUP_DIR$RESET"
-mkdir --parents "$BACKUP_DIR"
-
-SERVICES="jellyfin radarr sonarr prowlarr uptime-kuma deluged forgejo karakeep-web karakeep-workers karakeep-browser"
-
-systemctl stop $SERVICES
-
-rsync -avP /media/ --exclude "media" --exclude "secrets" --exclude "torrents" --include "torrents/files/*" "$BACKUP_DIR"
-
-kanidm_backup "$BACKUP_DIR"/apps/kanidm.bak
-postgres_backup miniflux "$BACKUP_DIR"/apps/miniflux.sql
-
-systemctl start $SERVICES
-
-echo -e "\n\nBACKUP COMPLETED!"
diff --git a/flake.lock b/flake.lock
index b066068..52e21e8 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"crane": {
"locked": {
- "lastModified": 1754269165,
- "narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=",
+ "lastModified": 1731098351,
+ "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
"owner": "ipetkov",
"repo": "crane",
- "rev": "444e81206df3f7d92780680e45858e31d2f07a08",
+ "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
"type": "github"
},
"original": {
@@ -15,14 +15,35 @@
"type": "github"
}
},
+ "disko": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1746728054,
+ "narHash": "sha256-eDoSOhxGEm2PykZFa/x9QG5eTH0MJdiJ9aR00VAofXE=",
+ "owner": "nix-community",
+ "repo": "disko",
+ "rev": "ff442f5d1425feb86344c028298548024f21256d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "ref": "latest",
+ "repo": "disko",
+ "type": "github"
+ }
+ },
"flake-compat": {
"flake": false,
"locked": {
- "lastModified": 1747046372,
- "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
- "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
@@ -34,11 +55,11 @@
"flake-compat_2": {
"flake": false,
"locked": {
- "lastModified": 1747046372,
- "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
+ "lastModified": 1733328505,
+ "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
- "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
+ "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@@ -55,11 +76,11 @@
]
},
"locked": {
- "lastModified": 1754091436,
- "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
+ "lastModified": 1730504689,
+ "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
+ "rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
@@ -68,6 +89,24 @@
"type": "github"
}
},
+ "flake-utils": {
+ "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"
+ }
+ },
"gitignore": {
"inputs": {
"nixpkgs": [
@@ -98,11 +137,11 @@
]
},
"locked": {
- "lastModified": 1771587792,
- "narHash": "sha256-XGFLdlLOez7f0rmjlF+1TLXyBguy8gx2aBHx/Q5JXxs=",
+ "lastModified": 1747990026,
+ "narHash": "sha256-sG5VbID+x5+xUC+jjgHibnzg8IllVcH+K2TLmYHLPME=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
- "rev": "b49fc54950e251f166a2240799315033ab7a8916",
+ "rev": "e2f4ced874406541a7957f7e2b8f05a0d59a0f00",
"type": "github"
},
"original": {
@@ -123,16 +162,16 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1762205063,
- "narHash": "sha256-If6vQ+KvtKs3ARBO9G3l+4wFSCYtRBrwX1z+I+B61wQ=",
+ "lastModified": 1737639419,
+ "narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
"owner": "nix-community",
"repo": "lanzaboote",
- "rev": "88b8a563ff5704f4e8d8e5118fb911fa2110ca05",
+ "rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
"type": "github"
},
"original": {
"owner": "nix-community",
- "ref": "v0.4.3",
+ "ref": "v0.4.2",
"repo": "lanzaboote",
"type": "github"
}
@@ -144,11 +183,11 @@
]
},
"locked": {
- "lastModified": 1771520882,
- "narHash": "sha256-9SeTZ4Pwr730YfT7V8Azb8GFbwk1ZwiQDAwft3qAD+o=",
+ "lastModified": 1748004251,
+ "narHash": "sha256-XodjkVWTth3A2JpBqGBkdLD9kkWn94rnv98l3xwKukg=",
"owner": "LnL7",
"repo": "nix-darwin",
- "rev": "6a7fdcd5839ec8b135821179eea3b58092171bcf",
+ "rev": "33220d4791784e4dd4739edd3f6c028020082f91",
"type": "github"
},
"original": {
@@ -182,15 +221,15 @@
"nix-minecraft": {
"inputs": {
"flake-compat": "flake-compat_2",
- "nixpkgs": "nixpkgs",
- "systems": "systems"
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
},
"locked": {
- "lastModified": 1771641457,
- "narHash": "sha256-TIekRGfeCwuEmYcWex40RTx0Gd46pqmyUtxdFKb5juI=",
+ "lastModified": 1748051893,
+ "narHash": "sha256-KV6bgVHPzb9ymVk9WDRX1lkkeoZETMbS/MyPpIOUWVo=",
"owner": "Infinidoge",
"repo": "nix-minecraft",
- "rev": "c4e2b8969e09067da9d44b6b5762e1e896418f40",
+ "rev": "a600d058c19e1668db6ba759ecc4cfd154079ab5",
"type": "github"
},
"original": {
@@ -201,11 +240,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1769461804,
- "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=",
+ "lastModified": 1742889210,
+ "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
+ "rev": "698214a32beb4f4c8e3942372c694f40848b360d",
"type": "github"
},
"original": {
@@ -215,13 +254,29 @@
"type": "github"
}
},
- "nixpkgs_2": {
+ "nixpkgs-stable": {
"locked": {
- "lastModified": 1771369470,
- "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
+ "lastModified": 1730741070,
+ "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "0182a361324364ae3f436a63005877674cf45efb",
+ "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-24.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1747744144,
+ "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f",
"type": "github"
},
"original": {
@@ -241,14 +296,15 @@
"nixpkgs": [
"lanzaboote",
"nixpkgs"
- ]
+ ],
+ "nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
- "lastModified": 1750779888,
- "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
+ "lastModified": 1731363552,
+ "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
- "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
+ "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
"type": "github"
},
"original": {
@@ -259,6 +315,7 @@
},
"root": {
"inputs": {
+ "disko": "disko",
"jovian": "jovian",
"lanzaboote": "lanzaboote",
"nix-darwin": "nix-darwin",
@@ -274,11 +331,11 @@
]
},
"locked": {
- "lastModified": 1761791894,
- "narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=",
+ "lastModified": 1731897198,
+ "narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "59c45eb69d9222a4362673141e00ff77842cd219",
+ "rev": "0be641045af6d8666c11c2c40e45ffc9667839b5",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 02ccd89..c015bd9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,79 +4,54 @@
inputs = {
# NixOS official package source, using the unstable branch here
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
- lanzaboote.url = "github:nix-community/lanzaboote/v0.4.3";
+ lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
nix-darwin.url = "github:LnL7/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
+ disko.url = "github:nix-community/disko/latest";
+ disko.inputs.nixpkgs.follows = "nixpkgs";
jovian.url = "github:Jovian-Experiments/Jovian-NixOS";
jovian.inputs.nixpkgs.follows = "nixpkgs";
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
};
- outputs = { self, nixpkgs, lanzaboote, nix-darwin, jovian, nix-minecraft, ... }@inputs: {
+ outputs = { self, nixpkgs, lanzaboote, nix-darwin, disko, jovian, nix-minecraft, ... }@inputs: {
nixosConfigurations.nijika = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/nixos-common.nix
- ./modules/desktop/default.nix
- ./modules/desktop/de/hyprland.nix
- ./modules/desktop/japanese-input.nix
- ./modules/desktop/login/autologin.nix
- ./modules/applications/default.nix
- ./modules/applications/keepassxc.nix
- ./modules/games/linux.nix
- ./modules/browser/firefox.nix
-
./modules/nix/linux.nix
./modules/shell.nix
- ./modules/network/avahi.nix
+ nix-minecraft.nixosModules.minecraft-servers
+ { nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; }
+ ./modules/games/server/minecraft/default.nix
+ ./modules/services/uptime-kuma.nix
+ ./modules/services/pocketid.nix
+ ./modules/services/auth/kanidm.nix
+ ./modules/services/caddy.nix
+ ./modules/services/forgejo.nix
+ ./modules/services/miniflux.nix
+ ./modules/services/media/arr.nix
+ ./modules/services/media/jellyfin.nix
./modules/services/ssh.nix
+ ./modules/services/glance.nix
+
+ ./modules/network/avahi.nix
+ ./modules/network/firewall/opensnitch.nix
./modules/network/vpn/tailscale.nix
./modules/users/nico.nix
./modules/hardware/secureboot.nix
- ./modules/hardware/bootloader/systemd-boot.nix
lanzaboote.nixosModules.lanzaboote
./hosts/nijika/configuration.nix
+ disko.nixosModules.disko
];
};
- nixosConfigurations.seika = nixpkgs.lib.nixosSystem {
- system = "x86_64-linux";
- modules = [
- ./hosts/nixos-common.nix
-
- ./modules/services/uptime-kuma.nix
- ./modules/services/auth/kanidm.nix
- ./modules/services/auth/tinyauth.nix
- ./modules/services/caddy.nix
- ./modules/services/forgejo.nix
- ./modules/services/miniflux.nix
- ./modules/services/karakeep.nix
- ./modules/services/media/arr.nix
- ./modules/services/media/jellyfin.nix
- ./modules/services/archiveteam-warrior.nix
- ./modules/services/samba.nix
- ./modules/hardware/restic.nix
-
- ./modules/network/avahi.nix
- ./modules/services/ssh.nix
- ./modules/services/dns/coredns.nix
- ./modules/services/dns/ddns-updater.nix
- ./modules/network/vpn/tailscale.nix
-
- ./modules/nix/linux.nix
- ./modules/shell.nix
- ./modules/users/nico.nix
- ./modules/hardware/bootloader/systemd-boot.nix
- ./hosts/seika/configuration.nix
- ];
- };
-
- nixosConfigurations.miki = nixpkgs.lib.nixosSystem {
+ nixosConfigurations.bocchi = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/nixos-common.nix
@@ -84,20 +59,20 @@
./modules/nix/linux.nix
./modules/shell.nix
- ./modules/services/caddy.nix
- ./modules/services/media/jellyfin.nix
- ./modules/services/media/arr.nix
- ./modules/services/auth/tinyauth.nix
-
./modules/services/ssh.nix
./modules/network/vpn/tailscale.nix
+ nix-minecraft.nixosModules.minecraft-servers
+ { nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; }
+ ./modules/games/server/minecraft/default.nix
+ ./modules/games/server/minecraft/neoforge-1.21.1.nix
+
./modules/users/nico.nix
./modules/users/rhys.nix
- ./hosts/miki/configuration.nix
- ./modules/hardware/bootloader/systemd-boot.nix
+ ./hosts/bocchi/configuration.nix
./hosts/nixos-common.nix
+ disko.nixosModules.disko
];
};
@@ -111,8 +86,6 @@
./modules/games/darwin.nix
./modules/applications/darwin.nix
./modules/desktop/de/darwin.nix
- ./modules/desktop/de/yabai.nix
- ./modules/desktop/programs/sketchybar.nix
./modules/hardware/darwin.nix
./modules/nix/darwin.nix
./modules/network/vpn/tailscale-darwin.nix
diff --git a/hosts/miki/configuration.nix b/hosts/miki/configuration.nix
index 73d108b..5100d79 100644
--- a/hosts/miki/configuration.nix
+++ b/hosts/miki/configuration.nix
@@ -5,24 +5,12 @@
./hardware-configuration.nix
];
- networking.hostName = "miki";
-
- # gpu drivers
+ networking.hostName = "bocchi";
hardware.graphics.enable = true;
- services.xserver.videoDrivers = [ "nvidia" ];
- hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_470;
- hardware.nvidia.open = false;
- nixpkgs.config.allowUnfree = true;
- nixpkgs.config.nvidia.acceptLicense = true;
+ # game servers
+ services.minecraft-servers.servers.velocity.enable = lib.mkForce false;
+ virtualisation.oci-containers.containers.neoforge-1-21-1.ports = [ "25565:25565" ];
+ virtualisation.oci-containers.containers.neoforge-1-21-1.environment.SERVER_PORT = lib.mkForce "25565";
- swapDevices = [{
- device = "/swapfile";
- size = 8*1024; # 8 GB
- }];
-
- # so safe!!!!
- nixpkgs.config.permittedInsecurePackages = [
- "broadcom-sta-6.30.223.271-59-6.12.65"
- ];
}
diff --git a/hosts/nijika/configuration.nix b/hosts/nijika/configuration.nix
index 4892f3b..eacc352 100644
--- a/hosts/nijika/configuration.nix
+++ b/hosts/nijika/configuration.nix
@@ -2,6 +2,7 @@
{
imports = [
+ ./disko.nix
./hardware-configuration.nix
];
@@ -17,6 +18,9 @@
# see: https://github.com/NixOS/nixpkgs/issues/356535
# intel-compute-runtime-legacy1
vpl-gpu-rt # QSV on 11th gen or newer
+ intel-media-sdk # QSV up to 11th gen
intel-ocl # OpenCL support
];
+
+ services.logind.lidSwitchExternalPower = "ignore";
}
diff --git a/hosts/nijika/disko.nix b/hosts/nijika/disko.nix
new file mode 100644
index 0000000..5d73a54
--- /dev/null
+++ b/hosts/nijika/disko.nix
@@ -0,0 +1,61 @@
+{ ... }:
+
+{
+ disko.devices = {
+ disk = {
+ main = {
+ type = "disk";
+ device = "/dev/nvme0n1";
+ content = {
+ type = "gpt";
+ partitions = {
+ ESP = {
+ size = "512M";
+ type = "EF00";
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ mountOptions = [ "umask=0077" ];
+ };
+ };
+ luks = {
+ size = "100%";
+ content = {
+ type = "luks";
+ name = "root";
+ passwordFile = "/tmp/secret.key";
+ settings = {
+ allowDiscards = true;
+ };
+# additionalKeyFiles = [ "/tmp/additionalSecret.key" ];
+ content = {
+ type = "btrfs";
+ extraArgs = [ "-f" ];
+ subvolumes = {
+ "/root" = {
+ mountpoint = "/";
+ mountOptions = [ "compress=zstd" "noatime" ];
+ };
+ "/home" = {
+ mountpoint = "/home";
+ mountOptions = [ "compress=zstd" "noatime" ];
+ };
+ "/nix" = {
+ mountpoint = "/nix";
+ mountOptions = [ "compress=zstd" "noatime" ];
+ };
+ "/swap" = {
+ mountpoint = "/.swapvol";
+ swap.swapfile.size = "1G";
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/hosts/nijika/hardware-configuration.nix b/hosts/nijika/hardware-configuration.nix
index 4353ce3..77a2497 100644
--- a/hosts/nijika/hardware-configuration.nix
+++ b/hosts/nijika/hardware-configuration.nix
@@ -8,44 +8,17 @@
[ (modulesPath + "/installer/scan/not-detected.nix")
];
- boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
+ boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "uas" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
- fileSystems."/" =
- { device = "/dev/mapper/root";
- fsType = "btrfs";
- options = [ "subvol=root" ];
- };
-
- boot.initrd.luks.devices."root".device = "/dev/disk/by-uuid/4a0361b6-b3b4-48dd-a089-babdfa072fc2";
-
- fileSystems."/nix" =
- { device = "/dev/mapper/root";
- fsType = "btrfs";
- options = [ "subvol=nix" ];
- };
-
- fileSystems."/.swapvol" =
- { device = "/dev/mapper/root";
- fsType = "btrfs";
- options = [ "subvol=swap" ];
- };
-
- fileSystems."/home" =
- { device = "/dev/mapper/root";
- fsType = "btrfs";
- options = [ "subvol=home" ];
- };
-
- fileSystems."/boot" =
- { device = "/dev/disk/by-uuid/CF57-9CF0";
- fsType = "vfat";
- options = [ "fmask=0077" "dmask=0077" ];
- };
-
- swapDevices = [ ];
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
diff --git a/hosts/nixos-common.nix b/hosts/nixos-common.nix
index 2187618..52207d4 100644
--- a/hosts/nixos-common.nix
+++ b/hosts/nixos-common.nix
@@ -6,6 +6,7 @@
{
# Use the systemd-boot EFI boot loader.
+ boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Networking
diff --git a/hosts/seika/configuration.nix b/hosts/seika/configuration.nix
deleted file mode 100644
index 25f3c8f..0000000
--- a/hosts/seika/configuration.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-{
- imports = [
- ./hardware-configuration.nix
- ];
-
- networking.hostName = "seika";
-
- hardware.graphics.enable = true;
- environment.sessionVariables.LIBVA_DRIVER_NAME = "iHD";
- hardware.graphics.extraPackages = with pkgs; [
- intel-media-driver # For Broadwell (2014) or newer processors. LIBVA_DRIVER_NAME=iHD
- libva-vdpau-driver # Previously vaapiVdpau
- intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
- ];
-
- services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore";
-}
diff --git a/hosts/seika/hardware-configuration.nix b/hosts/seika/hardware-configuration.nix
deleted file mode 100644
index 2271cd9..0000000
--- a/hosts/seika/hardware-configuration.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-# Do not modify this file! It was generated by ‘nixos-generate-config’
-# and may be overwritten by future invocations. Please make changes
-# to /etc/nixos/configuration.nix instead.
-{ config, lib, pkgs, modulesPath, ... }:
-
-{
- imports =
- [ (modulesPath + "/installer/scan/not-detected.nix")
- ];
-
- boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ "kvm-intel" ];
- boot.extraModulePackages = [ ];
-
- fileSystems."/" =
- { device = "/dev/disk/by-uuid/120b2057-ed32-40c0-b838-25e5713cc5d6";
- fsType = "btrfs";
- options = [ "subvol=@root" ];
- };
-
- fileSystems."/home" =
- { device = "/dev/disk/by-uuid/120b2057-ed32-40c0-b838-25e5713cc5d6";
- fsType = "btrfs";
- options = [ "subvol=@home" ];
- };
-
- fileSystems."/nix" =
- { device = "/dev/disk/by-uuid/120b2057-ed32-40c0-b838-25e5713cc5d6";
- fsType = "btrfs";
- options = [ "subvol=@nix" ];
- };
-
- fileSystems."/media" =
- { device = "/dev/disk/by-uuid/120b2057-ed32-40c0-b838-25e5713cc5d6";
- fsType = "btrfs";
- options = [ "subvol=@media" ];
- };
-
- fileSystems."/swap" =
- { device = "/dev/disk/by-uuid/120b2057-ed32-40c0-b838-25e5713cc5d6";
- fsType = "btrfs";
- options = [ "subvol=@swap" ];
- };
-
- fileSystems."/boot" =
- { device = "/dev/disk/by-uuid/E89A-EECA";
- fsType = "vfat";
- options = [ "fmask=0022" "dmask=0022" ];
- };
-
- swapDevices = [ ];
-
- nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
- hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
-}
diff --git a/modules/applications/1password.nix b/modules/applications/1password.nix
deleted file mode 100644
index 71a31cb..0000000
--- a/modules/applications/1password.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ config, ...}:
-
-{
- programs._1password.enable = true;
- programs._1password-gui = {
- enable = true;
- polkitPolicyOwners = [ "nico" ];
- };
-
- # browser extensions
- programs.firefox.policies.ExtensionSettings."{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
- };
-
- programs.chromium.extensions = [
- "aeblfdkhhhdcdjpifhhbdiojplfjncoa" # 1Password
- ];
-}
diff --git a/modules/applications/darwin.nix b/modules/applications/darwin.nix
index e0a0283..14ffa1b 100644
--- a/modules/applications/darwin.nix
+++ b/modules/applications/darwin.nix
@@ -5,30 +5,27 @@
# dock
system.defaults.dock.persistent-apps = [
- "/Applications/Zen.app"
+ "/Applications/Firefox.app"
"/Applications/Ghostty.app"
- "/System/Applications/Music.app"
- "/Applications/Nix Apps/KeePassXC.app"
- { spacer.small = true; }
+ "/Applications/Nix Apps/Spotify.app"
+ "/Applications/Grayjay.app"
+ "/Applications/Infuse.app"
"/System/Applications/Messages.app"
- "/Applications/Signal.app"
- "/Applications/Nix Apps/Discord.app"
+ "/Applications/Nix Apps/Vesktop.app"
+
+ "/Applications/Nix Apps/UTM.app"
+
"/System/Applications/Mail.app"
- { spacer.small = true; }
-
"/Applications/Nix Apps/Obsidian.app"
- "/Applications/Nix Apps/Anki.app"
- "/Applications/Reeder.app"
- { spacer.small = true; }
+ "/Applications/1Password.app"
+ "/Applications/OBS.app"
"/Applications/Nix Apps/Audacity.app"
- "/Applications/Affinity.app"
"/Applications/GIMP.app"
"/Applications/Krita.app"
-# "/Applications/Blender.app"
-# "/Applications/OpenUTAU.app"
- { spacer.small = true; }
+ "/Applications/Blender.app"
+ "/Applications/OpenUTAU.app"
];
# homebrew pkgs
@@ -36,27 +33,28 @@
enable = true;
onActivation.cleanup = "zap";
casks = [
- "zen"
+ "firefox"
"ghostty"
"krita"
"blender"
"obs"
+ "grayjay"
"gimp"
- "signal"
- "soulseek"
- "musicbrainz-picard"
- "affinity"
+ "1password"
"the-unarchiver"
+ "battery"
"linearmouse"
+ "alt-tab"
+ "easy-move+resize"
"lulu"
- ];
- brews = [
- "mas"
+ "rectangle"
];
masApps = {
"Infuse" = 1136220934;
- "Reeder Classic" = 1529448980;
};
};
+
+ # hotkey daemon
+ services.skhd.enable = true;
}
diff --git a/modules/applications/default.nix b/modules/applications/default.nix
index 778eaf5..50fc18f 100644
--- a/modules/applications/default.nix
+++ b/modules/applications/default.nix
@@ -2,31 +2,25 @@
{
environment.systemPackages = with pkgs; [
+ spotify
audacity
obsidian
ani-cli
- (discord.override {
- withVencord = true;
- })
- yt-dlp
+ vesktop
+ _1password-cli
] ++ lib.optionals pkgs.stdenv.isLinux (with pkgs; [
mpv
ghostty
thunderbird
krita
+ openutau
obs-studio
blender
- gimp3
- signal-desktop-bin
- anki
- newsflash
- nicotine-plus
- picard
- whipper
+ gimp
+ _1password-gui
]) ++ lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
iina
+ utm
raycast
- anki-bin
- keepassxc
]);
}
diff --git a/modules/applications/keepassxc.nix b/modules/applications/keepassxc.nix
deleted file mode 100644
index e5a7406..0000000
--- a/modules/applications/keepassxc.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- environment.systemPackages = with pkgs; [
- keepassxc
- ];
- # browser extensions
- programs.firefox.policies.ExtensionSettings."keepassxc-browser@keepassxc.org" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi";
- };
-
- programs.chromium.extensions = [
- "oboonakemofpalcgghocfoadofidjkkk" # KeePassXC
- ];
-}
diff --git a/modules/browser/chromium.nix b/modules/browser/chromium.nix
deleted file mode 100644
index a18bef7..0000000
--- a/modules/browser/chromium.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- environment.systemPackages = [
- pkgs.chromium # not enabled through programs.chromium.enable
- ];
-
- programs.chromium = {
- enable = true;
- enablePlasmaBrowserIntegration = if (config.services.desktopManager.plasma6.enable == true) then true else false;
-
- extensions = [
- "ddkjiahejlhfcafbddmgiahcphecmpfh" # ublock origin lite
- "eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
- "mnjggcdmjocbbbhaepdhchncahnbgone" # sponsorblock
- "fnaicdffflnofjppbagibeoednhnbjhg" # floccus bookmark sync
- ];
- };
-}
diff --git a/modules/browser/firefox.nix b/modules/browser/firefox.nix
index 83682fb..7b10ac0 100644
--- a/modules/browser/firefox.nix
+++ b/modules/browser/firefox.nix
@@ -8,18 +8,6 @@
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
};
- "gdpr@cavi.au.dk" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi";
- };
- "{cb31ec5d-c49a-4e5a-b240-16c767444f62}" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/indie-wiki-buddy/latest.xpi";
- };
- "myallychou@gmail.com" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/youtube-recommended-videos/latest.xpi";
- };
"@testpilot-containers" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi";
@@ -32,9 +20,13 @@
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/temporarytabcontainer/latest.xpi";
};
- "sponsorBlocker@ajay.app" = {
+ "keepassxc-browser@keepassxc.org" = {
installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi";
+ install_url = "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi";
+ };
+ "pywalfox@frewacom.org" = {
+ installation_mode = "force_installed";
+ install_url = "https://addons.mozilla.org/firefox/downloads/latest/pywalfox/latest.xpi";
};
};
@@ -132,5 +124,15 @@
// use same search engine (duckduckgo) for private browsing
lockPref("browser.search.separatePrivateDefault", false);
+
+ // stop extensions connecting to the internet
+ lockPref(
+ "extensions.webextensions.base-content-security-policy",
+ "default-src 'none'; script-src 'none'; object-src 'none';"
+ );
+ lockPref(
+ "extensions.webextensions.base-content-security-policy.v3",
+ "default-src 'none'; script-src 'none'; object-src 'none';"
+ );
'';
}
diff --git a/modules/desktop/de/aerospace.nix b/modules/desktop/de/aerospace.nix
deleted file mode 100644
index 202f650..0000000
--- a/modules/desktop/de/aerospace.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- services.aerospace.enable = true;
- services.aerospace.settings = ( builtins.fromTOML ( builtins.readFile ../../../stow/.config/aerospace/aerospace.toml ));
- homebrew.brews = [
- "FelixKratz/formulae/borders"
- ];
-
- environment.systemPackages = with pkgs; [
- matugen
- ];
-}
diff --git a/modules/desktop/de/darwin.nix b/modules/desktop/de/darwin.nix
index 0c857e8..ca620c4 100644
--- a/modules/desktop/de/darwin.nix
+++ b/modules/desktop/de/darwin.nix
@@ -11,9 +11,6 @@
system.defaults.NSGlobalDomain.NSDisableAutomaticTermination = true;
system.defaults.NSGlobalDomain.NSDocumentSaveNewDocumentsToCloud = false;
- # enable ctrl+cmd to drag windows anywhere
- system.defaults.NSGlobalDomain.NSWindowShouldDragOnGesture = true;
-
# hot corners
system.defaults.dock = {
wvous-bl-corner = 1;
@@ -25,6 +22,7 @@
# login
system.defaults.loginwindow.GuestEnabled = false;
system.defaults.screensaver.askForPassword = true;
+ system.defaults.loginwindow.SHOWFULLNAME = true; # user needs to enter username and password to login
# control center
system.defaults.controlcenter = {
diff --git a/modules/desktop/de/hyprland.nix b/modules/desktop/de/hyprland.nix
index 241d33a..f07d294 100644
--- a/modules/desktop/de/hyprland.nix
+++ b/modules/desktop/de/hyprland.nix
@@ -5,8 +5,11 @@
# Optional, hint electron apps to use wayland:
environment.sessionVariables.NIXOS_OZONE_WL = "1";
+ # have portals
+ xdg.portal.enable = true;
+ xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
+
programs.hyprlock.enable = true;
- services.hypridle.enable = true;
environment.systemPackages = with pkgs; [
ghostty
@@ -18,15 +21,32 @@
wl-clipboard
brightnessctl
helvum
- vicinae
+ walker
playerctl
swaynotificationcenter
hyprshot
matugen
- glib
+ pywalfox-native
hyprshade
- hyprpolkitagent
];
programs.ssh.startAgent = true;
+
+ # enable polkit
+ security.polkit.enable = true;
+ systemd = {
+ user.services.polkit-gnome-authentication-agent-1 = {
+ description = "polkit-gnome-authentication-agent-1";
+ wantedBy = [ "graphical-session.target" ];
+ wants = [ "graphical-session.target" ];
+ after = [ "graphical-session.target" ];
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
+ Restart = "on-failure";
+ RestartSec = 1;
+ TimeoutStopSec = 10;
+ };
+ };
+ };
}
diff --git a/modules/desktop/de/kde.nix b/modules/desktop/de/kde.nix
index 9ee60c6..1cd9c0e 100644
--- a/modules/desktop/de/kde.nix
+++ b/modules/desktop/de/kde.nix
@@ -4,23 +4,26 @@
services.desktopManager.plasma6.enable = true;
environment.plasma6.excludePackages = with pkgs.kdePackages; [
+ plasma-browser-integration
konsole
(lib.getBin qttools) # Expose qdbus in PATH
+ ark
elisa
+ gwenview
okular
+ kate
khelpcenter
+ #dolphin
baloo-widgets # baloo information in Dolphin
dolphin-plugins
+ spectacle
ffmpegthumbs
krdp
-
- # gwenview
- # dolphin
- # spectacle
- # xwaylandvideobridge
- # kate
- # gwenview
- # ark
- # plasma-browser-integration
+ gwenview
+ #xwaylandvideobridge
];
+
+
+
+
}
diff --git a/modules/desktop/de/yabai.nix b/modules/desktop/de/yabai.nix
deleted file mode 100644
index fea6961..0000000
--- a/modules/desktop/de/yabai.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-{
- services.yabai = {
- enable = true;
- enableScriptingAddition = true;
- extraConfig = builtins.readFile ../../../stow/.config/yabai/yabairc;
- };
-
- system.defaults.spaces.spans-displays = lib.mkForce false;
-
- environment.systemPackages = with pkgs; [
- skhd
- matugen
- ];
-
- homebrew.brews = [
- "FelixKratz/formulae/borders"
- ];
-}
diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix
index d9b755d..002678f 100644
--- a/modules/desktop/default.nix
+++ b/modules/desktop/default.nix
@@ -5,14 +5,8 @@
./pipewire.nix
./flatpak.nix
./fonts.nix
- ./printing.nix
];
# Enable font dir for compatability
fonts.fontDir.enable = true;
-
- # enable desktop portals
- xdg.portal.enable = true;
- xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
-
}
diff --git a/modules/desktop/fonts.nix b/modules/desktop/fonts.nix
index dc43db4..47769b1 100644
--- a/modules/desktop/fonts.nix
+++ b/modules/desktop/fonts.nix
@@ -8,8 +8,6 @@
noto-fonts-cjk-sans # gets japanese and chinese langs
nerd-fonts.comic-shanns-mono # programming fonts
corefonts # basic web fonts
-
- comic-neue
];
};
}
diff --git a/modules/desktop/japanese-input.nix b/modules/desktop/japanese-input.nix
deleted file mode 100644
index d94ce63..0000000
--- a/modules/desktop/japanese-input.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- i18n.inputMethod = {
- enable = true;
- type = "fcitx5";
- fcitx5.waylandFrontend = true;
- fcitx5.addons = with pkgs; [
- fcitx5-mozc
- fcitx5-gtk
- ];
- };
-
- i18n.inputMethod.fcitx5.settings.inputMethod = {
- GroupOrder."0" = "Default";
- "Groups/0" = {
- Name = "Default";
- "Default Layout" = "au";
- DefaultIM = "mozc";
- };
- "Groups/0/Items/0".Name = "keyboard-au";
- "Groups/0/Items/1".Name = "mozc";
- };
-}
diff --git a/modules/desktop/login/autologin.nix b/modules/desktop/login/autologin.nix
index 5333372..0c1fa4d 100644
--- a/modules/desktop/login/autologin.nix
+++ b/modules/desktop/login/autologin.nix
@@ -6,11 +6,11 @@
enable = true;
settings = {
initial_session = {
- command = if (config.programs.niri.enable == true) then "${pkgs.niri}/bin/niri-session" else if (config.programs.hyprland.enable == true) then "${pkgs.hyprland}/bin/start-hyprland" else "${pkgs.zsh}/bin/zsh";
+ command = if (config.programs.niri.enable == true) then "${pkgs.niri}/bin/niri-session" else if (config.programs.hyprland.enable == true) then "${pkgs.hyprland}/bin/Hyprland" else "${pkgs.zsh}/bin/zsh";
user = "nico";
};
default_session = {
- command = "${lib.getExe pkgs.tuigreet} --asterisks --time --greeting 'nyaaa~~'";
+ command = "${pkgs.greetd.tuigreet}/bin/tuigreet --asterisks --time --greeting 'nyaaa~~'";
};
};
};
diff --git a/modules/desktop/login/plymouth.nix b/modules/desktop/login/plymouth.nix
deleted file mode 100644
index 6deb5f0..0000000
--- a/modules/desktop/login/plymouth.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ pkgs, ... }: {
- boot = {
- plymouth = {
- enable = true;
- theme = "bgrt";
- };
-
- # Enable "Silent boot"
- consoleLogLevel = 3;
- initrd.verbose = false;
- kernelParams = [
- "quiet"
- "splash"
- "boot.shell_on_fail"
- "udev.log_priority=3"
- "rd.systemd.show_status=auto"
- ];
- };
-}
-
diff --git a/modules/desktop/login/sddm.nix b/modules/desktop/login/sddm.nix
deleted file mode 100644
index 9d7fca0..0000000
--- a/modules/desktop/login/sddm.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ config, ... }:
-
-{
- services.displayManager.sddm.enable = true;
- services.displayManager.sddm.wayland.enable = true;
-}
diff --git a/modules/desktop/polkit-gtk.nix b/modules/desktop/polkit-gtk.nix
deleted file mode 100644
index c8f26ac..0000000
--- a/modules/desktop/polkit-gtk.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- # enable polkit
- security.polkit.enable = true;
- systemd = {
- user.services.polkit-gnome-authentication-agent-1 = {
- description = "polkit-gnome-authentication-agent-1";
- wantedBy = [ "graphical-session.target" ];
- wants = [ "graphical-session.target" ];
- after = [ "graphical-session.target" ];
- serviceConfig = {
- Type = "simple";
- ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
- Restart = "on-failure";
- RestartSec = 1;
- TimeoutStopSec = 10;
- };
- };
- };
-}
diff --git a/modules/desktop/printing.nix b/modules/desktop/printing.nix
deleted file mode 100644
index 492cd91..0000000
--- a/modules/desktop/printing.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config, ... }:
-
-{
- imports = [
- ../network/avahi.nix
- ];
-
- services.printing.enable = true;
- services.avahi.openFirewall = true;
-}
diff --git a/modules/desktop/programs/sketchybar.nix b/modules/desktop/programs/sketchybar.nix
index 116fb65..f23e6a8 100644
--- a/modules/desktop/programs/sketchybar.nix
+++ b/modules/desktop/programs/sketchybar.nix
@@ -1,9 +1,7 @@
{ config, lib, pkgs, ... }:
{
+ services.skhd.enable = true;
+ services.sketchybar.enable = true;
system.defaults.NSGlobalDomain._HIHideMenuBar = true;
-
- homebrew.brews = [
- "FelixKratz/formulae/sketchybar"
- ];
}
diff --git a/modules/games/darwin.nix b/modules/games/darwin.nix
index b287b7a..fd50a97 100644
--- a/modules/games/darwin.nix
+++ b/modules/games/darwin.nix
@@ -4,14 +4,16 @@
imports = [ ./default.nix ];
homebrew.casks = [
+ "whisky"
"steam"
- "roblox"
+ "heroic"
];
system.defaults.dock.persistent-apps = [
"/Applications/Steam.app"
+ "/Applications/Heroic.app"
+ "/Applications/Whisky.app"
"${pkgs.prismlauncher}/Applications/PrismLauncher.app"
"${pkgs.osu-lazer-bin}/Applications/osu!.app"
- { spacer.small = true; }
];
}
diff --git a/modules/games/server/minecraft/building.nix b/modules/games/server/minecraft/building.nix
index 3f8a6bd..db7f6a8 100644
--- a/modules/games/server/minecraft/building.nix
+++ b/modules/games/server/minecraft/building.nix
@@ -3,9 +3,9 @@
{
services.minecraft-servers.servers.building = {
enable = true;
- package = pkgs.paperServers.paper-1_21_11;
+ package = pkgs.paperServers.paper-1_21_5;
autoStart = true;
- jvmOpts = "-Xms1024M -Xmx4096M";
+ jvmOpts = "-Xms4096M -Xmx4096M";
serverProperties = {
server-port = 30002;
@@ -16,8 +16,8 @@
};
symlinks = {
- "plugins/Worldedit.jar" = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/1u6JkXh5/versions/qYMNQYjH/worldedit-bukkit-7.3.18-beta-01.jar"; sha256 = "sha256-/TRUrwHhjnyBuCVyS34IWzvILz79RhZjS6k2DLwkUk0="; };
- "plugins/EssentialsX.jar" = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/hXiIvTyT/versions/Oa9ZDzZq/EssentialsX-2.21.2.jar"; sha256 = "sha256-C3WQJvAvPFR8MohvNmbbPB+Uz/c+FBrlZIMT/Q0L38Y="; };
+ "plugins/Worldedit.jar" = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/1u6JkXh5/versions/NhJaettg/worldedit-bukkit-7.3.12-beta-01.jar"; sha256 = "sha256-NP5ALYQe6DVVAeTeDGxySKZ8sjQnLjQc8PTbDS+Lbd4="; };
+ "plugins/EssentialsX.jar" = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/hXiIvTyT/versions/SKQwLLoQ/EssentialsX-2.21.0.jar"; sha256 = "sha256-VwQyKlSDa5hLEQ9+Igi67RiGwu/tREa0l+Z+US/skMU="; };
};
};
diff --git a/modules/games/server/minecraft/fabric-modless.nix b/modules/games/server/minecraft/fabric-modless.nix
index e1e2269..1c32ebd 100644
--- a/modules/games/server/minecraft/fabric-modless.nix
+++ b/modules/games/server/minecraft/fabric-modless.nix
@@ -3,9 +3,9 @@
{
services.minecraft-servers.servers.fabric-modless = {
enable = true;
- package = pkgs.fabricServers.fabric-1_21_11;
+ package = pkgs.fabricServers.fabric-1_21_5;
autoStart = true;
- jvmOpts = "-Xms1024M -Xmx4096M";
+ jvmOpts = "-Xms4096M -Xmx4096M";
serverProperties = {
server-port = 30001;
@@ -15,11 +15,11 @@
symlinks = {
mods = pkgs.linkFarmFromDrvs "mods" (builtins.attrValues {
- FabricAPI = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/KhCFoeip/fabric-api-0.139.5%2B1.21.11.jar"; sha512 = "hSyedhdbLVHOoZG/zAAFuCTeQz8abeAdZyuegsocq4R4sYBnC8bEgRdE70q+yL0v86sPnBqlZEcT0G8/vMJ48A=="; };
- Chunky = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/fALzjamp/versions/bk9YUabA/Chunky-Fabric-1.4.54.jar"; sha512 = "vxX9sMDiBMKUdmxrkvDcidlulM5PcLmKxC6qRrh4Aq9Wz+tlSHePSUWx/cL+VholR39xGTfb85DiC5TBvQBsrg=="; };
- Ferritecore = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/uXXizFIs/versions/eRLwt73x/ferritecore-8.0.3-fabric.jar"; sha512 = "vmAFQ+SZtZKG+UCfRkl1cK3FGTmuY+qhKsKeZ3jaJ9jHxs0LM0DYvMocyZzmF3mxqPUrmQ+eTpqTqpxkgpBSMQ=="; };
- NoChatReports = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/qQyHxfxd/versions/78RjC1gi/NoChatReports-FABRIC-1.21.10-v2.16.0.jar"; sha512 = "ObLyhPc/gpABK4ucxwCF1ZZoVH/HtOxDqzTkvKazmmaR++MrwzJuQDU7qcFqBjIOUoGDFb53eZparVJjcMvHcw=="; };
- FabricProxyLite = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/8dI2tmqs/versions/nR8AIdvx/FabricProxy-Lite-2.11.0.jar"; sha512 = "wuHZJ59vGaVh+TS4RlQLKKAzWGtLQZucGqJ6xD/8j60s5g4hKhVAbl+jkH/17L5a96XtsYOp7mc3pB5GSuwTdQ=="; };
+ FabricAPI = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/FZ4q3wQK/fabric-api-0.119.9%2B1.21.5.jar"; sha512 = "4eec629514cba71e4792c1ebf357e574713e5fdb3c01c6e7d132ed631bdeaab0b38bcab84d4ade14c6966c24f9938026da2e65c25b58cde4ce9710c49d147e87"; };
+ Chunky = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/fALzjamp/versions/mhLtMoLk/Chunky-Fabric-1.4.36.jar"; sha512 = "65a201c246c95f6189a16e715d944e4a7ca7f44a8c4a39c8e6523d8c58e331d6611c78deff050cb4a2a2d80c5b8d84e3593a9b8ff961f7aee3d171a4ef7af2c7"; };
+ Ferritecore = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/uXXizFIs/versions/CtMpt7Jr/ferritecore-8.0.0-fabric.jar"; sha512 = "131b82d1d366f0966435bfcb38c362d604d68ecf30c106d31a6261bfc868ca3a82425bb3faebaa2e5ea17d8eed5c92843810eb2df4790f2f8b1e6c1bdc9b7745"; };
+ NoChatReports = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/qQyHxfxd/versions/CHlHxkvf/NoChatReports-FABRIC-1.21.5-v2.12.0.jar"; sha512 = "c0825db25672cf8b50face51ec8a6bedb4be50b374a2537640a433c98817bc07c177485e93ab8cee9e3f7bfb1d2eb1460309e818b411764c92426b552487a9f7"; };
+ FabricProxyLite = pkgs.fetchurl { url = "https://cdn.modrinth.com/data/8dI2tmqs/versions/AQhF7kvw/FabricProxy-Lite-2.9.0.jar"; sha512 = "3044f36df7e83021210a7c318def18a95b5dbf5e3230bb72a3ddb42ebdda33f248c6d12efcee1240ff0c54600d68d147afa105d04ee37a90acb9409619c89848"; };
});
};
};
@@ -27,6 +27,11 @@
services.minecraft-servers.servers.velocity.symlinks."velocity.toml".value = {
servers = {
fabric-modless = "127.0.0.1:30001";
+
+ # In what order we should try servers when a player logs in or is kicked from a server.
+ try = [
+ "fabric-modless"
+ ];
};
};
}
diff --git a/modules/games/server/minecraft/forge-1.19.2.nix b/modules/games/server/minecraft/forge-1.19.2.nix
index 11d1e63..0c7f0d9 100644
--- a/modules/games/server/minecraft/forge-1.19.2.nix
+++ b/modules/games/server/minecraft/forge-1.19.2.nix
@@ -22,6 +22,11 @@
services.minecraft-servers.servers.velocity.symlinks."velocity.toml".value = {
servers = {
forge-1-19-2 = "127.0.0.1:30004";
+
+ # In what order we should try servers when a player logs in or is kicked from a server.
+ try = [
+ "forge-1-19-2"
+ ];
};
};
}
diff --git a/modules/games/server/minecraft/neoforge-1.21.1.nix b/modules/games/server/minecraft/neoforge-1.21.1.nix
index e40527d..98297c6 100644
--- a/modules/games/server/minecraft/neoforge-1.21.1.nix
+++ b/modules/games/server/minecraft/neoforge-1.21.1.nix
@@ -10,8 +10,7 @@
TYPE = "NEOFORGE";
VERSION = "1.21.1";
EULA = "TRUE";
- INIT_MEMORY = "1G";
- MAX_MEMORY = "6G";
+ MEMORY = "4G";
SERVER_PORT = "30005";
UID = "992";
@@ -22,6 +21,11 @@
services.minecraft-servers.servers.velocity.symlinks."velocity.toml".value = {
servers = {
neoforge-1-21-1 = "127.0.0.1:30005";
+
+ # In what order we should try servers when a player logs in or is kicked from a server.
+ try = [
+ "neoforge-1-21-1"
+ ];
};
};
}
diff --git a/modules/games/server/minecraft/velocity.nix b/modules/games/server/minecraft/velocity.nix
index b4b2447..29a2494 100644
--- a/modules/games/server/minecraft/velocity.nix
+++ b/modules/games/server/minecraft/velocity.nix
@@ -6,10 +6,10 @@
package = pkgs.velocityServers.velocity;
autoStart = true;
openFirewall = true;
- jvmOpts = "-Xms128M -Xmx1024M";
+ jvmOpts = "-Xms256M -Xmx1024M";
symlinks = {
- "plugins/Luckperms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1610/velocity/LuckPerms-Velocity-5.5.21.jar"; sha512 = "xAUogBzYUF71CuutcUPM1QJLVel/6Ihzui1Ksbdrd5qeGDqecULdHJtMNsLCM6XQJndGgBTrGv4xljLzVQsx7A=="; };
- "plugins/Velocitab.jar" = pkgs.fetchurl { url = "https://hangarcdn.papermc.io/plugins/William278/Velocitab/versions/1.7.9/VELOCITY/Velocitab-1.7.9.jar"; sha512 = "2okGzE0QJz8RTOmVCZHBizokEuTwVvKRPwr6JhJUg5kpsWWhkF+k+XCMzI5aMwSbDy7+2W3NE1qvbfFZHAKdsw=="; };
+ "plugins/Luckperms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1575/velocity/LuckPerms-Velocity-5.4.158.jar"; sha512 = "07b649db2d2c9f16791d706621dcb606d05bbc1125fa65765e7d4cf4b45778a84f65ca4ad8e461ff146646805072852322cfbd91d66699af5e895d00b233648f"; };
+ "plugins/Velocitab.jar" = pkgs.fetchurl { url = "https://hangarcdn.papermc.io/plugins/William278/Velocitab/versions/1.7.5/VELOCITY/Velocitab-1.7.5.jar"; sha512 = "ExyxRVbkzgVRTOZC9yRrwJbNpRnD1aFZa/QlMmBHAjLMXYmM/Q7lRMGtQs3dyrjBI06Z9e01ZaOmTTa2RbtNew=="; };
"plugins/Message.jar" = pkgs.fetchurl { url = "https://hangarcdn.papermc.io/plugins/OskarsMC-Plugins/message/versions/1.4.0/VELOCITY/message-1.4.0-all.jar"; sha512 = "62503339714d7d26d71a98b2036cd04e91c9049567a033441d904a5f3190177bdc41dcd5183e6c51eb083a143edbfaf50642d44c99c1b83e7a3546a3654305c8"; };
"plugins/Send.jar" = pkgs.fetchurl { url = "https://github.com/OskarsMC-Plugins/send/releases/download/3.0.0/send-3.0.0.jar"; sha512 = "aff03bb13804cd01ecd649d283bfdb0b3411cb4df045670328a43f53a05f7386a76a536c4fcbbd3cdc718aa300f2ab2940c7437a181e31fa9f1c9c0e591896ab"; };
@@ -21,7 +21,7 @@
config-version = "2.7";
bind = "0.0.0.0:25565";
- motd = "A velocity server.\nhosted on ${config.networking.hostName}.";
+ motd = "<#09add3>A Velocity Server";
show-max-players = 500; # displayed maximum players, not an actual cap
online-mode = true;
force-key-authentication = true;
@@ -42,7 +42,6 @@
headers = [ "" ];
footers = [ "connected to %server%" ];
format = "%prefix%%username% %server%";
- send_scoreboard_packets = true;
nametag.prefix = "%prefix%";
nametag.suffix = "";
sorting_placeholders = [
@@ -64,7 +63,7 @@
messages = {
message-sent = "✉ → ";
- message-received = "✉ → ";
+ message-received = "✉ → ";
message-socialspy = "✉ spy → ";
};
diff --git a/modules/hardware/bootloader/limine.nix b/modules/hardware/bootloader/limine.nix
deleted file mode 100644
index 1bf78ee..0000000
--- a/modules/hardware/bootloader/limine.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- boot.loader.limine = {
- enable = true;
- validateChecksums = true;
- panicOnChecksumMismatch = true;
- enableEditor = false;
-
-
- extraEntries =
-''
-/memtest86
- protocol: chainload
- path: boot():///efi/memtest86/memtest86.efi
-'';
- additionalFiles = {
- "efi/memtest86/memtest86.efi" = "${pkgs.memtest86-efi}/BOOTX64.efi";
- };
-
- secureBoot.enable = true;
- };
-}
diff --git a/modules/hardware/bootloader/systemd-boot.nix b/modules/hardware/bootloader/systemd-boot.nix
deleted file mode 100644
index 5648970..0000000
--- a/modules/hardware/bootloader/systemd-boot.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, ... }:
-
-{
- boot.loader.systemd-boot = {
- enable = true;
- };
-
- boot.loader.timeout = 0;
-}
diff --git a/modules/hardware/darwin.nix b/modules/hardware/darwin.nix
index d507d16..b818cbd 100644
--- a/modules/hardware/darwin.nix
+++ b/modules/hardware/darwin.nix
@@ -14,6 +14,10 @@
"Ethernet Adaptor"
"Thunderbolt Ethernet"
];
+
+ dns = [
+ "1.1.1.1"
+ ];
};
# keyboard
diff --git a/modules/hardware/restic.nix b/modules/hardware/restic.nix
deleted file mode 100644
index 303fa55..0000000
--- a/modules/hardware/restic.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-{
- services.restic.backups."${config.networking.hostName}-server" = {
- initialize = false;
-
- paths = [
- "/media"
- ];
-
- exclude = [
- "/media/secrets"
- "/media/torrents"
- "/media/media"
-
- ".cache*"
- ".DS_Store"
- "logs"
- ];
-
- checkOpts = [
- "--with-cache" # just to make checks faster
- ];
-
- pruneOpts = [
- "--keep-daily 7"
- "--keep-weekly 5"
- "--keep-monthly 12"
- "--keep-yearly 10"
- ];
-
- timerConfig = {
- OnBootSec = "5m"; # lets wifi connect before starting backups
- OnCalendar = "daily";
- Persistent = true;
- };
-
- # backup postgres databases, kind of hacky but
- # i think its the only way to do it without needing
- # another backup repo
- backupPrepareCommand = ''
- rm -f /media/apps/postgres # -f doesn't error if doesn't exist
- touch /media/apps/postgres
- chmod 600 /media/apps/postgres
- ${lib.getExe pkgs.sudo} -u postgres ${config.services.postgresql.package}/bin/pg_dumpall > /media/apps/postgres
- '';
-
- backupCleanupCommand = ''
- rm /media/apps/postgres
- '';
-
- # https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#other-services-via-rclone
- # put something like : "rclone:onedrive:restic" to use as the remote
- #
- # sudo nix run nixpkgs#rclone -- config
- repositoryFile = "/media/secrets/restic-repo";
-
- # the passphrase used
- passwordFile = "/media/secrets/restic-password";
- };
-
- systemd.tmpfiles.rules = [
- "f /media/secrets/restic-repo 0400 root root"
- "f /media/secrets/restic-password 0400 root root"
- ];
-}
diff --git a/modules/network/avahi.nix b/modules/network/avahi.nix
index 0beaa0b..b8db5d4 100644
--- a/modules/network/avahi.nix
+++ b/modules/network/avahi.nix
@@ -3,7 +3,6 @@
{
services.avahi = {
enable = true;
- nssmdns4 = true;
- nssmdns6 = true;
+ nssmdns = true;
};
}
diff --git a/modules/network/ddclient.nix b/modules/network/ddclient.nix
deleted file mode 100644
index 4044e0a..0000000
--- a/modules/network/ddclient.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ config, ... }:
-
-{
- services.ddclient = {
- enable = true;
- configFile = "/root/nixos/secrets/ddclient.conf";
- };
-}
diff --git a/modules/network/firewall/opensnitch.nix b/modules/network/firewall/opensnitch.nix
index 16cd950..31e09e9 100644
--- a/modules/network/firewall/opensnitch.nix
+++ b/modules/network/firewall/opensnitch.nix
@@ -10,8 +10,6 @@
};
rules = {
- #
- # system services
"systemd-timesyncd" = {
"name" = "systemd-timesyncd";
"enabled" = true;
@@ -20,8 +18,8 @@
"operator" = {
"type" = "simple";
"sensitive" = false;
- "operand" = "lists.domains";
- "data" = builtins.toFile "systemd-timesyncd-opensnitch-rules" (lib.strings.concatStringsSep "\n" config.networking.timeServers);
+ "operand" = "process.path";
+ "data" = "${pkgs.systemd}/lib/systemd/systemd-timesyncd";
};
};
"nsncd" = {
@@ -36,157 +34,6 @@
"data" = "${pkgs.nsncd}/bin/nsncd";
};
};
- "tailscale" = {
- "name" = "tailscale";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.tailscale}/bin/.tailscaled-wrapped";
- };
- };
- "avahi-daemon" = {
- "name" = "avahi-daemon";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.avahi}/bin/avahi-daemon";
- };
- };
-
- #
- # services
- "prowlarr" = {
- "name" = "prowlarr";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "type" = "list";
- "operand" = "list";
- "list" = [
- {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.prowlarr}/lib/prowlarr/Prowlarr";
- }
- {
- "operand" = "user.name";
- "type" = "simple";
- "sensitive" = false;
- "data" = "prowlarr";
- }
- ];
- };
- };
- "sonarr" = {
- "name" = "sonarr";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "type" = "list";
- "operand" = "list";
- "list" = [
- {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.sonarr}/lib/sonarr/Sonarr";
- }
- {
- "operand" = "user.name";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${config.services.sonarr.user}";
- }
- ];
- };
- };
- "radarr" = {
- "name" = "radarr";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "type" = "list";
- "operand" = "list";
- "list" = [
- {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.radarr}/lib/radarr/Radarr";
- }
- {
- "operand" = "user.name";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${config.services.radarr.user}";
- }
- ];
- };
- };
- "forgejo" = {
- "name" = "forgejo";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "type" = "list";
- "operand" = "list";
- "list" = [
- {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.forgejo-lts}/bin/.forgejo-wrapped";
- }
- {
- "operand" = "user.name";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${config.services.forgejo.user}";
- }
- ];
- };
- };
- "caddy" = {
- "name" = "caddy";
- "enabled" = true;
- "action" = "allow";
- "duration" = "always";
- "operator" = {
- "type" = "list";
- "operand" = "list";
- "list" = [
- {
- "operand" = "process.path";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${pkgs.caddy}/bin/caddy";
- }
- {
- "operand" = "user.name";
- "type" = "simple";
- "sensitive" = false;
- "data" = "${config.services.caddy.user}";
- }
- ];
- };
- };
-
-
- #
- # desktop applications
"firefox" = {
"name" = "firefox";
"enabled" = true;
diff --git a/modules/network/vpn/tailscale-darwin.nix b/modules/network/vpn/tailscale-darwin.nix
index 9bb2d8f..ff37699 100644
--- a/modules/network/vpn/tailscale-darwin.nix
+++ b/modules/network/vpn/tailscale-darwin.nix
@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
{
- homebrew.masApps = {
- "Tailscale" = 1475387142;
- };
+ homebrew.casks = [
+ "tailscale"
+ ];
}
diff --git a/modules/network/vpn/tailscale.nix b/modules/network/vpn/tailscale.nix
index 90100be..578e7ab 100644
--- a/modules/network/vpn/tailscale.nix
+++ b/modules/network/vpn/tailscale.nix
@@ -2,8 +2,4 @@
{
services.tailscale.enable = true;
- services.tailscale.extraSetFlags = [
- "--advertise-exit-node"
- ];
- services.tailscale.useRoutingFeatures = "server";
}
diff --git a/modules/services/dns/adguardhome.nix b/modules/services/adguardhome.nix
similarity index 88%
rename from modules/services/dns/adguardhome.nix
rename to modules/services/adguardhome.nix
index 70a3bec..728728f 100644
--- a/modules/services/dns/adguardhome.nix
+++ b/modules/services/adguardhome.nix
@@ -3,7 +3,7 @@
{
services.adguardhome = {
enable = true;
- mutableSettings = false;
+ mutableSettings = true;
extraArgs = [ "--web-addr" "0.0.0.0:3003" ];
settings = {
@@ -27,17 +27,6 @@
filtering = {
protection_enabled = true;
filtering_enabled = true;
-
- rewrites = [
- {
- domain = "nijika.astolfo.org";
- answer = "100.105.94.30";
- }
- {
- domain = "*.nijika.astolfo.org";
- answer = "100.105.94.30";
- }
- ];
};
# The following notation uses map
diff --git a/modules/services/archiveteam-warrior.nix b/modules/services/archiveteam-warrior.nix
deleted file mode 100644
index a8a858d..0000000
--- a/modules/services/archiveteam-warrior.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-{
- virtualisation.oci-containers.backend = "podman";
- virtualisation.oci-containers.containers.archiveteam-warrior = {
- image = "atdr.meo.ws/archiveteam/warrior-dockerfile";
- ports = [ "8001:8001" ];
- environment = {
- "CONCURRENT_ITEMS" = "5";
- "DOWNLOADER" = "astolfo";
- "SELECTED_PROJECT" = "auto";
- };
- };
-}
diff --git a/modules/services/auth/kanidm.nix b/modules/services/auth/kanidm.nix
index 7286e9a..f19285c 100644
--- a/modules/services/auth/kanidm.nix
+++ b/modules/services/auth/kanidm.nix
@@ -2,11 +2,11 @@
{
services.kanidm = {
- server.enable = true;
- unix.enable = false;
- package = pkgs.kanidm_1_9;
+ enableServer = true;
+ enablePam = false;
+ package = pkgs.kanidm_1_5;
- server.settings = {
+ serverSettings = {
bindaddress = "127.0.0.1:8443";
ldapbindaddress = "0.0.0.0:636";
domain = "${config.homelab.authDomain}";
@@ -14,12 +14,6 @@
tls_chain = "${config.security.acme.certs.${config.homelab.authDomain}.directory}/cert.pem";
tls_key = "${config.security.acme.certs.${config.homelab.authDomain}.directory}/key.pem";
-
- online_backup = {
- schedule = "00 22 * * *";
- path = "/media/apps/kanidm";
- versions = 14;
- };
};
};
@@ -30,10 +24,11 @@
dnsProvider = "cloudflare";
dnsResolver = "1.1.1.1:53";
dnsPropagationCheck = true;
+ environmentFile = /var/lib/caddy/secret;
};
services.caddy.virtualHosts."${config.homelab.authDomain}" = {
- useACMEHost = config.services.kanidm.server.settings.domain;
+ useACMEHost = config.services.kanidm.serverSettings.domain;
extraConfig = ''
reverse_proxy https://localhost:8443 {
header_up Host "${config.homelab.authDomain}:8443"
diff --git a/modules/services/auth/tinyauth.nix b/modules/services/auth/tinyauth.nix
deleted file mode 100644
index 3bab219..0000000
--- a/modules/services/auth/tinyauth.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-{
- virtualisation.oci-containers.backend = "podman";
- virtualisation.oci-containers.containers.tinyauth = {
- image = "ghcr.io/steveiliop56/tinyauth:v4";
- ports = [
- "3009:3000"
- ];
- environment = {
- "APP_URL" = "https://tinyauth.${config.homelab.domain}";
-
- "PROVIDERS_KANIDM_CLIENT_ID" = "tinyauth";
- "PROVIDERS_KANIDM_AUTH_URL" = "https://${config.homelab.authDomain}/ui/oauth2";
- "PROVIDERS_KANIDM_TOKEN_URL" = "https://${config.homelab.authDomain}/oauth2/token";
- "PROVIDERS_KANIDM_USER_INFO_URL" = "https://${config.homelab.authDomain}/oauth2/openid/tinyauth/userinfo";
- "PROVIDERS_KANIDM_REDIRECT_URL" = "https://tinyauth.${config.homelab.domain}/api/oauth/callback/kanidm";
- "PROVIDERS_KANIDM_SCOPES" = "openid email profile groups";
- "PROVIDERS_KANIDM_NAME" = "${config.homelab.authDomain}";
- };
-
- environmentFiles = [
- # set variable PROVIDERS_KANIDM_CLIENT_SECRET here
- /media/secrets/tinyauth
- ];
- };
-
- systemd.tmpfiles.rules = [
- "f /media/secrets/tinyauth 0400 root root"
- ];
-
- services.caddy.extraConfig = ''
- (tinyauth_forwarder) {
- forward_auth 127.0.0.1:3009 {
- uri /api/auth/caddy
- }
- }
- '';
-
-
- services.caddy.virtualHosts."tinyauth.${config.homelab.domain}" = {
- useACMEHost = config.homelab.domain;
- extraConfig = ''
- reverse_proxy http://localhost:3009
- '';
- };
-}
diff --git a/modules/services/caddy.nix b/modules/services/caddy.nix
index 2339ef7..0093a13 100644
--- a/modules/services/caddy.nix
+++ b/modules/services/caddy.nix
@@ -22,19 +22,11 @@
services.caddy = {
enable = true;
- extraConfig = ''
- (block_non_private_ips) {
- @non_private_ips not remote_ip 100.64.0.0/10 fd7a:115c:a1e0::/48 private_ranges
- abort @non_private_ips
- }
- '';
};
security.acme = {
acceptTerms = true;
defaults.email = "hello@astolfo.org";
- defaults.environmentFile = /media/secrets/acme;
- defaults.profile = "shortlived";
certs."${config.homelab.domain}" = {
group = config.services.caddy.group;
@@ -44,11 +36,8 @@
dnsProvider = "cloudflare";
dnsResolver = "1.1.1.1:53";
dnsPropagationCheck = true;
+ environmentFile = /var/lib/caddy/secret;
};
};
-
- systemd.tmpfiles.rules = [
- "f /media/secrets/acme 0400 acme acme"
- ];
};
}
diff --git a/modules/services/dns/coredns.nix b/modules/services/dns/coredns.nix
deleted file mode 100644
index 7382617..0000000
--- a/modules/services/dns/coredns.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ config, ... }:
-
-{
- services.coredns = {
- enable = true;
- config = ''
- .:53 {
- hosts {
- 100.100.144.4 seika.astolfo.org
- fallthrough
- }
-
- # rewrite the CNAME to itself so hosts rule apply
- rewrite cname exact seika.astolfo.org. seika.astolfo.org.
-
- forward . 1.1.1.1
- log
- errors
- }
- '';
- };
-
- networking.firewall.allowedTCPPorts = [ 53 ];
- networking.firewall.allowedUDPPorts = [ 53 ];
-}
diff --git a/modules/services/dns/ddns-updater.nix b/modules/services/dns/ddns-updater.nix
deleted file mode 100644
index e382564..0000000
--- a/modules/services/dns/ddns-updater.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{ config, ... }:
-
-{
- services.ddns-updater = {
- enable = true;
- environment = {
- SERVER_ENABLED="no";
-
- # setup dynamic dns provider here
- # https://wiki.nixos.org/wiki/Dynamic_DNS
- # https://github.com/qdm12/ddns-updater/blob/master/docs/cloudflare.md
- CONFIG_FILEPATH = "/media/secrets/ddns-updater.json";
- PERIOD = "5m";
- };
- };
-}
diff --git a/modules/services/forgejo.nix b/modules/services/forgejo.nix
index a1c2a24..e8b7e4d 100644
--- a/modules/services/forgejo.nix
+++ b/modules/services/forgejo.nix
@@ -3,20 +3,22 @@
{
services.forgejo = {
enable = true;
- stateDir = "/media/apps/git";
- repositoryRoot = "${config.services.forgejo.stateDir}/repos";
+ stateDir = "/var/lib/forgejo";
+ repositoryRoot = "${config.services.forgejo.stateDir}/repositories";
database.createDatabase = true;
settings = {
session.COOKIE_SECURE = true;
server = {
- DOMAIN = "git.${config.homelab.publicDomain}";
+ DOMAIN = "git.${config.homelab.domain}";
ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}";
SSH_PORT = 22;
# PROTOCOL = "https";
HTTP_PORT = 3000;
};
+ security.REVERSE_PROXY_TRUSTED_PROXIES = "127.0.0.0/8,::1/128";
+
service = {
ALLOW_ONLY_EXTERNAL_REGISTRATION = true;
SHOW_REGISTRATION_BUTTON = false;
@@ -25,11 +27,15 @@
};
};
- security.acme.certs."${config.services.forgejo.settings.server.DOMAIN}" = {
- domain = "${config.services.forgejo.settings.server.DOMAIN}";
- dnsProvider = "cloudflare";
- dnsResolver = "1.1.1.1:53";
- dnsPropagationCheck = true;
+ # configure anubis to prevent AI scrapers from overloading the git server.
+ services.anubis.instances.forgejo = {
+ enable = true;
+ settings = {
+ TARGET = "http://127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT}";
+ SERVE_ROBOTS_TXT = true;
+ BIND_NETWORK = "tcp";
+ BIND = ":3333";
+ };
};
# forgejo has user keys under its own .ssh/authorizedKeys file.
@@ -37,10 +43,13 @@
# in order to only allow that to the forgejo user as it has "/var"
services.openssh.authorizedKeysInHomedir = lib.mkForce true;
- services.caddy.virtualHosts."${config.services.forgejo.settings.server.DOMAIN}" = {
- useACMEHost = config.services.forgejo.settings.server.DOMAIN;
+ services.caddy.virtualHosts."git.${config.homelab.domain}" = {
+ useACMEHost = config.homelab.domain;
extraConfig = ''
- reverse_proxy http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}
+ reverse_proxy http://127.0.0.1${toString config.services.anubis.instances.forgejo.settings.BIND} {
+ header_up X-Real-Ip {remote_host}
+ header_up X-Http-Version {http.request.proto}
+ }
'';
};
}
diff --git a/modules/services/glance.nix b/modules/services/glance.nix
index c642c07..e38c31b 100644
--- a/modules/services/glance.nix
+++ b/modules/services/glance.nix
@@ -107,7 +107,6 @@
useACMEHost = config.homelab.domain;
extraConfig = ''
reverse_proxy http://localhost:8888
- import block_non_private_ips
'';
};
}
diff --git a/modules/services/karakeep.nix b/modules/services/karakeep.nix
index ec87014..aefd116 100644
--- a/modules/services/karakeep.nix
+++ b/modules/services/karakeep.nix
@@ -1,38 +1,35 @@
{ config, ... }:
{
- services.karakeep = {
- enable = true;
- extraEnvironment = {
- PORT = "8023";
+ virtualisation.oci-containers.containers.karakeep = {
+ image = "ghcr.io/karakeep-app/karakeep:release";
+ volumes = [ "/var/lib/karakeep/data:/data" ];
+ ports = [ "8023:3000" ];
+ environment = {
+ DATA_DIR = "/data"; # dont change
- OAUTH_WELLKNOWN_URL = "https://${config.homelab.authDomain}/oauth2/openid/karakeep/.well-known/openid-configuration";
- OAUTH_PROVIDER_NAME = "${config.homelab.domain}";
+ OAUTH_WELLKNOWN_URL = "https://auth.${config.homelab.domain}/.well-known/openid-configuration";
+ OAUTH_PROVIDER_NAME = "PocketID";
NEXTAUTH_URL = "https://karakeep.${config.homelab.domain}";
DISABLE_PASSWORD_AUTH = "true";
OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING = "true";
};
- # put OAUTH_CLIENT_SECRET and OAUTH_CLIENT_ID in file
- # https://docs.karakeep.app/configuration/environment-variables#authentication--signup
- environmentFile = "/media/secrets/karakeep";
- };
+ environmentFiles = [
+ # put the environment variable NEXTAUTH_SECRET in here
+ # with a randomly generated string. gen with `openssl rand -base64 36`
+ /var/lib/karakeep/nextauth-secret
- systemd.tmpfiles.rules = [
- "f /media/secrets/karakeep 0400 karakeep karakeep"
- ];
+ # https://pocket-id.org/docs/client-examples/hoarder
+ /var/lib/karakeep/oidc
+ ];
+ };
- fileSystems."/var/lib/karakeep" = {
- device = "/media/apps/karakeep";
- options = [ "bind" ];
- };
-
services.caddy.virtualHosts."karakeep.${config.homelab.domain}" = {
useACMEHost = config.homelab.domain;
extraConfig = ''
reverse_proxy http://localhost:8023
- import block_non_private_ips
'';
};
}
diff --git a/modules/services/linkding.nix b/modules/services/linkding.nix
deleted file mode 100644
index 7659543..0000000
--- a/modules/services/linkding.nix
+++ /dev/null
@@ -1,61 +0,0 @@
-{ config, ... }:
-
-{
- virtualisation.oci-containers.containers.linkding = {
- image = "sissbruecker/linkding:latest";
- ports = [ "9090:9090" ];
- volumes = [ "/var/lib/linkding/data:/data" ];
- environmentFiles = [
- # create superuser account before initially signing in
- # https://linkding.link/options/#oidc-and-ld_superuser_name
- # include following environment variables:
- # OIDC_RP_CLIENT_SECRET - set to oidc client secret
- /var/lib/linkding/oidc
-
- ];
- environment = {
- # Can be used to run linkding under a context path, for example: linkding/
- # Must end with a slash `/`
- "LD_CONTEXT_PATH"="";
- # Username of the initial superuser to create, leave empty to not create one
- "LD_SUPERUSER_NAME"="";
- # Option to disable background tasks
- "LD_DISABLE_BACKGROUND_TASKS"="False";
- # Option to disable URL validation for bookmarks completely
- "LD_DISABLE_URL_VALIDATION"="False";
- # List of trusted origins from which to accept POST requests
- # See docs/Options.md for more details
- "LD_CSRF_TRUSTED_ORIGINS"="";
-
- # OIDC
- "LD_ENABLE_OIDC" = "True";
- "OIDC_OP_AUTHORIZATION_ENDPOINT"="https://${config.homelab.authDomain}/ui/oauth2";
- "OIDC_OP_TOKEN_ENDPOINT"="https://${config.homelab.authDomain}/oauth2/token";
- "OIDC_OP_USER_ENDPOINT"="https://${config.homelab.authDomain}/oauth2/openid/linkding/userinfo";
- "OIDC_OP_JWKS_ENDPOINT"="https://${config.homelab.authDomain}/oauth2/openid/linkding/public_key.jwk";
- "OIDC_RP_SIGN_ALGO"="ES256";
- "OIDC_RP_CLIENT_ID"="linkding";
-
- # Database settings
- # These are currently only required for configuring PostreSQL.
- # By default, linkding uses SQLite for which you don't need to configure anything.
-
- # Database engine, can be sqlite (default) or postgres
- "LD_DB_ENGINE"="sqlite";
- # Database name (default: linkding)
- "LD_DB_DATABASE"="";
- # Username to connect to the database server (default: linkding)
- "LD_DB_USER"="";
- # Password to connect to the database server
- "LD_DB_PASSWORD"="";
- };
- };
-
- services.caddy.virtualHosts."bookmark.${config.homelab.domain}" = {
- useACMEHost = config.homelab.domain;
- extraConfig = ''
- reverse_proxy http://localhost:9090
- import block_non_private_ips
- '';
- };
-}
diff --git a/modules/services/media/arr.nix b/modules/services/media/arr.nix
index 710bfe3..13103da 100644
--- a/modules/services/media/arr.nix
+++ b/modules/services/media/arr.nix
@@ -3,95 +3,83 @@
{
users.groups.media = {};
- #
- # Downloading movies
+ # Finding/Requesting downloading
services.radarr = {
enable = true;
openFirewall = false;
- dataDir = "/media/apps/radarr";
+ dataDir = "/var/lib/radarr";
group = "media";
};
- services.caddy.virtualHosts."radarr.${config.homelab.domain}" = {
- useACMEHost = config.homelab.domain;
- extraConfig = ''
- # For tinyauth
- reverse_proxy http://localhost:7878 {
- header_up -X-Forwarded-For
- }
- import block_non_private_ips
- import tinyauth_forwarder *
- '';
- };
-
- #
- # Downloading shows
services.sonarr = {
enable = true;
openFirewall = false;
- dataDir = "/media/apps/sonarr";
+ dataDir = "/var/lib/sonarr";
group = "media";
};
- services.caddy.virtualHosts."sonarr.${config.homelab.domain}" = {
- useACMEHost = config.homelab.domain;
- extraConfig = ''
- reverse_proxy http://localhost:8989 {
- header_up -X-Forwarded-For
- }
- import block_non_private_ips
- import tinyauth_forwarder *
- '';
- };
-
- #
- # Managing Torrent sources
services.prowlarr = {
enable = true;
openFirewall = false;
- dataDir = "/media/apps/prowlarr";
};
- services.caddy.virtualHosts."prowlarr.${config.homelab.domain}" = {
- useACMEHost = config.homelab.domain;
- extraConfig = ''
- reverse_proxy http://localhost:9696 {
- header_up -X-Forwarded-For
- }
- import tinyauth_forwarder *
- import block_non_private_ips
- '';
+ services.bazarr = {
+ enable = true;
+ openFirewall = false;
+ group = "media";
};
- #
- # Downloading torrents
+ # Downloading files
services.deluge = {
enable = true;
- dataDir = "/media/apps/deluge";
web.enable = true;
web.openFirewall = false;
group = "media";
};
+
+ # Requesting Frontend
+ services.jellyseerr = {
+ enable = true;
+ port = 5055;
+ openFirewall = false;
+ package = pkgs.jellyseerr;
+ };
+
+ services.caddy.virtualHosts."radarr.${config.homelab.domain}" = {
+ useACMEHost = config.homelab.domain;
+ extraConfig = ''
+ reverse_proxy http://localhost:7878
+ '';
+ };
+ services.caddy.virtualHosts."sonarr.${config.homelab.domain}" = {
+ useACMEHost = config.homelab.domain;
+ extraConfig = ''
+ reverse_proxy http://localhost:8989
+ '';
+ };
+ services.caddy.virtualHosts."prowlarr.${config.homelab.domain}" = {
+ useACMEHost = config.homelab.domain;
+ extraConfig = ''
+ reverse_proxy http://localhost:9696
+ '';
+ };
+ services.caddy.virtualHosts."bazarr.${config.homelab.domain}" = {
+ useACMEHost = config.homelab.domain;
+ extraConfig = ''
+ reverse_proxy http://localhost:6767
+ '';
+ };
services.caddy.virtualHosts."deluge.${config.homelab.domain}" = {
useACMEHost = config.homelab.domain;
extraConfig = ''
- reverse_proxy http://localhost:8112 {
- header_up -X-Forwarded-For
- }
- import tinyauth_forwarder *
- import block_non_private_ips
+ reverse_proxy http://localhost:8112
'';
};
-
- # setup network samba share
- services.samba.settings = {
- "media" = {
- "path" = "/media/media";
- "valid users" = "@users";
- "force user" = "nobody";
- "public" = "no";
- "read only" = "yes";
- };
+ services.caddy.virtualHosts."jellyseer.${config.homelab.domain}" = {
+ useACMEHost = config.homelab.domain;
+ extraConfig = ''
+ reverse_proxy http://localhost:5055
+ '';
};
}
diff --git a/modules/services/media/jellyfin.nix b/modules/services/media/jellyfin.nix
index bd93c70..a0038c4 100644
--- a/modules/services/media/jellyfin.nix
+++ b/modules/services/media/jellyfin.nix
@@ -6,7 +6,6 @@
enable = true;
openFirewall = false;
group = "media";
- dataDir = "/media/apps/jellyfin";
};
users.users.jellyfin.extraGroups = [ "render" "video" ];
@@ -15,7 +14,6 @@
# useACMEHost = config.homelab.domain;
extraConfig = ''
reverse_proxy http://localhost:8096
- import block_non_private_ips
'';
};
}
diff --git a/modules/services/miniflux.nix b/modules/services/miniflux.nix
index 3f3f0f6..8f0dda4 100644
--- a/modules/services/miniflux.nix
+++ b/modules/services/miniflux.nix
@@ -10,7 +10,7 @@
# OAUTH2_CLIENT_ID = "";
# OAUTH2_CLIENT_SECRET = "";
# https://pocket-id.org/docs/client-examples/miniflux/
- adminCredentialsFile = /media/secrets/miniflux;
+ adminCredentialsFile = /var/lib/miniflux/oidc;
config = {
LISTEN_ADDR = "0.0.0.0:8021";
@@ -33,7 +33,7 @@
FILTER_ENTRY_MAX_AGE_DAYS = 1825; # 5 years
FORCE_REFRESH_INTERVAL = 30;
- POLLING_FREQUENCY = 180;
+ POLLING_FREQUENCY = 60;
OAUTH2_PROVIDER = "oidc";
OAUTH2_REDIRECT_URL = "https://rss.${config.homelab.domain}/oauth2/oidc/callback";
@@ -44,15 +44,10 @@
};
};
- systemd.tmpfiles.rules = [
- "f /media/secrets/miniflux 0400 root root"
- ];
-
services.caddy.virtualHosts."rss.${config.homelab.domain}" = {
useACMEHost = config.homelab.domain;
extraConfig = ''
reverse_proxy http://localhost:8021
- import block_non_private_ips
'';
};
}
diff --git a/modules/services/pocketid.nix b/modules/services/pocketid.nix
index 8f3586f..b909467 100644
--- a/modules/services/pocketid.nix
+++ b/modules/services/pocketid.nix
@@ -19,7 +19,6 @@
useACMEHost = config.homelab.domain;
extraConfig = ''
reverse_proxy http://localhost:8025
- import block_non_private_ips
'';
};
}
diff --git a/modules/services/samba.nix b/modules/services/samba.nix
deleted file mode 100644
index 3b2b40f..0000000
--- a/modules/services/samba.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ config, ... }:
-
-{
- services.samba = {
- enable = true;
- openFirewall = true;
- settings = {
- global = {
- "workgroup" = "WORKGROUP";
- "server string" = "${config.networking.hostName}";
- "netbios name" = "${config.networking.hostName}";
- "security" = "user";
- };
- };
- };
-}
-
diff --git a/modules/services/ssh.nix b/modules/services/ssh.nix
index 9b16c59..04ef56a 100644
--- a/modules/services/ssh.nix
+++ b/modules/services/ssh.nix
@@ -6,6 +6,7 @@
enable = true;
allowSFTP = true;
openFirewall = true;
+ authorizedKeysInHomedir = false;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
diff --git a/modules/services/uptime-kuma.nix b/modules/services/uptime-kuma.nix
index 994f781..b08cd10 100644
--- a/modules/services/uptime-kuma.nix
+++ b/modules/services/uptime-kuma.nix
@@ -9,15 +9,6 @@
};
};
- systemd.tmpfiles.rules = [
- "d /media/apps/uptime-kuma 0700 root root"
- ];
-
- fileSystems."/var/lib/private/uptime-kuma" = {
- device = "/media/apps/uptime-kuma";
- options = [ "bind" ];
- };
-
services.caddy.virtualHosts."status.${config.homelab.domain}" = {
useACMEHost = config.homelab.domain;
extraConfig = ''
diff --git a/modules/shell.nix b/modules/shell.nix
index 362ef1f..91cbc83 100644
--- a/modules/shell.nix
+++ b/modules/shell.nix
@@ -4,11 +4,8 @@
programs.zsh.enable = true;
programs.zsh.promptInit = ( builtins.readFile ../stow/.zshrc );
- programs.fish.enable = true;
-
environment.systemPackages = with pkgs; [
neovim
- yazi
git
zoxide
tlrc
diff --git a/modules/users/alex.nix b/modules/users/alex.nix
deleted file mode 100644
index 47149e0..0000000
--- a/modules/users/alex.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{ config, lib, pkgs, ...}:
-
-{
- users.users.alex = {
- description = "Alexander";
- isNormalUser = true;
- extraGroups = [ ];
- };
-}
diff --git a/modules/users/nico.nix b/modules/users/nico.nix
index 317b762..66fbd9c 100644
--- a/modules/users/nico.nix
+++ b/modules/users/nico.nix
@@ -4,10 +4,10 @@
users.users.nico = {
isNormalUser = true;
extraGroups = [ "wheel" ];
- shell = pkgs.fish;
+ shell = pkgs.zsh;
};
users.users.nico.openssh.authorizedKeys.keys = [
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFs7CxmkYo58hRm9bGdg7J3500tChjMz/KaDBs0fw975"
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHzUJnqCpbRxggjyIZo4KWnTyHobPdi/xXkN1/n/yIMD"
];
}
diff --git a/modules/users/rhys.nix b/modules/users/rhys.nix
index 45a03ce..8b2c365 100644
--- a/modules/users/rhys.nix
+++ b/modules/users/rhys.nix
@@ -9,6 +9,6 @@
users.users.rhys.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK0Pce0wQKV+wI7rCIiUZgqqkiodTXZ6fMiZezLy9uZk" # laptop
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmLm9HwZXDbySVupNHPlGMtm6Vwx4nxVp2tsGvuSLUr" # phone
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC+HNs1/r4LMQsfpqXhU7396q5zL9hvfcNdiQSUTIl4R" # phone
];
}
diff --git a/modules/virtualisation/virt-manager.nix b/modules/virtualisation/virt-manager.nix
deleted file mode 100644
index 2a30c5d..0000000
--- a/modules/virtualisation/virt-manager.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{ config, ... }:
-
-{
- virtualisation.libvirtd.enable = true;
- programs.virt-manager.enable = true;
- services.qemuGuest.enable = true;
- services.spice-vdagentd.enable = true; # enable copy and paste between host and guest
-}
diff --git a/stow/.config/aerospace/aerospace.toml b/stow/.config/aerospace/aerospace.toml
deleted file mode 100644
index 18fd9de..0000000
--- a/stow/.config/aerospace/aerospace.toml
+++ /dev/null
@@ -1,172 +0,0 @@
-# You can use it to add commands that run after AeroSpace startup.
-# Available commands : https://nikitabobko.github.io/AeroSpace/commands
-after-startup-command = [
- 'exec-and-forget borders active_color=0xfff74f9e inactive_color=0xffffa8f1 width=6.0',
- 'exec-and-forget sh ~/.cache/matugen-jankyborders.sh',
- 'exec-and-forget sketchybar'
-]
-
-
-# Notify Sketchybar about workspace change
-exec-on-workspace-change = ['/bin/bash', '-c',
- 'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'
-]
-
-# Start AeroSpace at login - breaks nix darwin
-start-at-login = false
-
-# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
-enable-normalization-flatten-containers = true
-enable-normalization-opposite-orientation-for-nested-containers = true
-
-# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
-# The 'accordion-padding' specifies the size of accordion padding
-# You can set 0 to disable the padding feature
-accordion-padding = 30
-
-# Possible values: tiles|accordion
-default-root-container-layout = 'tiles'
-
-# Possible values: horizontal|vertical|auto
-# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
-# tall monitor (anything higher than wide) gets vertical orientation
-default-root-container-orientation = 'auto'
-
-# Mouse follows focus when focused monitor changes
-# Drop it from your config, if you don't like this behavior
-# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
-# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
-# Fallback value (if you omit the key): on-focused-monitor-changed = []
-on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
-
-# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
-# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
-# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
-automatically-unhide-macos-hidden-apps = true
-
-# Possible values: (qwerty|dvorak|colemak)
-# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
-[key-mapping]
-preset = 'qwerty'
-
-# Gaps between windows (inner-*) and between monitor edges (outer-*).
-# Possible values:
-# - Constant: gaps.outer.top = 8
-# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
-# In this example, 24 is a default value when there is no match.
-# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
-# See:
-# https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
-[gaps]
- inner.horizontal = 12
- inner.vertical = 12
- outer.left = 12
- outer.bottom = 12
- outer.top = 6
- outer.right = 12
-
-
-[[on-window-detected]]
- if.app-id = 'com.objective-see.lulu.app'
- check-further-callbacks = true
- run = 'layout floating'
-
-[mode.main.binding]
-# All possible keys:
-# - Letters. a, b, c, ..., z
-# - Numbers. 0, 1, 2, ..., 9
-# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
-# - F-keys. f1, f2, ..., f20
-# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon,
-# backtick, leftSquareBracket, rightSquareBracket, space, enter, esc,
-# backspace, tab, pageUp, pageDown, home, end, forwardDelete,
-# sectionSign (ISO keyboards only, european keyboards only)
-# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
-# keypadMinus, keypadMultiply, keypadPlus
-# - Arrows. left, down, up, right
-
-# All possible modifiers: cmd, alt, ctrl, shift
-# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
-
-# App keybinds
-alt-shift-f = 'exec-and-forget open ~'
-alt-shift-b = 'exec-and-forget /Applications/Zen.app/Contents/MacOS/zen --new-window'
-alt-s = 'exec-and-forget screencapture -i -c'
-
-alt-shift-w = 'exec-and-forget $HOME/.config/aerospace/toggle-tiling.sh off'
-
-# Layout
-# See: https://nikitabobko.github.io/AeroSpace/commands#layout
-alt-c = 'layout tiles horizontal vertical'
-alt-comma = 'layout accordion horizontal vertical'
-alt-space = 'layout floating tiling'
-alt-f = 'fullscreen'
-
-# Moving Focus
-# See: https://nikitabobko.github.io/AeroSpace/commands#focus
-alt-h = 'focus left'
-alt-j = 'focus down'
-alt-k = 'focus up'
-alt-l = 'focus right'
-
-# Moving windows
-# See: https://nikitabobko.github.io/AeroSpace/commands#move
-alt-shift-h = 'move left'
-alt-shift-j = 'move down'
-alt-shift-k = 'move up'
-alt-shift-l = 'move right'
-
-alt-ctrl-h = 'join-with left'
-alt-ctrl-j = 'join-with down'
-alt-ctrl-k = 'join-with up'
-alt-ctrl-l = 'join-with right'
-
-
-# Resizing Windows
-# See: https://nikitabobko.github.io/AeroSpace/commands#resize
-alt-minus = 'resize smart -50'
-alt-equal = 'resize smart +50'
-
-# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
-alt-1 = 'workspace 1'
-alt-2 = 'workspace 2'
-alt-3 = 'workspace 3'
-alt-4 = 'workspace 4'
-alt-5 = 'workspace 5'
-alt-6 = 'workspace 6'
-alt-7 = 'workspace 7'
-alt-8 = 'workspace 8'
-alt-9 = 'workspace 9'
-
-# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
-alt-shift-1 = 'move-node-to-workspace --focus-follows-window 1'
-alt-shift-2 = 'move-node-to-workspace --focus-follows-window 2'
-alt-shift-3 = 'move-node-to-workspace --focus-follows-window 3'
-alt-shift-4 = 'move-node-to-workspace --focus-follows-window 4'
-alt-shift-5 = 'move-node-to-workspace --focus-follows-window 5'
-alt-shift-6 = 'move-node-to-workspace --focus-follows-window 6'
-alt-shift-7 = 'move-node-to-workspace --focus-follows-window 7'
-alt-shift-8 = 'move-node-to-workspace --focus-follows-window 8'
-alt-shift-9 = 'move-node-to-workspace --focus-follows-window 9'
-
-# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
-alt-tab = 'workspace-back-and-forth'
-
-
-# See: https://nikitabobko.github.io/AeroSpace/commands#mode
-# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
-alt-shift-semicolon = 'mode service'
-[mode.service.binding]
-esc = ['reload-config', 'mode main']
-r = ['flatten-workspace-tree', 'mode main'] # reset layout
-f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
-backspace = ['close-all-windows-but-current', 'mode main']
-
-alt-shift-h = ['join-with left', 'mode main']
-alt-shift-j = ['join-with down', 'mode main']
-alt-shift-k = ['join-with up', 'mode main']
-alt-shift-l = ['join-with right', 'mode main']
-
-down = 'volume down'
-up = 'volume up'
-shift-down = ['volume set 0', 'mode main']
diff --git a/stow/.config/aerospace/toggle-tiling.sh b/stow/.config/aerospace/toggle-tiling.sh
deleted file mode 100755
index 7a446ae..0000000
--- a/stow/.config/aerospace/toggle-tiling.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-disableTiling () {
- defaults write com.apple.dock orientation bottom
- defaults write com.apple.dock autohide -bool FALSE
- defaults write com.apple.finder CreateDesktop true
-
- killall Finder Dock sketchybar borders
-
- aerospace enable off # fails when script called from aerospace directly, bin not in path
- /run/current-system/sw/bin/aerospace enable off
-
- osascript -e 'tell application "System Events"
- tell dock preferences
- set properties to {autohide menu bar:false, autohide:false}
- end tell
- end tell' -e 'tell application "System Events" to set visible of (every application process whose visible is true and name is not "Finder") to false'
-}
-
-enableTiling () {
- aerospace enable on
- sketchybar & disown
- sh ~/.cache/matugen-jankyborders.sh & disown
-
- defaults write com.apple.dock orientation right
- defaults write com.apple.dock autohide -bool FALSE
- defaults write com.apple.finder CreateDesktop false
- killall Dock Finder
-
- osascript -e '
- tell application "System Events"
- tell dock preferences
- set properties to {autohide menu bar:true, autohide:true}
- end tell
- end tell
-'
-}
-
-if [ "$1" = "on" ]; then
- enableTiling
-elif [ "$1" = "off" ]; then
- disableTiling
-else
- echo "$0: [on|off]"
-fi
diff --git a/stow/.config/fastfetch/ascii.txt b/stow/.config/fastfetch/ascii.txt
new file mode 100644
index 0000000..c557d4c
--- /dev/null
+++ b/stow/.config/fastfetch/ascii.txt
@@ -0,0 +1,19 @@
+$4⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$3⡀$4 ⡣⠨⡂⠄⠠⠠⠠⡀⡂⠄⠄⠄⢄⢀⢀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠀⠀⠀⠀⢀⠠⠨ $3⡡$4⢪⠂⡃⠔⡨⠨⡨⠨⡐⠌⠌⢌⠊⠔⡐⡐⡡⢂⢑⢐⠄⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠄⠄⢆⠁⡀⠨⠨⡐⡐$3⢅$4⠊⠄⠕⡐⠡⡂⡑⠄⢅⠅⠕⡨⢈⢂⢂⠢⢂⠅⡂⡪⠨$3⡀$4⠂⠠⠀⢠⠠⢒⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠀⠀⡠⠊⢄⠅⢅⢂⠎⡐$3⡡$4⢑⠡⠊⢔⠐⡌⢌⢂⠪⢐⠌⠔⡐⡡⠨⠂⠌⡂⡂$3⠅$4⢌⠢⠐⠐⠣⡘⣸⢈⠢⠐⠀⠀⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠠⢁⠢⡡⠡⢊⢐⠔⡡⢂$3⠊$4⠔⡨⢌⢂⠕⡨⠐⠄⢕⢐⠜⠌⠔⡐⡡⠕⠡⠠$3⠠$4⡈⢀⠈⢀⠐⠈⠄⡇⠢⡡⢑⠒⠐⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠠⡁⡪⢐⠌⢌⢂⢆⡇⡢⢂⠕⡁⡪⢂⢢⢑⢐⠅⡕⠕⠁⢕⠡⢑⢐⠒⢱⠡⢑$3⠡$4⠨⢂⠌⠢⢐⠄⠘⡌⢌⢂⠅⢪⢀⠀⠀⠀⠀⠀⠀
+$4⠀⠀⡢⢊⠔⢡⠪⡐⠔⡮⣺⢐⢐⠌⠔⠅⠕⢕⢐⢅$1⠘⠁⡀⠂$4⡇⠌⡂⠎$1⡀$4⡌⢌⢂⠅$3⠕$4⠡⠨⢊⠔⡈⡂⡰⢐⢐⠅⠅⡀⠁⠄⠀⠀⠀⠀
+$4⠀⢐⠌⡂⢮⡫⢂⠪⡰⣝⢮⡣⢂⠅⢍⠈⡰$2⣖⣵⡗⠣$1⠁$4⢀⠀⠇⠅⡊$1⢀⠁⠀$4⠒⡰⡈⣎⢌⢊⠔⢔⠨⡐⢵⡐⡡⠨⡊⡀⠀⠀⠀⠀⠀⠀
+$4⠀⠕⠌⠂⢸⠐⢅⢊⠎⠊⡗⣱⢐⠡⡂⣜⠁$2⣜⢷⣳⢂$1⠐$4⠀⠠⠨$1⠈⡀⢀$2⠨⣫⣖⢦$4⢊⢨⢂⢂⠇⢅⠊⢜⡮⡺⡌⢌⡖⡐⠀⠀⠀⠀⠀⠀
+$4⠈⠈⠀⠀⠆⢕⠡⢢⠀⠸⢨⢚⢄⢑$1⠠⠐⠀$2⠣⣱⠑⠀$1⠄⠈⠀⠄⠂⠀⡀$2⢰⣗⣧⡉⢧$4⢐⠢⢭⠃⢅⢊⢇⠫⡫$5⡎⡢⢏⢆⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠀⢕⠡⢊⢮⡂⠀⢊⠪⡢⢢$1⠀⠄⠂⢀⠀⠄⠁⡀⢈⠀⠄⠐⠀⡀$2⢇⠗⡵⠁⢵⠀$4⡽⣱⠡⡑⡌⠆⡆$5⠫⡎⡄⢸⡐⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠀⡃⡊⡢⡗⠀⠀⠀⠀⢂⢕$1⠀⠄⠂⠀⠄⠐⠀⡀⠠⠀⠆⢀⠁⢀⠀⠡⠀⠄⠂$4⡸⡝⡮$5⡂⡲⠘⠈⠁⠘⠑⢀⢠⠇⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠀⢐⢑⠜⠀⠀⠀⠀⠀⠀⠂$1⠈⠠⢀⢁⠀⠂⠁⢀⠠⠐⡀⠄⠐⠀⡀⢁⠐⠀⢢$4⡫⡳$5⡱⡈$3⢀⢄⠅$5⠀⠠⠀⠀⠈⠠⠀⠀⠀⠀⠀⠀
+$4⠀⠀⠀⠀⠀⢅⠅⠀⠀⠀⠀⠀⠀⠀$1⠀⠀⠀⠀⠂⣄⡁⡀⠄⠂⢀⠠⠐⠀⢄⢠⡰⡸$4⣜⠮$5⡃⡆⠀⠀$3⠁⠁$5⠀⢀⠀⠈⢀⠀⠁⠀⠄⠠⠀⡀
+$5⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⡖⡌⢣⡒⡖⡆⡎⡏⡍⠔ $5⣅⠀⠈⠀⠐⡈⠀⠀$3⠸⣪$5⠀⢠⠉⢪⠪⡱⠐
+$6⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠄⠀$6⡀⣄⣼⣿⣿⡌⡆⡣⢣⡱⡣⢣⠩⡊⢆⢑⠌⢀⠝⡌$5⠌⢇⢧⢓⢄⠁⠀⠀⡀⠠⠀⠀⡀⢨⢊⠈⠀⠀⠀
+$6⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠀⠠⠀$6⢮⣟⣔⢮⣖⢽$7⣝⢮⡢⡓⢜⣜⢮$6⢬⣀⢶⠀⠈⠑⡀⠂⢱⠁$5⡔⢔⢑⢄⢅⢀⡀⠠⡠⠐⠁⠁⠁⠀⠀⠀
+$6⠀⠀⠀⠀⠀⠀⠀⠠⠁⡀⠈⡀⠀$6⣟⣞⣞⢞⡮$7⡷⡽$8⣿⣿⣿⣿⣿$7⡽⣕$6⢷⢝⣖⡌⠀⠀⠠⠁⠠$5⠨⠢⠃⠑⠨⠢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+$6⠀⠀⠀⠀⠀⠀⣠⣡⣾⡀⠄⠐⠀$6⢗⡷⣝⣗$7⡯⡯$8⣿⣿⣿⣿⣿⣿⣿$7⢽⢽$6⣕⣗⠀⠄⠈⢀⠀⠡⠀⠅⠀⡢⠀⢨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
diff --git a/stow/.config/fastfetch/config.jsonc b/stow/.config/fastfetch/config.jsonc
index ebd577d..f8f28b8 100644
--- a/stow/.config/fastfetch/config.jsonc
+++ b/stow/.config/fastfetch/config.jsonc
@@ -1,8 +1,32 @@
{
+ "logo": {
+ "source": "$HOME/.config/fastfetch/ascii.txt",
+ "padding": {
+ "top": 2,
+ "right": 6
+ },
+ "color": {
+ "1": "38;5;231", // skin
+ "4": "38;5;217", // hair
+ "2": "38;5;206", // eyes
+ "3": "38;5;196", // hair tie
+ "5": "38;5;15", // kyubey
+ "6": "38;5;212", // clothes
+ "7": "38;5;241", // gem border
+ "8": "38;5;219", // gem inside
+ "9": "white",
+ },
+ },
"display": {
"separator": " ",
+ "color": {
+ "title": "38;5;206",
+ "keys": "38;5;219",
+ },
},
"modules": [
+ "break",
+ "break",
{
"type": "title",
"keyWidth": 10,
@@ -17,12 +41,8 @@
"key": " ",
},
{
- "type": "wm",
- "key": " ",
- },
- {
- "type": "shell",
- "key": " ",
+ "type": "packages",
+ "key": " ",
},
"break",
{
@@ -39,18 +59,27 @@
},
"break",
{
- "type": "packages",
- "key": " ",
+ "type": "shell",
+ "key": " ",
},
{
- "type": "media",
- "key": " ",
+ "type": "terminal",
+ "key": " ",
+ },
+ {
+ "type": "wm",
+ "key": " ",
},
{
"type": "uptime",
"key": " ",
},
+ {
+ "type": "media",
+ "key": " ",
+ },
+ "break",
+ "colors",
"break",
- "colors"
]
}
diff --git a/stow/.config/fish/.gitignore b/stow/.config/fish/.gitignore
deleted file mode 100644
index 23efee9..0000000
--- a/stow/.config/fish/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-fish_variables
diff --git a/stow/.config/fish/config.fish b/stow/.config/fish/config.fish
deleted file mode 100644
index 2a27fa8..0000000
--- a/stow/.config/fish/config.fish
+++ /dev/null
@@ -1,92 +0,0 @@
-if status is-interactive
- # Commands to run in interactive sessions can go here
-
-
- #
- # shell prompt
- #
-
- # match prompt symbol to OS logo
- if test -e /etc/os-release
- posix-source /etc/os-release
- end
-
- if test -e /System
- set os_icon ""
- eval "$(/opt/homebrew/bin/brew shellenv)"
- else if [ "$ID" = "nixos" ]
- set os_icon ""
- else if [ "$ID" = "debian" ]
- set os_icon ""
- else if [ "$ID" = "fedora" ]
- set os_icon ""
- else if [ "$ID" = "arch" ]
- set os_icon ""
- else
- set os_icon "\$"
- end
-
- # set prompt colours
- if test -e ~/.cache/zsh_colours.sh
- posix-source-universal (string replace -fra "{|}|#|\"" "" (cat ~/.cache/zsh_colours.sh) | psub)
- else
- set -Ux PRIMARY_COLOUR blue
- set -Ux SECONDARY_COLOUR purple
- end
-
-
- # construct final prompt
- function fish_prompt
- # turn os_icon red if an error occurs
- set -l prompt_icon
- if test $status -ne 0
- set prompt_icon (set_color red)"$os_icon"(set_color normal)
- else
- set prompt_icon "$os_icon"
- end
-
- # set ssh status
- set -l ssh_status
- if set -q SSH_CONNECTION
- set ssh_status (prompt_login)
- end
-
- # concatenate $HOME to a ~ eg. /home/user to ~
- set shorten_path (string replace -r "^$HOME" "~" "$PWD")
-
- echo (set_color $PRIMARY_COLOUR)$shorten_path $ssh_status (set_color $SECONDARY_COLOUR)$prompt_icon (set_color normal)
- end
-
- #
- # shell intergration
- #
-
- zoxide init fish | source
-
- #
- # environment variables
- #
-
- set -gx EDITOR nvim
- set fish_greeting ""
- set HOMEBREW_AUTO_UPDATE_SECS 86400
-
- # xdg variables
- set -gx XDG_CONFIG_HOME "$HOME/.config" # config
- set -gx XDG_CACHE_HOME "$HOME/.cache" # cache
- set -gx XDG_DATA_HOME "$HOME/.local/share" # data files eg. /usr/share
- set -gx XDG_STATE_HOME "$HOME/.local/state" # state files eg. /var/lib
-
- # make apps use XDG folders
- set -gx PYTHON_HISTORY "$XDG_STATE_HOME"/python_history
- set -gx PYTHONPYCACHEPREFIX "$XDG_CACHE_HOME"/python
- set -gx PYTHONUSERBASE "$XDG_DATA_HOME"/python
- set -gx GOPATH "$XDG_STATE_HOME"/go
- set -gx GOMODCACHE "$XDG_CACHE_HOME"/go/mod
- set -gx NPM_CONFIG_USERCONFIG "$XDG_CONFIG_HOME"/npm/npmrc
-
- function wget --wraps=wget
- wget --hsts-file="$XDG_STATE_HOME/wget-hsts" $argv
- end
-
-end
diff --git a/stow/.config/fish/functions/cat.fish b/stow/.config/fish/functions/cat.fish
deleted file mode 100644
index abbc480..0000000
--- a/stow/.config/fish/functions/cat.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function cat --wraps=bat --description 'alias cat bat'
- bat $argv
-
-end
diff --git a/stow/.config/fish/functions/ff.fish b/stow/.config/fish/functions/ff.fish
deleted file mode 100644
index 0fcb5c9..0000000
--- a/stow/.config/fish/functions/ff.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function ff --wraps=fastfetch --description 'alias ff=fastfetch'
- fastfetch $argv
-
-end
diff --git a/stow/.config/fish/functions/ga.fish b/stow/.config/fish/functions/ga.fish
deleted file mode 100644
index 6661b8c..0000000
--- a/stow/.config/fish/functions/ga.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function ga --wraps='git add' --description 'alias ga=git add'
- git add $argv
-
-end
diff --git a/stow/.config/fish/functions/gc.fish b/stow/.config/fish/functions/gc.fish
deleted file mode 100644
index f796e70..0000000
--- a/stow/.config/fish/functions/gc.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function gc --wraps='git commit' --description 'alias gc=git commit'
- git commit $argv
-
-end
diff --git a/stow/.config/fish/functions/glo.fish b/stow/.config/fish/functions/glo.fish
deleted file mode 100644
index 3914ded..0000000
--- a/stow/.config/fish/functions/glo.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function glo --wraps='git log' --description 'alias glo=git log'
- git log $argv
-
-end
diff --git a/stow/.config/fish/functions/gph.fish b/stow/.config/fish/functions/gph.fish
deleted file mode 100644
index 76a0022..0000000
--- a/stow/.config/fish/functions/gph.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function gph --wraps='git push' --description 'alias gph=git push'
- git push $argv
-
-end
diff --git a/stow/.config/fish/functions/gpl.fish b/stow/.config/fish/functions/gpl.fish
deleted file mode 100644
index 98780ae..0000000
--- a/stow/.config/fish/functions/gpl.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function gpl --wraps='git pull' --description 'alias gpl=git pull'
- git pull $argv
-
-end
diff --git a/stow/.config/fish/functions/gs.fish b/stow/.config/fish/functions/gs.fish
deleted file mode 100644
index fea3f96..0000000
--- a/stow/.config/fish/functions/gs.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function gs --wraps='git status' --description 'alias gs=git status'
- git status $argv
-
-end
diff --git a/stow/.config/fish/functions/la.fish b/stow/.config/fish/functions/la.fish
deleted file mode 100644
index d33eb8f..0000000
--- a/stow/.config/fish/functions/la.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function la --wraps='ls -ah --color=auto' --description 'alias la=ls -ah --color=auto'
- ls -ah --color=auto $argv
-
-end
diff --git a/stow/.config/fish/functions/ll.fish b/stow/.config/fish/functions/ll.fish
deleted file mode 100644
index 874614f..0000000
--- a/stow/.config/fish/functions/ll.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function ll --wraps='ls -l' --wraps='ls -ahl --color=auto' --description 'alias ll=ls -ahl --color=auto'
- ls -ahl --color=auto $argv
-
-end
diff --git a/stow/.config/fish/functions/ls.fish b/stow/.config/fish/functions/ls.fish
deleted file mode 100644
index eaf48c8..0000000
--- a/stow/.config/fish/functions/ls.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function ls --description 'alias ls=ls -h --color=auto'
- command ls -h --color=auto $argv
-
-end
diff --git a/stow/.config/fish/functions/posix-source-universal.fish b/stow/.config/fish/functions/posix-source-universal.fish
deleted file mode 100644
index 5fee790..0000000
--- a/stow/.config/fish/functions/posix-source-universal.fish
+++ /dev/null
@@ -1,6 +0,0 @@
-function posix-source-universal
- for i in (cat $argv)
- set arr (echo $i |tr = \n)
- set -Ux $arr[1] $arr[2]
- end
-end
diff --git a/stow/.config/fish/functions/posix-source.fish b/stow/.config/fish/functions/posix-source.fish
deleted file mode 100644
index 5147014..0000000
--- a/stow/.config/fish/functions/posix-source.fish
+++ /dev/null
@@ -1,6 +0,0 @@
-function posix-source
- for i in (cat $argv)
- set arr (echo $i |tr = \n)
- set -gx $arr[1] $arr[2]
- end
-end
diff --git a/stow/.config/fish/functions/rm.fish b/stow/.config/fish/functions/rm.fish
deleted file mode 100644
index 5d4ae5f..0000000
--- a/stow/.config/fish/functions/rm.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function rm --wraps=trash --description 'alias rm trash'
- trash $argv
-
-end
diff --git a/stow/.config/fish/functions/v.fish b/stow/.config/fish/functions/v.fish
deleted file mode 100644
index c4c8a12..0000000
--- a/stow/.config/fish/functions/v.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function v --wraps=nvim --description 'alias v nvim'
- nvim $argv
-
-end
diff --git a/stow/.config/fish/functions/vi.fish b/stow/.config/fish/functions/vi.fish
deleted file mode 100644
index 1f236aa..0000000
--- a/stow/.config/fish/functions/vi.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function vi --wraps=nvim --description 'alias vi nvim'
- nvim $argv
-
-end
diff --git a/stow/.config/fish/functions/vim.fish b/stow/.config/fish/functions/vim.fish
deleted file mode 100644
index 67df688..0000000
--- a/stow/.config/fish/functions/vim.fish
+++ /dev/null
@@ -1,4 +0,0 @@
-function vim --wraps=nvim --description 'alias vim nvim'
- nvim $argv
-
-end
diff --git a/stow/.config/fish/functions/y.fish b/stow/.config/fish/functions/y.fish
deleted file mode 100644
index bddb84d..0000000
--- a/stow/.config/fish/functions/y.fish
+++ /dev/null
@@ -1,8 +0,0 @@
-function y
- set tmp (mktemp -t "yazi-cwd.XXXXXX")
- command yazi $argv --cwd-file="$tmp"
- if read -z cwd < "$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
- builtin cd -- "$cwd"
- end
- command rm -f -- "$tmp"
-end
diff --git a/stow/.config/fuzzel/.gitignore b/stow/.config/fuzzel/.gitignore
deleted file mode 100644
index 64550cc..0000000
--- a/stow/.config/fuzzel/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-colors.ini
diff --git a/stow/.config/fuzzel/fuzzel.ini b/stow/.config/fuzzel/fuzzel.ini
deleted file mode 100644
index 21e7912..0000000
--- a/stow/.config/fuzzel/fuzzel.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[main]
-include = "~/.config/fuzzel/colors.ini"
-
-prompt="> "
-placeholder="Search..."
-password-character="*"
-
-width=40
-use-bold=no
-dpi-aware=auto
-tabs="4"
-terminal="ghostty -e"
-keyboard-focus=exclusive
-
-fields=filename,name,generic,exec,keywords,comment,categories
-match-mode="fzf"
-sort-result=yes
-
-layer=top
-
-[border]
-width=2
-radius=10
-selection-radius=10
diff --git a/stow/.config/ghostty/.gitignore b/stow/.config/ghostty/.gitignore
deleted file mode 100644
index 5fe944e..0000000
--- a/stow/.config/ghostty/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-matugen
diff --git a/stow/.config/ghostty/config b/stow/.config/ghostty/config
index 1fc75b5..effae8f 100644
--- a/stow/.config/ghostty/config
+++ b/stow/.config/ghostty/config
@@ -1,19 +1,14 @@
-theme = dark:TokyoNight,light:TokyoNight Day
+theme = dark:tokyonight,light:tokyonight-day
background-opacity = 0.9
background-blur-radius = 20
window-decoration = true
gtk-titlebar = false
+quit-after-last-window-closed = true
font-family = "ComicShannsMono Nerd Font"
font-size = 18
window-padding-x = 8
window-padding-y = 8
-
-quit-after-last-window-closed = false
-keybind = global:opt+shift+q=new_window
-keybind = global:cmd+opt+q=toggle_quick_terminal
-
-config-file = ?matugen
diff --git a/stow/.config/hypr/.gitignore b/stow/.config/hypr/.gitignore
index d868207..f25037d 100644
--- a/stow/.config/hypr/.gitignore
+++ b/stow/.config/hypr/.gitignore
@@ -1,2 +1 @@
matugen.conf
-hyprlock.conf
diff --git a/stow/.config/hypr/appearance.conf b/stow/.config/hypr/appearance.conf
deleted file mode 100644
index 73ddc8f..0000000
--- a/stow/.config/hypr/appearance.conf
+++ /dev/null
@@ -1,54 +0,0 @@
-general {
- gaps_in = 3
- gaps_out = 5
-
- border_size = 2
-
- # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
- col.active_border = rgba(ff6161ee) rgba(cc2a2aee) 45deg
- col.inactive_border = rgba(e04254aa)
-}
-
-decoration {
- rounding = 10
-
- # Change transparency of focused and unfocused windows
- active_opacity = 1.0
- inactive_opacity = 1.0
-
- shadow {
- enabled = true
- range = 4
- render_power = 3
- color = rgba(1a1a1aee)
- }
-
- # https://wiki.hyprland.org/Configuring/Variables/#blur
- blur {
- enabled = true
- size = 5
- passes = 3
-
- vibrancy = 0.1696
- }
-}
-
-# https://wiki.hyprland.org/Configuring/Variables/#animations
-animations {
- # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
- enabled = true
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
-
- animation = windows, 1, 7, myBezier
- animation = windowsOut, 1, 7, default, popin 80%
- animation = border, 1, 10, default
- animation = borderangle, 1, 8, default
- animation = fade, 1, 7, default
- animation = workspaces, 1, 6, default
-}
-
-misc {
-# force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
- disable_splash_rendering = true
- disable_hyprland_logo = true # makes swww startup more seemless
-}
diff --git a/stow/.config/hypr/binds.conf b/stow/.config/hypr/binds.conf
deleted file mode 100644
index fb8d185..0000000
--- a/stow/.config/hypr/binds.conf
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# keybinds
-# https://wiki.hyprland.org/Configuring/Keywords/
-
-$mainMod = SUPER # Sets "Windows" key as main modifier
-
-# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
-bind = $mainMod, Q, exec, ghostty
-bind = $mainMod, B, exec, firefox
-bind = $mainMod, D, exec, vicinae toggle
-bind = $mainMod shift, D, exec, 1password --quick-access
-bind = $mainMod, S, exec, hyprshot -z --clipboard-only -m region
-bind = $mainMod shift, S, exec, hyprshot -z --clipboard-only -m window
-bind = $mainMod control, S, exec, hyprshot -z --clipboard-only -m active
-bind = $mainMod, V, exec, sh ~/.config/hypr/hyprlock.sh
-
-bind = $mainMod, SPACE, togglefloating,
-bind = $mainMod, W, killactive,
-bind = $mainMod, M, exit
-
-#bind = $mainMod, P, pseudo, # dwindle # have no clue what this does
-bind = $mainMod, F, fullscreen
-bind = $mainMod, C, togglesplit, # dwindle
-
-# Move focus with mainMod + arrow keys
-bind = $mainMod, h, movefocus, l
-bind = $mainMod, l, movefocus, r
-bind = $mainMod, k, movefocus, u
-bind = $mainMod, j, movefocus, d
-
-# Move window with mainMod + shift + hjkl
-bind = $mainMod shift, h, swapwindow, l
-bind = $mainMod shift, l, swapwindow, r
-bind = $mainMod shift, k, swapwindow, u
-bind = $mainMod shift, j, swapwindow, d
-
-# brightness keys
-bindel = , XF86MonBrightnessUp, exec, brightnessctl s +2%
-bindel = , XF86MonBrightnessDown, exec, brightnessctl s 2%-
-
-# media keys
-bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+
-bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-
-bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
-
-# Requires playerctl
-bindl = , XF86AudioPlay, exec, playerctl play-pause
-bindl = , XF86AudioPrev, exec, playerctl previous
-bindl = , XF86AudioNext, exec, playerctl next
-
-# Switch workspaces with mainMod + [0-9]
-bind = $mainMod, 1, workspace, 1
-bind = $mainMod, 2, workspace, 2
-bind = $mainMod, 3, workspace, 3
-bind = $mainMod, 4, workspace, 4
-bind = $mainMod, 5, workspace, 5
-bind = $mainMod, 6, workspace, 6
-bind = $mainMod, 7, workspace, 7
-bind = $mainMod, 8, workspace, 8
-bind = $mainMod, 9, workspace, 9
-bind = $mainMod, 0, workspace, 10
-
-# Move active window to a workspace with mainMod + SHIFT + [0-9]
-bind = $mainMod SHIFT, 1, movetoworkspace, 1
-bind = $mainMod SHIFT, 2, movetoworkspace, 2
-bind = $mainMod SHIFT, 3, movetoworkspace, 3
-bind = $mainMod SHIFT, 4, movetoworkspace, 4
-bind = $mainMod SHIFT, 5, movetoworkspace, 5
-bind = $mainMod SHIFT, 6, movetoworkspace, 6
-bind = $mainMod SHIFT, 7, movetoworkspace, 7
-bind = $mainMod SHIFT, 8, movetoworkspace, 8
-bind = $mainMod SHIFT, 9, movetoworkspace, 9
-bind = $mainMod SHIFT, 0, movetoworkspace, 10
-
-# Scroll through existing workspaces with mainMod + scroll
-bind = $mainMod, mouse_down, workspace, e+1
-bind = $mainMod, mouse_up, workspace, e-1
-
-# Move/resize windows with mainMod + LMB/RMB and dragging
-bindm = $mainMod, mouse:272, movewindow
-bindm = $mainMod, mouse:273, resizewindow
-
-input:kb_options = caps:super
-
-# Controllers Binds
-bind = $mainMod, page_up, workspace, e+1
-bind = $mainMod, page_down, workspace, e-1
-bind = $mainMod, insert, exec, hyprexit
-
-
-# gestures
-# https://wiki.hyprland.org/Configuring/Variables/#gestures
-gesture = 3, horizontal, workspace
-gesture = 4, pinch, dispatcher, exec, vicinae toggle
-gesture = 4, left, dispatcher, exec, swaync-client -op
-gesture = 4, right, dispatcher, exec, swaync-client -cp
diff --git a/stow/.config/hypr/hyprland.conf b/stow/.config/hypr/hyprland.conf
index 474d34c..531438a 100755
--- a/stow/.config/hypr/hyprland.conf
+++ b/stow/.config/hypr/hyprland.conf
@@ -1,32 +1,28 @@
-#
-# modules
-source = binds.conf
-source = rules.conf
-source = appearance.conf
-source = ./matugen.conf
-#
-# monitors
-# https://wiki.hyprland.org/Configuring/Monitors/
+################
+### MONITORS ###
+################
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=eDP-1,1920x1080@60,auto,1
+#################
+### AUTOSTART ###
+#################
-#
-# autostart
+# Autostart necessary processes (like notifications daemons, status bars, etc.)
+# Or execute your favorite apps at launch like this:
-# desktop
-exec-once = swww-daemon
-exec-once = waybar
-exec-once = swaync
-exec-once = vicinae server
-exec-once = fcitx5
-exec-once = systemctl --user start hyprpolkitagent
-exec-once = hyprshade auto
+exec-once = swww-daemon &
+exec-once = waybar &
+exec-once = swaync &
+exec-once = hyprshade auto &
+exec-once = walker --gapplication-service
-# apps
exec-once = opensnitch-ui
-exec-once = steam -silent
-exec-once = 1password --silent
+exec-once = systemctl status --user polkit-gnome-authentication-agent-1.service
+
+exec-once = steam -silent &
#############################
### ENVIRONMENT VARIABLES ###
@@ -36,7 +32,21 @@ exec-once = 1password --silent
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
+#####################
+### LOOK AND FEEL ###
+#####################
+# Refer to https://wiki.hyprland.org/Configuring/Variables/
+
general {
+ gaps_in = 3
+ gaps_out = 5
+
+ border_size = 2
+
+ # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
+ col.active_border = rgba(ff6161ee) rgba(cc2a2aee) 45deg
+ col.inactive_border = rgba(e04254aa)
+
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true
@@ -46,6 +56,46 @@ general {
layout = dwindle
}
+decoration {
+ rounding = 10
+
+ # Change transparency of focused and unfocused windows
+ active_opacity = 1.0
+ inactive_opacity = 1.0
+
+ shadow {
+ enabled = true
+ range = 4
+ render_power = 3
+ color = rgba(1a1a1aee)
+ }
+
+ # https://wiki.hyprland.org/Configuring/Variables/#blur
+ blur {
+ enabled = true
+ size = 5
+ passes = 3
+
+ vibrancy = 0.1696
+ }
+}
+
+# Matugen theming
+source = ./matugen.conf
+
+# https://wiki.hyprland.org/Configuring/Variables/#animations
+animations {
+ # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+ enabled = true
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+
+ animation = windows, 1, 7, myBezier
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default
+}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
@@ -53,8 +103,18 @@ dwindle {
preserve_split = true # You probably want this
}
+# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+master {
+ new_status = master
+}
+
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
+# force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+# disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
+ disable_splash_rendering = true
+ disable_hyprland_logo = true # makes swww startup more seemless
+
enable_swallow = true
swallow_regex = ^(com.mitchellh.ghostty)$
}
@@ -83,9 +143,150 @@ input {
}
}
+# https://wiki.hyprland.org/Configuring/Variables/#gestures
+gestures {
+ workspace_swipe = true
+}
+
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
+
+
+###################
+### KEYBINDINGS ###
+###################
+
+# See https://wiki.hyprland.org/Configuring/Keywords/
+$mainMod = SUPER # Sets "Windows" key as main modifier
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainMod, Q, exec, ghostty
+bind = $mainMod, B, exec, firefox
+bind = $mainMod, D, exec, walker
+bind = $mainMod, S, exec, hyprshot -z --clipboard-only -m region
+bind = $mainMod shift, S, exec, hyprshot -z --clipboard-only -m window
+bind = $mainMod control, S, exec, hyprshot -z --clipboard-only -m active
+bind = $mainMod, V, exec, sh ~/.config/hypr/hyprlock.sh
+
+bind = $mainMod, SPACE, togglefloating,
+bind = $mainMod, W, killactive,
+bind = $mainMod, M, exit,
+
+#bind = $mainMod, P, pseudo, # dwindle # have no clue what this does
+bind = $mainMod, F, fullscreen
+bind = $mainMod, C, togglesplit, # dwindle
+
+# Move focus with mainMod + arrow keys
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# brightness keys
+bindel = , XF86MonBrightnessUp, exec, brightnessctl s +2%
+bindel = , XF86MonBrightnessDown, exec, brightnessctl s 2%-
+
+# media keys
+bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+
+bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-
+bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+
+# Requires playerctl
+bindl = , XF86AudioPlay, exec, playerctl play-pause
+bindl = , XF86AudioPrev, exec, playerctl previous
+bindl = , XF86AudioNext, exec, playerctl next
+
+# Switch workspaces with mainMod + [0-9]
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 0, workspace, 10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainMod SHIFT, 1, movetoworkspace, 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+input:kb_options = caps:super
+
+# Controllers Binds
+bind = $mainMod, page_up, workspace, e+1
+bind = $mainMod, page_down, workspace, e-1
+bind = $mainMod, insert, exec, hyprexit
+
+##############################
+### WINDOWS AND WORKSPACES ###
+##############################
+
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
+
+windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
+
+windowrulev2 = noborder,initialClass:ulauncher
+windowrulev2 = noblur,initialClass:ulauncher
+windowrulev2 = noshadow,initialClass:ulauncher
+
+windowrulev2 = float,initialTitle:(^KeePassXC - Browser Access Request$)
+
+windowrulev2 = noanim,initialTitle:(^flameshot$)
+windowrulev2 = float,initialTitle:(^flameshot$)
+
+windowrulev2 = float, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$)
+windowrulev2 = pin, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$)
+windowrulev2 = noinitialfocus, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$)
+windowrulev2 = size 502 286, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$)
+windowrulev2 = move 72% 6%, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$)
+windowrulev2 = keepaspectratio, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$)
+
+windowrulev2 = move -100% -100%, initialClass:(^xwaylandvideobridge$)
+windowrulev2 = noinitialfocus, initialClass:(^xwaylandvideobridge$)
+
+windowrulev2 = dimaround, initialClass:(^polkit-gnome-authentication-agent-1$)
+windowrulev2 = center, initialClass:(^polkit-gnome-authentication-agent-1$)
+windowrulev2 = float, initialClass:(^polkit-gnome-authentication-agent-1$)
+windowrulev2 = pin, initialClass:(^polkit-gnome-authentication-agent-1$)
+windowrulev2 = stayfocused, initialClass:(^polkit-gnome-authentication-agent-1$)
+windowrulev2 = animation slidein, initialClass:(^polkit-gnome-authentication-agent-1$)
+
+windowrulev2 = dimaround, initialClass:(^opensnitch_ui$)
+windowrulev2 = stayfocused, initialClass:(^opensnitch_ui$)
+windowrulev2 = animation slidein, initialClass:(^opensnitch_ui$)
+windowrulev2 = float, initialClass:(^opensnitch_ui$)
+windowrulev2 = size 960 540, initialClass:(^opensnitch_ui$)
+windowrulev2 = center, initialClass:(^opensnitch_ui$)
+
+windowrulev2 = idleinhibit fullscreen, initialTitle:(.*)
+
+windowrulev2 = pin, initialTitle:(^Steam Input On-screen Keyboard$)
+windowrulev2 = noblur, initialTitle:(^Steam Input On-screen Keyboard$)
+windowrulev2 = bordersize 0, initialTitle:(^Steam Input On-screen Keyboard$)
+windowrulev2 = noshadow, initialTitle:(^Steam Input On-screen Keyboard$)
+
+# layer rules
+layerrule = animation slide top, waybar
diff --git a/stow/.config/hypr/hyprlock.conf b/stow/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..2cf4d73
--- /dev/null
+++ b/stow/.config/hypr/hyprlock.conf
@@ -0,0 +1,34 @@
+general {
+ hide_cursor = true
+ grace = 1
+ ignore_empty_input = true
+ enable_fingerprint = true
+
+}
+
+background {
+ path = /tmp/hyprlock-background
+ blur_passes = 3
+ blur_size 15
+ noise = 0.01
+}
+
+input-field {
+ fade_on_empty = true
+ halign = right
+ valign = bottom
+ position = -100, 100
+ inner_color = rgb(0, 0, 0)
+ outer_color = rgb(0, 0, 0)
+ font_color = rgb(255, 255, 255)
+ rounding = 0
+}
+
+label {
+ position = 0, 0
+ valign = center
+ halign = center
+ font_size = 256
+ font_family = ComicShannsMono Nerd Font
+ text = $TIME12
+}
diff --git a/stow/.config/hypr/hyprlock.sh b/stow/.config/hypr/hyprlock.sh
index a766a0b..0ea0c07 100755
--- a/stow/.config/hypr/hyprlock.sh
+++ b/stow/.config/hypr/hyprlock.sh
@@ -1,5 +1,9 @@
#!/bin/sh
-1password --lock &
+# gets the last part of the 'swww query' command
+# should work as long as image path does not have spaces
+IMAGE="$(swww query | rev | cut -f1 -d' ' | rev)"
+
+cp "$IMAGE" /tmp/hyprlock-background
hyprlock
diff --git a/stow/.config/hypr/rules.conf b/stow/.config/hypr/rules.conf
deleted file mode 100644
index 14d5fae..0000000
--- a/stow/.config/hypr/rules.conf
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# windows and workspaces
-# https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-# https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
-
-windowrule {
- name = windowrule-1
- suppress_event = maximize
- match:class = .* # You'll probably like this.
-}
-
-windowrule {
- name = inhibit-fullscreen
- idle_inhibit = fullscreen
- match:initial_title = (.*)
-}
-
-
-windowrule {
- name = float-keypass-confirmation
- float = on
- center = on
- size = 600 225
- match:initial_title = (^KeePassXC - .*)
-}
-
-windowrule {
- name = windowrule-6
- float = on
- pin = on
- no_initial_focus = on
- size = (monitor_w*0.25) (monitor_h*0.25)
- move = ((monitor_w-window_w)-65) 5
- keep_aspect_ratio = false
- match:initial_title = (^Picture-in-Picture$)
- match:initial_class = (^firefox$)
-}
-
-
-windowrule {
- name = hide-xwaylandvideobridge
- move = (-(monitor_w*1)) (-(monitor_h*1))
- no_initial_focus = on
- match:initial_class = (^xwaylandvideobridge$)
-}
-
-
-windowrule {
- name = polkit
- dim_around = on
- center = on
- float = on
- pin = on
- stay_focused = on
- animation = gnomed
- match:initial_title = (^Hyprland Polkit Agent$)
-}
-
-
-windowrule {
- name = opensnitch-confirmation
- dim_around = on
- stay_focused = on
- animation = slidein
- float = on
- size = 960 540
- center = on
- match:initial_class = (^opensnitch_ui$)
- match:initial_title = negative:(^OpenSnitch Network Statistics 1.8.0$)
-}
-
-
-windowrule {
- name = steam-onscreen-keyboard
- pin = on
- no_blur = on
- border_size = 0
- no_shadow = on
- match:initial_title = (^Steam Input On-screen Keyboard$)
-}
-
-# disable fade animation for vicinae only
-layerrule {
- name = layerrule-1
- no_anim = on
- blur = on
- ignore_alpha = 0
- match:namespace = vicinae
-}
-
-# layer rules
-layerrule {
- name = layerrule-2
- animation = slide right
- match:namespace = waybar
-}
-
diff --git a/stow/.config/matugen/config.toml b/stow/.config/matugen/config.toml
index 0a86e13..e19e302 100644
--- a/stow/.config/matugen/config.toml
+++ b/stow/.config/matugen/config.toml
@@ -1,12 +1,11 @@
-[config]
-import_json_files = ["./custom.json"]
-caching = false
-
[config.wallpaper]
command = "swww"
arguments = ["img", "--transition-type", "center"]
set = true
+[config.custom_keywords]
+font = "ComicShannsMono Nerd Font"
+
[templates.waybar]
input_path = './templates/colors.css'
output_path = '~/.config/waybar/colors.css'
@@ -24,7 +23,6 @@ output_path = '~/.config/gtk-3.0/gtk.css'
[templates.gtk4]
input_path = './templates/gtk-colors.css'
output_path = '~/.config/gtk-4.0/gtk.css'
-post_hook = "gsettings set org.gnome.desktop.interface color-scheme 'prefer-{{mode}}'"
[templates.matugen]
input_path = './templates/walker.css'
@@ -42,63 +40,7 @@ output_path = '~/.config/qt5ct/colors/matugen.conf'
input_path = './templates/qtct.conf'
output_path = '~/.config/qt6ct/colors/matugen.conf'
-[templates.hyprlock]
-input_path = './templates/hyprlock.conf'
-output_path = '~/.config/hypr/hyprlock.conf'
-
-[templates.discord]
-input_path = './templates/discord.css'
-output_path = '~/.config/Vencord/themes/midnight-discord.css'
-
-[templates.sketchybar]
-input_path = './templates/sketchybar.sh'
-output_path = '~/.config/sketchybar/colours.sh'
-post_hook = 'sketchybar --reload'
-
-[templates.jankyborders]
-input_path = './templates/jankyborders.sh'
-output_path = '~/.cache/matugen-jankyborders.sh'
-post_hook = 'sh ~/.cache/matugen-jankyborders.sh & disown'
-
-[templates.zsh]
-input_path = './templates/zsh.sh'
-output_path = '~/.cache/zsh_colours.sh'
-
-[templates.fuzzel]
-input_path = './templates/fuzzel.ini'
-output_path = '~/.config/fuzzel/colors.ini'
-
-[templates.ghostty]
-input_path = './templates/ghostty'
-output_path = '~/.config/ghostty/matugen'
-
-[templates.vicinae]
-input_path = './templates/vicinae.toml'
-output_path = '~/.local/share/vicinae/themes/matugen.toml'
-post_hook = 'vicinae theme set matugen'
-
-[templates.tmux]
-input_path = './templates/tmux.conf'
-output_path = '~/.cache/matugen/tmux.conf'
-post_hook = 'tmux source-file ~/.cache/matugen/tmux.conf'
-
-[templates.macos-accent]
-colors_to_compare = [
- { name = "-1", color = "#696766" }, # graphite
- { name = "0", color = "#C03437" }, # red
- { name = "1", color = "#C65D0A" }, # orange
- { name = "2", color = "#BE8F0F" }, # yellow
- { name = "3", color = "#409226" }, # green
- { name = "4", color = "#1B5DC7" }, # blue
- { name = "5", color = "#AD29AB" }, # purple
- { name = "6", color = "#BC3F77" }, # pink
-]
-
-compare_to = "{{colors.primary.default.hex}}"
-pre_hook = "defaults write -globalDomain AppleAccentColor -int {{closest_color}}"
-post_hook = "~/.config/matugen/scripts/macos-accent-notification"
-input_path = "/dev/null"
-
-[templates.macos-dark-mode]
-input_path = "/dev/null"
-post_hook = '~/.config/matugen/scripts/macos-darkmode.sh {{mode}}'
+[templates.pywalfox]
+input_path = './templates/pywalfox.json'
+output_path = '~/.cache/wal/colors.json'
+post_hook = 'pywalfox update'
diff --git a/stow/.config/matugen/custom.json b/stow/.config/matugen/custom.json
deleted file mode 100644
index 3d66f10..0000000
--- a/stow/.config/matugen/custom.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "font": "Comic Neue",
- "monospace_font": "ComicShannsMono Nerd Font",
- "rounding": 0
-}
diff --git a/stow/.config/matugen/scripts/macos-accent-notification b/stow/.config/matugen/scripts/macos-accent-notification
deleted file mode 100755
index 261fc01..0000000
--- a/stow/.config/matugen/scripts/macos-accent-notification
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env swift
-// from: https://alexwlchan.net/2022/changing-the-macos-accent-colour/
-
-import Foundation
-
-let notifications = [
- "AppleColorPreferencesChangedNotification",
- "AppleAquaColorVariantChanged"
-]
-
-for name in notifications {
- let notifyEvent = Notification.Name(name)
- DistributedNotificationCenter.default().post(name: notifyEvent, object: nil)
-}
diff --git a/stow/.config/matugen/scripts/macos-darkmode.sh b/stow/.config/matugen/scripts/macos-darkmode.sh
deleted file mode 100755
index fd9d44e..0000000
--- a/stow/.config/matugen/scripts/macos-darkmode.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = "dark" ]; then
- osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to true'
-elif [ "$1" = "light" ]; then
- osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to false'
-else
- echo "$0: [dark|light]"
-fi
diff --git a/stow/.config/matugen/templates/colors.css b/stow/.config/matugen/templates/colors.css
index 329229c..222a58c 100644
--- a/stow/.config/matugen/templates/colors.css
+++ b/stow/.config/matugen/templates/colors.css
@@ -4,8 +4,7 @@
*/
* {
- font-family: {{ font }}, {{monospace_font}};
- border-radius: {{ rounding }}px;
+ font-family: {{ custom.font }};
}
<* for name, value in colors *>
diff --git a/stow/.config/matugen/templates/discord.css b/stow/.config/matugen/templates/discord.css
deleted file mode 100644
index a592426..0000000
--- a/stow/.config/matugen/templates/discord.css
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * @name midnight
- * @description A dark, rounded discord theme.
- * @author refact0r
- * @version 1.6.2
- * @invite nz87hXyvcy
- * @website https://github.com/refact0r/midnight-discord
- * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css
- * @authorId 508863359777505290
- * @authorLink https://www.refact0r.dev
-*/
-
-/* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */
-
-@import url('https://refact0r.github.io/midnight-discord/build/midnight.css');
-
-/* customize things here */
-:root {
- /* font, change to 'gg sans' for default discord font*/
- --font: '{{ font }}';
- --code-font: '{{ monospace_font }}';
-
- /* top left corner text */
- --corner-text: 'Midnight';
-
- /* color of status indicators and window controls */
- --online-indicator: {{colors.inverse_primary.default.hex}}; /* change to #23a55a for default green */
- --dnd-indicator: {{colors.error.default.hex}}; /* change to #f13f43 for default red */
- --idle-indicator: {{colors.tertiary_container.default.hex}}; /* change to #f0b232 for default yellow */
- --streaming-indicator: {{colors.on_primary.default.hex}}; /* change to #593695 for default purple */
-
- /* accent colors */
- --accent-1: {{colors.tertiary.default.hex}}; /* links */
- --accent-2: {{colors.primary.default.hex}}; /* general unread/mention elements, some icons when active */
- --accent-3: {{colors.primary.default.hex}}; /* accent buttons */
- --accent-4: {{colors.surface_bright.default.hex}}; /* accent buttons when hovered */
- --accent-5: {{colors.primary_fixed_dim.default.hex}}; /* accent buttons when clicked */
- --mention: {{colors.surface.default.hex}}; /* mentions & mention messages */
- --mention-hover: {{colors.surface_bright.default.hex}}; /* mentions & mention messages when hovered */
-
- /* text colors */
- --text-0: {{colors.surface.default.hex}}; /* text on colored elements */
- --text-1: {{colors.on_surface.default.hex}}; /* other normally white text */
- --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */
- --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */
- --text-4: {{colors.on_surface_variant.default.hex}}; /* icon buttons and channels */
- --text-5: {{colors.outline.default.hex}}; /* muted channels/chats and timestamps */
-
- /* background and dark colors */
- --bg-1: {{colors.primary.default.hex}}; /* dark buttons when clicked */
- --bg-2: {{colors.surface_container_high.default.hex}}; /* dark buttons */
- --bg-3: {{colors.surface_container_low.default.hex}}; /* spacing, secondary elements */
- --bg-4: {{colors.surface.default.hex}}; /* main background color */
- --hover: {{colors.surface_bright.default.hex}}; /* channels and buttons when hovered */
- --active: {{colors.surface_bright.default.hex}}; /* channels and buttons when clicked or selected */
- --message-hover: {{colors.surface_bright.default.hex}}; /* messages when hovered */
-
- /* amount of spacing and padding */
- --spacing: 12px;
-
- /* animations */
- /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */
- --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */
- --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */
- --moon-spin-transition: 0.4s ease; /* moon icon spin */
- --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */
-
- /* corner roundness (border-radius) */
- --roundness-xl: {{ rounding }}px; /* roundness of big panel outer corners */
- --roundness-l: {{ rounding }}px; /* popout panels */
- --roundness-m: {{ rounding }}px; /* smaller panels, images, embeds */
- --roundness-s: {{ rounding }}px; /* members, settings inputs */
- --roundness-xs: {{ rounding }}px; /* channels, buttons */
- --roundness-xxs: {{ rounding }}px; /* searchbar, small elements */
-
- /* direct messages moon icon */
- /* change to block to show, none to hide */
- --discord-icon: block; /* discord icon */
- --moon-icon: show; /* moon icon */
- --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */
- --moon-icon-size: auto;
-
- /* filter uncolorable elements to fit theme */
- /* (just set to none, they're too much work to configure) */
- --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */
- --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */
- --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */
-}
-
-/* Setting font in :root doesn't work for some reason */
-body {
- font-family: '{{ font }}';
-}
-
-code {
- font-family: '{{monospace_font}}';
-}
-
-/* Selected chat/friend text */
-.selected_f5eb4b,
-.selected_f6f816 .link_d8bfb3 {
- color: var(--text-0) !important;
- background: var(--accent-3) !important;
-}
-
-.selected_f6f816 .link_d8bfb3 * {
- color: var(--text-0) !important;
- fill: var(--text-0) !important;
-}
diff --git a/stow/.config/matugen/templates/fuzzel.ini b/stow/.config/matugen/templates/fuzzel.ini
deleted file mode 100644
index d6c657f..0000000
--- a/stow/.config/matugen/templates/fuzzel.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-# Fuzzel Colors
-# Generated with Matugen
-
-[main]
-font=ComicShannsMono Nerd Font
-
-[colors]
-background={{colors.background.default.hex_stripped}}ff
-text={{colors.on_surface.default.hex_stripped}}ff
-prompt={{colors.secondary.default.hex_stripped}}ff
-placeholder={{colors.tertiary.default.hex_stripped}}ff
-input={{colors.primary.default.hex_stripped}}ff
-match={{colors.tertiary.default.hex_stripped}}ff
-selection={{colors.primary.default.hex_stripped}}ff
-selection-text={{colors.background.default.hex_stripped}}ff
-selection-match={{colors.on_primary.default.hex_stripped}}ff
-counter={{colors.secondary.default.hex_stripped}}ff
-border={{colors.primary.default.hex_stripped}}ff
diff --git a/stow/.config/matugen/templates/ghostty b/stow/.config/matugen/templates/ghostty
deleted file mode 100644
index 36c1e94..0000000
--- a/stow/.config/matugen/templates/ghostty
+++ /dev/null
@@ -1,2 +0,0 @@
-background = {{colors.background.default.hex}}
-font-family = {{monospace_font}}
diff --git a/stow/.config/matugen/templates/hyprland.conf b/stow/.config/matugen/templates/hyprland.conf
index 34d47c1..fa2cac5 100644
--- a/stow/.config/matugen/templates/hyprland.conf
+++ b/stow/.config/matugen/templates/hyprland.conf
@@ -5,7 +5,6 @@ general {
}
decoration {
- rounding = {{ rounding }}
shadow {
color = rgba({{colors.shadow.default.hex_stripped}}ee)
}
diff --git a/stow/.config/matugen/templates/hyprlock.conf b/stow/.config/matugen/templates/hyprlock.conf
deleted file mode 100644
index 8a17366..0000000
--- a/stow/.config/matugen/templates/hyprlock.conf
+++ /dev/null
@@ -1,71 +0,0 @@
-general {
- grace = 7
-}
-
-background {
- monitor =
- path = {{image}}
- color = {{colors.primary.default.rgba}}
- blur_passes = 1 # 0 disables blurring
- blur_size = 3
-# contrast = 0.8916
-# brightness = 0.8172
-}
-
-label {
- monitor =
- text = cmd[update:10000] date '+%I'
- font_family = {{font}}
- font_size = 256
- color = {{colors.primary.default.rgba}}
-
- position = 0, 256
- halign = center
- valign = center
-}
-
-label {
- monitor =
- text = cmd[update:10000] date '+%M'
- font_family = {{font}}
- font_size = 256
- color = {{colors.secondary.default.rgba}}
-
- position = 0, 0
- halign = center
- valign = center
-}
-
-shape {
- size = 500, 700
- position = 0, 100
- rounding = 50
- color = {{colors.background.default.rgba}}
- halign = center
- valign = center
-}
-
-input-field {
- monitor =
- font_family = Comic Neue
- size = 100, 100
- outline_thickness = 3
- dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
- dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
- dots_rounding = 0;
- dots_center = true
-
- outer_color = {{colors.primary_container.default.rgba}}
- inner_color = {{colors.background.default.rgba}}
- font_color = {{colors.on_primary_container.default.rgba}}
- fail_color = {{colors.error.default.rgba}}
-
- fade_on_empty = false
- placeholder_text = 🔒
- hide_input = false
- rounding = -1
-
- position = 0, 100
- halign = center
- valign = bottom
-}
diff --git a/stow/.config/matugen/templates/jankyborders.sh b/stow/.config/matugen/templates/jankyborders.sh
deleted file mode 100644
index ce6a348..0000000
--- a/stow/.config/matugen/templates/jankyborders.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-killall borders
-
-if [ "{{ rounding }}" = 0 ]; then
- exec borders active_color=0xFF{{colors.primary.default.hex_stripped}} inactive_color=0xFF{{colors.background.default.hex_stripped}} width=6.0 style=square
-else
- exec borders active_color=0xFF{{colors.primary.default.hex_stripped}} inactive_color=0xFF{{colors.background.default.hex_stripped}} width=6.0 style=round
-fi
diff --git a/stow/.config/matugen/templates/pywalfox.json b/stow/.config/matugen/templates/pywalfox.json
new file mode 100644
index 0000000..9ddf17f
--- /dev/null
+++ b/stow/.config/matugen/templates/pywalfox.json
@@ -0,0 +1,22 @@
+{
+ "wallpaper": "{{image}}",
+ "alpha": "100",
+ "colors": {
+ "color0": "{{colors.background.default.hex}}",
+ "color1": "",
+ "color2": "",
+ "color3": "",
+ "color4": "",
+ "color5": "",
+ "color6": "",
+ "color7": "",
+ "color8": "",
+ "color9": "",
+ "color10": "{{colors.primary.default.hex}}",
+ "color11": "",
+ "color12": "",
+ "color13": "{{colors.surface_bright.default.hex}}",
+ "color14": "",
+ "color15": "{{colors.on_surface.default.hex}}"
+ }
+}
diff --git a/stow/.config/matugen/templates/sketchybar.sh b/stow/.config/matugen/templates/sketchybar.sh
deleted file mode 100644
index c795bb3..0000000
--- a/stow/.config/matugen/templates/sketchybar.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-export PRIMARY_COLOUR="0xFF{{colors.primary.default.hex_stripped}}"
-export PRIMARY_CONTAINER_COLOUR="0xFF{{colors.primary_container.default.hex_stripped}}"
-export ON_PRIMARY_CONTAINER_COLOUR="0xFF{{colors.on_primary_container.default.hex_stripped}}"
-
-export SECONDARY_COLOUR="0xFF{{colors.secondary.default.hex_stripped}}"
-export SECONDARY_CONTAINER_COLOUR="0xFF{{colors.secondary_container.default.hex_stripped}}"
-export ON_SECONDARY_CONTAINER_COLOUR="0xFF{{colors.on_secondary_container.default.hex_stripped}}"
-
-export TERTIARY_COLOUR="0xFF{{colors.tertiary.default.hex_stripped}}"
-export TERTIARY_CONTAINER_COLOUR="0xFF{{colors.tertiary_container.default.hex_stripped}}"
-export ON_TERTIARY_CONTAINER_COLOUR="0xFF{{colors.on_tertiary_container.default.hex_stripped}}"
-
-export BACKGROUND_COLOUR=0xFF"{{colors.background.default.hex_stripped}}"
-export FONT="{{ font }}"
-export MONOSPACE_FONT="{{ monospace_font }}"
-export ROUNDING="{{ rounding }}"
diff --git a/stow/.config/matugen/templates/tmux.conf b/stow/.config/matugen/templates/tmux.conf
deleted file mode 100644
index ac1c289..0000000
--- a/stow/.config/matugen/templates/tmux.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-set -g status-style "bg=default"
-set -g status-fg "{{ colors.tertiary.default.hex }}"
-set -g status-left "#[bg={{ colors.primary_container.default.hex }},fg={{ colors.on_primary_container.default.hex }}]#{?client_prefix,#[reverse]#[bg={{ colors.on_secondary_container.default.hex }}]#[fg=black]#[noreverse]} #S "
-set -g status-right "#[fg={{ colors.secondary.default.hex }}]%d/%m #[bg={{ colors.primary_container.default.hex }},fg={{ colors.on_primary_container.default.hex }}] #H "
-
-# max allowed lenth for statuses to flow into
-set -g status-left-length 20
-set -g status-right-length 20
-
-# tab bar
-set -g window-status-format " #I #W "
-set -g window-status-current-format " #I #W "
-set -g window-status-current-style bg={{ colors.secondary_container.default.hex }},fg={{ colors.on_secondary_container.default.hex }},bold
diff --git a/stow/.config/matugen/templates/vicinae.toml b/stow/.config/matugen/templates/vicinae.toml
deleted file mode 100644
index b56dbfb..0000000
--- a/stow/.config/matugen/templates/vicinae.toml
+++ /dev/null
@@ -1,127 +0,0 @@
-# Vicinae Matugen Theme Template
-# Used LLM for initial generation, then modified to a satisfactory level
-
-[meta]
-name = "Matugen"
-description = "Material You theme generated by Matugen - {{mode}} variant"
-variant = "{{mode}}"
-
-# ============================================================================
-# Core Colors
-# ============================================================================
-
-[colors.core]
-accent = "{{colors.primary.default.hex}}"
-accent_foreground = "{{colors.on_primary.default.hex}}"
-background = "{{colors.surface.default.hex}}"
-foreground = "{{colors.on_surface.default.hex}}"
-secondary_background = "{{colors.surface_container.default.hex}}"
-border = "{{colors.outline_variant.default.hex}}"
-
-# ============================================================================
-# Window Borders
-# ============================================================================
-
-[colors.main_window]
-border = "{{colors.outline_variant.default.hex}}"
-
-[colors.settings_window]
-border = "{{colors.outline.default.hex}}"
-
-# ============================================================================
-# Accent Palette
-# ============================================================================
-
-[colors.accents]
-blue = "{{colors.primary.default.hex}}"
-green = "{{colors.tertiary.default.hex}}"
-magenta = "{{colors.secondary.default.hex}}"
-orange = { name = "{{colors.error.default.hex}}", lighter = 40 }
-red = "{{colors.error.default.hex}}"
-yellow = { name = "{{colors.tertiary.default.hex}}", lighter = 80 }
-cyan = { name = "{{colors.primary.default.hex}}", lighter = 50 }
-purple = "{{colors.secondary.default.hex}}"
-
-# ============================================================================
-# Text System
-# ============================================================================
-
-[colors.text]
-default = "{{colors.on_surface.default.hex}}"
-muted = "{{colors.on_surface_variant.default.hex}}"
-danger = "{{colors.error.default.hex}}"
-success = "{{colors.tertiary.default.hex}}"
-placeholder = { name = "{{colors.on_surface_variant.default.hex}}", opacity = 0.6 }
-
-[colors.text.selection]
-background = "{{colors.primary.default.hex}}"
-foreground = "{{colors.on_primary.default.hex}}"
-
-[colors.text.links]
-default = "{{colors.primary.default.hex}}"
-visited = { name = "{{colors.tertiary.default.hex}}", darker = 20 }
-
-# ============================================================================
-# Input Fields
-# ============================================================================
-
-[colors.input]
-border = "{{colors.outline.default.hex}}"
-border_focus = "{{colors.primary.default.hex}}"
-border_error = "{{colors.error.default.hex}}"
-
-# ============================================================================
-# Buttons
-# ============================================================================
-
-[colors.button.primary]
-background = "{{colors.surface_container_high.default.hex}}"
-foreground = "{{colors.on_surface.default.hex}}"
-
-[colors.button.primary.hover]
-background = "{{colors.surface_container_highest.default.hex}}"
-
-[colors.button.primary.focus]
-outline = "{{colors.primary.default.hex}}"
-
-# ============================================================================
-# Lists
-# ============================================================================
-
-[colors.list.item.hover]
-background = { name = "{{colors.primary_container.default.hex}}", opacity = 0.25 }
-foreground = "{{colors.on_surface.default.hex}}"
-
-[colors.list.item.selection]
-background = { name = "{{colors.primary_container.default.hex}}", opacity = 0.50 }
-foreground = "{{colors.on_primary_container.default.hex}}"
-secondary_background = "{{colors.primary_container.default.hex}}"
-secondary_foreground = "{{colors.on_primary_container.default.hex}}"
-
-# ============================================================================
-# Grid Items
-# ============================================================================
-
-[colors.grid.item]
-background = "{{colors.surface_container.default.hex}}"
-
-[colors.grid.item.hover]
-outline = { name = "{{colors.secondary.default.hex}}", opacity = 0.8 }
-
-[colors.grid.item.selection]
-outline = { name = "{{colors.primary.default.hex}}" }
-
-# ============================================================================
-# Scrollbars
-# ============================================================================
-
-[colors.scrollbars]
-background = { name = "{{colors.primary.default.hex}}", opacity = 0.2 }
-
-# ============================================================================
-# Loading States
-# ============================================================================
-
-[colors.loading]
-bar = "{{colors.primary.default.hex}}"
-spinner = "{{colors.primary.default.hex}}"
diff --git a/stow/.config/matugen/templates/walker.css b/stow/.config/matugen/templates/walker.css
index 02d62f8..039d8b4 100644
--- a/stow/.config/matugen/templates/walker.css
+++ b/stow/.config/matugen/templates/walker.css
@@ -8,8 +8,7 @@
@define-color primary {{colors.primary_container.default.hex}};
* {
- font-family: {{ font }};
- background-radius: {{ rounding }}px;
+ font-family: {{ custom.font }};
}
#window,
@@ -47,7 +46,7 @@ slider,
}
#box {
- border-radius: {{ rounding }}px;
+ border-radius: 20px;
background: @background;
padding: 32px;
border: 1px solid lighter(@background);
@@ -79,7 +78,7 @@ slider,
#password,
#input,
#typeahead {
- border-radius: {{ rounding }}px;
+ border-radius: 2px;
}
#input {
@@ -107,7 +106,7 @@ slider,
child {
padding: 8px;
- border-radius: {{ rounding }}px;
+ border-radius: 2px;
}
child:selected,
@@ -154,7 +153,7 @@ child:hover {
.aiItem {
padding: 10px;
- border-radius: {{ rounding }}px;
+ border-radius: 2px;
color: @foreground;
background: @background;
}
diff --git a/stow/.config/matugen/templates/zsh.sh b/stow/.config/matugen/templates/zsh.sh
deleted file mode 100644
index 0de3aa2..0000000
--- a/stow/.config/matugen/templates/zsh.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-PRIMARY_COLOUR="{#{{colors.primary.default.hex_stripped}}}"
-SECONDARY_COLOUR="{#{{colors.secondary.default.hex_stripped}}}"
diff --git a/stow/.config/npm/npmrc b/stow/.config/npm/npmrc
deleted file mode 100644
index b12cc98..0000000
--- a/stow/.config/npm/npmrc
+++ /dev/null
@@ -1,4 +0,0 @@
-prefix=${XDG_DATA_HOME}/npm
-cache=${XDG_CACHE_HOME}/npm
-init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
-logs-dir=${XDG_STATE_HOME}/npm/logs
diff --git a/stow/.config/nvim/lazy-lock.json b/stow/.config/nvim/lazy-lock.json
index 0e0d602..3b8a0ce 100644
--- a/stow/.config/nvim/lazy-lock.json
+++ b/stow/.config/nvim/lazy-lock.json
@@ -1,21 +1,28 @@
{
- "blink.cmp": { "branch": "main", "commit": "4b18c32adef2898f95cdef6192cbd5796c1a332d" },
+ "LuaSnip": { "branch": "master", "commit": "faf3c94a44508cec1b961406d36cc65113ff3b98" },
+ "bullets.vim": { "branch": "master", "commit": "8f3259e807c40b91d247f612823295ab99777a65" },
+ "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
+ "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
+ "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
+ "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
+ "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
- "fidget.nvim": { "branch": "main", "commit": "7fa433a83118a70fe24c1ce88d5f0bd3453c0970" },
- "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
- "gitsigns.nvim": { "branch": "main", "commit": "1ce96a464fdbc24208e24c117e2021794259005d" },
- "lazy-lsp.nvim": { "branch": "master", "commit": "aa96fb9f76f487522c5886d5a6752580b1cd0dd6" },
- "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
- "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
- "mini.icons": { "branch": "main", "commit": "efc85e42262cd0c9e1fdbf806c25cb0be6de115c" },
- "neogit": { "branch": "master", "commit": "73870229977fdd8747025820e15e98cfde787b9c" },
- "nvim-lspconfig": { "branch": "master", "commit": "66fd02ad1c7ea31616d3ca678fa04e6d0b360824" },
- "nvim-treesitter": { "branch": "main", "commit": "45a07f869b0cffba342276f2c77ba7c116d35db8" },
- "nvim-web-devicons": { "branch": "master", "commit": "746ffbb17975ebd6c40142362eee1b0249969c5c" },
- "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" },
- "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
- "render-markdown.nvim": { "branch": "main", "commit": "48b4175dbca8439d30c1f52231cbe5a712c8f9d9" },
- "telescope.nvim": { "branch": "master", "commit": "3333a52ff548ba0a68af6d8da1e54f9cd96e9179" },
- "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
- "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
+ "fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
+ "fzf-lua": { "branch": "main", "commit": "8adf950093af5361621cf52208d64995b1af78b5" },
+ "gitsigns.nvim": { "branch": "main", "commit": "8b729e489f1475615dc6c9737da917b3bc163605" },
+ "headlines.nvim": { "branch": "master", "commit": "bf17c96a836ea27c0a7a2650ba385a7783ed322e" },
+ "image.nvim": { "branch": "master", "commit": "4c51d6202628b3b51e368152c053c3fb5c5f76f2" },
+ "lazy-lsp.nvim": { "branch": "master", "commit": "701893d2d60c7eff894324748073f682065999a2" },
+ "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
+ "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" },
+ "mini.pick": { "branch": "main", "commit": "f02e64580a547346128799ba667dfc0e29737532" },
+ "neogit": { "branch": "master", "commit": "7cec58c9272d61da5d77fe5869e3956b8a91f1eb" },
+ "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
+ "nvim-lspconfig": { "branch": "master", "commit": "f610208989e9c03561f9f601db3133f6ae398fcd" },
+ "nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" },
+ "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
+ "oil.nvim": { "branch": "master", "commit": "685cdb4ffa74473d75a1b97451f8654ceeab0f4a" },
+ "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
+ "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
+ "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }
}
diff --git a/stow/.config/nvim/lua/nico/lazy/blink.lua b/stow/.config/nvim/lua/nico/lazy/blink.lua
deleted file mode 100644
index 29c79a9..0000000
--- a/stow/.config/nvim/lua/nico/lazy/blink.lua
+++ /dev/null
@@ -1,29 +0,0 @@
-return {
- 'saghen/blink.cmp',
- dependencies = { 'rafamadriz/friendly-snippets' },
-
- -- use a release tag to download pre-built binaries
- version = '1.*',
- -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
- -- build = 'cargo build --release',
- -- If you use nix, you can build from source using latest nightly rust with:
- -- build = 'nix run .#build-plugin',
-
- opts = {
- keymap = { preset = 'default' },
-
- appearance = {
- nerd_font_variant = 'mono'
- },
-
- -- (Default) Only show the documentation popup when manually triggered
- completion = { documentation = { auto_show = false } },
-
- sources = {
- default = { 'lsp', 'path', 'snippets', 'buffer' },
- },
-
- fuzzy = { implementation = "prefer_rust_with_warning" }
- },
- opts_extend = { "sources.default" }
-}
diff --git a/stow/.config/nvim/lua/nico/lazy/bullets.lua b/stow/.config/nvim/lua/nico/lazy/bullets.lua
new file mode 100644
index 0000000..476a27f
--- /dev/null
+++ b/stow/.config/nvim/lua/nico/lazy/bullets.lua
@@ -0,0 +1,3 @@
+return {
+ "bullets-vim/bullets.vim",
+}
diff --git a/stow/.config/nvim/lua/nico/lazy/headlines.lua b/stow/.config/nvim/lua/nico/lazy/headlines.lua
new file mode 100644
index 0000000..9a30354
--- /dev/null
+++ b/stow/.config/nvim/lua/nico/lazy/headlines.lua
@@ -0,0 +1,5 @@
+return {
+ "lukas-reineke/headlines.nvim",
+ dependencies = "nvim-treesitter/nvim-treesitter",
+ config = true
+}
diff --git a/stow/.config/nvim/lua/nico/lazy/image.lua b/stow/.config/nvim/lua/nico/lazy/image.lua
new file mode 100644
index 0000000..eb568a5
--- /dev/null
+++ b/stow/.config/nvim/lua/nico/lazy/image.lua
@@ -0,0 +1,43 @@
+return {
+ "3rd/image.nvim",
+ build = false,
+ config = function()
+ require("image").setup({
+ backend = "kitty",
+ processor = "magick_cli", -- or "magick_rock"
+ integrations = {
+ markdown = {
+ enabled = true,
+ clear_in_insert_mode = false,
+ download_remote_images = true,
+ only_render_image_at_cursor = false,
+ floating_windows = false, -- if true, images will be rendered in floating markdown windows
+ filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
+ },
+ neorg = {
+ enabled = true,
+ filetypes = { "norg" },
+ },
+ typst = {
+ enabled = true,
+ filetypes = { "typst" },
+ },
+ html = {
+ enabled = false,
+ },
+ css = {
+ enabled = false,
+ },
+ },
+ max_width = nil,
+ max_height = nil,
+ max_width_window_percentage = nil,
+ max_height_window_percentage = 50,
+ window_overlap_clear_enabled = true, -- toggles images when windows are overlapped
+ window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
+ editor_only_render_when_focused = true, -- auto show/hide images when the editor gains/looses focus
+ tmux_show_only_in_active_window = true, -- auto show/hide images in the correct Tmux window (needs visual-activity off)
+ hijack_file_patterns = { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.avif" }, -- render image files as images when opened
+ })
+ end
+}
diff --git a/stow/.config/nvim/lua/nico/lazy/lsp.lua b/stow/.config/nvim/lua/nico/lazy/lsp.lua
index 234326d..6947078 100644
--- a/stow/.config/nvim/lua/nico/lazy/lsp.lua
+++ b/stow/.config/nvim/lua/nico/lazy/lsp.lua
@@ -1,24 +1,102 @@
return {
- "neovim/nvim-lspconfig",
- dependencies = {
- "j-hui/fidget.nvim", -- lsp status
- "dundalek/lazy-lsp.nvim", -- load LSPs from nix
- },
- config = function()
- require("fidget").setup {}
- require("lazy-lsp").setup {
- use_vim_lsp_config = true
- }
+ "neovim/nvim-lspconfig",
+ dependencies = {
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "hrsh7th/cmp-cmdline",
+ "hrsh7th/nvim-cmp",
+ "L3MON4D3/LuaSnip",
+ "saadparwaiz1/cmp_luasnip",
+ "j-hui/fidget.nvim",
+ "dundalek/lazy-lsp.nvim",
+ },
- vim.lsp.enable({
- 'gopls', -- go
- 'pyright', -- python
- 'lua_ls', -- lua
- 'rust-analyzer', -- rust
- 'nil_ls', -- nix
- 'bashls', -- bash
- 'html', -- html
- 'cssls', -- css
- })
- end,
+ config = function()
+ local cmp = require('cmp')
+ local cmp_lsp = require("cmp_nvim_lsp")
+ local capabilities = vim.tbl_deep_extend(
+ "force",
+ {},
+ vim.lsp.protocol.make_client_capabilities(),
+ cmp_lsp.default_capabilities())
+
+ require("fidget").setup({})
+
+ require("lazy-lsp").setup {
+ -- By default all available servers are set up. Exclude unwanted or misbehaving servers.
+ excluded_servers = {
+ "ccls", "zk", "bufls", "ruff_lsp"
+ },
+ -- Alternatively specify preferred servers for a filetype (others will be ignored).
+ preferred_servers = {
+ markdown = {},
+ python = { "pyright" },
+ nix = { "nil_ls" },
+ rust = { "rust_analyzer" },
+ go = { "gopls" },
+ c = { "clangd" },
+ },
+ prefer_local = true, -- Prefer locally installed servers over nix-shell
+ -- Default config passed to all servers to specify on_attach callback and other options.
+ default_config = {
+ flags = {
+ debounce_text_changes = 150,
+ },
+ -- on_attach = on_attach,
+ -- capabilities = capabilities,
+ },
+ -- Override config for specific servers that will passed down to lspconfig setup.
+ -- Note that the default_config will be merged with this specific configuration so you don't need to specify everything twice.
+ configs = {
+ lua_ls = {
+ settings = {
+ Lua = {
+ diagnostics = {
+ -- Get the language server to recognize the `vim` global
+ globals = { "vim" },
+ },
+ },
+ },
+ },
+ },
+ }
+
+
+ local cmp_select = { behavior = cmp.SelectBehavior.Select }
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ [''] = cmp.mapping.select_prev_item(cmp_select),
+ [''] = cmp.mapping.select_next_item(cmp_select),
+ [''] = cmp.mapping.confirm({ select = true }),
+ [""] = cmp.mapping.complete(),
+ [''] = cmp.mapping.scroll_docs(-4),
+ [''] = cmp.mapping.scroll_docs(4),
+ }),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' }, -- For luasnip users.
+ }, {
+ { name = 'buffer' },
+ })
+ })
+
+ vim.diagnostic.config({
+ -- update_in_insert = true,
+ float = {
+ focusable = false,
+ style = "minimal",
+ border = "rounded",
+ source = "always",
+ header = "",
+ prefix = "",
+ },
+ })
+ end
}
diff --git a/stow/.config/nvim/lua/nico/lazy/neogit.lua b/stow/.config/nvim/lua/nico/lazy/neogit.lua
index 17944e2..49a5a7f 100644
--- a/stow/.config/nvim/lua/nico/lazy/neogit.lua
+++ b/stow/.config/nvim/lua/nico/lazy/neogit.lua
@@ -3,11 +3,15 @@ return {
dependencies = {
"nvim-lua/plenary.nvim", -- required
"sindrets/diffview.nvim", -- optional - Diff integration
+
+ -- Only one of these is needed.
"nvim-telescope/telescope.nvim", -- optional
+ "ibhagwan/fzf-lua", -- optional
+ "echasnovski/mini.pick", -- optional
},
- cmd = "Neogit",
- keys = {
- { "g", "Neogit", desc = "Show Neogit UI" }
- }
+ config = function(_, opts)
+ vim.keymap.set('n', 'g', 'Neogit')
+ require('neogit').setup(opts) -- this works idk how
+ end
}
diff --git a/stow/.config/nvim/lua/nico/lazy/render-markdown.lua b/stow/.config/nvim/lua/nico/lazy/render-markdown.lua
deleted file mode 100644
index 4a2769d..0000000
--- a/stow/.config/nvim/lua/nico/lazy/render-markdown.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-return {
- 'MeanderingProgrammer/render-markdown.nvim',
- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' }, -- if you use standalone mini plugins
- -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
- ---@module 'render-markdown'
- ---@type render.md.UserConfig
- opts = {},
-}
diff --git a/stow/.config/nvim/lua/nico/lazy/telescope.lua b/stow/.config/nvim/lua/nico/lazy/telescope.lua
index 72fdde6..fcbe2e3 100644
--- a/stow/.config/nvim/lua/nico/lazy/telescope.lua
+++ b/stow/.config/nvim/lua/nico/lazy/telescope.lua
@@ -1,6 +1,6 @@
return {
'nvim-telescope/telescope.nvim',
- tag = 'v0.2.1',
+ tag = '0.1.8',
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
require('telescope').setup({
@@ -18,6 +18,6 @@ return {
vim.keymap.set('n', 'ff', builtin.find_files, {})
vim.keymap.set('n', 'fg', builtin.git_files, {})
- vim.keymap.set('n', 'fs', builtin.live_grep, {})
+ vim.keymap.set('n', 'fs', builtin.grep_string, {})
end
}
diff --git a/stow/.config/nvim/lua/nico/lazy/treesitter.lua b/stow/.config/nvim/lua/nico/lazy/treesitter.lua
index 5be8b1b..c86b91c 100644
--- a/stow/.config/nvim/lua/nico/lazy/treesitter.lua
+++ b/stow/.config/nvim/lua/nico/lazy/treesitter.lua
@@ -1,4 +1,14 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
+ config = function ()
+ local configs = require("nvim-treesitter.configs")
+
+ configs.setup({
+ ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "elixir", "heex", "javascript", "html", "markdown", "go" },
+ sync_install = false,
+ highlight = { enable = true },
+ indent = { enable = true },
+ })
+ end
}
diff --git a/stow/.config/nvim/lua/nico/lazy/which-key.lua b/stow/.config/nvim/lua/nico/lazy/which-key.lua
deleted file mode 100644
index 9fadb97..0000000
--- a/stow/.config/nvim/lua/nico/lazy/which-key.lua
+++ /dev/null
@@ -1,18 +0,0 @@
-return {
- "folke/which-key.nvim",
- event = "VeryLazy",
- opts = {
- -- your configuration comes here
- -- or leave it empty to use the default settings
- -- refer to the configuration section below
- },
- keys = {
- {
- "?",
- function()
- require("which-key").show({ global = false })
- end,
- desc = "Buffer Local Keymaps (which-key)",
- },
- },
-}
diff --git a/stow/.config/nvim/lua/nico/opts.lua b/stow/.config/nvim/lua/nico/opts.lua
index 5708e44..665a425 100644
--- a/stow/.config/nvim/lua/nico/opts.lua
+++ b/stow/.config/nvim/lua/nico/opts.lua
@@ -1,5 +1,4 @@
vim.opt.termguicolors = true
-vim.o.winborder = 'rounded'
vim.opt.number = true
vim.opt.relativenumber = true
diff --git a/stow/.config/nvim/lua/nico/txt/enter.lua b/stow/.config/nvim/lua/nico/txt/enter.lua
new file mode 100644
index 0000000..f181d9c
--- /dev/null
+++ b/stow/.config/nvim/lua/nico/txt/enter.lua
@@ -0,0 +1,21 @@
+-- opts
+vim.opt.wrap = true
+vim.opt.linebreak = true
+vim.opt.textwidth = 80
+vim.opt.formatoptions:append("t")
+
+-- ai slop that gets the job done
+-- redo formatting when leaving the insert mode
+vim.api.nvim_create_augroup("FormatText", { clear = true })
+
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = { "markdown", "txt" },
+ callback = function()
+ vim.api.nvim_create_autocmd("InsertLeave", {
+ buffer = 0,
+ callback = function()
+ vim.cmd("normal! gggqG")
+ end,
+ })
+ end,
+})
diff --git a/stow/.config/nvim/lua/nico/txt/init.lua b/stow/.config/nvim/lua/nico/txt/init.lua
new file mode 100644
index 0000000..f83ccec
--- /dev/null
+++ b/stow/.config/nvim/lua/nico/txt/init.lua
@@ -0,0 +1,16 @@
+-- another slopination by ai
+vim.api.nvim_create_augroup("LoadLuaOnMarkdownOrTxt", { clear = true })
+vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, {
+ pattern = {"*.md", "*.txt"},
+ callback = function()
+ require("nico.txt.enter")
+ end
+})
+
+vim.api.nvim_create_autocmd("BufLeave", {
+ pattern = {"*.md", "*.txt"},
+ callback = function()
+ require("nico.txt.leave")
+ require("nico.opts")
+ end
+})
diff --git a/stow/.config/nvim/lua/nico/txt/leave.lua b/stow/.config/nvim/lua/nico/txt/leave.lua
new file mode 100644
index 0000000..e2bc41d
--- /dev/null
+++ b/stow/.config/nvim/lua/nico/txt/leave.lua
@@ -0,0 +1,10 @@
+-- opts
+-- neovim defaults
+vim.opt.wrap = true
+vim.opt.linebreak = false
+vim.opt.textwidth = 0
+vim.opt.formatoptions = "tcqj"
+
+-- ai slop that gets the job done
+-- disables redo formatting when leaving the insert mode
+vim.api.nvim_create_augroup("FormatText", { clear = true })
diff --git a/stow/.config/sketchybar/.gitignore b/stow/.config/sketchybar/.gitignore
deleted file mode 100644
index ea7df9d..0000000
--- a/stow/.config/sketchybar/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-colours.sh
diff --git a/stow/.config/sketchybar/plugins/aerospace.sh b/stow/.config/sketchybar/plugins/aerospace.sh
deleted file mode 100755
index d25758d..0000000
--- a/stow/.config/sketchybar/plugins/aerospace.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-# make sure it's executable with:
-# chmod +x ~/.config/sketchybar/plugins/aerospace.sh
-#
-SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
-source $SCRIPT_DIR/../colours.sh
-
-if [ "$1" = "$FOCUSED_WORKSPACE" ]; then
- # If workspace is focused
- sketchybar --set $NAME background.color=$PRIMARY_COLOUR label.color=$BACKGROUND_COLOUR
-else
- sketchybar --set $NAME background.color=$BACKGROUND_COLOUR label.color=$PRIMARY_COLOUR
-fi
diff --git a/stow/.config/sketchybar/plugins/clock.sh b/stow/.config/sketchybar/plugins/clock.sh
index 2d6dbe4..2716ee4 100755
--- a/stow/.config/sketchybar/plugins/clock.sh
+++ b/stow/.config/sketchybar/plugins/clock.sh
@@ -4,4 +4,12 @@
# the item invoking this script:
# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
-sketchybar --set "$NAME" label="$(date +'%a %d %b%l:%M %p')"
+HOUR=$(date +%l)
+
+if (( $HOUR >= 10 )); then
+ sketchybar --set "$NAME" label.padding_right=10
+else
+ sketchybar --set "$NAME" label.padding_right=20
+fi
+
+sketchybar --set "$NAME" label=" $(date +'%a %d %b') $(date +'%I:%M %p')"
diff --git a/stow/.config/sketchybar/plugins/input-method.sh b/stow/.config/sketchybar/plugins/input-method.sh
deleted file mode 100755
index 291ca22..0000000
--- a/stow/.config/sketchybar/plugins/input-method.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-# from: https://apple.stackexchange.com/questions/251666/how-to-get-current-input-language-of-the-input-source
-
-#!/usr/local/bin/bash
-# Checks current keyboard input source (aka language)
-
-#These are the strings that MacOS uses to identify the current input source
-ENGLISH="Australian"
-HIRIGANA="com.apple.inputmethod.Japanese"
-KATANA="com.apple.inputmethod.Japanese.Katakana"
-
-WESTERN_LANGUAGE=$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | grep 'KeyboardLayout Name' | sed -E 's/^.+ = \"?([^\"]+)\"?;$/\1/')
-
-# If the current language is not western one, then check a different variable
-EASTERN_LANGUAGE=$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | grep -w 'Input Mode' | head -1 | sed -E 's/^.+ = \"?([^\"]+)\"?;$/\1/')
-
-if [ "$WESTERN_LANGUAGE" = "$ENGLISH" ]; then
- LABEL="English"
- ICON="🇬🇧"
-elif [ "$EASTERN_LANGUAGE" = "$HIRIGANA" ]; then
- LABEL="Japanese"
- ICON="🇯🇵"
-elif [ "$EASTERN_LANGUAGE" = "$KATANA" ]; then
- LABEL="Katakana"
- ICON="🈴"
-fi
-
-sketchybar --set "$NAME" label="$LABEL" icon=""
diff --git a/stow/.config/sketchybar/plugins/music.sh b/stow/.config/sketchybar/plugins/music.sh
deleted file mode 100755
index 664b84f..0000000
--- a/stow/.config/sketchybar/plugins/music.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# sketchybar doesn't like it when the line doesn't end with a carriage return
-
-if pgrep "Music"; then
- SONG="$(osascript -e 'tell application "Music" to if player state is playing then artist of current track & " - " & name of current track')"
-fi
-
-if [[ "$(echo $SONG | wc -w | sed 's/ //g')" != "0" ]]; then
- sketchybar --set "$NAME" label="${SONG}" drawing=true
-else
- sketchybar --set "$NAME" label="" drawing=false
-fi
diff --git a/stow/.config/sketchybar/plugins/space.sh b/stow/.config/sketchybar/plugins/space.sh
index 7614cf3..b9bf8f6 100755
--- a/stow/.config/sketchybar/plugins/space.sh
+++ b/stow/.config/sketchybar/plugins/space.sh
@@ -1,10 +1,13 @@
-#!/usr/bin/env bash
+#!/usr/local/bin/bash
-SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
-source $SCRIPT_DIR/../colours.sh
+# The $SELECTED variable is available for space components and indicates if
+# the space invoking this script (with name: $NAME) is currently selected:
+# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
+
+#sketchybar --set "$NAME" background.drawing="$SELECTED"
if [ $SELECTED = 'true' ]; then
- sketchybar --set $NAME background.color=$PRIMARY_CONTAINER_COLOUR label.color=$ON_PRIMARY_CONTAINER_COLOUR label.padding_left=15 label.padding_right=15
+ sketchybar --set "$NAME" background.color=0xfff48fb1
else
- sketchybar --set $NAME background.color=$BACKGROUND_COLOUR label.color=$PRIMARY_COLOUR label.padding_left=7 label.padding_right=7
+ sketchybar --set "$NAME" background.color=0xffffffff
fi
diff --git a/stow/.config/sketchybar/sketchybarrc b/stow/.config/sketchybar/sketchybarrc
index 5f7d706..2b1366e 100755
--- a/stow/.config/sketchybar/sketchybarrc
+++ b/stow/.config/sketchybar/sketchybarrc
@@ -1,124 +1,132 @@
# vim: set filetype=sh :
-PLUGIN_DIR="$HOME/dots/stow/.config/sketchybar/plugins"
-source $PLUGIN_DIR/../colours.sh # bar colours
+# This is a demo config to showcase some of the most important commands.
+# It is meant to be changed and configured, as it is intentionally kept sparse.
+# For a (much) more advanced configuration example see my dotfiles:
+# https://github.com/FelixKratz/dotfiles
-sketchybar --bar \
- position=top \
- height=42 \
- blur_radius=0 \
- color=0x00000000 \
- padding_right=15 \
- padding_left=15 \
- y_offset=-2 \
- corner_radius=0 \
+PLUGIN_DIR="$HOME/.config/sketchybar/plugins"
+
+##### Bar Appearance #####
+# Configuring the general appearance of the bar.
+# These are only some of the options available. For all options see:
+# https://felixkratz.github.io/SketchyBar/config/bar
+# If you are looking for other colors, see the color picker:
+# https://felixkratz.github.io/SketchyBar/config/tricks#color-picker
+
+sketchybar --bar position=top \
+ height=32 \
+ blur_radius=30 \
+ color=0x00000000 \
+ padding_right=10 \
+ padding_left=10 \
+ y_offset=3
default=(
- icon.font="$MONOSPACE_FONT:Regular:16.0"
- label.font="$FONT:Bold:12.0"
+ icon.font="ComicShannsMono Nerd Font:Regular:11.0"
+ label.font="ComicShannsMono Nerd Font:Bold:11.0"
+
+ padding_left=1
+ padding_right=1
+ icon.color=$PRIMARY_COLOUR
label.color=$PRIMARY_COLOUR
- icon.color=$SECONDARY_COLOUR
- background.color=$BACKGROUND_COLOUR
- background.corner_radius=$ROUNDING
- background.border_color=0x00000000
- background.border_width=3
-
- background.height=32
- background.padding_right=0
- background.padding_left=0
-
icon.padding_left=10
icon.padding_right=1
- label.padding_left=7
- label.padding_right=7
+ label.padding_left=5
+ label.padding_right=10
+
+ background.padding_left=2
+ background.padding_right=2
+ background.corner_radius=10
)
+
sketchybar --default "${default[@]}"
-#
-# Left Items
-#
+##### Adding Mission Control Space Indicators #####
+# Let's add some mission control spaces:
+# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
+# to indicate active and available mission control spaces.
-# Yabai Workspace Indictators
-#
-SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9")
+SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10")
for i in "${!SPACE_ICONS[@]}"
do
sid="$(($i+1))"
space=(
+ icon.color=$PRIMARY_COLOUR
+ background.color=$BACKGROUND_COLOUR
+
space="$sid"
icon="${SPACE_ICONS[i]}"
- icon.drawing=false \
- background.height=29 \
- background.border_width=0 \
- background.padding_right=0 \
- background.padding_left=0 \
- label.color=$PRIMARY_COLOUR \
- label="$sid" \
+ icon.padding_left=12
+ icon.padding_right=12
+ background.height=32
+ background.padding_left=0
+ background.padding_right=0
+ label.drawing=off
script="$PLUGIN_DIR/space.sh"
click_script="yabai -m space --focus $sid"
)
sketchybar --add space space."$sid" left --set space."$sid" "${space[@]}"
done
-# put all spaces into a bracket so they share a background
-# fixes an issue with rounding creating gaps between modules
-#
-# yes im doing this in a stupid way and its hard coded but like :3
-sketchybar --add bracket spaces space.1 space.2 space.3 space.4 space.5 space.6 space.7 space.8 space.9 \
- --set spaces \
- background.color=$BACKGROUND_COLOUR
+##### Adding Left Items #####
+# We add some regular items to the left side of the bar, where
+# only the properties deviating from the current defaults need to be set
+#sketchybar --add item chevron left \
+# --set chevron icon= label.drawing=off \
+# --add item front_app left \
+# --set front_app icon.drawing=off script="$PLUGIN_DIR/front_app.sh" \
+# --subscribe front_app front_app_switched
-# Focused window title
sketchybar --add item front_app left \
- --set front_app icon=" " script="$PLUGIN_DIR/front_app.sh" \
- --subscribe front_app front_app_switched
+ --set front_app icon.drawing=off \
+ label.color=$PRIMARY_COLOUR \
+ padding_left=10 \
+ label.padding_left=10 \
+ background.color=$BACKGROUND_COLOUR \
+ background.height=32 \
+ script="$PLUGIN_DIR/front_app.sh" \
+ --subscribe front_app front_app_switched \
+
+
-# Currently playing music status (only works for Music.app)
-sketchybar --add item music left \
- --set music icon=" " update_freq=10 \
- script="$PLUGIN_DIR/music.sh" \
- click_script="osascript -e 'tell application \"Music\" to playpause'" \
- scroll_texts=1 \
- label.max_chars=50 \
- label.scroll_duration=500 \
- background.color=$PRIMARY_COLOUR \
- icon.color=$BACKGROUND_COLOUR \
- label.color=$BACKGROUND_COLOUR \
- drawing=false
+##### Adding Right Items #####
-#
-# Right Items
-#
+sketchybar --add item clock right \
+ --set clock \
+ update_freq=10 \
+ icon.color=$PRIMARY_COLOUR \
+ label.color=$PRIMARY_COLOUR \
+ background.color=$BACKGROUND_COLOUR \
+ background.height=32 \
+ label.padding_right=20 \
+ script="$PLUGIN_DIR/clock.sh"
-# Clock
-sketchybar --add item clock right \
- --set clock icon=" " \
- update_freq=10 \
- label.padding_right=10 \
- script="$PLUGIN_DIR/clock.sh"
+sketchybar --add item battery right \
+ --set battery update_freq=10 \
+ script="$PLUGIN_DIR/battery.sh" \
+ icon.color=$SECONDARY_COLOUR \
+ label.color=$SECONDARY_COLOUR \
+ background.color=$BACKGROUND_COLOUR \
+ background.height=32 \
-# Input Method
-sketchybar --add item input-method right \
- --set input-method icon="" \
- update_freq=1 \
- script="$PLUGIN_DIR/input-method.sh"
+sketchybar --add item backlight right \
+ --set backlight icon="" \
+ icon.color=$TERTIARY_COLOUR \
+ label.color=$TERTIARY_COLOUR \
+ background.color=$BACKGROUND_COLOUR \
+ background.height=32 \
+ script="$PLUGIN_DIR/backlight.sh" \
+ --subscribe backlight brightness_change \
-# Battery
-sketchybar --add item battery right \
- --set battery update_freq=10 \
- script="$PLUGIN_DIR/battery.sh" \
-
-# Backlight
-sketchybar --add item backlight right \
- --set backlight icon="" \
- script="$PLUGIN_DIR/backlight.sh" \
- --subscribe backlight brightness_change \
-
-# Volume
-sketchybar --add item audio right \
- --set audio \
- script="$PLUGIN_DIR/volume.sh" \
- --subscribe audio volume_change \
+sketchybar --add item audio right \
+ --set audio icon = "" \
+ icon.color=$TERTIARY_COLOUR \
+ label.color=$TERTIARY_COLOUR \
+ background.color=$BACKGROUND_COLOUR \
+ background.height=32 \
+ script="$PLUGIN_DIR/volume.sh" \
+ --subscribe audio volume_change \
##### Force all scripts to run the first time (never do this in a script) #####
sketchybar --update
diff --git a/stow/.config/skhd/skhdrc b/stow/.config/skhd/skhdrc
index d6f2635..354f1a5 100644
--- a/stow/.config/skhd/skhdrc
+++ b/stow/.config/skhd/skhdrc
@@ -1,56 +1,3 @@
-#
-# Applications
-#
-
-alt + shift - b : /Applications/Zen.app/Contents/MacOS/zen --new-window # new browser window
-alt - s : screencapture -i -c # screenshot
-alt + shift - f : open ~ # new finder window
-
-#
-# Yabai
-#
-
-# Workspaces
-alt - 1 : yabai -m space --focus 1
-alt - 2 : yabai -m space --focus 2
-alt - 3 : yabai -m space --focus 3
-alt - 4 : yabai -m space --focus 4
-alt - 5 : yabai -m space --focus 5
-alt - 6 : yabai -m space --focus 6
-alt - 7 : yabai -m space --focus 7
-alt - 8 : yabai -m space --focus 8
-alt - 9 : yabai -m space --focus 9
-
-alt + shift - 1 : yabai -m window --space 1 --focus
-alt + shift - 2 : yabai -m window --space 2 --focus
-alt + shift - 3 : yabai -m window --space 3 --focus
-alt + shift - 4 : yabai -m window --space 4 --focus
-alt + shift - 5 : yabai -m window --space 5 --focus
-alt + shift - 6 : yabai -m window --space 6 --focus
-alt + shift - 7 : yabai -m window --space 7 --focus
-alt + shift - 8 : yabai -m window --space 8 --focus
-alt + shift - 9 : yabai -m window --space 9 --focus
-
-# Focus next space by mission-control index if one exists, otherwise focus the first space
-alt - home : yabai -m space --focus next || yabai -m space --focus first
-# Focus previous space by mission-control index if one exists, otherwise focus the last space
-alt - end : yabai -m space --focus prev || yabai -m space --focus last
-
-# Temporarily show menu bar
-alt - m : sh -c 'if [ -f /opt/homebrew/bin/sketchybar ]; then yabai -m config menubar_opacity 1.0 && sleep 5 && yabai -m config menubar_opacity 0.0; fi'
-
-# Layout/Focus
-alt - c : yabai -m space --rotate 90
-alt - f : yabai -m window --toggle zoom-fullscreen
-alt - space : yabai -m window --toggle float
-alt - y : yabai -m space --balance
-
-alt - h : yabai -m window --focus west
-alt - j : yabai -m window --focus south
-alt - k : yabai -m window --focus north
-alt - l : yabai -m window --focus east
-
-alt + shift - h : yabai -m window --swap west
-alt + shift - j : yabai -m window --swap south
-alt + shift - k : yabai -m window --swap north
-alt + shift - l : yabai -m window --swap east
+alt + shift - q : open -n /Applications/Ghostty.app
+alt + shift - b : /opt/homebrew/bin/firefox --new-window
+alt + shift - f : open ~
diff --git a/stow/.config/tmux/tmux.conf b/stow/.config/tmux/tmux.conf
index 7722939..e8290de 100644
--- a/stow/.config/tmux/tmux.conf
+++ b/stow/.config/tmux/tmux.conf
@@ -1,7 +1,3 @@
-#
-# keybindings
-#
-
# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
@@ -13,57 +9,33 @@ bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
-bind r source-file ~/.config/tmux/tmux.conf
-
# start ajacent terminals with same path
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
-#
-# options
-#
-
# set variables
set -g mouse on
set -g history-limit 100000
-# start panes and windows at index 1 instead of 0
set -g base-index 1
setw -g pane-base-index 1
-set-option -g renumber-windows on # if win 2 get deleted, win 3 gets renamed to win 2
+set -gq allow-passthrough on
set -g visual-activity off
-set -g set-clipboard on
-set -g focus-events on # lets programs know if they loose focus
-set -g status-keys emacs # emacs bindings in tmux prompt ( prefix + :)
-set -g default-terminal "screen-256color" # upgrade TERM variable to have more colours
-set -g display-time 4000 # display tmux messages for 4s
-
-#
-# status bar
-#
-
-set -g status-style "bg=default"
-set -g status-fg "white"
-set -g status-left "#[bg=purple,fg=black]#{?client_prefix,#[reverse]#[bg=yellow]#[noreverse]} #S "
-set -g status-right "%d/%m #[bg=purple,fg=black] #H "
-
-# max allowed lenth for statuses to flow into
-set -g status-left-length 20
-set -g status-right-length 20
-
-# tab bar
-set -g window-status-format " #I #W "
-set -g window-status-current-format " #I #W "
-set -g window-status-current-style bg=black,fg=blue,bold
# fix undercurls: https://github.com/folke/tokyonight.nvim#fix-undercurls-in-tmux
set -g default-terminal "${TERM}"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
-set -gq allow-passthrough on
-# matugen
-if "test -f ~/.cache/matugen/tmux.conf" \
- "source-file ~/.cache/matugen/tmux.conf"
+# plugins
+# got from: https://github.com/tmux-plugins/tpm/blob/master/docs/automatic_tpm_installation.md, changed to a more sensible install dir
+if "test ! -d ~/.local/share/tmux/plugins/tpm" \
+ "run 'git clone https://github.com/tmux-plugins/tpm ~/.local/share/tmux/plugins/tpm && ~/.local/share/tmux/plugins/tpm/bin/install_plugins'"
+
+set -g @plugin 'tmux-plugins/tpm'
+set -g @plugin 'tmux-plugins/tmux-sensible'
+set -g @plugin "janoamaral/tokyo-night-tmux"
+
+run '~/.local/share/tmux/plugins/tpm/tpm'
diff --git a/stow/.config/vicinae/vicinae.json b/stow/.config/vicinae/vicinae.json
deleted file mode 100644
index 9ac9f69..0000000
--- a/stow/.config/vicinae/vicinae.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "closeOnFocusLoss": false,
- "considerPreedit": false,
- "faviconService": "twenty",
- "font": {
- "normal": "ComicShannsMono Nerd Font",
- "size": 10.5
- },
- "keybinding": "emacs",
- "keybinds": {
- },
- "popToRootOnClose": true,
- "rootSearch": {
- "searchFiles": false
- },
- "theme": {
- "iconTheme": "Default",
- "name": "matugen"
- },
- "window": {
- "csd": true,
- "opacity": 0.98,
- "rounding": 10
- }
-}
diff --git a/stow/.config/walker/config.toml b/stow/.config/walker/config.toml
index 01bbe34..303a415 100644
--- a/stow/.config/walker/config.toml
+++ b/stow/.config/walker/config.toml
@@ -266,7 +266,7 @@ Terminal = false
[[builtins.custom_commands.commands]]
name = "Logout"
-cmd = "hyprctl dispatch exit"
+cmd = "uwsm stop"
Terminal = false
# hypr
diff --git a/stow/.config/waybar/config.jsonc b/stow/.config/waybar/config.jsonc
index 0e4c2fe..d5bcc5e 100644
--- a/stow/.config/waybar/config.jsonc
+++ b/stow/.config/waybar/config.jsonc
@@ -1,23 +1,45 @@
+// MIT License
+// Copyright (c) 2024 LightCrimson
+// https://github.com/yurihikari/garuda-hyprdots
+//
+// 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.
+
{
"layer": "top", // Waybar at top layer
- "position": "right", // Waybar position (top|bottom|left|right)
- //"height": 40,
- "margin": "5 5 5 5",
- "width": 50,
+ "position": "top", // Waybar position (top|bottom|left|right)
+ "height": 40,
+ "margin": "0 0 0 0",
+ //"width": 1350, // Waybar width
// Choose the order of the modules idle_inhibitor
"modules-left": [
"hyprland/workspaces",
"niri/workspaces",
"tray",
- "custom/media",
- "privacy"
+ "custom/media"
],
"modules-center": [],
"modules-right": [
- "network",
"wireplumber",
"backlight",
"battery",
+ "network",
+ "privacy",
"clock",
"custom/swaync"
],
@@ -31,45 +53,33 @@
// "format": "< %g >",
// "format_focused" : "< %g ● >",
"format-icons": {
- "1": "一",
- "2": "二",
- "3": "三",
- "4": "四",
- "5": "五",
- "6": "六",
- "7": "七",
- "8": "八",
- "9": "九",
- "10": "十"
+ "1": "1",
+ "2": "2",
+ "3": "3",
+ "4": "4",
+ "5": "5",
+ "6": "6",
+ "7": "7",
+ "8": "8",
+ "9": "9",
+ "10": "10"
}
},
"niri/workspaces": {
"disable-scroll": true,
"all-outputs": true,
- "format": "{icon}",
- "format-icons": {
- "1": "一",
- "2": "二",
- "3": "三",
- "4": "四",
- "5": "五",
- "6": "六",
- "7": "七",
- "8": "八",
- "9": "九",
- "10": "十"
- }
+ "format": "{icon}"
+ // "format": "< %g >",
+ // "format_focused" : "< %g ● >",
},
"custom/media": {
- "rotate": 270,
- "format": " {}",
+// "format": "{format}",
"max-length": 40,
"escape": true,
- "exec": "playerctl metadata title -F",
- "on-click": "playerctl play-pause"
+ "exec": "playerctl metadata title -F"
},
"tray": {
- "icon-size": 22,
+ "icon-size": 14,
"spacing": 5
},
"clock": {
@@ -95,11 +105,9 @@
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down"
},
- "format": " \n{:%I\n%M}", //12 hour format
- //"format": " {:%a %d %b %I:%M %p}", //12 hour format
+ "format": " {:%a %d %b %I:%M %p}", //12 hour format
// "format": " {:%d %m %Y %H:%M}", //24 hour format
- "format-alt": "\n{:%d\n%m\n%y}",
- //"format-alt": " {:%d/%m/%Y %H:%M:%S}",
+ "format-alt": " {:%d/%m/%Y %H:%M:%S}",
// //"timezones": [ "Kolkata" ],
// //"max-length": 200
"interval": 1
@@ -110,29 +118,29 @@
"warning": 30,
"critical": 15
},
- "format": "{icon}\n{capacity}",
+ "format": "{icon} {capacity: >3}%",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
- "format-icons": ["", "", "", "", "", "", "", "", "", ""]
+ "format-icons": ["", "", "", "", ""]
//"format-icons": ["", "", "", "", "", "", "", "", "", ""]
},
"backlight": {
// "device": "acpi_video1",
- "format": "{icon}\n{percent}",
+ "format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"network": {
// "interface": "wlp2s0", // (Optional) To force the use of this interface
- "format": "⚠",
+ "format": "⚠ Disabled",
//"format-wifi": " {essid}",
- "format-wifi": " ",
+ "format-wifi": " Connected",
// "format-ethernet": " {ifname}: {ipaddr}/{cidr}",
- "format-ethernet": " ",
- "format-disconnected": "⚠",
+ "format-ethernet": " Wired",
+ "format-disconnected": "⚠ Disconnected",
"on-click": "ghostty --fullscreen=true -e 'sleep 0.05; nmtui'"
},
"wireplumber": {
- "format": "{icon}\n{volume}",
+ "format": "{icon} {volume}%",
"format-muted": "",
"on-click": "helvum",
"format-icons": ["", "", ""]
@@ -159,7 +167,7 @@
},
"privacy": {
"icon-spacing": 4,
- "icon-size": 24,
+ "icon-size": 18,
"transition-duration": 250,
"modules": [
{
@@ -167,6 +175,11 @@
"tooltip": true,
"tooltip-icon-size": 24
},
+// {
+// "type": "audio-out",
+// "tooltip": true,
+// "tooltip-icon-size": 24
+// },
{
"type": "audio-in",
"tooltip": true,
diff --git a/stow/.config/waybar/style.css b/stow/.config/waybar/style.css
index aa191de..2c5700e 100644
--- a/stow/.config/waybar/style.css
+++ b/stow/.config/waybar/style.css
@@ -1,174 +1,289 @@
@import "colors.css";
* {
- font-size: 20px;
- transition-duration: 0.5s;
/* `otf-font-awesome` is required to be installed for icons */
- /* font-family: ComicShannsMono Nerd Font, FontAwesome, Roboto, Helvetica, Arial, sans-serif;*/
- /* border-radius: 10px;*/
+/* font-family: ComicShannsMono Nerd Font, FontAwesome, Roboto, Helvetica, Arial, sans-serif;*/
+ font-size: 13px;
+ border-radius: 10px;
+ transition-duration: 0.5s;
+}
+
+.module {
+ margin-left: 5px;
+ margin-right: 5px;
+ margin-top: 10px;
}
window#waybar {
color: @primary;
background-color: transparent;
+ transition-property: background-color;
+ transition-duration: .5s;
}
-.module,#privacy-item {
- margin-top: 5px;
- margin-bottom: 5px;
- padding: 10px 0px;
-}
-
-#privacy-item,
-#clock,
-#temperature,
-#network,
-#pulseaudio,
-#custom-media,
-#tray,
-#mode,
-#idle_inhibitor,
-#privacy-item,
-#mpd,
-#workspaces {
- color: @primary;
- background-color: @background;
-}
-
-#cpu,
-#memory,
-#disk,
-#battery,
-#backlight,
-#wireplumber {
- color: @secondary;
- background-color: @background;
-}
-
-#network,
-#custom-media {
- color: @tertiary;
- background-color: @background;
-}
-
-#network.disconnected,
-#wireplumber.muted {
- color: @error;
- background-color: @error_container;
+window#waybar.hidden {
+ opacity: 0.2;
}
/*
- * hover variants
- */
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
-#privacy-item:hover,
-#clock:hover,
-#temperature:hover,
-#network:hover,
-#pulseaudio:hover,
-#custom-media:hover,
-#tray:hover,
-#mode:hover,
-#idle_inhibitor:hover,
-#privacy-item:hover,
-#mpd:hover,
-#workspaces:hover {
- color: @on_primary_container;
- background-color: @primary_container;
+button {
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
}
-#cpu:hover,
-#memory:hover,
-#disk:hover,
-#battery:hover,
-#backlight:hover,
-#wireplumber:hover {
- color: @on_secondary_container;
- background-color: @secondary_container;
-}
-
-#network:hover,
-#custom-media:hover {
- color: @on_tertiary_container;
- background-color: @tertiary_container;
-}
-
-#network.disconnected:hover,
-#wireplumber.muted:hover {
- color: @on_error_container;
- background-color: @error_container;
-}
-
-/*
- * module variations
- */
-
-#tray > .needs-attention {
- -gtk-icon-effect: highlight;
- background-color: #eb4d4b;
-}
-
-#clock {
- border-bottom-left-radius: 0px;
- border-bottom-right-radius: 0px;
- margin-bottom: 0px;
-}
-
-#custom-swaync {
- border-top-left-radius: 0px;
- border-top-right-radius: 0px;
- margin-top: 0px;
- margin-bottom: 0px;
-
- color: @background;
- background-color: @primary;
-}
-
-#custom-swaync:hover {
- color: @primary;
- background-color: @background;
-}
-
-
-#wireplumber {
- margin-bottom: 0px;
- border-bottom-left-radius: 0px;
- border-bottom-right-radius: 0px;
-}
-
-#backlight {
- margin-top: 0px;
- margin-bottom: 0px;
- border-radius: 0px;
-}
-
-#battery {
- margin-top: 0px;
- border-top-left-radius: 0px;
- border-top-right-radius: 0px;
-}
-
-#battery.charging, #battery.plugged {
- color: #26A65B;
-}
-
-/* workspace indicator styles */
#workspaces {
- margin-top: 0px;
- padding-top: 0px;
- padding-bottom: 0px;
+ background-color: @background;
+ color: @primary;
+ border-radius: 10px;
}
#workspaces button {
- color: @primary;
+ color: @primary;
+ padding: 0 5px;
+ border-radius: inherit;
}
-#workspaces button.active {
- color: @on_primary_container;
- background-color: @primary_container;
+#workspaces button:hover {
+ color: @on_primary;
+ background: @on_primary_container;
}
#workspaces button.urgent {
color: @error;
background-color: @error_container;
}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#power-profiles-daemon,
+#mpd {
+ padding: 0 10px;
+ background-color: @background;
+ color: @primary;
+}
+
+#window,
+#workspaces {
+}
+
+#clock {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
+ margin-right: 0px;
+
+ border-right: none;
+
+ background-color: @background;
+ color: @primary;
+}
+
+#custom-swaync {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ margin-left: 0px;
+
+ border-left: none;
+
+ background-color: @primary;
+ color: @background;
+ padding: 10px;
+}
+
+#battery {
+ background-color: @background;
+ color: @secondary;
+}
+
+#battery.charging, #battery.plugged {
+ color: #ffffff;
+ background-color: #26A65B;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+/* Using steps() instead of linear as a timing function to limit cpu usage */
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: #ffffff;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#cpu {
+ background-color: @primary;
+ color: #000000;
+}
+
+#memory {
+ background-color: @background;
+ color: @secondary;
+}
+
+#disk {
+ background-color: @background;
+ color: @tertiary;
+}
+
+#backlight {
+ background-color: @background;
+ color: @tertiary;
+}
+
+#network {
+ background-color: @background;
+ color: @secondary;
+}
+
+#network.disconnected {
+ background-color: @background;
+ color: @error;
+}
+
+#wireplumber {
+ background-color: @background;
+ color: @tertiary;
+/* color: @primary;*/
+}
+
+#wireplumber.muted {
+ background-color: @background;
+ color: @error;
+}
+
+#custom-media {
+ background-color: @background;
+ color: @tertiary;
+ min-width: 100px;
+}
+
+#tray {
+ background-color: @background;
+ color: @primary;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+#privacy {
+ padding: 0;
+}
+
+#privacy-item {
+ padding: 0 5px;
+ color: @primary;
+}
+
+
+/*
+ * hover variants
+ */
+
+#clock:hover {
+ background-color: @primary;
+ color: @background;
+}
+
+#custom-swaync:hover {
+ background-color: @background;
+ color: @primary;
+}
+
+#battery:hover {
+ background-color: @secondary;
+ color: @background;
+}
+
+#cpu:hover {
+ background-color: @primary;
+ color: @background;
+}
+
+#memory:hover {
+ background-color: @secondary;
+ color: @background;
+}
+
+#disk:hover {
+ background-color: @background;
+ color: @tertiary;
+}
+
+#backlight:hover {
+ background-color: @tertiary;
+ color: @background;
+}
+
+#network:hover {
+ background-color: @secondary;
+ color: @background;
+}
+
+#network.disconnected:hover {
+ background-color: @error;
+ color: @background;
+}
+
+#wireplumber:hover {
+ background-color: @tertiary;
+ color: @background;
+}
+
+#wireplumber.muted:hover {
+ background-color: @error;
+ color: @background;
+}
+
+#custom-media:hover {
+ background-color: @tertiary;
+ color: @background;
+}
+
+#tray:hover {
+ background-color: @primary;
+ color: @background;
+}
+
+#privacy:hover {
+ padding: 0;
+}
+
+#privacy-item:hover {
+ background-color: @primary;
+ color: @background;
+}
diff --git a/stow/.config/yabai/toggle-tiling.sh b/stow/.config/yabai/toggle-tiling.sh
deleted file mode 100755
index 5ef3618..0000000
--- a/stow/.config/yabai/toggle-tiling.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-disableTiling () {
- defaults write com.apple.dock orientation bottom
- defaults write com.apple.dock autohide -bool FALSE
-
- killall Finder Dock sketchybar borders
- yabai -m config menubar_opacity 1.0
-
- SPACES=("1" "2" "3" "4" "5" "6" "7" "8" "9")
- for i in "${!SPACES[@]}"; do
- yabai -m space $i --layout float
- done
-
- osascript -e 'tell application "System Events"
- tell dock preferences
- set properties to {autohide menu bar:false, autohide:false}
- end tell
- end tell'
-}
-
-enableTiling () {
- defaults write com.apple.dock orientation right
- defaults write com.apple.dock autohide -bool FALSE
- killall Dock Finder
-
- sketchybar &
- sh ~/.cache/matugen-jankyborders.sh &
- yabai -m config menubar_opacity 0.0
-
- SPACES=("1" "2" "3" "4" "5" "6" "7" "8" "9")
- for i in "${!SPACES[@]}"; do
- yabai -m space $i --layout bsp
- done
-
-
- osascript -e '
- tell application "System Events"
- tell dock preferences
- set properties to {autohide menu bar:true, autohide:true}
- end tell
- end tell
-'
-}
-
-if [ "$1" = "on" ]; then
- enableTiling
-elif [ "$1" = "off" ]; then
- disableTiling
-else
- echo "$0: [on|off]"
-fi
diff --git a/stow/.config/yabai/yabairc b/stow/.config/yabai/yabairc
deleted file mode 100644
index 62e506b..0000000
--- a/stow/.config/yabai/yabairc
+++ /dev/null
@@ -1,73 +0,0 @@
-# Scripting Addon
-# https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)#configure-scripting-addition
-
-yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
-sudo yabai --load-sa
-
-# Sketchybar Intergration
-eval "$(/opt/homebrew/bin/brew shellenv)"
-if command -v "sketchybar"; then
- yabai -m config menubar_opacity 0.0
- sketchybar &
- yabai -m signal --remove "sketchybar_space_change" 2>/dev/null
- yabai -m signal --remove "sketchybar_front_app" 2>/dev/null
-
- # Remove existing signals (in case of restart)
- yabai -m signal --add event=space_changed action="sketchybar --trigger space_change" label="sketchybar_space_change"
- yabai -m signal --add event=window_focused action="sketchybar --trigger front_app_switched" label="sketchybar_front_app"
-fi
-
-# autostart
-borders active_color=0xfff74f9e inactive_color=0xffffa8f1 width=6.0 &
-sh ~/.cache/matugen-jankyborders.sh &
-skhd &
-
-# space labels
-yabai -m space 1 --label browser
-yabai -m space 2 --label terminal
-yabai -m space 3 --label spare
-yabai -m space 4 --label gaming
-yabai -m space 5 --label social
-yabai -m space 6 --label music
-
-yabai -m space 4 --layout float
-
-# layout
-yabai -m config layout bsp
-yabai -m config split_ratio 0.5
-
-# padding
-yabai -m config top_padding 4 \
- bottom_padding 8 \
- left_padding 8 \
- right_padding 8 \
- window_gap 8 \
-
-# mouse support
-yabai -m config mouse_modifier ctrl # set mouse interaction modifier key
-yabai -m config mouse_action1 move # set modifier + left-click drag to move window
-yabai -m config mouse_action2 resize # set modifier + right-click drag to resize window
-yabai -m config focus_follows_mouse autofocus # disabled while holding mouse modifier (eg. for menubar)
-yabai -m config mouse_follows_focus on
-
-# appearance
-yabai -m config window_shadow float # window shadow only on floating windows
-
-yabai -m config window_opacity off
-yabai -m config active_window_opacity 1.0
-yabai -m config normal_window_opacity 0.95
-yabai -m config window_opacity_duration 0.2
-
-# window rules
-yabai -m rule --add app="^(Calculator|System Preferences|System Settings|Archive Utility)$" manage=off
-yabai -m rule --add title="^Preferences" manage=off
-yabai -m rule --add title="^Settings" manage=off
-yabai -m rule --add app="^Steam$" manage=off
-yabai -m rule --add app="^IINA$" manage=off
-yabai -m rule --add app="^Weather$" manage=off
-yabai -m rule --add app="KeePassXC$" sticky=on mouse_follows_focus=off manage=off
-yabai -m rule --add app="^Lulu$" sticky=no mouse_follows_focus=off manage=off
-# Anki card preview & Anki browser
-yabai -m rule --add title="^Preview" manage=off
-yabai -m rule --add title="^Anki" manage=off
-yabai -m rule --add title="^Browse" manage=off
diff --git a/stow/.config/yazi/yazi.toml b/stow/.config/yazi/yazi.toml
deleted file mode 100644
index 5c13a34..0000000
--- a/stow/.config/yazi/yazi.toml
+++ /dev/null
@@ -1,56 +0,0 @@
-[mgr]
-show_hidden = true
-show_symlink = true
-
-sort_by = "alphabetical"
-sort_reverse = false
-sort_dir_first = true
-
-linemode = "permissions"
-scrolloff = 8
-
-[preview]
-wrap = "no"
-tab_size = 2
-
-[opener]
-edit = [
- { run = "$EDITOR %s", block = true, desc = "Open in text editor"},
-]
-
-editimg = [
- { run = "gimp %s", block = false, desc = "Open in image editor" },
-]
-
-play = [
- { run = "mpv %s", block = false, for = "linux", desc = "Play video"},
- { run = "iina %s", block = false, for = "macos", desc = "Play video"},
-]
-
-open = [
- { run = "xdg-open %s", block = false, for = "linux", desc = "Open with default program"},
- { run = "open %s", block = false, for = "macos", desc = "Open with default program"},
-]
-
-setwallpaper = [
- { run = "matugen --config ~/.config/matugen/config.toml image %s", block = false, for = "macos", desc = "Set as wallpaper"},
- { run = "matugen image %s", block = false, for = "linux", desc = "Set as wallpaper"},
-]
-
-setwallpaperlight = [
- { run = "matugen --config ~/.config/matugen/config.toml image -m light %s", block = false, for = "macos", desc = "Set as wallpaper (light)"},
- { run = "matugen image -m light %s", block = false, for = "linux", desc = "Set as wallpaper (light)"},
-]
-
-[open]
-rules = [
- { mime = "text/*", use = "edit" },
- { mime = "video/*", use = "play" },
- { mime = "image/*", use = [ "open", "setwallpaper", "setwallpaperlight", "editimg" ] },
-
- { url = "*.html", use = [ "open", "edit" ] },
- { mime = "application/json", use = "edit" },
-
- # Multiple openers for a single rule
- { url = "*", use = "open" },
-]
diff --git a/stow/.zshrc b/stow/.zshrc
index b893e40..73d45aa 100644
--- a/stow/.zshrc
+++ b/stow/.zshrc
@@ -1,38 +1,56 @@
# z shell configuration
-#
-# prompt
-#
+OSICON="?"
-# set icon
-if [ -f /etc/os-release ]; then
- . /etc/os-release &> /dev/null
-fi
-
-if [ "$ID" = "nixos" ]; then
- OSICON=""
-elif [ "$ID" = "debian" ]; then
- OSICON=""
-elif [ "$ID" = "arch" ]; then
- OSICON=""
-elif [ "$ID" = "fedora" ]; then
- OSICON=""
-elif [ -e /System ]; then
+# set prompt icon
+if [ -e /System ]; then
OSICON=""
eval "$(/opt/homebrew/bin/brew shellenv)"
else
- OSICON="$"
+ . /etc/os-release &> /dev/null
+
+ if [ "$ID" = "nixos" ]; then
+ OSICON=""
+ elif [ "$ID" = "debian" ]; then
+ OSICON=""
+ elif [ "$ID" = "fedora" ]; then
+ OSICON=""
+ elif [ "$ID" = "arch" ]; then
+ OSICON=""
+ fi
fi
# set prompt colours
-if [ -f ~/.cache/zsh_colours.sh ]; then
- source ~/.cache/zsh_colours.sh
+HOSTNAME="$(hostname)"
+
+if [ "$HOSTNAME" = "kita" ]; then
+ PRIMARY_COLOUR="{red}"
+ SECONDARY_COLOUR="{yellow}"
+ TEXT_COLOUR="{black}"
+
+elif [ "$HOSTNAME" = "bocchi" ]; then
+ PRIMARY_COLOUR="{magenta}"
+ SECONDARY_COLOUR="{white}"
+ TEXT_COLOUR="{black}"
+
+elif [ "$HOSTNAME" = "ryo" ]; then
+ PRIMARY_COLOUR="{cyan}"
+ SECONDARY_COLOUR="{blue}"
+ TEXT_COLOUR="{black}"
+
+elif [ "$HOSTNAME" = "nijika" ]; then
+ PRIMARY_COLOUR="{yellow}"
+ SECONDARY_COLOUR="{green}"
+ TEXT_COLOUR="{black}"
+
else
PRIMARY_COLOUR="{blue}"
- SECONDARY_COLOUR="{yellow}"
+ SECONDARY_COLOUR="{red}"
+ TEXT_COLOUR="{black}"
fi
-PROMPT="%F$PRIMARY_COLOUR%~ %F$SECONDARY_COLOUR$OSICON %k%F"
+PROMPT="%K$PRIMARY_COLOUR%F$TEXT_COLOUR %~ %K$SECONDARY_COLOUR $OSICON %k%F{white} "
+RPROMPT="%F{7}$HOSTNAME"
bindkey -e
@@ -41,9 +59,7 @@ zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu no
-#
-# history
-#
+# hist
HISTFILE="$HOME/.local/share/zsh_hist"
HISTSIZE=10000000
SAVEHIST=$HISTSIZE
@@ -55,19 +71,13 @@ setopt hist_ignore_all_dups
setopt hist_find_no_dups
setopt hist_ignore_space
-#
# shell alias
-#
alias ls="ls -h --color=auto"
alias la="ls -ah --color=auto"
alias ll="ls -ahl --color=auto"
alias cat="bat"
alias rm="trash"
-alias v="nvim"
-alias vi="nvim"
-alias vim="nvim"
-
alias ssh="TERM=xterm-256color ssh" # fix ssh not recognising terminal and remote shell being somewhat broken
alias tmux="tmux -f $HOME/.config/tmux/tmux.conf" # needed for osx systems for some reason
@@ -77,18 +87,35 @@ export PATH="$PATH:$GOPATH/bin"
export EDITOR="nvim"
+# functions
+func calc() {
+ # why isn't this in bash by default
+ #
+ if command -v python3 > /dev/null; then
+ python3 -c "print($1)"
+ else
+ echo "python3 needs to be installed for this to work!"
+ fi
+}
+
+func 0x0() {
+ if [ -d "$1" ];
+ then
+ TMPFILE="$(mktemp)"
+ tar cf "$TMPFILE" "$1"
+ curl -F file=@$TMPFILE -F expires=24 https://0x0.st
+ else
+ curl -F file=@$1 -F expires=24 https://0x0.st
+ fi
+}
+
# plugins
-#
plugindir="$HOME/.local/share/zsh_plug"
func plugInstall() {
# clones a repo and then sources it.
# first arg is git url, second is source
# location
- if [ ! command -v "git" &> /dev/null ]; then
- exit 1
- fi
-
foldername=$(basename $1)
clonepath="$plugindir/$foldername"
sourcefile="$clonepath/$2"
@@ -103,15 +130,8 @@ func plugInstall() {
}
plugInstall https://github.com/zsh-users/zsh-syntax-highlighting zsh-syntax-highlighting.zsh
+plugInstall https://github.com/Aloxaf/fzf-tab fzf-tab.zsh
# load fzf and zoxide
eval "$(fzf --zsh)"
eval "$(zoxide init zsh)"
-
-function y() {
- local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
- command yazi "$@" --cwd-file="$tmp"
- IFS= read -r -d '' cwd < "$tmp"
- [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd"
- command rm -f -- "$tmp"
-}