init
init
This commit is contained in:
@@ -5,19 +5,37 @@ YELLOW='\033[1;33m'
|
|||||||
RED='\033[1;31m'
|
RED='\033[1;31m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
SYSTEM_TYPE="aarch64-darwin"
|
# Determine machine name from first argument or hostname
|
||||||
FLAKE_SYSTEM="darwinConfigurations.${SYSTEM_TYPE}.system"
|
if [ $# -gt 0 ]; then
|
||||||
|
MACHINE_NAME="$1"
|
||||||
|
shift # Remove machine name from arguments
|
||||||
|
else
|
||||||
|
MACHINE_NAME=$(hostname | cut -d'.' -f1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate machine name
|
||||||
|
if [ ! -d "hosts/darwin/$MACHINE_NAME" ]; then
|
||||||
|
echo "${RED}Error: Machine configuration '$MACHINE_NAME' not found in hosts/darwin/${NC}"
|
||||||
|
echo "${YELLOW}Available machines:${NC}"
|
||||||
|
ls -1 hosts/darwin/ | grep -v "default.nix\|shared.nix" || echo " No machine configurations found"
|
||||||
|
echo ""
|
||||||
|
echo "${YELLOW}Usage: $0 [machine-name] [additional-nix-args]${NC}"
|
||||||
|
echo " If no machine name is provided, uses current hostname: $(hostname | cut -d'.' -f1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FLAKE_SYSTEM="darwinConfigurations.${MACHINE_NAME}.system"
|
||||||
|
|
||||||
export NIXPKGS_ALLOW_UNFREE=1
|
export NIXPKGS_ALLOW_UNFREE=1
|
||||||
|
|
||||||
echo "${YELLOW}Starting build...${NC}"
|
echo "${YELLOW}Building configuration for machine: ${MACHINE_NAME}${NC}"
|
||||||
nix --extra-experimental-features 'nix-command flakes' build .#$FLAKE_SYSTEM $@
|
nix --extra-experimental-features 'nix-command flakes' build .#$FLAKE_SYSTEM "$@"
|
||||||
|
|
||||||
echo "${YELLOW}Switching to new generation...${NC}"
|
echo "${YELLOW}Switching to new generation...${NC}"
|
||||||
# See https://github.com/nix-darwin/nix-darwin/issues/1457 on why we need sudo
|
# See https://github.com/nix-darwin/nix-darwin/issues/1457 on why we need sudo
|
||||||
sudo ./result/sw/bin/darwin-rebuild switch --flake .#${SYSTEM_TYPE} $@
|
sudo ./result/sw/bin/darwin-rebuild switch --flake .#${MACHINE_NAME}
|
||||||
|
|
||||||
echo "${YELLOW}Cleaning up...${NC}"
|
echo "${YELLOW}Cleaning up...${NC}"
|
||||||
unlink ./result
|
unlink ./result
|
||||||
|
|
||||||
echo "${GREEN}Switch to new generation complete!${NC}"
|
echo "${GREEN}Switch to new generation complete for ${MACHINE_NAME}!${NC}"
|
||||||
|
|||||||
52
flake.lock
generated
52
flake.lock
generated
@@ -8,11 +8,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750173260,
|
"lastModified": 1754337839,
|
||||||
"narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=",
|
"narHash": "sha256-fEc2/4YsJwtnLU7HCFMRckb0u9UNnDZmwGhXT5U5NTw=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "531beac616433bac6f9e2a19feb8e99a22a66baf",
|
"rev": "856df6f6922845abd4fd958ce21febc07ca2fa45",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -24,16 +24,16 @@
|
|||||||
"brew-src": {
|
"brew-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751910772,
|
"lastModified": 1753461463,
|
||||||
"narHash": "sha256-jQNdIkq2iRDNWskd5f8kX6q9BO/CBSXhMH41WNRft8E=",
|
"narHash": "sha256-kGc7pRH0diLzKmOHsEFA8sZ9NJpgT+tqxAMsuqNd5Po=",
|
||||||
"owner": "Homebrew",
|
"owner": "Homebrew",
|
||||||
"repo": "brew",
|
"repo": "brew",
|
||||||
"rev": "700d67a85e0129ab8a893ff69246943479e33df1",
|
"rev": "4d14be89e99a45181c18e96a5f19a5b43343cc0f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "Homebrew",
|
"owner": "Homebrew",
|
||||||
"ref": "4.5.9",
|
"ref": "4.5.13",
|
||||||
"repo": "brew",
|
"repo": "brew",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -127,11 +127,11 @@
|
|||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754225444,
|
"lastModified": 1754263839,
|
||||||
"narHash": "sha256-mv01SQtqlhBMavc1dgNjgqJw4WfZxy+w3xBgwJU3YmU=",
|
"narHash": "sha256-ck7lILfCNuunsLvExPI4Pw9OOCJksxXwozum24W8b+8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "0de18bd5c6681280d7ae017fa34ffd91bdcf0557",
|
"rev": "1d7abbd5454db97e0af51416f4960b3fb64a4773",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -159,11 +159,11 @@
|
|||||||
"homebrew-cask": {
|
"homebrew-cask": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754242592,
|
"lastModified": 1754337299,
|
||||||
"narHash": "sha256-rOuSx8dNvdg2eAPSBlO5LGibHWCnIAHLYdHP0iGg8nM=",
|
"narHash": "sha256-EUJ+kn8JtuNSc1mlAQLVXmk3W2bdGLjSGEq/IxvduBU=",
|
||||||
"owner": "homebrew",
|
"owner": "homebrew",
|
||||||
"repo": "homebrew-cask",
|
"repo": "homebrew-cask",
|
||||||
"rev": "5fb44a514eb03b8a1139fdc312753832b4882451",
|
"rev": "885bf23bf37c350adca6c3d007cb84f76ab2bb84",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -175,11 +175,11 @@
|
|||||||
"homebrew-core": {
|
"homebrew-core": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754242529,
|
"lastModified": 1754338947,
|
||||||
"narHash": "sha256-Cqs4WhZWN2rbc+k4OIRrE5IIy7CWS/u2KInmrKPJbSY=",
|
"narHash": "sha256-C+Pt0qqnpNJsyXlLGg5n/WFvOWQ7e+bdxTJ9k4b86uA=",
|
||||||
"owner": "homebrew",
|
"owner": "homebrew",
|
||||||
"repo": "homebrew-core",
|
"repo": "homebrew-core",
|
||||||
"rev": "4298332c010f4d07caa2e9381705814fe2228873",
|
"rev": "d05c7db4ea810874d9ffa7d786a9eeb8d663825a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -193,11 +193,11 @@
|
|||||||
"brew-src": "brew-src"
|
"brew-src": "brew-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754001565,
|
"lastModified": 1754250993,
|
||||||
"narHash": "sha256-IhMN6xAIN9SSYlQGHA7ECEj+ejpH45C+FY5IrYqvfj0=",
|
"narHash": "sha256-MEin+qoQKtFC1b0f4tnQ+Z82BQWSCgh6Ef7rpmH9gig=",
|
||||||
"owner": "zhaofengli-wip",
|
"owner": "zhaofengli-wip",
|
||||||
"repo": "nix-homebrew",
|
"repo": "nix-homebrew",
|
||||||
"rev": "db11cc216d2ecd451e4952c60766d6cfaa0938b7",
|
"rev": "314d057294e79bc2596972126b84c6f9f144499a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -208,16 +208,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1745391562,
|
"lastModified": 1754028485,
|
||||||
"narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=",
|
"narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7",
|
"rev": "59e69648d345d6e8fef86158c555730fa12af9de",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-25.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -240,11 +240,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753939845,
|
"lastModified": 1754214453,
|
||||||
"narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=",
|
"narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "94def634a20494ee057c76998843c015909d6311",
|
"rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
100
flake.nix
100
flake.nix
@@ -47,10 +47,20 @@
|
|||||||
secrets,
|
secrets,
|
||||||
}@inputs:
|
}@inputs:
|
||||||
let
|
let
|
||||||
user = "cschmatzler";
|
systemLib = import ./lib/systems.nix inputs;
|
||||||
linuxSystems = [ "x86_64-linux" ];
|
inherit (systemLib)
|
||||||
darwinSystems = [ "aarch64-darwin" ];
|
systemConfigs
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs (linuxSystems ++ darwinSystems) f;
|
mkDarwinSystem
|
||||||
|
mkNixosSystem
|
||||||
|
mkApps
|
||||||
|
;
|
||||||
|
inherit (systemConfigs) darwinHosts nixosHosts;
|
||||||
|
|
||||||
|
allSystems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
];
|
||||||
|
forAllSystems = f: nixpkgs.lib.genAttrs allSystems f;
|
||||||
devShell =
|
devShell =
|
||||||
system:
|
system:
|
||||||
let
|
let
|
||||||
@@ -67,89 +77,17 @@
|
|||||||
age-plugin-yubikey
|
age-plugin-yubikey
|
||||||
];
|
];
|
||||||
shellHook = with pkgs; ''
|
shellHook = with pkgs; ''
|
||||||
export EDITOR=vim
|
export EDITOR=nvim
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
mkApp = scriptName: system: {
|
|
||||||
type = "app";
|
|
||||||
program = "${
|
|
||||||
(nixpkgs.legacyPackages.${system}.writeScriptBin scriptName ''
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
PATH=${nixpkgs.legacyPackages.${system}.git}/bin:$PATH
|
|
||||||
echo "Running ${scriptName} for ${system}"
|
|
||||||
exec ${self}/apps/${system}/${scriptName}
|
|
||||||
'')
|
|
||||||
}/bin/${scriptName}";
|
|
||||||
};
|
|
||||||
mkLinuxApps = 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;
|
|
||||||
};
|
|
||||||
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
|
in
|
||||||
{
|
{
|
||||||
devShells = forAllSystems devShell;
|
devShells = forAllSystems devShell;
|
||||||
apps =
|
apps = forAllSystems mkApps;
|
||||||
nixpkgs.lib.genAttrs linuxSystems mkLinuxApps // nixpkgs.lib.genAttrs darwinSystems mkDarwinApps;
|
darwinConfigurations = nixpkgs.lib.genAttrs darwinHosts mkDarwinSystem;
|
||||||
|
nixosConfigurations = nixpkgs.lib.genAttrs nixosHosts (
|
||||||
darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (
|
hostname: mkNixosSystem hostname "x86_64-linux"
|
||||||
system:
|
|
||||||
darwin.lib.darwinSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = inputs;
|
|
||||||
modules = [
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
nix-homebrew.darwinModules.nix-homebrew
|
|
||||||
{
|
|
||||||
nix-homebrew = {
|
|
||||||
inherit user;
|
|
||||||
enable = true;
|
|
||||||
taps = {
|
|
||||||
"homebrew/homebrew-core" = homebrew-core;
|
|
||||||
"homebrew/homebrew-cask" = homebrew-cask;
|
|
||||||
"homebrew/homebrew-bundle" = homebrew-bundle;
|
|
||||||
};
|
|
||||||
mutableTaps = false;
|
|
||||||
autoMigrate = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
./hosts/darwin
|
|
||||||
];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
nixosConfigurations = nixpkgs.lib.genAttrs linuxSystems (
|
|
||||||
system:
|
|
||||||
nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = inputs;
|
|
||||||
modules = [
|
|
||||||
disko.nixosModules.disko
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
users.${user} = import ./modules/nixos/home-manager.nix;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
./hosts/nixos
|
|
||||||
];
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
23
hosts/darwin/chidi/default.nix
Normal file
23
hosts/darwin/chidi/default.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../shared.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "chidi";
|
||||||
|
networking.computerName = "Chidi";
|
||||||
|
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
programs.git.userEmail = "christoph@tuist.dev";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
slack
|
||||||
|
tuple
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
agenix,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
user = "cschmatzler";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
../../modules/darwin/secrets.nix
|
|
||||||
../../modules/darwin/home-manager.nix
|
|
||||||
../../modules/shared
|
|
||||||
agenix.darwinModules.default
|
|
||||||
];
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = pkgs.nix;
|
|
||||||
settings = {
|
|
||||||
trusted-users = [
|
|
||||||
"@admin"
|
|
||||||
"${user}"
|
|
||||||
];
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
|
||||||
};
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
interval = {
|
|
||||||
Weekday = 0;
|
|
||||||
Hour = 2;
|
|
||||||
Minute = 0;
|
|
||||||
};
|
|
||||||
options = "--delete-older-than 30d";
|
|
||||||
};
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages =
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
agenix.packages."${pkgs.system}".default
|
|
||||||
]
|
|
||||||
++ (import ../../modules/shared/packages.nix { inherit pkgs; });
|
|
||||||
|
|
||||||
system = {
|
|
||||||
checks.verifyNixPath = false;
|
|
||||||
primaryUser = user;
|
|
||||||
stateVersion = 5;
|
|
||||||
|
|
||||||
defaults = {
|
|
||||||
NSGlobalDomain = {
|
|
||||||
AppleShowAllExtensions = true;
|
|
||||||
ApplePressAndHoldEnabled = false;
|
|
||||||
|
|
||||||
# 120, 90, 60, 30, 12, 6, 2
|
|
||||||
KeyRepeat = 2;
|
|
||||||
|
|
||||||
# 120, 94, 68, 35, 25, 15
|
|
||||||
InitialKeyRepeat = 15;
|
|
||||||
|
|
||||||
"com.apple.mouse.tapBehavior" = 1;
|
|
||||||
"com.apple.sound.beep.volume" = 0.0;
|
|
||||||
"com.apple.sound.beep.feedback" = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
dock = {
|
|
||||||
autohide = false;
|
|
||||||
show-recents = false;
|
|
||||||
launchanim = true;
|
|
||||||
orientation = "bottom";
|
|
||||||
tilesize = 48;
|
|
||||||
};
|
|
||||||
|
|
||||||
finder = {
|
|
||||||
_FXShowPosixPathInTitle = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
trackpad = {
|
|
||||||
Clicking = true;
|
|
||||||
TrackpadThreeFingerDrag = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
23
hosts/darwin/jason/default.nix
Normal file
23
hosts/darwin/jason/default.nix
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../shared.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "jason";
|
||||||
|
networking.computerName = "Jason";
|
||||||
|
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
programs.git.userEmail = "christoph@schmatzler.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
slack
|
||||||
|
];
|
||||||
|
}
|
||||||
14
hosts/darwin/shared.nix
Normal file
14
hosts/darwin/shared.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
agenix,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../profiles/base
|
||||||
|
../../profiles/darwin
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -3,22 +3,21 @@
|
|||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
agenix,
|
agenix,
|
||||||
|
hostname,
|
||||||
|
user,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
user = "cschmatzler";
|
|
||||||
keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOk8iAnIaa1deoc7jw8YACPNVka1ZFJxhnU4G74TmS+p" ];
|
keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOk8iAnIaa1deoc7jw8YACPNVka1ZFJxhnU4G74TmS+p" ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/nixos/secrets.nix
|
../../profiles/base
|
||||||
../../modules/nixos/disk-config.nix
|
../../profiles/nixos
|
||||||
../../modules/shared
|
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
];
|
];
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
|
||||||
boot = {
|
boot = {
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
@@ -35,54 +34,24 @@ in
|
|||||||
"usb_storage"
|
"usb_storage"
|
||||||
"sd_mod"
|
"sd_mod"
|
||||||
];
|
];
|
||||||
# Uncomment for AMD GPU
|
|
||||||
# initrd.kernelModules = [ "amdgpu" ];
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
kernelModules = [ "uinput" ];
|
kernelModules = [ "uinput" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Set your time zone.
|
time.timeZone = "UTC";
|
||||||
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 = {
|
networking = {
|
||||||
hostName = "%HOST%"; # Define your hostname.
|
hostName = hostname;
|
||||||
useDHCP = false;
|
useDHCP = false;
|
||||||
interfaces."%INTERFACE%".useDHCP = true;
|
interfaces."%INTERFACE%".useDHCP = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
nix = {
|
nix.nixPath = [ "nixos-config=/home/${user}/.local/share/src/nixos-config:/etc/nixos" ];
|
||||||
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 = {
|
programs = {
|
||||||
gnupg.agent.enable = true;
|
gnupg.agent.enable = true;
|
||||||
|
|
||||||
# Needed for anything GTK related
|
|
||||||
dconf.enable = true;
|
dconf.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
# My shell
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
@@ -90,45 +59,24 @@ in
|
|||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
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 = {
|
displayManager.lightdm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
greeters.slick.enable = true;
|
greeters.slick.enable = true;
|
||||||
background = ../../modules/nixos/config/login-wallpaper.png;
|
background = ../../profiles/nixos/config/login-wallpaper.png;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Tiling window manager
|
|
||||||
windowManager.bspwm = {
|
windowManager.bspwm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
xkb = {
|
xkb = {
|
||||||
# Turn Caps Lock into Ctrl
|
|
||||||
layout = "us";
|
layout = "us";
|
||||||
options = "ctrl:nocaps";
|
options = "ctrl:nocaps";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Better support for general peripherals
|
|
||||||
libinput.enable = true;
|
libinput.enable = true;
|
||||||
|
|
||||||
# Let's be able to SSH into this machine
|
|
||||||
openssh.enable = true;
|
openssh.enable = true;
|
||||||
|
|
||||||
# Sync state between machines
|
|
||||||
# Sync state between machines
|
|
||||||
syncthing = {
|
syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openDefaultPorts = true;
|
openDefaultPorts = true;
|
||||||
@@ -283,15 +231,12 @@ in
|
|||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
virtualisation.docker.logDriver = "json-file";
|
virtualisation.docker.logDriver = "json-file";
|
||||||
|
|
||||||
# It's me, it's you, it's everyone
|
# Additional user config beyond what's in profiles/nixos
|
||||||
users.users = {
|
users.users = {
|
||||||
${user} = {
|
${user} = {
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel" # Enable ‘sudo’ for the user.
|
|
||||||
"docker"
|
"docker"
|
||||||
];
|
];
|
||||||
shell = pkgs.zsh;
|
|
||||||
openssh.authorizedKeys.keys = keys;
|
openssh.authorizedKeys.keys = keys;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
93
lib/systems.nix
Normal file
93
lib/systems.nix
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
{
|
||||||
|
nixpkgs,
|
||||||
|
darwin,
|
||||||
|
home-manager,
|
||||||
|
nix-homebrew,
|
||||||
|
homebrew-bundle,
|
||||||
|
homebrew-core,
|
||||||
|
homebrew-cask,
|
||||||
|
disko,
|
||||||
|
self,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
|
|
||||||
|
let
|
||||||
|
user = "cschmatzler";
|
||||||
|
|
||||||
|
mkApp = scriptName: system: {
|
||||||
|
type = "app";
|
||||||
|
program = "${
|
||||||
|
(nixpkgs.legacyPackages.${system}.writeScriptBin scriptName ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
PATH=${nixpkgs.legacyPackages.${system}.git}/bin:$PATH
|
||||||
|
echo "Running ${scriptName} for ${system}"
|
||||||
|
exec ${self}/apps/${system}/${scriptName} "$@"
|
||||||
|
'')
|
||||||
|
}/bin/${scriptName}";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mkDarwinSystem =
|
||||||
|
hostname:
|
||||||
|
darwin.lib.darwinSystem {
|
||||||
|
system = "aarch64-darwin";
|
||||||
|
specialArgs = inputs // {
|
||||||
|
inherit user;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
nix-homebrew.darwinModules.nix-homebrew
|
||||||
|
{
|
||||||
|
nix-homebrew = {
|
||||||
|
inherit user;
|
||||||
|
enable = true;
|
||||||
|
taps = {
|
||||||
|
"homebrew/homebrew-core" = homebrew-core;
|
||||||
|
"homebrew/homebrew-cask" = homebrew-cask;
|
||||||
|
"homebrew/homebrew-bundle" = homebrew-bundle;
|
||||||
|
};
|
||||||
|
mutableTaps = false;
|
||||||
|
autoMigrate = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
../hosts/darwin/${hostname}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
mkNixosSystem =
|
||||||
|
hostname: system:
|
||||||
|
nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
specialArgs = inputs // {
|
||||||
|
inherit hostname user;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
../hosts/nixos
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
mkApps =
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
appNames = [
|
||||||
|
"apply"
|
||||||
|
"build"
|
||||||
|
"build-switch"
|
||||||
|
"copy-keys"
|
||||||
|
"create-keys"
|
||||||
|
"check-keys"
|
||||||
|
"rollback"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
nixpkgs.lib.genAttrs appNames (name: mkApp name system);
|
||||||
|
|
||||||
|
systemConfigs = {
|
||||||
|
darwinHosts = [
|
||||||
|
"chidi"
|
||||||
|
"jason"
|
||||||
|
];
|
||||||
|
nixosHosts = [ "tahani" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
## Layout
|
|
||||||
```
|
|
||||||
.
|
|
||||||
├── dock # MacOS dock configuration
|
|
||||||
├── casks.nix # List of homebrew casks
|
|
||||||
├── default.nix # Defines module, system-level config
|
|
||||||
├── files.nix # Non-Nix, static configuration files (now immutable!)
|
|
||||||
├── home-manager.nix # Defines user programs
|
|
||||||
├── packages.nix # List of packages to install for MacOS
|
|
||||||
```
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
_: [ ]
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
user,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{ }
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{ pkgs }:
|
|
||||||
with pkgs;
|
|
||||||
let
|
|
||||||
shared-packages = import ../shared/packages.nix { inherit pkgs; };
|
|
||||||
in
|
|
||||||
shared-packages
|
|
||||||
++ [
|
|
||||||
_1password-gui
|
|
||||||
dockutil
|
|
||||||
raycast
|
|
||||||
neovim
|
|
||||||
]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
## Layout
|
|
||||||
```
|
|
||||||
.
|
|
||||||
├── config # Config files not written in Nix
|
|
||||||
├── default.nix # Defines module, system-level config,
|
|
||||||
├── disk-config.nix # Disks, partitions, and filesystems
|
|
||||||
├── files.nix # Non-Nix, static configuration files (now immutable!)
|
|
||||||
├── home-manager.nix # Defines user programs
|
|
||||||
├── packages.nix # List of packages to install for NixOS
|
|
||||||
├── secrets.nix # Age-encrypted secrets with agenix
|
|
||||||
```
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 692 KiB |
@@ -1,498 +0,0 @@
|
|||||||
;; ┌────────────────────────────────────────────────────┐
|
|
||||||
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▀▄░█▀█░█▀▄░█▀▀│
|
|
||||||
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█▀▄░█▀█░█▀▄░▀▀█│
|
|
||||||
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀░░▀░▀░▀░▀░▀▀▀│
|
|
||||||
;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░│
|
|
||||||
;; └────────────────────────────────────────────────────┘
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[bar]
|
|
||||||
fill =
|
|
||||||
empty =
|
|
||||||
indicator = ⏽
|
|
||||||
; Nerd font : , ⏽, 樂 籠 錄 , 雷 絛
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/volume]
|
|
||||||
type = internal/alsa
|
|
||||||
|
|
||||||
; Soundcard to be used
|
|
||||||
; Usually in the format hw:# where # is the card number
|
|
||||||
; You can find the different card numbers in `/proc/asound/cards`
|
|
||||||
master-soundcard = default
|
|
||||||
speaker-soundcard = default
|
|
||||||
headphone-soundcard = default
|
|
||||||
|
|
||||||
; Name of the master, speaker and headphone mixers
|
|
||||||
; Use the following command to list available mixer controls:
|
|
||||||
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
|
|
||||||
; If master, speaker or headphone-soundcard isn't the default,
|
|
||||||
; use `amixer -c # scontrols` instead where # is the number
|
|
||||||
; of the master, speaker or headphone soundcard respectively
|
|
||||||
;
|
|
||||||
; Default: Master
|
|
||||||
master-mixer = Master
|
|
||||||
|
|
||||||
; Optionally define speaker and headphone mixers
|
|
||||||
; Default: none
|
|
||||||
;;speaker-mixer = Speaker
|
|
||||||
; Default: none
|
|
||||||
;;headphone-mixer = Headphone
|
|
||||||
|
|
||||||
; NOTE: This is required if headphone_mixer is defined
|
|
||||||
; Use the following command to list available device controls
|
|
||||||
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
|
|
||||||
; You may also need to use `amixer -c # controls` as above for the mixer names
|
|
||||||
; Default: none
|
|
||||||
;;headphone-id = 9
|
|
||||||
|
|
||||||
; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
|
|
||||||
; Default: false
|
|
||||||
;;mapped = true
|
|
||||||
|
|
||||||
; Interval for volume increase/decrease (in percent points)
|
|
||||||
; Default: 5
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-volume> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-volume = <ramp-volume> <bar-volume>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-muted> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-muted = <label-muted>
|
|
||||||
format-muted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default
|
|
||||||
label-muted = " Muted"
|
|
||||||
label-muted-foreground = ${color.foreground-alt}
|
|
||||||
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-volume-0 =
|
|
||||||
ramp-volume-1 =
|
|
||||||
ramp-volume-2 =
|
|
||||||
|
|
||||||
; Only applies if <bar-volume> is used
|
|
||||||
bar-volume-width = 10
|
|
||||||
bar-volume-gradient = false
|
|
||||||
|
|
||||||
bar-volume-indicator = ${bar.indicator}
|
|
||||||
bar-volume-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-volume-fill = ${bar.fill}
|
|
||||||
bar-volume-foreground-0 = ${color.foreground}
|
|
||||||
bar-volume-foreground-1 = ${color.foreground}
|
|
||||||
bar-volume-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-volume-empty = ${bar.empty}
|
|
||||||
bar-volume-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
; If defined, it will replace <ramp-volume> when
|
|
||||||
; headphones are plugged in to `headphone_control_numid`
|
|
||||||
; If undefined, <ramp-volume> will be used for both
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-headphones-0 =
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/brightness]
|
|
||||||
;type = internal/xbacklight
|
|
||||||
type = internal/backlight
|
|
||||||
|
|
||||||
; Use the following command to list available cards:
|
|
||||||
; $ ls -1 /sys/class/backlight/
|
|
||||||
;card = intel_backlight
|
|
||||||
card = amdgpu_bl0
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <ramp>
|
|
||||||
; <bar>
|
|
||||||
format = <ramp> <bar>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label = %percentage%%
|
|
||||||
|
|
||||||
; Only applies if <ramp> is used
|
|
||||||
ramp-0 =
|
|
||||||
ramp-1 =
|
|
||||||
ramp-2 =
|
|
||||||
ramp-3 =
|
|
||||||
ramp-4 =
|
|
||||||
|
|
||||||
; Only applies if <bar> is used
|
|
||||||
bar-width = 10
|
|
||||||
bar-gradient = false
|
|
||||||
|
|
||||||
bar-indicator = ${bar.indicator}
|
|
||||||
bar-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-fill = ${bar.fill}
|
|
||||||
bar-foreground-0 = ${color.foreground}
|
|
||||||
bar-foreground-1 = ${color.foreground}
|
|
||||||
bar-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-empty = ${bar.empty}
|
|
||||||
bar-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/battery_bar]
|
|
||||||
type = internal/battery
|
|
||||||
|
|
||||||
; This is useful in case the battery never reports 100% charge
|
|
||||||
full-at = 99
|
|
||||||
|
|
||||||
; Use the following command to list batteries and adapters:
|
|
||||||
; $ ls -1 /sys/class/power_supply/
|
|
||||||
battery = BAT1
|
|
||||||
adapter = ACAD
|
|
||||||
|
|
||||||
; If an inotify event haven't been reported in this many
|
|
||||||
; seconds, manually poll for new values.
|
|
||||||
;
|
|
||||||
; Needed as a fallback for systems that don't report events
|
|
||||||
; on sysfs/procfs.
|
|
||||||
;
|
|
||||||
; Disable polling by setting the interval to 0.
|
|
||||||
;
|
|
||||||
; Default: 5
|
|
||||||
poll-interval = 2
|
|
||||||
|
|
||||||
; see "man date" for details on how to format the time string
|
|
||||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
|
||||||
; Default: %H:%M:%S
|
|
||||||
time-format = %H:%M
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-charging> (default)
|
|
||||||
; <bar-capacity>
|
|
||||||
; <ramp-capacity>
|
|
||||||
; <animation-charging>
|
|
||||||
format-charging = <bar-capacity>
|
|
||||||
format-charging-prefix = " "
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-discharging> (default)
|
|
||||||
; <bar-capacity>
|
|
||||||
; <ramp-capacity>
|
|
||||||
; <animation-discharging>
|
|
||||||
format-discharging = <bar-capacity>
|
|
||||||
format-discharging-prefix = " "
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-full> (default)
|
|
||||||
; <bar-capacity>
|
|
||||||
; <ramp-capacity>
|
|
||||||
format-full = <label-full>
|
|
||||||
format-full-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
; %time%
|
|
||||||
; %consumption% (shows current charge rate in watts)
|
|
||||||
|
|
||||||
label-charging = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
; %time%
|
|
||||||
; %consumption% (shows current discharge rate in watts)
|
|
||||||
label-discharging = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-full = " Full"
|
|
||||||
|
|
||||||
; Only applies if <bar-capacity> is used
|
|
||||||
bar-capacity-width = 10
|
|
||||||
bar-capacity-gradient = false
|
|
||||||
|
|
||||||
bar-capacity-indicator = ${bar.indicator}
|
|
||||||
bar-capacity-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-capacity-fill = ${bar.fill}
|
|
||||||
bar-capacity-foreground-0 = ${color.foreground}
|
|
||||||
bar-capacity-foreground-1 = ${color.foreground}
|
|
||||||
bar-capacity-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-capacity-empty = ${bar.empty}
|
|
||||||
bar-capacity-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/cpu_bar]
|
|
||||||
type = internal/cpu
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 0.5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-load>
|
|
||||||
; <ramp-load>
|
|
||||||
; <ramp-coreload>
|
|
||||||
;;format = <label> <ramp-coreload>
|
|
||||||
format = <bar-load> <label>
|
|
||||||
format-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default) - total cpu load averaged over all cores
|
|
||||||
; %percentage-sum% - Cumulative load on all cores
|
|
||||||
; %percentage-cores% - load percentage for each core
|
|
||||||
; %percentage-core[1-9]% - load percentage for specific core
|
|
||||||
label = "%percentage%%"
|
|
||||||
|
|
||||||
; Only applies if <bar-load> is used
|
|
||||||
bar-load-width = 10
|
|
||||||
bar-load-gradient = false
|
|
||||||
|
|
||||||
bar-load-indicator = ${bar.indicator}
|
|
||||||
bar-load-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-load-fill = ${bar.fill}
|
|
||||||
bar-load-foreground-0 = ${color.foreground}
|
|
||||||
bar-load-foreground-1 = ${color.foreground}
|
|
||||||
bar-load-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-load-empty = ${bar.empty}
|
|
||||||
bar-load-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/filesystem_bar]
|
|
||||||
type = internal/fs
|
|
||||||
|
|
||||||
; Mountpoints to display
|
|
||||||
mount-0 = /
|
|
||||||
;;mount-1 = /home
|
|
||||||
;;mount-2 = /var
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 30
|
|
||||||
interval = 30
|
|
||||||
|
|
||||||
; Display fixed precision values
|
|
||||||
; Default: false
|
|
||||||
fixed-values = false
|
|
||||||
|
|
||||||
; Spacing between entries
|
|
||||||
; Default: 2
|
|
||||||
;;spacing = 4
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-mounted> (default)
|
|
||||||
; <bar-free>
|
|
||||||
; <bar-used>
|
|
||||||
; <ramp-capacity>
|
|
||||||
format-mounted = <bar-used> <label-mounted>
|
|
||||||
format-mounted-prefix = " "
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-unmounted> (default)
|
|
||||||
format-unmounted = <label-unmounted>
|
|
||||||
format-unmounted-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; %type%
|
|
||||||
; %fsname%
|
|
||||||
; %percentage_free%
|
|
||||||
; %percentage_used%
|
|
||||||
; %total%
|
|
||||||
; %free%
|
|
||||||
; %used%
|
|
||||||
; Default: %mountpoint% %percentage_free%%
|
|
||||||
label-mounted = %used%/%total%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; Default: %mountpoint% is not mounted
|
|
||||||
label-unmounted = "%mountpoint%: not mounted"
|
|
||||||
|
|
||||||
; Only applies if <bar-used> is used
|
|
||||||
bar-used-width = 10
|
|
||||||
bar-used-gradient = false
|
|
||||||
|
|
||||||
bar-used-indicator = ${bar.indicator}
|
|
||||||
bar-used-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-fill = ${bar.fill}
|
|
||||||
bar-used-foreground-0 = ${color.foreground}
|
|
||||||
bar-used-foreground-1 = ${color.foreground}
|
|
||||||
bar-used-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-empty = ${bar.empty}
|
|
||||||
bar-used-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/memory_bar]
|
|
||||||
type = internal/memory
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 2
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-used>
|
|
||||||
; <bar-free>
|
|
||||||
; <ramp-used>
|
|
||||||
; <ramp-free>
|
|
||||||
; <bar-swap-used>
|
|
||||||
; <bar-swap-free>
|
|
||||||
; <ramp-swap-used>
|
|
||||||
; <ramp-swap-free>
|
|
||||||
format = <bar-used> <label>
|
|
||||||
format-prefix = " "
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage_used% (default)
|
|
||||||
; %percentage_free%
|
|
||||||
; %gb_used%
|
|
||||||
; %gb_free%
|
|
||||||
; %gb_total%
|
|
||||||
; %mb_used%
|
|
||||||
; %mb_free%
|
|
||||||
; %mb_total%
|
|
||||||
; %percentage_swap_used%
|
|
||||||
; %percentage_swap_free%
|
|
||||||
; %mb_swap_total%
|
|
||||||
; %mb_swap_free%
|
|
||||||
; %mb_swap_used%
|
|
||||||
; %gb_swap_total%
|
|
||||||
; %gb_swap_free%
|
|
||||||
; %gb_swap_used%
|
|
||||||
|
|
||||||
label = "%mb_used%"
|
|
||||||
|
|
||||||
; Only applies if <bar-used> is used
|
|
||||||
bar-used-width = 10
|
|
||||||
bar-used-gradient = false
|
|
||||||
|
|
||||||
bar-used-indicator = ${bar.indicator}
|
|
||||||
bar-used-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-fill = ${bar.fill}
|
|
||||||
bar-used-foreground-0 = ${color.foreground}
|
|
||||||
bar-used-foreground-1 = ${color.foreground}
|
|
||||||
bar-used-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-used-empty = ${bar.empty}
|
|
||||||
bar-used-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/mpd_bar]
|
|
||||||
type = internal/mpd
|
|
||||||
|
|
||||||
; Host where mpd is running (either ip or domain name)
|
|
||||||
; Can also be the full path to a unix socket where mpd is running.
|
|
||||||
;;host = 127.0.0.1
|
|
||||||
;;port = 6600
|
|
||||||
;;password = mysecretpassword
|
|
||||||
|
|
||||||
; Seconds to sleep between progressbar/song timer sync
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-song> (default)
|
|
||||||
; <label-time>
|
|
||||||
; <bar-progress>
|
|
||||||
; <toggle> - gets replaced with <icon-(pause|play)>
|
|
||||||
; <toggle-stop> - gets replaced with <icon-(stop|play)>
|
|
||||||
; <icon-random>
|
|
||||||
; <icon-repeat>
|
|
||||||
; <icon-repeatone> (deprecated)
|
|
||||||
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
|
|
||||||
; <icon-consume>
|
|
||||||
; <icon-prev>
|
|
||||||
; <icon-stop>
|
|
||||||
; <icon-play>
|
|
||||||
; <icon-pause>
|
|
||||||
; <icon-next>
|
|
||||||
; <icon-seekb>
|
|
||||||
; <icon-seekf>
|
|
||||||
format-online = <label-song> <bar-progress> <label-time>
|
|
||||||
format-online-prefix =
|
|
||||||
|
|
||||||
;format-playing = ${self.format-online}
|
|
||||||
;format-paused = ${self.format-online}
|
|
||||||
;format-stopped = ${self.format-online}
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-offline>
|
|
||||||
format-offline = <label-offline>
|
|
||||||
format-offline-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %artist%
|
|
||||||
; %album-artist%
|
|
||||||
; %album%
|
|
||||||
; %date%
|
|
||||||
; %title%
|
|
||||||
; Default: %artist% - %title%
|
|
||||||
label-song = " %artist% - %title%"
|
|
||||||
label-song-maxlen = 25
|
|
||||||
label-song-ellipsis = true
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %elapsed%
|
|
||||||
; %total%
|
|
||||||
; Default: %elapsed% / %total%
|
|
||||||
label-time = %elapsed% / %total%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; None
|
|
||||||
label-offline = " Offline"
|
|
||||||
|
|
||||||
; Only applies if <icon-X> is used
|
|
||||||
icon-play =
|
|
||||||
icon-pause =
|
|
||||||
icon-stop =
|
|
||||||
icon-next =
|
|
||||||
icon-prev =
|
|
||||||
icon-seekf =
|
|
||||||
icon-seekb =
|
|
||||||
icon-random =
|
|
||||||
icon-repeat =
|
|
||||||
icon-repeatone =
|
|
||||||
icon-single =
|
|
||||||
icon-consume =
|
|
||||||
|
|
||||||
; Used to display the state of random/repeat/repeatone/single
|
|
||||||
; Only applies if <icon-[random|repeat|repeatone|single]> is used
|
|
||||||
toggle-on-foreground = ${color.primary}
|
|
||||||
toggle-off-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Only applies if <bar-progress> is used
|
|
||||||
bar-progress-width = 10
|
|
||||||
bar-progress-gradient = false
|
|
||||||
|
|
||||||
bar-progress-indicator = ${bar.indicator}
|
|
||||||
bar-progress-indicator-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
bar-progress-fill = ${bar.fill}
|
|
||||||
bar-progress-foreground-0 = ${color.foreground}
|
|
||||||
bar-progress-foreground-1 = ${color.foreground}
|
|
||||||
bar-progress-foreground-2 = ${color.foreground}
|
|
||||||
|
|
||||||
bar-progress-empty = ${bar.empty}
|
|
||||||
bar-progress-empty-foreground = ${color.foreground}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[color]
|
|
||||||
|
|
||||||
background = #1F1F1F
|
|
||||||
foreground = #FFFFFF
|
|
||||||
foreground-alt = #8F8F8F
|
|
||||||
module-fg = #FFFFFF
|
|
||||||
primary = #546e7a
|
|
||||||
secondary = #E53935
|
|
||||||
alternate = #7cb342
|
|
||||||
@@ -1,215 +0,0 @@
|
|||||||
[global/wm]
|
|
||||||
; Adjust the _NET_WM_STRUT_PARTIAL top value
|
|
||||||
; Used for top aligned bars
|
|
||||||
margin-bottom = 0
|
|
||||||
|
|
||||||
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
|
|
||||||
; Used for bottom aligned bars
|
|
||||||
margin-top = 0
|
|
||||||
|
|
||||||
;; Bar Settings
|
|
||||||
|
|
||||||
[bar/main]
|
|
||||||
; Use either of the following command to list available outputs:
|
|
||||||
; If unspecified, the application will pick the first one it finds.
|
|
||||||
; $ polybar -m | cut -d ':' -f 1
|
|
||||||
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
|
|
||||||
monitor =
|
|
||||||
|
|
||||||
; Use the specified monitor as a fallback if the main one is not found.
|
|
||||||
monitor-fallback =
|
|
||||||
|
|
||||||
; Require the monitor to be in connected state
|
|
||||||
; XRandR sometimes reports my monitor as being disconnected (when in use)
|
|
||||||
monitor-strict = false
|
|
||||||
|
|
||||||
; Tell the Window Manager not to configure the window.
|
|
||||||
; Use this to detach the bar if your WM is locking its size/position.
|
|
||||||
override-redirect = false
|
|
||||||
|
|
||||||
; Put the bar at the bottom of the screen
|
|
||||||
bottom = false
|
|
||||||
|
|
||||||
; Prefer fixed center position for the `modules-center` block
|
|
||||||
; When false, the center position will be based on the size of the other blocks.
|
|
||||||
fixed-center = true
|
|
||||||
|
|
||||||
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
|
|
||||||
; the percentage can optionally be extended with a pixel offset like so:
|
|
||||||
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
|
|
||||||
width = 98%
|
|
||||||
height = 40
|
|
||||||
|
|
||||||
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
|
||||||
; the percentage can optionally be extended with a pixel offset like so:
|
|
||||||
; 50%:-10, this will result in an offset in the x or y direction
|
|
||||||
; of 50% minus 10 pixels
|
|
||||||
offset-x = 1%
|
|
||||||
offset-y = 2%:-12
|
|
||||||
|
|
||||||
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
|
||||||
background = ${color.background}
|
|
||||||
|
|
||||||
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
|
||||||
foreground = ${color.foreground}
|
|
||||||
|
|
||||||
; Value used for drawing rounded corners
|
|
||||||
; Individual top/bottom values can be defined using:
|
|
||||||
; radius-{top,bottom}
|
|
||||||
radius-top = 2.0
|
|
||||||
radius-bottom = 2.0
|
|
||||||
|
|
||||||
; Under-/overline pixel size and argb color
|
|
||||||
; Individual values can be defined using:
|
|
||||||
; {overline,underline}-size
|
|
||||||
; {overline,underline}-color
|
|
||||||
line-size = 2
|
|
||||||
line-color = ${color.primary}
|
|
||||||
|
|
||||||
; Values applied to all borders
|
|
||||||
; Individual side values can be defined using:
|
|
||||||
; border-{left,top,right,bottom}-size
|
|
||||||
; border-{left,top,right,bottom}-color
|
|
||||||
border-bottom-size = 0
|
|
||||||
border-bottom-color = ${color.primary}
|
|
||||||
|
|
||||||
; Number of spaces to add at the beginning/end of the bar
|
|
||||||
; Individual side values can be defined using:
|
|
||||||
; padding-{left,right}
|
|
||||||
padding = 0
|
|
||||||
|
|
||||||
; Number of spaces to add before/after each module
|
|
||||||
; Individual side values can be defined using:
|
|
||||||
; module-margin-{left,right}
|
|
||||||
module-margin-left = 2
|
|
||||||
module-margin-right = 2
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
; Fonts
|
|
||||||
font-0 = "@font0@"
|
|
||||||
font-1 = "@font1@"
|
|
||||||
|
|
||||||
; Modules
|
|
||||||
modules-left = launcher workspaces
|
|
||||||
modules-center = date popup-calendar
|
|
||||||
modules-right = pulseaudio memory cpu updates sysmenu
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
; The separator will be inserted between the output of each module
|
|
||||||
separator =
|
|
||||||
|
|
||||||
; Opacity value between 0.0 and 1.0 used on fade in/out
|
|
||||||
dim-value = 1.0
|
|
||||||
|
|
||||||
; Value to be used to set the WM_NAME atom
|
|
||||||
; If the value is empty or undefined, the atom value
|
|
||||||
; will be created from the following template: polybar-[BAR]_[MONITOR]
|
|
||||||
wm-name = bspwm
|
|
||||||
|
|
||||||
; Locale used to localize various module data (e.g. date)
|
|
||||||
; Expects a valid libc locale, for example: sv_SE.UTF-8
|
|
||||||
locale =
|
|
||||||
|
|
||||||
; Position of the system tray window
|
|
||||||
; If empty or undefined, tray support will be disabled
|
|
||||||
; NOTE: A center aligned tray will cover center aligned modules
|
|
||||||
;
|
|
||||||
; Available positions:
|
|
||||||
; left
|
|
||||||
; center
|
|
||||||
; right
|
|
||||||
; none
|
|
||||||
tray-position = none
|
|
||||||
|
|
||||||
; If true, the bar will not shift its
|
|
||||||
; contents when the tray changes
|
|
||||||
tray-detached = false
|
|
||||||
|
|
||||||
; Tray icon max size
|
|
||||||
tray-maxsize = 16
|
|
||||||
|
|
||||||
; Background color for the tray container
|
|
||||||
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
|
||||||
; By default the tray container will use the bar
|
|
||||||
; background color.
|
|
||||||
tray-background = ${color.background}
|
|
||||||
|
|
||||||
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
|
|
||||||
tray-offset-x = 0
|
|
||||||
tray-offset-y = 0
|
|
||||||
|
|
||||||
; Pad the sides of each tray icon
|
|
||||||
tray-padding = 0
|
|
||||||
|
|
||||||
; Scale factor for tray clients
|
|
||||||
tray-scale = 1.0
|
|
||||||
|
|
||||||
; Restack the bar window and put it above the
|
|
||||||
; selected window manager's root
|
|
||||||
;
|
|
||||||
; Fixes the issue where the bar is being drawn
|
|
||||||
; on top of fullscreen window's
|
|
||||||
;
|
|
||||||
; Available options:
|
|
||||||
; bspwm
|
|
||||||
; i3 (requires: `override-redirect = true`)
|
|
||||||
wm-restack = bspwm
|
|
||||||
|
|
||||||
; Set a DPI values used when rendering text
|
|
||||||
; This only affects scalable fonts
|
|
||||||
; dpi =
|
|
||||||
|
|
||||||
; Enable support for inter-process messaging
|
|
||||||
; See the Messaging wiki page for more details.
|
|
||||||
enable-ipc = true
|
|
||||||
|
|
||||||
; Fallback click handlers that will be called if
|
|
||||||
; there's no matching module handler found.
|
|
||||||
click-left =
|
|
||||||
click-middle = bspc desktop -l next
|
|
||||||
click-right =
|
|
||||||
double-click-left =
|
|
||||||
double-click-middle =
|
|
||||||
double-click-right =
|
|
||||||
|
|
||||||
; Requires polybar to be built with xcursor support (xcb-util-cursor)
|
|
||||||
; Possible values are:
|
|
||||||
; - default : The default pointer as before, can also be an empty string (default)
|
|
||||||
; - pointer : Typically in the form of a hand
|
|
||||||
; - ns-resize : Up and down arrows, can be used to indicate scrolling
|
|
||||||
cursor-click =
|
|
||||||
cursor-scroll =
|
|
||||||
|
|
||||||
; bspwm
|
|
||||||
scroll-up = bspc desktop -f prev.local
|
|
||||||
scroll-down = bspc desktop -f next.local
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
;; Application Settings
|
|
||||||
|
|
||||||
[settings]
|
|
||||||
; The throttle settings lets the eventloop swallow up til X events
|
|
||||||
; if they happen within Y millisecond after first event was received.
|
|
||||||
throttle-output = 5
|
|
||||||
throttle-output-for = 10
|
|
||||||
|
|
||||||
; Time in milliseconds that the input handler will wait between processing events
|
|
||||||
;throttle-input-for = 30
|
|
||||||
|
|
||||||
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
|
|
||||||
screenchange-reload = false
|
|
||||||
|
|
||||||
; Compositing operators
|
|
||||||
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
|
|
||||||
compositing-background = source
|
|
||||||
compositing-foreground = over
|
|
||||||
compositing-overline = over
|
|
||||||
compositing-underline = over
|
|
||||||
compositing-border = over
|
|
||||||
|
|
||||||
; Enables pseudo-transparency for the bar
|
|
||||||
; If set to true the bar can be transparent without a compositor.
|
|
||||||
pseudo-transparency = false
|
|
||||||
@@ -1,674 +0,0 @@
|
|||||||
;; ┌────────────────────────────────────────────────────────────────┐
|
|
||||||
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▄█░█▀█░█▀▄░█░█░█░░░█▀▀░█▀▀│
|
|
||||||
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░█░█░█░█░█░█░█░█░░░█▀▀░▀▀█│
|
|
||||||
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀│
|
|
||||||
;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│
|
|
||||||
;; └────────────────────────────────────────────────────────────────┘
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/alsa]
|
|
||||||
type = internal/alsa
|
|
||||||
|
|
||||||
; Soundcard to be used
|
|
||||||
; Usually in the format hw:# where # is the card number
|
|
||||||
; You can find the different card numbers in `/proc/asound/cards`
|
|
||||||
master-soundcard = default
|
|
||||||
speaker-soundcard = default
|
|
||||||
headphone-soundcard = default
|
|
||||||
|
|
||||||
; Name of the master, speaker and headphone mixers
|
|
||||||
; Use the following command to list available mixer controls:
|
|
||||||
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
|
|
||||||
; If master, speaker or headphone-soundcard isn't the default,
|
|
||||||
; use `amixer -c # scontrols` instead where # is the number
|
|
||||||
; of the master, speaker or headphone soundcard respectively
|
|
||||||
;
|
|
||||||
; Default: Master
|
|
||||||
master-mixer = Master
|
|
||||||
|
|
||||||
; Optionally define speaker and headphone mixers
|
|
||||||
; Default: none
|
|
||||||
;;speaker-mixer = Speaker
|
|
||||||
; Default: none
|
|
||||||
;;headphone-mixer = Headphone
|
|
||||||
|
|
||||||
; NOTE: This is required if headphone_mixer is defined
|
|
||||||
; Use the following command to list available device controls
|
|
||||||
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
|
|
||||||
; You may also need to use `amixer -c # controls` as above for the mixer names
|
|
||||||
; Default: none
|
|
||||||
;;headphone-id = 9
|
|
||||||
|
|
||||||
; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
|
|
||||||
; Default: false
|
|
||||||
;;mapped = true
|
|
||||||
|
|
||||||
; Interval for volume increase/decrease (in percent points)
|
|
||||||
; Default: 5
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-volume> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-volume = <ramp-volume> <label-volume>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-muted> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-muted = <label-muted>
|
|
||||||
format-muted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default
|
|
||||||
label-muted = " Muted"
|
|
||||||
label-muted-foreground = ${color.foreground-alt}
|
|
||||||
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-volume-0 =
|
|
||||||
ramp-volume-1 =
|
|
||||||
ramp-volume-2 =
|
|
||||||
|
|
||||||
; If defined, it will replace <ramp-volume> when
|
|
||||||
; headphones are plugged in to `headphone_control_numid`
|
|
||||||
; If undefined, <ramp-volume> will be used for both
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-headphones-0 =
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/cpu]
|
|
||||||
type = internal/cpu
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-load>
|
|
||||||
; <ramp-load>
|
|
||||||
; <ramp-coreload>
|
|
||||||
;;format = <label> <ramp-coreload>
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default) - total cpu load averaged over all cores
|
|
||||||
; %percentage-sum% - Cumulative load on all cores
|
|
||||||
; %percentage-cores% - load percentage for each core
|
|
||||||
; %percentage-core[1-9]% - load percentage for specific core
|
|
||||||
label = " %percentage%%"
|
|
||||||
|
|
||||||
; Spacing between individual per-core ramps
|
|
||||||
;;ramp-coreload-spacing = 1
|
|
||||||
;;ramp-coreload-0 = ${cpu.load0}
|
|
||||||
;;ramp-coreload-1 = ${cpu.load1}
|
|
||||||
|
|
||||||
;;ramp-load-0 = ${cpu.load0}
|
|
||||||
;;ramp-load-1 = ${cpu.load1}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/date]
|
|
||||||
type = internal/date
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
interval = 1.0
|
|
||||||
|
|
||||||
; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
|
|
||||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
|
||||||
;;date = %Y-%m-%d%
|
|
||||||
|
|
||||||
; Optional time format
|
|
||||||
time = " %I:%M %p"
|
|
||||||
|
|
||||||
; if `date-alt` or `time-alt` is defined, clicking
|
|
||||||
; the module will toggle between formats
|
|
||||||
;;date-alt = %A, %d %B %Y
|
|
||||||
#time-alt = " %a, %d %b %Y"
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
format = <label>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %date%
|
|
||||||
; %time%
|
|
||||||
; Default: %date%
|
|
||||||
label = %time%
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/filesystem]
|
|
||||||
type = internal/fs
|
|
||||||
|
|
||||||
; Mountpoints to display
|
|
||||||
mount-0 = /
|
|
||||||
;;mount-1 = /home
|
|
||||||
;;mount-2 = /var
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 30
|
|
||||||
interval = 30
|
|
||||||
|
|
||||||
; Display fixed precision values
|
|
||||||
; Default: false
|
|
||||||
fixed-values = true
|
|
||||||
|
|
||||||
; Spacing between entries
|
|
||||||
; Default: 2
|
|
||||||
;;spacing = 4
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-mounted> (default)
|
|
||||||
; <bar-free>
|
|
||||||
; <bar-used>
|
|
||||||
; <ramp-capacity>
|
|
||||||
format-mounted = <label-mounted>
|
|
||||||
format-mounted-prefix =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-unmounted> (default)
|
|
||||||
format-unmounted = <label-unmounted>
|
|
||||||
format-unmounted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; %type%
|
|
||||||
; %fsname%
|
|
||||||
; %percentage_free%
|
|
||||||
; %percentage_used%
|
|
||||||
; %total%
|
|
||||||
; %free%
|
|
||||||
; %used%
|
|
||||||
; Default: %mountpoint% %percentage_free%%
|
|
||||||
label-mounted = " %free%"
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %mountpoint%
|
|
||||||
; Default: %mountpoint% is not mounted
|
|
||||||
label-unmounted = " %mountpoint%: not mounted"
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/memory]
|
|
||||||
type = internal/memory
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <bar-used>
|
|
||||||
; <bar-free>
|
|
||||||
; <ramp-used>
|
|
||||||
; <ramp-free>
|
|
||||||
; <bar-swap-used>
|
|
||||||
; <bar-swap-free>
|
|
||||||
; <ramp-swap-used>
|
|
||||||
; <ramp-swap-free>
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage_used% (default)
|
|
||||||
; %percentage_free%
|
|
||||||
; %gb_used%
|
|
||||||
; %gb_free%
|
|
||||||
; %gb_total%
|
|
||||||
; %mb_used%
|
|
||||||
; %mb_free%
|
|
||||||
; %mb_total%
|
|
||||||
; %percentage_swap_used%
|
|
||||||
; %percentage_swap_free%
|
|
||||||
; %mb_swap_total%
|
|
||||||
; %mb_swap_free%
|
|
||||||
; %mb_swap_used%
|
|
||||||
; %gb_swap_total%
|
|
||||||
; %gb_swap_free%
|
|
||||||
; %gb_swap_used%
|
|
||||||
|
|
||||||
label = " %mb_used%"
|
|
||||||
|
|
||||||
; Only applies if <ramp-used> is used
|
|
||||||
;;ramp-used-0 = ${memory.used0}
|
|
||||||
;;ramp-used-1 = ${memory.used1}
|
|
||||||
;;ramp-used-2 = ${memory.used2}
|
|
||||||
|
|
||||||
; Only applies if <ramp-free> is used
|
|
||||||
;;ramp-free-0 = ${memory.free0}
|
|
||||||
;;ramp-free-1 = ${memory.free1}
|
|
||||||
;;ramp-free-2 = ${memory.free2}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/mpd]
|
|
||||||
type = internal/mpd
|
|
||||||
|
|
||||||
; Host where mpd is running (either ip or domain name)
|
|
||||||
; Can also be the full path to a unix socket where mpd is running.
|
|
||||||
;;host = 127.0.0.1
|
|
||||||
;;port = 6600
|
|
||||||
;;password = mysecretpassword
|
|
||||||
|
|
||||||
; Seconds to sleep between progressbar/song timer sync
|
|
||||||
; Default: 1
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-song> (default)
|
|
||||||
; <label-time>
|
|
||||||
; <bar-progress>
|
|
||||||
; <toggle> - gets replaced with <icon-(pause|play)>
|
|
||||||
; <toggle-stop> - gets replaced with <icon-(stop|play)>
|
|
||||||
; <icon-random>
|
|
||||||
; <icon-repeat>
|
|
||||||
; <icon-repeatone> (deprecated)
|
|
||||||
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
|
|
||||||
; <icon-consume>
|
|
||||||
; <icon-prev>
|
|
||||||
; <icon-stop>
|
|
||||||
; <icon-play>
|
|
||||||
; <icon-pause>
|
|
||||||
; <icon-next>
|
|
||||||
; <icon-seekb>
|
|
||||||
; <icon-seekf>
|
|
||||||
format-online = <label-song> <icon-prev> <toggle> <icon-next>
|
|
||||||
format-online-prefix =
|
|
||||||
|
|
||||||
;format-playing = ${self.format-online}
|
|
||||||
;format-paused = ${self.format-online}
|
|
||||||
;format-stopped = ${self.format-online}
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-offline>
|
|
||||||
format-offline = <label-offline>
|
|
||||||
format-offline-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %artist%
|
|
||||||
; %album-artist%
|
|
||||||
; %album%
|
|
||||||
; %date%
|
|
||||||
; %title%
|
|
||||||
; Default: %artist% - %title%
|
|
||||||
label-song = " %artist% - %title%"
|
|
||||||
label-song-maxlen = 25
|
|
||||||
label-song-ellipsis = true
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %elapsed%
|
|
||||||
; %total%
|
|
||||||
; Default: %elapsed% / %total%
|
|
||||||
label-time = %elapsed% / %total%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; None
|
|
||||||
label-offline = " Offline"
|
|
||||||
|
|
||||||
; Only applies if <icon-X> is used
|
|
||||||
icon-play =
|
|
||||||
icon-pause =
|
|
||||||
icon-stop =
|
|
||||||
icon-next =
|
|
||||||
icon-prev =
|
|
||||||
icon-seekf =
|
|
||||||
icon-seekb =
|
|
||||||
icon-random =
|
|
||||||
icon-repeat =
|
|
||||||
icon-repeatone =
|
|
||||||
icon-single =
|
|
||||||
icon-consume =
|
|
||||||
|
|
||||||
; Used to display the state of random/repeat/repeatone/single
|
|
||||||
; Only applies if <icon-[random|repeat|repeatone|single]> is used
|
|
||||||
toggle-on-foreground = ${color.primary}
|
|
||||||
toggle-off-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Only applies if <bar-progress> is used
|
|
||||||
;;bar-progress-width = 45
|
|
||||||
;;bar-progress-indicator = |
|
|
||||||
;;bar-progress-fill = ─
|
|
||||||
;;bar-progress-empty = ─
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
; If you use both a wired and a wireless network, just add 2 module definitions. For example
|
|
||||||
[module/wired-network]
|
|
||||||
type = internal/network
|
|
||||||
interface = eth0
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 1.0
|
|
||||||
|
|
||||||
; Test connectivity every Nth update
|
|
||||||
; A value of 0 disables the feature
|
|
||||||
; NOTE: Experimental (needs more testing)
|
|
||||||
; Default: 0
|
|
||||||
;ping-interval = 3
|
|
||||||
|
|
||||||
; @deprecated: Define min width using token specifiers (%downspeed:min% and %upspeed:min%)
|
|
||||||
; Minimum output width of upload/download rate
|
|
||||||
; Default: 3
|
|
||||||
;;udspeed-minwidth = 5
|
|
||||||
|
|
||||||
; Accumulate values from all interfaces
|
|
||||||
; when querying for up/downspeed rate
|
|
||||||
; Default: false
|
|
||||||
accumulate-stats = true
|
|
||||||
|
|
||||||
; Consider an `UNKNOWN` interface state as up.
|
|
||||||
; Some devices have an unknown state, even when they're running
|
|
||||||
; Default: false
|
|
||||||
unknown-as-up = true
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-connected> (default)
|
|
||||||
; <ramp-signal>
|
|
||||||
format-connected = <label-connected>
|
|
||||||
format-connected-prefix =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-disconnected> (default)
|
|
||||||
format-disconnected = <label-disconnected>
|
|
||||||
format-disconnected-prefix =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-connected> (default)
|
|
||||||
; <label-packetloss>
|
|
||||||
; <animation-packetloss>
|
|
||||||
;;format-packetloss = <animation-packetloss> <label-connected>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %ifname% [wireless+wired]
|
|
||||||
; %local_ip% [wireless+wired]
|
|
||||||
; %local_ip6% [wireless+wired]
|
|
||||||
; %essid% [wireless]
|
|
||||||
; %signal% [wireless]
|
|
||||||
; %upspeed% [wireless+wired]
|
|
||||||
; %downspeed% [wireless+wired]
|
|
||||||
; %linkspeed% [wired]
|
|
||||||
; Default: %ifname% %local_ip%
|
|
||||||
label-connected = "%{A1:networkmanager_dmenu &:} %essid%%{A}"
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %ifname% [wireless+wired]
|
|
||||||
; Default: (none)
|
|
||||||
label-disconnected = "%{A1:networkmanager_dmenu &:} Offline%{A}"
|
|
||||||
;;label-disconnected-foreground = #66ffffff
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %ifname% [wireless+wired]
|
|
||||||
; %local_ip% [wireless+wired]
|
|
||||||
; %local_ip6% [wireless+wired]
|
|
||||||
; %essid% [wireless]
|
|
||||||
; %signal% [wireless]
|
|
||||||
; %upspeed% [wireless+wired]
|
|
||||||
; %downspeed% [wireless+wired]
|
|
||||||
; %linkspeed% [wired]
|
|
||||||
; Default: (none)
|
|
||||||
;label-packetloss = %essid%
|
|
||||||
;label-packetloss-foreground = #eefafafa
|
|
||||||
|
|
||||||
; Only applies if <ramp-signal> is used
|
|
||||||
ramp-signal-0 =
|
|
||||||
ramp-signal-1 =
|
|
||||||
ramp-signal-2 =
|
|
||||||
|
|
||||||
; Only applies if <animation-packetloss> is used
|
|
||||||
;;animation-packetloss-0 = ⚠
|
|
||||||
;;animation-packetloss-0-foreground = #ffa64c
|
|
||||||
;;animation-packetloss-1 = ⚠
|
|
||||||
;;animation-packetloss-1-foreground = #000000
|
|
||||||
; Framerate in milliseconds
|
|
||||||
;;animation-packetloss-framerate = 500
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/pulseaudio]
|
|
||||||
type = internal/pulseaudio
|
|
||||||
|
|
||||||
; Sink to be used, if it exists (find using `pacmd list-sinks`, name field)
|
|
||||||
; If not, uses default sink
|
|
||||||
; sink = @pulseaudiosink@
|
|
||||||
|
|
||||||
; Use PA_VOLUME_UI_MAX (~153%) if true, or PA_VOLUME_NORM (100%) if false
|
|
||||||
; Default: true
|
|
||||||
use-ui-max = false
|
|
||||||
|
|
||||||
; Interval for volume increase/decrease (in percent points)
|
|
||||||
; Default: 5
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-volume> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-volume = <ramp-volume> <label-volume>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-muted> (default)
|
|
||||||
; <ramp-volume>
|
|
||||||
; <bar-volume>
|
|
||||||
format-muted = <label-muted>
|
|
||||||
format-muted-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default)
|
|
||||||
label-volume = %percentage%%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %percentage% (default
|
|
||||||
label-muted = " Muted"
|
|
||||||
label-muted-foreground = ${color.foreground-alt}
|
|
||||||
|
|
||||||
; Only applies if <ramp-volume> is used
|
|
||||||
ramp-volume-0 =
|
|
||||||
ramp-volume-1 =
|
|
||||||
ramp-volume-2 =
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/temperature]
|
|
||||||
type = internal/temperature
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 1
|
|
||||||
interval = 0.5
|
|
||||||
|
|
||||||
; Thermal zone to use
|
|
||||||
; To list all the zone types, run
|
|
||||||
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
|
|
||||||
; Default: 0
|
|
||||||
thermal-zone = 0
|
|
||||||
|
|
||||||
; Full path of temperature sysfs path
|
|
||||||
; Use `sensors` to find preferred temperature source, then run
|
|
||||||
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
|
|
||||||
; to find path to desired file
|
|
||||||
; Default reverts to thermal zone setting
|
|
||||||
;;hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
|
|
||||||
hwmon-path = /sys/devices/pci0000:00/0000:00:01.3/0000:01:00.0/hwmon/hwmon0/temp1_input
|
|
||||||
|
|
||||||
; Threshold temperature to display warning label (in degrees celsius)
|
|
||||||
; Default: 80
|
|
||||||
warn-temperature = 65
|
|
||||||
|
|
||||||
; Whether or not to show units next to the temperature tokens (°C, °F)
|
|
||||||
; Default: true
|
|
||||||
units = true
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
; <ramp>
|
|
||||||
format = <ramp> <label>
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-warn> (default)
|
|
||||||
; <ramp>
|
|
||||||
format-warn = <ramp> <label-warn>
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %temperature% (deprecated)
|
|
||||||
; %temperature-c% (default, temperature in °C)
|
|
||||||
; %temperature-f% (temperature in °F)
|
|
||||||
label = %temperature-c%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %temperature% (deprecated)
|
|
||||||
; %temperature-c% (default, temperature in °C)
|
|
||||||
; %temperature-f% (temperature in °F)
|
|
||||||
label-warn = "%temperature-c%"
|
|
||||||
label-warn-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Requires the <ramp> tag
|
|
||||||
; The icon selection will range from 0 to `warn-temperature`
|
|
||||||
; with the current temperature as index.
|
|
||||||
ramp-0 =
|
|
||||||
ramp-1 =
|
|
||||||
ramp-2 =
|
|
||||||
ramp-3 =
|
|
||||||
ramp-4 =
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/keyboard]
|
|
||||||
type = internal/xkeyboard
|
|
||||||
|
|
||||||
; List of indicators to ignore
|
|
||||||
blacklist-0 = num lock
|
|
||||||
blacklist-1 = scroll lock
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-layout> (default)
|
|
||||||
; <label-indicator> (default)
|
|
||||||
format = <label-layout> <label-indicator>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %layout%
|
|
||||||
; %name%
|
|
||||||
; %number%
|
|
||||||
; Default: %layout%
|
|
||||||
label-layout = " %layout%"
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; Default: %name%
|
|
||||||
label-indicator-on = %name%
|
|
||||||
label-indicator-on-foreground = ${color.primary}
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/title]
|
|
||||||
type = internal/xwindow
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label> (default)
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %title%
|
|
||||||
; Default: %title%
|
|
||||||
label = " %title%"
|
|
||||||
label-maxlen = 30
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/workspaces]
|
|
||||||
type = internal/xworkspaces
|
|
||||||
|
|
||||||
; Only show workspaces defined on the same output as the bar
|
|
||||||
;
|
|
||||||
; Useful if you want to show monitor specific workspaces
|
|
||||||
; on different bars
|
|
||||||
;
|
|
||||||
; Default: false
|
|
||||||
pin-workspaces = true
|
|
||||||
|
|
||||||
; Create click handler used to focus desktop
|
|
||||||
; Default: true
|
|
||||||
enable-click = true
|
|
||||||
|
|
||||||
; Create scroll handlers used to cycle desktops
|
|
||||||
; Default: true
|
|
||||||
enable-scroll = true
|
|
||||||
|
|
||||||
; icon-[0-9]+ = <desktop-name>;<icon>
|
|
||||||
; NOTE: The desktop name needs to match the name configured by the WM
|
|
||||||
; You can get a list of the defined desktops using:
|
|
||||||
; $ xprop -root _NET_DESKTOP_NAMES
|
|
||||||
|
|
||||||
; Emacs, Calendar, News (General)
|
|
||||||
icon-0 = 1;
|
|
||||||
; Terminal, Emacs (IDE)
|
|
||||||
icon-1 = 2;
|
|
||||||
; Slack, Dev Tools Browser
|
|
||||||
icon-2 = 3;
|
|
||||||
; Chat, News (Financial)
|
|
||||||
icon-3 = 4;
|
|
||||||
; Apple Music, Media
|
|
||||||
icon-4 = 5;
|
|
||||||
; Monitoring, Emacs (Journal)
|
|
||||||
icon-5 = 6;
|
|
||||||
icon-default =
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <label-monitor>
|
|
||||||
; <label-state> - gets replaced with <label-(active|urgent|occupied|empty)>
|
|
||||||
; Default: <label-state>
|
|
||||||
format = <label-state>
|
|
||||||
format-padding = 0
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; Default: %name%
|
|
||||||
label-monitor = %name%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-active = %icon%
|
|
||||||
label-active-foreground = ${color.primary}
|
|
||||||
label-active-overline = ${color.primary}
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-occupied = %icon%
|
|
||||||
label-occupied-foreground = ${color.alternate}
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-urgent = %icon%
|
|
||||||
label-urgent-foreground = ${color.secondary}
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %name%
|
|
||||||
; %icon%
|
|
||||||
; %index%
|
|
||||||
; Default: %icon% %name%
|
|
||||||
label-empty = %icon%
|
|
||||||
|
|
||||||
label-active-padding = 2
|
|
||||||
label-urgent-padding = 2
|
|
||||||
label-occupied-padding = 2
|
|
||||||
label-empty-padding = 2
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
;; ┌──────────────────────────────────────────────────────────────────────────────-----┐
|
|
||||||
;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█░█░█▀▀░█▀▀░█▀▄░░░█▄█░█▀█░█▀▄░█░█░█░░░█▀▀░█▀▀ │
|
|
||||||
;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░█░▀▀█░█▀▀░█▀▄░░░█░█░█░█░█░█░█░█░█░░░█▀▀░▀▀█ │
|
|
||||||
;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀▀░▀▀▀░▀▀▀░▀░▀░░░▀░▀░▀▀▀░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀ │
|
|
||||||
;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│
|
|
||||||
;; └──────────────────────────────────────────────────────────────────────────────-----┘
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/updates]
|
|
||||||
type = custom/script
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %counter%
|
|
||||||
; Command to be executed (using "/usr/bin/env sh -c [command]")
|
|
||||||
exec = @packages@
|
|
||||||
|
|
||||||
; Conditional command that, if defined, needs to exit successfully
|
|
||||||
; before the main exec command is invoked.
|
|
||||||
; Default: ""
|
|
||||||
;;exec-if = ""
|
|
||||||
|
|
||||||
; Will the script output continous content?
|
|
||||||
; Default: false
|
|
||||||
tail = true
|
|
||||||
|
|
||||||
; Seconds to sleep between updates
|
|
||||||
; Default: 2 (0 if `tail = true`)
|
|
||||||
interval = 0
|
|
||||||
|
|
||||||
; Available tags:
|
|
||||||
; <output> - deprecated
|
|
||||||
; <label> (default)
|
|
||||||
format = <label>
|
|
||||||
format-prefix =
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %output%
|
|
||||||
; Default: %output%
|
|
||||||
label = %output%
|
|
||||||
|
|
||||||
; Available tokens:
|
|
||||||
; %counter%
|
|
||||||
; %pid%
|
|
||||||
;
|
|
||||||
click-left = @searchpkgs@
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/launcher]
|
|
||||||
type = custom/text
|
|
||||||
content =
|
|
||||||
content-background = ${color.primary}
|
|
||||||
content-foreground = ${color.module-fg}
|
|
||||||
content-padding = 2
|
|
||||||
click-left = @launcher@
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
|
|
||||||
[module/popup-calendar]
|
|
||||||
type = custom/script
|
|
||||||
exec = @calendar@
|
|
||||||
interval = 5
|
|
||||||
click-left = @calendar@ --popup &
|
|
||||||
|
|
||||||
[module/sysmenu]
|
|
||||||
type = custom/text
|
|
||||||
content =
|
|
||||||
content-background = ${color.primary}
|
|
||||||
content-foreground = ${color.module-fg}
|
|
||||||
content-padding = 2
|
|
||||||
click-left = @powermenu@ &
|
|
||||||
|
|
||||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
/* colors */
|
|
||||||
|
|
||||||
* {
|
|
||||||
al: #00000000;
|
|
||||||
bg: #1F1F1FFF;
|
|
||||||
bga: #546e7a33;
|
|
||||||
bar: #FFFFFFFF;
|
|
||||||
fg: #FFFFFFFF;
|
|
||||||
ac: #546e7aFF;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/* Confirm Dialog */
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
width: 225px;
|
|
||||||
padding: 25px;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
location: center;
|
|
||||||
y-offset: -2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
expand: true;
|
|
||||||
text-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 350px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 10px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ prompt, entry ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 5;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/* Confirm Dialog */
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
* {
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
width: 320px;
|
|
||||||
padding: 25px;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
location: center;
|
|
||||||
y-offset: -2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
expand: true;
|
|
||||||
text-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 400px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
textbox-prompt-colon {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
str: "";
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 10px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ textbox-prompt-colon, prompt ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 8;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px 10px 10px -17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 350px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
textbox-prompt-colon {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
str: "";
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 10px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ textbox-prompt-colon, prompt ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 5;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px 10px 10px -17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
*
|
|
||||||
* Author : Aditya Shakya
|
|
||||||
* Mail : adi1090x@gmail.com
|
|
||||||
* Github : @adi1090x
|
|
||||||
* Twitter : @adi1090x
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
configuration {
|
|
||||||
font: "Iosevka Nerd Font 10";
|
|
||||||
show-icons: true;
|
|
||||||
icon-theme: "Papirus";
|
|
||||||
display-drun: "";
|
|
||||||
drun-display-format: "{name}";
|
|
||||||
disable-history: false;
|
|
||||||
fullscreen: false;
|
|
||||||
hide-scrollbar: true;
|
|
||||||
sidebar-mode: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "colors.rasi"
|
|
||||||
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: @bg;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 2px 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
border-radius: 0px;
|
|
||||||
width: 350px;
|
|
||||||
location: center;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt {
|
|
||||||
enabled: true;
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
}
|
|
||||||
|
|
||||||
textbox-prompt-colon {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
str: "";
|
|
||||||
font: "feather 12";
|
|
||||||
}
|
|
||||||
|
|
||||||
entry {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @bar;
|
|
||||||
placeholder-color: @bar;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
placeholder: "Search...";
|
|
||||||
padding: 0px 0px 0px 5px;
|
|
||||||
blink: true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inputbar {
|
|
||||||
children: [ textbox-prompt-colon, entry ];
|
|
||||||
background-color: @ac;
|
|
||||||
text-color: @bar;
|
|
||||||
expand: false;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
|
||||||
background-color: @al;
|
|
||||||
padding: 0px;
|
|
||||||
columns: 1;
|
|
||||||
lines: 5;
|
|
||||||
spacing: 5px;
|
|
||||||
cycle: true;
|
|
||||||
dynamic: true;
|
|
||||||
layout: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
mainbox {
|
|
||||||
background-color: @al;
|
|
||||||
border: 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
children: [ inputbar, listview ];
|
|
||||||
spacing: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element {
|
|
||||||
background-color: @al;
|
|
||||||
text-color: @fg;
|
|
||||||
orientation: horizontal;
|
|
||||||
border-radius: 0px;
|
|
||||||
padding: 10px 10px 10px -17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-icon {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
size: 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text {
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: inherit;
|
|
||||||
expand: true;
|
|
||||||
horizontal-align: 0;
|
|
||||||
vertical-align: 0.5;
|
|
||||||
margin: 0px 2.5px 0px 2.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
element selected {
|
|
||||||
background-color: @bga;
|
|
||||||
text-color: @fg;
|
|
||||||
border: 0px 0px 0px 0px;
|
|
||||||
border-radius: 0px;
|
|
||||||
border-color: @ac;
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
_: {
|
|
||||||
# This formats the disk with the ext4 filesystem
|
|
||||||
# Other examples found here: https://github.com/nix-community/disko/tree/master/example
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
vdb = {
|
|
||||||
device = "/dev/%DISK%";
|
|
||||||
type = "disk";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
type = "EF00";
|
|
||||||
size = "100M";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
root = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,369 +0,0 @@
|
|||||||
{ user, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
home = builtins.getEnv "HOME";
|
|
||||||
xdg_configHome = "${home}/.config";
|
|
||||||
xdg_dataHome = "${home}/.local/share";
|
|
||||||
xdg_stateHome = "${home}/.local/state";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
"${xdg_configHome}/bspwm/bspwmrc" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Set the number of workspaces
|
|
||||||
bspc monitor -d 1 2 3 4 5 6
|
|
||||||
|
|
||||||
# Launch keybindings daemon
|
|
||||||
pgrep -x sxhkd > /dev/null || sxhkd &
|
|
||||||
|
|
||||||
# Window configurations
|
|
||||||
bspc config border_width 0
|
|
||||||
bspc config window_gap 16
|
|
||||||
bspc config split_ratio 0.52
|
|
||||||
bspc config borderless_monocle true
|
|
||||||
bspc config gapless_monocle true
|
|
||||||
|
|
||||||
# Padding outside of the window
|
|
||||||
bspc config top_padding 60
|
|
||||||
bspc config bottom_padding 60
|
|
||||||
bspc config left_padding 60
|
|
||||||
bspc config right_padding 60
|
|
||||||
|
|
||||||
# Move floating windows
|
|
||||||
bspc config pointer_action1 move
|
|
||||||
|
|
||||||
# Resize floating windows
|
|
||||||
bspc config pointer_action2 resize_side
|
|
||||||
bspc config pointer_action2 resize_corner
|
|
||||||
|
|
||||||
# Set background and top bar
|
|
||||||
systemctl --user start polybar
|
|
||||||
|
|
||||||
sleep .25
|
|
||||||
|
|
||||||
# Wait for the network to be up
|
|
||||||
notify-send 'Waiting for network...'
|
|
||||||
while ! systemctl is-active --quiet network-online.target; do sleep 1; done
|
|
||||||
notify-send 'Network found.'
|
|
||||||
|
|
||||||
# Wait for the Emacs daemon
|
|
||||||
notify-send 'Starting Emacs...'
|
|
||||||
/run/current-system/sw/bin/emacsclient -a "" -e '(progn)' &
|
|
||||||
|
|
||||||
# Wait for Emacs daemon to be ready
|
|
||||||
while ! /run/current-system/sw/bin/emacsclient -e '(progn)' &>/dev/null; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
notify-send 'Emacs daemon started.'
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/sxhkd/sxhkdrc" = {
|
|
||||||
text = ''
|
|
||||||
# Close window
|
|
||||||
alt + F4
|
|
||||||
bspc node --close
|
|
||||||
|
|
||||||
# Make split ratios equal
|
|
||||||
super + equal
|
|
||||||
bspc node @/ --equalize
|
|
||||||
|
|
||||||
# Make split ratios balanced
|
|
||||||
super + minus
|
|
||||||
bspc node @/ --balance
|
|
||||||
|
|
||||||
# Toogle tiling of window
|
|
||||||
super + d
|
|
||||||
bspc query --nodes -n focused.tiled && state=floating || state=tiled; \
|
|
||||||
bspc node --state \~$state
|
|
||||||
|
|
||||||
# Toggle fullscreen of window
|
|
||||||
super + f
|
|
||||||
bspc node --state \~fullscreen
|
|
||||||
|
|
||||||
# Swap the current node and the biggest window
|
|
||||||
super + g
|
|
||||||
bspc node -s biggest.window
|
|
||||||
|
|
||||||
# Swap the current node and the smallest window
|
|
||||||
super + shift + g
|
|
||||||
bspc node -s biggest.window
|
|
||||||
|
|
||||||
# Alternate between the tiled and monocle layout
|
|
||||||
super + m
|
|
||||||
bspc desktop -l next
|
|
||||||
|
|
||||||
# Move between windows in monocle layout
|
|
||||||
super + {_, alt + }m
|
|
||||||
bspc node -f {next, prev}.local.!hidden.window
|
|
||||||
|
|
||||||
# Focus the node in the given direction
|
|
||||||
super + {_,shift + }{h,j,k,l}
|
|
||||||
bspc node -{f,s} {west,south,north,east}
|
|
||||||
|
|
||||||
# Focus left/right occupied desktop
|
|
||||||
super + {Left,Right}
|
|
||||||
bspc desktop --focus {prev,next}.occupied
|
|
||||||
|
|
||||||
# Focus left/right occupied desktop
|
|
||||||
super + {Up,Down}
|
|
||||||
bspc desktop --focus {prev,next}.occupied
|
|
||||||
|
|
||||||
# Focus left/right desktop
|
|
||||||
ctrl + alt + {Left,Right}
|
|
||||||
bspc desktop --focus {prev,next}
|
|
||||||
|
|
||||||
# Focus left/right desktop
|
|
||||||
ctrl + alt + {Up, Down}
|
|
||||||
bspc desktop --focus {prev,next}
|
|
||||||
|
|
||||||
# Focus the older or newer node in the focus history
|
|
||||||
super + {o,i}
|
|
||||||
bspc wm -h off; \
|
|
||||||
bspc node {older,newer} -f; \
|
|
||||||
bspc wm -h on
|
|
||||||
|
|
||||||
# Focus or send to the given desktop
|
|
||||||
super + {_,shift + }{1-9,0}
|
|
||||||
bspc {desktop -f,node -d} '^{1-9,10}'
|
|
||||||
|
|
||||||
# Preselect the direction
|
|
||||||
super + alt + {h,j,k,l}
|
|
||||||
bspc node -p {west,south,north,east}
|
|
||||||
|
|
||||||
# Cancel the preselect
|
|
||||||
# For context on syntax: https://github.com/baskerville/bspwm/issues/344
|
|
||||||
super + alt + {_,shift + }Escape
|
|
||||||
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
|
|
||||||
|
|
||||||
# Preselect the direction
|
|
||||||
super + ctrl + {h,j,k,l}
|
|
||||||
bspc node -p {west,south,north,east}
|
|
||||||
|
|
||||||
# Cancel the preselect
|
|
||||||
# For context on syntax: https://github.com/baskerville/bspwm/issues/344
|
|
||||||
super + ctrl + {_,shift + }Escape
|
|
||||||
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
|
|
||||||
|
|
||||||
# Set the node flags
|
|
||||||
super + ctrl + {m,x,s,p}
|
|
||||||
bspc node -g {marked,locked,sticky,private}
|
|
||||||
|
|
||||||
# Send the newest marked node to the newest preselected node
|
|
||||||
super + y
|
|
||||||
bspc node newest.marked.local -n newest.!automatic.local
|
|
||||||
|
|
||||||
# Program launcher
|
|
||||||
super + @space
|
|
||||||
rofi -config -no-lazy-grab -show drun -modi drun -theme /home/${user}/.config/rofi/launcher.rasi
|
|
||||||
|
|
||||||
# Terminal emulator
|
|
||||||
super + Return
|
|
||||||
bspc rule -a Alacritty -o state=floating rectangle=1024x768x0x0 center=true && /etc/profiles/per-user/${user}/bin/alacritty
|
|
||||||
|
|
||||||
# Terminal emulator
|
|
||||||
super + ctrl + Return
|
|
||||||
/etc/profiles/per-user/${user}/bin/alacritty
|
|
||||||
|
|
||||||
# Jump to workspaces
|
|
||||||
super + t
|
|
||||||
bspc desktop --focus ^2
|
|
||||||
super + b
|
|
||||||
bspc desktop --focus ^1
|
|
||||||
super + w
|
|
||||||
bspc desktop --focus ^4
|
|
||||||
super + Tab
|
|
||||||
bspc {node,desktop} -f last
|
|
||||||
|
|
||||||
# Keepass XC
|
|
||||||
super + shift + x
|
|
||||||
/etc/profiles/per-user/${user}/bin/keepassxc
|
|
||||||
|
|
||||||
# Emacs
|
|
||||||
# -c flag is --create-frame
|
|
||||||
# -a flag is fallback to plain emacs if daemon fails
|
|
||||||
super + alt + Return
|
|
||||||
emacsclient -c -a emacs
|
|
||||||
|
|
||||||
super + alt + e
|
|
||||||
systemctl --user restart emacs.service && \
|
|
||||||
emacsclient -c -a emacs
|
|
||||||
|
|
||||||
# Web browser
|
|
||||||
ctrl + alt + Return
|
|
||||||
google-chrome-stable
|
|
||||||
|
|
||||||
# File browser at home dir
|
|
||||||
super + shift + @space
|
|
||||||
pcmanfm
|
|
||||||
|
|
||||||
# Take a screenshot with PrintSc
|
|
||||||
Print
|
|
||||||
flameshot gui -c -p $HOME/.local/share/img/screenshots
|
|
||||||
|
|
||||||
# Lock the screen
|
|
||||||
ctrl + alt + BackSpace
|
|
||||||
i3lock
|
|
||||||
|
|
||||||
# Audio controls for + volume
|
|
||||||
XF86AudioRaiseVolume
|
|
||||||
pactl set-sink-volume @DEFAULT_SINK@ +5%
|
|
||||||
|
|
||||||
# Audio controls for - volume
|
|
||||||
XF86AudioLowerVolume
|
|
||||||
pactl set-sink-volume @DEFAULT_SINK@ -5%
|
|
||||||
|
|
||||||
# Audio controls for mute
|
|
||||||
XF86AudioMute
|
|
||||||
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/polybar/bin/popup-calendar.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
DATE="$(/run/current-system/sw/bin/date +"%B %d, %Y")"
|
|
||||||
SCREEN_WIDTH=$(/run/current-system/sw/bin/xrandr | /run/current-system/sw/bin/grep '*' | /run/current-system/sw/bin/awk '{print $1}' | /run/current-system/sw/bin/cut -d 'x' -f1)
|
|
||||||
POSX=$(( (SCREEN_WIDTH / 2) - ((SCREEN_WIDTH / 2 * 625) / 10000) ))
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
--popup)
|
|
||||||
/etc/profiles/per-user/${user}/bin/yad --calendar --fixed \
|
|
||||||
--posx=$POSX --posy=80 --no-buttons --borders=0 --title="yad-calendar" \
|
|
||||||
--close-on-unfocus
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "$DATE"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/polybar/bin/check-nixos-updates.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/run/current-system/sw/bin/git -C ~/.local/share/src/nixpkgs fetch upstream master
|
|
||||||
UPDATES=$(/run/current-system/sw/bin/git -C ~/.local/share/src/nixpkgs rev-list origin/master..upstream/master --count 2>/dev/null);
|
|
||||||
/run/current-system/sw/bin/echo " $UPDATES"; # Extra space for presentation with icon
|
|
||||||
/run/current-system/sw/bin/sleep 1800;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/polybar/bin/search-nixos-updates.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/etc/profiles/per-user/${user}/bin/google-chrome-stable --new-window "https://search.nixos.org/packages"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
"${xdg_configHome}/rofi/colors.rasi".text = builtins.readFile ./config/rofi/colors.rasi;
|
|
||||||
"${xdg_configHome}/rofi/confirm.rasi".text = builtins.readFile ./config/rofi/confirm.rasi;
|
|
||||||
"${xdg_configHome}/rofi/launcher.rasi".text = builtins.readFile ./config/rofi/launcher.rasi;
|
|
||||||
"${xdg_configHome}/rofi/message.rasi".text = builtins.readFile ./config/rofi/message.rasi;
|
|
||||||
"${xdg_configHome}/rofi/networkmenu.rasi".text = builtins.readFile ./config/rofi/networkmenu.rasi;
|
|
||||||
"${xdg_configHome}/rofi/powermenu.rasi".text = builtins.readFile ./config/rofi/powermenu.rasi;
|
|
||||||
"${xdg_configHome}/rofi/styles.rasi".text = builtins.readFile ./config/rofi/styles.rasi;
|
|
||||||
|
|
||||||
"${xdg_configHome}/rofi/bin/launcher.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
rofi -no-config -no-lazy-grab -show drun -modi drun -theme ${xdg_configHome}/rofi/launcher.rasi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# @todo: Don't use hardcoded src paths
|
|
||||||
"${xdg_configHome}/rofi/bin/powermenu.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
configDir="${xdg_configHome}/rofi"
|
|
||||||
uptime=$(uptime -p | sed -e 's/up //g')
|
|
||||||
rofi_command="rofi -no-config -theme $configDir/powermenu.rasi"
|
|
||||||
|
|
||||||
# Options
|
|
||||||
shutdown=" Shutdown"
|
|
||||||
reboot=" Restart"
|
|
||||||
lock=" Lock"
|
|
||||||
suspend=" Sleep"
|
|
||||||
logout=" Logout"
|
|
||||||
|
|
||||||
# Confirmation
|
|
||||||
confirm_exit() {
|
|
||||||
rofi -dmenu\
|
|
||||||
-no-config\
|
|
||||||
-i\
|
|
||||||
-no-fixed-num-lines\
|
|
||||||
-p "Are You Sure? : "\
|
|
||||||
-theme $configDir/confirm.rasi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Message
|
|
||||||
msg() {
|
|
||||||
rofi -no-config -theme "$configDir/message.rasi" -e "Available Options - yes / y / no / n"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Variable passed to rofi
|
|
||||||
options="$lock\n$suspend\n$logout\n$reboot\n$shutdown"
|
|
||||||
chosen="$(echo -e "$options" | $rofi_command -p "Uptime: $uptime" -dmenu -selected-row 0)"
|
|
||||||
case $chosen in
|
|
||||||
$shutdown)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
systemctl poweroff
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
$reboot)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
systemctl reboot
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
$lock)
|
|
||||||
betterlockscreen -l
|
|
||||||
;;
|
|
||||||
$suspend)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
mpc -q pause
|
|
||||||
amixer set Master mute
|
|
||||||
systemctl suspend
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
$logout)
|
|
||||||
ans=$(confirm_exit &)
|
|
||||||
if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
|
|
||||||
bspc quit
|
|
||||||
elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
msg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
user = "cschmatzler";
|
|
||||||
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 ./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 ./config/polybar/config.ini {
|
|
||||||
font0 = "DejaVu Sans:size=12;3";
|
|
||||||
font1 = "feather:size=12;3"; # from overlay
|
|
||||||
};
|
|
||||||
|
|
||||||
polybar-modules = builtins.readFile ./config/polybar/modules.ini;
|
|
||||||
polybar-bars = builtins.readFile ./config/polybar/bars.ini;
|
|
||||||
polybar-colors = builtins.readFile ./config/polybar/colors.ini;
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
enableNixpkgsReleaseCheck = false;
|
|
||||||
username = "${user}";
|
|
||||||
homeDirectory = "/home/${user}";
|
|
||||||
packages = pkgs.callPackage ./packages.nix { };
|
|
||||||
file = shared-files // import ./files.nix { inherit user; };
|
|
||||||
stateVersion = "21.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Use a dark theme
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
iconTheme = {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.adwaita-icon-theme;
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.adwaita-icon-theme;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Screen lock
|
|
||||||
services = {
|
|
||||||
screen-locker = {
|
|
||||||
enable = true;
|
|
||||||
inactiveInterval = 10;
|
|
||||||
lockCmd = "${pkgs.i3lock-fancy-rapid}/bin/i3lock-fancy-rapid 10 15";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Auto mount devices
|
|
||||||
udiskie.enable = true;
|
|
||||||
|
|
||||||
polybar = {
|
|
||||||
enable = true;
|
|
||||||
config = polybar-config;
|
|
||||||
extraConfig = polybar-bars + polybar-colors + polybar-modules + polybar-user_modules;
|
|
||||||
package = pkgs.polybarFull;
|
|
||||||
script = "polybar main &";
|
|
||||||
};
|
|
||||||
|
|
||||||
dunst = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.dunst;
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
monitor = 0;
|
|
||||||
follow = "mouse";
|
|
||||||
border = 0;
|
|
||||||
height = 400;
|
|
||||||
width = 320;
|
|
||||||
offset = "33x65";
|
|
||||||
indicate_hidden = "yes";
|
|
||||||
shrink = "no";
|
|
||||||
separator_height = 0;
|
|
||||||
padding = 32;
|
|
||||||
horizontal_padding = 32;
|
|
||||||
frame_width = 0;
|
|
||||||
sort = "no";
|
|
||||||
idle_threshold = 120;
|
|
||||||
font = "Noto Sans";
|
|
||||||
line_height = 4;
|
|
||||||
markup = "full";
|
|
||||||
format = "<b>%s</b>\n%b";
|
|
||||||
alignment = "left";
|
|
||||||
transparency = 10;
|
|
||||||
show_age_threshold = 60;
|
|
||||||
word_wrap = "yes";
|
|
||||||
ignore_newline = "no";
|
|
||||||
stack_duplicates = false;
|
|
||||||
hide_duplicate_count = "yes";
|
|
||||||
show_indicators = "no";
|
|
||||||
icon_position = "left";
|
|
||||||
icon_theme = "Adwaita-dark";
|
|
||||||
sticky_history = "yes";
|
|
||||||
history_length = 20;
|
|
||||||
history = "ctrl+grave";
|
|
||||||
browser = "google-chrome-stable";
|
|
||||||
always_run_script = true;
|
|
||||||
title = "Dunst";
|
|
||||||
class = "Dunst";
|
|
||||||
max_icon_size = 64;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = shared-programs // {
|
|
||||||
gpg.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,68 +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
|
|
||||||
|
|
||||||
# Screenshot and recording tools
|
|
||||||
flameshot
|
|
||||||
|
|
||||||
# Text and terminal utilities
|
|
||||||
feh # Manage wallpapers
|
|
||||||
screenkey
|
|
||||||
tree
|
|
||||||
unixtools.ifconfig
|
|
||||||
unixtools.netstat
|
|
||||||
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,37 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
agenix,
|
|
||||||
secrets,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
user = "cschmatzler";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
age.identityPaths = [
|
|
||||||
"/home/${user}/.ssh/id_ed25519"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Your secrets go here
|
|
||||||
#
|
|
||||||
# Note: the installWithSecrets command you ran to boostrap the machine actually copies over
|
|
||||||
# a Github key pair. However, if you want to store the keypair in your nix-secrets repo
|
|
||||||
# instead, you can reference the age files and specify the symlink path here. Then add your
|
|
||||||
# public key in shared/files.nix.
|
|
||||||
#
|
|
||||||
# If you change the key name, you'll need to update the SSH configuration in shared/home-manager.nix
|
|
||||||
# so Github reads it correctly.
|
|
||||||
|
|
||||||
#
|
|
||||||
# age.secrets."github-ssh-key" = {
|
|
||||||
# symlink = false;
|
|
||||||
# path = "/home/${user}/.ssh/id_github";
|
|
||||||
# file = "${secrets}/github-ssh-key.age";
|
|
||||||
# mode = "600";
|
|
||||||
# owner = "${user}";
|
|
||||||
# group = "wheel";
|
|
||||||
# };
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
## Shared
|
|
||||||
Much of the code running on MacOS or NixOS is actually found here.
|
|
||||||
|
|
||||||
This configuration gets imported by both modules. Some configuration examples include `git`, `zsh`, `vim`, and `tmux`.
|
|
||||||
|
|
||||||
## Layout
|
|
||||||
```
|
|
||||||
.
|
|
||||||
├── config # Config files not written in Nix
|
|
||||||
├── cachix # Defines cachix, a global cache for builds
|
|
||||||
├── default.nix # Defines how we import overlays
|
|
||||||
├── files.nix # Non-Nix, static configuration files (now immutable!)
|
|
||||||
├── home-manager.nix # The goods; most all shared config lives here
|
|
||||||
├── packages.nix # List of packages to share
|
|
||||||
|
|
||||||
```
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
$env.PATH = [
|
|
||||||
($env.HOME | path join ".local" "bin"),
|
|
||||||
($env.HOME | path join ".scripts"),
|
|
||||||
"/run/current-system/sw/bin",
|
|
||||||
"/nix/var/nix/profiles/default/bin"
|
|
||||||
] ++ $env.PATH
|
|
||||||
|
|
||||||
$env.EDITOR = "nvim"
|
|
||||||
$env.VISUAL = $env.EDITOR
|
|
||||||
$env.PAGER = "ov"
|
|
||||||
|
|
||||||
let fish_completer = {|spans|
|
|
||||||
fish --command $"complete '--do-complete=($spans | str replace --all "'" "\\'" | str join ' ')'"
|
|
||||||
| from tsv --flexible --noheaders --no-infer
|
|
||||||
| rename value description
|
|
||||||
| update value {|row|
|
|
||||||
let value = $row.value
|
|
||||||
let need_quote = ['\' ',' '[' ']' '(' ')' ' ' '\t' "'" '"' "`"] | any {$in in $value}
|
|
||||||
if ($need_quote and ($value | path exists)) {
|
|
||||||
let expanded_path = if ($value starts-with ~) {$value | path expand --no-symlink} else {$value}
|
|
||||||
$'"($expanded_path | str replace --all "\"" "\\\"")"'
|
|
||||||
} else {$value}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Nushell
|
|
||||||
# source theme.nu
|
|
||||||
$env.PROMPT_INDICATOR_VI_INSERT = ""
|
|
||||||
$env.PROMPT_INDICATOR_VI_NORMAL = ""
|
|
||||||
$env.config = {
|
|
||||||
show_banner: false
|
|
||||||
edit_mode: vi,
|
|
||||||
completions: {
|
|
||||||
external: {
|
|
||||||
enable: true
|
|
||||||
completer: $fish_completer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$env.LS_COLORS = (vivid generate catppuccin-latte | str trim)
|
|
||||||
$env.RIPGREP_CONFIG_PATH = ($env.HOME | path join ".config" "ripgrep" "config")
|
|
||||||
$env.FZF_COMPLETE = "0"
|
|
||||||
$env.FZF_DEFAULT_OPTS = "
|
|
||||||
--color=bg+:#363A4F,bg:#24273A,spinner:#F4DBD6,hl:#ED8796
|
|
||||||
--color=fg:#CAD3F5,header:#ED8796,info:#C6A0F6,pointer:#F4DBD6
|
|
||||||
--color=marker:#B7BDF8,fg+:#CAD3F5,prompt:#C6A0F6,hl+:#ED8796
|
|
||||||
--color=selected-bg:#494D64
|
|
||||||
--color=border:#363A4F,label:#CAD3F5"
|
|
||||||
|
|
||||||
alias b = bat
|
|
||||||
alias d = docker
|
|
||||||
alias ld = lazydocker
|
|
||||||
alias lg = lazygit
|
|
||||||
alias m = mise
|
|
||||||
alias mr = mise run
|
|
||||||
alias v = nvim
|
|
||||||
alias vim = nvim
|
|
||||||
alias dcu = docker compose up -d
|
|
||||||
alias dcud = docker compose -f docker-compose.dev.yml up -d
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
nixpkgs = {
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
allowBroken = true;
|
|
||||||
allowInsecure = false;
|
|
||||||
allowUnsupportedSystem = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
overlays =
|
|
||||||
let
|
|
||||||
path = ../../overlays;
|
|
||||||
in
|
|
||||||
with builtins;
|
|
||||||
map (n: import (path + ("/" + n))) (
|
|
||||||
filter (n: match ".*\\.nix" n != null || pathExists (path + ("/" + n + "/default.nix"))) (
|
|
||||||
attrNames (readDir path)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{ pkgs, config, ... }: { }
|
|
||||||
@@ -1,182 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
name = "Christoph Schmatzler";
|
|
||||||
user = "cschmatzler";
|
|
||||||
email = "christoph@schmatzler.com";
|
|
||||||
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 = {
|
|
||||||
"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")
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
ignores = [ "*.swp" ];
|
|
||||||
userName = name;
|
|
||||||
userEmail = email;
|
|
||||||
lfs = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
core = {
|
|
||||||
editor = "vim";
|
|
||||||
autocrlf = "input";
|
|
||||||
};
|
|
||||||
# commit.gpgsign = true;
|
|
||||||
pull.rebase = true;
|
|
||||||
rebase.autoStash = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fish = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
starship = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
settings = {
|
|
||||||
add_newline = true;
|
|
||||||
command_timeout = 750;
|
|
||||||
|
|
||||||
format = lib.concatStrings [
|
|
||||||
"$directory"
|
|
||||||
"$\{custom.jj\}"
|
|
||||||
"$line_break"
|
|
||||||
"$character"
|
|
||||||
];
|
|
||||||
|
|
||||||
character = {
|
|
||||||
success_symbol = "[❯](bold green)";
|
|
||||||
error_symbol = "[❯](bold red)";
|
|
||||||
};
|
|
||||||
|
|
||||||
custom.jj = {
|
|
||||||
ignore_timeout = true;
|
|
||||||
description = "The current jj status";
|
|
||||||
detect_folders = [ ".jj" ];
|
|
||||||
symbol = "🥋 ";
|
|
||||||
command = lib.concatStrings [
|
|
||||||
"jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '"
|
|
||||||
"separate(\" \","
|
|
||||||
" change_id.shortest(4),"
|
|
||||||
" bookmarks,"
|
|
||||||
" \"|\","
|
|
||||||
" concat("
|
|
||||||
" if(conflict, \"💥\"),"
|
|
||||||
" if(divergent, \"🚧\"),"
|
|
||||||
" if(hidden, \"👻\"),"
|
|
||||||
" if(immutable, \"🔒\"),"
|
|
||||||
" ),"
|
|
||||||
" raw_escape_sequence(\"\\x1b[1;32m\") ++ if(empty, \"(empty)\"),"
|
|
||||||
" raw_escape_sequence(\"\\x1b[1;32m\") ++ coalesce("
|
|
||||||
" truncate_end(29, description.first_line(), \"…\"),"
|
|
||||||
" \"(no description set)\","
|
|
||||||
" ) ++ raw_escape_sequence(\"\\x1b[0m\"),"
|
|
||||||
")"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
git_state = {
|
|
||||||
disabled = true;
|
|
||||||
};
|
|
||||||
git_commit = {
|
|
||||||
disabled = true;
|
|
||||||
};
|
|
||||||
git_metrics = {
|
|
||||||
disabled = true;
|
|
||||||
};
|
|
||||||
git_branch = {
|
|
||||||
disabled = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
zoxide = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
atuin = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
daemon = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
ghostty = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.ghostty-bin;
|
|
||||||
settings = {
|
|
||||||
command = "${pkgs.fish}/bin/fish";
|
|
||||||
theme = "catppuccin-latte";
|
|
||||||
window-padding-x = 8;
|
|
||||||
window-padding-y = 2;
|
|
||||||
window-padding-balance = true;
|
|
||||||
font-family = "Iosevka";
|
|
||||||
font-size = 15.5;
|
|
||||||
font-feature = [
|
|
||||||
"-calt"
|
|
||||||
"-dlig"
|
|
||||||
];
|
|
||||||
cursor-style = "block";
|
|
||||||
mouse-hide-while-typing = true;
|
|
||||||
mouse-scroll-multiplier = 1.25;
|
|
||||||
shell-integration = "detect";
|
|
||||||
shell-integration-features = "no-cursor";
|
|
||||||
|
|
||||||
keybind = [
|
|
||||||
"global:ctrl+shift+space=toggle_quick_terminal"
|
|
||||||
"shift+enter=text:\\n"
|
|
||||||
"ctrl+one=goto_tab:1"
|
|
||||||
"ctrl+two=goto_tab:2"
|
|
||||||
"ctrl+three=goto_tab:3"
|
|
||||||
"ctrl+four=goto_tab:4"
|
|
||||||
"ctrl+five=goto_tab:5"
|
|
||||||
"ctrl+six=goto_tab:6"
|
|
||||||
"ctrl+seven=goto_tab:7"
|
|
||||||
"ctrl+eight=goto_tab:8"
|
|
||||||
"ctrl+nine=goto_tab:9"
|
|
||||||
"ctrl+left=previous_tab"
|
|
||||||
"ctrl+right=next_tab"
|
|
||||||
"ctrl+h=previous_tab"
|
|
||||||
"ctrl+l=next_tab"
|
|
||||||
"ctrl+shift+left=goto_split:left"
|
|
||||||
"ctrl+shift+right=goto_split:right"
|
|
||||||
"ctrl+shift+h=goto_split:left"
|
|
||||||
"ctrl+shift+j=goto_split:down"
|
|
||||||
"ctrl+shift+k=goto_split:up"
|
|
||||||
"ctrl+shift+l=goto_split:right"
|
|
||||||
"ctrl+shift+enter=new_split:right"
|
|
||||||
"ctrl+t=new_tab"
|
|
||||||
"ctrl+w=close_tab"
|
|
||||||
"ctrl+shift+w=close_surface"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
74
profiles/base/default.nix
Normal file
74
profiles/base/default.nix
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
agenix,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
agenix.darwinModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowBroken = true;
|
||||||
|
allowInsecure = false;
|
||||||
|
allowUnsupportedSystem = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
overlays =
|
||||||
|
let
|
||||||
|
path = ../../overlays;
|
||||||
|
in
|
||||||
|
with builtins;
|
||||||
|
map (n: import (path + ("/" + n))) (
|
||||||
|
filter (n: match ".*\\.nix" n != null || pathExists (path + ("/" + n + "/default.nix"))) (
|
||||||
|
attrNames (readDir path)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
package = pkgs.nix;
|
||||||
|
settings = {
|
||||||
|
trusted-users = [
|
||||||
|
"@admin"
|
||||||
|
"${user}"
|
||||||
|
];
|
||||||
|
substituters = [
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
||||||
|
};
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
interval = {
|
||||||
|
Weekday = 0;
|
||||||
|
Hour = 2;
|
||||||
|
Minute = 0;
|
||||||
|
};
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
agenix.packages."${pkgs.system}".default
|
||||||
|
]
|
||||||
|
++ (import ./packages.nix { inherit pkgs; });
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
|
||||||
|
system = {
|
||||||
|
primaryUser = user;
|
||||||
|
stateVersion = 5;
|
||||||
|
};
|
||||||
|
}
|
||||||
9
profiles/base/home-manager/atuin.nix
Normal file
9
profiles/base/home-manager/atuin.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
programs.atuin = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
daemon = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
profiles/base/home-manager/bat.nix
Normal file
25
profiles/base/home-manager/bat.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
theme = "Catppuccin Latte";
|
||||||
|
pager = "ov";
|
||||||
|
};
|
||||||
|
themes = {
|
||||||
|
"Catppuccin Latte" = {
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "catppuccin";
|
||||||
|
repo = "bat";
|
||||||
|
rev = "6810349b28055dce54076712fc05fc68da4b8ec0";
|
||||||
|
sha256 = "lJapSgRVENTrbmpVyn+UQabC9fpV1G1e+CdlJ090uvg=";
|
||||||
|
};
|
||||||
|
file = "Themes/Catppuccin Latte.tmTheme";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
profiles/base/home-manager/eza.nix
Normal file
6
profiles/base/home-manager/eza.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
9
profiles/base/home-manager/fish.nix
Normal file
9
profiles/base/home-manager/fish.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
interactiveShellInit = ''
|
||||||
|
set fish_greeting # Disable greeting
|
||||||
|
set -gx LS_COLORS "$(vivid generate catppuccin-latte)"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
57
profiles/base/home-manager/ghostty.nix
Normal file
57
profiles/base/home-manager/ghostty.nix
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.ghostty-bin;
|
||||||
|
settings = {
|
||||||
|
command = "${pkgs.fish}/bin/fish";
|
||||||
|
theme = "catppuccin-latte";
|
||||||
|
window-padding-x = 8;
|
||||||
|
window-padding-y = 2;
|
||||||
|
window-padding-balance = true;
|
||||||
|
font-family = "Iosevka";
|
||||||
|
font-size = 15.5;
|
||||||
|
font-feature = [
|
||||||
|
"-calt"
|
||||||
|
"-dlig"
|
||||||
|
];
|
||||||
|
cursor-style = "block";
|
||||||
|
mouse-hide-while-typing = true;
|
||||||
|
mouse-scroll-multiplier = 1.25;
|
||||||
|
shell-integration = "detect";
|
||||||
|
shell-integration-features = "no-cursor";
|
||||||
|
|
||||||
|
keybind = [
|
||||||
|
"global:ctrl+shift+space=toggle_quick_terminal"
|
||||||
|
"shift+enter=text:\\n"
|
||||||
|
"ctrl+one=goto_tab:1"
|
||||||
|
"ctrl+two=goto_tab:2"
|
||||||
|
"ctrl+three=goto_tab:3"
|
||||||
|
"ctrl+four=goto_tab:4"
|
||||||
|
"ctrl+five=goto_tab:5"
|
||||||
|
"ctrl+six=goto_tab:6"
|
||||||
|
"ctrl+seven=goto_tab:7"
|
||||||
|
"ctrl+eight=goto_tab:8"
|
||||||
|
"ctrl+nine=goto_tab:9"
|
||||||
|
"ctrl+left=previous_tab"
|
||||||
|
"ctrl+right=next_tab"
|
||||||
|
"ctrl+h=previous_tab"
|
||||||
|
"ctrl+l=next_tab"
|
||||||
|
"ctrl+shift+left=goto_split:left"
|
||||||
|
"ctrl+shift+right=goto_split:right"
|
||||||
|
"ctrl+shift+h=goto_split:left"
|
||||||
|
"ctrl+shift+j=goto_split:down"
|
||||||
|
"ctrl+shift+k=goto_split:up"
|
||||||
|
"ctrl+shift+l=goto_split:right"
|
||||||
|
"ctrl+shift+enter=new_split:right"
|
||||||
|
"ctrl+t=new_tab"
|
||||||
|
"ctrl+w=close_tab"
|
||||||
|
"ctrl+shift+w=close_surface"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
27
profiles/base/home-manager/git.nix
Normal file
27
profiles/base/home-manager/git.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
name = "Christoph Schmatzler";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
ignores = [ "*.swp" ];
|
||||||
|
userName = name;
|
||||||
|
lfs = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
core = {
|
||||||
|
editor = "vim";
|
||||||
|
autocrlf = "input";
|
||||||
|
};
|
||||||
|
# commit.gpgsign = true;
|
||||||
|
pull.rebase = true;
|
||||||
|
rebase.autoStash = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
5
profiles/base/home-manager/jujutsu.nix
Normal file
5
profiles/base/home-manager/jujutsu.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
programs.jujutsu = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
25
profiles/base/home-manager/ssh.nix
Normal file
25
profiles/base/home-manager/ssh.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.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 = {
|
||||||
|
"github.com" = {
|
||||||
|
identitiesOnly = true;
|
||||||
|
identityFile = [
|
||||||
|
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux "/home/${user}/.ssh/id_ed25519")
|
||||||
|
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "/Users/${user}/.ssh/id_ed25519")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
66
profiles/base/home-manager/starship.nix
Normal file
66
profiles/base/home-manager/starship.nix
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
command_timeout = 750;
|
||||||
|
|
||||||
|
format = lib.concatStrings [
|
||||||
|
"$directory"
|
||||||
|
"$\{custom.jj\}"
|
||||||
|
"$line_break"
|
||||||
|
"$character"
|
||||||
|
];
|
||||||
|
|
||||||
|
character = {
|
||||||
|
success_symbol = "[❯](bold green)";
|
||||||
|
error_symbol = "[❯](bold red)";
|
||||||
|
};
|
||||||
|
|
||||||
|
custom.jj = {
|
||||||
|
ignore_timeout = true;
|
||||||
|
description = "The current jj status";
|
||||||
|
when = "jj root";
|
||||||
|
symbol = "🥋 ";
|
||||||
|
command = lib.concatStrings [
|
||||||
|
"jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '"
|
||||||
|
"separate(\" \","
|
||||||
|
" change_id.shortest(4),"
|
||||||
|
" bookmarks,"
|
||||||
|
" \"|\","
|
||||||
|
" concat("
|
||||||
|
" if(conflict, \"💥\"),"
|
||||||
|
" if(divergent, \"🚧\"),"
|
||||||
|
" if(hidden, \"👻\"),"
|
||||||
|
" if(immutable, \"🔒\"),"
|
||||||
|
" ),"
|
||||||
|
" raw_escape_sequence(\"\\x1b[1;32m\") ++ if(empty, \"(empty)\"),"
|
||||||
|
" raw_escape_sequence(\"\\x1b[1;32m\") ++ coalesce("
|
||||||
|
" truncate_end(29, description.first_line(), \"…\"),"
|
||||||
|
" \"(no description set)\","
|
||||||
|
" ) ++ raw_escape_sequence(\"\\x1b[0m\"),"
|
||||||
|
")'"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
git_state = {
|
||||||
|
disabled = true;
|
||||||
|
};
|
||||||
|
git_commit = {
|
||||||
|
disabled = true;
|
||||||
|
};
|
||||||
|
git_metrics = {
|
||||||
|
disabled = true;
|
||||||
|
};
|
||||||
|
git_branch = {
|
||||||
|
disabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
profiles/base/home-manager/zoxide.nix
Normal file
6
profiles/base/home-manager/zoxide.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
5
profiles/base/home-manager/zsh.nix
Normal file
5
profiles/base/home-manager/zsh.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,21 +4,19 @@ with pkgs;
|
|||||||
[
|
[
|
||||||
age
|
age
|
||||||
age-plugin-yubikey
|
age-plugin-yubikey
|
||||||
atuin
|
|
||||||
bat
|
|
||||||
docker
|
docker
|
||||||
docker-compose
|
docker-compose
|
||||||
fish
|
git
|
||||||
gnupg
|
gnupg
|
||||||
iosevka
|
iosevka
|
||||||
jjui
|
jjui
|
||||||
jq
|
jq
|
||||||
jujutsu
|
|
||||||
killall
|
killall
|
||||||
libfido2
|
libfido2
|
||||||
neovim
|
neovim
|
||||||
nixfmt
|
nixfmt
|
||||||
nodejs_24
|
nodejs_24
|
||||||
|
opencode
|
||||||
openssh
|
openssh
|
||||||
ripgrep
|
ripgrep
|
||||||
sqlite
|
sqlite
|
||||||
@@ -28,5 +26,4 @@ with pkgs;
|
|||||||
vivid
|
vivid
|
||||||
wget
|
wget
|
||||||
zip
|
zip
|
||||||
zoxide
|
|
||||||
]
|
]
|
||||||
@@ -3,17 +3,16 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
home-manager,
|
home-manager,
|
||||||
|
user,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
user = "cschmatzler";
|
|
||||||
sharedFiles = import ../shared/files.nix { inherit config pkgs; };
|
|
||||||
additionalFiles = import ./files.nix { inherit user config pkgs; };
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./dock
|
./dock
|
||||||
|
./system.nix
|
||||||
|
./homebrew.nix
|
||||||
|
./secrets.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
users.users.${user} = {
|
users.users.${user} = {
|
||||||
@@ -21,14 +20,6 @@ in
|
|||||||
home = "/Users/${user}";
|
home = "/Users/${user}";
|
||||||
isHidden = false;
|
isHidden = false;
|
||||||
shell = pkgs.fish;
|
shell = pkgs.fish;
|
||||||
ignoreShellProgramCheck = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
homebrew = {
|
|
||||||
enable = true;
|
|
||||||
casks = pkgs.callPackage ./casks.nix { };
|
|
||||||
|
|
||||||
masApps = { };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
@@ -41,16 +32,24 @@ in
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
_module.args = { inherit user; };
|
||||||
|
imports = [
|
||||||
|
../base/home-manager/atuin.nix
|
||||||
|
../base/home-manager/bat.nix
|
||||||
|
../base/home-manager/eza.nix
|
||||||
|
../base/home-manager/fish.nix
|
||||||
|
../base/home-manager/ghostty.nix
|
||||||
|
../base/home-manager/git.nix
|
||||||
|
../base/home-manager/jujutsu.nix
|
||||||
|
../base/home-manager/ssh.nix
|
||||||
|
../base/home-manager/starship.nix
|
||||||
|
../base/home-manager/zoxide.nix
|
||||||
|
../base/home-manager/zsh.nix
|
||||||
|
];
|
||||||
home = {
|
home = {
|
||||||
enableNixpkgsReleaseCheck = false;
|
|
||||||
packages = pkgs.callPackage ./packages.nix { };
|
packages = pkgs.callPackage ./packages.nix { };
|
||||||
file = lib.mkMerge [
|
|
||||||
sharedFiles
|
|
||||||
additionalFiles
|
|
||||||
];
|
|
||||||
stateVersion = "23.11";
|
stateVersion = "23.11";
|
||||||
};
|
};
|
||||||
programs = { } // import ../shared/home-manager.nix { inherit config pkgs lib; };
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -61,7 +60,6 @@ in
|
|||||||
entries = [
|
entries = [
|
||||||
{ path = "/Applications/Safari.app/"; }
|
{ path = "/Applications/Safari.app/"; }
|
||||||
{ path = "/${pkgs.ghostty-bin}/Applications/Ghostty.app/"; }
|
{ path = "/${pkgs.ghostty-bin}/Applications/Ghostty.app/"; }
|
||||||
{ path = "${pkgs.alacritty}/Applications/Alacritty.app/"; }
|
|
||||||
{ path = "/System/Applications/Notes.app/"; }
|
{ path = "/System/Applications/Notes.app/"; }
|
||||||
{ path = "/System/Applications/Music.app/"; }
|
{ path = "/System/Applications/Music.app/"; }
|
||||||
{ path = "/System/Applications/System Settings.app/"; }
|
{ path = "/System/Applications/System Settings.app/"; }
|
||||||
8
profiles/darwin/homebrew.nix
Normal file
8
profiles/darwin/homebrew.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
homebrew = {
|
||||||
|
enable = true;
|
||||||
|
masApps = { };
|
||||||
|
};
|
||||||
|
}
|
||||||
8
profiles/darwin/packages.nix
Normal file
8
profiles/darwin/packages.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
_1password-gui
|
||||||
|
dockutil
|
||||||
|
raycast
|
||||||
|
]
|
||||||
@@ -3,12 +3,9 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
agenix,
|
agenix,
|
||||||
secrets,
|
secrets,
|
||||||
|
user,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
user = "cschmatzler";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
age.identityPaths = [
|
age.identityPaths = [
|
||||||
"/Users/${user}/.ssh/id_ed25519"
|
"/Users/${user}/.ssh/id_ed25519"
|
||||||
32
profiles/darwin/system.nix
Normal file
32
profiles/darwin/system.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
system.defaults = {
|
||||||
|
NSGlobalDomain = {
|
||||||
|
AppleShowAllExtensions = true;
|
||||||
|
ApplePressAndHoldEnabled = false;
|
||||||
|
KeyRepeat = 2;
|
||||||
|
InitialKeyRepeat = 15;
|
||||||
|
"com.apple.mouse.tapBehavior" = 1;
|
||||||
|
"com.apple.sound.beep.volume" = 0.0;
|
||||||
|
"com.apple.sound.beep.feedback" = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
dock = {
|
||||||
|
autohide = false;
|
||||||
|
show-recents = false;
|
||||||
|
launchanim = true;
|
||||||
|
orientation = "bottom";
|
||||||
|
tilesize = 48;
|
||||||
|
};
|
||||||
|
|
||||||
|
finder = {
|
||||||
|
_FXShowPosixPathInTitle = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
trackpad = {
|
||||||
|
Clicking = true;
|
||||||
|
TrackpadThreeFingerDrag = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
59
profiles/nixos/default.nix
Normal file
59
profiles/nixos/default.nix
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
home-manager,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
sharedFiles = import ../base/files.nix { inherit config pkgs; };
|
||||||
|
additionalFiles = import ./files.nix { inherit config pkgs; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./packages.nix
|
||||||
|
./secrets.nix
|
||||||
|
./disk-config.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.${user} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
home = "/home/${user}";
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"sudo"
|
||||||
|
"audio"
|
||||||
|
"video"
|
||||||
|
"network"
|
||||||
|
"systemd-journal"
|
||||||
|
];
|
||||||
|
shell = pkgs.fish;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
users.${user} =
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
_module.args = { inherit user; };
|
||||||
|
imports = [
|
||||||
|
../base/home-manager.nix
|
||||||
|
];
|
||||||
|
home = {
|
||||||
|
packages = pkgs.callPackage ./packages.nix { };
|
||||||
|
file = lib.mkMerge [
|
||||||
|
sharedFiles
|
||||||
|
additionalFiles
|
||||||
|
];
|
||||||
|
stateVersion = "23.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user