50 Commits
Author SHA1 Message Date
Olaf 2c31a2aced Removed nixos / linux bits 2026-07-30 16:38:22 +02:00
Olaf 45bf546b85 Fixed brew inconstistency andded tigervnc 2026-07-30 14:32:13 +02:00
Olaf c260e93db8 emacs hash 2026-07-30 12:00:52 +02:00
Olaf 341f20fe7a emacs SHA256 2026-07-26 12:47:43 +02:00
Olaf 980a42aaa1 fonts tweaking 2026-07-21 09:40:56 +02:00
Olaf f5ed23670c emacsOverlaySha256 2026-07-21 09:37:27 +02:00
Olaf dd455dc053 wireguard from app store 2026-07-21 09:37:02 +02:00
Olaf b87fea970b browser reorg to cask. Font.packages 2026-07-17 12:57:17 +02:00
Olaf ddfe41c461 Few home manager changes 2026-07-16 11:09:10 +02:00
Olaf c3cfbf5a6a Xterm & Ollama launch 2026-07-13 15:02:30 +02:00
Olaf Kolkman 1336a9bcd8 Added hermes-hud 2026-07-09 08:25:18 +02:00
Olaf Kolkman 48ee955035 cleanup 2026-07-08 22:55:53 +02:00
Olaf Kolkman 626a07e7e9 Works with LLM but should be able to do this cleaner 2026-07-08 22:34:15 +02:00
Olaf Kolkman 78ffc4e895 LLM-agents installed 2026-07-08 22:26:38 +02:00
Olaf Kolkman 4d54560d77 Add packages-list.nix for llm-agents packages 2026-07-08 22:17:25 +02:00
Olaf Kolkman 3ef4bb5495 X11 2026-07-07 20:31:41 +02:00
Olaf Kolkman 355d6995bf cjk in latex 2026-07-04 13:52:05 +02:00
Olaf dd7520ec84 Emacs-git and some tex packages 2026-07-01 15:34:39 +02:00
Olaf f311d671b2 emacs hash - remove bitwarden-cli 2026-06-11 15:22:03 +02:00
Olaf 126b92831a Bitwarden broke and now stable 26.05 2026-05-31 09:28:21 +02:00
Olaf 07aafd820c Bitwarden path in dock 2026-05-27 11:32:14 +02:00
Olaf 5111cb4178 Now running unstable.... 2026-05-12 10:52:51 +02:00
Olaf 86d529fdd0 git signing parameters 2026-03-24 08:19:44 +01:00
Olaf acf2b21f72 some apps, and GPG/SSH 2026-03-24 07:34:30 +01:00
Olaf Kolkman 2e0bc0bae2 Ollama and Bitwarden 2026-02-07 07:39:27 +01:00
Olaf 353e1373b8 Simplified emacs setup and made it default 2026-01-26 18:07:11 +01:00
Olaf add16d36f3 various packages and casks 2026-01-26 15:22:27 +01:00
Olaf fde5d13c0a sqlitestudio not working on this arch 2026-01-05 10:21:15 +01:00
Olaf 02d4f6e68d move order 2025-12-05 10:30:25 +01:00
Olaf 5d811f88ad sorting and minicom 2025-12-03 12:59:29 +01:00
Olaf Kolkman 635d6cdeca 25.05->25.11 2025-12-01 21:39:20 +01:00
Olaf 5cf2d8397d NAtive SQLite manager and rename brew 2025-11-22 18:20:33 +01:00
Olaf 0a1a5a4e4a xmpp clients and act (local git workflow) 2025-10-30 09:52:59 +00:00
Olaf 1666aba15f Removed spotify from menu 2025-10-09 11:57:37 +02:00
Olaf 8a88048d04 Added Steam 2025-10-09 11:56:35 +02:00
Olaf af6a0ca69c alpha ordering + addition DaisyDisk 2025-10-03 10:07:38 +02:00
Olaf 43d3ceaf41 Python packages 2025-10-01 14:23:09 +02:00
Olaf 79acda67c6 ssh config 2025-10-01 14:22:56 +02:00
Olaf 3a1745e620 ansible and X-quartz 2025-09-20 07:58:40 +10:00
Olaf ebe51b2dc6 added qobuz 2025-09-20 07:58:07 +10:00
Olaf eed6a57885 telnet through inetutils 2025-09-02 12:48:04 +02:00
Olaf bdf62ceec0 telnet throughinet tools 2025-09-02 12:47:06 +02:00
Olaf ca74f4654b emacs hash 2025-09-02 12:46:21 +02:00
Olaf bf8698da71 Moving zotero from brew to packages. 2025-08-27 14:53:04 +02:00
Olaf dd195b866d spotify moved, autodesk fusion fails, private internet moved 2025-08-25 16:07:11 +02:00
Olaf Kolkman 0540531fb8 gitdeveloper group added 2025-07-27 15:35:07 +02:00
Olaf Kolkman 3be843fd2e removing mac-apps because it doesn't work on X86 with OCLP 2025-07-27 15:34:40 +02:00
Olaf Kolkman 37c3dac5bb 1 password doesn't worlk with MAS it seems 2025-07-16 20:28:34 +02:00
Olaf f542767018 Moving a bunch of packages from brew to apple store 2025-07-16 18:07:52 +02:00
Olaf 9d1b7596b1 Adding mac-app-util to make apps spotlight findalbe 2025-06-03 10:15:10 +02:00
40 changed files with 507 additions and 5054 deletions
+4 -7
View File
@@ -1,12 +1,9 @@
# A NIX Config To Rule Them all
_now mostly focused on my Mac Machines_
# A macOS nix-darwin config
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`
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
```
mkdir -p nixos-config && cd nixos-config && nix flake --extra-experimental-features 'nix-command flakes' init -t github:dustinlyons/nixos-config#starter-with-secrets
```
Refactored the configuration to remove nixos but keep the shared modules and Darwin host setup, with no NixOS trees or Linux app targets.
+2 -31
View File
@@ -35,27 +35,11 @@ _prompt() {
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
# If the username is 'root', ask the user for their username
if [[ "$USERNAME" == "root" ]]; then
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
fi
@@ -101,24 +85,11 @@ select_boot_disk() {
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
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
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
case "$choice" in
-1
View File
@@ -1 +0,0 @@
x86_64-linux
+2 -31
View File
@@ -35,27 +35,11 @@ _prompt() {
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
# If the username is 'root', ask the user for their username
if [[ "$USERNAME" == "root" ]]; then
_prompt "${YELLOW}You're running as $USERNAME. Please enter your desired username: ${NC}" USERNAME
fi
@@ -101,24 +85,11 @@ select_boot_disk() {
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
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
_prompt "${YELLOW}Is this correct? yes/no: ${NC}" choice
case "$choice" in
-169
View File
@@ -1,169 +0,0 @@
#!/usr/bin/env bash
VERSION=1.0
# Color codes
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
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
_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"
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"
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}"
-30
View File
@@ -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}"
+32 -50
View File
@@ -1,8 +1,9 @@
{
description = "Starter Configuration with secrets (removed) for MacOS and NixOS";
description = "Starter configuration for macOS with nix-darwin";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs//nixpkgs-25.05-darwin";
url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin";
# url = "github:nixos/nixpkgs/nixpkgs-unstable";
};
home-manager = {
url = "github:nix-community/home-manager";
@@ -11,11 +12,17 @@
url = "github:nix-community/nixd";
};
darwin = {
url = "github:nix-darwin/nix-darwin/nix-darwin-25.05";
# url = "github:nix-darwin/nix-darwin";
url = "github:nix-darwin/nix-darwin/nix-darwin-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
brew-src = {
url = "github:Homebrew/brew/master";
flake = false;
};
nix-homebrew = {
url = "github:zhaofengli-wip/nix-homebrew";
inputs.brew-src.follows = "brew-src";
};
homebrew-bundle = {
url = "github:homebrew/homebrew-bundle";
@@ -29,10 +36,6 @@
url = "github:homebrew/homebrew-cask";
flake = false;
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
@@ -40,6 +43,17 @@
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 =
{
@@ -51,23 +65,20 @@
homebrew-cask,
home-manager,
nixpkgs,
disko,
nixd,
sops-nix,
nix-vscode-extensions,
catppuccin,
llm-agents,
...
}@inputs:
let
user = "olaf";
linuxSystems = [
"x86_64-linux"
"aarch64-linux"
];
darwinSystems = [
"aarch64-darwin"
"x86_64-darwin"
];
forAllSystems = f: nixpkgs.lib.genAttrs (linuxSystems ++ darwinSystems) f;
forAllSystems = f: nixpkgs.lib.genAttrs darwinSystems f;
devShell =
system:
let
@@ -101,29 +112,16 @@
'')
}/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;
};
mkDarwinApps = system: {
"apply" = mkApp "apply" system;
"build" = mkApp "build" 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;
};
in
{
devShells = forAllSystems devShell;
apps =
nixpkgs.lib.genAttrs linuxSystems mkLinuxApps
// nixpkgs.lib.genAttrs darwinSystems mkDarwinApps;
apps = nixpkgs.lib.genAttrs darwinSystems mkDarwinApps;
darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (
system:
@@ -131,9 +129,9 @@
inherit system;
specialArgs = inputs;
modules = [
# sops-nix.nixosModules.sops
home-manager.darwinModules.home-manager
nix-homebrew.darwinModules.nix-homebrew
# mac-app-util.darwinModules.default
{
nix-homebrew = {
inherit user;
@@ -146,31 +144,15 @@
mutableTaps = false;
autoMigrate = true;
};
home-manager.sharedModules = [
# mac-app-util.homeManagerModules.default
catppuccin.homeModules.catppuccin
];
}
./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
];
}
);
};
}
+56
View File
@@ -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)
+63 -3
View File
@@ -1,6 +1,7 @@
{
config,
pkgs,
llm-agents,
...
}:
@@ -39,7 +40,10 @@ in
"https://nix-community.cachix.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 = {
@@ -57,16 +61,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
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
environment.systemPackages =
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/shared/packages.nix { inherit pkgs llm-agents; })
;
@@ -82,6 +132,16 @@ in
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 = {
stateVersion = 4;
primaryUser = "${user}";
-342
View File
@@ -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
}
+41 -34
View File
@@ -2,72 +2,79 @@ _:
[
# Development Tools
"homebrew/cask/docker"
"arduino-ide"
"homebrew/cask/docker-desktop"
"iterm2"
"oracle-jdk"
"arduino-ide"
"visual-studio-code"
# Creatative tools
"spotify"
# Creative tools
"blender"
"gimp"
"inkscape"
"vcv-rack"
"affinity-designer"
"affinity-photo"
"affinity-publisher"
#"affinity-designer"
#"affinity-photo"
#"affinity-publisher"
# Communication Tools
"adium"
"discord"
"slack"
"signal"
"webex"
"whatsapp"
"zoom"
"webex"
# Utility Tools
"syncthing"
"blackhole-16ch"
"blackhole-2ch"
"box-drive"
"box-tools"
"synology-drive"
"spamsieve"
"keybase"
"daisydisk"
"karabiner-elements"
"keybase"
"spamsieve"
"syncthing-app"
"synology-drive"
# Entertainment Tools
"vlc"
"qobuz"
"steam"
"handbrake-app"
"jellyfin-media-player"
"vimediamanager"
"mediaelch"
"handbrake"
"obs"
"vimediamanager"
"vlc"
# Productivity Tools
"1Password"
"zotero"
"gpg-suite"
"home-assistant"
"Fantastical"
"Remarkable"
"mailmate"
"spamsieve"
"libreoffice"
"macdown"
"bitwarden"
"calibre"
"superslicer"
"element"
"mqtt-explorer"
"virtualbox"
"autodesk-fusion"
"qmk-toolbox"
"dbeaver-community"
"sqlitestudio"
"element"
"gpg-suite"
"macdown-3000"
"mailmate"
"orcaslicer"
"remanager"
"qmk-toolbox"
"smartsheet"
"spamsieve"
# "sqlitestudio" # Doesn't work without Rosetta
"tigervnc"
# "virtualbox" # build error?
"copilot-cli"
"wireshark"
# Browsers
"google-chrome"
"brave-browser"
"firefox"
"google-chrome"
# x11
"xquartz"
]
+68 -8
View File
@@ -3,6 +3,7 @@
pkgs,
lib,
home-manager,
llm-agents,
...
}:
@@ -17,6 +18,7 @@ let
additionalFiles = import ./files.nix { inherit user config pkgs; };
in
{
imports = [
./dock
];
@@ -31,8 +33,13 @@ in
homebrew = {
enable = true;
casks = pkgs.callPackage ./casks.nix { };
# onActivation.cleanup = "uninstall";
onActivation = {
cleanup = "uninstall";
autoUpdate = true;
upgrade = true;
};
# These app IDs are from using the mas CLI app
# mas = mac app store
@@ -43,10 +50,30 @@ in
#
# 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)
# This message is safe to ignore.
masApps = {
"wireguard" = 1451685025;
"1Password for Safari" = 1569813296; # (8.10.82)
"Affinity Designer 2" = 1616831348;
"Affinity Photo 2: Image Editor" = 1616822987;
"Affinity Publisher 2" = 1606941598;
"Apple Remote Desktop" = 409907375; # (3.11)
# "DaisyDisk" = 411643860; # (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)
"Wireguard" = 1451685025; # (1.0.16)
### "1Password: Password Manager" = 1511601750; # (8.11.0) Does not seem to insta
};
};
@@ -61,18 +88,39 @@ in
...
}:
{
home = {
enableNixpkgsReleaseCheck = false;
packages = pkgs.callPackage ./packages.nix { };
packages = pkgs.callPackage ./packages.nix { inherit llm-agents; };
file = lib.mkMerge [
sharedFiles
additionalFiles
{ "emacs-launcher.command".source = myEmacsLauncher; }
];
stateVersion = "23.11";
};
programs = { } // import ../shared/home-manager.nix { inherit config pkgs lib; };
programs = {
} // import ../shared/home-manager.nix { inherit config pkgs lib; };
catppuccin = {
autoEnable = true;
enable = true;
flavor = "mocha";
};
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
# https://github.com/nix-community/home-manager/issues/3344
@@ -89,23 +137,33 @@ in
{ path = "/System/Applications/Mail.app/"; }
{ path = "/Applications/MailMate.app/"; }
{ path = "/Applications/1Password.app/"; }
{ path = "/Applications/Bitwarden.app"; }
{ path = "/Applications/Calendar.app/"; }
{ path = "/Applications/Notes.app/"; }
{ path = "/Applications/Firefox.app/"; }
{ path = "/Applications/Slack.app/"; }
{
path = "/Applications/zoom.us.app/";
options = " -l Zooom";
options = " -l Zoom";
}
{ path = "/System/Applications/Messages.app/"; }
{ path = "/Applications/iTerm.app/"; }
{ path = "/Applications/Fantastical.app/"; }
# { path = "${pkgs.alacritty}/Applications/Alacritty.app/"; }
{ path = "/Applications/Spotify.app/"; }
{ path = "${pkgs.alacritty}/Applications/Alacritty.app/"; }
# { path = "/Applications/Spotify.app/"; }
{ path = "/Applications/Qobuz.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/System Settings.app/"; }
{ path = "/Applications/Signal.app/"; }
{ path = "/Applications/WhatsApp.app/"; }
{ path = "/Applications/Ice\ Cubes.app/"; }
{
path = "/Applications/Jellyfin Media Player.app/";
@@ -118,8 +176,10 @@ in
{ path = "/Applications/Microsoft Word.app/"; }
{ path = "/Applications/Microsoft PowerPoint.app/"; }
{ path = "/Applications/Microsoft Teams.app/"; }
{ path = "/Applications/Monal.app/"; }
{ path = "/System/Applications/Utilities/Screen Sharing.app/"; }
{ path = "/run/current-system/Applications/Emacs.app/"; }
{ path = "/run/current-system/Applications/Zotero.app"; }
{
path = "/Applications/";
section = "others";
+2 -2
View File
@@ -1,8 +1,8 @@
{ pkgs }:
{ pkgs, llm-agents }:
with pkgs;
let
shared-packages = import ../shared/packages.nix { inherit pkgs; };
shared-packages = import ../shared/packages.nix { inherit pkgs llm-agents; };
in
shared-packages
++ [
-10
View File
@@ -1,10 +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
```
Binary file not shown.

Before

Width:  |  Height:  |  Size: 692 KiB

-498
View File
@@ -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}
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
-9
View File
@@ -1,9 +0,0 @@
[color]
background = #1F1F1F
foreground = #FFFFFF
foreground-alt = #8F8F8F
module-fg = #FFFFFF
primary = #546e7a
secondary = #E53935
alternate = #7cb342
-215
View File
@@ -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
-674
View File
@@ -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@ &
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
-10
View File
@@ -1,10 +0,0 @@
/* colors */
* {
al: #00000000;
bg: #1F1F1FFF;
bga: #546e7a33;
bar: #FFFFFFFF;
fg: #FFFFFFFF;
ac: #546e7aFF;
}
-24
View File
@@ -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;
}
-119
View File
@@ -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;
}
-24
View File
@@ -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;
}
-126
View File
@@ -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;
}
-126
View File
@@ -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;
}
-126
View File
@@ -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;
}
-34
View File
@@ -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 = "/";
};
};
};
};
};
};
};
}
-368
View File
@@ -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
'';
};
}
-128
View File
@@ -1,128 +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.replaceVars {
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.replaceVars {
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;
};
}
-67
View File
@@ -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 -1
View File
@@ -1,5 +1,5 @@
## Shared
Much of the code running on MacOS or NixOS is actually found here.
Much of the code running on macOS is actually found here.
This configuration gets imported by both modules. Some configuration examples include `git`, `zsh`, `vim`, and `tmux`.
File diff suppressed because it is too large Load Diff
-142
View File
@@ -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://git.kolkman.org/olaf/nixos-config_to_rule_them_all/raw/branch/main/modules/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.")))
+8 -3
View File
@@ -1,9 +1,10 @@
{ config, pkgs, ... }:
let
emacsOverlaySha256 = "06413w510jmld20i4lik9b36cfafm501864yq8k4vxl5r4hn0j0h";
emacsOverlaySha256 = "0pqnl05j86pyvrlqh5kk4sximi749xqgiffq47grw7v98nqd2yin";
in
{
home-manager.backupFileExtension = "nix-backup";
nixpkgs = {
config = {
@@ -11,6 +12,9 @@ in
allowBroken = true;
allowInsecure = false;
allowUnsupportedSystem = true;
permittedInsecurePackages = [
"electron-39.8.10"
];
};
overlays =
@@ -22,8 +26,9 @@ in
(attrNames (readDir path)))
++ [(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;
}))];
}))
];
};
}
-4
View File
@@ -9,8 +9,4 @@
# 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;
};
}
+46 -17
View File
@@ -11,6 +11,16 @@ let
in
{
gpg = {
enable = true;
settings = {
default-key = "01B157D574FEDBB2" ;
no-emit-version = true;
auto-key-retrieve = true;
personal-digest-preferences= "SHA512 SHA384 SHA256 SHA224";
};
};
# Shared shell configuration
zsh = {
@@ -34,6 +44,10 @@ in
. /nix/var/nix/profiles/default/etc/profile.d/nix.sh
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
@@ -88,12 +102,11 @@ in
git = {
enable = true;
ignores = [ "*.swp" ];
userName = name;
userEmail = email;
lfs = {
enable = true;
};
extraConfig = {
settings = {
init.defaultBranch = "main";
core = {
editor = "vim";
@@ -102,6 +115,15 @@ in
commit.gpgsign = false;
pull.rebase = true;
rebase.autoStash = true;
user = {
name = name;
email = email;
};
};
signing = {
format = "openpgp";
key = null;
signByDefault = true;
};
};
@@ -289,20 +311,20 @@ in
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")
];
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";
@@ -310,6 +332,10 @@ in
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")
];
};
tmux = {
@@ -395,4 +421,7 @@ in
bind-key -T copy-mode-vi 'C-\' select-pane -l
'';
};
}
+39
View File
@@ -0,0 +1,39 @@
(vscode-with-extensions.override {
vscodeExtensions =
with vscode-extensions;
[
#bbenoist.nix
jnoortheen.nix-ide
ms-python.python
ms-azuretools.vscode-docker
# ms-vscode-remote.remote-ssh
# ms-vscode.cpptools
eamodio.gitlens
]
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
# {
# name = "remote-ssh-edit";
# publisher = "ms-vscode-remote";
# version = "0.47.2";
# sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
# }
{
name = "cpptools";
publisher = "ms-vscode";
version = "1.26.1";
sha256 = "sha256-uVE7sEO8XN3ArFpElUw25/BKyCOzF1EmZ5nHBkdoL/0=";
}
# {
# name = "minifyall";
# publisher = "josee9988";
# version = "2.10";
# }
{
name = "platformio-ide";
publisher = "platformio";
version = "3.3.4";
sha256 = "sha256-qfNz4IYjCmCMFLtAkbGTW5xnsVT8iDnFWjrgkmr2Slk=";
}
];
})
+142 -69
View File
@@ -1,158 +1,231 @@
{ pkgs }:
{ pkgs, llm-agents }:
with pkgs;
[
# Nix
nixd
mas
# X11
libx11
libxt
libxext
libxrender
libxrandr
xterm
# The Web Browsers
# maintained by in homebrew
# 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
alacritty
ansible
aspell
aspellDicts.en
bash-completion
bat
btop
coreutils
difftastic
htop
killall
neofetch
minicom
mtr
ncdu
nodejs
fastfetch
nixfmt
openssh
postgresql
sqlite
unrar
wget
zip
htop
ncdu
mtr
nixfmt-rfc-style
difftastic
# 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
llvm
clang-tools
dfu-util
# Encryption and security tools
age
sops
gnupg
just
libfido2
sops
# 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
ffmpeg
imagemagick
# Node.js development tools
nodePackages.npm # globally install npm
nodePackages.prettier
nodejs
#nodePackages.npm # globally install npm
#nodePackages.prettier
# Text and terminal utilities
htop
hunspell
iftop
jetbrains-mono
inetutils # includes Telnet
jq
ripgrep
tree
tmux
tree
unrar
unzip
rmapi
# zsh-powerlevel10k
# Python packages
python3
# python3
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
pillow
python-engineio
python-socketio
requests
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
# (vscode-with-extensions.override {
# vscodeExtensions =
# with vscode-extensions;
# [
# #bbenoist.nix
# jnoortheen.nix-ide
# ms-python.python
# ms-azuretools.vscode-docker
# # ms-vscode-remote.remote-ssh
# eamodio.gitlens
# james-yu.latex-workshop
# ]
# ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
# # {
# # name = "remote-ssh-edit";
# # publisher = "ms-vscode-remote";
# # version = "0.47.2";
# # sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
# # }
# {
# name = "cpptools";
# publisher = "ms-vscode";
# version = "1.26.1";
# sha256 = "sha256-uVE7sEO8XN3ArFpElUw25/BKyCOzF1EmZ5nHBkdoL/0=";
# }
# {
# name = "minifyall";
# publisher = "josee9988";
# version = "2.10.0";
# sha256 = "sha256-cH5x8fUN0n+hO1b3lNzau2MnyeYmsD0ZXAYGxCQjT0Y=";
# }
# {
# name = "platformio-ide";
# publisher = "platformio";
# version = "3.3.4";
# sha256 = "sha256-qfNz4IYjCmCMFLtAkbGTW5xnsVT8iDnFWjrgkmr2Slk=";
# }
# ];
# })
# XML, Tex and LaTex
# Tex and LaTex
pandoc
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
;
})
]
### Agents from https://github.com/numtide/llm-agents.nix
++ (with llm-agents.packages.${pkgs.stdenv.hostPlatform.system}; [
hermes-desktop
hermes-hud
])