Compare commits
77
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e57c792874 | ||
|
|
984a677327 | ||
|
|
43d4ede188 | ||
|
|
d45e239926 | ||
|
|
17070a9a51 | ||
|
|
483712a34c | ||
|
|
534d3b9353 | ||
|
|
2fb38b685d | ||
|
|
2c31a2aced | ||
|
|
45bf546b85 | ||
|
|
c260e93db8 | ||
|
|
341f20fe7a | ||
|
|
980a42aaa1 | ||
|
|
f5ed23670c | ||
|
|
dd455dc053 | ||
|
|
b87fea970b | ||
|
|
ddfe41c461 | ||
|
|
c3cfbf5a6a | ||
|
|
1336a9bcd8 | ||
|
|
48ee955035 | ||
|
|
626a07e7e9 | ||
|
|
78ffc4e895 | ||
|
|
4d54560d77 | ||
|
|
3ef4bb5495 | ||
|
|
355d6995bf | ||
|
|
dd7520ec84 | ||
|
|
f311d671b2 | ||
|
|
126b92831a | ||
|
|
07aafd820c | ||
|
|
5111cb4178 | ||
|
|
86d529fdd0 | ||
|
|
acf2b21f72 | ||
|
|
2e0bc0bae2 | ||
|
|
353e1373b8 | ||
|
|
add16d36f3 | ||
|
|
fde5d13c0a | ||
|
|
02d4f6e68d | ||
|
|
5d811f88ad | ||
|
|
635d6cdeca | ||
|
|
5cf2d8397d | ||
|
|
0a1a5a4e4a | ||
|
|
1666aba15f | ||
|
|
8a88048d04 | ||
|
|
af6a0ca69c | ||
|
|
43d3ceaf41 | ||
|
|
79acda67c6 | ||
|
|
3a1745e620 | ||
|
|
ebe51b2dc6 | ||
|
|
eed6a57885 | ||
|
|
bdf62ceec0 | ||
|
|
ca74f4654b | ||
|
|
bf8698da71 | ||
|
|
dd195b866d | ||
|
|
0540531fb8 | ||
|
|
3be843fd2e | ||
|
|
37c3dac5bb | ||
|
|
f542767018 | ||
|
|
9d1b7596b1 | ||
|
|
da81594cdd | ||
|
|
a9d56b5eba | ||
|
|
93739cb304 | ||
|
|
62b34d5d40 | ||
|
|
911d98cd65 | ||
|
|
77ac865b41 | ||
|
|
4416f31887 | ||
|
|
4fc3ecf3b8 | ||
|
|
e902d172d2 | ||
|
|
372e15742d | ||
|
|
00db155874 | ||
|
|
a79999d465 | ||
|
|
61dc01881b | ||
|
|
22c8e5bb76 | ||
|
|
9d8774d8c2 | ||
|
|
f2d2b36356 | ||
|
|
8467795708 | ||
|
|
f8df758e3c | ||
|
|
548b3ad02a |
@@ -2,4 +2,6 @@ README.md~
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
result
|
result
|
||||||
dump.txt
|
dump.txt
|
||||||
|
flake.lock
|
||||||
*~
|
*~
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
# A NIX Config To Rule Them all
|
# A macOS nix-darwin config
|
||||||
_now mostly focused on my Mac Machines_
|
|
||||||
|
|
||||||
Started with a configuration generated from [this nixos config template](https://github.com/dustinlyons/nixos-config/)
|
This repository now focuses on macOS systems managed with nix-darwin.
|
||||||
|
|
||||||
Installed nix with `--nix-build-group-id 30000`
|
|
||||||
|
|
||||||
Created the full verion with secret-management:
|
Started with a configuration generated from [this nixos config template](https://github.com/dustinlyons/nixos-config/)Installed nix with `--nix-build-group-id 30000`
|
||||||
|
Initialy created 'with secrets' but stripped out the git/agenix in favor of sops
|
||||||
|
|
||||||
```
|
Refactored the configuration to remove nixos but keep the shared modules and Darwin host setup, with no NixOS trees or Linux app targets.
|
||||||
mkdir -p nixos-config && cd nixos-config && nix flake --extra-experimental-features 'nix-command flakes' init -t github:dustinlyons/nixos-config#starter-with-secrets
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|||||||
+5
-112
@@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
VERSION=1.0
|
||||||
|
|
||||||
|
# Color codes
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
@@ -32,90 +35,11 @@ _prompt() {
|
|||||||
read -r $variable
|
read -r $variable
|
||||||
}
|
}
|
||||||
|
|
||||||
insert_secrets_output() {
|
|
||||||
local pattern="outputs = { self, darwin, nix-homebrew, homebrew-bundle, homebrew-core, homebrew-cask, home-manager, nixpkgs, disko, agenix } @inputs:"
|
|
||||||
local insert_text="secrets "
|
|
||||||
|
|
||||||
awk -v pat="$pattern" -v insert="$insert_text" '
|
|
||||||
$0 ~ pat {
|
|
||||||
sub(/} @inputs:/, ", " insert "} @inputs:"); # Replace the closing brace with the insert text followed by the brace
|
|
||||||
gsub(/ ,/, ","); # Correct any spaces before commas
|
|
||||||
print
|
|
||||||
next
|
|
||||||
}
|
|
||||||
{ print }
|
|
||||||
' flake.nix > flake.nix.tmp
|
|
||||||
|
|
||||||
mv flake.nix.tmp flake.nix
|
|
||||||
}
|
|
||||||
|
|
||||||
insert_secrets_input() {
|
|
||||||
# Define file path
|
|
||||||
FILE_PATH="flake.nix"
|
|
||||||
|
|
||||||
# Backup the original file
|
|
||||||
cp "$FILE_PATH" "${FILE_PATH}.bak"
|
|
||||||
|
|
||||||
# Temporary file for the text to insert
|
|
||||||
TEMP_FILE="temp_insert.txt"
|
|
||||||
|
|
||||||
# Write the formatted text to the temporary file
|
|
||||||
cat > "$TEMP_FILE" << 'EOF'
|
|
||||||
secrets = {
|
|
||||||
url = "git+ssh://git@github.com/%GITHUB_USER%/%GITHUB_SECRETS_REPO%.git";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Check if the 'secrets' block already exists
|
|
||||||
if grep -q 'url = "git+ssh://git@github.com/%GITHUB_USER%/%GITHUB_SECRETS_REPO%.git"' "$FILE_PATH"; then
|
|
||||||
echo "The 'secrets' block already exists in the file."
|
|
||||||
rm "$TEMP_FILE"
|
|
||||||
rm "${FILE_PATH}.bak"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find the start and end line numbers of the 'disko' block
|
|
||||||
START_LINE=$(grep -n 'disko = {' "$FILE_PATH" | head -n 1 | cut -d: -f1)
|
|
||||||
END_LINE=$(tail -n +$START_LINE "$FILE_PATH" | grep -n '};' | head -n 1 | cut -d: -f1)
|
|
||||||
END_LINE=$((START_LINE + END_LINE - 1))
|
|
||||||
|
|
||||||
# Create a new file with the insertion
|
|
||||||
{
|
|
||||||
sed -n "1,${END_LINE}p" "$FILE_PATH"
|
|
||||||
cat "$TEMP_FILE"
|
|
||||||
sed -n "$((END_LINE + 1)),\$p" "$FILE_PATH"
|
|
||||||
} > "${FILE_PATH}.new"
|
|
||||||
|
|
||||||
# Replace the original file with the new file
|
|
||||||
mv "${FILE_PATH}.new" "$FILE_PATH"
|
|
||||||
|
|
||||||
# Clean up the temporary files
|
|
||||||
rm "$TEMP_FILE"
|
|
||||||
rm "${FILE_PATH}.bak"
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_star() {
|
|
||||||
_print "${YELLOW}Would you like to support my work by starring my GitHub repo? yes/no [yes]: ${NC}"
|
|
||||||
local response
|
|
||||||
read -r response
|
|
||||||
response=${response:-yes} # Set default response to 'yes' if input is empty
|
|
||||||
if [[ "$response" =~ ^[Yy](es)?$ ]] || [[ -z "$response" ]]; then
|
|
||||||
if [[ "$OS" == "Darwin" ]]; then
|
|
||||||
open "https://github.com/dustinlyons/nixos-config"
|
|
||||||
else
|
|
||||||
xdg-open "https://github.com/dustinlyons/nixos-config"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_star
|
|
||||||
|
|
||||||
# Fetch username from the system
|
# Fetch username from the system
|
||||||
export USERNAME=$(whoami)
|
export USERNAME=$(whoami)
|
||||||
|
|
||||||
# If the username is 'nixos' or 'root', ask the user for their username
|
# If the username is 'root', ask the user for their username
|
||||||
if [[ "$USERNAME" == "nixos" ]] || [[ "$USERNAME" == "root" ]]; then
|
if [[ "$USERNAME" == "root" ]]; then
|
||||||
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
|
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -138,12 +62,6 @@ if [[ -z "$GIT_NAME" ]]; then
|
|||||||
_prompt "${YELLOW}Please enter your name: ${NC}" GIT_NAME
|
_prompt "${YELLOW}Please enter your name: ${NC}" GIT_NAME
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_prompt "${YELLOW}Please enter your Github username: ${NC}" GITHUB_USER
|
|
||||||
_prompt "${YELLOW}Please enter your Github secrets repository name: ${NC}" GITHUB_SECRETS_REPO
|
|
||||||
|
|
||||||
export GITHUB_USER
|
|
||||||
export GITHUB_SECRETS_REPO
|
|
||||||
|
|
||||||
select_boot_disk() {
|
select_boot_disk() {
|
||||||
local disks
|
local disks
|
||||||
local _boot_disk
|
local _boot_disk
|
||||||
@@ -167,27 +85,11 @@ select_boot_disk() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set hostname and find primary disk if this is NixOS
|
|
||||||
if [[ "$OS" != "Darwin" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter a hostname for the system: ${NC}" HOST_NAME
|
|
||||||
export HOST_NAME
|
|
||||||
select_boot_disk
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Confirmation step
|
|
||||||
confirm_details() {
|
confirm_details() {
|
||||||
_print "${GREEN}Username: $USERNAME"
|
_print "${GREEN}Username: $USERNAME"
|
||||||
_print "Email: $GIT_EMAIL"
|
_print "Email: $GIT_EMAIL"
|
||||||
_print "Name: $GIT_NAME${NC}"
|
_print "Name: $GIT_NAME${NC}"
|
||||||
|
|
||||||
if([[ "$OS" != "Darwin" ]]); then
|
|
||||||
_print "${GREEN}Primary interface: $PRIMARY_IFACE"
|
|
||||||
_print "Boot disk: $BOOT_DISK"
|
|
||||||
_print "Hostname: $HOST_NAME${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
_print "${GREEN}Secrets repository: $GITHUB_USER/$GITHUB_SECRETS_REPO${NC}"
|
|
||||||
|
|
||||||
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
|
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
|
||||||
|
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
@@ -205,7 +107,6 @@ confirm_details() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# Call the confirmation function
|
|
||||||
confirm_details
|
confirm_details
|
||||||
|
|
||||||
# Function to replace tokens in each file
|
# Function to replace tokens in each file
|
||||||
@@ -217,8 +118,6 @@ replace_tokens() {
|
|||||||
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
|
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
|
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
|
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%GITHUB_USER%/$GITHUB_USER/g" "$file"
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%GITHUB_SECRETS_REPO%/$GITHUB_SECRETS_REPO/g" "$file"
|
|
||||||
else
|
else
|
||||||
# Linux or other
|
# Linux or other
|
||||||
sed -i -e "s/%USER%/$USERNAME/g" "$file"
|
sed -i -e "s/%USER%/$USERNAME/g" "$file"
|
||||||
@@ -227,16 +126,10 @@ replace_tokens() {
|
|||||||
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
|
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
|
||||||
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
|
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
|
||||||
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
|
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
|
||||||
sed -i -e "s/%GITHUB_USER%/$GITHUB_USER/g" "$file"
|
|
||||||
sed -i -e "s/%GITHUB_SECRETS_REPO%/$GITHUB_SECRETS_REPO/g" "$file"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Insert secrets repo into flake
|
|
||||||
insert_secrets_input
|
|
||||||
insert_secrets_output
|
|
||||||
|
|
||||||
# Traverse directories and call replace_tokens on each Nix file
|
# Traverse directories and call replace_tokens on each Nix file
|
||||||
export -f replace_tokens
|
export -f replace_tokens
|
||||||
find . -type f -exec bash -c 'replace_tokens "$0"' {} \;
|
find . -type f -exec bash -c 'replace_tokens "$0"' {} \;
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
x86_64-linux
|
|
||||||
+5
-112
@@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
VERSION=1.0
|
||||||
|
|
||||||
|
# Color codes
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
@@ -32,90 +35,11 @@ _prompt() {
|
|||||||
read -r $variable
|
read -r $variable
|
||||||
}
|
}
|
||||||
|
|
||||||
insert_secrets_output() {
|
|
||||||
local pattern="outputs = { self, darwin, nix-homebrew, homebrew-bundle, homebrew-core, homebrew-cask, home-manager, nixpkgs, disko, agenix } @inputs:"
|
|
||||||
local insert_text="secrets "
|
|
||||||
|
|
||||||
awk -v pat="$pattern" -v insert="$insert_text" '
|
|
||||||
$0 ~ pat {
|
|
||||||
sub(/} @inputs:/, ", " insert "} @inputs:"); # Replace the closing brace with the insert text followed by the brace
|
|
||||||
gsub(/ ,/, ","); # Correct any spaces before commas
|
|
||||||
print
|
|
||||||
next
|
|
||||||
}
|
|
||||||
{ print }
|
|
||||||
' flake.nix > flake.nix.tmp
|
|
||||||
|
|
||||||
mv flake.nix.tmp flake.nix
|
|
||||||
}
|
|
||||||
|
|
||||||
insert_secrets_input() {
|
|
||||||
# Define file path
|
|
||||||
FILE_PATH="flake.nix"
|
|
||||||
|
|
||||||
# Backup the original file
|
|
||||||
cp "$FILE_PATH" "${FILE_PATH}.bak"
|
|
||||||
|
|
||||||
# Temporary file for the text to insert
|
|
||||||
TEMP_FILE="temp_insert.txt"
|
|
||||||
|
|
||||||
# Write the formatted text to the temporary file
|
|
||||||
cat > "$TEMP_FILE" << 'EOF'
|
|
||||||
secrets = {
|
|
||||||
url = "git+ssh://git@github.com/%GITHUB_USER%/%GITHUB_SECRETS_REPO%.git";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Check if the 'secrets' block already exists
|
|
||||||
if grep -q 'url = "git+ssh://git@github.com/%GITHUB_USER%/%GITHUB_SECRETS_REPO%.git"' "$FILE_PATH"; then
|
|
||||||
echo "The 'secrets' block already exists in the file."
|
|
||||||
rm "$TEMP_FILE"
|
|
||||||
rm "${FILE_PATH}.bak"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find the start and end line numbers of the 'disko' block
|
|
||||||
START_LINE=$(grep -n 'disko = {' "$FILE_PATH" | head -n 1 | cut -d: -f1)
|
|
||||||
END_LINE=$(tail -n +$START_LINE "$FILE_PATH" | grep -n '};' | head -n 1 | cut -d: -f1)
|
|
||||||
END_LINE=$((START_LINE + END_LINE - 1))
|
|
||||||
|
|
||||||
# Create a new file with the insertion
|
|
||||||
{
|
|
||||||
sed -n "1,${END_LINE}p" "$FILE_PATH"
|
|
||||||
cat "$TEMP_FILE"
|
|
||||||
sed -n "$((END_LINE + 1)),\$p" "$FILE_PATH"
|
|
||||||
} > "${FILE_PATH}.new"
|
|
||||||
|
|
||||||
# Replace the original file with the new file
|
|
||||||
mv "${FILE_PATH}.new" "$FILE_PATH"
|
|
||||||
|
|
||||||
# Clean up the temporary files
|
|
||||||
rm "$TEMP_FILE"
|
|
||||||
rm "${FILE_PATH}.bak"
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_star() {
|
|
||||||
_print "${YELLOW}Would you like to support my work by starring my GitHub repo? yes/no [yes]: ${NC}"
|
|
||||||
local response
|
|
||||||
read -r response
|
|
||||||
response=${response:-yes} # Set default response to 'yes' if input is empty
|
|
||||||
if [[ "$response" =~ ^[Yy](es)?$ ]] || [[ -z "$response" ]]; then
|
|
||||||
if [[ "$OS" == "Darwin" ]]; then
|
|
||||||
open "https://github.com/dustinlyons/nixos-config"
|
|
||||||
else
|
|
||||||
xdg-open "https://github.com/dustinlyons/nixos-config"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_star
|
|
||||||
|
|
||||||
# Fetch username from the system
|
# Fetch username from the system
|
||||||
export USERNAME=$(whoami)
|
export USERNAME=$(whoami)
|
||||||
|
|
||||||
# If the username is 'nixos' or 'root', ask the user for their username
|
# If the username is 'root', ask the user for their username
|
||||||
if [[ "$USERNAME" == "nixos" ]] || [[ "$USERNAME" == "root" ]]; then
|
if [[ "$USERNAME" == "root" ]]; then
|
||||||
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
|
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -138,12 +62,6 @@ if [[ -z "$GIT_NAME" ]]; then
|
|||||||
_prompt "${YELLOW}Please enter your name: ${NC}" GIT_NAME
|
_prompt "${YELLOW}Please enter your name: ${NC}" GIT_NAME
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_prompt "${YELLOW}Please enter your Github username: ${NC}" GITHUB_USER
|
|
||||||
_prompt "${YELLOW}Please enter your Github secrets repository name: ${NC}" GITHUB_SECRETS_REPO
|
|
||||||
|
|
||||||
export GITHUB_USER
|
|
||||||
export GITHUB_SECRETS_REPO
|
|
||||||
|
|
||||||
select_boot_disk() {
|
select_boot_disk() {
|
||||||
local disks
|
local disks
|
||||||
local _boot_disk
|
local _boot_disk
|
||||||
@@ -167,27 +85,11 @@ select_boot_disk() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set hostname and find primary disk if this is NixOS
|
|
||||||
if [[ "$OS" != "Darwin" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter a hostname for the system: ${NC}" HOST_NAME
|
|
||||||
export HOST_NAME
|
|
||||||
select_boot_disk
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Confirmation step
|
|
||||||
confirm_details() {
|
confirm_details() {
|
||||||
_print "${GREEN}Username: $USERNAME"
|
_print "${GREEN}Username: $USERNAME"
|
||||||
_print "Email: $GIT_EMAIL"
|
_print "Email: $GIT_EMAIL"
|
||||||
_print "Name: $GIT_NAME${NC}"
|
_print "Name: $GIT_NAME${NC}"
|
||||||
|
|
||||||
if([[ "$OS" != "Darwin" ]]); then
|
|
||||||
_print "${GREEN}Primary interface: $PRIMARY_IFACE"
|
|
||||||
_print "Boot disk: $BOOT_DISK"
|
|
||||||
_print "Hostname: $HOST_NAME${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
_print "${GREEN}Secrets repository: $GITHUB_USER/$GITHUB_SECRETS_REPO${NC}"
|
|
||||||
|
|
||||||
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
|
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
|
||||||
|
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
@@ -205,7 +107,6 @@ confirm_details() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# Call the confirmation function
|
|
||||||
confirm_details
|
confirm_details
|
||||||
|
|
||||||
# Function to replace tokens in each file
|
# Function to replace tokens in each file
|
||||||
@@ -217,8 +118,6 @@ replace_tokens() {
|
|||||||
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
|
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
|
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
|
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%GITHUB_USER%/$GITHUB_USER/g" "$file"
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%GITHUB_SECRETS_REPO%/$GITHUB_SECRETS_REPO/g" "$file"
|
|
||||||
else
|
else
|
||||||
# Linux or other
|
# Linux or other
|
||||||
sed -i -e "s/%USER%/$USERNAME/g" "$file"
|
sed -i -e "s/%USER%/$USERNAME/g" "$file"
|
||||||
@@ -227,16 +126,10 @@ replace_tokens() {
|
|||||||
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
|
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
|
||||||
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
|
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
|
||||||
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
|
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
|
||||||
sed -i -e "s/%GITHUB_USER%/$GITHUB_USER/g" "$file"
|
|
||||||
sed -i -e "s/%GITHUB_SECRETS_REPO%/$GITHUB_SECRETS_REPO/g" "$file"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Insert secrets repo into flake
|
|
||||||
insert_secrets_input
|
|
||||||
insert_secrets_output
|
|
||||||
|
|
||||||
# Traverse directories and call replace_tokens on each Nix file
|
# Traverse directories and call replace_tokens on each Nix file
|
||||||
export -f replace_tokens
|
export -f replace_tokens
|
||||||
find . -type f -exec bash -c 'replace_tokens "$0"' {} \;
|
find . -type f -exec bash -c 'replace_tokens "$0"' {} \;
|
||||||
|
|||||||
@@ -1,183 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
# Determine the operating system
|
|
||||||
export OS=$(uname)
|
|
||||||
|
|
||||||
# Primary network interface
|
|
||||||
if [[ "$OS" != "Darwin" ]]; then
|
|
||||||
export PRIMARY_IFACE=$(ip -o -4 route show to default | awk '{print $5}')
|
|
||||||
echo -e "${GREEN}Found primary network interface $PRIMARY_IFACE${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Custom print function
|
|
||||||
_print() {
|
|
||||||
if [[ "$OS" == "Darwin" ]]; then
|
|
||||||
echo -e "$1"
|
|
||||||
else
|
|
||||||
echo "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Custom prompt function
|
|
||||||
_prompt() {
|
|
||||||
local message="$1"
|
|
||||||
local variable="$2"
|
|
||||||
|
|
||||||
_print "$message"
|
|
||||||
read -r $variable
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_star() {
|
|
||||||
_print "${YELLOW}Would you like to support my work by starring my GitHub repo? yes/no [yes]: ${NC}"
|
|
||||||
local response
|
|
||||||
read -r response
|
|
||||||
response=${response:-yes} # Set default response to 'yes' if input is empty
|
|
||||||
if [[ "$response" =~ ^[Yy](es)?$ ]] || [[ -z "$response" ]]; then
|
|
||||||
if [[ "$OS" == "Darwin" ]]; then
|
|
||||||
open "https://github.com/dustinlyons/nixos-config"
|
|
||||||
else
|
|
||||||
xdg-open "https://github.com/dustinlyons/nixos-config"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ask_for_star
|
|
||||||
|
|
||||||
# Fetch username from the system
|
|
||||||
export USERNAME=$(whoami)
|
|
||||||
|
|
||||||
# If the username is 'nixos' or 'root', ask the user for their username
|
|
||||||
if [[ "$USERNAME" == "nixos" ]] || [[ "$USERNAME" == "root" ]]; then
|
|
||||||
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if git is available
|
|
||||||
if command -v git >/dev/null 2>&1; then
|
|
||||||
# Fetch email and name from git config
|
|
||||||
export GIT_EMAIL=$(git config --get user.email)
|
|
||||||
export GIT_NAME=$(git config --get user.name)
|
|
||||||
else
|
|
||||||
_print "${RED}Git is not available on this system.${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If git email is not found or git is not available, ask the user
|
|
||||||
if [[ -z "$GIT_EMAIL" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter your email: ${NC}" GIT_EMAIL
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If git name is not found or git is not available, ask the user
|
|
||||||
if [[ -z "$GIT_NAME" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter your name: ${NC}" GIT_NAME
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$GITHUB_USER" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter your Github username: ${NC}" GITHUB_USER
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$GITHUB_SECRETS_REPO" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter your Github secrets repository name: ${NC}" GITHUB_SECRETS_REPO
|
|
||||||
fi
|
|
||||||
|
|
||||||
export GITHUB_USER
|
|
||||||
export GITHUB_SECRETS_REPO
|
|
||||||
|
|
||||||
select_boot_disk() {
|
|
||||||
local disks
|
|
||||||
local _boot_disk
|
|
||||||
|
|
||||||
_print "${YELLOW}Available disks:${NC}"
|
|
||||||
disks=$(lsblk -nd --output NAME,SIZE | grep -v loop)
|
|
||||||
echo "$disks"
|
|
||||||
|
|
||||||
# Warning message for data deletion
|
|
||||||
_print "${RED}WARNING: All data on the chosen disk will be erased during the installation!${NC}"
|
|
||||||
_prompt "${YELLOW}Please enter the name of your boot disk (e.g., sda, nvme0n1). Do not include the full path ("/dev/"): ${NC}" _boot_disk
|
|
||||||
|
|
||||||
# Confirmation for disk selection to prevent accidental data loss
|
|
||||||
_print "${YELLOW}You have selected $_boot_disk as the boot disk. This will delete everything on this disk. Are you sure? (Y/N): ${NC}"
|
|
||||||
read -r confirmation
|
|
||||||
if [[ "$confirmation" =~ ^[Yy]$ ]]; then
|
|
||||||
export BOOT_DISK=$_boot_disk
|
|
||||||
else
|
|
||||||
_print "${RED}Disk selection cancelled by the user. Please run the script again to select the correct disk.${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set hostname and find primary disk if this is NixOS
|
|
||||||
if [[ "$OS" != "Darwin" ]]; then
|
|
||||||
_prompt "${YELLOW}Please enter a hostname for the system: ${NC}" HOST_NAME
|
|
||||||
export HOST_NAME
|
|
||||||
select_boot_disk
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Confirmation step
|
|
||||||
confirm_details() {
|
|
||||||
_print "${GREEN}Username: $USERNAME"
|
|
||||||
_print "Email: $GIT_EMAIL"
|
|
||||||
_print "Name: $GIT_NAME${NC}"
|
|
||||||
|
|
||||||
if([[ "$OS" != "Darwin" ]]); then
|
|
||||||
_print "${GREEN}Primary interface: $PRIMARY_IFACE"
|
|
||||||
_print "Boot disk: $BOOT_DISK"
|
|
||||||
_print "Hostname: $HOST_NAME${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
_print "${GREEN}Secrets repository: $GITHUB_USER/$GITHUB_SECRETS_REPO${NC}"
|
|
||||||
|
|
||||||
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
|
|
||||||
|
|
||||||
case "$choice" in
|
|
||||||
[Nn] | [Nn][Oo] )
|
|
||||||
_print "${RED}Exiting script.${NC}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
[Yy] | [Yy][Ee][Ss] )
|
|
||||||
_print "${GREEN}Continuing...${NC}"
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
_print "${RED}Invalid option. Exiting script.${NC}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Call the confirmation function
|
|
||||||
confirm_details
|
|
||||||
|
|
||||||
# Function to replace tokens in each file
|
|
||||||
replace_tokens() {
|
|
||||||
local file="$1"
|
|
||||||
if [[ $(basename $1) != "apply" ]]; then
|
|
||||||
if [[ "$OS" == "Darwin" ]]; then
|
|
||||||
# macOS
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%GITHUB_USER%/$GITHUB_USER/g" "$file"
|
|
||||||
LC_ALL=C LANG=C sed -i '' -e "s/%GITHUB_SECRETS_REPO%/$GITHUB_SECRETS_REPO/g" "$file"
|
|
||||||
else
|
|
||||||
# Linux or other
|
|
||||||
sed -i -e "s/%USER%/$USERNAME/g" "$file"
|
|
||||||
sed -i -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
|
|
||||||
sed -i -e "s/%NAME%/$GIT_NAME/g" "$file"
|
|
||||||
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
|
|
||||||
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
|
|
||||||
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
|
|
||||||
sed -i -e "s/%GITHUB_USER%/$GITHUB_USER/g" "$file"
|
|
||||||
sed -i -e "s/%GITHUB_SECRETS_REPO%/$GITHUB_SECRETS_REPO/g" "$file"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Traverse directories and call replace_tokens on each Nix file
|
|
||||||
export -f replace_tokens
|
|
||||||
find . -type f -exec bash -c 'replace_tokens "$0"' {} \;
|
|
||||||
|
|
||||||
echo "$USERNAME" > /tmp/username.txt
|
|
||||||
_print "${GREEN}User $USERNAME information applied.${NC}"
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
VERSION=1.0
|
|
||||||
|
|
||||||
GREEN='\033[1;32m'
|
|
||||||
RED='\033[1;31m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
SYSTEM=$(uname -m)
|
|
||||||
|
|
||||||
case "$SYSTEM" in
|
|
||||||
x86_64)
|
|
||||||
FLAKE_TARGET="x86_64-linux"
|
|
||||||
;;
|
|
||||||
aarch64)
|
|
||||||
FLAKE_TARGET="aarch64-linux"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${RED}Unsupported architecture: $SYSTEM${NC}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo -e "${YELLOW}Starting...${NC}"
|
|
||||||
|
|
||||||
# We pass SSH from user to root so root can download secrets from our private Github
|
|
||||||
sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK /run/current-system/sw/bin/nixos-rebuild switch --flake .#$FLAKE_TARGET $@
|
|
||||||
|
|
||||||
echo -e "${GREEN}Switch to new generation complete!${NC}"
|
|
||||||
Generated
-378
@@ -1,378 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"brew-src": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746795192,
|
|
||||||
"narHash": "sha256-Cv+RXuzmn2iGBY2Ny/nXBTH+LFKDWIvMxf9a+btKI6M=",
|
|
||||||
"owner": "Homebrew",
|
|
||||||
"repo": "brew",
|
|
||||||
"rev": "6f39076b3c2251994419215279d0525ef667fc31",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Homebrew",
|
|
||||||
"ref": "4.5.2",
|
|
||||||
"repo": "brew",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747494142,
|
|
||||||
"narHash": "sha256-7TAUwDVZWq82t/x3+zZ5y+Tjl2hLL2c8+8pv9zCUbTo=",
|
|
||||||
"owner": "LnL7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "8e251e45346e9d58e0eece2512e40c183f967e8f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "LnL7",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"disko": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747274630,
|
|
||||||
"narHash": "sha256-87RJwXbfOHyzTB9LYagAQ6vOZhszCvd8Gvudu+gf3qo=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"rev": "ec7c109a4f794fce09aad87239eab7f66540b888",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1733312601,
|
|
||||||
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-root": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1723604017,
|
|
||||||
"narHash": "sha256-rBtQ8gg+Dn4Sx/s+pvjdq3CB2wQNzx9XGFq/JVGCB6k=",
|
|
||||||
"owner": "srid",
|
|
||||||
"repo": "flake-root",
|
|
||||||
"rev": "b759a56851e10cb13f6b8e5698af7b59c44be26e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "srid",
|
|
||||||
"repo": "flake-root",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747439237,
|
|
||||||
"narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"homebrew-bundle": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1745335228,
|
|
||||||
"narHash": "sha256-TIKR2UgtyUmHLNZp255/vLs+1I10hXe+sciMEbAGFwE=",
|
|
||||||
"owner": "homebrew",
|
|
||||||
"repo": "homebrew-bundle",
|
|
||||||
"rev": "a3265c84b232e13048ecbf6fc18a2eedfadbeb08",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "homebrew",
|
|
||||||
"repo": "homebrew-bundle",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"homebrew-cask": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747489558,
|
|
||||||
"narHash": "sha256-jTEWsQwwHBmBbEWfc5shlzcf0++rJyBNs+wQ9xzWBz4=",
|
|
||||||
"owner": "homebrew",
|
|
||||||
"repo": "homebrew-cask",
|
|
||||||
"rev": "32ffcd12f2e8a60c729c2410c2f7e2a162bf0e86",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "homebrew",
|
|
||||||
"repo": "homebrew-cask",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"homebrew-core": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747495694,
|
|
||||||
"narHash": "sha256-l610VWWAngdS1nzTOw1GHeC2mXsy1F7vt2Bw5AmK45o=",
|
|
||||||
"owner": "homebrew",
|
|
||||||
"repo": "homebrew-core",
|
|
||||||
"rev": "e87f391c38c8becfa313edbece5c2cfc8eceb806",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "homebrew",
|
|
||||||
"repo": "homebrew-core",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1716329735,
|
|
||||||
"narHash": "sha256-ap51w+VqG21vuzyQ04WrhI2YbWHd3UGz0e7dc/QQmoA=",
|
|
||||||
"owner": "LnL7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "eac4f25028c1975a939c8f8fba95c12f8a25e01c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "LnL7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-homebrew": {
|
|
||||||
"inputs": {
|
|
||||||
"brew-src": "brew-src",
|
|
||||||
"nix-darwin": "nix-darwin",
|
|
||||||
"nixpkgs": "nixpkgs_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747444109,
|
|
||||||
"narHash": "sha256-fSufrKr8NdhLMuGZGwjGUfH+TIWrjFTRIBhgCRIyxno=",
|
|
||||||
"owner": "zhaofengli-wip",
|
|
||||||
"repo": "nix-homebrew",
|
|
||||||
"rev": "159f21ae77da757bbaeb98c0b16ff2e7b2738350",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "zhaofengli-wip",
|
|
||||||
"repo": "nix-homebrew",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixd": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"flake-root": "flake-root",
|
|
||||||
"nixpkgs": "nixpkgs_4",
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746955667,
|
|
||||||
"narHash": "sha256-VgVbPqZl8S09EGWFmgX++aFsz0Z7VmskSJGBXFE4eEs=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixd",
|
|
||||||
"rev": "7d19dfe5b65035aa255b83147375fdd8257459b9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixd",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746904237,
|
|
||||||
"narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-lib": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1733096140,
|
|
||||||
"narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1687274257,
|
|
||||||
"narHash": "sha256-TutzPriQcZ8FghDhEolnHcYU2oHIG5XWF+/SUBNnAOE=",
|
|
||||||
"path": "/nix/store/22qgs3skscd9bmrxv9xv4q5d4wwm5ppx-source",
|
|
||||||
"rev": "2c9ecd1f0400076a4d6b2193ad468ff0a7e7fdc5",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746328495,
|
|
||||||
"narHash": "sha256-uKCfuDs7ZM3QpCE/jnfubTg459CnKnJG/LwqEVEdEiw=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "979daf34c8cacebcd917d540070b52a3c2b9b16e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1744174375,
|
|
||||||
"narHash": "sha256-oxI9TLgnQbQ/WL0tIwVSIooLbXq4PW1QUhf5aQmXFgk=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "ef3a956f697525883b77192cbe208233ea0f8f79",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747327360,
|
|
||||||
"narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"darwin": "darwin",
|
|
||||||
"disko": "disko",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"homebrew-bundle": "homebrew-bundle",
|
|
||||||
"homebrew-cask": "homebrew-cask",
|
|
||||||
"homebrew-core": "homebrew-core",
|
|
||||||
"nix-homebrew": "nix-homebrew",
|
|
||||||
"nixd": "nixd",
|
|
||||||
"nixpkgs": "nixpkgs_5",
|
|
||||||
"secrets": "secrets",
|
|
||||||
"sops-nix": "sops-nix"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"secrets": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"path": "git@git.kolkman.org:olaf/nix-config-secrets.git",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"path": "git@git.kolkman.org:olaf/nix-config-secrets.git",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"parent": []
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746485181,
|
|
||||||
"narHash": "sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB+qsl9BZUnRvg=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "e93ee1d900ad264d65e9701a5c6f895683433386",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixd",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1734704479,
|
|
||||||
"narHash": "sha256-MMi74+WckoyEWBRcg/oaGRvXC9BVVxDZNRMpL+72wBI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "65712f5af67234dad91a5a4baee986a8b62dbf8f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
{
|
{
|
||||||
description = "Starter Configuration with secrets for MacOS and NixOS";
|
description = "Starter configuration for macOS with nix-darwin";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
url = "github:nixos/nixpkgs/nixos-unstable";
|
url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin";
|
||||||
|
# url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
};
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
@@ -11,16 +12,19 @@
|
|||||||
url = "github:nix-community/nixd";
|
url = "github:nix-community/nixd";
|
||||||
};
|
};
|
||||||
darwin = {
|
darwin = {
|
||||||
url = "github:LnL7/nix-darwin/master";
|
# url = "github:nix-darwin/nix-darwin";
|
||||||
|
url = "github:nix-darwin/nix-darwin/nix-darwin-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
brew-src = {
|
||||||
|
url = "github:Homebrew/brew/master";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
nix-homebrew = {
|
nix-homebrew = {
|
||||||
url = "github:zhaofengli-wip/nix-homebrew";
|
url = "github:zhaofengli-wip/nix-homebrew";
|
||||||
|
inputs.brew-src.follows = "brew-src";
|
||||||
};
|
};
|
||||||
homebrew-bundle = {
|
|
||||||
url = "github:homebrew/homebrew-bundle";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
homebrew-core = {
|
homebrew-core = {
|
||||||
url = "github:homebrew/homebrew-core";
|
url = "github:homebrew/homebrew-core";
|
||||||
flake = false;
|
flake = false;
|
||||||
@@ -29,45 +33,48 @@
|
|||||||
url = "github:homebrew/homebrew-cask";
|
url = "github:homebrew/homebrew-cask";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
disko = {
|
|
||||||
url = "github:nix-community/disko";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
secrets = {
|
|
||||||
url = "git@git.kolkman.org:olaf/nix-config-secrets.git";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
nix-vscode-extensions = {
|
||||||
|
url = "github:nix-community/nix-vscode-extensions";
|
||||||
|
};
|
||||||
|
catppuccin = {
|
||||||
|
url = "github:catppuccin/nix";
|
||||||
|
};
|
||||||
|
llm-agents = {
|
||||||
|
url = "github:numtide/llm-agents.nix";
|
||||||
|
};
|
||||||
|
|
||||||
|
# mac-app-util doesn't work with OCLP installed on X86
|
||||||
|
# mac-app-util = {
|
||||||
|
# url = "github:hraban/mac-app-util";
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
outputs =
|
outputs =
|
||||||
{
|
{
|
||||||
self,
|
self,
|
||||||
darwin,
|
darwin,
|
||||||
nix-homebrew,
|
nix-homebrew,
|
||||||
homebrew-bundle,
|
|
||||||
homebrew-core,
|
homebrew-core,
|
||||||
homebrew-cask,
|
homebrew-cask,
|
||||||
home-manager,
|
home-manager,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
disko,
|
|
||||||
secrets,
|
|
||||||
nixd,
|
nixd,
|
||||||
sops-nix,
|
sops-nix,
|
||||||
|
nix-vscode-extensions,
|
||||||
|
catppuccin,
|
||||||
|
llm-agents,
|
||||||
|
...
|
||||||
}@inputs:
|
}@inputs:
|
||||||
let
|
let
|
||||||
user = "olaf";
|
user = "olaf";
|
||||||
linuxSystems = [
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-linux"
|
|
||||||
];
|
|
||||||
darwinSystems = [
|
darwinSystems = [
|
||||||
"aarch64-darwin"
|
"aarch64-darwin"
|
||||||
"x86_64-darwin"
|
"x86_64-darwin"
|
||||||
];
|
];
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs (linuxSystems ++ darwinSystems) f;
|
forAllSystems = f: nixpkgs.lib.genAttrs darwinSystems f;
|
||||||
devShell =
|
devShell =
|
||||||
system:
|
system:
|
||||||
let
|
let
|
||||||
@@ -101,30 +108,16 @@
|
|||||||
'')
|
'')
|
||||||
}/bin/${scriptName}";
|
}/bin/${scriptName}";
|
||||||
};
|
};
|
||||||
mkLinuxApps = system: {
|
|
||||||
"apply" = mkApp "apply" system;
|
|
||||||
"build-switch" = mkApp "build-switch" system;
|
|
||||||
"copy-keys" = mkApp "copy-keys" system;
|
|
||||||
"create-keys" = mkApp "create-keys" system;
|
|
||||||
"check-keys" = mkApp "check-keys" system;
|
|
||||||
"install" = mkApp "install" system;
|
|
||||||
"install-with-secrets" = mkApp "install-with-secrets" system;
|
|
||||||
};
|
|
||||||
mkDarwinApps = system: {
|
mkDarwinApps = system: {
|
||||||
"apply" = mkApp "apply" system;
|
"apply" = mkApp "apply" system;
|
||||||
"build" = mkApp "build" system;
|
"build" = mkApp "build" system;
|
||||||
"build-switch" = mkApp "build-switch" system;
|
"build-switch" = mkApp "build-switch" system;
|
||||||
"copy-keys" = mkApp "copy-keys" system;
|
|
||||||
"create-keys" = mkApp "create-keys" system;
|
|
||||||
"check-keys" = mkApp "check-keys" system;
|
|
||||||
"rollback" = mkApp "rollback" system;
|
"rollback" = mkApp "rollback" system;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
devShells = forAllSystems devShell;
|
devShells = forAllSystems devShell;
|
||||||
apps =
|
apps = nixpkgs.lib.genAttrs darwinSystems mkDarwinApps;
|
||||||
nixpkgs.lib.genAttrs linuxSystems mkLinuxApps
|
|
||||||
// nixpkgs.lib.genAttrs darwinSystems mkDarwinApps;
|
|
||||||
|
|
||||||
darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (
|
darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (
|
||||||
system:
|
system:
|
||||||
@@ -132,9 +125,9 @@
|
|||||||
inherit system;
|
inherit system;
|
||||||
specialArgs = inputs;
|
specialArgs = inputs;
|
||||||
modules = [
|
modules = [
|
||||||
# sops-nix.nixosModules.sops
|
|
||||||
home-manager.darwinModules.home-manager
|
home-manager.darwinModules.home-manager
|
||||||
nix-homebrew.darwinModules.nix-homebrew
|
nix-homebrew.darwinModules.nix-homebrew
|
||||||
|
# mac-app-util.darwinModules.default
|
||||||
{
|
{
|
||||||
nix-homebrew = {
|
nix-homebrew = {
|
||||||
inherit user;
|
inherit user;
|
||||||
@@ -142,36 +135,19 @@
|
|||||||
taps = {
|
taps = {
|
||||||
"homebrew/homebrew-core" = homebrew-core;
|
"homebrew/homebrew-core" = homebrew-core;
|
||||||
"homebrew/homebrew-cask" = homebrew-cask;
|
"homebrew/homebrew-cask" = homebrew-cask;
|
||||||
"homebrew/homebrew-bundle" = homebrew-bundle;
|
|
||||||
};
|
};
|
||||||
mutableTaps = false;
|
mutableTaps = false;
|
||||||
autoMigrate = true;
|
# autoMigrate = true;
|
||||||
};
|
};
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
# mac-app-util.homeManagerModules.default
|
||||||
|
catppuccin.homeModules.catppuccin
|
||||||
|
|
||||||
|
];
|
||||||
}
|
}
|
||||||
./hosts/darwin
|
./hosts/darwin
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
nixosConfigurations = nixpkgs.lib.genAttrs linuxSystems (
|
|
||||||
system:
|
|
||||||
nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = inputs;
|
|
||||||
modules = [
|
|
||||||
sops-nix.nixosModules.sops
|
|
||||||
disko.nixosModules.disko
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
users.${user} = import ./modules/nixos/home-manager.nix;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
./hosts/nixos
|
|
||||||
];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
(eval-when-compile
|
||||||
|
(require 'use-package))
|
||||||
|
|
||||||
|
;; load some packages
|
||||||
|
|
||||||
|
(use-package company
|
||||||
|
:bind ("<C-tab>" . company-complete)
|
||||||
|
:diminish company-mode
|
||||||
|
:commands (company-mode global-company-mode)
|
||||||
|
:defer 1
|
||||||
|
:config
|
||||||
|
(global-company-mode))
|
||||||
|
|
||||||
|
(use-package counsel
|
||||||
|
:commands (counsel-descbinds)
|
||||||
|
:bind (([remap execute-extended-command] . counsel-M-x)
|
||||||
|
("C-x C-f" . counsel-find-file)
|
||||||
|
("C-c g" . counsel-git)
|
||||||
|
("C-c j" . counsel-git-grep)
|
||||||
|
("C-c k" . counsel-ag)
|
||||||
|
("C-x l" . counsel-locate)
|
||||||
|
("M-y" . counsel-yank-pop)))
|
||||||
|
|
||||||
|
(use-package flycheck
|
||||||
|
:defer 2
|
||||||
|
:config (global-flycheck-mode))
|
||||||
|
|
||||||
|
(use-package ivy
|
||||||
|
:defer 1
|
||||||
|
:bind (("C-c C-r" . ivy-resume)
|
||||||
|
("C-x C-b" . ivy-switch-buffer)
|
||||||
|
:map ivy-minibuffer-map
|
||||||
|
("C-j" . ivy-call))
|
||||||
|
:diminish ivy-mode
|
||||||
|
:commands ivy-mode
|
||||||
|
:config
|
||||||
|
(ivy-mode 1))
|
||||||
|
|
||||||
|
(use-package magit
|
||||||
|
:defer
|
||||||
|
:if (executable-find "git")
|
||||||
|
:bind (("C-x g" . magit-status)
|
||||||
|
("C-x G" . magit-dispatch-popup))
|
||||||
|
:init
|
||||||
|
(setq magit-completing-read-function 'ivy-completing-read))
|
||||||
|
|
||||||
|
(use-package projectile
|
||||||
|
:commands projectile-mode
|
||||||
|
:bind-keymap ("C-c p" . projectile-command-map)
|
||||||
|
:defer 5
|
||||||
|
:config
|
||||||
|
(projectile-global-mode))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-.") 'set-mark-command)
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
llm-agents,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -21,9 +22,8 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
../../modules/darwin/default.nix
|
||||||
../../modules/darwin/home-manager.nix
|
../../modules/darwin/home-manager.nix
|
||||||
../../modules/shared
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Setup user, packages, programs
|
# Setup user, packages, programs
|
||||||
@@ -39,7 +39,10 @@ in
|
|||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
trusted-public-keys = [
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
gc = {
|
gc = {
|
||||||
@@ -57,16 +60,62 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
users.groups = {
|
||||||
|
gidevelopert = {
|
||||||
|
description = "Git Common Rights";
|
||||||
|
gid = 500;
|
||||||
|
name = "gitdeveloper";
|
||||||
|
members = [ "olaf" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.knownGroups = [ "gitdeveloper" ];
|
||||||
# Turn off NIX_PATH warnings now that we're using flakes
|
# Turn off NIX_PATH warnings now that we're using flakes
|
||||||
system.checks.verifyNixPath = false;
|
system.checks.verifyNixPath = false;
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
dejavu_fonts
|
||||||
|
emacs-all-the-icons-fonts
|
||||||
|
# feather-font # from overlayj
|
||||||
|
jetbrains-mono
|
||||||
|
google-fonts
|
||||||
|
font-awesome
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-color-emoji
|
||||||
|
# jetbrains-mono
|
||||||
|
hack-font
|
||||||
|
meslo-lgs-nf
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.droid-sans-mono
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts
|
||||||
|
]
|
||||||
|
# this adds all nerd-fonts Gigabytes of them, too much.
|
||||||
|
# ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts)
|
||||||
|
;
|
||||||
|
|
||||||
|
};
|
||||||
# Load configuration that is shared across systems
|
# Load configuration that is shared across systems
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
emacs-unstable
|
# Emacs with automatic package management from overlay
|
||||||
|
(emacsWithPackagesFromUsePackage {
|
||||||
|
config = ../config/emacs/emacs.el;
|
||||||
|
defaultInitFile = true;
|
||||||
|
package = emacs-git;
|
||||||
|
alwaysEnsure = true;
|
||||||
|
extraEmacsPackages =
|
||||||
|
epkgs: with epkgs; [
|
||||||
|
magit
|
||||||
|
company
|
||||||
|
nix-mode
|
||||||
|
use-package
|
||||||
|
];
|
||||||
|
})
|
||||||
]
|
]
|
||||||
++ (import ../../modules/shared/packages.nix { inherit pkgs; })
|
++ (import ../../modules/darwin/packages.nix { inherit pkgs llm-agents; })
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -82,6 +131,16 @@ in
|
|||||||
StandardOutPath = "/tmp/emacs.out.log";
|
StandardOutPath = "/tmp/emacs.out.log";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
launchd.user.agents.ollama = {
|
||||||
|
command = "${pkgs.ollama}/bin/ollama serve";
|
||||||
|
serviceConfig = {
|
||||||
|
KeepAlive = true;
|
||||||
|
RunAtLoad = true;
|
||||||
|
StandardOutPath = "/tmp/ollama.out.log";
|
||||||
|
StandardErrorPath = "/tmp/ollama.err.log";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
system = {
|
system = {
|
||||||
stateVersion = 4;
|
stateVersion = 4;
|
||||||
primaryUser = "${user}";
|
primaryUser = "${user}";
|
||||||
|
|||||||
@@ -1,342 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
user = "olaf";
|
|
||||||
keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOk8iAnIaa1deoc7jw8YACPNVka1ZFJxhnU4G74TmS+p" ];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../../modules/nixos/disk-config.nix
|
|
||||||
../../modules/shared
|
|
||||||
];
|
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
|
||||||
boot = {
|
|
||||||
loader = {
|
|
||||||
systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 42;
|
|
||||||
};
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usbhid"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
# Uncomment for AMD GPU
|
|
||||||
# initrd.kernelModules = [ "amdgpu" ];
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
kernelModules = [ "uinput" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/New_York";
|
|
||||||
|
|
||||||
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
|
|
||||||
# Per-interface useDHCP will be mandatory in the future, so this generated config
|
|
||||||
# replicates the default behaviour.
|
|
||||||
networking = {
|
|
||||||
hostName = "%HOST%"; # Define your hostname.
|
|
||||||
useDHCP = false;
|
|
||||||
interfaces."%INTERFACE%".useDHCP = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
nixPath = [ "nixos-config=/home/${user}/.local/share/src/nixos-config:/etc/nixos" ];
|
|
||||||
settings = {
|
|
||||||
allowed-users = [ "${user}" ];
|
|
||||||
trusted-users = [
|
|
||||||
"@admin"
|
|
||||||
"${user}"
|
|
||||||
];
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
package = pkgs.nix;
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Manages keys and such
|
|
||||||
programs = {
|
|
||||||
gnupg.agent.enable = true;
|
|
||||||
|
|
||||||
# Needed for anything GTK related
|
|
||||||
dconf.enable = true;
|
|
||||||
|
|
||||||
# My shell
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
displayManager.defaultSession = "none+bspwm";
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# Uncomment these for AMD or Nvidia GPU
|
|
||||||
# videoDrivers = [ "amdgpu" ];
|
|
||||||
# videoDrivers = [ "nvidia" ];
|
|
||||||
|
|
||||||
# Uncomment this for Nvidia GPU
|
|
||||||
# This helps fix tearing of windows for Nvidia cards
|
|
||||||
# services.xserver.screenSection = ''
|
|
||||||
# Option "metamodes" "nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}"
|
|
||||||
# Option "AllowIndirectGLXProtocol" "off"
|
|
||||||
# Option "TripleBuffer" "on"
|
|
||||||
# '';
|
|
||||||
|
|
||||||
# LightDM Display Manager
|
|
||||||
displayManager.lightdm = {
|
|
||||||
enable = true;
|
|
||||||
greeters.slick.enable = true;
|
|
||||||
background = ../../modules/nixos/config/login-wallpaper.png;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Tiling window manager
|
|
||||||
windowManager.bspwm = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xkb = {
|
|
||||||
# Turn Caps Lock into Ctrl
|
|
||||||
layout = "us";
|
|
||||||
options = "ctrl:nocaps";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Better support for general peripherals
|
|
||||||
libinput.enable = true;
|
|
||||||
|
|
||||||
# Let's be able to SSH into this machine
|
|
||||||
openssh.enable = true;
|
|
||||||
|
|
||||||
# Sync state between machines
|
|
||||||
# Sync state between machines
|
|
||||||
syncthing = {
|
|
||||||
enable = true;
|
|
||||||
openDefaultPorts = true;
|
|
||||||
dataDir = "/home/${user}/.local/share/syncthing";
|
|
||||||
configDir = "/home/${user}/.config/syncthing";
|
|
||||||
user = "${user}";
|
|
||||||
group = "users";
|
|
||||||
guiAddress = "127.0.0.1:8384";
|
|
||||||
overrideFolders = true;
|
|
||||||
overrideDevices = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
devices = { };
|
|
||||||
options.globalAnnounceEnabled = false; # Only sync on LAN
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Picom, my window compositor with fancy effects
|
|
||||||
#
|
|
||||||
# Notes on writing exclude rules:
|
|
||||||
#
|
|
||||||
# class_g looks up index 1 in WM_CLASS value for an application
|
|
||||||
# class_i looks up index 0
|
|
||||||
#
|
|
||||||
# To find the value for a specific application, use `xprop` at the
|
|
||||||
# terminal and then click on a window of the application in question
|
|
||||||
#
|
|
||||||
picom = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
animations = true;
|
|
||||||
animation-stiffness = 300.0;
|
|
||||||
animation-dampening = 35.0;
|
|
||||||
animation-clamping = false;
|
|
||||||
animation-mass = 1;
|
|
||||||
animation-for-workspace-switch-in = "auto";
|
|
||||||
animation-for-workspace-switch-out = "auto";
|
|
||||||
animation-for-open-window = "slide-down";
|
|
||||||
animation-for-menu-window = "none";
|
|
||||||
animation-for-transient-window = "slide-down";
|
|
||||||
corner-radius = 12;
|
|
||||||
rounded-corners-exclude = [
|
|
||||||
"class_i = 'polybar'"
|
|
||||||
"class_g = 'i3lock'"
|
|
||||||
];
|
|
||||||
round-borders = 3;
|
|
||||||
round-borders-exclude = [ ];
|
|
||||||
round-borders-rule = [ ];
|
|
||||||
shadow = true;
|
|
||||||
shadow-radius = 8;
|
|
||||||
shadow-opacity = 0.4;
|
|
||||||
shadow-offset-x = -8;
|
|
||||||
shadow-offset-y = -8;
|
|
||||||
fading = false;
|
|
||||||
inactive-opacity = 0.8;
|
|
||||||
frame-opacity = 0.7;
|
|
||||||
inactive-opacity-override = false;
|
|
||||||
active-opacity = 1.0;
|
|
||||||
focus-exclude = [
|
|
||||||
];
|
|
||||||
|
|
||||||
opacity-rule = [
|
|
||||||
"100:class_g = 'i3lock'"
|
|
||||||
"60:class_g = 'Dunst'"
|
|
||||||
"100:class_g = 'Alacritty' && focused"
|
|
||||||
"90:class_g = 'Alacritty' && !focused"
|
|
||||||
];
|
|
||||||
|
|
||||||
blur-kern = "3x3box";
|
|
||||||
blur = {
|
|
||||||
method = "kernel";
|
|
||||||
strength = 8;
|
|
||||||
background = false;
|
|
||||||
background-frame = false;
|
|
||||||
background-fixed = false;
|
|
||||||
kern = "3x3box";
|
|
||||||
};
|
|
||||||
|
|
||||||
shadow-exclude = [
|
|
||||||
"class_g = 'Dunst'"
|
|
||||||
];
|
|
||||||
|
|
||||||
blur-background-exclude = [
|
|
||||||
"class_g = 'Dunst'"
|
|
||||||
];
|
|
||||||
|
|
||||||
backend = "glx";
|
|
||||||
vsync = false;
|
|
||||||
mark-wmwin-focused = true;
|
|
||||||
mark-ovredir-focused = true;
|
|
||||||
detect-rounded-corners = true;
|
|
||||||
detect-client-opacity = false;
|
|
||||||
detect-transient = true;
|
|
||||||
detect-client-leader = true;
|
|
||||||
use-damage = true;
|
|
||||||
log-level = "info";
|
|
||||||
|
|
||||||
wintypes = {
|
|
||||||
normal = {
|
|
||||||
fade = true;
|
|
||||||
shadow = false;
|
|
||||||
};
|
|
||||||
tooltip = {
|
|
||||||
fade = true;
|
|
||||||
shadow = false;
|
|
||||||
opacity = 0.75;
|
|
||||||
focus = true;
|
|
||||||
full-shadow = false;
|
|
||||||
};
|
|
||||||
dock = {
|
|
||||||
shadow = false;
|
|
||||||
};
|
|
||||||
dnd = {
|
|
||||||
shadow = false;
|
|
||||||
};
|
|
||||||
popup_menu = {
|
|
||||||
opacity = 1.0;
|
|
||||||
};
|
|
||||||
dropdown_menu = {
|
|
||||||
opacity = 1.0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gvfs.enable = true; # Mount, trash, and other functionalities
|
|
||||||
tumbler.enable = true; # Thumbnail support for images
|
|
||||||
|
|
||||||
# Emacs runs as a daemon
|
|
||||||
emacs = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.emacs-unstable;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# When emacs builds from no cache, it exceeds the 90s timeout default
|
|
||||||
systemd.user.services.emacs = {
|
|
||||||
serviceConfig.TimeoutStartSec = "7min";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable CUPS to print documents
|
|
||||||
# services.printing.enable = true;
|
|
||||||
# services.printing.drivers = [ pkgs.brlaser ]; # Brother printer driver
|
|
||||||
|
|
||||||
# Enable sound
|
|
||||||
# sound.enable = true;
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
# Video support
|
|
||||||
hardware = {
|
|
||||||
graphics.enable = true;
|
|
||||||
# nvidia.modesetting.enable = true;
|
|
||||||
|
|
||||||
# Enable Xbox support
|
|
||||||
# xone.enable = true;
|
|
||||||
|
|
||||||
# Crypto wallet support
|
|
||||||
ledger.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Add docker daemon
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
virtualisation.docker.logDriver = "json-file";
|
|
||||||
|
|
||||||
# It's me, it's you, it's everyone
|
|
||||||
users.users = {
|
|
||||||
${user} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [
|
|
||||||
"wheel" # Enable ‘sudo’ for the user.
|
|
||||||
"docker"
|
|
||||||
];
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
openssh.authorizedKeys.keys = keys;
|
|
||||||
};
|
|
||||||
|
|
||||||
root = {
|
|
||||||
openssh.authorizedKeys.keys = keys;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Don't require password for users in `wheel` group for these commands
|
|
||||||
security.sudo = {
|
|
||||||
enable = true;
|
|
||||||
extraRules = [
|
|
||||||
{
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
command = "${pkgs.systemd}/bin/reboot";
|
|
||||||
options = [ "NOPASSWD" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
groups = [ "wheel" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
dejavu_fonts
|
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
feather-font # from overlay
|
|
||||||
jetbrains-mono
|
|
||||||
font-awesome
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-emoji
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gitAndTools.gitFull
|
|
||||||
inetutils
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "21.05"; # Don't change this
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
{
|
||||||
|
homebrew = {
|
||||||
|
enable = true;
|
||||||
|
global = {
|
||||||
|
brewfile = true;
|
||||||
|
};
|
||||||
|
brews = [];
|
||||||
|
|
||||||
|
onActivation = {
|
||||||
|
cleanup = "uninstall";
|
||||||
|
autoUpdate = true;
|
||||||
|
upgrade = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
masApps = {
|
||||||
|
# These app IDs are from using the mas CLI app
|
||||||
|
# mas = mac app store
|
||||||
|
# https://github.com/mas-cli/mas
|
||||||
|
#
|
||||||
|
# $ nix shell nixpkgs#mas
|
||||||
|
# $ mas search <app name>
|
||||||
|
#
|
||||||
|
# If you have previously added these apps to your Mac App Store profile (but not installed them on this system),
|
||||||
|
# you may receive an error message "Redownload Unavailable with This Apple ID".
|
||||||
|
# This message is safe to ignore.
|
||||||
|
"1Password for Safari" = 1569813296; # (8.10.82)
|
||||||
|
"Affinity Designer 2" = 1616831348;
|
||||||
|
"Affinity Photo 2: Image Editor" = 1616822987;
|
||||||
|
"Affinity Publisher 2" = 1606941598;
|
||||||
|
# "DaisyDisk" = 409907375; # (4.32) # Don't use this, we need the official version that is not sandboxed
|
||||||
|
"Fantastical - Calendar" = 975937182;
|
||||||
|
"Fedistar" = 6445863996; # (1.13.1)
|
||||||
|
"Home Assistant" = 1099568401; # (2025.7.1)
|
||||||
|
"Ice Cubes for Mastodon" = 6444915884; # (1.11.3)
|
||||||
|
"LibreOffice" = 1630474372;
|
||||||
|
"Monal - XMPP Chatting " = 1637078500;
|
||||||
|
"MQTT Explorer" = 1455214828; # (0.3.5)
|
||||||
|
"Night Sky" = 475772902; # 475772902
|
||||||
|
"Native SQLite Manager" = 1416282836; # (1.31.0)
|
||||||
|
"Remarkable Desktop" = 1276493162; # (3.19.0)
|
||||||
|
"Slack for Desktop" = 803453959; # (4.45.60)
|
||||||
|
"WiFi Explorer: Scanner" = 494803304; # (3.5.6)
|
||||||
|
"Windows App Installer" = 1295203466; # (1.0.16)
|
||||||
|
"Wireguard" = 1451685025; # (1.0.16)
|
||||||
|
### "1Password: Password Manager" = 1511601750; # (8.11.0) Does not seem to insta
|
||||||
|
};
|
||||||
|
|
||||||
|
casks = [
|
||||||
|
# Development Tools
|
||||||
|
"arduino-ide"
|
||||||
|
"docker-desktop"
|
||||||
|
"iterm2"
|
||||||
|
"oracle-jdk"
|
||||||
|
"visual-studio-code"
|
||||||
|
|
||||||
|
# Creative tools
|
||||||
|
"blender"
|
||||||
|
"gimp"
|
||||||
|
"inkscape"
|
||||||
|
"vcv-rack"
|
||||||
|
#"affinity-designer"
|
||||||
|
#"affinity-photo"
|
||||||
|
#"affinity-publisher"
|
||||||
|
|
||||||
|
# Communication Tools
|
||||||
|
"adium"
|
||||||
|
"discord"
|
||||||
|
"signal"
|
||||||
|
"webex"
|
||||||
|
"whatsapp"
|
||||||
|
"zoom"
|
||||||
|
|
||||||
|
# Utility Tools
|
||||||
|
|
||||||
|
"blackhole-16ch"
|
||||||
|
"blackhole-2ch"
|
||||||
|
"box-drive"
|
||||||
|
"box-tools"
|
||||||
|
"daisydisk"
|
||||||
|
"karabiner-elements"
|
||||||
|
"keybase"
|
||||||
|
"moonlight"
|
||||||
|
"spamsieve"
|
||||||
|
"syncthing-app"
|
||||||
|
"synology-drive"
|
||||||
|
|
||||||
|
# Entertainment Tools
|
||||||
|
"qobuz"
|
||||||
|
"steam"
|
||||||
|
"handbrake-app"
|
||||||
|
"jellyfin-media-player"
|
||||||
|
"mediaelch"
|
||||||
|
"obs"
|
||||||
|
"vimediamanager"
|
||||||
|
"vlc"
|
||||||
|
|
||||||
|
# Productivity Tools
|
||||||
|
"1Password"
|
||||||
|
"bitwarden"
|
||||||
|
"calibre"
|
||||||
|
"dbeaver-community"
|
||||||
|
"element"
|
||||||
|
"gpg-suite"
|
||||||
|
"macdown-3000"
|
||||||
|
"mailmate@beta"
|
||||||
|
"orcaslicer"
|
||||||
|
"remanager"
|
||||||
|
"qmk-toolbox"
|
||||||
|
"smartsheet"
|
||||||
|
# "sqlitestudio" # Doesn't work without Rosetta
|
||||||
|
|
||||||
|
# "virtualbox" # build error?
|
||||||
|
"copilot-cli"
|
||||||
|
|
||||||
|
# Browsers
|
||||||
|
"brave-browser"
|
||||||
|
"firefox"
|
||||||
|
"google-chrome"
|
||||||
|
|
||||||
|
# x11
|
||||||
|
"xquartz"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
_:
|
|
||||||
|
|
||||||
[
|
|
||||||
# Development Tools
|
|
||||||
"homebrew/cask/docker"
|
|
||||||
"visual-studio-code"
|
|
||||||
"iterm2"
|
|
||||||
|
|
||||||
# Creatative tools
|
|
||||||
"spotify"
|
|
||||||
"blender"
|
|
||||||
"gimp"
|
|
||||||
"inkscape"
|
|
||||||
"vcv-rack"
|
|
||||||
"affinity-designer"
|
|
||||||
"affinity-photo"
|
|
||||||
"affinity-publisher"
|
|
||||||
|
|
||||||
# Communication Tools
|
|
||||||
"discord"
|
|
||||||
"notion"
|
|
||||||
"slack"
|
|
||||||
"signal"
|
|
||||||
"whatsapp"
|
|
||||||
"zoom"
|
|
||||||
"webex"
|
|
||||||
|
|
||||||
# Utility Tools
|
|
||||||
"syncthing"
|
|
||||||
"blackhole-16ch"
|
|
||||||
"blackhole-2ch"
|
|
||||||
"box-drive"
|
|
||||||
"box-tools"
|
|
||||||
"synology-drive"
|
|
||||||
"spamsieve"
|
|
||||||
"keybase"
|
|
||||||
"karabiner-elements"
|
|
||||||
|
|
||||||
# Entertainment Tools
|
|
||||||
"vlc"
|
|
||||||
"jellyfin-media-player"
|
|
||||||
"vimediamanager"
|
|
||||||
"mediaelch"
|
|
||||||
|
|
||||||
# Productivity Tools
|
|
||||||
"raycast"
|
|
||||||
"1Password"
|
|
||||||
"zotero"
|
|
||||||
"gpg-suite"
|
|
||||||
"home-assistant"
|
|
||||||
"Fantastical"
|
|
||||||
"Remarkable"
|
|
||||||
"mailmate"
|
|
||||||
"spamsieve"
|
|
||||||
"libreoffice"
|
|
||||||
"macdown"
|
|
||||||
"calibre"
|
|
||||||
"superslicer"
|
|
||||||
|
|
||||||
# Browsers
|
|
||||||
"google-chrome"
|
|
||||||
"firefox"
|
|
||||||
]
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
emacsOverlaySha256 = "06413w510jmld20i4lik9b36cfafm501864yq8k4vxl5r4hn0j0h";
|
emacsOverlaySha256 = "1923mymd50zpz0mq34jpcn6jgq6li92j8wvkarl0y594c01x52g9";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home-manager.backupFileExtension = "nix-backup";
|
home-manager.backupFileExtension = "nix-backup";
|
||||||
@@ -11,10 +11,12 @@ in
|
|||||||
allowBroken = true;
|
allowBroken = true;
|
||||||
allowInsecure = false;
|
allowInsecure = false;
|
||||||
allowUnsupportedSystem = true;
|
allowUnsupportedSystem = true;
|
||||||
|
permittedInsecurePackages = [
|
||||||
|
"electron-39.8.10"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
overlays =
|
overlays =
|
||||||
# Apply each overlay found in the /overlays directory
|
|
||||||
let path = ../../overlays; in with builtins;
|
let path = ../../overlays; in with builtins;
|
||||||
map (n: import (path + ("/" + n)))
|
map (n: import (path + ("/" + n)))
|
||||||
(filter (n: match ".*\\.nix" n != null ||
|
(filter (n: match ".*\\.nix" n != null ||
|
||||||
@@ -22,8 +24,9 @@ in
|
|||||||
(attrNames (readDir path)))
|
(attrNames (readDir path)))
|
||||||
|
|
||||||
++ [(import (builtins.fetchTarball {
|
++ [(import (builtins.fetchTarball {
|
||||||
url = "https://github.com/dustinlyons/emacs-overlay/archive/refs/heads/master.tar.gz";
|
url = "https://github.com/nix-community/emacs-overlay/archive/master.tar.gz";
|
||||||
sha256 = emacsOverlaySha256;
|
sha256 = emacsOverlaySha256;
|
||||||
}))];
|
}))
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -12,6 +12,8 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
|
# Shared file definitions moved into the Darwin module set.
|
||||||
|
|
||||||
# Raycast script so that "Run Emacs" is available and uses Emacs daemon
|
# Raycast script so that "Run Emacs" is available and uses Emacs daemon
|
||||||
"${xdg_dataHome}/bin/emacsclient" = {
|
"${xdg_dataHome}/bin/emacsclient" = {
|
||||||
executable = true;
|
executable = true;
|
||||||
|
|||||||
+455
-32
@@ -3,6 +3,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
home-manager,
|
home-manager,
|
||||||
|
llm-agents,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -11,14 +12,15 @@ let
|
|||||||
# Define the content of your file as a derivation
|
# Define the content of your file as a derivation
|
||||||
myEmacsLauncher = pkgs.writeScript "emacs-launcher.command" ''
|
myEmacsLauncher = pkgs.writeScript "emacs-launcher.command" ''
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
emacsclient -c -n &
|
emacs &
|
||||||
'';
|
'';
|
||||||
sharedFiles = import ../shared/files.nix { inherit config pkgs; };
|
|
||||||
additionalFiles = import ./files.nix { inherit user config pkgs; };
|
additionalFiles = import ./files.nix { inherit user config pkgs; };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./dock
|
./dock
|
||||||
|
./brewery.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# It me
|
# It me
|
||||||
@@ -27,28 +29,18 @@ in
|
|||||||
home = "/Users/${user}";
|
home = "/Users/${user}";
|
||||||
isHidden = false;
|
isHidden = false;
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILCEBZrQ9F3nLhEM9uqdPijut11vhYkdmLtj7gT/zgV3 Key Nov 2024"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA9vrzEHmWEX5sCVsp6J4tVrxEzzqMSRkijHEfVg2WrC cardno:36_431_811"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG5BytZleG7m1926MSNwVXyPJ0QD5Z919cFCp22BN5hV cardno:35_775_013"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAl/jn18uVPJ9Uyv8gqk80gVQaMHrcd1b+B/SB/6RsX8 cardno:36_431_751"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILVdAx+U1xhcJmh1hRaF0CVB0ivIF/U0oIbAWYPwko4iAAAABHNzaDo= Yubikey 35775013"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIjnJyJUDnia6ZWPRa5iSBKCb+DMGmFtiFa+9gkeiTwQAAAABHNzaDo= Yubikey 36431751"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFhuPQUHUHchx8wHVCciMi6etzZStkpECbG/r/1imy+kAAAABHNzaDo= Yubikey 36431881"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
homebrew = {
|
|
||||||
enable = true;
|
|
||||||
casks = pkgs.callPackage ./casks.nix { };
|
|
||||||
# onActivation.cleanup = "uninstall";
|
|
||||||
|
|
||||||
# These app IDs are from using the mas CLI app
|
|
||||||
# mas = mac app store
|
|
||||||
# https://github.com/mas-cli/mas
|
|
||||||
#
|
|
||||||
# $ nix shell nixpkgs#mas
|
|
||||||
# $ mas search <app name>
|
|
||||||
#
|
|
||||||
# If you have previously added these apps to your Mac App Store profile (but not installed them on this system),
|
|
||||||
# you may receive an error message "Redownload Unavailable with This Apple ID".
|
|
||||||
# This message is safe to ignore. (https://github.com/dustinlyons/nixos-config/issues/83)
|
|
||||||
|
|
||||||
masApps = {
|
|
||||||
"wireguard" = 1451685025;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable home-manager
|
# Enable home-manager
|
||||||
home-manager = {
|
home-manager = {
|
||||||
@@ -61,18 +53,435 @@ in
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
enableNixpkgsReleaseCheck = false;
|
enableNixpkgsReleaseCheck = false;
|
||||||
packages = pkgs.callPackage ./packages.nix { };
|
packages = pkgs.callPackage ./packages.nix { inherit llm-agents; };
|
||||||
file = lib.mkMerge [
|
file = additionalFiles // {
|
||||||
sharedFiles
|
"emacs-launcher.command".source = myEmacsLauncher;
|
||||||
additionalFiles
|
};
|
||||||
{ "emacs-launcher.command".source = myEmacsLauncher; }
|
|
||||||
];
|
|
||||||
|
|
||||||
stateVersion = "23.11";
|
stateVersion = "23.11";
|
||||||
};
|
};
|
||||||
programs = { } // import ../shared/home-manager.nix { inherit config pkgs lib; };
|
catppuccin = {
|
||||||
|
autoEnable = true;
|
||||||
|
enable = true;
|
||||||
|
flavor = "mocha";
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
cursor = {
|
||||||
|
style = "Block";
|
||||||
|
};
|
||||||
|
|
||||||
|
window = {
|
||||||
|
opacity = 1.0;
|
||||||
|
padding = {
|
||||||
|
x = 24;
|
||||||
|
y = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
font = {
|
||||||
|
normal = {
|
||||||
|
family = "MesloLGS NF";
|
||||||
|
style = "Regular";
|
||||||
|
};
|
||||||
|
size = lib.mkMerge [
|
||||||
|
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux 10)
|
||||||
|
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin 14)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
dynamic_padding = true;
|
||||||
|
decorations = "full";
|
||||||
|
title = "Terminal";
|
||||||
|
class = {
|
||||||
|
instance = "Alacritty";
|
||||||
|
general = "Alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
|
colors = {
|
||||||
|
primary = {
|
||||||
|
background = "0x1f2528";
|
||||||
|
foreground = "0xc0c5ce";
|
||||||
|
};
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
black = "0x1f2528";
|
||||||
|
red = "0xec5f67";
|
||||||
|
green = "0x99c794";
|
||||||
|
yellow = "0xfac863";
|
||||||
|
blue = "0x6699cc";
|
||||||
|
magenta = "0xc594c5";
|
||||||
|
cyan = "0x5fb3b3";
|
||||||
|
white = "0xc0c5ce";
|
||||||
|
};
|
||||||
|
|
||||||
|
bright = {
|
||||||
|
black = "0x65737e";
|
||||||
|
red = "0xec5f67";
|
||||||
|
green = "0x99c794";
|
||||||
|
yellow = "0xfac863";
|
||||||
|
blue = "0x6699cc";
|
||||||
|
magenta = "0xc594c5";
|
||||||
|
cyan = "0x5fb3b3";
|
||||||
|
white = "0xd8dee9";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enableDefaultConfig = false;
|
||||||
|
settings = {
|
||||||
|
"*" = {
|
||||||
|
forwardAgent = false;
|
||||||
|
addKeysToAgent = "no";
|
||||||
|
compression = false;
|
||||||
|
serverAliveInterval = 0;
|
||||||
|
serverAliveCountMax = 3;
|
||||||
|
hashKnownHosts = false;
|
||||||
|
userKnownHostsFile = "~/.ssh/known_hosts";
|
||||||
|
controlMaster = "no";
|
||||||
|
controlPath = "~/.ssh/master-%r@%n:%p";
|
||||||
|
controlPersist = "no";
|
||||||
|
};
|
||||||
|
"moonunit.kolkman.org" = {
|
||||||
|
hostname = "moonunit.kolkman.org";
|
||||||
|
user = "root";
|
||||||
|
port = 2222;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
includes = [
|
||||||
|
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux "/home/${user}/.ssh/config_external")
|
||||||
|
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "/Users/${user}/.ssh/config_external")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
gpg = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default-key = "01B157D574FEDBB2";
|
||||||
|
no-emit-version = true;
|
||||||
|
auto-key-retrieve = true;
|
||||||
|
personal-digest-preferences = "SHA512 SHA384 SHA256 SHA224";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
autocd = false;
|
||||||
|
cdpath = [ "~/.local/share/src" ];
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [ ];
|
||||||
|
theme = "mrtazz";
|
||||||
|
};
|
||||||
|
initContent =
|
||||||
|
let
|
||||||
|
zshConfigEarlyInit = lib.mkOrder 500 ''
|
||||||
|
if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]]; then
|
||||||
|
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||||
|
. /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$TERM" == "alacritty" ]]; then
|
||||||
|
export TERMINFO_DIRS="$HOME/.nix-profile/share/terminfo:/run/current-system/sw/share/terminfo:/nix/var/nix/profiles/default/share/terminfo:/usr/share/terminfo"
|
||||||
|
if ! infocmp alacritty >/dev/null 2>&1; then
|
||||||
|
export TERM="xterm-256color"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GPGAgent for SSH
|
||||||
|
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||||
|
|
||||||
|
# Define variables for directories
|
||||||
|
export PATH=$HOME/.pnpm-packages/bin:$HOME/.pnpm-packages:$PATH
|
||||||
|
export PATH=$HOME/.npm-packages/bin:$HOME/bin:$PATH
|
||||||
|
export PATH=$HOME/.local/share/bin:$PATH
|
||||||
|
export PATH=$HOME/.cargo/bin:$PATH
|
||||||
|
# Remove history data we don't want to see
|
||||||
|
export HISTIGNORE="pwd:ls:cd"
|
||||||
|
|
||||||
|
# Ripgrep alias
|
||||||
|
alias search=rg -p --glob '!node_modules/*' $@
|
||||||
|
|
||||||
|
# Emacs is my editor
|
||||||
|
export ALTERNATE_EDITOR="vim"
|
||||||
|
export EDITOR="emacs -nw"
|
||||||
|
export VISUAL="emacs"
|
||||||
|
# RMAPI remarkable
|
||||||
|
RMAPI_CONFIG=/Users/olaf/.config/rmapi
|
||||||
|
|
||||||
|
e() {
|
||||||
|
emacs -nw "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# nix shortcuts
|
||||||
|
shell() {
|
||||||
|
nix-shell '<nixpkgs>' -A "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# pnpm is a javascript package manager
|
||||||
|
alias pn=pnpm
|
||||||
|
alias px=pnpx
|
||||||
|
'';
|
||||||
|
zshConfigLastInit = lib.mkOrder 1500 ''
|
||||||
|
# Always color ls and group directories
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
lib.mkMerge [
|
||||||
|
zshConfigEarlyInit
|
||||||
|
zshConfigLastInit
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
ignores = [ "*.swp" ];
|
||||||
|
|
||||||
|
lfs = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
core = {
|
||||||
|
editor = "vim";
|
||||||
|
autocrlf = "input";
|
||||||
|
};
|
||||||
|
commit.gpgsign = false;
|
||||||
|
pull.rebase = true;
|
||||||
|
rebase.autoStash = true;
|
||||||
|
user = {
|
||||||
|
name = "olaf";
|
||||||
|
email = "olaf@xolx.nl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
signing = {
|
||||||
|
format = "openpgp";
|
||||||
|
key = null;
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vim = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
vim-airline
|
||||||
|
vim-airline-themes
|
||||||
|
vim-startify
|
||||||
|
vim-tmux-navigator
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
ignorecase = true;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
"" General
|
||||||
|
set number
|
||||||
|
set history=1000
|
||||||
|
set nocompatible
|
||||||
|
set modelines=0
|
||||||
|
set encoding=utf-8
|
||||||
|
set scrolloff=3
|
||||||
|
set showmode
|
||||||
|
set showcmd
|
||||||
|
set hidden
|
||||||
|
set wildmenu
|
||||||
|
set wildmode=list:longest
|
||||||
|
set cursorline
|
||||||
|
set ttyfast
|
||||||
|
set nowrap
|
||||||
|
set ruler
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
set laststatus=2
|
||||||
|
set clipboard=autoselect
|
||||||
|
|
||||||
|
" Dir stuff
|
||||||
|
set nobackup
|
||||||
|
set nowritebackup
|
||||||
|
set noswapfile
|
||||||
|
set backupdir=~/.config/vim/backups
|
||||||
|
set directory=~/.config/vim/swap
|
||||||
|
|
||||||
|
" Relative line numbers for easy movement
|
||||||
|
set relativenumber
|
||||||
|
set rnu
|
||||||
|
|
||||||
|
"" Whitespace rules
|
||||||
|
set tabstop=8
|
||||||
|
set shiftwidth=2
|
||||||
|
set softtabstop=2
|
||||||
|
set expandtab
|
||||||
|
|
||||||
|
"" Searching
|
||||||
|
set incsearch
|
||||||
|
set gdefault
|
||||||
|
|
||||||
|
"" Statusbar
|
||||||
|
set nocompatible " Disable vi-compatibility
|
||||||
|
set laststatus=2 " Always show the statusline
|
||||||
|
let g:airline_theme='bubblegum'
|
||||||
|
let g:airline_powerline_fonts = 1
|
||||||
|
|
||||||
|
"" Local keys and such
|
||||||
|
let mapleader=","
|
||||||
|
let maplocalleader=" "
|
||||||
|
|
||||||
|
"" Change cursor on mode
|
||||||
|
:autocmd InsertEnter * set cul
|
||||||
|
:autocmd InsertLeave * set nocul
|
||||||
|
|
||||||
|
"" File-type highlighting and configuration
|
||||||
|
syntax on
|
||||||
|
filetype on
|
||||||
|
filetype plugin on
|
||||||
|
filetype indent on
|
||||||
|
|
||||||
|
"" Paste from clipboard
|
||||||
|
nnoremap <Leader>, "+gP
|
||||||
|
|
||||||
|
"" Copy from clipboard
|
||||||
|
xnoremap <Leader>. "+y
|
||||||
|
|
||||||
|
"" Move cursor by display lines when wrapping
|
||||||
|
nnoremap j gj
|
||||||
|
nnoremap k gk
|
||||||
|
|
||||||
|
"" Map leader-q to quit out of window
|
||||||
|
nnoremap <leader>q :q<cr>
|
||||||
|
|
||||||
|
"" Move around split
|
||||||
|
nnoremap <C-h> <C-w>h
|
||||||
|
nnoremap <C-j> <C-w>j
|
||||||
|
nnoremap <C-k> <C-w>k
|
||||||
|
nnoremap <C-l> <C-w>l
|
||||||
|
|
||||||
|
"" Easier to yank entire line
|
||||||
|
nnoremap Y y$
|
||||||
|
|
||||||
|
"" Move buffers
|
||||||
|
nnoremap <tab> :bnext<cr>
|
||||||
|
nnoremap <S-tab> :bprev<cr>
|
||||||
|
|
||||||
|
"" Like a boss, sudo AFTER opening the file to write
|
||||||
|
cmap w!! w !sudo tee % >/dev/null
|
||||||
|
|
||||||
|
let g:startify_lists = [
|
||||||
|
\ { 'type': 'dir', 'header': [' Current Directory '. getcwd()] },
|
||||||
|
\ { 'type': 'sessions', 'header': [' Sessions'] },
|
||||||
|
\ { 'type': 'bookmarks', 'header': [' Bookmarks'] }
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
let g:startify_bookmarks = [
|
||||||
|
\ '~/.local/share/src',
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
let g:airline_theme='bubblegum'
|
||||||
|
let g:airline_powerline_fonts = 1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
tmux = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
vim-tmux-navigator
|
||||||
|
sensible
|
||||||
|
yank
|
||||||
|
prefix-highlight
|
||||||
|
{
|
||||||
|
plugin = power-theme;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @tmux_power_theme 'gold'
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = resurrect; # Used by tmux-continuum
|
||||||
|
|
||||||
|
# Use XDG data directory
|
||||||
|
# https://github.com/tmux-plugins/tmux-resurrect/issues/348
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @resurrect-dir '$HOME/.cache/tmux/resurrect'
|
||||||
|
set -g @resurrect-capture-pane-contents 'on'
|
||||||
|
set -g @resurrect-pane-contents-area 'visible'
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = continuum;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @continuum-restore 'on'
|
||||||
|
set -g @continuum-save-interval '5' # minutes
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
terminal = "screen-256color";
|
||||||
|
prefix = "C-x";
|
||||||
|
escapeTime = 10;
|
||||||
|
historyLimit = 50000;
|
||||||
|
extraConfig = ''
|
||||||
|
# Remove Vim mode delays
|
||||||
|
set -g focus-events on
|
||||||
|
|
||||||
|
# Enable full mouse support
|
||||||
|
set -g mouse on
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Key bindings
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Unbind default keys
|
||||||
|
unbind C-b
|
||||||
|
unbind '"'
|
||||||
|
unbind %
|
||||||
|
|
||||||
|
# Split panes, vertical or horizontal
|
||||||
|
bind-key x split-window -v
|
||||||
|
bind-key v split-window -h
|
||||||
|
|
||||||
|
# Move around panes with vim-like bindings (h,j,k,l)
|
||||||
|
bind-key -n M-k select-pane -U
|
||||||
|
bind-key -n M-h select-pane -L
|
||||||
|
bind-key -n M-j select-pane -D
|
||||||
|
bind-key -n M-l select-pane -R
|
||||||
|
|
||||||
|
# Smart pane switching with awareness of Vim splits.
|
||||||
|
# This is copy paste from https://github.com/christoomey/vim-tmux-navigator
|
||||||
|
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
||||||
|
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
|
||||||
|
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
||||||
|
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
||||||
|
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
||||||
|
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
||||||
|
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
|
||||||
|
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
|
||||||
|
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
|
||||||
|
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
|
||||||
|
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
|
||||||
|
|
||||||
|
bind-key -T copy-mode-vi 'C-h' select-pane -L
|
||||||
|
bind-key -T copy-mode-vi 'C-j' select-pane -D
|
||||||
|
bind-key -T copy-mode-vi 'C-k' select-pane -U
|
||||||
|
bind-key -T copy-mode-vi 'C-l' select-pane -R
|
||||||
|
bind-key -T copy-mode-vi 'C-\' select-pane -l
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
extraConfig = ''
|
||||||
|
default-cache-ttl 600
|
||||||
|
max-cache-ttl 7200
|
||||||
|
pinentry-program /Users/olaf/.nix-profile/bin/pinentry-mac
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Marked broken Oct 20, 2022 check later to remove this
|
# Marked broken Oct 20, 2022 check later to remove this
|
||||||
# https://github.com/nix-community/home-manager/issues/3344
|
# https://github.com/nix-community/home-manager/issues/3344
|
||||||
@@ -85,26 +494,37 @@ in
|
|||||||
dock = {
|
dock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
entries = [
|
entries = [
|
||||||
|
{ path = "/System/Applications/Launchpad.app/"; }
|
||||||
{ path = "/System/Applications/Mail.app/"; }
|
{ path = "/System/Applications/Mail.app/"; }
|
||||||
{ path = "/Applications/MailMate.app/"; }
|
{ path = "/Applications/MailMate.app/"; }
|
||||||
{ path = "/Applications/1Password.app/"; }
|
{ path = "/Applications/1Password.app/"; }
|
||||||
|
{ path = "/Applications/Bitwarden.app"; }
|
||||||
|
{ path = "/Applications/Calendar.app/"; }
|
||||||
|
{ path = "/Applications/Notes.app/"; }
|
||||||
{ path = "/Applications/Firefox.app/"; }
|
{ path = "/Applications/Firefox.app/"; }
|
||||||
|
|
||||||
{ path = "/Applications/Slack.app/"; }
|
{ path = "/Applications/Slack.app/"; }
|
||||||
{
|
{
|
||||||
path = "/Applications/zoom.us.app/";
|
path = "/Applications/zoom.us.app/";
|
||||||
options = " -l Zooom";
|
options = " -l Zoom";
|
||||||
}
|
}
|
||||||
{ path = "/System/Applications/Messages.app/"; }
|
{ path = "/System/Applications/Messages.app/"; }
|
||||||
|
|
||||||
{ path = "/Applications/iTerm.app/"; }
|
{ path = "/Applications/iTerm.app/"; }
|
||||||
{ path = "/Applications/Fantastical.app/"; }
|
{ path = "/Applications/Fantastical.app/"; }
|
||||||
# { path = "${pkgs.alacritty}/Applications/Alacritty.app/"; }
|
{ path = "${pkgs.alacritty}/Applications/Alacritty.app/"; }
|
||||||
{ path = "/Applications/Spotify.app/"; }
|
# { path = "/Applications/Spotify.app/"; }
|
||||||
|
{ path = "/Applications/Qobuz.app/"; }
|
||||||
{ path = "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/"; }
|
{ path = "/System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/"; }
|
||||||
|
{
|
||||||
|
path = "/Applications/Brave Browser.app/";
|
||||||
|
options = "-l Brave";
|
||||||
|
}
|
||||||
{ path = "/System/Applications/Photos.app/"; }
|
{ path = "/System/Applications/Photos.app/"; }
|
||||||
{ path = "/System/Applications/System Settings.app/"; }
|
{ path = "/System/Applications/System Settings.app/"; }
|
||||||
{ path = "/Applications/Signal.app/"; }
|
{ path = "/Applications/Signal.app/"; }
|
||||||
{ path = "/Applications/WhatsApp.app/"; }
|
{ path = "/Applications/WhatsApp.app/"; }
|
||||||
|
{ path = "/Applications/Ice\ Cubes.app/"; }
|
||||||
|
|
||||||
{
|
{
|
||||||
path = "/Applications/Jellyfin Media Player.app/";
|
path = "/Applications/Jellyfin Media Player.app/";
|
||||||
@@ -117,7 +537,10 @@ in
|
|||||||
{ path = "/Applications/Microsoft Word.app/"; }
|
{ path = "/Applications/Microsoft Word.app/"; }
|
||||||
{ path = "/Applications/Microsoft PowerPoint.app/"; }
|
{ path = "/Applications/Microsoft PowerPoint.app/"; }
|
||||||
{ path = "/Applications/Microsoft Teams.app/"; }
|
{ path = "/Applications/Microsoft Teams.app/"; }
|
||||||
|
{ path = "/Applications/Monal.app/"; }
|
||||||
{ path = "/System/Applications/Utilities/Screen Sharing.app/"; }
|
{ path = "/System/Applications/Utilities/Screen Sharing.app/"; }
|
||||||
|
{ path = "/run/current-system/Applications/Emacs.app/"; }
|
||||||
|
{ path = "/run/current-system/Applications/Zotero.app"; }
|
||||||
{
|
{
|
||||||
path = "/Applications/";
|
path = "/Applications/";
|
||||||
section = "others";
|
section = "others";
|
||||||
|
|||||||
+198
-7
@@ -1,12 +1,203 @@
|
|||||||
{ pkgs }:
|
{ pkgs, llm-agents }:
|
||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
let
|
[
|
||||||
shared-packages = import ../shared/packages.nix { inherit pkgs; };
|
# Nix
|
||||||
in
|
nixd
|
||||||
shared-packages
|
|
||||||
++ [
|
|
||||||
dockutil
|
|
||||||
mas
|
mas
|
||||||
|
|
||||||
|
# X11
|
||||||
|
libx11
|
||||||
|
libxt
|
||||||
|
libxext
|
||||||
|
libxrender
|
||||||
|
libxrandr
|
||||||
|
xterm
|
||||||
|
|
||||||
|
# security and some such
|
||||||
|
# bitwarden-desktop #Does not compile properly
|
||||||
|
# bitwarden-cli # Fails on i386
|
||||||
|
yubikey-manager # provides ykman
|
||||||
|
pinentry_mac
|
||||||
|
|
||||||
|
# General packages for development and system management
|
||||||
|
alacritty
|
||||||
|
ansible
|
||||||
|
aspell
|
||||||
|
aspellDicts.en
|
||||||
|
bash-completion
|
||||||
|
bat
|
||||||
|
btop
|
||||||
|
coreutils
|
||||||
|
difftastic
|
||||||
|
freerdp
|
||||||
|
htop
|
||||||
|
killall
|
||||||
|
minicom
|
||||||
|
mtr
|
||||||
|
ncdu
|
||||||
|
nodejs
|
||||||
|
|
||||||
|
fastfetch
|
||||||
|
nixfmt
|
||||||
|
openssh
|
||||||
|
postgresql
|
||||||
|
sqlite
|
||||||
|
unrar
|
||||||
|
wget
|
||||||
|
zip
|
||||||
|
|
||||||
|
# Development
|
||||||
|
act
|
||||||
|
autoconf
|
||||||
|
autoconf-archive
|
||||||
|
automake
|
||||||
|
ccache
|
||||||
|
clang-tools
|
||||||
|
cmake
|
||||||
|
dfu-util
|
||||||
|
go
|
||||||
|
jd-diff-patch # json diff patch
|
||||||
|
jq # json tool
|
||||||
|
llvm
|
||||||
|
nasm
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
|
||||||
|
# Encryption and security tools
|
||||||
|
age
|
||||||
|
gnupg
|
||||||
|
just
|
||||||
|
libfido2
|
||||||
|
sops
|
||||||
|
|
||||||
|
# Cloud-related tools and SDKs
|
||||||
|
docker
|
||||||
|
docker-compose
|
||||||
|
|
||||||
|
# Media-related packages
|
||||||
|
fd
|
||||||
|
ffmpeg
|
||||||
|
imagemagick
|
||||||
|
|
||||||
|
# Text and terminal utilities
|
||||||
|
hunspell
|
||||||
|
iftop
|
||||||
|
inetutils # includes Telnet
|
||||||
|
ripgrep
|
||||||
|
tmux
|
||||||
|
tree
|
||||||
|
unzip
|
||||||
|
|
||||||
|
# Python packages
|
||||||
|
virtualenv
|
||||||
|
uv
|
||||||
|
|
||||||
|
(python3.withPackages (
|
||||||
|
python-pkgs: with python-pkgs; [
|
||||||
|
bidict
|
||||||
|
blinker
|
||||||
|
certifi
|
||||||
|
charset-normalizer
|
||||||
|
click
|
||||||
|
flask
|
||||||
|
flask-socketio
|
||||||
|
h11
|
||||||
|
idna
|
||||||
|
importlib-metadata
|
||||||
|
itsdangerous
|
||||||
|
jinja2
|
||||||
|
markupsafe
|
||||||
|
mercantile
|
||||||
|
mlx-lm
|
||||||
|
numpy
|
||||||
|
pandas
|
||||||
|
pillow
|
||||||
|
python-engineio
|
||||||
|
python-socketio
|
||||||
|
requests
|
||||||
|
shapely
|
||||||
|
simple-websocket
|
||||||
|
tkinter
|
||||||
|
tqdm
|
||||||
|
urllib3
|
||||||
|
werkzeug
|
||||||
|
wsproto
|
||||||
|
zipp
|
||||||
|
]
|
||||||
|
))
|
||||||
|
|
||||||
|
# LLM
|
||||||
|
ollama # Launchd definition in hosts/darwin/default.nix
|
||||||
|
|
||||||
|
# Social
|
||||||
|
pidgin
|
||||||
|
|
||||||
|
# Rust Related
|
||||||
|
rustc
|
||||||
|
cargo
|
||||||
|
platformio-core
|
||||||
|
|
||||||
|
# XML, Tex and LaTex
|
||||||
|
mdbook
|
||||||
|
pandoc
|
||||||
|
rubyPackages_3_4.kramdown-rfc2629
|
||||||
|
tex-fmt
|
||||||
|
xml2rfc
|
||||||
|
zotero
|
||||||
|
|
||||||
|
(texlive.combine {
|
||||||
|
inherit (texlive)
|
||||||
|
apa6
|
||||||
|
apa7
|
||||||
|
apacite
|
||||||
|
biber
|
||||||
|
biblatex
|
||||||
|
biblatex-apa6
|
||||||
|
bibunits
|
||||||
|
catchfile
|
||||||
|
cjk
|
||||||
|
comment
|
||||||
|
courier
|
||||||
|
csquotes
|
||||||
|
draftwatermark
|
||||||
|
endfloat
|
||||||
|
enumitem
|
||||||
|
fancyhdr
|
||||||
|
fontawesome5
|
||||||
|
footmisc
|
||||||
|
footnotehyper
|
||||||
|
geometry
|
||||||
|
ifmtarg
|
||||||
|
latexmk
|
||||||
|
lipsum
|
||||||
|
lualatex-math
|
||||||
|
makecell
|
||||||
|
microtype
|
||||||
|
multirow
|
||||||
|
nowidow
|
||||||
|
parskip
|
||||||
|
ragged2e
|
||||||
|
scalerel
|
||||||
|
scheme-small
|
||||||
|
selnolig
|
||||||
|
sourcesanspro
|
||||||
|
svg
|
||||||
|
tcolorbox
|
||||||
|
texcount
|
||||||
|
threeparttable
|
||||||
|
tikzfill
|
||||||
|
titlesec
|
||||||
|
titling
|
||||||
|
tocloft
|
||||||
|
transparent
|
||||||
|
upquote
|
||||||
|
url
|
||||||
|
xecjk
|
||||||
|
xifthen
|
||||||
|
xurl
|
||||||
|
;
|
||||||
|
})
|
||||||
|
|
||||||
|
dockutil
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
## Layout
|
|
||||||
```
|
|
||||||
.
|
|
||||||
├── config # Config files not written in Nix
|
|
||||||
├── default.nix # Defines module, system-level config,
|
|
||||||
├── disk-config.nix # Disks, partitions, and filesystems
|
|
||||||
├── files.nix # Non-Nix, static configuration files (now immutable!)
|
|
||||||
├── home-manager.nix # Defines user programs
|
|
||||||
├── packages.nix # List of packages to install for NixOS
|
|
||||||
├── secrets.nix # Age-encrypted secrets with agenix
|
|
||||||
```
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 692 KiB |
@@ -1,498 +0,0 @@
|
|||||||
;; ┌────────────────────────────────────────────────────┐
|
|
||||||
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▀▄░█▀█░█▀▄░█▀▀│
|
|
||||||
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█▀▄░█▀█░█▀▄░▀▀█│
|
|
||||||
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀░░▀░▀░▀░▀░▀▀▀│
|
|
||||||
;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░│
|
|
||||||
;; └────────────────────────────────────────────────────┘
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[bar]
|
|
||||||
fill =
|
|
||||||
empty =
|
|
||||||
indicator = ⏽
|
|
||||||
; Nerd font : , ⏽, 樂 籠 錄 , 雷 絛
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/volume]
|
|
||||||
type = internal/alsa
|
|
||||||
|
|
||||||
; Soundcard to be used
|
|
||||||
; Usually in the format hw:# where # is the card number
|
|
||||||
; You can find the different card numbers in `/proc/asound/cards`
|
|
||||||
master-soundcard = default
|
|
||||||
speaker-soundcard = default
|
|
||||||
headphone-soundcard = default
|
|
||||||
|
|
||||||
; Name of the master, speaker and headphone mixers
|
|
||||||
; Use the following command to list available mixer controls:
|
|
||||||
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
|
|
||||||
; If master, speaker or headphone-soundcard isn't the default,
|
|
||||||
; use `amixer -c # scontrols` instead where # is the number
|
|
||||||
; of the master, speaker or headphone soundcard respectively
|
|
||||||
;
|
|
||||||
; Default: Master
|
|
||||||
master-mixer = Master
|
|
||||||
|
|
||||||
; Optionally define speaker and headphone mixers
|
|
||||||
; Default: none
|
|
||||||
;;speaker-mixer = Speaker
|
|
||||||
; Default: none
|
|
||||||
;;headphone-mixer = Headphone
|
|
||||||
|
|
||||||
; NOTE: This is required if headphone_mixer is defined
|
|
||||||
; Use the following command to list available device controls
|
|
||||||
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
|
|
||||||
; You may also need to use `amixer -c # controls` as above for the mixer names
|
|
||||||
; Default: none
|
|
||||||
;;headphone-id = 9
|
|
||||||
|
|
||||||
; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
|
|
||||||
; Default: false
|
|
||||||
;;mapped = true
|
|
||||||
|
|
||||||
; Interval for volume increase/decrease (in percent points)
|
|
||||||
; Default: 5
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-volume> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-volume = <ramp-volume> <bar-volume>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-muted> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-muted = <label-muted>
|
|
||||||
format-muted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default
|
|
||||||
label-muted = " Muted"
|
|
||||||
label-muted-foreground = ${color.foreground-alt}
|
|
||||||
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-volume-0 =
|
|
||||||
ramp-volume-1 =
|
|
||||||
ramp-volume-2 =
|
|
||||||
|
|
||||||
; Only applies if <bar-volume> is used
|
|
||||||
bar-volume-width = 10
|
|
||||||
bar-volume-gradient = false
|
|
||||||
|
|
||||||
bar-volume-indicator = ${bar.indicator}
|
|
||||||
bar-volume-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-volume-fill = ${bar.fill}
|
|
||||||
bar-volume-foreground-0 = ${color.foreground}
|
|
||||||
bar-volume-foreground-1 = ${color.foreground}
|
|
||||||
bar-volume-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-volume-empty = ${bar.empty}
|
|
||||||
bar-volume-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
; If defined, it will replace <ramp-volume> when
|
|
||||||
; headphones are plugged in to `headphone_control_numid`
|
|
||||||
; If undefined, <ramp-volume> will be used for both
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-headphones-0 =
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/brightness]
|
|
||||||
;type = internal/xbacklight
|
|
||||||
type = internal/backlight
|
|
||||||
|
|
||||||
; Use the following command to list available cards:
|
|
||||||
; $ ls -1 /sys/class/backlight/
|
|
||||||
;card = intel_backlight
|
|
||||||
card = amdgpu_bl0
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <ramp>
|
|
||||||
; <bar>
|
|
||||||
format = <ramp> <bar>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label = %percentage%%
|
|
||||||
|
|
||||||
; Only applies if <ramp> is used
|
|
||||||
ramp-0 =
|
|
||||||
ramp-1 =
|
|
||||||
ramp-2 =
|
|
||||||
ramp-3 =
|
|
||||||
ramp-4 =
|
|
||||||
|
|
||||||
; Only applies if <bar> is used
|
|
||||||
bar-width = 10
|
|
||||||
bar-gradient = false
|
|
||||||
|
|
||||||
bar-indicator = ${bar.indicator}
|
|
||||||
bar-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-fill = ${bar.fill}
|
|
||||||
bar-foreground-0 = ${color.foreground}
|
|
||||||
bar-foreground-1 = ${color.foreground}
|
|
||||||
bar-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-empty = ${bar.empty}
|
|
||||||
bar-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/battery_bar]
|
|
||||||
type = internal/battery
|
|
||||||
|
|
||||||
; This is useful in case the battery never reports 100% charge
|
|
||||||
full-at = 99
|
|
||||||
|
|
||||||
; Use the following command to list batteries and adapters:
|
|
||||||
; $ ls -1 /sys/class/power_supply/
|
|
||||||
battery = BAT1
|
|
||||||
adapter = ACAD
|
|
||||||
|
|
||||||
; If an inotify event haven't been reported in this many
|
|
||||||
; seconds, manually poll for new values.
|
|
||||||
;
|
|
||||||
; Needed as a fallback for systems that don't report events
|
|
||||||
; on sysfs/procfs.
|
|
||||||
;
|
|
||||||
; Disable polling by setting the interval to 0.
|
|
||||||
;
|
|
||||||
; Default: 5
|
|
||||||
poll-interval = 2
|
|
||||||
|
|
||||||
; see "man date" for details on how to format the time string
|
|
||||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
|
||||||
; Default: %H:%M:%S
|
|
||||||
time-format = %H:%M
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-charging> (default)
|
|
||||||
; <bar-capacity>
|
|
||||||
; <ramp-capacity>
|
|
||||||
; <animation-charging>
|
|
||||||
format-charging = <bar-capacity>
|
|
||||||
format-charging-prefix = " "
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-discharging> (default)
|
|
||||||
; <bar-capacity>
|
|
||||||
; <ramp-capacity>
|
|
||||||
; <animation-discharging>
|
|
||||||
format-discharging = <bar-capacity>
|
|
||||||
format-discharging-prefix = " "
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-full> (default)
|
|
||||||
; <bar-capacity>
|
|
||||||
; <ramp-capacity>
|
|
||||||
format-full = <label-full>
|
|
||||||
format-full-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
; %time%
|
|
||||||
; %consumption% (shows current charge rate in watts)
|
|
||||||
|
|
||||||
label-charging = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
; %time%
|
|
||||||
; %consumption% (shows current discharge rate in watts)
|
|
||||||
label-discharging = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-full = " Full"
|
|
||||||
|
|
||||||
; Only applies if <bar-capacity> is used
|
|
||||||
bar-capacity-width = 10
|
|
||||||
bar-capacity-gradient = false
|
|
||||||
|
|
||||||
bar-capacity-indicator = ${bar.indicator}
|
|
||||||
bar-capacity-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-capacity-fill = ${bar.fill}
|
|
||||||
bar-capacity-foreground-0 = ${color.foreground}
|
|
||||||
bar-capacity-foreground-1 = ${color.foreground}
|
|
||||||
bar-capacity-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-capacity-empty = ${bar.empty}
|
|
||||||
bar-capacity-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/cpu_bar]
|
|
||||||
type = internal/cpu
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 0.5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-load>
|
|
||||||
; <ramp-load>
|
|
||||||
; <ramp-coreload>
|
|
||||||
;;format = <label> <ramp-coreload>
|
|
||||||
format = <bar-load> <label>
|
|
||||||
format-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default) - total cpu load averaged over all cores
|
|
||||||
; %percentage-sum% - Cumulative load on all cores
|
|
||||||
; %percentage-cores% - load percentage for each core
|
|
||||||
; %percentage-core[1-9]% - load percentage for specific core
|
|
||||||
label = "%percentage%%"
|
|
||||||
|
|
||||||
; Only applies if <bar-load> is used
|
|
||||||
bar-load-width = 10
|
|
||||||
bar-load-gradient = false
|
|
||||||
|
|
||||||
bar-load-indicator = ${bar.indicator}
|
|
||||||
bar-load-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-load-fill = ${bar.fill}
|
|
||||||
bar-load-foreground-0 = ${color.foreground}
|
|
||||||
bar-load-foreground-1 = ${color.foreground}
|
|
||||||
bar-load-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-load-empty = ${bar.empty}
|
|
||||||
bar-load-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/filesystem_bar]
|
|
||||||
type = internal/fs
|
|
||||||
|
|
||||||
; Mountpoints to display
|
|
||||||
mount-0 = /
|
|
||||||
;;mount-1 = /home
|
|
||||||
;;mount-2 = /var
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 30
|
|
||||||
interval = 30
|
|
||||||
|
|
||||||
; Display fixed precision values
|
|
||||||
; Default: false
|
|
||||||
fixed-values = false
|
|
||||||
|
|
||||||
; Spacing between entries
|
|
||||||
; Default: 2
|
|
||||||
;;spacing = 4
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-mounted> (default)
|
|
||||||
; <bar-free>
|
|
||||||
; <bar-used>
|
|
||||||
; <ramp-capacity>
|
|
||||||
format-mounted = <bar-used> <label-mounted>
|
|
||||||
format-mounted-prefix = " "
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-unmounted> (default)
|
|
||||||
format-unmounted = <label-unmounted>
|
|
||||||
format-unmounted-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; %type%
|
|
||||||
; %fsname%
|
|
||||||
; %percentage_free%
|
|
||||||
; %percentage_used%
|
|
||||||
; %total%
|
|
||||||
; %free%
|
|
||||||
; %used%
|
|
||||||
; Default: %mountpoint% %percentage_free%%
|
|
||||||
label-mounted = %used%/%total%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; Default: %mountpoint% is not mounted
|
|
||||||
label-unmounted = "%mountpoint%: not mounted"
|
|
||||||
|
|
||||||
; Only applies if <bar-used> is used
|
|
||||||
bar-used-width = 10
|
|
||||||
bar-used-gradient = false
|
|
||||||
|
|
||||||
bar-used-indicator = ${bar.indicator}
|
|
||||||
bar-used-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-fill = ${bar.fill}
|
|
||||||
bar-used-foreground-0 = ${color.foreground}
|
|
||||||
bar-used-foreground-1 = ${color.foreground}
|
|
||||||
bar-used-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-empty = ${bar.empty}
|
|
||||||
bar-used-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/memory_bar]
|
|
||||||
type = internal/memory
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 2
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-used>
|
|
||||||
; <bar-free>
|
|
||||||
; <ramp-used>
|
|
||||||
; <ramp-free>
|
|
||||||
; <bar-swap-used>
|
|
||||||
; <bar-swap-free>
|
|
||||||
; <ramp-swap-used>
|
|
||||||
; <ramp-swap-free>
|
|
||||||
format = <bar-used> <label>
|
|
||||||
format-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage_used% (default)
|
|
||||||
; %percentage_free%
|
|
||||||
; %gb_used%
|
|
||||||
; %gb_free%
|
|
||||||
; %gb_total%
|
|
||||||
; %mb_used%
|
|
||||||
; %mb_free%
|
|
||||||
; %mb_total%
|
|
||||||
; %percentage_swap_used%
|
|
||||||
; %percentage_swap_free%
|
|
||||||
; %mb_swap_total%
|
|
||||||
; %mb_swap_free%
|
|
||||||
; %mb_swap_used%
|
|
||||||
; %gb_swap_total%
|
|
||||||
; %gb_swap_free%
|
|
||||||
; %gb_swap_used%
|
|
||||||
|
|
||||||
label = "%mb_used%"
|
|
||||||
|
|
||||||
; Only applies if <bar-used> is used
|
|
||||||
bar-used-width = 10
|
|
||||||
bar-used-gradient = false
|
|
||||||
|
|
||||||
bar-used-indicator = ${bar.indicator}
|
|
||||||
bar-used-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-fill = ${bar.fill}
|
|
||||||
bar-used-foreground-0 = ${color.foreground}
|
|
||||||
bar-used-foreground-1 = ${color.foreground}
|
|
||||||
bar-used-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-empty = ${bar.empty}
|
|
||||||
bar-used-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/mpd_bar]
|
|
||||||
type = internal/mpd
|
|
||||||
|
|
||||||
; Host where mpd is running (either ip or domain name)
|
|
||||||
; Can also be the full path to a unix socket where mpd is running.
|
|
||||||
;;host = 127.0.0.1
|
|
||||||
;;port = 6600
|
|
||||||
;;password = mysecretpassword
|
|
||||||
|
|
||||||
; Seconds to sleep between progressbar/song timer sync
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-song> (default)
|
|
||||||
; <label-time>
|
|
||||||
; <bar-progress>
|
|
||||||
; <toggle> - gets replaced with <icon-(pause|play)>
|
|
||||||
; <toggle-stop> - gets replaced with <icon-(stop|play)>
|
|
||||||
; <icon-random>
|
|
||||||
; <icon-repeat>
|
|
||||||
; <icon-repeatone> (deprecated)
|
|
||||||
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
|
|
||||||
; <icon-consume>
|
|
||||||
; <icon-prev>
|
|
||||||
; <icon-stop>
|
|
||||||
; <icon-play>
|
|
||||||
; <icon-pause>
|
|
||||||
; <icon-next>
|
|
||||||
; <icon-seekb>
|
|
||||||
; <icon-seekf>
|
|
||||||
format-online = <label-song> <bar-progress> <label-time>
|
|
||||||
format-online-prefix =
|
|
||||||
|
|
||||||
;format-playing = ${self.format-online}
|
|
||||||
;format-paused = ${self.format-online}
|
|
||||||
;format-stopped = ${self.format-online}
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-offline>
|
|
||||||
format-offline = <label-offline>
|
|
||||||
format-offline-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %artist%
|
|
||||||
; %album-artist%
|
|
||||||
; %album%
|
|
||||||
; %date%
|
|
||||||
; %title%
|
|
||||||
; Default: %artist% - %title%
|
|
||||||
label-song = " %artist% - %title%"
|
|
||||||
label-song-maxlen = 25
|
|
||||||
label-song-ellipsis = true
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %elapsed%
|
|
||||||
; %total%
|
|
||||||
; Default: %elapsed% / %total%
|
|
||||||
label-time = %elapsed% / %total%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; None
|
|
||||||
label-offline = " Offline"
|
|
||||||
|
|
||||||
; Only applies if <icon-X> is used
|
|
||||||
icon-play =
|
|
||||||
icon-pause =
|
|
||||||
icon-stop =
|
|
||||||
icon-next =
|
|
||||||
icon-prev =
|
|
||||||
icon-seekf =
|
|
||||||
icon-seekb =
|
|
||||||
icon-random =
|
|
||||||
icon-repeat =
|
|
||||||
icon-repeatone =
|
|
||||||
icon-single =
|
|
||||||
icon-consume =
|
|
||||||
|
|
||||||
; Used to display the state of random/repeat/repeatone/single
|
|
||||||
; Only applies if <icon-[random|repeat|repeatone|single]> is used
|
|
||||||
toggle-on-foreground = ${color.primary}
|
|
||||||
toggle-off-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Only applies if <bar-progress> is used
|
|
||||||
bar-progress-width = 10
|
|
||||||
bar-progress-gradient = false
|
|
||||||
|
|
||||||
bar-progress-indicator = ${bar.indicator}
|
|
||||||
bar-progress-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-progress-fill = ${bar.fill}
|
|
||||||
bar-progress-foreground-0 = ${color.foreground}
|
|
||||||
bar-progress-foreground-1 = ${color.foreground}
|
|
||||||
bar-progress-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-progress-empty = ${bar.empty}
|
|
||||||
bar-progress-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[color]
|
|
||||||
|
|
||||||
background = #1F1F1F
|
|
||||||
foreground = #FFFFFF
|
|
||||||
foreground-alt = #8F8F8F
|
|
||||||
module-fg = #FFFFFF
|
|
||||||
primary = #546e7a
|
|
||||||
secondary = #E53935
|
|
||||||
alternate = #7cb342
|
|
||||||
@@ -1,215 +0,0 @@
|
|||||||
[global/wm]
|
|
||||||
; Adjust the _NET_WM_STRUT_PARTIAL top value
|
|
||||||
; Used for top aligned bars
|
|
||||||
margin-bottom = 0
|
|
||||||
|
|
||||||
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
|
|
||||||
; Used for bottom aligned bars
|
|
||||||
margin-top = 0
|
|
||||||
|
|
||||||
;; Bar Settings
|
|
||||||
|
|
||||||
[bar/main]
|
|
||||||
; Use either of the following command to list available outputs:
|
|
||||||
; If unspecified, the application will pick the first one it finds.
|
|
||||||
; $ polybar -m | cut -d ':' -f 1
|
|
||||||
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
|
|
||||||
monitor =
|
|
||||||
|
|
||||||
; Use the specified monitor as a fallback if the main one is not found.
|
|
||||||
monitor-fallback =
|
|
||||||
|
|
||||||
; Require the monitor to be in connected state
|
|
||||||
; XRandR sometimes reports my monitor as being disconnected (when in use)
|
|
||||||
monitor-strict = false
|
|
||||||
|
|
||||||
; Tell the Window Manager not to configure the window.
|
|
||||||
; Use this to detach the bar if your WM is locking its size/position.
|
|
||||||
override-redirect = false
|
|
||||||
|
|
||||||
; Put the bar at the bottom of the screen
|
|
||||||
bottom = false
|
|
||||||
|
|
||||||
; Prefer fixed center position for the `modules-center` block
|
|
||||||
; When false, the center position will be based on the size of the other blocks.
|
|
||||||
fixed-center = true
|
|
||||||
|
|
||||||
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
|
|
||||||
; the percentage can optionally be extended with a pixel offset like so:
|
|
||||||
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
|
|
||||||
width = 98%
|
|
||||||
height = 40
|
|
||||||
|
|
||||||
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
|
||||||
; the percentage can optionally be extended with a pixel offset like so:
|
|
||||||
; 50%:-10, this will result in an offset in the x or y direction
|
|
||||||
; of 50% minus 10 pixels
|
|
||||||
offset-x = 1%
|
|
||||||
offset-y = 2%:-12
|
|
||||||
|
|
||||||
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
|
||||||
background = ${color.background}
|
|
||||||
|
|
||||||
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
|
||||||
foreground = ${color.foreground}
|
|
||||||
|
|
||||||
; Value used for drawing rounded corners
|
|
||||||
; Individual top/bottom values can be defined using:
|
|
||||||
; radius-{top,bottom}
|
|
||||||
radius-top = 2.0
|
|
||||||
radius-bottom = 2.0
|
|
||||||
|
|
||||||
; Under-/overline pixel size and argb color
|
|
||||||
; Individual values can be defined using:
|
|
||||||
; {overline,underline}-size
|
|
||||||
; {overline,underline}-color
|
|
||||||
line-size = 2
|
|
||||||
line-color = ${color.primary}
|
|
||||||
|
|
||||||
; Values applied to all borders
|
|
||||||
; Individual side values can be defined using:
|
|
||||||
; border-{left,top,right,bottom}-size
|
|
||||||
; border-{left,top,right,bottom}-color
|
|
||||||
border-bottom-size = 0
|
|
||||||
border-bottom-color = ${color.primary}
|
|
||||||
|
|
||||||
; Number of spaces to add at the beginning/end of the bar
|
|
||||||
; Individual side values can be defined using:
|
|
||||||
; padding-{left,right}
|
|
||||||
padding = 0
|
|
||||||
|
|
||||||
; Number of spaces to add before/after each module
|
|
||||||
; Individual side values can be defined using:
|
|
||||||
; module-margin-{left,right}
|
|
||||||
module-margin-left = 2
|
|
||||||
module-margin-right = 2
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
; Fonts
|
|
||||||
font-0 = "@font0@"
|
|
||||||
font-1 = "@font1@"
|
|
||||||
|
|
||||||
; Modules
|
|
||||||
modules-left = launcher workspaces
|
|
||||||
modules-center = date popup-calendar
|
|
||||||
modules-right = pulseaudio memory cpu updates sysmenu
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
; The separator will be inserted between the output of each module
|
|
||||||
separator =
|
|
||||||
|
|
||||||
; Opacity value between 0.0 and 1.0 used on fade in/out
|
|
||||||
dim-value = 1.0
|
|
||||||
|
|
||||||
; Value to be used to set the WM_NAME atom
|
|
||||||
; If the value is empty or undefined, the atom value
|
|
||||||
; will be created from the following template: polybar-[BAR]_[MONITOR]
|
|
||||||
wm-name = bspwm
|
|
||||||
|
|
||||||
; Locale used to localize various module data (e.g. date)
|
|
||||||
; Expects a valid libc locale, for example: sv_SE.UTF-8
|
|
||||||
locale =
|
|
||||||
|
|
||||||
; Position of the system tray window
|
|
||||||
; If empty or undefined, tray support will be disabled
|
|
||||||
; NOTE: A center aligned tray will cover center aligned modules
|
|
||||||
;
|
|
||||||
; Available positions:
|
|
||||||
; left
|
|
||||||
; center
|
|
||||||
; right
|
|
||||||
; none
|
|
||||||
tray-position = none
|
|
||||||
|
|
||||||
; If true, the bar will not shift its
|
|
||||||
; contents when the tray changes
|
|
||||||
tray-detached = false
|
|
||||||
|
|
||||||
; Tray icon max size
|
|
||||||
tray-maxsize = 16
|
|
||||||
|
|
||||||
; Background color for the tray container
|
|
||||||
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
|
||||||
; By default the tray container will use the bar
|
|
||||||
; background color.
|
|
||||||
tray-background = ${color.background}
|
|
||||||
|
|
||||||
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
|
||||||
tray-offset-x = 0
|
|
||||||
tray-offset-y = 0
|
|
||||||
|
|
||||||
; Pad the sides of each tray icon
|
|
||||||
tray-padding = 0
|
|
||||||
|
|
||||||
; Scale factor for tray clients
|
|
||||||
tray-scale = 1.0
|
|
||||||
|
|
||||||
; Restack the bar window and put it above the
|
|
||||||
; selected window manager's root
|
|
||||||
;
|
|
||||||
; Fixes the issue where the bar is being drawn
|
|
||||||
; on top of fullscreen window's
|
|
||||||
;
|
|
||||||
; Available options:
|
|
||||||
; bspwm
|
|
||||||
; i3 (requires: `override-redirect = true`)
|
|
||||||
wm-restack = bspwm
|
|
||||||
|
|
||||||
; Set a DPI values used when rendering text
|
|
||||||
; This only affects scalable fonts
|
|
||||||
; dpi =
|
|
||||||
|
|
||||||
; Enable support for inter-process messaging
|
|
||||||
; See the Messaging wiki page for more details.
|
|
||||||
enable-ipc = true
|
|
||||||
|
|
||||||
; Fallback click handlers that will be called if
|
|
||||||
; there's no matching module handler found.
|
|
||||||
click-left =
|
|
||||||
click-middle = bspc desktop -l next
|
|
||||||
click-right =
|
|
||||||
double-click-left =
|
|
||||||
double-click-middle =
|
|
||||||
double-click-right =
|
|
||||||
|
|
||||||
; Requires polybar to be built with xcursor support (xcb-util-cursor)
|
|
||||||
; Possible values are:
|
|
||||||
; - default : The default pointer as before, can also be an empty string (default)
|
|
||||||
; - pointer : Typically in the form of a hand
|
|
||||||
; - ns-resize : Up and down arrows, can be used to indicate scrolling
|
|
||||||
cursor-click =
|
|
||||||
cursor-scroll =
|
|
||||||
|
|
||||||
; bspwm
|
|
||||||
scroll-up = bspc desktop -f prev.local
|
|
||||||
scroll-down = bspc desktop -f next.local
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
;; Application Settings
|
|
||||||
|
|
||||||
[settings]
|
|
||||||
; The throttle settings lets the eventloop swallow up til X events
|
|
||||||
; if they happen within Y millisecond after first event was received.
|
|
||||||
throttle-output = 5
|
|
||||||
throttle-output-for = 10
|
|
||||||
|
|
||||||
; Time in milliseconds that the input handler will wait between processing events
|
|
||||||
;throttle-input-for = 30
|
|
||||||
|
|
||||||
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
|
|
||||||
screenchange-reload = false
|
|
||||||
|
|
||||||
; Compositing operators
|
|
||||||
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
|
|
||||||
compositing-background = source
|
|
||||||
compositing-foreground = over
|
|
||||||
compositing-overline = over
|
|
||||||
compositing-underline = over
|
|
||||||
compositing-border = over
|
|
||||||
|
|
||||||
; Enables pseudo-transparency for the bar
|
|
||||||
; If set to true the bar can be transparent without a compositor.
|
|
||||||
pseudo-transparency = false
|
|
||||||
@@ -1,674 +0,0 @@
|
|||||||
;; ┌────────────────────────────────────────────────────────────────┐
|
|
||||||
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▄█░█▀█░█▀▄░█░█░█░░░█▀▀░█▀▀│
|
|
||||||
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░█░█░█░█░█░█░█░█░░░█▀▀░▀▀█│
|
|
||||||
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀│
|
|
||||||
;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│
|
|
||||||
;; └────────────────────────────────────────────────────────────────┘
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/alsa]
|
|
||||||
type = internal/alsa
|
|
||||||
|
|
||||||
; Soundcard to be used
|
|
||||||
; Usually in the format hw:# where # is the card number
|
|
||||||
; You can find the different card numbers in `/proc/asound/cards`
|
|
||||||
master-soundcard = default
|
|
||||||
speaker-soundcard = default
|
|
||||||
headphone-soundcard = default
|
|
||||||
|
|
||||||
; Name of the master, speaker and headphone mixers
|
|
||||||
; Use the following command to list available mixer controls:
|
|
||||||
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
|
|
||||||
; If master, speaker or headphone-soundcard isn't the default,
|
|
||||||
; use `amixer -c # scontrols` instead where # is the number
|
|
||||||
; of the master, speaker or headphone soundcard respectively
|
|
||||||
;
|
|
||||||
; Default: Master
|
|
||||||
master-mixer = Master
|
|
||||||
|
|
||||||
; Optionally define speaker and headphone mixers
|
|
||||||
; Default: none
|
|
||||||
;;speaker-mixer = Speaker
|
|
||||||
; Default: none
|
|
||||||
;;headphone-mixer = Headphone
|
|
||||||
|
|
||||||
; NOTE: This is required if headphone_mixer is defined
|
|
||||||
; Use the following command to list available device controls
|
|
||||||
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
|
|
||||||
; You may also need to use `amixer -c # controls` as above for the mixer names
|
|
||||||
; Default: none
|
|
||||||
;;headphone-id = 9
|
|
||||||
|
|
||||||
; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
|
|
||||||
; Default: false
|
|
||||||
;;mapped = true
|
|
||||||
|
|
||||||
; Interval for volume increase/decrease (in percent points)
|
|
||||||
; Default: 5
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-volume> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-volume = <ramp-volume> <label-volume>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-muted> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-muted = <label-muted>
|
|
||||||
format-muted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default
|
|
||||||
label-muted = " Muted"
|
|
||||||
label-muted-foreground = ${color.foreground-alt}
|
|
||||||
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-volume-0 =
|
|
||||||
ramp-volume-1 =
|
|
||||||
ramp-volume-2 =
|
|
||||||
|
|
||||||
; If defined, it will replace <ramp-volume> when
|
|
||||||
; headphones are plugged in to `headphone_control_numid`
|
|
||||||
; If undefined, <ramp-volume> will be used for both
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-headphones-0 =
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/cpu]
|
|
||||||
type = internal/cpu
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-load>
|
|
||||||
; <ramp-load>
|
|
||||||
; <ramp-coreload>
|
|
||||||
;;format = <label> <ramp-coreload>
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default) - total cpu load averaged over all cores
|
|
||||||
; %percentage-sum% - Cumulative load on all cores
|
|
||||||
; %percentage-cores% - load percentage for each core
|
|
||||||
; %percentage-core[1-9]% - load percentage for specific core
|
|
||||||
label = " %percentage%%"
|
|
||||||
|
|
||||||
; Spacing between individual per-core ramps
|
|
||||||
;;ramp-coreload-spacing = 1
|
|
||||||
;;ramp-coreload-0 = ${cpu.load0}
|
|
||||||
;;ramp-coreload-1 = ${cpu.load1}
|
|
||||||
|
|
||||||
;;ramp-load-0 = ${cpu.load0}
|
|
||||||
;;ramp-load-1 = ${cpu.load1}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/date]
|
|
||||||
type = internal/date
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
interval = 1.0
|
|
||||||
|
|
||||||
; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
|
|
||||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
|
||||||
;;date = %Y-%m-%d%
|
|
||||||
|
|
||||||
; Optional time format
|
|
||||||
time = " %I:%M %p"
|
|
||||||
|
|
||||||
; if `date-alt` or `time-alt` is defined, clicking
|
|
||||||
; the module will toggle between formats
|
|
||||||
;;date-alt = %A, %d %B %Y
|
|
||||||
#time-alt = " %a, %d %b %Y"
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
format = <label>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %date%
|
|
||||||
; %time%
|
|
||||||
; Default: %date%
|
|
||||||
label = %time%
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/filesystem]
|
|
||||||
type = internal/fs
|
|
||||||
|
|
||||||
; Mountpoints to display
|
|
||||||
mount-0 = /
|
|
||||||
;;mount-1 = /home
|
|
||||||
;;mount-2 = /var
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 30
|
|
||||||
interval = 30
|
|
||||||
|
|
||||||
; Display fixed precision values
|
|
||||||
; Default: false
|
|
||||||
fixed-values = true
|
|
||||||
|
|
||||||
; Spacing between entries
|
|
||||||
; Default: 2
|
|
||||||
;;spacing = 4
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-mounted> (default)
|
|
||||||
; <bar-free>
|
|
||||||
; <bar-used>
|
|
||||||
; <ramp-capacity>
|
|
||||||
format-mounted = <label-mounted>
|
|
||||||
format-mounted-prefix =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-unmounted> (default)
|
|
||||||
format-unmounted = <label-unmounted>
|
|
||||||
format-unmounted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; %type%
|
|
||||||
; %fsname%
|
|
||||||
; %percentage_free%
|
|
||||||
; %percentage_used%
|
|
||||||
; %total%
|
|
||||||
; %free%
|
|
||||||
; %used%
|
|
||||||
; Default: %mountpoint% %percentage_free%%
|
|
||||||
label-mounted = " %free%"
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; Default: %mountpoint% is not mounted
|
|
||||||
label-unmounted = " %mountpoint%: not mounted"
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/memory]
|
|
||||||
type = internal/memory
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-used>
|
|
||||||
; <bar-free>
|
|
||||||
; <ramp-used>
|
|
||||||
; <ramp-free>
|
|
||||||
; <bar-swap-used>
|
|
||||||
; <bar-swap-free>
|
|
||||||
; <ramp-swap-used>
|
|
||||||
; <ramp-swap-free>
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage_used% (default)
|
|
||||||
; %percentage_free%
|
|
||||||
; %gb_used%
|
|
||||||
; %gb_free%
|
|
||||||
; %gb_total%
|
|
||||||
; %mb_used%
|
|
||||||
; %mb_free%
|
|
||||||
; %mb_total%
|
|
||||||
; %percentage_swap_used%
|
|
||||||
; %percentage_swap_free%
|
|
||||||
; %mb_swap_total%
|
|
||||||
; %mb_swap_free%
|
|
||||||
; %mb_swap_used%
|
|
||||||
; %gb_swap_total%
|
|
||||||
; %gb_swap_free%
|
|
||||||
; %gb_swap_used%
|
|
||||||
|
|
||||||
label = " %mb_used%"
|
|
||||||
|
|
||||||
; Only applies if <ramp-used> is used
|
|
||||||
;;ramp-used-0 = ${memory.used0}
|
|
||||||
;;ramp-used-1 = ${memory.used1}
|
|
||||||
;;ramp-used-2 = ${memory.used2}
|
|
||||||
|
|
||||||
; Only applies if <ramp-free> is used
|
|
||||||
;;ramp-free-0 = ${memory.free0}
|
|
||||||
;;ramp-free-1 = ${memory.free1}
|
|
||||||
;;ramp-free-2 = ${memory.free2}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/mpd]
|
|
||||||
type = internal/mpd
|
|
||||||
|
|
||||||
; Host where mpd is running (either ip or domain name)
|
|
||||||
; Can also be the full path to a unix socket where mpd is running.
|
|
||||||
;;host = 127.0.0.1
|
|
||||||
;;port = 6600
|
|
||||||
;;password = mysecretpassword
|
|
||||||
|
|
||||||
; Seconds to sleep between progressbar/song timer sync
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-song> (default)
|
|
||||||
; <label-time>
|
|
||||||
; <bar-progress>
|
|
||||||
; <toggle> - gets replaced with <icon-(pause|play)>
|
|
||||||
; <toggle-stop> - gets replaced with <icon-(stop|play)>
|
|
||||||
; <icon-random>
|
|
||||||
; <icon-repeat>
|
|
||||||
; <icon-repeatone> (deprecated)
|
|
||||||
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
|
|
||||||
; <icon-consume>
|
|
||||||
; <icon-prev>
|
|
||||||
; <icon-stop>
|
|
||||||
; <icon-play>
|
|
||||||
; <icon-pause>
|
|
||||||
; <icon-next>
|
|
||||||
; <icon-seekb>
|
|
||||||
; <icon-seekf>
|
|
||||||
format-online = <label-song> <icon-prev> <toggle> <icon-next>
|
|
||||||
format-online-prefix =
|
|
||||||
|
|
||||||
;format-playing = ${self.format-online}
|
|
||||||
;format-paused = ${self.format-online}
|
|
||||||
;format-stopped = ${self.format-online}
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-offline>
|
|
||||||
format-offline = <label-offline>
|
|
||||||
format-offline-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %artist%
|
|
||||||
; %album-artist%
|
|
||||||
; %album%
|
|
||||||
; %date%
|
|
||||||
; %title%
|
|
||||||
; Default: %artist% - %title%
|
|
||||||
label-song = " %artist% - %title%"
|
|
||||||
label-song-maxlen = 25
|
|
||||||
label-song-ellipsis = true
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %elapsed%
|
|
||||||
; %total%
|
|
||||||
; Default: %elapsed% / %total%
|
|
||||||
label-time = %elapsed% / %total%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; None
|
|
||||||
label-offline = " Offline"
|
|
||||||
|
|
||||||
; Only applies if <icon-X> is used
|
|
||||||
icon-play =
|
|
||||||
icon-pause =
|
|
||||||
icon-stop =
|
|
||||||
icon-next =
|
|
||||||
icon-prev =
|
|
||||||
icon-seekf =
|
|
||||||
icon-seekb =
|
|
||||||
icon-random =
|
|
||||||
icon-repeat =
|
|
||||||
icon-repeatone =
|
|
||||||
icon-single =
|
|
||||||
icon-consume =
|
|
||||||
|
|
||||||
; Used to display the state of random/repeat/repeatone/single
|
|
||||||
; Only applies if <icon-[random|repeat|repeatone|single]> is used
|
|
||||||
toggle-on-foreground = ${color.primary}
|
|
||||||
toggle-off-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Only applies if <bar-progress> is used
|
|
||||||
;;bar-progress-width = 45
|
|
||||||
;;bar-progress-indicator = |
|
|
||||||
;;bar-progress-fill = ─
|
|
||||||
;;bar-progress-empty = ─
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
; If you use both a wired and a wireless network, just add 2 module definitions. For example
|
|
||||||
[module/wired-network]
|
|
||||||
type = internal/network
|
|
||||||
interface = eth0
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 1.0
|
|
||||||
|
|
||||||
; Test connectivity every Nth update
|
|
||||||
; A value of 0 disables the feature
|
|
||||||
; NOTE: Experimental (needs more testing)
|
|
||||||
; Default: 0
|
|
||||||
;ping-interval = 3
|
|
||||||
|
|
||||||
; @deprecated: Define min width using token specifiers (%downspeed:min% and %upspeed:min%)
|
|
||||||
; Minimum output width of upload/download rate
|
|
||||||
; Default: 3
|
|
||||||
;;udspeed-minwidth = 5
|
|
||||||
|
|
||||||
; Accumulate values from all interfaces
|
|
||||||
; when querying for up/downspeed rate
|
|
||||||
; Default: false
|
|
||||||
accumulate-stats = true
|
|
||||||
|
|
||||||
; Consider an `UNKNOWN` interface state as up.
|
|
||||||
; Some devices have an unknown state, even when they're running
|
|
||||||
; Default: false
|
|
||||||
unknown-as-up = true
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-connected> (default)
|
|
||||||
; <ramp-signal>
|
|
||||||
format-connected = <label-connected>
|
|
||||||
format-connected-prefix =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-disconnected> (default)
|
|
||||||
format-disconnected = <label-disconnected>
|
|
||||||
format-disconnected-prefix =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-connected> (default)
|
|
||||||
; <label-packetloss>
|
|
||||||
; <animation-packetloss>
|
|
||||||
;;format-packetloss = <animation-packetloss> <label-connected>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %ifname% [wireless+wired]
|
|
||||||
; %local_ip% [wireless+wired]
|
|
||||||
; %local_ip6% [wireless+wired]
|
|
||||||
; %essid% [wireless]
|
|
||||||
; %signal% [wireless]
|
|
||||||
; %upspeed% [wireless+wired]
|
|
||||||
; %downspeed% [wireless+wired]
|
|
||||||
; %linkspeed% [wired]
|
|
||||||
; Default: %ifname% %local_ip%
|
|
||||||
label-connected = "%{A1:networkmanager_dmenu &:} %essid%%{A}"
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %ifname% [wireless+wired]
|
|
||||||
; Default: (none)
|
|
||||||
label-disconnected = "%{A1:networkmanager_dmenu &:} Offline%{A}"
|
|
||||||
;;label-disconnected-foreground = #66ffffff
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %ifname% [wireless+wired]
|
|
||||||
; %local_ip% [wireless+wired]
|
|
||||||
; %local_ip6% [wireless+wired]
|
|
||||||
; %essid% [wireless]
|
|
||||||
; %signal% [wireless]
|
|
||||||
; %upspeed% [wireless+wired]
|
|
||||||
; %downspeed% [wireless+wired]
|
|
||||||
; %linkspeed% [wired]
|
|
||||||
; Default: (none)
|
|
||||||
;label-packetloss = %essid%
|
|
||||||
;label-packetloss-foreground = #eefafafa
|
|
||||||
|
|
||||||
; Only applies if <ramp-signal> is used
|
|
||||||
ramp-signal-0 =
|
|
||||||
ramp-signal-1 =
|
|
||||||
ramp-signal-2 =
|
|
||||||
|
|
||||||
; Only applies if <animation-packetloss> is used
|
|
||||||
;;animation-packetloss-0 = ⚠
|
|
||||||
;;animation-packetloss-0-foreground = #ffa64c
|
|
||||||
;;animation-packetloss-1 = ⚠
|
|
||||||
;;animation-packetloss-1-foreground = #000000
|
|
||||||
; Framerate in milliseconds
|
|
||||||
;;animation-packetloss-framerate = 500
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/pulseaudio]
|
|
||||||
type = internal/pulseaudio
|
|
||||||
|
|
||||||
; Sink to be used, if it exists (find using `pacmd list-sinks`, name field)
|
|
||||||
; If not, uses default sink
|
|
||||||
; sink = @pulseaudiosink@
|
|
||||||
|
|
||||||
; Use PA_VOLUME_UI_MAX (~153%) if true, or PA_VOLUME_NORM (100%) if false
|
|
||||||
; Default: true
|
|
||||||
use-ui-max = false
|
|
||||||
|
|
||||||
; Interval for volume increase/decrease (in percent points)
|
|
||||||
; Default: 5
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-volume> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-volume = <ramp-volume> <label-volume>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-muted> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-muted = <label-muted>
|
|
||||||
format-muted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default
|
|
||||||
label-muted = " Muted"
|
|
||||||
label-muted-foreground = ${color.foreground-alt}
|
|
||||||
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-volume-0 =
|
|
||||||
ramp-volume-1 =
|
|
||||||
ramp-volume-2 =
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/temperature]
|
|
||||||
type = internal/temperature
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 0.5
|
|
||||||
|
|
||||||
; Thermal zone to use
|
|
||||||
; To list all the zone types, run
|
|
||||||
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
|
|
||||||
; Default: 0
|
|
||||||
thermal-zone = 0
|
|
||||||
|
|
||||||
; Full path of temperature sysfs path
|
|
||||||
; Use `sensors` to find preferred temperature source, then run
|
|
||||||
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
|
|
||||||
; to find path to desired file
|
|
||||||
; Default reverts to thermal zone setting
|
|
||||||
;;hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
|
|
||||||
hwmon-path = /sys/devices/pci0000:00/0000:00:01.3/0000:01:00.0/hwmon/hwmon0/temp1_input
|
|
||||||
|
|
||||||
; Threshold temperature to display warning label (in degrees celsius)
|
|
||||||
; Default: 80
|
|
||||||
warn-temperature = 65
|
|
||||||
|
|
||||||
; Whether or not to show units next to the temperature tokens (°C, °F)
|
|
||||||
; Default: true
|
|
||||||
units = true
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <ramp>
|
|
||||||
format = <ramp> <label>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-warn> (default)
|
|
||||||
; <ramp>
|
|
||||||
format-warn = <ramp> <label-warn>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %temperature% (deprecated)
|
|
||||||
; %temperature-c% (default, temperature in °C)
|
|
||||||
; %temperature-f% (temperature in °F)
|
|
||||||
label = %temperature-c%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %temperature% (deprecated)
|
|
||||||
; %temperature-c% (default, temperature in °C)
|
|
||||||
; %temperature-f% (temperature in °F)
|
|
||||||
label-warn = "%temperature-c%"
|
|
||||||
label-warn-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Requires the <ramp> tag
|
|
||||||
; The icon selection will range from 0 to `warn-temperature`
|
|
||||||
; with the current temperature as index.
|
|
||||||
ramp-0 =
|
|
||||||
ramp-1 =
|
|
||||||
ramp-2 =
|
|
||||||
ramp-3 =
|
|
||||||
ramp-4 =
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/keyboard]
|
|
||||||
type = internal/xkeyboard
|
|
||||||
|
|
||||||
; List of indicators to ignore
|
|
||||||
blacklist-0 = num lock
|
|
||||||
blacklist-1 = scroll lock
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-layout> (default)
|
|
||||||
; <label-indicator> (default)
|
|
||||||
format = <label-layout> <label-indicator>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %layout%
|
|
||||||
; %name%
|
|
||||||
; %number%
|
|
||||||
; Default: %layout%
|
|
||||||
label-layout = " %layout%"
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; Default: %name%
|
|
||||||
label-indicator-on = %name%
|
|
||||||
label-indicator-on-foreground = ${color.primary}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/title]
|
|
||||||
type = internal/xwindow
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %title%
|
|
||||||
; Default: %title%
|
|
||||||
label = " %title%"
|
|
||||||
label-maxlen = 30
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/workspaces]
|
|
||||||
type = internal/xworkspaces
|
|
||||||
|
|
||||||
; Only show workspaces defined on the same output as the bar
|
|
||||||
;
|
|
||||||
; Useful if you want to show monitor specific workspaces
|
|
||||||
; on different bars
|
|
||||||
;
|
|
||||||
; Default: false
|
|
||||||
pin-workspaces = true
|
|
||||||
|
|
||||||
; Create click handler used to focus desktop
|
|
||||||
; Default: true
|
|
||||||
enable-click = true
|
|
||||||
|
|
||||||
; Create scroll handlers used to cycle desktops
|
|
||||||
; Default: true
|
|
||||||
enable-scroll = true
|
|
||||||
|
|
||||||
; icon-[0-9]+ = <desktop-name>;<icon>
|
|
||||||
; NOTE: The desktop name needs to match the name configured by the WM
|
|
||||||
; You can get a list of the defined desktops using:
|
|
||||||
; $ xprop -root _NET_DESKTOP_NAMES
|
|
||||||
|
|
||||||
; Emacs, Calendar, News (General)
|
|
||||||
icon-0 = 1;
|
|
||||||
; Terminal, Emacs (IDE)
|
|
||||||
icon-1 = 2;
|
|
||||||
; Slack, Dev Tools Browser
|
|
||||||
icon-2 = 3;
|
|
||||||
; Chat, News (Financial)
|
|
||||||
icon-3 = 4;
|
|
||||||
; Apple Music, Media
|
|
||||||
icon-4 = 5;
|
|
||||||
; Monitoring, Emacs (Journal)
|
|
||||||
icon-5 = 6;
|
|
||||||
icon-default =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-monitor>
|
|
||||||
; <label-state> - gets replaced with <label-(active|urgent|occupied|empty)>
|
|
||||||
; Default: <label-state>
|
|
||||||
format = <label-state>
|
|
||||||
format-padding = 0
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; Default: %name%
|
|
||||||
label-monitor = %name%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-active = %icon%
|
|
||||||
label-active-foreground = ${color.primary}
|
|
||||||
label-active-overline = ${color.primary}
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-occupied = %icon%
|
|
||||||
label-occupied-foreground = ${color.alternate}
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-urgent = %icon%
|
|
||||||
label-urgent-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-empty = %icon%
|
|
||||||
|
|
||||||
label-active-padding = 2
|
|
||||||
label-urgent-padding = 2
|
|
||||||
label-occupied-padding = 2
|
|
||||||
label-empty-padding = 2
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
;; ┌──────────────────────────────────────────────────────────────────────────────-----┐
|
|
||||||
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█░█░█▀▀░█▀▀░█▀▄░░░█▄█░█▀█░█▀▄░█░█░█░░░█▀▀░█▀▀ │
|
|
||||||
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░█░▀▀█░█▀▀░█▀▄░░░█░█░█░█░█░█░█░█░█░░░█▀▀░▀▀█ │
|
|
||||||
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀▀░▀▀▀░▀▀▀░▀░▀░░░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀ │
|
|
||||||
;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│
|
|
||||||
;; └──────────────────────────────────────────────────────────────────────────────-----┘
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/updates]
|
|
||||||
type = custom/script
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %counter%
|
|
||||||
; Command to be executed (using "/usr/bin/env sh -c [command]")
|
|
||||||
exec = @packages@
|
|
||||||
|
|
||||||
; Conditional command that, if defined, needs to exit successfully
|
|
||||||
; before the main exec command is invoked.
|
|
||||||
; Default: ""
|
|
||||||
;;exec-if = ""
|
|
||||||
|
|
||||||
; Will the script output continous content?
|
|
||||||
; Default: false
|
|
||||||
tail = true
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 2 (0 if `tail = true`)
|
|
||||||
interval = 0
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <output> - deprecated
|
|
||||||
; <label> (default)
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %output%
|
|
||||||
; Default: %output%
|
|
||||||
label = %output%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %counter%
|
|
||||||
; %pid%
|
|
||||||
;
|
|
||||||
click-left = @searchpkgs@
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/launcher]
|
|
||||||
type = custom/text
|
|
||||||
content =
|
|
||||||
content-background = ${color.primary}
|
|
||||||
content-foreground = ${color.module-fg}
|
|
||||||
content-padding = 2
|
|
||||||
click-left = @launcher@
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/popup-calendar]
|
|
||||||
type = custom/script
|
|
||||||
exec = @calendar@
|
|
||||||
interval = 5
|
|
||||||
click-left = @calendar@ --popup &
|
|
||||||
|
|
||||||
[module/sysmenu]
|
|
||||||
type = custom/text
|
|
||||||
content =
|
|
||||||
content-background = ${color.primary}
|
|
||||||
content-foreground = ${color.module-fg}
|
|
||||||
content-padding = 2
|
|
||||||
click-left = @powermenu@ &
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
/* colors */
|
|
||||||
|
|
||||||
* {
|
|
||||||
al: #00000000;
|
|
||||||
bg: #1F1F1FFF;
|
|
||||||
bga: #546e7a33;
|
|
||||||
bar: #FFFFFFFF;
|
|
||||||
fg: #FFFFFFFF;
|
|
||||||
ac: #546e7aFF;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/* Confirm Dialog */
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
width: 225px;
|
|
||||||
padding: 25px;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
location: center;
|
|
||||||
y-offset: -2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
expand: true;
|
|
||||||
text-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 350px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 10px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ prompt, entry ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 5;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/* Confirm Dialog */
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
width: 320px;
|
|
||||||
padding: 25px;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
location: center;
|
|
||||||
y-offset: -2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
expand: true;
|
|
||||||
text-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 400px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
textbox-prompt-colon {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
str: "";
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 10px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ textbox-prompt-colon, prompt ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 8;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px 10px 10px -17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 350px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
textbox-prompt-colon {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
str: "";
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 10px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ textbox-prompt-colon, prompt ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 5;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px 10px 10px -17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 350px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
textbox-prompt-colon {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
str: "";
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ textbox-prompt-colon, entry ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 5;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px 10px 10px -17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
_: {
|
|
||||||
# This formats the disk with the ext4 filesystem
|
|
||||||
# Other examples found here: https://github.com/nix-community/disko/tree/master/example
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
vdb = {
|
|
||||||
device = "/dev/%DISK%";
|
|
||||||
type = "disk";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
type = "EF00";
|
|
||||||
size = "100M";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
root = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,368 +0,0 @@
|
|||||||
{ user, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
home = builtins.getEnv "HOME";
|
|
||||||
xdg_configHome = "${home}/.config";
|
|
||||||
xdg_dataHome = "${home}/.local/share";
|
|
||||||
xdg_stateHome = "${home}/.local/state"; in
|
|
||||||
{
|
|
||||||
|
|
||||||
"${xdg_configHome}/bspwm/bspwmrc" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Set the number of workspaces
|
|
||||||
bspc monitor -d 1 2 3 4 5 6
|
|
||||||
|
|
||||||
# Launch keybindings daemon
|
|
||||||
pgrep -x sxhkd > /dev/null || sxhkd &
|
|
||||||
|
|
||||||
# Window configurations
|
|
||||||
bspc config border_width 0
|
|
||||||
bspc config window_gap 16
|
|
||||||
bspc config split_ratio 0.52
|
|
||||||
bspc config borderless_monocle true
|
|
||||||
bspc config gapless_monocle true
|
|
||||||
|
|
||||||
# Padding outside of the window
|
|
||||||
bspc config top_padding 60
|
|
||||||
bspc config bottom_padding 60
|
|
||||||
bspc config left_padding 60
|
|
||||||
bspc config right_padding 60
|
|
||||||
|
|
||||||
# Move floating windows
|
|
||||||
bspc config pointer_action1 move
|
|
||||||
|
|
||||||
# Resize floating windows
|
|
||||||
bspc config pointer_action2 resize_side
|
|
||||||
bspc config pointer_action2 resize_corner
|
|
||||||
|
|
||||||
# Set background and top bar
|
|
||||||
systemctl --user start polybar
|
|
||||||
|
|
||||||
sleep .25
|
|
||||||
|
|
||||||
# Wait for the network to be up
|
|
||||||
notify-send 'Waiting for network...'
|
|
||||||
while ! systemctl is-active --quiet network-online.target; do sleep 1; done
|
|
||||||
notify-send 'Network found.'
|
|
||||||
|
|
||||||
# Wait for the Emacs daemon
|
|
||||||
notify-send 'Starting Emacs...'
|
|
||||||
/run/current-system/sw/bin/emacsclient -a "" -e '(progn)' &
|
|
||||||
|
|
||||||
# Wait for Emacs daemon to be ready
|
|
||||||
while ! /run/current-system/sw/bin/emacsclient -e '(progn)' &>/dev/null; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
notify-send 'Emacs daemon started.'
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/sxhkd/sxhkdrc" = {
|
|
||||||
text = ''
|
|
||||||
# Close window
|
|
||||||
alt + F4
|
|
||||||
bspc node --close
|
|
||||||
|
|
||||||
# Make split ratios equal
|
|
||||||
super + equal
|
|
||||||
bspc node @/ --equalize
|
|
||||||
|
|
||||||
# Make split ratios balanced
|
|
||||||
super + minus
|
|
||||||
bspc node @/ --balance
|
|
||||||
|
|
||||||
# Toogle tiling of window
|
|
||||||
super + d
|
|
||||||
bspc query --nodes -n focused.tiled && state=floating || state=tiled; \
|
|
||||||
bspc node --state \~$state
|
|
||||||
|
|
||||||
# Toggle fullscreen of window
|
|
||||||
super + f
|
|
||||||
bspc node --state \~fullscreen
|
|
||||||
|
|
||||||
# Swap the current node and the biggest window
|
|
||||||
super + g
|
|
||||||
bspc node -s biggest.window
|
|
||||||
|
|
||||||
# Swap the current node and the smallest window
|
|
||||||
super + shift + g
|
|
||||||
bspc node -s biggest.window
|
|
||||||
|
|
||||||
# Alternate between the tiled and monocle layout
|
|
||||||
super + m
|
|
||||||
bspc desktop -l next
|
|
||||||
|
|
||||||
# Move between windows in monocle layout
|
|
||||||
super + {_, alt + }m
|
|
||||||
bspc node -f {next, prev}.local.!hidden.window
|
|
||||||
|
|
||||||
# Focus the node in the given direction
|
|
||||||
super + {_,shift + }{h,j,k,l}
|
|
||||||
bspc node -{f,s} {west,south,north,east}
|
|
||||||
|
|
||||||
# Focus left/right occupied desktop
|
|
||||||
super + {Left,Right}
|
|
||||||
bspc desktop --focus {prev,next}.occupied
|
|
||||||
|
|
||||||
# Focus left/right occupied desktop
|
|
||||||
super + {Up,Down}
|
|
||||||
bspc desktop --focus {prev,next}.occupied
|
|
||||||
|
|
||||||
# Focus left/right desktop
|
|
||||||
ctrl + alt + {Left,Right}
|
|
||||||
bspc desktop --focus {prev,next}
|
|
||||||
|
|
||||||
# Focus left/right desktop
|
|
||||||
ctrl + alt + {Up, Down}
|
|
||||||
bspc desktop --focus {prev,next}
|
|
||||||
|
|
||||||
# Focus the older or newer node in the focus history
|
|
||||||
super + {o,i}
|
|
||||||
bspc wm -h off; \
|
|
||||||
bspc node {older,newer} -f; \
|
|
||||||
bspc wm -h on
|
|
||||||
|
|
||||||
# Focus or send to the given desktop
|
|
||||||
super + {_,shift + }{1-9,0}
|
|
||||||
bspc {desktop -f,node -d} '^{1-9,10}'
|
|
||||||
|
|
||||||
# Preselect the direction
|
|
||||||
super + alt + {h,j,k,l}
|
|
||||||
bspc node -p {west,south,north,east}
|
|
||||||
|
|
||||||
# Cancel the preselect
|
|
||||||
# For context on syntax: https://github.com/baskerville/bspwm/issues/344
|
|
||||||
super + alt + {_,shift + }Escape
|
|
||||||
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
|
|
||||||
|
|
||||||
# Preselect the direction
|
|
||||||
super + ctrl + {h,j,k,l}
|
|
||||||
bspc node -p {west,south,north,east}
|
|
||||||
|
|
||||||
# Cancel the preselect
|
|
||||||
# For context on syntax: https://github.com/baskerville/bspwm/issues/344
|
|
||||||
super + ctrl + {_,shift + }Escape
|
|
||||||
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
|
|
||||||
|
|
||||||
# Set the node flags
|
|
||||||
super + ctrl + {m,x,s,p}
|
|
||||||
bspc node -g {marked,locked,sticky,private}
|
|
||||||
|
|
||||||
# Send the newest marked node to the newest preselected node
|
|
||||||
super + y
|
|
||||||
bspc node newest.marked.local -n newest.!automatic.local
|
|
||||||
|
|
||||||
# Program launcher
|
|
||||||
super + @space
|
|
||||||
rofi -config -no-lazy-grab -show drun -modi drun -theme /home/${user}/.config/rofi/launcher.rasi
|
|
||||||
|
|
||||||
# Terminal emulator
|
|
||||||
super + Return
|
|
||||||
bspc rule -a Alacritty -o state=floating rectangle=1024x768x0x0 center=true && /etc/profiles/per-user/${user}/bin/alacritty
|
|
||||||
|
|
||||||
# Terminal emulator
|
|
||||||
super + ctrl + Return
|
|
||||||
/etc/profiles/per-user/${user}/bin/alacritty
|
|
||||||
|
|
||||||
# Jump to workspaces
|
|
||||||
super + t
|
|
||||||
bspc desktop --focus ^2
|
|
||||||
super + b
|
|
||||||
bspc desktop --focus ^1
|
|
||||||
super + w
|
|
||||||
bspc desktop --focus ^4
|
|
||||||
super + Tab
|
|
||||||
bspc {node,desktop} -f last
|
|
||||||
|
|
||||||
# Keepass XC
|
|
||||||
super + shift + x
|
|
||||||
/etc/profiles/per-user/${user}/bin/keepassxc
|
|
||||||
|
|
||||||
# Emacs
|
|
||||||
# -c flag is --create-frame
|
|
||||||
# -a flag is fallback to plain emacs if daemon fails
|
|
||||||
super + alt + Return
|
|
||||||
emacsclient -c -a emacs
|
|
||||||
|
|
||||||
super + alt + e
|
|
||||||
systemctl --user restart emacs.service && \
|
|
||||||
emacsclient -c -a emacs
|
|
||||||
|
|
||||||
# Web browser
|
|
||||||
ctrl + alt + Return
|
|
||||||
google-chrome-stable
|
|
||||||
|
|
||||||
# File browser at home dir
|
|
||||||
super + shift + @space
|
|
||||||
pcmanfm
|
|
||||||
|
|
||||||
# Take a screenshot with PrintSc
|
|
||||||
Print
|
|
||||||
flameshot gui -c -p $HOME/.local/share/img/screenshots
|
|
||||||
|
|
||||||
# Lock the screen
|
|
||||||
ctrl + alt + BackSpace
|
|
||||||
i3lock
|
|
||||||
|
|
||||||
# Audio controls for + volume
|
|
||||||
XF86AudioRaiseVolume
|
|
||||||
pactl set-sink-volume @DEFAULT_SINK@ +5%
|
|
||||||
|
|
||||||
# Audio controls for - volume
|
|
||||||
XF86AudioLowerVolume
|
|
||||||
pactl set-sink-volume @DEFAULT_SINK@ -5%
|
|
||||||
|
|
||||||
# Audio controls for mute
|
|
||||||
XF86AudioMute
|
|
||||||
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/polybar/bin/popup-calendar.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
DATE="$(/run/current-system/sw/bin/date +"%B %d, %Y")"
|
|
||||||
SCREEN_WIDTH=$(/run/current-system/sw/bin/xrandr | /run/current-system/sw/bin/grep '*' | /run/current-system/sw/bin/awk '{print $1}' | /run/current-system/sw/bin/cut -d 'x' -f1)
|
|
||||||
POSX=$(( (SCREEN_WIDTH / 2) - ((SCREEN_WIDTH / 2 * 625) / 10000) ))
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
--popup)
|
|
||||||
/etc/profiles/per-user/${user}/bin/yad --calendar --fixed \
|
|
||||||
--posx=$POSX --posy=80 --no-buttons --borders=0 --title="yad-calendar" \
|
|
||||||
--close-on-unfocus
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "$DATE"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/polybar/bin/check-nixos-updates.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/run/current-system/sw/bin/git -C ~/.local/share/src/nixpkgs fetch upstream master
|
|
||||||
UPDATES=$(/run/current-system/sw/bin/git -C ~/.local/share/src/nixpkgs rev-list origin/master..upstream/master --count 2>/dev/null);
|
|
||||||
/run/current-system/sw/bin/echo " $UPDATES"; # Extra space for presentation with icon
|
|
||||||
/run/current-system/sw/bin/sleep 1800;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/polybar/bin/search-nixos-updates.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/etc/profiles/per-user/${user}/bin/google-chrome-stable --new-window "https://search.nixos.org/packages"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/rofi/colors.rasi".text = builtins.readFile ./config/rofi/colors.rasi;
|
|
||||||
"${xdg_configHome}/rofi/confirm.rasi".text = builtins.readFile ./config/rofi/confirm.rasi;
|
|
||||||
"${xdg_configHome}/rofi/launcher.rasi".text = builtins.readFile ./config/rofi/launcher.rasi;
|
|
||||||
"${xdg_configHome}/rofi/message.rasi".text = builtins.readFile ./config/rofi/message.rasi;
|
|
||||||
"${xdg_configHome}/rofi/networkmenu.rasi".text = builtins.readFile ./config/rofi/networkmenu.rasi;
|
|
||||||
"${xdg_configHome}/rofi/powermenu.rasi".text = builtins.readFile ./config/rofi/powermenu.rasi;
|
|
||||||
"${xdg_configHome}/rofi/styles.rasi".text = builtins.readFile ./config/rofi/styles.rasi;
|
|
||||||
|
|
||||||
"${xdg_configHome}/rofi/bin/launcher.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
rofi -no-config -no-lazy-grab -show drun -modi drun -theme ${xdg_configHome}/rofi/launcher.rasi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# @todo: Don't use hardcoded src paths
|
|
||||||
"${xdg_configHome}/rofi/bin/powermenu.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
configDir="${xdg_configHome}/rofi"
|
|
||||||
uptime=$(uptime -p | sed -e 's/up //g')
|
|
||||||
rofi_command="rofi -no-config -theme $configDir/powermenu.rasi"
|
|
||||||
|
|
||||||
# Options
|
|
||||||
shutdown=" Shutdown"
|
|
||||||
reboot=" Restart"
|
|
||||||
lock=" Lock"
|
|
||||||
suspend=" Sleep"
|
|
||||||
logout=" Logout"
|
|
||||||
|
|
||||||
# Confirmation
|
|
||||||
confirm_exit() {
|
|
||||||
rofi -dmenu\
|
|
||||||
-no-config\
|
|
||||||
-i\
|
|
||||||
-no-fixed-num-lines\
|
|
||||||
-p "Are You Sure? : "\
|
|
||||||
-theme $configDir/confirm.rasi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Message
|
|
||||||
msg() {
|
|
||||||
rofi -no-config -theme "$configDir/message.rasi" -e "Available Options - yes / y / no / n"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Variable passed to rofi
|
|
||||||
options="$lock\n$suspend\n$logout\n$reboot\n$shutdown"
|
|
||||||
chosen="$(echo -e "$options" | $rofi_command -p "Uptime: $uptime" -dmenu -selected-row 0)"
|
|
||||||
case $chosen in
|
|
||||||
$shutdown)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
systemctl poweroff
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
$reboot)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
systemctl reboot
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
$lock)
|
|
||||||
betterlockscreen -l
|
|
||||||
;;
|
|
||||||
$suspend)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
mpc -q pause
|
|
||||||
amixer set Master mute
|
|
||||||
systemctl suspend
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
$logout)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
bspc quit
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
user = "olaf";
|
|
||||||
xdg_configHome = "/home/${user}/.config";
|
|
||||||
shared-programs = import ../shared/home-manager.nix { inherit config pkgs lib; };
|
|
||||||
shared-files = import ../shared/files.nix { inherit config pkgs; };
|
|
||||||
|
|
||||||
polybar-user_modules = builtins.readFile (pkgs.substituteAll {
|
|
||||||
src = ./config/polybar/user_modules.ini;
|
|
||||||
packages = "${xdg_configHome}/polybar/bin/check-nixos-updates.sh";
|
|
||||||
searchpkgs = "${xdg_configHome}/polybar/bin/search-nixos-updates.sh";
|
|
||||||
launcher = "${xdg_configHome}/polybar/bin/launcher.sh";
|
|
||||||
powermenu = "${xdg_configHome}/rofi/bin/powermenu.sh";
|
|
||||||
calendar = "${xdg_configHome}/polybar/bin/popup-calendar.sh";
|
|
||||||
});
|
|
||||||
|
|
||||||
polybar-config = pkgs.substituteAll {
|
|
||||||
src = ./config/polybar/config.ini;
|
|
||||||
font0 = "DejaVu Sans:size=12;3";
|
|
||||||
font1 = "feather:size=12;3"; # from overlay
|
|
||||||
};
|
|
||||||
|
|
||||||
polybar-modules = builtins.readFile ./config/polybar/modules.ini;
|
|
||||||
polybar-bars = builtins.readFile ./config/polybar/bars.ini;
|
|
||||||
polybar-colors = builtins.readFile ./config/polybar/colors.ini;
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
enableNixpkgsReleaseCheck = false;
|
|
||||||
username = "${user}";
|
|
||||||
homeDirectory = "/home/${user}";
|
|
||||||
packages = pkgs.callPackage ./packages.nix {};
|
|
||||||
file = shared-files // import ./files.nix { inherit user; };
|
|
||||||
stateVersion = "21.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Use a dark theme
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
iconTheme = {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.adwaita-icon-theme;
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.adwaita-icon-theme;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Screen lock
|
|
||||||
services = {
|
|
||||||
screen-locker = {
|
|
||||||
enable = true;
|
|
||||||
inactiveInterval = 10;
|
|
||||||
lockCmd = "${pkgs.i3lock-fancy-rapid}/bin/i3lock-fancy-rapid 10 15";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Auto mount devices
|
|
||||||
udiskie.enable = true;
|
|
||||||
|
|
||||||
polybar = {
|
|
||||||
enable = true;
|
|
||||||
config = polybar-config;
|
|
||||||
extraConfig = polybar-bars + polybar-colors + polybar-modules + polybar-user_modules;
|
|
||||||
package = pkgs.polybarFull;
|
|
||||||
script = "polybar main &";
|
|
||||||
};
|
|
||||||
|
|
||||||
dunst = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.dunst;
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
monitor = 0;
|
|
||||||
follow = "mouse";
|
|
||||||
border = 0;
|
|
||||||
height = 400;
|
|
||||||
width = 320;
|
|
||||||
offset = "33x65";
|
|
||||||
indicate_hidden = "yes";
|
|
||||||
shrink = "no";
|
|
||||||
separator_height = 0;
|
|
||||||
padding = 32;
|
|
||||||
horizontal_padding = 32;
|
|
||||||
frame_width = 0;
|
|
||||||
sort = "no";
|
|
||||||
idle_threshold = 120;
|
|
||||||
font = "Noto Sans";
|
|
||||||
line_height = 4;
|
|
||||||
markup = "full";
|
|
||||||
format = "<b>%s</b>\n%b";
|
|
||||||
alignment = "left";
|
|
||||||
transparency = 10;
|
|
||||||
show_age_threshold = 60;
|
|
||||||
word_wrap = "yes";
|
|
||||||
ignore_newline = "no";
|
|
||||||
stack_duplicates = false;
|
|
||||||
hide_duplicate_count = "yes";
|
|
||||||
show_indicators = "no";
|
|
||||||
icon_position = "left";
|
|
||||||
icon_theme = "Adwaita-dark";
|
|
||||||
sticky_history = "yes";
|
|
||||||
history_length = 20;
|
|
||||||
history = "ctrl+grave";
|
|
||||||
browser = "google-chrome-stable";
|
|
||||||
always_run_script = true;
|
|
||||||
title = "Dunst";
|
|
||||||
class = "Dunst";
|
|
||||||
max_icon_size = 64;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = shared-programs // { gpg.enable = true; };
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
{ pkgs }:
|
|
||||||
|
|
||||||
with pkgs;
|
|
||||||
let shared-packages = import ../shared/packages.nix { inherit pkgs; }; in
|
|
||||||
shared-packages ++ [
|
|
||||||
|
|
||||||
# Security and authentication
|
|
||||||
yubikey-agent
|
|
||||||
keepassxc
|
|
||||||
|
|
||||||
# App and package management
|
|
||||||
appimage-run
|
|
||||||
gnumake
|
|
||||||
cmake
|
|
||||||
home-manager
|
|
||||||
|
|
||||||
# Media and design tools
|
|
||||||
vlc
|
|
||||||
fontconfig
|
|
||||||
font-manager
|
|
||||||
|
|
||||||
# Productivity tools
|
|
||||||
bc # old school calculator
|
|
||||||
galculator
|
|
||||||
|
|
||||||
# Audio tools
|
|
||||||
pavucontrol # Pulse audio controls
|
|
||||||
|
|
||||||
# Testing and development tools
|
|
||||||
direnv
|
|
||||||
rofi
|
|
||||||
rofi-calc
|
|
||||||
postgresql
|
|
||||||
libtool # for Emacs vterm
|
|
||||||
|
|
||||||
# Screenshot and recording tools
|
|
||||||
flameshot
|
|
||||||
|
|
||||||
# Text and terminal utilities
|
|
||||||
feh # Manage wallpapers
|
|
||||||
screenkey
|
|
||||||
tree
|
|
||||||
unixtools.ifconfig
|
|
||||||
unixtools.netstat
|
|
||||||
xclip # For the org-download package in Emacs
|
|
||||||
xorg.xwininfo # Provides a cursor to click and learn about windows
|
|
||||||
xorg.xrandr
|
|
||||||
|
|
||||||
# File and system utilities
|
|
||||||
inotify-tools # inotifywait, inotifywatch - For file system events
|
|
||||||
i3lock-fancy-rapid
|
|
||||||
libnotify
|
|
||||||
pcmanfm # File browser
|
|
||||||
sqlite
|
|
||||||
xdg-utils
|
|
||||||
|
|
||||||
# Other utilities
|
|
||||||
yad # yad-calendar is used with polybar
|
|
||||||
xdotool
|
|
||||||
google-chrome
|
|
||||||
|
|
||||||
# PDF viewer
|
|
||||||
zathura
|
|
||||||
|
|
||||||
# Music and entertainment
|
|
||||||
spotify
|
|
||||||
]
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{ config, pkgs, agenix, secrets, ... }:
|
|
||||||
|
|
||||||
let user = "olaf"; in
|
|
||||||
{
|
|
||||||
age.identityPaths = [
|
|
||||||
"/home/${user}/.ssh/id_ed25519"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Your secrets go here
|
|
||||||
#
|
|
||||||
# Note: the installWithSecrets command you ran to boostrap the machine actually copies over
|
|
||||||
# a Github key pair. However, if you want to store the keypair in your nix-secrets repo
|
|
||||||
# instead, you can reference the age files and specify the symlink path here. Then add your
|
|
||||||
# public key in shared/files.nix.
|
|
||||||
#
|
|
||||||
# If you change the key name, you'll need to update the SSH configuration in shared/home-manager.nix
|
|
||||||
# so Github reads it correctly.
|
|
||||||
|
|
||||||
#
|
|
||||||
# age.secrets."github-ssh-key" = {
|
|
||||||
# symlink = false;
|
|
||||||
# path = "/home/${user}/.ssh/id_github";
|
|
||||||
# file = "${secrets}/github-ssh-key.age";
|
|
||||||
# mode = "600";
|
|
||||||
# owner = "${user}";
|
|
||||||
# group = "wheel";
|
|
||||||
# };
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
## Shared
|
|
||||||
Much of the code running on MacOS or NixOS is actually found here.
|
|
||||||
|
|
||||||
This configuration gets imported by both modules. Some configuration examples include `git`, `zsh`, `vim`, and `tmux`.
|
|
||||||
|
|
||||||
## Layout
|
|
||||||
```
|
|
||||||
.
|
|
||||||
├── config # Config files not written in Nix
|
|
||||||
├── cachix # Defines cachix, a global cache for builds
|
|
||||||
├── default.nix # Defines how we import overlays
|
|
||||||
├── files.nix # Non-Nix, static configuration files (now immutable!)
|
|
||||||
├── home-manager.nix # The goods; most all shared config lives here
|
|
||||||
├── packages.nix # List of packages to share
|
|
||||||
|
|
||||||
```
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,142 +0,0 @@
|
|||||||
;; -------------------------
|
|
||||||
;; Variable Declarations
|
|
||||||
;; -------------------------
|
|
||||||
(defvar org-config-file "~/.local/share/src/nixos-config/modules/shared/config/emacs/config.org")
|
|
||||||
(defvar default-config-file "~/.emacs.d/default-config.org")
|
|
||||||
(defvar default-config-url "https://raw.githubusercontent.com/dustinlyons/nixos-config/9ad810c818b895c1f67f4daf21bbef31d8b5e8cd/shared/config/emacs/config.org")
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Package Manager Setup
|
|
||||||
;; -------------------------
|
|
||||||
(require 'package)
|
|
||||||
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
|
|
||||||
("gnu" . "http://elpa.gnu.org/packages/")))
|
|
||||||
|
|
||||||
(unless (assoc-default "melpa" package-archives)
|
|
||||||
(message "Warning: MELPA source not found. Adding MELPA to package-archives.")
|
|
||||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t))
|
|
||||||
(unless (assoc-default "org" package-archives)
|
|
||||||
(message "Warning: Org source not found. Adding Org to package-archives.")
|
|
||||||
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t))
|
|
||||||
|
|
||||||
(setq package-enable-at-startup nil)
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Use-Package Setup
|
|
||||||
;; -------------------------
|
|
||||||
(unless (package-installed-p 'use-package)
|
|
||||||
(package-initialize)
|
|
||||||
(if (package-install 'use-package)
|
|
||||||
(message "use-package installed successfully.")
|
|
||||||
(error "Error: Failed to install use-package."))
|
|
||||||
(setq use-package-verbose t)
|
|
||||||
(setq use-package-always-ensure t)
|
|
||||||
(require 'use-package))
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Environment Variables Setup
|
|
||||||
;; -------------------------
|
|
||||||
(use-package exec-path-from-shell
|
|
||||||
:if (memq window-system '(mac ns x))
|
|
||||||
:config
|
|
||||||
(setq exec-path-from-shell-variables '("PATH" "GOPATH" "PNPM_HOME"))
|
|
||||||
(if (exec-path-from-shell-initialize)
|
|
||||||
(message "Environment variables initialized successfully.")
|
|
||||||
(error "Error: Failed to initialize environment variables.")))
|
|
||||||
|
|
||||||
(when (daemonp)
|
|
||||||
(exec-path-from-shell-initialize))
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Straight.el Setup
|
|
||||||
;; -------------------------
|
|
||||||
(setq straight-repository-branch "develop")
|
|
||||||
(defvar bootstrap-version)
|
|
||||||
(let ((bootstrap-file
|
|
||||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
|
||||||
(bootstrap-version 6))
|
|
||||||
(unless (file-exists-p bootstrap-file)
|
|
||||||
(with-current-buffer
|
|
||||||
(url-retrieve-synchronously
|
|
||||||
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
|
|
||||||
'silent 'inhibit-cookies)
|
|
||||||
(goto-char (point-max))
|
|
||||||
(eval-print-last-sexp)))
|
|
||||||
(if (load bootstrap-file nil 'nomessage)
|
|
||||||
(message "Straight.el loaded successfully.")
|
|
||||||
(error "Error: Failed to load Straight.el.")))
|
|
||||||
|
|
||||||
(setq straight-use-package-by-default t)
|
|
||||||
(package-initialize)
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Window and UI Setup
|
|
||||||
;; -------------------------
|
|
||||||
(defun dl/window-setup ()
|
|
||||||
(condition-case nil
|
|
||||||
(progn
|
|
||||||
(column-number-mode)
|
|
||||||
(scroll-bar-mode 0)
|
|
||||||
(menu-bar-mode -1)
|
|
||||||
(tool-bar-mode 0)
|
|
||||||
(winner-mode 1)
|
|
||||||
(add-to-list 'default-frame-alist '(ns-transparent-titlebar . t))
|
|
||||||
(add-to-list 'default-frame-alist '(ns-appearance . dark))
|
|
||||||
(setq ns-use-proxy-icon nil)
|
|
||||||
(setq frame-title-format nil)
|
|
||||||
(message "Window and UI setup completed successfully."))
|
|
||||||
(error (message "Error occurred in Window and UI setup."))))
|
|
||||||
(dl/window-setup)
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Org Mode Setup
|
|
||||||
;; -------------------------
|
|
||||||
(defun dl/org-mode-setup ()
|
|
||||||
(condition-case nil
|
|
||||||
(progn
|
|
||||||
(org-indent-mode)
|
|
||||||
(variable-pitch-mode 1)
|
|
||||||
(auto-fill-mode 0)
|
|
||||||
(visual-line-mode 1)
|
|
||||||
(setq evil-auto-indent nil)
|
|
||||||
(message "Org mode setup completed successfully."))
|
|
||||||
(error (message "Error occurred in Org mode setup."))))
|
|
||||||
|
|
||||||
(use-package org
|
|
||||||
:defer t
|
|
||||||
:hook (org-mode . dl/org-mode-setup)
|
|
||||||
:config
|
|
||||||
(setq org-edit-src-content-indentation 2
|
|
||||||
org-ellipsis " ▾"
|
|
||||||
org-hide-emphasis-markers t
|
|
||||||
org-hide-block-startup nil)
|
|
||||||
:bind (("C-c a" . org-agenda)))
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Default Config Download
|
|
||||||
;; -------------------------
|
|
||||||
(defun dl/download-default-config ()
|
|
||||||
(condition-case nil
|
|
||||||
(progn
|
|
||||||
(unless (file-exists-p default-config-file)
|
|
||||||
(url-retrieve default-config-url
|
|
||||||
(lambda (_status)
|
|
||||||
;; delete-region removes the HTTP headers from the downloaded content.
|
|
||||||
(delete-region (point-min) (1+ url-http-end-of-headers))
|
|
||||||
;; save the contents of the buffer to the file.
|
|
||||||
(write-file default-config-file)))
|
|
||||||
(message "Default configuration downloaded successfully.")))
|
|
||||||
(error (message "Error occurred while downloading the default configuration."))))
|
|
||||||
|
|
||||||
;; -------------------------
|
|
||||||
;; Load Org Config or Default
|
|
||||||
;; -------------------------
|
|
||||||
(condition-case nil
|
|
||||||
(progn
|
|
||||||
(unless (file-exists-p org-config-file)
|
|
||||||
(dl/download-default-config))
|
|
||||||
(if (file-exists-p org-config-file)
|
|
||||||
(org-babel-load-file org-config-file)
|
|
||||||
(org-babel-load-file default-config-file))
|
|
||||||
(message "Configuration loaded successfully."))
|
|
||||||
(error (message "Error occurred while loading the configuration.")))
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{ pkgs, config, ... }:
|
|
||||||
|
|
||||||
# let
|
|
||||||
# githubPublicKey = "ssh-ed25519 AAAA...";
|
|
||||||
# in
|
|
||||||
{
|
|
||||||
|
|
||||||
# ".ssh/id_github.pub" = {
|
|
||||||
# text = githubPublicKey;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Initializes Emacs with org-mode so we can tangle the main config
|
|
||||||
".emacs.d/init.el" = {
|
|
||||||
text = builtins.readFile ../shared/config/emacs/init.el;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,395 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
name = "olaf";
|
|
||||||
user = "olaf";
|
|
||||||
email = "olaf@xolx.nl";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
# Shared shell configuration
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autocd = false;
|
|
||||||
cdpath = [ "~/.local/share/src" ];
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [ ];
|
|
||||||
# theme = "fishy";
|
|
||||||
# theme = "ys";
|
|
||||||
theme = "mrtazz";
|
|
||||||
};
|
|
||||||
# plugins = [ ];
|
|
||||||
|
|
||||||
initContent =
|
|
||||||
let
|
|
||||||
zshConfigEarlyInit = lib.mkOrder 500 ''
|
|
||||||
if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]]; then
|
|
||||||
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
|
||||||
. /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Define variables for directories
|
|
||||||
export PATH=$HOME/.pnpm-packages/bin:$HOME/.pnpm-packages:$PATH
|
|
||||||
export PATH=$HOME/.npm-packages/bin:$HOME/bin:$PATH
|
|
||||||
export PATH=$HOME/.local/share/bin:$PATH
|
|
||||||
export PATH=$HOME/.cargo/bin:$PATH
|
|
||||||
# Remove history data we don't want to see
|
|
||||||
export HISTIGNORE="pwd:ls:cd"
|
|
||||||
|
|
||||||
# Ripgrep alias
|
|
||||||
alias search=rg -p --glob '!node_modules/*' $@
|
|
||||||
|
|
||||||
# Emacs is my editor
|
|
||||||
export ALTERNATE_EDITOR=""
|
|
||||||
export EDITOR="emacsclient -t"
|
|
||||||
export VISUAL="emacsclient -c -a emacs"
|
|
||||||
|
|
||||||
e() {
|
|
||||||
emacsclient -t "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
# nix shortcuts
|
|
||||||
shell() {
|
|
||||||
nix-shell '<nixpkgs>' -A "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# pnpm is a javascript package manager
|
|
||||||
alias pn=pnpm
|
|
||||||
alias px=pnpx
|
|
||||||
|
|
||||||
# Use difftastic, syntax-aware diffing
|
|
||||||
# alias diff=difft
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'';
|
|
||||||
zshConfigLastInit = lib.mkOrder 1500 ''
|
|
||||||
# Always color ls and group directories
|
|
||||||
alias ls='ls --color=auto'
|
|
||||||
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
lib.mkMerge [
|
|
||||||
zshConfigEarlyInit
|
|
||||||
zshConfigLastInit
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
ignores = [ "*.swp" ];
|
|
||||||
userName = name;
|
|
||||||
userEmail = email;
|
|
||||||
lfs = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
core = {
|
|
||||||
editor = "vim";
|
|
||||||
autocrlf = "input";
|
|
||||||
};
|
|
||||||
commit.gpgsign = false;
|
|
||||||
pull.rebase = true;
|
|
||||||
rebase.autoStash = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vim = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
vim-airline
|
|
||||||
vim-airline-themes
|
|
||||||
vim-startify
|
|
||||||
vim-tmux-navigator
|
|
||||||
];
|
|
||||||
settings = {
|
|
||||||
ignorecase = true;
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
"" General
|
|
||||||
set number
|
|
||||||
set history=1000
|
|
||||||
set nocompatible
|
|
||||||
set modelines=0
|
|
||||||
set encoding=utf-8
|
|
||||||
set scrolloff=3
|
|
||||||
set showmode
|
|
||||||
set showcmd
|
|
||||||
set hidden
|
|
||||||
set wildmenu
|
|
||||||
set wildmode=list:longest
|
|
||||||
set cursorline
|
|
||||||
set ttyfast
|
|
||||||
set nowrap
|
|
||||||
set ruler
|
|
||||||
set backspace=indent,eol,start
|
|
||||||
set laststatus=2
|
|
||||||
set clipboard=autoselect
|
|
||||||
|
|
||||||
" Dir stuff
|
|
||||||
set nobackup
|
|
||||||
set nowritebackup
|
|
||||||
set noswapfile
|
|
||||||
set backupdir=~/.config/vim/backups
|
|
||||||
set directory=~/.config/vim/swap
|
|
||||||
|
|
||||||
" Relative line numbers for easy movement
|
|
||||||
set relativenumber
|
|
||||||
set rnu
|
|
||||||
|
|
||||||
"" Whitespace rules
|
|
||||||
set tabstop=8
|
|
||||||
set shiftwidth=2
|
|
||||||
set softtabstop=2
|
|
||||||
set expandtab
|
|
||||||
|
|
||||||
"" Searching
|
|
||||||
set incsearch
|
|
||||||
set gdefault
|
|
||||||
|
|
||||||
"" Statusbar
|
|
||||||
set nocompatible " Disable vi-compatibility
|
|
||||||
set laststatus=2 " Always show the statusline
|
|
||||||
let g:airline_theme='bubblegum'
|
|
||||||
let g:airline_powerline_fonts = 1
|
|
||||||
|
|
||||||
"" Local keys and such
|
|
||||||
let mapleader=","
|
|
||||||
let maplocalleader=" "
|
|
||||||
|
|
||||||
"" Change cursor on mode
|
|
||||||
:autocmd InsertEnter * set cul
|
|
||||||
:autocmd InsertLeave * set nocul
|
|
||||||
|
|
||||||
"" File-type highlighting and configuration
|
|
||||||
syntax on
|
|
||||||
filetype on
|
|
||||||
filetype plugin on
|
|
||||||
filetype indent on
|
|
||||||
|
|
||||||
"" Paste from clipboard
|
|
||||||
nnoremap <Leader>, "+gP
|
|
||||||
|
|
||||||
"" Copy from clipboard
|
|
||||||
xnoremap <Leader>. "+y
|
|
||||||
|
|
||||||
"" Move cursor by display lines when wrapping
|
|
||||||
nnoremap j gj
|
|
||||||
nnoremap k gk
|
|
||||||
|
|
||||||
"" Map leader-q to quit out of window
|
|
||||||
nnoremap <leader>q :q<cr>
|
|
||||||
|
|
||||||
"" Move around split
|
|
||||||
nnoremap <C-h> <C-w>h
|
|
||||||
nnoremap <C-j> <C-w>j
|
|
||||||
nnoremap <C-k> <C-w>k
|
|
||||||
nnoremap <C-l> <C-w>l
|
|
||||||
|
|
||||||
"" Easier to yank entire line
|
|
||||||
nnoremap Y y$
|
|
||||||
|
|
||||||
"" Move buffers
|
|
||||||
nnoremap <tab> :bnext<cr>
|
|
||||||
nnoremap <S-tab> :bprev<cr>
|
|
||||||
|
|
||||||
"" Like a boss, sudo AFTER opening the file to write
|
|
||||||
cmap w!! w !sudo tee % >/dev/null
|
|
||||||
|
|
||||||
let g:startify_lists = [
|
|
||||||
\ { 'type': 'dir', 'header': [' Current Directory '. getcwd()] },
|
|
||||||
\ { 'type': 'sessions', 'header': [' Sessions'] },
|
|
||||||
\ { 'type': 'bookmarks', 'header': [' Bookmarks'] }
|
|
||||||
\ ]
|
|
||||||
|
|
||||||
let g:startify_bookmarks = [
|
|
||||||
\ '~/.local/share/src',
|
|
||||||
\ ]
|
|
||||||
|
|
||||||
let g:airline_theme='bubblegum'
|
|
||||||
let g:airline_powerline_fonts = 1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
alacritty = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
cursor = {
|
|
||||||
style = "Block";
|
|
||||||
};
|
|
||||||
|
|
||||||
window = {
|
|
||||||
opacity = 1.0;
|
|
||||||
padding = {
|
|
||||||
x = 24;
|
|
||||||
y = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
font = {
|
|
||||||
normal = {
|
|
||||||
family = "MesloLGS NF";
|
|
||||||
style = "Regular";
|
|
||||||
};
|
|
||||||
size = lib.mkMerge [
|
|
||||||
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux 10)
|
|
||||||
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin 14)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dynamic_padding = true;
|
|
||||||
decorations = "full";
|
|
||||||
title = "Terminal";
|
|
||||||
class = {
|
|
||||||
instance = "Alacritty";
|
|
||||||
general = "Alacritty";
|
|
||||||
};
|
|
||||||
|
|
||||||
colors = {
|
|
||||||
primary = {
|
|
||||||
background = "0x1f2528";
|
|
||||||
foreground = "0xc0c5ce";
|
|
||||||
};
|
|
||||||
|
|
||||||
normal = {
|
|
||||||
black = "0x1f2528";
|
|
||||||
red = "0xec5f67";
|
|
||||||
green = "0x99c794";
|
|
||||||
yellow = "0xfac863";
|
|
||||||
blue = "0x6699cc";
|
|
||||||
magenta = "0xc594c5";
|
|
||||||
cyan = "0x5fb3b3";
|
|
||||||
white = "0xc0c5ce";
|
|
||||||
};
|
|
||||||
|
|
||||||
bright = {
|
|
||||||
black = "0x65737e";
|
|
||||||
red = "0xec5f67";
|
|
||||||
green = "0x99c794";
|
|
||||||
yellow = "0xfac863";
|
|
||||||
blue = "0x6699cc";
|
|
||||||
magenta = "0xc594c5";
|
|
||||||
cyan = "0x5fb3b3";
|
|
||||||
white = "0xd8dee9";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
ssh = {
|
|
||||||
enable = true;
|
|
||||||
includes = [
|
|
||||||
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux "/home/${user}/.ssh/config_external")
|
|
||||||
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "/Users/${user}/.ssh/config_external")
|
|
||||||
];
|
|
||||||
matchBlocks = {
|
|
||||||
"Host *" = {
|
|
||||||
identityAgent = "\"~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock\"";
|
|
||||||
};
|
|
||||||
"github.com" = {
|
|
||||||
identitiesOnly = true;
|
|
||||||
identityFile = [
|
|
||||||
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux "/home/${user}/.ssh/id_github")
|
|
||||||
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "/Users/${user}/.ssh/id_github")
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"moonunit.kolkman.org" = {
|
|
||||||
hostname = "moonunit.kolkman.org";
|
|
||||||
user = "root";
|
|
||||||
port = 2222;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
tmux = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs.tmuxPlugins; [
|
|
||||||
vim-tmux-navigator
|
|
||||||
sensible
|
|
||||||
yank
|
|
||||||
prefix-highlight
|
|
||||||
{
|
|
||||||
plugin = power-theme;
|
|
||||||
extraConfig = ''
|
|
||||||
set -g @tmux_power_theme 'gold'
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = resurrect; # Used by tmux-continuum
|
|
||||||
|
|
||||||
# Use XDG data directory
|
|
||||||
# https://github.com/tmux-plugins/tmux-resurrect/issues/348
|
|
||||||
extraConfig = ''
|
|
||||||
set -g @resurrect-dir '$HOME/.cache/tmux/resurrect'
|
|
||||||
set -g @resurrect-capture-pane-contents 'on'
|
|
||||||
set -g @resurrect-pane-contents-area 'visible'
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
{
|
|
||||||
plugin = continuum;
|
|
||||||
extraConfig = ''
|
|
||||||
set -g @continuum-restore 'on'
|
|
||||||
set -g @continuum-save-interval '5' # minutes
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
terminal = "screen-256color";
|
|
||||||
prefix = "C-x";
|
|
||||||
escapeTime = 10;
|
|
||||||
historyLimit = 50000;
|
|
||||||
extraConfig = ''
|
|
||||||
# Remove Vim mode delays
|
|
||||||
set -g focus-events on
|
|
||||||
|
|
||||||
# Enable full mouse support
|
|
||||||
set -g mouse on
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
# Key bindings
|
|
||||||
# -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Unbind default keys
|
|
||||||
unbind C-b
|
|
||||||
unbind '"'
|
|
||||||
unbind %
|
|
||||||
|
|
||||||
# Split panes, vertical or horizontal
|
|
||||||
bind-key x split-window -v
|
|
||||||
bind-key v split-window -h
|
|
||||||
|
|
||||||
# Move around panes with vim-like bindings (h,j,k,l)
|
|
||||||
bind-key -n M-k select-pane -U
|
|
||||||
bind-key -n M-h select-pane -L
|
|
||||||
bind-key -n M-j select-pane -D
|
|
||||||
bind-key -n M-l select-pane -R
|
|
||||||
|
|
||||||
# Smart pane switching with awareness of Vim splits.
|
|
||||||
# This is copy paste from https://github.com/christoomey/vim-tmux-navigator
|
|
||||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
|
||||||
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
|
|
||||||
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
|
||||||
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
|
||||||
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
|
||||||
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
|
||||||
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
|
|
||||||
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
|
|
||||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
|
|
||||||
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
|
|
||||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
|
|
||||||
|
|
||||||
bind-key -T copy-mode-vi 'C-h' select-pane -L
|
|
||||||
bind-key -T copy-mode-vi 'C-j' select-pane -D
|
|
||||||
bind-key -T copy-mode-vi 'C-k' select-pane -U
|
|
||||||
bind-key -T copy-mode-vi 'C-l' select-pane -R
|
|
||||||
bind-key -T copy-mode-vi 'C-\' select-pane -l
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
{ pkgs }:
|
|
||||||
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
# Nix
|
|
||||||
nixd
|
|
||||||
# General packages for development and system management
|
|
||||||
#alacritty
|
|
||||||
aspell
|
|
||||||
aspellDicts.en
|
|
||||||
bash-completion
|
|
||||||
bat
|
|
||||||
btop
|
|
||||||
coreutils
|
|
||||||
killall
|
|
||||||
neofetch
|
|
||||||
openssh
|
|
||||||
sqlite
|
|
||||||
wget
|
|
||||||
zip
|
|
||||||
htop
|
|
||||||
ncdu
|
|
||||||
mtr
|
|
||||||
nixfmt-rfc-style
|
|
||||||
difftastic
|
|
||||||
|
|
||||||
# Encryption and security tools
|
|
||||||
age
|
|
||||||
sops
|
|
||||||
gnupg
|
|
||||||
libfido2
|
|
||||||
|
|
||||||
# Cloud-related tools and SDKs
|
|
||||||
docker
|
|
||||||
docker-compose
|
|
||||||
|
|
||||||
# Media-related packages
|
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
dejavu_fonts
|
|
||||||
ffmpeg
|
|
||||||
fd
|
|
||||||
font-awesome
|
|
||||||
hack-font
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-emoji
|
|
||||||
meslo-lgs-nf
|
|
||||||
|
|
||||||
# Node.js development tools
|
|
||||||
nodePackages.npm # globally install npm
|
|
||||||
nodePackages.prettier
|
|
||||||
nodejs
|
|
||||||
|
|
||||||
# Text and terminal utilities
|
|
||||||
htop
|
|
||||||
hunspell
|
|
||||||
iftop
|
|
||||||
jetbrains-mono
|
|
||||||
jq
|
|
||||||
ripgrep
|
|
||||||
tree
|
|
||||||
tmux
|
|
||||||
unrar
|
|
||||||
unzip
|
|
||||||
rmapi
|
|
||||||
# zsh-powerlevel10k
|
|
||||||
|
|
||||||
# Python packages
|
|
||||||
python3
|
|
||||||
virtualenv
|
|
||||||
|
|
||||||
# Rust Related
|
|
||||||
rustc
|
|
||||||
cargo
|
|
||||||
|
|
||||||
# Tex and LaTex
|
|
||||||
pandoc
|
|
||||||
mdbook
|
|
||||||
|
|
||||||
(texlive.combine {
|
|
||||||
inherit (texlive)
|
|
||||||
apa6
|
|
||||||
bibunits
|
|
||||||
draftwatermark
|
|
||||||
enumitem
|
|
||||||
fontawesome5
|
|
||||||
footnotehyper
|
|
||||||
ifmtarg
|
|
||||||
lualatex-math
|
|
||||||
makecell
|
|
||||||
microtype
|
|
||||||
parskip
|
|
||||||
scheme-small
|
|
||||||
selnolig
|
|
||||||
sourcesanspro
|
|
||||||
tcolorbox
|
|
||||||
threeparttable
|
|
||||||
tikzfill
|
|
||||||
titling
|
|
||||||
upquote
|
|
||||||
xifthen
|
|
||||||
xurl
|
|
||||||
;
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
]
|
|
||||||
Reference in New Issue
Block a user