refactor: major structural changes
git updates update tmux conf add ansible tools squash me squash fix: get git aliases from plugin virt stuff add devenv some virt updates kubernetes
This commit is contained in:
parent
2e8c1eec90
commit
2220c4e917
87 changed files with 1963 additions and 2261 deletions
1
.envrc
1
.envrc
|
|
@ -1 +0,0 @@
|
||||||
use flake . --impure
|
|
||||||
11
README.md
11
README.md
|
|
@ -31,11 +31,16 @@ Before using this NixOS flake configuration, you should have the following prere
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
This section should provide guidance on using and managing your NixOS configuration.
|
NixOS and home-manager are called seperately,
|
||||||
|
|
||||||
To rebuild and switch to the new configuration:
|
To rebuild and switch to the new NixOS configuration:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nixos-rebuild switch --flake .#thinkpad
|
nixos-rebuild switch --flake .#candlekeep
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To rebuild and switch to the new home-manager configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
home-manager switch --flake .#gwg313@candlekeep
|
||||||
|
```
|
||||||
|
|
|
||||||
15
common/gui/common.nix
Normal file
15
common/gui/common.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
services.printing.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gnome.adwaita-icon-theme
|
||||||
|
gnome.gnome-themes-extra
|
||||||
|
firefox-wayland
|
||||||
|
discord
|
||||||
|
qt5.qtwayland
|
||||||
|
qt6.qmake
|
||||||
|
qt6.qtwayland
|
||||||
|
adwaita-qt
|
||||||
|
adwaita-qt6
|
||||||
|
];
|
||||||
|
}
|
||||||
14
common/gui/dbus.nix
Normal file
14
common/gui/dbus.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.dbus = {
|
||||||
|
enable = true;
|
||||||
|
packages = [pkgs.dconf];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.dconf = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
16
common/gui/displayManager.nix
Normal file
16
common/gui/displayManager.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.xserver = {
|
||||||
|
displayManager.gdm = {
|
||||||
|
enable = false;
|
||||||
|
wayland = true;
|
||||||
|
};
|
||||||
|
displayManager.lightdm.enable = false;
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
];
|
||||||
|
}
|
||||||
80
common/gui/hyprland.nix
Normal file
80
common/gui/hyprland.nix
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./common.nix
|
||||||
|
./dbus.nix
|
||||||
|
./pipewire.nix
|
||||||
|
./wayland.nix
|
||||||
|
./displayManager.nix
|
||||||
|
./xdg.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Security
|
||||||
|
security = {
|
||||||
|
pam.services.swaylock = {
|
||||||
|
text = ''
|
||||||
|
auth include login
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Services
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "";
|
||||||
|
excludePackages = [pkgs.xterm];
|
||||||
|
# videoDrivers = ["amdgpu"];
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
touchpad.tapping = true;
|
||||||
|
touchpad.naturalScrolling = true;
|
||||||
|
touchpad.scrollMethod = "twofinger";
|
||||||
|
touchpad.disableWhileTyping = true;
|
||||||
|
touchpad.clickMethod = "clickfinger";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
gvfs.enable = true;
|
||||||
|
tumbler.enable = true;
|
||||||
|
gnome = {
|
||||||
|
sushi.enable = true;
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||||
|
xwayland = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
waybar = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.waybar.overrideAttrs (oldAttrs: {
|
||||||
|
mesonFlags = oldAttrs.mesonFlags ++ ["-Dexperimental=true"];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
thunar = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.xfce; [
|
||||||
|
thunar-archive-plugin
|
||||||
|
thunar-volman
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
libva-utils
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
];
|
||||||
|
environment.sessionVariables = {
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
};
|
||||||
|
}
|
||||||
28
common/gui/pipewire.nix
Normal file
28
common/gui/pipewire.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Enable sound with pipewire.
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
# If you want to use JACK applications, uncomment this
|
||||||
|
#jack.enable = true;
|
||||||
|
|
||||||
|
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||||
|
# no need to redefine it in your config for now)
|
||||||
|
#media-session.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
pipewire
|
||||||
|
wireplumber
|
||||||
|
];
|
||||||
|
}
|
||||||
26
common/gui/wayland.nix
Normal file
26
common/gui/wayland.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wlr-randr
|
||||||
|
wl-clipboard
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
POLKIT_AUTH_AGENT = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||||
|
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas";
|
||||||
|
WLR_NO_HARDWARE_CURSORS = "1";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
SDL_VIDEODRIVER = "wayland";
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||||
|
CLUTTER_BACKEND = "wayland";
|
||||||
|
WLR_RENDERER = "vulkan";
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
#NIXOS_XDG_OPEN_USE_PORTAL = "1"; # Sets the desktop portal to use flatpak
|
||||||
|
WLR_NO_HARDWARE_CURSOR = "1";
|
||||||
|
GDK_BACKEND = "wayland";
|
||||||
|
QT_QPA_PLATFORM = "wayland;xcb";
|
||||||
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
QT_QPA_PLATFORMTHEME = "qt5ct";
|
||||||
|
};
|
||||||
|
}
|
||||||
26
common/gui/xdg.nix
Normal file
26
common/gui/xdg.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# XDG Portals
|
||||||
|
xdg = {
|
||||||
|
autostart.enable = true;
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
xdg-utils
|
||||||
|
xdg-desktop-portal
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
};
|
||||||
|
}
|
||||||
19
common/networking/zerotier.nix
Normal file
19
common/networking/zerotier.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.zerotierone = {
|
||||||
|
joinNetworks = [
|
||||||
|
"48d6023c46b60a94"
|
||||||
|
];
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.extraHosts = ''
|
||||||
|
192.168.194.241 nothing.zt
|
||||||
|
'';
|
||||||
|
}
|
||||||
9
common/nixos/bluetooth.nix
Normal file
9
common/nixos/bluetooth.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{...}: {
|
||||||
|
services.blueman.enable = true;
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.upower = {enable = true;};
|
||||||
|
}
|
||||||
42
common/nixos/common.nix
Normal file
42
common/nixos/common.nix
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./packages.nix
|
||||||
|
./users.nix
|
||||||
|
./locale.nix
|
||||||
|
../../common/style/stylix.nix
|
||||||
|
];
|
||||||
|
#
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
nix.settings.auto-optimise-store = true;
|
||||||
|
nix.optimise.automatic = true;
|
||||||
|
|
||||||
|
# Disable so comma can be installed
|
||||||
|
programs.command-not-found.enable = false;
|
||||||
|
programs.nix-index-database.comma.enable = true;
|
||||||
|
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "daily";
|
||||||
|
options = "--delete-older-than 14d";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fstrim.enable = true;
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system we e ere taken. It's perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
}
|
||||||
8
common/nixos/laptop.nix
Normal file
8
common/nixos/laptop.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [./bluetooth.nix];
|
||||||
|
# enable's backlight switching
|
||||||
|
programs.light.enable = true;
|
||||||
|
|
||||||
|
# use TLP for power management
|
||||||
|
services.tlp.enable = true;
|
||||||
|
}
|
||||||
26
common/nixos/locale.nix
Normal file
26
common/nixos/locale.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "America/Toronto";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
}
|
||||||
26
common/nixos/packages.nix
Normal file
26
common/nixos/packages.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
alejandra
|
||||||
|
just
|
||||||
|
vim
|
||||||
|
wget
|
||||||
|
home-manager
|
||||||
|
git
|
||||||
|
];
|
||||||
|
}
|
||||||
18
common/nixos/users.nix
Normal file
18
common/nixos/users.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Define a user account. Don't forget to set a password with 'passwd'.
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
users.users.gwg313 = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Glen Goodwin";
|
||||||
|
extraGroups = ["networkmanager" "wheel" "video" "docker" "audio" "wireshark"];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
uid = 1000;
|
||||||
|
};
|
||||||
|
}
|
||||||
37
common/style/stylix.nix
Normal file
37
common/style/stylix.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
stylix = {
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-terminal-storm.yaml";
|
||||||
|
image = ./wallpaper.jpg;
|
||||||
|
autoEnable = true;
|
||||||
|
|
||||||
|
opacity.terminal = 1.0;
|
||||||
|
fonts.sizes.terminal = 15;
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
serif = {
|
||||||
|
package = pkgs.meslo-lgs-nf;
|
||||||
|
name = "MesloLGS NF";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.meslo-lgs-nf;
|
||||||
|
name = "MesloLGS NF";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.ibm-plex;
|
||||||
|
name = "IBM Plex Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
BIN
common/style/wallpaper.jpg
Normal file
BIN
common/style/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 MiB |
18
common/virtualization/kubernetes.nix
Normal file
18
common/virtualization/kubernetes.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
argocd # Declarative, GitOps continuous delivery tool for Kubernetes.
|
||||||
|
k3d # Lightweight utility to run Kubernetes clusters using Docker.
|
||||||
|
k9s # Kubernetes CLI to visually navigate and manage resources in clusters.
|
||||||
|
kind # Kubernetes IN Docker: Tool for running local Kubernetes clusters using Docker container nodes.
|
||||||
|
kubectl # Kubernetes command-line tool for interacting with clusters.
|
||||||
|
kubectx # Switch between Kubernetes contexts and namespaces with ease.
|
||||||
|
kubernetes-helm # Package manager for Kubernetes applications, simplifying deployment and management.
|
||||||
|
minikube # Local Kubernetes cluster for easy testing and development.
|
||||||
|
stern # Multi-container log tailing and streaming for Kubernetes.
|
||||||
|
];
|
||||||
|
}
|
||||||
21
common/virtualization/podman.nix
Normal file
21
common/virtualization/podman.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
virtualisation = {
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Create a `docker` alias for podman, to use it as a drop-in replacement
|
||||||
|
dockerCompat = true;
|
||||||
|
|
||||||
|
# Required for containers under podman-compose to be able to talk to each other.
|
||||||
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
buildah # Tool for building OCI (Open Container Initiative) and Docker container images.
|
||||||
|
distrobox # Lightweight utility for running Linux distributions in containers.
|
||||||
|
dive # A tool for exploring a Docker image, allowing inspection of layer contents.
|
||||||
|
grype # A vulnerability scanner for container images and filesystems.
|
||||||
|
podman-compose # Podman plugin for managing multi-container applications.
|
||||||
|
];
|
||||||
|
}
|
||||||
529
flake.lock
generated
529
flake.lock
generated
|
|
@ -1,59 +1,132 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"agenix": {
|
"base16": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"fromYaml": "fromYaml"
|
||||||
"home-manager": "home-manager",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696775529,
|
"lastModified": 1689633990,
|
||||||
"narHash": "sha256-TYlE4B0ktPtlJJF9IFxTWrEeq+XKG8Ny0gc2FGEAdj0=",
|
"narHash": "sha256-iwvQg2Vx0IIDWZaKo8Xmzxlv1YPHg+Kp/QSv8dRv0RY=",
|
||||||
"owner": "ryantm",
|
"owner": "SenchoPens",
|
||||||
"repo": "agenix",
|
"repo": "base16.nix",
|
||||||
"rev": "daf42cb35b2dc614d1551e37f96406e4c4a2d3e4",
|
"rev": "dddf2e1c04845d43c89a8e9e37d574519649a404",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "ryantm",
|
"owner": "SenchoPens",
|
||||||
"repo": "agenix",
|
"repo": "base16.nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"banner": {
|
"base16-alacritty": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"gtk-nix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1669224926,
|
|
||||||
"narHash": "sha256-UK19yx8jNqbPfBZNUeJr2Sms7BhbDAUyJBF5w2CT6Hc=",
|
|
||||||
"owner": "the-argus",
|
|
||||||
"repo": "banner.nix",
|
|
||||||
"rev": "253556f4068f5cb9728e49ac42d630cdc0ccfd58",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "the-argus",
|
|
||||||
"repo": "banner.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-schemes": {
|
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689473676,
|
"lastModified": 1674275109,
|
||||||
"narHash": "sha256-L0RhUr9+W5EPWBpLcmkKpUeCEWRs/kLzVMF3Vao2ZU0=",
|
"narHash": "sha256-Adwx9yP70I6mJrjjODOgZJjt4OPPe8gJu7UuBboXO4M=",
|
||||||
|
"owner": "aarowill",
|
||||||
|
"repo": "base16-alacritty",
|
||||||
|
"rev": "63d8ae5dfefe5db825dd4c699d0cdc2fc2c3eaf7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "aarowill",
|
||||||
|
"repo": "base16-alacritty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-fish": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1622559957,
|
||||||
|
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696725948,
|
||||||
|
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-schemes",
|
"repo": "base16-foot",
|
||||||
"rev": "d95123ca6377cd849cfdce92c0a24406b0c6a789",
|
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-schemes",
|
"repo": "base16-foot",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696727917,
|
||||||
|
"narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1665001328,
|
||||||
|
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
||||||
|
"owner": "kdrag0n",
|
||||||
|
"repo": "base16-kitty",
|
||||||
|
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kdrag0n",
|
||||||
|
"repo": "base16-kitty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696725902,
|
||||||
|
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-tmux",
|
||||||
|
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1663659192,
|
||||||
|
"narHash": "sha256-uJvaYYDMXvoo0fhBZUhN8WBXeJ87SRgof6GEK2efFT0=",
|
||||||
|
"owner": "chriskempson",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "3be3cd82cd31acfcab9a41bad853d9c68d30478d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "chriskempson",
|
||||||
|
"repo": "base16-vim",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -81,28 +154,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1673295039,
|
|
||||||
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
|
||||||
"owner": "lnl7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lnl7",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"devenv": {
|
"devenv": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
|
|
@ -113,11 +164,11 @@
|
||||||
"pre-commit-hooks": "pre-commit-hooks"
|
"pre-commit-hooks": "pre-commit-hooks"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700140236,
|
"lastModified": 1701187605,
|
||||||
"narHash": "sha256-OpukFO0rRG2hJzD+pCQq+nSWuT9dBL6DSvADQaUlmFg=",
|
"narHash": "sha256-NctguPdUeDVLXFsv6vI1RlEiHLsXkeW3pgZe/mwn1BU=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "devenv",
|
"repo": "devenv",
|
||||||
"rev": "525d60c44de848a6b2dd468f6efddff078eb2af2",
|
"rev": "a7c4dd8f4eb1f98a6b8f04bf08364954e1e73e4f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -211,14 +262,14 @@
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_2"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689068808,
|
"lastModified": 1694529238,
|
||||||
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
|
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
|
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -232,11 +283,11 @@
|
||||||
"systems": "systems_4"
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694529238,
|
"lastModified": 1685518550,
|
||||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -263,39 +314,19 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_5": {
|
"fromYaml": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"systems": "systems_6"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685518550,
|
"lastModified": 1689549921,
|
||||||
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||||
"owner": "numtide",
|
"owner": "SenchoPens",
|
||||||
"repo": "flake-utils",
|
"repo": "fromYaml",
|
||||||
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "SenchoPens",
|
||||||
"repo": "flake-utils",
|
"repo": "fromYaml",
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_6": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_7"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685518550,
|
|
||||||
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -366,64 +397,23 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gitignore_4": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"pre-commit-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1660459072,
|
|
||||||
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gtk-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"banner": "banner",
|
|
||||||
"flake-utils": "flake-utils_2",
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1692384535,
|
|
||||||
"narHash": "sha256-lFOEsDLV7kuEAcHS7HfyGewTcdSkzTxM+l3XwGhzLgU=",
|
|
||||||
"owner": "the-argus",
|
|
||||||
"repo": "gtk-nix",
|
|
||||||
"rev": "e77b9e68aa818b87389c682b4fd018ad451a85d3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "the-argus",
|
|
||||||
"repo": "gtk-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"agenix",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682203081,
|
"lastModified": 1700553346,
|
||||||
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
|
"narHash": "sha256-kW7uWsCv/lxuA824Ng6EYD9hlVYRyjuFn0xBbYltAeQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
|
"rev": "1aabb0a31b25ad83cfaa37c3fe29053417cd9a0f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
|
"ref": "master",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -431,15 +421,16 @@
|
||||||
"home-manager_2": {
|
"home-manager_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700118404,
|
"lastModified": 1691882297,
|
||||||
"narHash": "sha256-XkqpZpVoy1FV7UbiLkP+fQxxv/6KnwLYkFEHgE8z2IQ=",
|
"narHash": "sha256-e1/LAQSGLnBywfA1TfMl0Vj3tvYka73XOZ/D2/CJowE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c1a033122df8a3c74fda3780c83a104a7d60873c",
|
"rev": "c3ab5ea047e6dc73df530948f7367455749d8906",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -451,23 +442,21 @@
|
||||||
"hyprland": {
|
"hyprland": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs"
|
"systems": "systems_2",
|
||||||
],
|
|
||||||
"systems": "systems_3",
|
|
||||||
"wlroots": "wlroots",
|
"wlroots": "wlroots",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700168597,
|
"lastModified": 1700592218,
|
||||||
"narHash": "sha256-N+FsHxNTnSnqQW0e1SbMm3Vw59PZ7KTj+vR1hivSWCw=",
|
"narHash": "sha256-vHzDbBrZ5EsfVUMLgjuugf6OqB+iOLjKLO9O5n2occ4=",
|
||||||
"owner": "vaxerski",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "1d9bfa60a19975274afb5fd9a3492f8cb6742c2e",
|
"rev": "472926528428cd714c90f157e639fc0466611c8b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "vaxerski",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -515,16 +504,16 @@
|
||||||
},
|
},
|
||||||
"neovim-config": {
|
"neovim-config": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"pre-commit-hooks": "pre-commit-hooks_3"
|
"pre-commit-hooks": "pre-commit-hooks_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699682101,
|
"lastModified": 1700503498,
|
||||||
"narHash": "sha256-hl3MhlR2GZ4CIiiwkKhI75nN7edRYYQeo/XSyUjcyB8=",
|
"narHash": "sha256-93Lw2/JJaDCfG2TscRd3qLNLI1QWpVk+nA2CVniwRlo=",
|
||||||
"owner": "gwg313",
|
"owner": "gwg313",
|
||||||
"repo": "nvim-nix",
|
"repo": "nvim-nix",
|
||||||
"rev": "f5d17fcb2a367007e9e108a9dc8a5f393838ae33",
|
"rev": "157cf0b0150ea8095d559d9a6a6ca0e2962d476d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -557,25 +546,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-colors": {
|
|
||||||
"inputs": {
|
|
||||||
"base16-schemes": "base16-schemes",
|
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1695388192,
|
|
||||||
"narHash": "sha256-2jelpE7xK+4M7jZNyWL7QYOYegQLYBDQS5bvdo8XRUQ=",
|
|
||||||
"owner": "misterio77",
|
|
||||||
"repo": "nix-colors",
|
|
||||||
"rev": "37227f274b34a3b51649166deb94ce7fec2c6a4c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "misterio77",
|
|
||||||
"repo": "nix-colors",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-index-database": {
|
"nix-index-database": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -583,11 +553,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699760693,
|
"lastModified": 1700363379,
|
||||||
"narHash": "sha256-u/gkNUHQR/q23voqE5J4xmEWQIAqR+g3lUnCtzn0k7Y=",
|
"narHash": "sha256-fBEVPFwSZ6AmBE1s1oT7E9WVuqRghruxTnSQ8UUlMkw=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "8aff4ca3dee60d1422489fe8d52c2f837b3ad113",
|
"rev": "27920146e671a0d565aaa7452907383be14d8d82",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -598,11 +568,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677676435,
|
"lastModified": 1698134075,
|
||||||
"narHash": "sha256-6FxdcmQr5JeZqsQvfinIMr0XcTyTuR7EXX0H3ANShpQ=",
|
"narHash": "sha256-foCD+nuKzfh49bIoiCBur4+Fx1nozo+4C/6k8BYk4sg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a08d6979dd7c82c4cef0dcc6ac45ab16051c1169",
|
"rev": "8efd5d1e283604f75a808a20e6cde0ef313d07d4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -612,21 +582,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1694911725,
|
|
||||||
"narHash": "sha256-8YqI+YU1DGclEjHsnrrGfqsQg3Wyga1DfTbJrN3Ud0c=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"rev": "819180647f428a3826bfc917a54449da1e532ce0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-regression": {
|
"nixpkgs-regression": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1643052045,
|
"lastModified": 1643052045,
|
||||||
|
|
@ -691,54 +646,23 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1685801374,
|
|
||||||
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-23.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700108881,
|
"lastModified": 1700390070,
|
||||||
"narHash": "sha256-+Lqybl8kj0+nD/IlAWPPG/RDTa47gff9nbei0u7BntE=",
|
"narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "7414e9ee0b3e9903c24d3379f577a417f0aae5f1",
|
"rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1692264070,
|
|
||||||
"narHash": "sha256-WepAkIL2UcHOj7JJiaFS/vxrA9lklQHv8p+xGL+7oQ0=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "42c25608aa2ad4e5d3716d8d63c606063513ba33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699099776,
|
"lastModified": 1699099776,
|
||||||
"narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=",
|
"narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=",
|
||||||
|
|
@ -754,7 +678,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1698924604,
|
"lastModified": 1698924604,
|
||||||
"narHash": "sha256-GCFbkl2tj8fEZBZCw3Tc0AkGo0v+YrQlohhEGJ/X4s0=",
|
"narHash": "sha256-GCFbkl2tj8fEZBZCw3Tc0AkGo0v+YrQlohhEGJ/X4s0=",
|
||||||
|
|
@ -770,13 +694,13 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699963925,
|
"lastModified": 1700390070,
|
||||||
"narHash": "sha256-LE7OV/SwkIBsCpAlIPiFhch/J+jBDGEZjNfdnzCnCrY=",
|
"narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "bf744fe90419885eefced41b3e5ae442d732712d",
|
"rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -789,8 +713,8 @@
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"beautysh": "beautysh",
|
"beautysh": "beautysh",
|
||||||
"flake-utils": "flake-utils_3",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"pre-commit-hooks": "pre-commit-hooks_2"
|
"pre-commit-hooks": "pre-commit-hooks_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -867,7 +791,7 @@
|
||||||
"pre-commit-hooks_2": {
|
"pre-commit-hooks_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-utils": "flake-utils_4",
|
"flake-utils": "flake-utils_3",
|
||||||
"gitignore": "gitignore_2",
|
"gitignore": "gitignore_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"neovim-config",
|
"neovim-config",
|
||||||
|
|
@ -893,7 +817,7 @@
|
||||||
"pre-commit-hooks_3": {
|
"pre-commit-hooks_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_3",
|
"flake-compat": "flake-compat_3",
|
||||||
"flake-utils": "flake-utils_5",
|
"flake-utils": "flake-utils_4",
|
||||||
"gitignore": "gitignore_3",
|
"gitignore": "gitignore_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"neovim-config",
|
"neovim-config",
|
||||||
|
|
@ -915,45 +839,48 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pre-commit-hooks_4": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"devenv": "devenv",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"hyprland": "hyprland",
|
||||||
|
"neovim-config": "neovim-config",
|
||||||
|
"nix-index-database": "nix-index-database",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"stylix": "stylix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-alacritty": "base16-alacritty",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-foot": "base16-foot",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-kitty": "base16-kitty",
|
||||||
|
"base16-tmux": "base16-tmux",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
"flake-compat": "flake-compat_4",
|
"flake-compat": "flake-compat_4",
|
||||||
"flake-utils": "flake-utils_6",
|
"home-manager": "home-manager_2",
|
||||||
"gitignore": "gitignore_4",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"nixpkgs-stable": "nixpkgs-stable_4"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700064067,
|
"lastModified": 1700302760,
|
||||||
"narHash": "sha256-1ZWNDzhu8UlVCK7+DUN9dVQfiHX1bv6OQP9VxstY/gs=",
|
"narHash": "sha256-JpOJf9Nj260rTrVuYonP9CiGzj+43AGPOfhF72XkQvU=",
|
||||||
"owner": "cachix",
|
"owner": "danth",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "stylix",
|
||||||
"rev": "e558068cba67b23b4fbc5537173dbb43748a17e8",
|
"rev": "a15c3196c1d620c18cbee8229092598384a89fef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "cachix",
|
"owner": "danth",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "stylix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"agenix": "agenix",
|
|
||||||
"devenv": "devenv",
|
|
||||||
"gtk-nix": "gtk-nix",
|
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"hyprland": "hyprland",
|
|
||||||
"neovim-config": "neovim-config",
|
|
||||||
"nix-colors": "nix-colors",
|
|
||||||
"nix-index-database": "nix-index-database",
|
|
||||||
"nixpkgs": "nixpkgs_5",
|
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
|
||||||
"pre-commit-hooks": "pre-commit-hooks_4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
|
|
@ -970,21 +897,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_3": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347949,
|
"lastModified": 1689347949,
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
|
@ -999,6 +911,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems_4": {
|
"systems_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
|
|
@ -1029,36 +956,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_7": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils": {
|
"utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1678901627,
|
"lastModified": 1678901627,
|
||||||
|
|
|
||||||
123
flake.nix
123
flake.nix
|
|
@ -1,79 +1,114 @@
|
||||||
{
|
{
|
||||||
description = "My Nix Config";
|
description = "gwg313 Nix configs";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
# Nixpkgs
|
||||||
|
#nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
# You can access packages and modules from different nixpkgs revs
|
||||||
home-manager = {
|
# at the same time. Here's an working example:
|
||||||
url = "github:nix-community/home-manager";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
# Also see the 'unstable-packages' overlay at 'overlays/default.nix'.
|
||||||
|
|
||||||
|
# Home manager
|
||||||
|
home-manager.url = "github:nix-community/home-manager/master";
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:Mic92/nix-index-database";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland = {
|
hyprland = {
|
||||||
# Official Hyprland flake
|
url = "github:hyprwm/Hyprland";
|
||||||
url = "github:vaxerski/Hyprland"; # Add "hyprland.nixosModules.default" to the host modules
|
# Don't follow nixpkgs or cache will miss
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
devenv = {
|
devenv = {
|
||||||
url = "github:cachix/devenv/main";
|
url = "github:cachix/devenv/main";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
|
||||||
gtk-nix.url = "github:the-argus/gtk-nix";
|
|
||||||
|
|
||||||
nix-index-database.url = "github:Mic92/nix-index-database";
|
stylix = {
|
||||||
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:danth/stylix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
agenix.url = "github:ryantm/agenix";
|
};
|
||||||
|
|
||||||
neovim-config.url = "github:gwg313/nvim-nix";
|
neovim-config.url = "github:gwg313/nvim-nix";
|
||||||
|
|
||||||
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
|
|
||||||
pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
system = "x86_64-linux";
|
inherit (self) outputs;
|
||||||
user = "glen";
|
# Supported systems for your flake packages, shell, etc.
|
||||||
|
systems = [
|
||||||
pkgs = import nixpkgs {
|
"aarch64-linux"
|
||||||
inherit system;
|
"i686-linux"
|
||||||
config.allowUnfree = true;
|
"x86_64-linux"
|
||||||
};
|
"aarch64-darwin"
|
||||||
|
"x86_64-darwin"
|
||||||
lib = nixpkgs.lib;
|
];
|
||||||
|
# This is a function that generates an attribute by calling a function you
|
||||||
|
# pass to it, with each system as an argument
|
||||||
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
|
user = "gwg313";
|
||||||
in {
|
in {
|
||||||
|
# Your custom packages
|
||||||
|
# Accessible through 'nix build', 'nix shell', etc
|
||||||
|
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
||||||
|
# Formatter for your nix files, available through 'nix fmt'
|
||||||
|
# Other options beside 'alejandra' include 'nixpkgs-fmt'
|
||||||
|
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
||||||
|
|
||||||
# Your custom packages and modifications, exported as overlays
|
# Your custom packages and modifications, exported as overlays
|
||||||
overlays = import ./overlays {inherit inputs;};
|
overlays = import ./overlays {inherit inputs;};
|
||||||
|
# Reusable nixos modules you might want to export
|
||||||
|
# These are usually stuff you would upstream into nixpkgs
|
||||||
|
nixosModules = import ./modules/nixos;
|
||||||
|
# Reusable home-manager modules you might want to export
|
||||||
|
# These are usually stuff you would upstream into home-manager
|
||||||
|
homeManagerModules = import ./modules/home-manager;
|
||||||
|
|
||||||
nixosConfigurations = (
|
# NixOS configuration entrypoint
|
||||||
import ./hosts {
|
# Available through 'nixos-rebuild --flake .#your-hostname'
|
||||||
inherit (nixpkgs) lib;
|
nixosConfigurations = {
|
||||||
specialArgs = {inherit inputs;};
|
candlekeep = nixpkgs.lib.nixosSystem {
|
||||||
inherit inputs user system;
|
specialArgs = {inherit user inputs outputs;};
|
||||||
}
|
modules = [
|
||||||
);
|
# > Our main nixos configuration file <
|
||||||
|
./hosts/candlekeep/configuration.nix
|
||||||
devShells.${system} = {
|
|
||||||
default = pkgs.mkShell {
|
|
||||||
inherit (self.checks.${system}.pre-commit-check) shellHook;
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
alejandra
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
checks.${system} = {
|
# Standalone home-manager configuration entrypoint
|
||||||
pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
|
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||||
src = ./.;
|
homeConfigurations = {
|
||||||
hooks = {
|
"gwg313@candlekeep" = home-manager.lib.homeManagerConfiguration {
|
||||||
alejandra.enable = true;
|
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
|
||||||
};
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [
|
||||||
|
# > Our main home-manager configuration file <
|
||||||
|
./home-manager/machines/candlekeep.nix
|
||||||
|
inputs.stylix.homeManagerModules.stylix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
homeConfigurations = {
|
||||||
|
"gwg313@dorino" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
|
||||||
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [
|
||||||
|
# > Our main home-manager configuration file <
|
||||||
|
./home-manager/machines/dorino.nix
|
||||||
|
inputs.stylix.homeManagerModules.stylix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
111
home-manager/machines/candlekeep.nix
Normal file
111
home-manager/machines/candlekeep.nix
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
# This is your home-manager configuration file
|
||||||
|
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# You can import other home-manager modules here
|
||||||
|
imports = [
|
||||||
|
# If you want to use modules your own flake exports (from modules/home-manager):
|
||||||
|
# outputs.homeManagerModules.example
|
||||||
|
|
||||||
|
# Or modules exported from other flakes (such as nix-colors):
|
||||||
|
# inputs.nix-colors.homeManagerModules.default
|
||||||
|
|
||||||
|
# You can also split up your configuration and import pieces of it here:
|
||||||
|
# ./nvim.nix
|
||||||
|
../modules/common.nix
|
||||||
|
../modules/hyprland.nix
|
||||||
|
../modules/common-gui.nix
|
||||||
|
../modules/linux-gui.nix
|
||||||
|
../modules/devenv.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
# You can add overlays here
|
||||||
|
overlays = [
|
||||||
|
# Add overlays your own flake exports (from overlays and pkgs dir):
|
||||||
|
outputs.overlays.additions
|
||||||
|
outputs.overlays.modifications
|
||||||
|
outputs.overlays.unstable-packages
|
||||||
|
|
||||||
|
# You can also add overlays exported from other flakes:
|
||||||
|
# neovim-nightly-overlay.overlays.default
|
||||||
|
(final: prev: {
|
||||||
|
neovim = inputs.neovim-config.packages."x86_64-linux".default;
|
||||||
|
})
|
||||||
|
# Or define it inline, for example:
|
||||||
|
# (final: prev: {
|
||||||
|
# hi = final.hello.overrideAttrs (oldAttrs: {
|
||||||
|
# patches = [ ./change-hello-to-hi.patch ];
|
||||||
|
# });
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
# Configure your nixpkgs instance
|
||||||
|
config = {
|
||||||
|
# Disable if you don't want unfree packages
|
||||||
|
allowUnfree = true;
|
||||||
|
# Workaround for https://github.com/nix-community/home-manager/issues/2942
|
||||||
|
allowUnfreePredicate = _: true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = "gwg313";
|
||||||
|
homeDirectory = "/home/gwg313";
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-terminal-storm.yaml";
|
||||||
|
image = ./wallpaper.jpg;
|
||||||
|
autoEnable = true;
|
||||||
|
|
||||||
|
opacity.terminal = 1.0;
|
||||||
|
fonts.sizes.terminal = 15;
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
serif = {
|
||||||
|
package = pkgs.meslo-lgs-nf;
|
||||||
|
name = "MesloLGS NF";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.meslo-lgs-nf;
|
||||||
|
name = "MesloLGS NF";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.ibm-plex;
|
||||||
|
name = "IBM Plex Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add stuff for your user as you see fit:
|
||||||
|
# programs.neovim.enable = true;
|
||||||
|
# home.packages = with pkgs; [ steam ];
|
||||||
|
|
||||||
|
# Enable home-manager and git
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
programs.git.enable = true;
|
||||||
|
|
||||||
|
# Nicely reload system units when changing configs
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
107
home-manager/machines/dorino.nix
Normal file
107
home-manager/machines/dorino.nix
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
# This is your home-manager configuration file
|
||||||
|
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# You can import other home-manager modules here
|
||||||
|
imports = [
|
||||||
|
# If you want to use modules your own flake exports (from modules/home-manager):
|
||||||
|
# outputs.homeManagerModules.example
|
||||||
|
|
||||||
|
# Or modules exported from other flakes (such as nix-colors):
|
||||||
|
# inputs.nix-colors.homeManagerModules.default
|
||||||
|
|
||||||
|
# You can also split up your configuration and import pieces of it here:
|
||||||
|
# ./nvim.nix
|
||||||
|
../modules/common.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
# You can add overlays here
|
||||||
|
overlays = [
|
||||||
|
# Add overlays your own flake exports (from overlays and pkgs dir):
|
||||||
|
outputs.overlays.additions
|
||||||
|
outputs.overlays.modifications
|
||||||
|
outputs.overlays.unstable-packages
|
||||||
|
|
||||||
|
# You can also add overlays exported from other flakes:
|
||||||
|
# neovim-nightly-overlay.overlays.default
|
||||||
|
(final: prev: {
|
||||||
|
neovim = inputs.neovim-config.packages."x86_64-linux".default;
|
||||||
|
})
|
||||||
|
# Or define it inline, for example:
|
||||||
|
# (final: prev: {
|
||||||
|
# hi = final.hello.overrideAttrs (oldAttrs: {
|
||||||
|
# patches = [ ./change-hello-to-hi.patch ];
|
||||||
|
# });
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
# Configure your nixpkgs instance
|
||||||
|
config = {
|
||||||
|
# Disable if you don't want unfree packages
|
||||||
|
allowUnfree = true;
|
||||||
|
# Workaround for https://github.com/nix-community/home-manager/issues/2942
|
||||||
|
allowUnfreePredicate = _: true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = "gwg313";
|
||||||
|
homeDirectory = "/home/gwg313";
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-terminal-storm.yaml";
|
||||||
|
image = ./wallpaper.jpg;
|
||||||
|
autoEnable = true;
|
||||||
|
|
||||||
|
opacity.terminal = 1.0;
|
||||||
|
fonts.sizes.terminal = 15;
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
serif = {
|
||||||
|
package = pkgs.meslo-lgs-nf;
|
||||||
|
name = "MesloLGS NF";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.meslo-lgs-nf;
|
||||||
|
name = "MesloLGS NF";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.ibm-plex;
|
||||||
|
name = "IBM Plex Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = {
|
||||||
|
package = pkgs.noto-fonts-emoji;
|
||||||
|
name = "Noto Color Emoji";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add stuff for your user as you see fit:
|
||||||
|
# programs.neovim.enable = true;
|
||||||
|
# home.packages = with pkgs; [ steam ];
|
||||||
|
|
||||||
|
# Enable home-manager and git
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
programs.git.enable = true;
|
||||||
|
|
||||||
|
# Nicely reload system units when changing configs
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
BIN
home-manager/machines/wallpaper.jpg
Normal file
BIN
home-manager/machines/wallpaper.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 MiB |
9
home-manager/modules/alacritty.nix
Normal file
9
home-manager/modules/alacritty.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# A fast, GPU-accelerated terminal emulator.
|
||||||
|
{...}: {
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
env = {TERM = "xterm-256color";};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
home-manager/modules/ansible.nix
Normal file
12
home-manager/modules/ansible.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ansible
|
||||||
|
ansible-later
|
||||||
|
ansible-doctor
|
||||||
|
];
|
||||||
|
}
|
||||||
9
home-manager/modules/atuin.nix
Normal file
9
home-manager/modules/atuin.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# ✨ Magical shell history
|
||||||
|
{...}: {
|
||||||
|
programs.atuin = {
|
||||||
|
enable = true;
|
||||||
|
flags = [
|
||||||
|
"--disable-up-arrow"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
6
home-manager/modules/bat.nix
Normal file
6
home-manager/modules/bat.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# A cat clone with syntax highlighting and Git integration.
|
||||||
|
{...}: {
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
7
home-manager/modules/broot.nix
Normal file
7
home-manager/modules/broot.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# An interactive treeview directory navigator
|
||||||
|
{...}: {
|
||||||
|
programs.broot = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
20
home-manager/modules/common-gui.nix
Normal file
20
home-manager/modules/common-gui.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./alacritty.nix
|
||||||
|
./fuzzel.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
# Bluetooth power alerts
|
||||||
|
services.poweralertd.enable = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# fonts
|
||||||
|
rPackages.fontawesome
|
||||||
|
nerdfonts
|
||||||
|
ubuntu_font_family
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
yt-dlp
|
||||||
|
];
|
||||||
|
}
|
||||||
93
home-manager/modules/common.nix
Normal file
93
home-manager/modules/common.nix
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./git.nix
|
||||||
|
./tmux/tmux.nix
|
||||||
|
./zsh.nix
|
||||||
|
./starship.nix
|
||||||
|
./atuin.nix
|
||||||
|
./bat.nix
|
||||||
|
./broot.nix
|
||||||
|
./eza.nix
|
||||||
|
];
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs;
|
||||||
|
[
|
||||||
|
# Editors
|
||||||
|
vim # Highly configurable text editor popular for efficiency and extensibility.
|
||||||
|
neovim # Improved version of vim, often used with overlays.
|
||||||
|
|
||||||
|
# Builtin Replacements
|
||||||
|
htop # Modern and interactive process viewer, an improved alternative to 'top.'
|
||||||
|
bottom # Similar to 'htop,' providing a top-like interface with additional features.
|
||||||
|
colordiff # Tool to colorize 'diff' output, making differences between files easier to spot.
|
||||||
|
du-dust # Modern replacement for 'du,' offering intuitive and visually appealing disk usage analysis.
|
||||||
|
eza # Modern replacement for 'ls' with additional features and a user-friendly interface.
|
||||||
|
fd # Faster and user-friendly alternative to 'find' for searching and locating files.
|
||||||
|
ripgrep # Faster alternative to 'grep,' recursively searching directories for a regex pattern.
|
||||||
|
thefuck # Handy tool that corrects mistyped console commands.
|
||||||
|
zoxide # Faster alternative to 'cd' for quick and efficient navigation.
|
||||||
|
fzf # Fuzzy finder for rapid file and directory searches.
|
||||||
|
tealdeer # Command-line utility providing simplified and community-driven man pages.
|
||||||
|
viddy # A modern watch command. Time machine and pager etc.
|
||||||
|
moar # A syntax highlighting pager
|
||||||
|
|
||||||
|
# Multiplexers
|
||||||
|
tmate # Terminal multiplexer allowing multiple users to access a single session.
|
||||||
|
|
||||||
|
# Misc Tools
|
||||||
|
tree # Displays directory structure in a tree-like format.
|
||||||
|
p7zip # Command-line tool for handling 7z compressed files.
|
||||||
|
yt-dlp # Fork of youtube-dl, facilitating video downloads from various sites.
|
||||||
|
mkvtoolnix # Set of tools to create, alter, and inspect Matroska files (MKV).
|
||||||
|
hyperfine # Command-line benchmarking tool.
|
||||||
|
unzip # Command-line tool for extracting files from ZIP archives.
|
||||||
|
|
||||||
|
# TUI Apps
|
||||||
|
#ncdu_2
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
gping # Ping with TUI for a visual representation of network connectivity.
|
||||||
|
iperf # Tool for measuring maximum TCP and UDP bandwidth performance.
|
||||||
|
nmap # Network scanning tool for discovering hosts and services.
|
||||||
|
wget # Command-line utility for downloading files from the web.
|
||||||
|
speedtest-cli # Command-line interface for testing internet bandwidth.
|
||||||
|
rsync # Fast and versatile file copying and synchronization tool.
|
||||||
|
dig # A command-line tool for querying DNS name servers, providing detailed information about domain names, IP addresses, and DNS records.
|
||||||
|
|
||||||
|
picocom # Minimal terminal emulator for microcontrollers.
|
||||||
|
|
||||||
|
# Docs
|
||||||
|
pandoc # Document converter transforming files between markup formats.
|
||||||
|
gnumake # GNU make tool, a build automation tool for compiling projects.
|
||||||
|
|
||||||
|
# Useful Utils
|
||||||
|
grex # Tool generating regular expressions from user-provided test cases.
|
||||||
|
git-cliff # Tool for visualizing project commit history and generating release notes.
|
||||||
|
|
||||||
|
# Nix Tools
|
||||||
|
nix-prefetch-github # Tool for fetching the latest version and hash of a GitHub repository.
|
||||||
|
direnv # Environment switcher for the shell.
|
||||||
|
nix-direnv # Integration of direnv with the Nix package manager.
|
||||||
|
alejandra # Nix code formatter.
|
||||||
|
nix-init # Simplifies the process of creating Nix projects.
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.isDarwin [
|
||||||
|
coreutils # Essential GNU core utilities, including `dd` with the `--status=progress` option for more informative progress reporting.
|
||||||
|
wifi-password # Command-line tool to quickly retrieve the current Wi-Fi password, simplifying access to network credentials.
|
||||||
|
time # GNU time command, providing more detailed and accurate information about the resource usage of a command or process.
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.isLinux [
|
||||||
|
iputils # Package providing essential network utilities such as `ping` and `ifconfig` for network diagnostics and configuration.
|
||||||
|
libuuid # Library for generating universally unique identifiers (UUIDs), with the `uuidgen` utility included. (Note: Already pre-installed on macOS.)
|
||||||
|
iotop # Disk I/O monitoring tool that provides a top-like interface to showcase real-time disk activity and identify performance bottlenecks.
|
||||||
|
iftop # Network monitoring tool that displays a real-time, interactive view of network bandwidth usage by different connections.
|
||||||
|
bmon # Bandwidth monitoring tool that visually represents network usage with a simple and easy-to-read interface.
|
||||||
|
bandwhich # Network bandwidth monitor that identifies and displays bandwidth usage per process, helping to pinpoint data-hungry applications.
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -2,8 +2,6 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
user,
|
|
||||||
devenv,
|
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
|
|
@ -14,6 +12,4 @@
|
||||||
|
|
||||||
programs.direnv.enable = true;
|
programs.direnv.enable = true;
|
||||||
programs.direnv.nix-direnv.enable = true;
|
programs.direnv.nix-direnv.enable = true;
|
||||||
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
}
|
}
|
||||||
45
home-manager/modules/discord/default.nix
Normal file
45
home-manager/modules/discord/default.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.programs.discord;
|
||||||
|
|
||||||
|
discordPatcherBin = pkgs.writers.writePython3Bin "discord-krisp-patcher" {
|
||||||
|
libraries = with pkgs.python3Packages; [pyelftools capstone];
|
||||||
|
flakeIgnore = [
|
||||||
|
"E265" # from nix-shell shebang
|
||||||
|
"E501" # line too long (82 > 79 characters)
|
||||||
|
"F403" # 'from module import *' used; unable to detect undefined names
|
||||||
|
"F405" # name may be undefined, or defined from star imports: module
|
||||||
|
];
|
||||||
|
} (builtins.readFile ./krisp-patcher.py);
|
||||||
|
|
||||||
|
wrapDiscordBinary = pkgs.writeShellScriptBin "discord" ''
|
||||||
|
${pkgs.findutils}/bin/find -L $HOME/.config/discord -name 'discord_krisp.node' -exec ${discordPatcherBin}/bin/discord-krisp-patcher {} +
|
||||||
|
${pkgs.discord}/bin/discord "$@"
|
||||||
|
'';
|
||||||
|
|
||||||
|
discord = pkgs.discord.override {
|
||||||
|
# Performance mod
|
||||||
|
withOpenASAR = true;
|
||||||
|
# link fix
|
||||||
|
nss = pkgs.nss_latest;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options.programs.discord = {
|
||||||
|
enable = lib.mkEnableOption "Discord";
|
||||||
|
wrapDiscord = lib.mkEnableOption "wrap the Discord binary with a patching each time";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages =
|
||||||
|
[discordPatcherBin]
|
||||||
|
++ (
|
||||||
|
if cfg.wrapDiscord
|
||||||
|
then [wrapDiscordBinary]
|
||||||
|
else [pkgs.discord]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
83
home-manager/modules/discord/krisp-patcher.py
Normal file
83
home-manager/modules/discord/krisp-patcher.py
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
import sys
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
from elftools.elf.elffile import ELFFile
|
||||||
|
from capstone import *
|
||||||
|
from capstone.x86 import *
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(f"Usage: {sys.argv[0]} [path to discord_krisp.node]")
|
||||||
|
# "Unix programs generally use 2 for command line syntax errors and 1 for all other kind of errors."
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
executable = sys.argv[1]
|
||||||
|
|
||||||
|
elf = ELFFile(open(executable, "rb"))
|
||||||
|
symtab = elf.get_section_by_name('.symtab')
|
||||||
|
|
||||||
|
krisp_initialize_address = symtab.get_symbol_by_name("_ZN7discord15KrispInitializeEv")[0].entry.st_value
|
||||||
|
isSignedByDiscord_address = symtab.get_symbol_by_name("_ZN7discord4util17IsSignedByDiscordERKNSt2Cr12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE")[0].entry.st_value
|
||||||
|
|
||||||
|
text = elf.get_section_by_name('.text')
|
||||||
|
text_start = text['sh_addr']
|
||||||
|
text_start_file = text['sh_offset']
|
||||||
|
# This seems to always be zero (.text starts at the right offset in the file). Do it just in case?
|
||||||
|
address_to_file = text_start_file - text_start
|
||||||
|
|
||||||
|
# Done with the ELF now.
|
||||||
|
# elf.close()
|
||||||
|
|
||||||
|
krisp_initialize_offset = krisp_initialize_address - address_to_file
|
||||||
|
isSignedByDiscord_offset = krisp_initialize_address - address_to_file
|
||||||
|
|
||||||
|
f = open(executable, "rb")
|
||||||
|
f.seek(krisp_initialize_offset)
|
||||||
|
krisp_initialize = f.read(64)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
# States
|
||||||
|
found_issigned_by_discord_call = False
|
||||||
|
found_issigned_by_discord_test = False
|
||||||
|
found_issigned_by_discord_je = False
|
||||||
|
found_already_patched = False
|
||||||
|
je_location = None
|
||||||
|
|
||||||
|
# We are looking for a call to IsSignedByDiscord, followed by a test, followed by a je.
|
||||||
|
# Then we patch the je into a two byte nop.
|
||||||
|
|
||||||
|
md = Cs(CS_ARCH_X86, CS_MODE_64)
|
||||||
|
md.detail = True
|
||||||
|
for i in md.disasm(krisp_initialize, krisp_initialize_address):
|
||||||
|
if i.id == X86_INS_CALL:
|
||||||
|
if i.operands[0].type == X86_OP_IMM:
|
||||||
|
if i.operands[0].imm == isSignedByDiscord_address:
|
||||||
|
found_issigned_by_discord_call = True
|
||||||
|
|
||||||
|
if i.id == X86_INS_TEST:
|
||||||
|
if found_issigned_by_discord_call:
|
||||||
|
found_issigned_by_discord_test = True
|
||||||
|
|
||||||
|
if i.id == X86_INS_JE:
|
||||||
|
if found_issigned_by_discord_test:
|
||||||
|
found_issigned_by_discord_je = True
|
||||||
|
je_location = i.address
|
||||||
|
break
|
||||||
|
|
||||||
|
if i.id == X86_INS_NOP:
|
||||||
|
if found_issigned_by_discord_test:
|
||||||
|
found_already_patched = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if je_location:
|
||||||
|
print(f"Found patch location: 0x{je_location:x}")
|
||||||
|
|
||||||
|
shutil.copyfile(executable, executable + ".orig")
|
||||||
|
f = open(executable, 'rb+')
|
||||||
|
f.seek(je_location - address_to_file)
|
||||||
|
f.write(b'\x66\x90') # Two byte NOP
|
||||||
|
f.close()
|
||||||
|
else:
|
||||||
|
if found_already_patched:
|
||||||
|
print("Couldn't find patch location - already patched.")
|
||||||
|
else:
|
||||||
|
print("Couldn't find patch location - review manually. Sorry.")
|
||||||
9
home-manager/modules/eza.nix
Normal file
9
home-manager/modules/eza.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# A modern replacement for 'ls'.
|
||||||
|
{...}: {
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableAliases = true;
|
||||||
|
git = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
6
home-manager/modules/fuzzel.nix
Normal file
6
home-manager/modules/fuzzel.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Application launcher for wlroots based Wayland compositors, similar to rofi's `drun` mode.
|
||||||
|
{...}: {
|
||||||
|
programs.fuzzel = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
231
home-manager/modules/hyprland.nix
Normal file
231
home-manager/modules/hyprland.nix
Normal file
|
|
@ -0,0 +1,231 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./waybar.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services.mako = {
|
||||||
|
enable = true;
|
||||||
|
defaultTimeout = 4000;
|
||||||
|
borderRadius = 5;
|
||||||
|
borderSize = 2;
|
||||||
|
layer = "overlay";
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
xwayland.force_zero_scaling = true;
|
||||||
|
|
||||||
|
input = {
|
||||||
|
sensitivity = 0.4;
|
||||||
|
# todo custom
|
||||||
|
accel_profile = "adaptive";
|
||||||
|
# accel_profile = "custom 20000 0.755 0.05 0.855 0.06";
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = true;
|
||||||
|
scroll_factor = 0.38;
|
||||||
|
tap-and-drag = true;
|
||||||
|
middle_button_emulation = true;
|
||||||
|
tap-to-click = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
device.at-translated-set-2-keyboard = {
|
||||||
|
kb_layout = "us";
|
||||||
|
kb_options = "caps:ctrl_modifier";
|
||||||
|
numlock_by_default = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 16;
|
||||||
|
resize_on_border = true;
|
||||||
|
hover_icon_on_border = false;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
master = {
|
||||||
|
new_is_master = false;
|
||||||
|
smart_resizing = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
force_split = 2;
|
||||||
|
preserve_split = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 5;
|
||||||
|
active_opacity = 0.93;
|
||||||
|
inactive_opacity = 0.93;
|
||||||
|
fullscreen_opacity = 1;
|
||||||
|
drop_shadow = false;
|
||||||
|
};
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
bezier = [
|
||||||
|
"myBezier, 0.22, 1, 0.36, 1"
|
||||||
|
"snap, 0, 1, 0, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 7, myBezier"
|
||||||
|
"windowsOut, 1, 3, default, popin 60%"
|
||||||
|
"border, 1, 0.5, snap"
|
||||||
|
"borderangle, 1, 0.5, snap"
|
||||||
|
"fade, 1, 0.001, myBezier"
|
||||||
|
"workspaces, 1, 0.8, myBezier, fade"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = true;
|
||||||
|
workspace_swipe_fingers = 3;
|
||||||
|
workspace_swipe_cancel_ratio = 0.6;
|
||||||
|
workspace_swipe_min_speed_to_force = 30;
|
||||||
|
workspace_swipe_distance = 2000;
|
||||||
|
workspace_swipe_invert = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
force_default_wallpaper = 0;
|
||||||
|
mouse_move_enables_dpms = true;
|
||||||
|
key_press_enables_dpms = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
# general binds
|
||||||
|
"$mod, RETURN, exec, ${pkgs.alacritty}/bin/alacritty"
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
"SUPER_SHIFT, Q, exec, ${pkgs.wlogout}/bin/wlogout"
|
||||||
|
"$mod, SPACE, exec, pkill fuzzel || ${pkgs.fuzzel}/bin/fuzzel" # pkill or allows for toggle
|
||||||
|
"SUPER_SHIFT, SPACE, togglefloating"
|
||||||
|
"$mod, F, fullscreen"
|
||||||
|
"$mod, L, exec, ${pkgs.swaylock-effects}/bin/swaylock -f"
|
||||||
|
"$mod, B, exec, ${pkgs.grim}/bin/grim \"desktop-$(${pkgs.busybox}/bin/date +\"%Y%m%d%H%m\").png"
|
||||||
|
"SUPER_SHIFT, B, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy" # Screenshot selection directly to clipboard
|
||||||
|
|
||||||
|
# Volume
|
||||||
|
",XF86AudioRaiseVolume, exec, ${pkgs.ponymix}/bin/ponymix inc 2"
|
||||||
|
",XF86AudioLowerVolume, exec, ${pkgs.ponymix}/bin/ponymix dec 2"
|
||||||
|
",XF86AudioMute, exec, ${pkgs.ponymix}/bin/ponymix, toggle"
|
||||||
|
|
||||||
|
# Screen Brightness
|
||||||
|
",XF86MonBrightnessUp, exec, ${pkgs.light}/bin/light -A 10"
|
||||||
|
",XF86MonBrightnessDown, exec, ${pkgs.light}/bin/light -U 10"
|
||||||
|
|
||||||
|
# move focus
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
"$mod,right,workspace,+1"
|
||||||
|
"$mod,left,workspace,-1"
|
||||||
|
|
||||||
|
# workspace switching
|
||||||
|
"$mod, 1, workspace, 1"
|
||||||
|
"$mod, 2, workspace, 2"
|
||||||
|
"$mod, 3, workspace, 3"
|
||||||
|
"$mod, 4, workspace, 4"
|
||||||
|
"$mod, 5, workspace, 5"
|
||||||
|
"$mod, 6, workspace, 6"
|
||||||
|
"$mod, 7, workspace, 7"
|
||||||
|
"$mod, 8, workspace, 8"
|
||||||
|
"$mod, 9, workspace, 9"
|
||||||
|
"$mod, 0, workspace, 10"
|
||||||
|
|
||||||
|
# move window to workspace
|
||||||
|
"$mod SHIFT, 1, movetoworkspace, 1"
|
||||||
|
"$mod SHIFT, 2, movetoworkspace, 2"
|
||||||
|
"$mod SHIFT, 3, movetoworkspace, 3"
|
||||||
|
"$mod SHIFT, 4, movetoworkspace, 4"
|
||||||
|
"$mod SHIFT, 5, movetoworkspace, 5"
|
||||||
|
"$mod SHIFT, 6, movetoworkspace, 6"
|
||||||
|
"$mod SHIFT, 7, movetoworkspace, 7"
|
||||||
|
"$mod SHIFT, 8, movetoworkspace, 8"
|
||||||
|
"$mod SHIFT, 9, movetoworkspace, 9"
|
||||||
|
"$mod SHIFT, 0, movetoworkspace, 10"
|
||||||
|
|
||||||
|
# Scroll through workspaces
|
||||||
|
"$mod, mouse_down, workspace, e+1"
|
||||||
|
"$mod, mouse_up, workspace, e-1"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
# mouse movements
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod_ALT, mouse:273, resizewindow"
|
||||||
|
"$mod_ALT, mouse:272, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
monitor = [",preferred,auto,1"];
|
||||||
|
exec = [
|
||||||
|
"${pkgs.swaybg}/bin/swaybg -i ${config.stylix.image} -m fill"
|
||||||
|
];
|
||||||
|
exec-once = [
|
||||||
|
# Enables clipboard sync
|
||||||
|
"${pkgs.wl-clipboard}/bin/wl-paste -p | ${pkgs.wl-clipboard}/bin/wl-copy"
|
||||||
|
"${pkgs.wl-clipboard}/bin/wl-paste | ${pkgs.wl-clipboard}/bin/wl-copy -p"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.extraConfig = ''
|
||||||
|
# will switch to a submap called resize
|
||||||
|
bind=$mod,R,submap,resize
|
||||||
|
|
||||||
|
# will start a submap called "resize"
|
||||||
|
submap=resize
|
||||||
|
|
||||||
|
# sets repeatable binds for resizing the active window
|
||||||
|
binde=,right,resizeactive,10 0
|
||||||
|
binde=,left,resizeactive,-10 0
|
||||||
|
binde=,up,resizeactive,0 -10
|
||||||
|
binde=,down,resizeactive,0 10
|
||||||
|
|
||||||
|
# use reset to go back to the global submap
|
||||||
|
bind=,escape,submap,reset
|
||||||
|
|
||||||
|
# will reset the submap, meaning end the current one and return to the global one
|
||||||
|
submap=reset
|
||||||
|
'';
|
||||||
|
services.swayidle = {
|
||||||
|
enable = true;
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = "${pkgs.swaylock}/bin/swaylock -f";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = "lock";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 300;
|
||||||
|
command = "${pkgs.swaylock}/bin/swaylock -f";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
systemdTarget = "xdg-desktop-portal-hyprland.service";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.swaylock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
font-size = "24";
|
||||||
|
indicator-idle-visible = false;
|
||||||
|
indicator-radius = 100;
|
||||||
|
indicator-thickness = 20;
|
||||||
|
show-failed-attempts = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
home-manager/modules/k9s.nix
Normal file
6
home-manager/modules/k9s.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# A terminal-based Kubernetes CLI.
|
||||||
|
{...}: {
|
||||||
|
programs.k9s = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
6
home-manager/modules/lazygit.nix
Normal file
6
home-manager/modules/lazygit.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# A terminal-based Git interface.
|
||||||
|
{...}: {
|
||||||
|
programs.lazygit = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
24
home-manager/modules/linux-gui.nix
Normal file
24
home-manager/modules/linux-gui.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./discord
|
||||||
|
./zathura.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.discord = {
|
||||||
|
enable = true;
|
||||||
|
wrapDiscord = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
betterdiscordctl # A utility for managing BetterDiscord, enhancing features and customization in the Discord desktop client.
|
||||||
|
gimp # GNU Image Manipulation Program, a powerful and open-source raster graphics editor for tasks like photo editing and graphic design.
|
||||||
|
gparted # Gnome Partition Editor, a graphical partition manager for creating, resizing, and managing disk partitions.
|
||||||
|
kodi # An open-source media center, providing a versatile platform for streaming and organizing media content.
|
||||||
|
pavucontrol # PulseAudio Volume Control, a feature-rich GUI for controlling and configuring the PulseAudio sound system.
|
||||||
|
schildichat-desktop-wayland # A desktop client for SchildiChat, designed to work with the Wayland display server.
|
||||||
|
sublime-music # A modern and feature-rich music player with a clean user interface and advanced playback options.
|
||||||
|
thunderbird # Mozilla Thunderbird, a powerful and customizable email client with integrated calendaring and chat features.
|
||||||
|
kicad # An open-source electronic design automation (EDA) suite for creating schematics, PCB layouts, and 3D models.
|
||||||
|
wireshark # Open-source network protocol analyzer for real-time packet inspection and analysis.
|
||||||
|
];
|
||||||
|
}
|
||||||
17
home-manager/modules/starship.nix
Normal file
17
home-manager/modules/starship.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# A customizable prompt for shells.
|
||||||
|
{...}: {
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
character = {
|
||||||
|
success_symbol = "➜";
|
||||||
|
error_symbol = "➜";
|
||||||
|
};
|
||||||
|
aws = {
|
||||||
|
disabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -49,7 +49,7 @@ create_detached_session() {
|
||||||
else
|
else
|
||||||
(TMUX=''
|
(TMUX=''
|
||||||
tmux new-session -Ad -s "$session_name" -c "$path_name"
|
tmux new-session -Ad -s "$session_name" -c "$path_name"
|
||||||
tmux split-window -vb -t "$session_name" -c "$path_name" -p 70
|
# tmux split-window -vb -t "$session_name" -c "$path_name" -p 70
|
||||||
tmux send-keys -t "$session_name" "nvim '+Telescope find_files'" Enter
|
tmux send-keys -t "$session_name" "nvim '+Telescope find_files'" Enter
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
166
home-manager/modules/tmux/tmux.nix
Normal file
166
home-manager/modules/tmux/tmux.nix
Normal file
|
|
@ -0,0 +1,166 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
stylix.targets.tmux.enable = false;
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
clock24 = true;
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
sensible
|
||||||
|
yank
|
||||||
|
resurrect
|
||||||
|
continuum
|
||||||
|
vim-tmux-navigator
|
||||||
|
tmux-thumbs
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
bind -n M-r source-file ~/.config/tmux/tmux.conf
|
||||||
|
|
||||||
|
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set -g detach-on-destroy off # don't exit from tmux when closing a session
|
||||||
|
|
||||||
|
# New Theme
|
||||||
|
set -g status-interval 3 # update the status bar every 3 seconds
|
||||||
|
set -g status-left "#[fg=blue,bold,bg=#${config.lib.stylix.colors.base00}]#S "
|
||||||
|
set -g status-right "#[fg=#${config.lib.stylix.colors.base07},bold,bg=#${config.lib.stylix.colors.base00}]%a %Y-%m-%d %l:%M %p"
|
||||||
|
set -ga status-right "#($HOME/.config/tmux/scripts/cal.sh)"
|
||||||
|
set -g status-justify left
|
||||||
|
set -g status-left-length 200 # increase length (from 10)
|
||||||
|
set -g status-right-length 200 # increase length (from 10)
|
||||||
|
set -g status-position top # macOS / darwin style
|
||||||
|
set -g status-style 'bg=#${config.lib.stylix.colors.base00}' # transparent
|
||||||
|
set -g window-status-current-format '#[fg=magenta,bg=#${config.lib.stylix.colors.base00}]#I #W#{?window_zoomed_flag,(),} '
|
||||||
|
set -g window-status-format '#[fg=gray,bg=#${config.lib.stylix.colors.base00}] #I #W'
|
||||||
|
set -g window-status-last-style 'fg=white,bg=black'
|
||||||
|
set -g message-command-style bg=default,fg=yellow
|
||||||
|
set -g message-style bg=default,fg=yellow
|
||||||
|
set -g mode-style bg=default,fg=yellow
|
||||||
|
set -g pane-active-border-style 'fg=magenta,bg=default'
|
||||||
|
set -g pane-border-style 'fg=brightblack,bg=default'
|
||||||
|
set -g @tmux-last-prompt-pattern ' '
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set -g mouse on
|
||||||
|
|
||||||
|
set-option -g status-position top
|
||||||
|
|
||||||
|
bind-key g display-popup -h 95% -w 95% -E 'lazygit'
|
||||||
|
bind-key t display-popup -h 95% -w 95% -E "${pkgs.htop}/bin/htop"
|
||||||
|
|
||||||
|
bind C-g display-popup -E "tat ~/gallery"
|
||||||
|
|
||||||
|
bind -n M-g display-popup -E "tmux new-session -A -s scratch"
|
||||||
|
|
||||||
|
bind -n M-b switch-client -l
|
||||||
|
bind -n M-p previous-window # for ansi
|
||||||
|
bind -n M-n next-window # for ansi
|
||||||
|
bind -n M-P switch-client -p
|
||||||
|
bind -n M-N switch-client -n
|
||||||
|
|
||||||
|
unbind f
|
||||||
|
bind f resize-pane -Z
|
||||||
|
|
||||||
|
# create session
|
||||||
|
bind C-c new-session
|
||||||
|
|
||||||
|
# split current window horizontally
|
||||||
|
bind - split-window -v
|
||||||
|
# split current window vertically
|
||||||
|
bind _ split-window -h
|
||||||
|
|
||||||
|
# Select Layouts
|
||||||
|
#―――――――――――――――――
|
||||||
|
bind -n M-a select-layout main-vertical
|
||||||
|
bind -n M-A select-layout main-horizontal
|
||||||
|
bind -n M-E select-layout even-vertical
|
||||||
|
bind -n M-V select-layout even-horizontal
|
||||||
|
|
||||||
|
# pane navigation
|
||||||
|
bind -r h select-pane -L # move left
|
||||||
|
bind -r j select-pane -D # move down
|
||||||
|
bind -r k select-pane -U # move up
|
||||||
|
bind -r l select-pane -R # move right
|
||||||
|
bind > swap-pane -D # swap current pane with the next one
|
||||||
|
bind < swap-pane -U # swap current pane with the previous one
|
||||||
|
|
||||||
|
# pane resizing
|
||||||
|
bind -r H resize-pane -L 2
|
||||||
|
bind -r J resize-pane -D 2
|
||||||
|
bind -r K resize-pane -U 2
|
||||||
|
bind -r L resize-pane -R 2
|
||||||
|
bind -r c-f resize-pane -Z
|
||||||
|
|
||||||
|
# window navigation
|
||||||
|
# unbind n
|
||||||
|
# unbind p
|
||||||
|
|
||||||
|
setw -g mode-keys vi
|
||||||
|
|
||||||
|
bind Enter copy-mode # enter copy mode
|
||||||
|
|
||||||
|
bind -T copy-mode-vi v send -X begin-selection
|
||||||
|
bind -T copy-mode-vi C-v send -X rectangle-toggle
|
||||||
|
bind -T copy-mode-vi y send -X copy-selection-and-cancel
|
||||||
|
bind -T copy-mode-vi Escape send -X cancel
|
||||||
|
bind -T copy-mode-vi H send -X start-of-line
|
||||||
|
bind -T copy-mode-vi L send -X end-of-line
|
||||||
|
|
||||||
|
# -- buffers -------------------------------------------------------------------
|
||||||
|
|
||||||
|
bind b list-buffers # list paste buffers
|
||||||
|
#bind p paste-buffer -p # paste from the top paste buffer
|
||||||
|
bind P choose-buffer # choose which buffer to paste from
|
||||||
|
|
||||||
|
# -- display -------------------------------------------------------------------
|
||||||
|
|
||||||
|
set -g renumber-windows on # renumber windows when a window is closed
|
||||||
|
|
||||||
|
bind k display-popup -E "\
|
||||||
|
tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
|
||||||
|
fzf --reverse -m --header=kill-session |\
|
||||||
|
xargs -I {} tmux kill-session -t {}"
|
||||||
|
|
||||||
|
bind C-j display-popup -E "\
|
||||||
|
tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
|
||||||
|
sed '/^$/d' |\
|
||||||
|
fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\
|
||||||
|
xargs tmux switch-client -t"
|
||||||
|
|
||||||
|
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.tmate = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
# Open tmux for current project.
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "tat";
|
||||||
|
runtimeInputs = [pkgs.tmux pkgs.fzf];
|
||||||
|
text = builtins.readFile ./ta.sh;
|
||||||
|
})
|
||||||
|
pkgs.fzf
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
shellAliases = {
|
||||||
|
tx = "tmux new -s default";
|
||||||
|
ta = "tmux attach -t";
|
||||||
|
tad = "tmux attach -d -t";
|
||||||
|
ts = "tmux new-session -s";
|
||||||
|
tl = "tmux list-sessions";
|
||||||
|
tksv = "tmux kill-server";
|
||||||
|
tkss = "tmux kill-session -t";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
107
home-manager/modules/waybar.nix
Normal file
107
home-manager/modules/waybar.nix
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
# A highly customizable status bar for Sway and other Wayland-based compositors.
|
||||||
|
{pkgs, ...}: let
|
||||||
|
networkInterface.eth = "wlp3s0";
|
||||||
|
hwmon = "/sys/class/hwmon/hwmon0/temp1_input";
|
||||||
|
in {
|
||||||
|
programs.waybar.enable = true;
|
||||||
|
|
||||||
|
programs.waybar.settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "bottom";
|
||||||
|
position = "top";
|
||||||
|
height = 24;
|
||||||
|
modules-left = ["hyprland/workspaces" "sway/mode" "wlr/taskbar"];
|
||||||
|
modules-center = ["hyprland/window" "gamemode"];
|
||||||
|
modules-right = ["network" "pulseaudio" "cpu" "custom/cpu_freq" "temperature" "memory" "battery" "tray" "clock"];
|
||||||
|
|
||||||
|
"hyprland/workspaces".sort-by-number = true;
|
||||||
|
|
||||||
|
"tray"."spacing" = 2;
|
||||||
|
|
||||||
|
"sway/mode" = {
|
||||||
|
format = "<span style=\"italic\">{}</span>";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock" = {
|
||||||
|
format = " {:%a %b %d %R}";
|
||||||
|
};
|
||||||
|
|
||||||
|
"cpu" = {
|
||||||
|
"interval" = 2;
|
||||||
|
"format" = "{usage}% ";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/cpu_freq" = {
|
||||||
|
format = "{}MHz ";
|
||||||
|
interval = 5;
|
||||||
|
exec =
|
||||||
|
pkgs.writeShellScript "cpuFreq"
|
||||||
|
''
|
||||||
|
${pkgs.busybox}/bin/cat /proc/cpuinfo | \
|
||||||
|
${pkgs.busybox}/bin/grep MHz | \
|
||||||
|
${pkgs.busybox}/bin/cut -c 12-15 | \
|
||||||
|
${pkgs.busybox}/bin/tr '\n' ' ' | \
|
||||||
|
${pkgs.busybox}/bin/awk '{s+=$1}END{print "",s/NR}' RS=" " | \
|
||||||
|
${pkgs.busybox}/bin/cut -c 2-5
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
"battery" = {
|
||||||
|
"bat" = "BAT0";
|
||||||
|
"states" = {
|
||||||
|
"good" = 95;
|
||||||
|
"warning" = 30;
|
||||||
|
"critical" = 15;
|
||||||
|
};
|
||||||
|
"format" = "{capacity}% {icon} ";
|
||||||
|
"format-full" = "";
|
||||||
|
"format-icons" = ["" "" "" "" ""];
|
||||||
|
};
|
||||||
|
|
||||||
|
"memory"."format" = "{used:0.1f}G/{total:0.1f}G ";
|
||||||
|
|
||||||
|
"network" = {
|
||||||
|
"interface" = "${networkInterface.eth}";
|
||||||
|
"interval" = 2;
|
||||||
|
"format-ethernet" = "Up: {bandwidthUpBits} Down: {bandwidthDownBits} ";
|
||||||
|
"tooltip-format-ethernet" = "{ifname} ";
|
||||||
|
"format-wifi" = "Up: {bandwidthUpBits} Down: {bandwidthDownBits} {essid} ({signalStrength}%) ";
|
||||||
|
"tooltip-format-wifi" = "{ifname} {essid} ({signalStrength}%) ";
|
||||||
|
"format-disconnected" = "Disconnected ⚠";
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio" = {
|
||||||
|
"format" = "{volume}% {icon} ";
|
||||||
|
"format-bluetooth" = "{volume}% {icon} ";
|
||||||
|
"format-muted" = "";
|
||||||
|
"format-icons" = {
|
||||||
|
"headphones" = "";
|
||||||
|
"handsfree" = "";
|
||||||
|
"headset" = "";
|
||||||
|
"phone" = "";
|
||||||
|
"portable" = "";
|
||||||
|
"car" = "";
|
||||||
|
"default" = ["" ""];
|
||||||
|
};
|
||||||
|
"on-click" = "pavucontrol";
|
||||||
|
};
|
||||||
|
"temperature" = {
|
||||||
|
"hwmon-path" = "/sys/class/hwmon/hwmon2/temp1_input";
|
||||||
|
"format" = "{}°C";
|
||||||
|
"critical-threshold" = 80;
|
||||||
|
};
|
||||||
|
"gamemode" = {
|
||||||
|
"format" = "{glyph}";
|
||||||
|
"format-alt" = "{glyph} {count}";
|
||||||
|
"glyph" = "";
|
||||||
|
"hide-not-running" = true;
|
||||||
|
"use-icon" = true;
|
||||||
|
"icon-name" = "input-gaming-symbolic";
|
||||||
|
"icon-spacing" = 4;
|
||||||
|
"icon-size" = 20;
|
||||||
|
"tooltip" = true;
|
||||||
|
"tooltip-format" = "Games running: {count}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# A highly customizable document viewer.
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
vim = "nvim";
|
|
||||||
update = "sudo nixos-rebuild switch";
|
update = "sudo nixos-rebuild switch";
|
||||||
clean = "nix-collect-garbage -d";
|
clean = "nix-collect-garbage -d";
|
||||||
reload = "source ~/.zshrc";
|
reload = "source ~/.zshrc";
|
||||||
|
|
@ -18,15 +17,10 @@
|
||||||
"..." = "cd ../../../";
|
"..." = "cd ../../../";
|
||||||
"...." = "cd ../../../../";
|
"...." = "cd ../../../../";
|
||||||
|
|
||||||
ls = "eza --icons=always";
|
|
||||||
l = "eza -al --icons=always";
|
|
||||||
la = "eza -a --color=always --group-directories-first --icons=always"; # all files and dirs
|
|
||||||
ll = "eza -l --color=always --group-directories-first --icons=always"; # long format
|
|
||||||
lt = "eza -aT --color=always --group-directories-first --icons=always"; # tree listing
|
|
||||||
|
|
||||||
cat = "bat";
|
|
||||||
ps = "procs";
|
ps = "procs";
|
||||||
grep = "rg";
|
grep = "rg";
|
||||||
|
cat = "bat";
|
||||||
|
vim = "nvim";
|
||||||
|
|
||||||
# Default flags
|
# Default flags
|
||||||
rm = "rm -i";
|
rm = "rm -i";
|
||||||
|
|
@ -51,8 +45,6 @@
|
||||||
benchmark = "hyperfine --warmup 3 ";
|
benchmark = "hyperfine --warmup 3 ";
|
||||||
c = "clear";
|
c = "clear";
|
||||||
listen = "lsof -P -i -n";
|
listen = "lsof -P -i -n";
|
||||||
nc = "nordvpn connect sweden";
|
|
||||||
nd = "nordvpn disconnect";
|
|
||||||
tra = "transmission-remote -a";
|
tra = "transmission-remote -a";
|
||||||
clock = "sudo ntpd -gq";
|
clock = "sudo ntpd -gq";
|
||||||
octal = "stat -c '%a %n'";
|
octal = "stat -c '%a %n'";
|
||||||
|
|
@ -68,15 +60,17 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = ["git"];
|
||||||
|
theme = "robbyrussell";
|
||||||
|
};
|
||||||
|
|
||||||
history = {
|
history = {
|
||||||
size = 10000;
|
size = 10000;
|
||||||
path = "${config.xdg.dataHome}/zsh/history";
|
path = "${config.xdg.dataHome}/zsh/history";
|
||||||
};
|
};
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
#clear
|
|
||||||
#neofetch
|
|
||||||
eval "$(atuin init zsh)"
|
|
||||||
eval $(thefuck --alias)
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
125
hosts/candlekeep/configuration.nix
Normal file
125
hosts/candlekeep/configuration.nix
Normal file
|
|
@ -0,0 +1,125 @@
|
||||||
|
# This is your system's configuration file.
|
||||||
|
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
user,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# You can import other NixOS modules here
|
||||||
|
imports = [
|
||||||
|
# If you want to use modules your own flake exports (from modules/nixos):
|
||||||
|
# outputs.nixosModules.example
|
||||||
|
../../common/nixos/common.nix
|
||||||
|
../../common/networking/zerotier.nix
|
||||||
|
../../common/nixos/bluetooth.nix
|
||||||
|
../../common/gui/hyprland.nix
|
||||||
|
../../common/gui/thunar.nix
|
||||||
|
../../common/style/stylix.nix
|
||||||
|
../../common/virtualization/podman.nix
|
||||||
|
../../common/virtualization/kubernetes.nix
|
||||||
|
../../common/virtualization/libvirt.nix
|
||||||
|
|
||||||
|
./auditd.nix
|
||||||
|
./kernel.nix
|
||||||
|
./sysctl.nix
|
||||||
|
|
||||||
|
# Or modules from other flakes (such as nixos-hardware):
|
||||||
|
# inputs.hardware.nixosModules.common-cpu-amd
|
||||||
|
# inputs.hardware.nixosModules.common-ssd
|
||||||
|
inputs.nix-index-database.nixosModules.nix-index
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
# You can also split up your configuration and import pieces of it here:
|
||||||
|
# ./users.nix
|
||||||
|
|
||||||
|
# Import your generated (nixos-generate-config) hardware configuration
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
# You can add overlays here
|
||||||
|
overlays = [
|
||||||
|
# Add overlays your own flake exports (from overlays and pkgs dir):
|
||||||
|
outputs.overlays.additions
|
||||||
|
outputs.overlays.modifications
|
||||||
|
outputs.overlays.unstable-packages
|
||||||
|
|
||||||
|
# You can also add overlays exported from other flakes:
|
||||||
|
# neovim-nightly-overlay.overlays.default
|
||||||
|
|
||||||
|
# Or define it inline, for example:
|
||||||
|
# (final: prev: {
|
||||||
|
# hi = final.hello.overrideAttrs (oldAttrs: {
|
||||||
|
# patches = [ ./change-hello-to-hi.patch ];
|
||||||
|
# });
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
# Configure your nixpkgs instance
|
||||||
|
config = {
|
||||||
|
# Disable if you don't want unfree packages
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This will add each flake input as a registry
|
||||||
|
# To make nix3 commands consistent with your flake
|
||||||
|
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
||||||
|
|
||||||
|
# This will additionally add your inputs to the system's legacy channels
|
||||||
|
# Making legacy nix commands consistent as well, awesome!
|
||||||
|
nix.nixPath = ["/etc/nix/path"];
|
||||||
|
environment.etc =
|
||||||
|
lib.mapAttrs'
|
||||||
|
(name: value: {
|
||||||
|
name = "nix/path/${name}";
|
||||||
|
value.source = value.flake;
|
||||||
|
})
|
||||||
|
config.nix.registry;
|
||||||
|
|
||||||
|
networking.hostName = "candlekeep";
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
|
users.users = {
|
||||||
|
gwg313 = {
|
||||||
|
initialPassword = "correcthorsebatterystaple";
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ/cWqqTUuLswymQVh9rKdUWgMNNtZE6PwXMNUgD8/Zx gwg313"
|
||||||
|
];
|
||||||
|
extraGroups = ["wheel"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This setups a SSH server. Very important if you're setting up a headless system.
|
||||||
|
# Feel free to remove if you don't need it.
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Forbid root login through SSH.
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
# Use keys only. Remove if you want to SSH using password (not recommended)
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
loginShellInit = ''
|
||||||
|
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
|
||||||
|
exec Hyprland
|
||||||
|
fi
|
||||||
|
''; # Will automatically open Hyprland when logged into tty1
|
||||||
|
variables = {
|
||||||
|
TERMINAL = "alacritty";
|
||||||
|
EDITOR = "nvim";
|
||||||
|
VISUAL = "nvim";
|
||||||
|
PAGER = "moar";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
}
|
||||||
|
|
@ -18,42 +18,20 @@
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/88ae54e9-a47f-4ef0-acae-256803662304";
|
device = "/dev/disk/by-uuid/58fedfa4-d796-4e8f-a79d-2aa6b0f51909";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/media" = {
|
boot.initrd.luks.devices."luks-d24cbf42-c364-49e5-b569-34accd6e46cb".device = "/dev/disk/by-uuid/d24cbf42-c364-49e5-b569-34accd6e46cb";
|
||||||
device = "192.168.10.2:/mnt/tank/media";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = ["x-systemd.automount" "noauto" "x-systemd.after=network-online.target" "x-systemd.mount-timeout=90"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/books" = {
|
fileSystems."/boot" = {
|
||||||
device = "192.168.10.2:/mnt/tank/books";
|
device = "/dev/disk/by-uuid/9D09-4864";
|
||||||
fsType = "nfs";
|
|
||||||
options = ["x-systemd.automount" "noauto" "x-systemd.after=network-online.target" "x-systemd.mount-timeout=90"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/music" = {
|
|
||||||
device = "192.168.10.2:/mnt/tank/music";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = ["x-systemd.automount" "noauto" "x-systemd.after=network-online.target" "x-systemd.mount-timeout=90"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/projects" = {
|
|
||||||
device = "192.168.10.2:/mnt/tank/projects";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = ["x-systemd.automount" "noauto" "x-systemd.after=network-online.target" "x-systemd.mount-timeout=90"];
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-9d4b251f-b7d5-4a28-8e5d-6df09b434e47".device = "/dev/disk/by-uuid/9d4b251f-b7d5-4a28-8e5d-6df09b434e47";
|
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
|
||||||
device = "/dev/disk/by-uuid/C3A8-F13F";
|
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [
|
||||||
|
{device = "/dev/disk/by-uuid/0144132b-146b-4156-9518-67450854b736";}
|
||||||
|
];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|
@ -62,6 +40,7 @@
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.enp2s0f0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.enp2s0f0.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
@ -1,140 +0,0 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
(import ../modules/editors)
|
|
||||||
++ (import ../modules/shell);
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
|
||||||
|
|
||||||
nix.daemonCPUSchedPolicy = "idle";
|
|
||||||
|
|
||||||
networking.hostName = "nixos"; # Define your hostname.
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/Toronto";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_CA.UTF-8";
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver = {
|
|
||||||
layout = "us";
|
|
||||||
xkbVariant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.glen = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Glen";
|
|
||||||
extraGroups = ["networkmanager" "wheel" "video" "docker" "audio"];
|
|
||||||
shell = pkgs.zsh; # Default shell
|
|
||||||
packages = with pkgs; [];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
# environment.systemPackages = with pkgs; [
|
|
||||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
# wget
|
|
||||||
# neovim
|
|
||||||
# kitty
|
|
||||||
# ];
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
variables = {
|
|
||||||
TERMINAL = "alacritty";
|
|
||||||
EDITOR = "nvim";
|
|
||||||
VISUAL = "nvim";
|
|
||||||
};
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
# Default packages installed system-wide
|
|
||||||
vim
|
|
||||||
git
|
|
||||||
killall
|
|
||||||
nano
|
|
||||||
pciutils
|
|
||||||
usbutils
|
|
||||||
wget
|
|
||||||
lsof
|
|
||||||
inputs.agenix.packages.${system}.agenix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
programs.hyprland.enable = true;
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
services.pipewire = {
|
|
||||||
# Sound
|
|
||||||
enable = true;
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
wireplumber.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 30d";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.auto-optimise-store = true;
|
|
||||||
|
|
||||||
# enable firewall and block all ports
|
|
||||||
networking.firewall.enable = true;
|
|
||||||
networking.firewall.allowedTCPPorts = [];
|
|
||||||
networking.firewall.allowedUDPPorts = [];
|
|
||||||
|
|
||||||
# only members of wheel can interact with the nix daemon
|
|
||||||
nix.settings.allowed-users = ["@wheel"];
|
|
||||||
security.sudo.execWheelOnly = true;
|
|
||||||
|
|
||||||
# enable antivirus clamav and
|
|
||||||
# keep the signatures' database updated
|
|
||||||
services.clamav.daemon.enable = true;
|
|
||||||
services.clamav.updater.enable = true;
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# this value at the release version of the first install of this system.
|
|
||||||
# Before changing this value read the documentation for this option
|
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "22.11"; # Did you read the comment?
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = pkgs.nixFlakes;
|
|
||||||
extraOptions = "experimental-features = nix-command flakes";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
thinkpad = lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = {
|
|
||||||
inherit user inputs system;
|
|
||||||
host = {
|
|
||||||
hostName = "thinkpad";
|
|
||||||
mainMonitor = "eDP-1";
|
|
||||||
# secondMonitor = "DP-1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
./thinkpad
|
|
||||||
./configuration.nix
|
|
||||||
../modules/themes/home.nix
|
|
||||||
inputs.nix-index-database.nixosModules.nix-index
|
|
||||||
inputs.agenix.nixosModules.default
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.extraSpecialArgs = {inherit user inputs;};
|
|
||||||
home-manager.users.${user} = {
|
|
||||||
imports = [(import ./home.nix)] ++ [(import ./thinkpad/home.nix)];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
201
hosts/home.nix
201
hosts/home.nix
|
|
@ -1,201 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
stable,
|
|
||||||
user,
|
|
||||||
devenv,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
# Home Manager Modules
|
|
||||||
[(import ../modules/shell/git/home.nix)]
|
|
||||||
++ [(import ../modules/programs/wofi.nix)]
|
|
||||||
++ [(import ../modules/programs/devenv/home.nix)]
|
|
||||||
++ [(import ../modules/programs/kitty.nix)]
|
|
||||||
++ [(import ../modules/shell/tmux/home.nix)]
|
|
||||||
++ [(import ../modules/shell/ranger/home.nix)]
|
|
||||||
++ [(import ../modules/themes/home.nix)]
|
|
||||||
++ [(import ../modules/programs/mako.nix)]
|
|
||||||
++ [(import ../modules/programs/alacritty.nix)]
|
|
||||||
++ [(import ../modules/programs/zathura.nix)]
|
|
||||||
++ [(import ../modules/desktop/gtk.nix)]
|
|
||||||
++ [(import ../modules/shell/zsh/home.nix)];
|
|
||||||
|
|
||||||
#Add support for ./local/bin
|
|
||||||
#home.sessionPath = [
|
|
||||||
#"$HOME/.local/bin"
|
|
||||||
#];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = "${user}";
|
|
||||||
homeDirectory = "/home/${user}";
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
|
||||||
inputs.neovim-config.packages.${system}.default
|
|
||||||
starship
|
|
||||||
pass
|
|
||||||
kicad
|
|
||||||
devbox
|
|
||||||
nix-prefetch-git
|
|
||||||
libnotify
|
|
||||||
element-desktop
|
|
||||||
nix-init
|
|
||||||
|
|
||||||
tor-browser-bundle-bin
|
|
||||||
nmap
|
|
||||||
dig
|
|
||||||
signal-desktop
|
|
||||||
viddy
|
|
||||||
|
|
||||||
# Terminal
|
|
||||||
htop
|
|
||||||
nitch # Minimal fetch
|
|
||||||
tldr # Helper
|
|
||||||
zellij # multiplexer
|
|
||||||
dog # dns tool
|
|
||||||
eza # better ls
|
|
||||||
bat # better cap
|
|
||||||
sd # simpler sed
|
|
||||||
fd # simpler find
|
|
||||||
xh
|
|
||||||
ncdu
|
|
||||||
duf
|
|
||||||
atuin
|
|
||||||
ranger
|
|
||||||
thefuck
|
|
||||||
hyperfine
|
|
||||||
procs
|
|
||||||
ripgrep
|
|
||||||
nerdfonts
|
|
||||||
pfetch
|
|
||||||
dbeaver
|
|
||||||
ansible
|
|
||||||
nixpkgs-fmt
|
|
||||||
zoxide
|
|
||||||
webcord
|
|
||||||
nfs-utils
|
|
||||||
keychain
|
|
||||||
slides
|
|
||||||
glow
|
|
||||||
entr
|
|
||||||
just
|
|
||||||
bandwhich
|
|
||||||
navi
|
|
||||||
git-crypt
|
|
||||||
|
|
||||||
# Video/Audio
|
|
||||||
feh # Image Viewer
|
|
||||||
#mpv # Media Player
|
|
||||||
pavucontrol # Audio Control
|
|
||||||
#plex-media-player # Media Player
|
|
||||||
vlc # Media Player
|
|
||||||
stremio # Media Streamer
|
|
||||||
|
|
||||||
# Apps
|
|
||||||
appimage-run # Runs AppImages on NixOS
|
|
||||||
firefox # Browser
|
|
||||||
google-chrome # Browser
|
|
||||||
remmina # XRDP & VNC Client
|
|
||||||
anki
|
|
||||||
obsidian
|
|
||||||
|
|
||||||
# File Management
|
|
||||||
gnome.file-roller # Archive Manager
|
|
||||||
okular # PDF Viewer
|
|
||||||
#pcmanfm # File Manager
|
|
||||||
p7zip # Zip Encryption
|
|
||||||
rsync # Syncer - $ rsync -r dir1/ dir2/
|
|
||||||
unzip # Zip Files
|
|
||||||
unrar # Rar Files
|
|
||||||
zip # Zip
|
|
||||||
|
|
||||||
# General configuration
|
|
||||||
#git # Repositories
|
|
||||||
#killall # Stop Applications
|
|
||||||
#nano # Text Editor
|
|
||||||
#pciutils # Computer Utility Info
|
|
||||||
#pipewire # Sound
|
|
||||||
#usbutils # USB Utility Info
|
|
||||||
#wacomtablet # Wacom Tablet
|
|
||||||
#wget # Downloader
|
|
||||||
#zsh # Shell
|
|
||||||
#
|
|
||||||
# General home-manager
|
|
||||||
#alacritty # Terminal Emulator
|
|
||||||
#dunst # Notifications
|
|
||||||
#doom emacs # Text Editor
|
|
||||||
#libnotify # Dependency for Dunst
|
|
||||||
#neovim # Text Editor
|
|
||||||
#rofi # Menu
|
|
||||||
#rofi-power-menu # Power Menu
|
|
||||||
#udiskie # Auto Mounting
|
|
||||||
#vim # Text Editor
|
|
||||||
#
|
|
||||||
# Xorg configuration
|
|
||||||
#xclip # Console Clipboard
|
|
||||||
#xorg.xev # Input Viewer
|
|
||||||
#xorg.xkill # Kill Applications
|
|
||||||
#xorg.xrandr # Screen Settings
|
|
||||||
#xterm # Terminal
|
|
||||||
#
|
|
||||||
# Xorg home-manager
|
|
||||||
#flameshot # Screenshot
|
|
||||||
#picom # Compositer
|
|
||||||
#sxhkd # Shortcuts
|
|
||||||
#
|
|
||||||
# Wayland configuration
|
|
||||||
#autotiling # Tiling Script
|
|
||||||
#grim # Image Grabber
|
|
||||||
#slurp # Region Selector
|
|
||||||
#swappy # Screenshot Editor
|
|
||||||
#swayidle # Idle Management Daemon
|
|
||||||
#wev # Input Viewer
|
|
||||||
#wl-clipboard # Console Clipboard
|
|
||||||
#wlr-randr # Screen Settings
|
|
||||||
#xwayland # X for Wayland
|
|
||||||
#
|
|
||||||
# Wayland home-manager
|
|
||||||
#mpvpaper # Video Wallpaper
|
|
||||||
#pamixer # Pulse Audio Mixer
|
|
||||||
swaybg # Background
|
|
||||||
#swaylock-fancy # Screen Locker
|
|
||||||
#waybar # Bar
|
|
||||||
#
|
|
||||||
# Desktop
|
|
||||||
#ansible # Automation
|
|
||||||
#blueman # Bluetooth
|
|
||||||
#deluge # Torrents
|
|
||||||
discord # Chat
|
|
||||||
#ffmpeg # Video Support (dslr)
|
|
||||||
#gmtp # Mount MTP (GoPro)
|
|
||||||
#gphoto2 # Digital Photography
|
|
||||||
#handbrake # Encoder
|
|
||||||
#heroic # Game Launcher
|
|
||||||
#hugo # Static Website Builder
|
|
||||||
#lutris # Game Launcher
|
|
||||||
#mkvtoolnix # Matroska Tool
|
|
||||||
#plex-media-player# Media Player
|
|
||||||
#prismlauncher # MC Launcher
|
|
||||||
#steam # Games
|
|
||||||
#simple-scan # Scanning
|
|
||||||
#sshpass # Ansible dependency
|
|
||||||
#
|
|
||||||
# Laptop
|
|
||||||
#cbatticon # Battery Notifications
|
|
||||||
#blueman # Bluetooth
|
|
||||||
#light # Display Brightness
|
|
||||||
#libreoffice # Office Tools
|
|
||||||
#simple-scan # Scanning
|
|
||||||
#
|
|
||||||
# Flatpak
|
|
||||||
#obs-studio # Recording/Live Streaming
|
|
||||||
];
|
|
||||||
stateVersion = "22.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
# For now, if applying to other system, swap files
|
|
||||||
[(import ./hardware-configuration.nix)]
|
|
||||||
++ # Current system hardware config @ /etc/nixos/hardware-configuration.nix
|
|
||||||
(import ../../modules/desktop/virtualisation/default.nix)
|
|
||||||
++ (import ../../modules/hardware/default.nix)
|
|
||||||
++
|
|
||||||
# (import ./auditd.nix) ++
|
|
||||||
[(import ./sysctl.nix)]
|
|
||||||
++ [(import ./kernel.nix)]
|
|
||||||
++ [(import ./auditd.nix)]
|
|
||||||
++ [(import ./openssh.nix)]
|
|
||||||
++ [(import ../../modules/programs/thunar.nix)]
|
|
||||||
++ [(import ../../modules/desktop/hyprland/default.nix)]; # Window Manager
|
|
||||||
|
|
||||||
hardware.sane = {
|
|
||||||
# Used for scanning with Xsane
|
|
||||||
enable = true;
|
|
||||||
extraBackends = [pkgs.sane-airscan];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
simple-scan
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
# No xbacklight, this is the alterantive
|
|
||||||
dconf.enable = true;
|
|
||||||
light.enable = true;
|
|
||||||
command-not-found.enable = false;
|
|
||||||
nix-index-database.comma.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
tlp.enable = true; # TLP and auto-cpufreq for power management
|
|
||||||
#logind.lidSwitch = "ignore"; # Laptop does not go to sleep when lid is closed
|
|
||||||
auto-cpufreq.enable = true;
|
|
||||||
blueman.enable = true;
|
|
||||||
tailscale.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.trustedInterfaces = ["tailscale0"];
|
|
||||||
|
|
||||||
#temporary bluetooth fix
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d /var/lib/bluetooth 700 root root - -"
|
|
||||||
];
|
|
||||||
systemd.targets."bluetooth".after = ["systemd-tmpfiles-setup.service"];
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
../../modules/shell/git/home.nix
|
|
||||||
../../modules/desktop/hyprland/home.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
# Specific packages for laptop
|
|
||||||
packages = with pkgs; [
|
|
||||||
# Applications
|
|
||||||
libreoffice # Office packages
|
|
||||||
|
|
||||||
# Display
|
|
||||||
#light # xorg.xbacklight not supported. Other option is just use xrandr.
|
|
||||||
|
|
||||||
# Power Management
|
|
||||||
#auto-cpufreq # Power management
|
|
||||||
#tlp # Power management
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs = {
|
|
||||||
# alacritty.settings.font.size = 11;
|
|
||||||
# };
|
|
||||||
|
|
||||||
services = {
|
|
||||||
# Applets
|
|
||||||
blueman-applet.enable = true; # Bluetooth
|
|
||||||
network-manager-applet.enable = true; # Network
|
|
||||||
# cbatticon = {
|
|
||||||
# enable = true;
|
|
||||||
# criticalLevelPercent = 10;
|
|
||||||
# lowLevelPercent = 20;
|
|
||||||
# iconType = null;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
challengeResponseAuthentication = false;
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
gtk = {
|
|
||||||
cursorTheme = {
|
|
||||||
name = "Catppuccin-Mocha-Dark-Cursors";
|
|
||||||
|
|
||||||
package = pkgs.catppuccin-cursors.mochaDark;
|
|
||||||
};
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
iconTheme = {
|
|
||||||
package = pkgs.catppuccin-papirus-folders.override {
|
|
||||||
flavor = "mocha";
|
|
||||||
|
|
||||||
accent = "blue";
|
|
||||||
};
|
|
||||||
|
|
||||||
name = "Papirus-Dark";
|
|
||||||
};
|
|
||||||
|
|
||||||
theme = {
|
|
||||||
package = pkgs.catppuccin-gtk.override {
|
|
||||||
size = "compact";
|
|
||||||
|
|
||||||
variant = "mocha";
|
|
||||||
};
|
|
||||||
|
|
||||||
name = "Catppuccin-Mocha-Compact-Blue-Dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
exec = "exec Hyprland";
|
|
||||||
in {
|
|
||||||
imports = [../../programs/waybar.nix];
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
loginShellInit = ''
|
|
||||||
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
|
|
||||||
${exec}
|
|
||||||
fi
|
|
||||||
''; # Will automatically open Hyprland when logged into tty1
|
|
||||||
|
|
||||||
variables = {
|
|
||||||
#WLR_NO_HARDWARE_CURSORS="1"; # Possible variables needed in vm
|
|
||||||
#WLR_RENDERER_ALLOW_SOFTWARE="1";
|
|
||||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
XDG_SESSION_DESKTOP = "Hyprland";
|
|
||||||
XCURSOR_SIZE = "108";
|
|
||||||
};
|
|
||||||
sessionVariables = {
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
|
|
||||||
GDK_BACKEND = "wayland";
|
|
||||||
WLR_NO_HARDWARE_CURSORS = "1";
|
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
|
||||||
};
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
grim
|
|
||||||
mpvpaper
|
|
||||||
slurp
|
|
||||||
swappy
|
|
||||||
swaylock
|
|
||||||
wl-clipboard
|
|
||||||
wlr-randr
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
security.pam.services.swaylock = {
|
|
||||||
text = ''
|
|
||||||
auth include login
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
# Required for flatpak with window managers and for file browsing
|
|
||||||
enable = true;
|
|
||||||
extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if grep open /proc/acpi/button/lid/LID/state; then
|
|
||||||
hyprctl keyword monitor "eDP-1, 1920x1080, 0x0, 1"
|
|
||||||
else
|
|
||||||
if [[ $(hyprctl monitors | grep -c "Monitor") != 1 ]]; then
|
|
||||||
hyprctl keyword monitor "eDP-1, disable"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
@ -1,215 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hyprlandConf = ''
|
|
||||||
monitor=,preferred,auto,1
|
|
||||||
#monitor=,preferred,auto,auto
|
|
||||||
|
|
||||||
# trigger when the switch is turning off
|
|
||||||
# bindl = , switch:off:Lid Switch,exec,hyprctl keyword monitor "eDP-1, 1920x1080, 0x0, 1"
|
|
||||||
# trigger when the switch is turning on
|
|
||||||
# bindl = , switch:on:Lid Switch,exec,hyprctl keyword monitor "eDP-1, disable"
|
|
||||||
bindl=,switch:Lid Switch, exec, displayswitch
|
|
||||||
|
|
||||||
# use this instead of hidpi patches
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
$mainMod=SUPER
|
|
||||||
|
|
||||||
general {
|
|
||||||
border_size=3
|
|
||||||
gaps_in=5
|
|
||||||
gaps_out=7
|
|
||||||
col.active_border=rgba(${config.colorScheme.colors.base05}ee) rgba(${config.colorScheme.colors.base08}ee) 45deg
|
|
||||||
col.inactive_border=0x66333333
|
|
||||||
layout=dwindle
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
rounding=5
|
|
||||||
active_opacity=0.93
|
|
||||||
inactive_opacity=0.93
|
|
||||||
fullscreen_opacity=1
|
|
||||||
drop_shadow=false
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled=true
|
|
||||||
bezier = myBezier,0.1,0.7,0.1,1.05
|
|
||||||
animation=fade,1,7,default
|
|
||||||
animation=windows,1,7,myBezier
|
|
||||||
animation=windowsOut,1,3,default,popin 60%
|
|
||||||
animation=windowsMove,1,7,myBezier
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
kb_layout=us
|
|
||||||
kb_options=caps:ctrl_modifier
|
|
||||||
follow_mouse=2
|
|
||||||
repeat_delay=250
|
|
||||||
numlock_by_default=1
|
|
||||||
accel_profile=flat
|
|
||||||
sensitivity=0.8
|
|
||||||
touchpad {
|
|
||||||
natural_scroll=true
|
|
||||||
middle_button_emulation=true
|
|
||||||
tap-to-click=true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
|
||||||
workspace_swipe=true
|
|
||||||
workspace_swipe_fingers=3
|
|
||||||
workspace_swipe_distance=100
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
pseudotile=false
|
|
||||||
force_split=2
|
|
||||||
}
|
|
||||||
|
|
||||||
debug {
|
|
||||||
damage_tracking=2
|
|
||||||
}
|
|
||||||
|
|
||||||
bindm=$mainMod,mouse:272,movewindow
|
|
||||||
bindm=$mainMod,mouse:273,resizewindow
|
|
||||||
|
|
||||||
bind=$mainMod,Return,exec,${pkgs.alacritty}/bin/alacritty
|
|
||||||
bind=$mainMod,Q,killactive,
|
|
||||||
bind=$mainMod,Escape,exit,
|
|
||||||
bind=$mainMod,L,exec,${pkgs.swaylock}/bin/swaylock
|
|
||||||
bind=$mainMod,E,exec,${pkgs.pcmanfm}/bin/pcmanfm
|
|
||||||
bind=$mainMod,H,togglefloating,
|
|
||||||
#bind=$mainMod,Space,exec,${pkgs.rofi}/bin/rofi -show drun
|
|
||||||
bind=$mainMod,Space,exec,${pkgs.wofi}/bin/wofi --show drun
|
|
||||||
bind=$mainMod,P,pseudo,
|
|
||||||
bind=$mainMod,F,fullscreen,
|
|
||||||
bind=$mainMod,R,forcerendererreload
|
|
||||||
bind=$mainMod,R,exec,${pkgs.hyprland}/bin/hyprctl reload
|
|
||||||
|
|
||||||
bind=$mainMod,left,movefocus,l
|
|
||||||
bind=$mainMod,right,movefocus,r
|
|
||||||
bind=$mainMod,up,movefocus,u
|
|
||||||
bind=$mainMod,down,movefocus,d
|
|
||||||
|
|
||||||
bind=$mainMod SHIFT,left,movewindow,l
|
|
||||||
bind=$mainMod SHIFT,right,movewindow,r
|
|
||||||
bind=$mainMod SHIFT,up,movewindow,u
|
|
||||||
bind=$mainMod SHIFT,down,movewindow,d
|
|
||||||
|
|
||||||
bind=$mainMod,1,workspace,1
|
|
||||||
bind=$mainMod,2,workspace,2
|
|
||||||
bind=$mainMod,3,workspace,3
|
|
||||||
bind=$mainMod,4,workspace,4
|
|
||||||
bind=$mainMod,5,workspace,5
|
|
||||||
bind=$mainMod,6,workspace,6
|
|
||||||
bind=$mainMod,7,workspace,7
|
|
||||||
bind=$mainMod,8,workspace,8
|
|
||||||
bind=$mainMod,9,workspace,9
|
|
||||||
bind=$mainMod,0,workspace,10
|
|
||||||
bind=$mainMod,right,workspace,+1
|
|
||||||
bind=$mainMod,left,workspace,-1
|
|
||||||
|
|
||||||
bind=$mainMod SHIFT,1,movetoworkspace,1
|
|
||||||
bind=$mainMod SHIFT,2,movetoworkspace,2
|
|
||||||
bind=$mainMod SHIFT,3,movetoworkspace,3
|
|
||||||
bind=$mainMod SHIFT,4,movetoworkspace,4
|
|
||||||
bind=$mainMod SHIFT,5,movetoworkspace,5
|
|
||||||
bind=$mainMod SHIFT,6,movetoworkspace,6
|
|
||||||
bind=$mainMod SHIFT,7,movetoworkspace,7
|
|
||||||
bind=$mainMod SHIFT,8,movetoworkspace,8
|
|
||||||
bind=$mainMod SHIFT,9,movetoworkspace,9
|
|
||||||
bind=$mainMod SHIFT,0,movetoworkspace,10
|
|
||||||
bind=$mainMod SHIFT,right,movetoworkspace,+1
|
|
||||||
bind=$mainMod SHIFT,left,movetoworkspace,-1
|
|
||||||
|
|
||||||
bind=CTRL,right,resizeactive,20 0
|
|
||||||
bind=CTRL,left,resizeactive,-20 0
|
|
||||||
bind=CTRL,up,resizeactive,0 -20
|
|
||||||
bind=CTRL,down,resizeactive,0 20
|
|
||||||
|
|
||||||
bind=,print,exec,${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.swappy}/bin/swappy -f - -o ~/Pictures/$(date +%Hh_%Mm_%Ss_%d_%B_%Y).png && notify-send "Saved to ~/Pictures/$(date +%Hh_%Mm_%Ss_%d_%B_%Y).png"
|
|
||||||
|
|
||||||
bind=,XF86AudioLowerVolume,exec,${pkgs.pamixer}/bin/pamixer -d 10
|
|
||||||
bind=,XF86AudioRaiseVolume,exec,${pkgs.pamixer}/bin/pamixer -i 10
|
|
||||||
bind=,XF86AudioMute,exec,${pkgs.pamixer}/bin/pamixer -t
|
|
||||||
bind=,XF86AudioMicMute,exec,${pkgs.pamixer}/bin/pamixer --default-source -t
|
|
||||||
bind=,XF86MonBrightnessDown,exec,${pkgs.light}/bin/light -U 10
|
|
||||||
bind=,XF86MonBrightnessUP,exec,${pkgs.light}/bin/light -A 10
|
|
||||||
|
|
||||||
#windowrule=float,^(Rofi)$
|
|
||||||
windowrule=float,title:^(Volume Control)$
|
|
||||||
windowrule=float,title:^(Picture-in-Picture)$
|
|
||||||
windowrule=pin,title:^(Picture-in-Picture)$
|
|
||||||
windowrule=move 75% 75% ,title:^(Picture-in-Picture)$
|
|
||||||
windowrule=size 24% 24% ,title:^(Picture-in-Picture)$
|
|
||||||
|
|
||||||
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
|
||||||
exec-once=${pkgs.waybar}/bin/waybar
|
|
||||||
exec-once=${pkgs.blueman}/bin/blueman-applet
|
|
||||||
exec-once=${pkgs.swaybg}/bin/swaybg -m fill -i $HOME/.config/wall
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
xdg.configFile."hypr/hyprland.conf".text = hyprlandConf;
|
|
||||||
|
|
||||||
programs.swaylock.settings = {
|
|
||||||
image = "$HOME/.config/lock";
|
|
||||||
color = "000000f0";
|
|
||||||
font-size = "24";
|
|
||||||
indicator-idle-visible = false;
|
|
||||||
indicator-radius = 100;
|
|
||||||
indicator-thickness = 20;
|
|
||||||
inside-color = "00000000";
|
|
||||||
inside-clear-color = "00000000";
|
|
||||||
inside-ver-color = "00000000";
|
|
||||||
inside-wrong-color = "00000000";
|
|
||||||
key-hl-color = "79b360";
|
|
||||||
line-color = "000000f0";
|
|
||||||
line-clear-color = "000000f0";
|
|
||||||
line-ver-color = "000000f0";
|
|
||||||
line-wrong-color = "000000f0";
|
|
||||||
ring-color = "ffffff50";
|
|
||||||
ring-clear-color = "bbbbbb50";
|
|
||||||
ring-ver-color = "bbbbbb50";
|
|
||||||
ring-wrong-color = "b3606050";
|
|
||||||
text-color = "ffffff";
|
|
||||||
text-ver-color = "ffffff";
|
|
||||||
text-wrong-color = "ffffff";
|
|
||||||
show-failed-attempts = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
events = [
|
|
||||||
{
|
|
||||||
event = "before-sleep";
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock -f";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "lock";
|
|
||||||
command = "lock";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
timeouts = [
|
|
||||||
{
|
|
||||||
timeout = 300;
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock -f";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
systemdTarget = "xdg-desktop-portal-hyprland.service";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "displayswitch";
|
|
||||||
runtimeInputs = [];
|
|
||||||
text = builtins.readFile ./displayswitch.sh;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
[
|
|
||||||
./docker.nix
|
|
||||||
./libvirt.nix
|
|
||||||
./kubernetes.nix
|
|
||||||
]
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
virtualisation = {
|
|
||||||
docker.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.groups.docker.members = ["${user}"];
|
|
||||||
|
|
||||||
#environment = {
|
|
||||||
# interactiveShellInit = ''
|
|
||||||
# alias rtmp='docker start nginx-rtmp'
|
|
||||||
# ''; # Alias to easily start container
|
|
||||||
#};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
docker-compose
|
|
||||||
distrobox
|
|
||||||
dive # A tool for exploring a docker image, layer contents.
|
|
||||||
grype # A vulnerability scanner for container images and filesystems.
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
virtualisation = {
|
|
||||||
docker.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.groups.docker.members = ["${user}"];
|
|
||||||
|
|
||||||
#environment = {
|
|
||||||
# interactiveShellInit = ''
|
|
||||||
# alias rtmp='docker start nginx-rtmp'
|
|
||||||
# ''; # Alias to easily start container
|
|
||||||
#};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
argocd
|
|
||||||
k3d
|
|
||||||
k9s
|
|
||||||
kind
|
|
||||||
kubectl
|
|
||||||
kubectx
|
|
||||||
kubernetes-helm
|
|
||||||
minikube
|
|
||||||
stern
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
[
|
|
||||||
# ./nvim
|
|
||||||
]
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
#hsphfpd.enable = true; # HSP & HFP daemon
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
Enable = "Source,Sink,Media,Socket";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
[
|
|
||||||
./bluetooth.nix
|
|
||||||
]
|
|
||||||
6
modules/home-manager/default.nix
Normal file
6
modules/home-manager/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||||
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
{
|
||||||
|
# List your module files here
|
||||||
|
# my-module = import ./my-module.nix;
|
||||||
|
}
|
||||||
6
modules/nixos/default.nix
Normal file
6
modules/nixos/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||||
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
{
|
||||||
|
# List your module files here
|
||||||
|
# my-module = import ./my-module.nix;
|
||||||
|
}
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.alacritty.enable = true;
|
|
||||||
programs.alacritty.settings = {
|
|
||||||
env = {TERM = "xterm-256color";};
|
|
||||||
colors = with config.colorScheme.colors; {
|
|
||||||
bright = {
|
|
||||||
black = "0x${base03}";
|
|
||||||
blue = "0x${base0D}";
|
|
||||||
cyan = "0x${base0C}";
|
|
||||||
green = "0x${base0B}";
|
|
||||||
magenta = "0x${base0E}";
|
|
||||||
red = "0x${base08}";
|
|
||||||
white = "0x${base07}";
|
|
||||||
yellow = "0x${base0A}";
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
cursor = "0x${base06}";
|
|
||||||
text = "0x${base05}";
|
|
||||||
};
|
|
||||||
normal = {
|
|
||||||
black = "0x${base00}";
|
|
||||||
blue = "0x${base0D}";
|
|
||||||
cyan = "0x${base0C}";
|
|
||||||
green = "0x${base0B}";
|
|
||||||
magenta = "0x${base0E}";
|
|
||||||
red = "0x${base08}";
|
|
||||||
white = "0x${base05}";
|
|
||||||
yellow = "0x${base0A}";
|
|
||||||
};
|
|
||||||
primary = {
|
|
||||||
background = "0x${base00}";
|
|
||||||
foreground = "0x${base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
font = {
|
|
||||||
normal = {
|
|
||||||
family = "MonoLisa";
|
|
||||||
style = "Regular";
|
|
||||||
};
|
|
||||||
bold = {
|
|
||||||
family = "MonoLisa";
|
|
||||||
style = "Bold";
|
|
||||||
};
|
|
||||||
italic = {
|
|
||||||
family = "MonoLisa";
|
|
||||||
style = "Italic";
|
|
||||||
};
|
|
||||||
bold_italic = {
|
|
||||||
family = "MonoLisa";
|
|
||||||
style = "Bold Italic";
|
|
||||||
};
|
|
||||||
size = 18;
|
|
||||||
#bold_italic = {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
kitty
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/kitty/kitty.conf" = {
|
|
||||||
text = ''
|
|
||||||
include ./theme.conf
|
|
||||||
font_family SauceCodePro Nerd Font
|
|
||||||
font_size 14.0
|
|
||||||
|
|
||||||
background_opacity 1.0
|
|
||||||
|
|
||||||
show_hyperlink_targets yes
|
|
||||||
|
|
||||||
allow_hyperlinks yes
|
|
||||||
|
|
||||||
#term xterm-kitty
|
|
||||||
term xterm-256color
|
|
||||||
|
|
||||||
confirm_os_window_close 0
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/kitty/theme.conf" = {
|
|
||||||
text = ''
|
|
||||||
|
|
||||||
# Kitty window border colors
|
|
||||||
active_border_color #${config.colorScheme.colors.base07}
|
|
||||||
inactive_border_color #${config.colorScheme.colors.base02}
|
|
||||||
bell_border_color #${config.colorScheme.colors.base0A}
|
|
||||||
|
|
||||||
# URL underline color when hovering with mouse
|
|
||||||
url_color #${config.colorScheme.colors.base06}
|
|
||||||
|
|
||||||
# Colors for marks (marked text in the terminal)
|
|
||||||
mark1_foreground #${config.colorScheme.colors.base00}
|
|
||||||
mark1_background #${config.colorScheme.colors.base07}
|
|
||||||
mark2_foreground #${config.colorScheme.colors.base00}
|
|
||||||
mark2_background #${config.colorScheme.colors.base0E}
|
|
||||||
mark3_foreground #${config.colorScheme.colors.base00}
|
|
||||||
mark3_background #${config.colorScheme.colors.base0D}
|
|
||||||
|
|
||||||
background #${config.colorScheme.colors.base00}
|
|
||||||
foreground #${config.colorScheme.colors.base05}
|
|
||||||
cursor #${config.colorScheme.colors.base06}
|
|
||||||
cursor_text_color #${config.colorScheme.colors.base00}
|
|
||||||
color0 #${config.colorScheme.colors.base03}
|
|
||||||
color1 #${config.colorScheme.colors.base08}
|
|
||||||
color2 #${config.colorScheme.colors.base0B}
|
|
||||||
color3 #${config.colorScheme.colors.base0A}
|
|
||||||
color4 #${config.colorScheme.colors.base0D}
|
|
||||||
color5 #${config.colorScheme.colors.base0F}
|
|
||||||
color6 #${config.colorScheme.colors.base0C}
|
|
||||||
color7 #${config.colorScheme.colors.base03}
|
|
||||||
color8 #${config.colorScheme.colors.base04}
|
|
||||||
color9 #${config.colorScheme.colors.base08}
|
|
||||||
color10 #${config.colorScheme.colors.base0B}
|
|
||||||
color11 #${config.colorScheme.colors.base0A}
|
|
||||||
color12 #${config.colorScheme.colors.base0D}
|
|
||||||
color13 #${config.colorScheme.colors.base0F}
|
|
||||||
color14 #${config.colorScheme.colors.base0C}
|
|
||||||
color15 #${config.colorScheme.colors.base04}
|
|
||||||
selection_foreground #${config.colorScheme.colors.base00}
|
|
||||||
selection_background #${config.colorScheme.colors.base06}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.mako = with config.colorScheme.colors; {
|
|
||||||
enable = true;
|
|
||||||
backgroundColor = "#${base01}";
|
|
||||||
borderColor = "#${base0E}";
|
|
||||||
borderRadius = 5;
|
|
||||||
borderSize = 2;
|
|
||||||
textColor = "#${base04}";
|
|
||||||
layer = "overlay";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,446 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
host,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
waybar
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.${user} = {
|
|
||||||
# Home-manager waybar config
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
target = "sway-session.target"; # Needed for waybar to start automatically
|
|
||||||
};
|
|
||||||
|
|
||||||
style = ''
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
font-family: FiraCode Nerd Font Mono;
|
|
||||||
/*font-weight: bold;*/
|
|
||||||
font-size: 12px;
|
|
||||||
text-shadow: 0px 0px 5px #${config.colorScheme.colors.base00};
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
background-color: rgba(80,100,100,0.4);
|
|
||||||
}
|
|
||||||
window#waybar {
|
|
||||||
background-color: #${config.colorScheme.colors.base00};
|
|
||||||
transition-property: background-color;
|
|
||||||
transition-duration: .5s;
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
window#waybar.hidden {
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
#workspace,
|
|
||||||
#mode,
|
|
||||||
#clock,
|
|
||||||
#pulseaudio,
|
|
||||||
#custom-sink,
|
|
||||||
#network,
|
|
||||||
#mpd,
|
|
||||||
#memory,
|
|
||||||
#network,
|
|
||||||
#window,
|
|
||||||
#cpu,
|
|
||||||
#disk,
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#custom-ds4,
|
|
||||||
#tray {
|
|
||||||
color: #${config.colorScheme.colors.base09};
|
|
||||||
background-clip: padding-box;
|
|
||||||
}
|
|
||||||
#custom-menu {
|
|
||||||
color: #A7C7E7;
|
|
||||||
padding: 0px 5px 0px 5px;
|
|
||||||
}
|
|
||||||
#workspaces button {
|
|
||||||
padding: 0px 5px;
|
|
||||||
min-width: 5px;
|
|
||||||
color: #${config.colorScheme.colors.base09};
|
|
||||||
}
|
|
||||||
#workspaces button:hover {
|
|
||||||
background-color: #${config.colorScheme.colors.base02};
|
|
||||||
}
|
|
||||||
/*#workspaces button.focused {*/
|
|
||||||
#workspaces button.active {
|
|
||||||
color: #${config.colorScheme.colors.base0C};
|
|
||||||
background-color: #${config.colorScheme.colors.base02};
|
|
||||||
}
|
|
||||||
#workspaces button.visible {
|
|
||||||
color: #${config.colorScheme.colors.base0E};
|
|
||||||
}
|
|
||||||
#workspaces button.hidden {
|
|
||||||
color: #999999;
|
|
||||||
}
|
|
||||||
#battery.warning {
|
|
||||||
color: #ff5d17;
|
|
||||||
background-color: rgba(0,0,0,0);
|
|
||||||
}
|
|
||||||
#battery.critical {
|
|
||||||
color: #ff200c;
|
|
||||||
background-color: rgba(0,0,0,0);
|
|
||||||
}
|
|
||||||
#battery.charging {
|
|
||||||
color: #9ece6a;
|
|
||||||
background-color: rgba(0,0,0,0);
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
settings = with host; {
|
|
||||||
Main = {
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
height = 16;
|
|
||||||
# output = [
|
|
||||||
# "${mainMonitor}"
|
|
||||||
# ];
|
|
||||||
tray = {spacing = 5;};
|
|
||||||
#modules-center = [ "clock" ];
|
|
||||||
modules-left = with config;
|
|
||||||
if programs.hyprland.enable == true
|
|
||||||
then ["custom/menu" "hyprland/workspaces"]
|
|
||||||
else if programs.sway.enable == true
|
|
||||||
then ["sway/workspaces" "sway/window" "sway/mode"]
|
|
||||||
else [];
|
|
||||||
|
|
||||||
modules-right =
|
|
||||||
if hostName == "desktop"
|
|
||||||
then ["custom/ds4" "custom/pad" "network" "cpu" "memory" "custom/pad" "pulseaudio" "custom/sink" "custom/pad" "clock" "tray"]
|
|
||||||
else ["cpu" "memory" "custom/pad" "battery" "custom/pad" "backlight" "custom/pad" "pulseaudio" "custom/pad" "clock" "tray"];
|
|
||||||
|
|
||||||
"custom/pad" = {
|
|
||||||
format = " ";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/menu" = {
|
|
||||||
format = "<span font='16'></span>";
|
|
||||||
#on-click = ''${pkgs.rofi}/bin/rofi -show power-menu -modi "power-menu:rofi-power-menu --choices=logout/suspend/reboot/shutdown"'';
|
|
||||||
#on-click-right = "${pkgs.rofi}/bin/rofi -show drun";
|
|
||||||
on-click = ''~/.config/wofi/power.sh'';
|
|
||||||
on-click-right = "${pkgs.wofi}/bin/wofi --show drun";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"sway/workspaces" = {
|
|
||||||
format = "<span font='12'>{icon}</span>";
|
|
||||||
format-icons = {
|
|
||||||
"1" = "";
|
|
||||||
"2" = "";
|
|
||||||
"3" = "";
|
|
||||||
"4" = "";
|
|
||||||
"5" = "";
|
|
||||||
};
|
|
||||||
all-outputs = true;
|
|
||||||
persistent_workspaces = {
|
|
||||||
"1" = [];
|
|
||||||
"2" = [];
|
|
||||||
"3" = [];
|
|
||||||
"4" = [];
|
|
||||||
"5" = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"wlr/workspaces" = {
|
|
||||||
format = "<span font='11'>{name}</span>";
|
|
||||||
#format = "<span font='12'>{icon}</span>";
|
|
||||||
#format-icons = {
|
|
||||||
# "1"="";
|
|
||||||
# "2"="";
|
|
||||||
# "3"="";
|
|
||||||
# "4"="";
|
|
||||||
# "5"="";
|
|
||||||
# "6"="";
|
|
||||||
# "7"="";
|
|
||||||
# "8"="";
|
|
||||||
# "9"="";
|
|
||||||
# "10"="";
|
|
||||||
#};
|
|
||||||
#all-outputs = true;
|
|
||||||
active-only = false;
|
|
||||||
on-click = "activate";
|
|
||||||
};
|
|
||||||
"hyprland/workspaces" = {
|
|
||||||
format = "<span font='11'>{name}</span>";
|
|
||||||
};
|
|
||||||
clock = {
|
|
||||||
format = "{:%b %d %H:%M} ";
|
|
||||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
|
||||||
#format-alt = "{:%A, %B %d, %Y} ";
|
|
||||||
};
|
|
||||||
cpu = {
|
|
||||||
format = " {usage}% <span font='11'></span> ";
|
|
||||||
interval = 1;
|
|
||||||
};
|
|
||||||
disk = {
|
|
||||||
format = "{percentage_used}% <span font='11'></span>";
|
|
||||||
path = "/";
|
|
||||||
interval = 30;
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
format = "{}% <span font='11'></span>";
|
|
||||||
interval = 1;
|
|
||||||
};
|
|
||||||
backlight = {
|
|
||||||
device = "intel_backlight";
|
|
||||||
format = "{percent}% <span font='11'>{icon}</span>";
|
|
||||||
format-icons = ["" ""];
|
|
||||||
on-scroll-down = "${pkgs.light}/bin/light -U 5";
|
|
||||||
on-scroll-up = "${pkgs.light}/bin/light -A 5";
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
interval = 60;
|
|
||||||
states = {
|
|
||||||
warning = 30;
|
|
||||||
critical = 15;
|
|
||||||
};
|
|
||||||
format = "{capacity}% <span font='11'>{icon}</span>";
|
|
||||||
format-charging = "{capacity}% <span font='11'></span>";
|
|
||||||
format-icons = ["" "" "" "" ""];
|
|
||||||
max-length = 25;
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
format-wifi = "<span font='11'></span>";
|
|
||||||
format-ethernet = "<span font='11'></span>";
|
|
||||||
#format-ethernet = "<span font='11'></span> {ifname}: {ipaddr}/{cidr}";
|
|
||||||
format-linked = "<span font='11'></span> {ifname} (No IP)";
|
|
||||||
format-disconnected = "<span font='11'></span> Not connected";
|
|
||||||
#format-alt = "{ifname}: {ipaddr}/{cidr}";
|
|
||||||
tooltip-format = "{essid} {ipaddr}/{cidr}";
|
|
||||||
#on-click-right = "${pkgs.alacritty}/bin/alacritty -e nmtui";
|
|
||||||
};
|
|
||||||
pulseaudio = {
|
|
||||||
format = "<span font='11'>{icon}</span> {volume}% {format_source} ";
|
|
||||||
format-bluetooth = "<span font='11'>{icon}</span> {volume}% {format_source} ";
|
|
||||||
format-bluetooth-muted = "<span font='11'>x</span> {volume}% {format_source} ";
|
|
||||||
format-muted = "<span font='11'>x</span> {volume}% {format_source} ";
|
|
||||||
#format-source = "{volume}% <span font='11'></span>";
|
|
||||||
format-source = "<span font='10'></span> ";
|
|
||||||
format-source-muted = "<span font='11'> </span> ";
|
|
||||||
format-icons = {
|
|
||||||
default = ["" "" ""];
|
|
||||||
headphone = "";
|
|
||||||
#hands-free = "";
|
|
||||||
#headset = "";
|
|
||||||
#phone = "";
|
|
||||||
#portable = "";
|
|
||||||
#car = "";
|
|
||||||
};
|
|
||||||
tooltip-format = "{desc}, {volume}%";
|
|
||||||
on-click = "${pkgs.pamixer}/bin/pamixer -t";
|
|
||||||
on-click-right = "${pkgs.pamixer}/bin/pamixer --default-source -t";
|
|
||||||
on-click-middle = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
||||||
};
|
|
||||||
"custom/sink" = {
|
|
||||||
format = "{}";
|
|
||||||
exec = "$HOME/.config/waybar/script/sink.sh";
|
|
||||||
interval = 2;
|
|
||||||
on-click = "$HOME/.config/waybar/script/switch.sh";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/ds4" = {
|
|
||||||
format = "{}";
|
|
||||||
exec = "$HOME/.config/waybar/script/ds4.sh";
|
|
||||||
interval = 60;
|
|
||||||
};
|
|
||||||
tray = {
|
|
||||||
icon-size = 13;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
Sec =
|
|
||||||
if hostName == "desktop" || hostName == "work"
|
|
||||||
then {
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
height = 16;
|
|
||||||
output =
|
|
||||||
if hostName == "desktop"
|
|
||||||
then [
|
|
||||||
"${secondMonitor}"
|
|
||||||
]
|
|
||||||
else [
|
|
||||||
"${secondMonitor}"
|
|
||||||
"${thirdMonitor}"
|
|
||||||
];
|
|
||||||
modules-left = ["custom/menu" "wlr/workspaces"];
|
|
||||||
|
|
||||||
modules-right =
|
|
||||||
if hostName == "desktop"
|
|
||||||
then ["custom/ds4" "custom/pad" "pulseaudio" "custom/sink" "custom/pad" "clock"]
|
|
||||||
else ["cpu" "memory" "custom/pad" "battery" "custom/pad" "backlight" "custom/pad" "pulseaudio" "custom/pad" "clock"];
|
|
||||||
|
|
||||||
"custom/pad" = {
|
|
||||||
format = " ";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/menu" = {
|
|
||||||
format = "<span font='16'></span>";
|
|
||||||
#on-click = "${pkgs.rofi}/bin/rofi -show p -modi p:${pkgs.rofi-power-menu}/bin/rofi-power-menu -theme $HOME/.config/rofi/config.rasi";
|
|
||||||
#on-click-right = "${pkgs.rofi}/bin/rofi -show drun";
|
|
||||||
on-click = ''~/.config/wofi/power.sh'';
|
|
||||||
on-click-right = "${pkgs.wofi}/bin/wofi --show drun";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"wlr/workspaces" = {
|
|
||||||
format = "<span font='11'>{name}</span>";
|
|
||||||
#format = "<span font='12'>{icon}</span>";
|
|
||||||
#format-icons = {
|
|
||||||
# "1"="";
|
|
||||||
# "2"="";
|
|
||||||
# "3"="";
|
|
||||||
# "4"="";
|
|
||||||
# "5"="";
|
|
||||||
# "6"="";
|
|
||||||
# "7"="";
|
|
||||||
# "8"="";
|
|
||||||
# "9"="";
|
|
||||||
# "10"="";
|
|
||||||
#};
|
|
||||||
active-only = false;
|
|
||||||
on-click = "activate";
|
|
||||||
#on-scroll-up = "hyprctl dispatch workspace e+1";
|
|
||||||
#on-scroll-down = "hyprctl dispatch workspace e-1";
|
|
||||||
};
|
|
||||||
clock = {
|
|
||||||
format = "{:%b %d %H:%M}";
|
|
||||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
|
||||||
#format-alt = "{:%A, %B %d, %Y} ";
|
|
||||||
};
|
|
||||||
cpu = {
|
|
||||||
format = " {usage}% <span font='11'></span> ";
|
|
||||||
interval = 1;
|
|
||||||
};
|
|
||||||
disk = {
|
|
||||||
format = "{percentage_used}% <span font='11'></span>";
|
|
||||||
path = "/";
|
|
||||||
interval = 30;
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
format = "{}% <span font='11'></span>";
|
|
||||||
interval = 1;
|
|
||||||
};
|
|
||||||
backlight = {
|
|
||||||
device = "intel_backlight";
|
|
||||||
format = "{percent}% <span font='11'>{icon}</span>";
|
|
||||||
format-icons = ["" ""];
|
|
||||||
on-scroll-down = "${pkgs.light}/bin/light -U 5";
|
|
||||||
on-scroll-up = "${pkgs.light}/bin/light -A 5";
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
interval = 60;
|
|
||||||
states = {
|
|
||||||
warning = 30;
|
|
||||||
critical = 15;
|
|
||||||
};
|
|
||||||
format = "{capacity}% <span font='11'>{icon}</span>";
|
|
||||||
format-charging = "{capacity}% <span font='11'></span>";
|
|
||||||
format-icons = ["" "" "" "" ""];
|
|
||||||
max-length = 25;
|
|
||||||
};
|
|
||||||
pulseaudio = {
|
|
||||||
format = "<span font='11'>{icon}</span> {volume}% {format_source} ";
|
|
||||||
format-bluetooth = "<span font='11'>{icon}</span> {volume}% {format_source} ";
|
|
||||||
format-bluetooth-muted = "<span font='11'>x</span> {volume}% {format_source} ";
|
|
||||||
format-muted = "<span font='11'>x</span> {volume}% {format_source} ";
|
|
||||||
#format-source = "{volume}% <span font='11'></span> ";
|
|
||||||
format-source = "<span font='10'></span> ";
|
|
||||||
format-source-muted = "<span font='11'></span> ";
|
|
||||||
format-icons = {
|
|
||||||
default = ["" "" ""];
|
|
||||||
headphone = "";
|
|
||||||
#hands-free = "";
|
|
||||||
#headset = "";
|
|
||||||
#phone = "";
|
|
||||||
#portable = "";
|
|
||||||
#car = "";
|
|
||||||
};
|
|
||||||
tooltip-format = "{desc}, {volume}%";
|
|
||||||
on-click = "${pkgs.pamixer}/bin/pamixer -t";
|
|
||||||
on-click-right = "${pkgs.pamixer}/bin/pamixer --default-source -t";
|
|
||||||
on-click-middle = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
||||||
};
|
|
||||||
"custom/sink" = {
|
|
||||||
#format = "<span font='10'>蓼</span>";
|
|
||||||
format = "{}";
|
|
||||||
exec = "$HOME/.config/waybar/script/sink.sh";
|
|
||||||
interval = 2;
|
|
||||||
on-click = "$HOME/.config/waybar/script/switch.sh";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"custom/ds4" = {
|
|
||||||
format = "{}";
|
|
||||||
exec = "$HOME/.config/waybar/script/ds4.sh";
|
|
||||||
interval = 60;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.file = {
|
|
||||||
".config/waybar/script/sink.sh" = {
|
|
||||||
# Custom script: Toggle speaker/headset
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
HEAD=$(awk '/ Built-in Audio Analog Stereo/ { print $2 }' <(${pkgs.wireplumber}/bin/wpctl status | grep "*") | sed -n 2p)
|
|
||||||
SPEAK=$(awk '/ S10 Bluetooth Speaker/ { print $2 }' <(${pkgs.wireplumber}/bin/wpctl status | grep "*") | head -n 1)
|
|
||||||
|
|
||||||
if [[ $HEAD = "*" ]]; then
|
|
||||||
printf "<span font='13'></span>\n"
|
|
||||||
elif [[ $SPEAK = "*" ]]; then
|
|
||||||
printf "<span font='10'></span>\n"
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
executable = true;
|
|
||||||
};
|
|
||||||
".config/waybar/script/switch.sh" = {
|
|
||||||
# Custom script: Toggle speaker/headset
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
ID1=$(awk '/ Built-in Audio Analog Stereo/ {sub(/.$/,"",$2); print $2 }' <(${pkgs.wireplumber}/bin/wpctl status) | head -n 1)
|
|
||||||
ID2=$(awk '/ S10 Bluetooth Speaker/ {sub(/.$/,"",$2); print $2 }' <(${pkgs.wireplumber}/bin/wpctl status) | sed -n 2p)
|
|
||||||
|
|
||||||
HEAD=$(awk '/ Built-in Audio Analog Stereo/ { print $2 }' <(${pkgs.wireplumber}/bin/wpctl status | grep "*") | sed -n 2p)
|
|
||||||
SPEAK=$(awk '/ S10 Bluetooth Speaker/ { print $2 }' <(${pkgs.wireplumber}/bin/wpctl status | grep "*") | head -n 1)
|
|
||||||
|
|
||||||
if [[ $HEAD = "*" ]]; then
|
|
||||||
${pkgs.wireplumber}/bin/wpctl set-default $ID2
|
|
||||||
elif [[ $SPEAK = "*" ]]; then
|
|
||||||
${pkgs.wireplumber}/bin/wpctl set-default $ID1
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
executable = true;
|
|
||||||
};
|
|
||||||
".config/waybar/script/ds4.sh" = {
|
|
||||||
# Custom script: Dualshock battery indicator
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
FILE=/sys/class/power_supply/sony_controller_battery_e8:47:3a:05:c0:2b/capacity
|
|
||||||
FILE2=/sys/class/power_supply/ps-controller-battery-e8:47:3a:05:c0:2b/capacity
|
|
||||||
|
|
||||||
if [[ -f $FILE ]] then
|
|
||||||
DS4BATT=$(cat $FILE)
|
|
||||||
printf "<span font='13'></span> $DS4BATT%%\n"
|
|
||||||
elif [[ -f $FILE2 ]] then
|
|
||||||
DS4BATT=$(cat $FILE2)
|
|
||||||
printf "<span font='13'></span> $DS4BATT%%\n"
|
|
||||||
else
|
|
||||||
printf "\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
executable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (config.lib.formats.rasi) mkLiteral; # Theme.rasi alternative. Add Theme here
|
|
||||||
colors = import ../themes/colors.nix;
|
|
||||||
in {
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
wofi
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/wofi/config" = {
|
|
||||||
text = ''
|
|
||||||
width=280
|
|
||||||
lines=10
|
|
||||||
xoffset=5
|
|
||||||
yoffset=5
|
|
||||||
location=1
|
|
||||||
prompt=Search...
|
|
||||||
filter_rate=100
|
|
||||||
allow_markup=false
|
|
||||||
no_actions=true
|
|
||||||
halign=fill
|
|
||||||
orientation=vertical
|
|
||||||
content_halign=fill
|
|
||||||
insensitive=true
|
|
||||||
allow_images=true
|
|
||||||
image_size=20
|
|
||||||
hide_scroll=true
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
".config/wofi/style.css" = {
|
|
||||||
text = ''
|
|
||||||
window {
|
|
||||||
margin: 0px;
|
|
||||||
background-color: #${config.colorScheme.colors.base00};
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
all: unset;
|
|
||||||
min-height: 20px;
|
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 4px;
|
|
||||||
border: none;
|
|
||||||
color: #${config.colorScheme.colors.base08};
|
|
||||||
font-weight: bold;
|
|
||||||
background-color: #${config.colorScheme.colors.base00};
|
|
||||||
outline: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 3px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10px;
|
|
||||||
border: 3px solid #${config.colorScheme.colors.base05};
|
|
||||||
}
|
|
||||||
|
|
||||||
#text {
|
|
||||||
color: #${config.colorScheme.colors.base09};
|
|
||||||
}
|
|
||||||
|
|
||||||
#text:selected {
|
|
||||||
color: #${config.colorScheme.colors.base08};
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
background-color: #${config.colorScheme.colors.base05};
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
".config/wofi/power.sh" = {
|
|
||||||
executable = true;
|
|
||||||
text = ''
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
entries="⏾ Suspend\n⭮ Reboot\n⏻ Shutdown"
|
|
||||||
|
|
||||||
selected=$(echo -e $entries|wofi --dmenu --cache-file /dev/null | awk '{print tolower($2)}')
|
|
||||||
|
|
||||||
case $selected in
|
|
||||||
suspend)
|
|
||||||
exec systemctl suspend;;
|
|
||||||
reboot)
|
|
||||||
exec systemctl reboot;;
|
|
||||||
shutdown)
|
|
||||||
exec systemctl poweroff -i;;
|
|
||||||
esac
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
[
|
|
||||||
# ./git.nix
|
|
||||||
./zsh.nix
|
|
||||||
# ./direnv.nix
|
|
||||||
]
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.file."ranger_devicons" = {
|
|
||||||
source = pkgs.fetchgit {
|
|
||||||
url = "https://github.com/alexanderjeurissen/ranger_devicons.git";
|
|
||||||
rev = "main";
|
|
||||||
sha256 = "1ra2afxm2167a6ashgbrlilsh5lx696jzdhmfl34jh1w9p4j34g8";
|
|
||||||
};
|
|
||||||
|
|
||||||
target = ".config/ranger/plugins/ranger_devicons";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/ranger/rc.conf" = {
|
|
||||||
text = ''
|
|
||||||
default_linemode devicons
|
|
||||||
set vcs_backend_git enabled
|
|
||||||
set preview_files true
|
|
||||||
set preview_directories true
|
|
||||||
set collapse_preview true
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
ranger
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,165 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
user,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.tmux = {
|
|
||||||
enable = true;
|
|
||||||
clock24 = true;
|
|
||||||
plugins = with pkgs.tmuxPlugins; [
|
|
||||||
sensible
|
|
||||||
yank
|
|
||||||
resurrect
|
|
||||||
continuum
|
|
||||||
vim-tmux-navigator
|
|
||||||
tmux-thumbs
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
bind -n M-r source-file ~/.config/tmux/tmux.conf
|
|
||||||
|
|
||||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set -g detach-on-destroy off # don't exit from tmux when closing a session
|
|
||||||
|
|
||||||
# New Theme
|
|
||||||
set -g status-interval 3 # update the status bar every 3 seconds
|
|
||||||
set -g status-left "#[fg=blue,bold,bg=#${config.colorScheme.colors.base00}] #S "
|
|
||||||
set -g status-right "#[fg=#${config.colorScheme.colors.base07},bold,bg=#${config.colorScheme.colors.base00}]%a %Y-%m-%d %l:%M %p"
|
|
||||||
set -ga status-right "#($HOME/.config/tmux/scripts/cal.sh)"
|
|
||||||
set -g status-justify left
|
|
||||||
set -g status-left-length 200 # increase length (from 10)
|
|
||||||
set -g status-right-length 200 # increase length (from 10)
|
|
||||||
set -g status-position top # macOS / darwin style
|
|
||||||
set -g status-style 'bg=#${config.colorScheme.colors.base00}' # transparent
|
|
||||||
set -g window-status-current-format '#[fg=magenta,bg=#${config.colorScheme.colors.base00}]*#I #W#{?window_zoomed_flag,(),} '
|
|
||||||
set -g window-status-format '#[fg=gray,bg=#${config.colorScheme.colors.base00}] #I #W'
|
|
||||||
set -g window-status-last-style 'fg=white,bg=black'
|
|
||||||
set -g message-command-style bg=default,fg=yellow
|
|
||||||
set -g message-style bg=default,fg=yellow
|
|
||||||
set -g mode-style bg=default,fg=yellow
|
|
||||||
set -g pane-active-border-style 'fg=magenta,bg=default'
|
|
||||||
set -g pane-border-style 'fg=brightblack,bg=default'
|
|
||||||
set -g @tmux-last-prompt-pattern ' '
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set -g mouse on
|
|
||||||
|
|
||||||
set-option -g status-position top
|
|
||||||
|
|
||||||
bind-key g display-popup -h 95% -w 95% -E 'lazygit'
|
|
||||||
bind-key t display-popup -h 95% -w 95% -E "${pkgs.htop}/bin/htop"
|
|
||||||
|
|
||||||
bind C-g display-popup -E "tat ~/gallery"
|
|
||||||
|
|
||||||
bind -n M-g display-popup -E "tmux new-session -A -s scratch"
|
|
||||||
|
|
||||||
bind -n M-b switch-client -l
|
|
||||||
bind -n M-p previous-window
|
|
||||||
bind -n M-n next-window
|
|
||||||
bind -n M-P switch-client -p
|
|
||||||
bind -n M-N switch-client -n
|
|
||||||
|
|
||||||
unbind f
|
|
||||||
bind f resize-pane -Z
|
|
||||||
|
|
||||||
# create session
|
|
||||||
bind C-c new-session
|
|
||||||
|
|
||||||
# split current window horizontally
|
|
||||||
bind - split-window -v
|
|
||||||
# split current window vertically
|
|
||||||
bind _ split-window -h
|
|
||||||
|
|
||||||
# Select Layouts
|
|
||||||
#―――――――――――――――――
|
|
||||||
bind -n M-a select-layout main-vertical
|
|
||||||
bind -n M-A select-layout main-horizontal
|
|
||||||
bind -n M-E select-layout even-vertical
|
|
||||||
bind -n M-V select-layout even-horizontal
|
|
||||||
|
|
||||||
# pane navigation
|
|
||||||
bind -r h select-pane -L # move left
|
|
||||||
bind -r j select-pane -D # move down
|
|
||||||
bind -r k select-pane -U # move up
|
|
||||||
bind -r l select-pane -R # move right
|
|
||||||
bind > swap-pane -D # swap current pane with the next one
|
|
||||||
bind < swap-pane -U # swap current pane with the previous one
|
|
||||||
|
|
||||||
# pane resizing
|
|
||||||
bind -r H resize-pane -L 2
|
|
||||||
bind -r J resize-pane -D 2
|
|
||||||
bind -r K resize-pane -U 2
|
|
||||||
bind -r L resize-pane -R 2
|
|
||||||
bind -r c-f resize-pane -Z
|
|
||||||
|
|
||||||
# window navigation
|
|
||||||
unbind n
|
|
||||||
unbind p
|
|
||||||
|
|
||||||
setw -g mode-keys vi
|
|
||||||
|
|
||||||
bind Enter copy-mode # enter copy mode
|
|
||||||
|
|
||||||
bind -T copy-mode-vi v send -X begin-selection
|
|
||||||
bind -T copy-mode-vi C-v send -X rectangle-toggle
|
|
||||||
bind -T copy-mode-vi y send -X copy-selection-and-cancel
|
|
||||||
bind -T copy-mode-vi Escape send -X cancel
|
|
||||||
bind -T copy-mode-vi H send -X start-of-line
|
|
||||||
bind -T copy-mode-vi L send -X end-of-line
|
|
||||||
|
|
||||||
# -- buffers -------------------------------------------------------------------
|
|
||||||
|
|
||||||
bind b list-buffers # list paste buffers
|
|
||||||
bind p paste-buffer -p # paste from the top paste buffer
|
|
||||||
bind P choose-buffer # choose which buffer to paste from
|
|
||||||
|
|
||||||
# -- display -------------------------------------------------------------------
|
|
||||||
|
|
||||||
set -g renumber-windows on # renumber windows when a window is closed
|
|
||||||
|
|
||||||
bind k display-popup -E "\
|
|
||||||
tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
|
|
||||||
fzf --reverse -m --header=kill-session |\
|
|
||||||
xargs -I {} tmux kill-session -t {}"
|
|
||||||
|
|
||||||
bind C-j display-popup -E "\
|
|
||||||
tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
|
|
||||||
sed '/^$/d' |\
|
|
||||||
fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\
|
|
||||||
xargs tmux switch-client -t"
|
|
||||||
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.tmate = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
# Open tmux for current project.
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "tat";
|
|
||||||
runtimeInputs = [pkgs.tmux pkgs.fzf];
|
|
||||||
text = builtins.readFile ./ta.sh;
|
|
||||||
})
|
|
||||||
pkgs.fzf
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
shellAliases = {
|
|
||||||
tx = "tmux new -s default";
|
|
||||||
ta = "tmux attach -t";
|
|
||||||
tad = "tmux attach -d -t";
|
|
||||||
ts = "tmux new-session -s";
|
|
||||||
tl = "tmux list-sessions";
|
|
||||||
tksv = "tmux kill-server";
|
|
||||||
tkss = "tmux kill-session -t";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
age.secrets.env = {
|
|
||||||
file = ../../secrets/env.age;
|
|
||||||
owner = "glen";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autosuggestions.enable = true; # Auto suggest options and highlights syntax, searches in history for options
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
histSize = 100000;
|
|
||||||
|
|
||||||
ohMyZsh = {
|
|
||||||
# Extra plugins for zsh
|
|
||||||
enable = true;
|
|
||||||
plugins = ["git"];
|
|
||||||
};
|
|
||||||
|
|
||||||
shellInit = '' # Zsh theme
|
|
||||||
eval "$(starship init zsh)"
|
|
||||||
# Spaceship
|
|
||||||
#source ${pkgs.spaceship-prompt}/share/zsh/site-functions/prompt_spaceship_setup
|
|
||||||
#autoload -U promptinit; promptinit
|
|
||||||
# Hook direnv
|
|
||||||
#emulate zsh -c "$(direnv hook zsh)"
|
|
||||||
# Swag
|
|
||||||
#${pkgs.nitch}/bin/nitch
|
|
||||||
|
|
||||||
#eval "$(direnv hook zsh)"
|
|
||||||
eval "$(atuin init zsh)"
|
|
||||||
clear
|
|
||||||
pfetch
|
|
||||||
source ${config.age.secrets.env.path}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [inputs.nix-colors.homeManagerModules.default];
|
|
||||||
# choose a theme from here https://github.com/tinted-theming/base16-schemes/tree/main
|
|
||||||
colorScheme = inputs.nix-colors.colorSchemes.tokyo-night-terminal-storm;
|
|
||||||
}
|
|
||||||
5
pkgs/default.nix
Normal file
5
pkgs/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Custom packages, that can be defined similarly to ones from nixpkgs
|
||||||
|
# You can build them using 'nix build .#example'
|
||||||
|
pkgs: {
|
||||||
|
# example = pkgs.callPackage ./example { };
|
||||||
|
}
|
||||||
BIN
secrets/env.age
BIN
secrets/env.age
Binary file not shown.
|
|
@ -1,10 +0,0 @@
|
||||||
let
|
|
||||||
user1 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAxZoOukLwiPP4tFZ2IzI61ZQccSwudPYYPJuU3COTAf";
|
|
||||||
users = [user1];
|
|
||||||
|
|
||||||
system1 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP9LR3o//JjFpnJ5+MSJVmTTC3x47Ca8ckL8tDRtHJZv";
|
|
||||||
systems = [system1];
|
|
||||||
in {
|
|
||||||
#"secret1.age".publicKeys = [ user1 system1 ];
|
|
||||||
"env.age".publicKeys = users ++ systems;
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue