ark/users/patriot/default.nix

926 lines
31 KiB
Nix
Raw Normal View History

2022-02-18 20:31:01 +03:00
{
config,
pkgs,
lib,
...
}:
2021-05-03 07:48:31 +03:00
let
inherit (lib) mapAttrs' nameValuePair;
inherit (builtins) readDir fetchGit;
2021-07-24 20:01:36 +03:00
pkgBin = lib.our.pkgBinNoDep pkgs;
2021-05-03 07:48:31 +03:00
nixosConfig = config;
2022-02-18 20:31:01 +03:00
in {
2020-11-21 23:54:07 +03:00
users.users.patriot = {
isNormalUser = true;
createHome = true;
home = "/home/patriot";
2022-02-18 20:31:01 +03:00
extraGroups = [
"wheel"
"adbusers"
"dialout"
];
2020-11-21 23:54:07 +03:00
shell = pkgs.zsh;
hashedPassword =
"$6$spzqhAyJfhHy$iHgLBlhjGn1l8PnbjJdWTn1GPvcjMqYNKUzdCe/7IrX6sHNgETSr/Nfpdmq9FCXLhrAfwHOd/q/8SvfeIeNX4/";
};
2021-08-23 21:25:02 +03:00
environment = {
2022-02-18 20:31:01 +03:00
systemPackages = [pkgs.qt5.qtwayland];
shells = with pkgs; [bashInteractive zsh];
2021-08-23 21:25:02 +03:00
};
2020-11-21 23:54:07 +03:00
xdg.portal = {
enable = true;
gtkUsePortal = true;
2022-02-18 20:31:01 +03:00
extraPortals = with pkgs; [xdg-desktop-portal xdg-desktop-portal-wlr];
2020-11-21 23:54:07 +03:00
};
programs = {
adb.enable = true;
steam.enable = true;
java = {
2021-10-23 22:15:28 +03:00
enable = false;
2021-09-10 07:21:23 +03:00
package = pkgs.adoptopenjdk-jre-bin;
2020-11-21 23:54:07 +03:00
};
2021-10-23 22:15:28 +03:00
wireshark.enable = false;
2020-11-21 23:54:07 +03:00
};
2021-12-25 16:19:03 +03:00
security = {
pam.services.patriot = {
enableGnomeKeyring = true;
enableKwallet = false;
};
sudo.extraRules = [
{
2022-02-18 20:31:01 +03:00
users = ["patriot"];
commands = [
{
command = "${pkgs.profile-sync-daemon}/bin/psd-overlay-helper";
options = ["SETENV" "NOPASSWD"];
}
];
2021-12-25 16:19:03 +03:00
}
];
};
2021-01-17 18:34:34 +03:00
services = {
2021-12-25 16:19:03 +03:00
psd.enable = true;
2021-05-14 01:35:10 +03:00
gnome = {
2021-01-17 18:34:34 +03:00
gnome-keyring.enable = true;
2021-12-25 16:19:03 +03:00
core-utilities.enable = false;
tracker-miners.enable = false;
tracker.enable = false;
2021-01-17 18:34:34 +03:00
};
2021-03-18 17:12:44 +03:00
xserver = {
2021-01-17 17:25:54 +03:00
enable = true;
desktopManager = {
plasma5.enable = false;
2022-02-19 00:49:27 +03:00
gnome.enable = false;
xterm.enable = false;
};
displayManager = {
autoLogin = {
2021-03-26 21:03:40 +03:00
enable = false;
user = "patriot";
};
lightdm.enable = false;
gdm = {
2022-02-19 00:49:27 +03:00
enable = false;
wayland = true;
};
2021-03-26 21:03:40 +03:00
sddm.enable = false;
2022-02-19 00:49:27 +03:00
startx.enable = true;
};
2021-03-18 17:12:44 +03:00
};
};
2022-02-18 20:31:01 +03:00
systemd.user.services.gnome-session-restart-dbus.serviceConfig = { Slice = "-.slice"; };
systemd = {
2022-02-18 20:31:01 +03:00
targets = { network-online.enable = false; };
services = {
systemd-networkd-wait-online.enable = false;
NetworkManager-wait-online.enable = false;
2021-01-17 17:25:54 +03:00
};
};
2021-05-03 07:48:31 +03:00
home-manager.users.patriot =
2022-02-18 20:31:01 +03:00
{
config,
pkgs,
suites,
...
}:
2021-05-03 07:48:31 +03:00
let
2021-05-03 09:27:11 +03:00
personal = import ../../personal.nix;
name = personal.name;
email = personal.emails.primary;
2022-02-18 20:37:53 +03:00
font = "Monoid HalfTight";
fontSize = 11;
2021-05-03 07:48:31 +03:00
fontComb = "${font} ${toString fontSize}";
2022-02-18 20:31:01 +03:00
fontPackage = pkgs.monoid;
2021-05-03 07:48:31 +03:00
colorSchemeLight = {
primary = {
normal = {
background = "fbf3db";
foreground = "53676d";
};
bright = {
background = "d5cdb6";
foreground = "3a4d53";
};
};
normal = {
black = "ece3cc";
gray = "5b5b5b";
red = "d2212d";
green = "489100";
yellow = "ad8900";
blue = "0072d4";
magenta = "ca4898";
cyan = "009c8f";
white = "909995";
};
bright = {
black = "d5cdb6";
gray = "7b7b7b";
red = "cc1729";
green = "428b00";
yellow = "a78300";
blue = "006dce";
magenta = "c44392";
cyan = "00978a";
white = "3a4d53";
};
};
colorSchemeDark =
let
normal = {
black = "252525";
gray = "5b5b5b";
red = "ed4a46";
green = "70b433";
yellow = "dbb32d";
blue = "368aeb";
magenta = "eb6eb7";
cyan = "3fc5b7";
white = "777777";
};
bright = {
black = "3b3b3b";
gray = "7b7b7b";
red = "ff5e56";
green = "83c746";
yellow = "efc541";
blue = "4f9cfe";
magenta = "ff81ca";
cyan = "56d8c9";
white = "dedede";
};
2022-02-18 20:31:01 +03:00
in {
2021-05-03 07:48:31 +03:00
inherit normal bright;
primary = {
normal = {
background = "181818";
foreground = "b9b9b9";
};
bright = {
background = bright.black;
foreground = bright.white;
};
};
};
colorScheme =
# if builtins.pathExists ./light then colorSchemeLight else colorSchemeDark;
colorSchemeDark;
bgColor = colorScheme.primary.normal.background;
fgColor = colorScheme.primary.bright.foreground;
acColor = colorScheme.normal.yellow;
acColor2 = colorScheme.normal.magenta;
alacrittyColors = {
primary = {
background = "0x${bgColor}";
foreground = "0x${fgColor}";
};
normal = lib.mapAttrs (_: v: "0x${v}") colorScheme.normal;
bright = lib.mapAttrs (_: v: "0x${v}") colorScheme.bright;
};
# sway attrs reused
focusedWorkspace = {
background = "#${bgColor}";
border = "#${acColor}";
text = "#${acColor}";
};
activeWorkspace = {
background = "#${bgColor}";
border = "#${colorScheme.primary.bright.background}";
text = "#${fgColor}";
};
inactiveWorkspace = {
background = "#${bgColor}";
border = "#${bgColor}";
text = "#${fgColor}";
};
urgentWorkspace = {
background = "#${bgColor}";
border = "#${acColor2}";
text = "#${acColor2}";
};
2022-02-18 20:31:01 +03:00
addIndSway =
x: {
background = x.background;
border = x.border;
childBorder = x.border;
text = x.text;
indicator = "#111111";
# don't care
};
fonts = [fontComb];
extraEnv =
''
export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland
#export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
#export QT_QPA_PLATFORMTHEME=qt5ct
#export QT_PLATFORM_PLUGIN=qt5ct
'';
in {
2021-05-03 09:19:54 +03:00
imports = suites.base;
2021-05-03 07:48:31 +03:00
# needs to be fixed to use nix profile???
2022-02-18 20:31:01 +03:00
/*
gtk = {
enable = false;
font = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans 12";
};
iconTheme = {
package = pkgs.papirus-icon-theme;
name = "Papirus Dark";
};
theme = {
package = pkgs.numix-gtk-theme;
name = "Numix Dark";
};
};
qt = {
enable = false;
style = {
package = pkgs.adwaita-qt;
name = "adwaita-dark";
};
};
*/
2021-05-03 07:48:31 +03:00
fonts.fontconfig.enable = true;
home = {
homeDirectory = nixosConfig.users.users.patriot.home;
2022-02-18 20:31:01 +03:00
packages =
with pkgs; [
2021-05-03 07:48:31 +03:00
# Font stuff
fontPackage
noto-fonts-cjk
font-awesome
2021-07-24 16:37:53 +03:00
dejavu_fonts
2022-02-18 20:31:01 +03:00
(nerdfonts.override { fonts = ["Monoid"]; })
2021-05-03 07:48:31 +03:00
# Programs
2022-02-25 20:01:43 +03:00
cargo-outdated
cargo-release
cargo-udeps
2021-07-24 23:07:00 +03:00
vulkan-tools
2021-05-03 07:48:31 +03:00
krita
gnome3.seahorse
cachix
appimage-run
pfetch
gnupg
imv
mpv
youtube-dl
ffmpeg
mupdf
transmission-qt
2022-02-18 20:31:01 +03:00
(
lib.hiPrio
(
lutris.overrideAttrs
(
old: {
profile =
''
${old.profile or ""}
unset VK_ICD_FILENAMES
export VK_ICD_FILENAMES=${nixosConfig.environment.variables.VK_ICD_FILENAMES}'';
}
)
)
)
2021-05-03 07:48:31 +03:00
xdg_utils
tagref
hydrus
papirus-icon-theme
2021-06-23 19:49:50 +03:00
wl-clipboard
2021-06-24 00:35:17 +03:00
rust-analyzer
2022-02-18 20:31:01 +03:00
(
lib.hiPrio
(
steam.override
{
extraLibraries = pkgs: [pkgs.pipewire];
extraProfile =
''
unset VK_ICD_FILENAMES
export VK_ICD_FILENAMES=${nixosConfig.environment.variables.VK_ICD_FILENAMES}'';
}
)
)
/*
(multimc.overrideAttrs (old: {
src = builtins.fetchGit { url = "https://github.com/AfoninZ/MultiMC5-Cracked.git"; ref = "develop"; rev = "9069e9c9d0b7951c310fdcc8bdc70ebc422a7634"; submodules = true; };
}))
*/
standardnotes
2021-06-21 21:15:22 +03:00
];
2021-05-03 07:48:31 +03:00
};
wayland.windowManager = {
2022-02-19 18:05:45 +03:00
sway =
let
mkRofiCmd = args: "${config.programs.rofi.finalPackage}/bin/rofi ${lib.concatStringsSep " " args} | ${pkgs.sway}/bin/swaymsg --";
in {
enable = true;
extraSessionCommands = extraEnv;
wrapperFeatures.gtk = true;
extraConfig =
''
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
'';
config = {
fonts = {
names = [font];
size = fontSize + 0.0;
};
bars = [{ command = "${pkgBin "waybar"}"; }];
colors = {
background = "#${bgColor}";
focused = addIndSway focusedWorkspace;
focusedInactive = addIndSway inactiveWorkspace;
unfocused = addIndSway activeWorkspace;
urgent = addIndSway urgentWorkspace;
};
gaps.smartBorders = "on";
menu = mkRofiCmd ["-show" "drun"];
modifier = "Mod4";
terminal = pkgBin "alacritty";
keybindings =
let
mod = config.wayland.windowManager.sway.config.modifier;
cat = pkgs.coreutils + "/bin/cat";
grim = pkgBin "grim";
slurp = pkgBin "slurp";
pactl = pkgs.pulseaudio + "/bin/pactl";
playerctl = pkgBin "playerctl";
wf-recorder = pkgBin "wf-recorder";
wl-copy = pkgs.wl-clipboard + "/bin/wl-copy";
wl-paste = pkgs.wl-clipboard + "/bin/wl-paste";
shotFile = config.home.homeDirectory + "/shots/shot_$(date '+%Y_%m_%d_%H_%M')";
in
lib.mkOptionDefault
{
"${mod}+q" = "kill";
"${mod}+Shift+e" = "exit";
"${mod}+Shift+r" = "reload";
"${mod}+c" = mkRofiCmd ["-show" "calc"];
# Screenshot and copy it to clipboard
"Mod1+s" =
''
exec export SFILE="${shotFile}.png" && ${grim} "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png
'';
# Save selected area as a picture and copy it to clipboard
"Mod1+Shift+s" =
''
exec export SFILE="${shotFile}.png" && ${grim} -g "$(${slurp})" "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png
'';
# Record screen
"Mod1+r" = ''exec ${wf-recorder} -f "${shotFile}.mp4"'';
# Record an area
"Mod1+Shift+r" = ''exec ${wf-recorder} -g "$(${slurp})" -f "${shotFile}.mp4"'';
# Stop recording
"Mod1+c" = "exec pkill -INT wf-recorder";
"XF86AudioRaiseVolume" = "exec ${pactl} set-sink-volume 0 +5%";
"XF86AudioLowerVolume" = "exec ${pactl} set-sink-volume 0 -5%";
"XF86AudioMute" = "exec ${pactl} set-sink-mute 0 toggle";
"XF86AudioPlay" = "exec ${playerctl} play-pause";
"XF86AudioPrev" = "exec ${playerctl} previous";
"XF86AudioNext" = "exec ${playerctl} next";
"XF86AudioStop" = "exec ${playerctl} stop";
};
input = {
"*" = {
xkb_layout = nixosConfig.services.xserver.layout;
accel_profile = "flat";
2022-02-18 20:31:01 +03:00
};
2021-05-03 07:48:31 +03:00
};
2022-02-19 18:05:45 +03:00
output = { "*" = { bg = config.home.homeDirectory + "/wallpaper.png" + " fill"; }; };
2021-05-03 07:48:31 +03:00
};
};
};
programs = {
alacritty = {
enable = true;
settings = {
shell = {
program = "${pkgs.tmux}/bin/tmux";
2022-02-18 20:31:01 +03:00
args = ["attach"];
};
2021-05-03 07:48:31 +03:00
font = {
normal = { family = font; };
size = fontSize;
};
colors = alacrittyColors;
};
};
tmux = {
enable = true;
2021-05-03 07:48:31 +03:00
newSession = true;
secureSocket = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shortcut = "a";
2022-02-18 20:31:01 +03:00
extraConfig =
''
set -g default-terminal "alacritty"
set -ga terminal-overrides ",alacritty:Tc"
set -g status off
'';
2021-05-03 07:48:31 +03:00
};
chromium = {
enable = true;
2021-12-25 16:19:03 +03:00
package = pkgs.chromium;
2021-05-03 07:48:31 +03:00
extensions = [
2022-02-18 20:31:01 +03:00
"gcbommkclmclpchllfjekcdonpmejbdp"
# https everywhere
"cjpalhdlnbpafiamejdnhcphjbkeiagm"
# ublock
"nngceckbapebfimnlniiiahkandclblb"
# bitwarden
"ldpochfccmkkmhdbclfhpagapcfdljkj"
# decentraleyes
"annfbnbieaamhaimclajlajpijgkdblo"
# dark theme
"eimadpbcbfnmbkopoojfekhnkhdbieeh"
# dark reader
"hlepfoohegkhhmjieoechaddaejaokhf"
# github refined
"pmcmeagblkinmogikoikkdjiligflglb"
# privacy redirect
2021-05-03 07:48:31 +03:00
];
};
qutebrowser = {
enable = false;
2021-05-03 07:48:31 +03:00
settings = {
content.javascript.enabled = false;
colors.webpage.darkmode.enabled = false;
tabs = {
show = "multiple";
tabs_are_windows = true;
};
};
extraConfig =
let
domains = [
"discord.com"
"github.com"
"gitlab.com"
"nixos.org"
"protonmail.com"
"bitwarden.com"
"duckduckgo.com"
"youtube.com"
"docker.com"
];
2022-02-18 20:31:01 +03:00
enableJsForDomain =
d: ''
config.set('content.javascript.enabled', True, 'https://*.${d}')
'';
in ''
2021-05-03 07:48:31 +03:00
${lib.concatStrings (map enableJsForDomain domains)}
'';
};
git = {
signing = {
key = "E1C119F91F4CAE53E8445CAFBB57FCE7E35984F6";
signByDefault = true;
};
userName = name;
userEmail = email;
};
ssh = {
enable = true;
compression = true;
hashKnownHosts = true;
userKnownHostsFile = "~/.local/share/ssh/known-hosts";
# Only needed for darcs hub
# extraConfig = ''
# Host hub.darcs.net
# ControlMaster no
# ForwardAgent no
# ForwardX11 no
# Ciphers +aes256-cbc
# MACs +hmac-sha1
# '';
};
zsh = {
enable = true;
autocd = true;
enableVteIntegration = true;
enableAutosuggestions = true;
enableCompletion = true;
plugins =
let
fast-syntax-highlighting =
2022-02-18 20:31:01 +03:00
let
name = "fast-syntax-highlighting";
in {
2021-05-03 07:48:31 +03:00
inherit name;
src = pkgs."zsh-${name}".out;
};
per-directory-history = {
name = "per-directory-history";
2022-02-18 20:31:01 +03:00
src =
pkgs.fetchFromGitHub
{
owner = "jimhester";
repo = "per-directory-history";
rev = "d2e291dd6434e340d9be0e15e1f5b94f32771c06";
hash = "sha256-VHRgrVCqzILqOes8VXGjSgLek38BFs9eijmp0JHtD5Q=";
};
2021-05-03 07:48:31 +03:00
};
2022-02-18 20:31:01 +03:00
in [fast-syntax-highlighting per-directory-history];
2021-05-03 07:48:31 +03:00
# xdg compliant
dotDir = ".config/zsh";
history.path = ".local/share/zsh/history";
envExtra = extraEnv;
2022-02-19 00:49:27 +03:00
loginExtra =
''
if [ "$(${pkgs.coreutils}/bin/tty)" = "/dev/tty1" ]; then
exec sway
fi
'';
2022-02-18 20:31:01 +03:00
initExtra =
''
2022-02-18 20:31:01 +03:00
export TERM=alacritty
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
2021-05-03 07:48:31 +03:00
2022-02-18 20:31:01 +03:00
function tomp4 () {
${pkgs.ffmpeg}/bin/ffmpeg -i $1 -c:v libx264 -preset slow -crf 30 -c:a aac -b:a 128k "$1.mp4"
}
2021-05-03 07:48:31 +03:00
2022-02-18 20:31:01 +03:00
function topng () {
${pkgs.ffmpeg}/bin/ffmpeg -i $1 "$1.png"
}
2021-05-03 07:48:31 +03:00
2022-02-18 20:31:01 +03:00
bindkey "$terminfo[kRIT5]" forward-word
bindkey "$terminfo[kLFT5]" backward-word
zstyle ':completion:*' menu select
2021-05-03 07:48:31 +03:00
2022-02-18 20:31:01 +03:00
eval "$(zoxide init zsh)"
2021-06-05 09:13:41 +03:00
'';
2022-02-18 20:31:01 +03:00
shellAliases =
nixosConfig.environment.shellAliases
// {
harmony-ssh =
''
${pkgs.mosh}/bin/mosh root@chat.harmonyapp.io
'';
};
2021-05-03 07:48:31 +03:00
};
fzf.enable = true;
2022-02-19 18:05:45 +03:00
rofi = {
enable = true;
package = pkgs.rofi-wayland;
cycle = true;
font = fontComb;
terminal = pkgBin "alacritty";
plugins = with pkgs; [
rofi-calc
rofi-systemd
rofi-file-browser
rofi-power-menu
];
extraConfig = {
modi = "drun,calc,file-browser-extended,ssh,keys";
2021-05-03 07:48:31 +03:00
};
2022-02-19 18:05:45 +03:00
};
2021-05-03 07:48:31 +03:00
vscode = {
2021-05-12 13:47:00 +03:00
enable = true;
2022-02-25 20:01:43 +03:00
package = pkgs.vscodium;
2021-05-03 07:48:31 +03:00
extensions =
let
2022-02-18 20:31:01 +03:00
mkExt =
n: v: p: s: {
name = n;
version = v;
publisher = p;
sha256 = s;
};
2021-05-03 07:48:31 +03:00
in
2022-02-18 20:31:01 +03:00
(
pkgs.vscode-utils.extensionsFromVscodeMarketplace
[
# Rust
(mkExt "rust-analyzer" "0.2.760" "matklad" "sha256-M+eFqIFwiKkiwqFRwkX5h6mc/W+NBqkXcNUdTewwkCI=")
(mkExt "even-better-toml" "0.14.2" "tamasfe" "sha256-lE2t+KUfClD/xjpvexTJlEr7Kufo+22DUM9Ju4Tisp0=")
(mkExt "crates" "0.5.9" "serayuzgur" "sha256-YHIbnl2R7lqwJHi8qUQImClx9MWm+5Pc12vYw7e/RlA=")
# Nix
(
mkExt "nix-env-selector" "1.0.7" "arrterian" "sha256-DnaIXJ27bcpOrIp1hm7DcrlIzGSjo4RTJ9fD72ukKlc="
)
# Go
(mkExt "Go" "0.25.1" "golang" "sha256-ZDUWN9lzDnR77W7xcMFQaaFl/6Lf/x1jgaBkwZPqGGw=")
# Flutter and dart
(mkExt "flutter" "3.22.0" "Dart-Code" "sha256-woygN6hOWlP2UayqwDhJh9KcZk1GzH7mDF5IueDRxs4=")
(mkExt "dart-code" "3.22.0" "Dart-Code" "sha256-1nTewVmlrxbXdRR1EPts46u24LHdnP5BblFsMaGlNYg=")
# protobuf
(mkExt "vscode-proto3" "0.5.4" "zxh404" "sha256-S89qRRlfiTsJ+fJuwdNkZywe6mei48KxIEWbGWChriE=")
(mkExt "vscode-buf" "0.3.1" "bufbuild" "sha256-KjU6WlDxYPPJjh45mCq6Kczi6odYwnLaGj4RHe3fc2w=")
# git
(mkExt "gitlens" "11.6.0" "eamodio" "sha256-JxCNE/IL/v94xWmhebsRZo1Gw+nSSpDgZ41ZGongGVI=")
(
mkExt
"vscode-commitizen"
"0.14.1"
"KnisterPeter"
"sha256-yw8XKGL7Ul9wV+C0yL1LFJCE3+E8u/sR9s3TjkGJPZM="
)
# Customization
# (mkExt "dance" "0.3.2" "gregoire" "sha256-+g8EXeCkPOPvZ60JoXkGTeSXYWrXmKrcbUaEfDppdgA=")
(mkExt "material-icon-theme" "4.6.0" "PKief" "sha256-i+3lrw3mDqK2vTMDhJYTACW5JleA+lN1XAC2imgQLUo=")
(
mkExt "github-vscode-theme" "4.1.1" "GitHub" "sha256-yLySHOx6pe7w2cyi95pQlKkn/o4VMCTkrTYHu8ASn5M="
)
(mkExt "koka" "0.0.1" "maelvalais" "sha256-ty8Mql19HgUWForggeZuHQpzTbmmB/eBFHqof5ZMKr0=")
(mkExt "vscode-rhai" "0.6.3" "rhaiscript" "sha256-gEdpM/TkkiZ50bG9qDU6BH04AJLRDcHLquniRs6m0mg=")
(mkExt "copilot" "1.2.1991" "GitHub" "sha256-pGb5xfjuy+g646doZEuKhQalkOte5dH+I+1op+vZY48=")
]
)
++ (
with pkgs.vscode-extensions; [
a5huynh.vscode-ron
/*
vadimcn.vscode-lldb
*/
jnoortheen.nix-ide
]
);
2021-05-03 07:48:31 +03:00
userSettings = {
"workbench.iconTheme" = "material-icon-theme";
"workbench.colorTheme" = "GitHub Dark";
"rust-analyzer.cargo.loadOutDirsFromCheck" = true;
"rust-analyzer.procMacro.enable" = true;
2022-02-18 20:31:01 +03:00
"rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
2021-08-20 15:45:45 +03:00
"rust-analyzer.updates.channel" = "nightly";
2021-05-03 07:48:31 +03:00
"editor.fontFamily" = "'${font}'";
"debug.console.fontFamily" = "${font}";
2021-06-23 19:49:50 +03:00
"debug.console.fontSize" = toString fontSize;
"terminal.integrated.fontSize" = toString fontSize;
2021-05-03 07:48:31 +03:00
"go.useLanguageServer" = true;
"rust-analyzer.checkOnSave.command" = "clippy";
2021-05-17 16:29:13 +03:00
"nix.enableLanguageServer" = true;
"nix.serverPath" = pkgBin "rnix-lsp";
2021-10-01 22:29:37 +03:00
"editor.bracketPairColorization.enabled" = true;
2021-05-03 07:48:31 +03:00
};
};
};
services = {
gpg-agent =
let
defaultCacheTtl = 3600 * 6;
maxCacheTtl = 3600 * 24;
2022-02-18 20:31:01 +03:00
in {
2021-05-03 07:48:31 +03:00
inherit defaultCacheTtl maxCacheTtl;
enable = true;
enableSshSupport = true;
2022-02-18 20:31:01 +03:00
sshKeys = ["8369D9CA26C3EAAAB8302A88CEE6FD14B58AA965"];
2021-05-03 07:48:31 +03:00
defaultCacheTtlSsh = defaultCacheTtl;
maxCacheTtlSsh = maxCacheTtl;
grabKeyboardAndMouse = false;
pinentryFlavor = "qt";
};
2022-02-19 01:06:10 +03:00
gammastep = {
enable = true;
latitude = 36.9;
longitude = 30.7;
};
2021-05-03 07:48:31 +03:00
};
2021-07-05 00:01:15 +03:00
xdg = {
enable = true;
configFile = {
2022-02-18 20:31:01 +03:00
"helix/themes/mytheme.toml".text =
''
"attribute" = { fg = "#${colorScheme.bright.yellow}]" }
"comment" = { fg = "#${colorScheme.normal.gray}", modifiers = ['italic'] }
"constant" = { fg = "#${colorScheme.normal.blue}" }
"constant.builtin" = { fg = "#${colorScheme.bright.blue}" }
"constructor" = { fg = "#${colorScheme.bright.blue}" }
"escape" = { fg = "#${colorScheme.bright.yellow}" }
"function" = { fg = "#${colorScheme.bright.blue}" }
"function.builtin" = { fg = "#${colorScheme.bright.blue}" }
"function.macro" = { fg = "#${colorScheme.bright.magenta}" }
"keyword" = { fg = "#${colorScheme.normal.magenta}", modifiers = ['italic'] }
"keyword.directive" = { fg = "#${colorScheme.normal.magenta}" }
"label" = { fg = "#${colorScheme.bright.magenta}" }
"namespace" = { fg = "#${colorScheme.bright.blue}" }
"number" = { fg = "#${colorScheme.normal.cyan}" }
"operator" = { fg = "#${colorScheme.bright.magenta}", modifiers = ['italic'] }
"property" = { fg = "#${colorScheme.normal.red}" }
"special" = { fg = "#${colorScheme.bright.blue}" }
"string" = { fg = "#${colorScheme.normal.green}" }
"type" = { fg = "#${colorScheme.normal.cyan}", modifiers = ['bold'] }
"type.builtin" = { fg = "#${colorScheme.normal.cyan}", modifiers = ['bold'] }
"variable" = { fg = "#${colorScheme.bright.blue}", modifiers = ['italic'] }
"variable.builtin" = { fg = "#${colorScheme.bright.blue}", modifiers = ['italic'] }
"variable.parameter" = { fg = "#${colorScheme.bright.red}", modifiers = ['italic'] }
"ui.menu.selected" = { fg = "#${bgColor}", bg = "#${acColor}" }
"ui.background" = { fg = "#${fgColor}", bg = "#${bgColor}" }
"ui.help" = { bg = "#${colorScheme.normal.black}" }
"ui.linenr" = { fg = "#${colorScheme.primary.bright.background}", modifiers = ['bold'] }
"ui.linenr.selected" = { fg = "#${fgColor}", modifiers = ['bold'] }
"ui.popup" = { bg = "#${colorScheme.normal.black}" }
"ui.statusline" = { fg = "#${fgColor}", bg = "#${bgColor}" }
"ui.statusline.inactive" = { fg = "#${fgColor}", bg = "#${bgColor}" }
"ui.selection" = { bg = "#${colorScheme.primary.bright.background}" }
"ui.text" = { fg = "#${fgColor}", bg = "#${bgColor}" }
"ui.text.focus" = { fg = "#${fgColor}", bg = "#${bgColor}", modifiers = ['bold'] }
"ui.window" = { bg = "#${bgColor}" }
"ui.cursor.primary" = { fg = "#${fgColor}", modifiers = ["reversed"] }
"info" = { fg = "#${colorScheme.normal.blue}", modifiers = ['bold'] }
"hint" = { fg = "#${colorScheme.bright.green}", modifiers = ['bold'] }
"warning" = { fg = "#${colorScheme.normal.yellow}", modifiers = ['bold'] }
"error" = { fg = "#${colorScheme.bright.red}", modifiers = ['bold'] }
'';
"helix/config.toml".text =
''
theme = "mytheme"
[editor]
line-number = "relative"
[lsp]
display-messages = true
'';
"helix/languages.toml".text =
''
[[language]]
name = "nix"
language-server = { command = "${pkgBin "rnix-lsp"}" }
'';
2021-07-05 00:01:15 +03:00
"waybar/config".text =
2022-02-18 20:31:01 +03:00
let
swayEnabled = config.wayland.windowManager.sway.enable;
in
builtins.toJSON
{
layer = "top";
position = "top";
modules-left =
if swayEnabled
then ["sway/workspaces"]
else [];
modules-center =
if swayEnabled
then ["sway/window"]
else [];
modules-right = ["pulseaudio" "cpu" "memory" "temperature" "clock" "tray"];
tray = { spacing = 8; };
cpu = { format = "/cpu {usage}/"; };
memory = { format = "/mem {}/"; };
temperature = {
hwmon-path = "/sys/class/hwmon/hwmon1/temp2_input";
format = "/tmp {temperatureC}C/";
};
pulseaudio = {
format = "/vol {volume}/ {format_source}";
format-bluetooth = "/volb {volume}/ {format_source}";
format-bluetooth-muted = "/volb/ {format_source}";
format-muted = "/vol/ {format_source}";
format-source = "/mic {volume}/";
format-source-muted = "/mic/";
};
2021-07-05 00:01:15 +03:00
};
"waybar/style.css".text =
let
makeBorder = color: "border-bottom: 3px solid #${color};";
2022-02-18 20:31:01 +03:00
makeInfo =
color: ''
color: #${color};
${makeBorder color}
'';
2021-07-05 00:01:15 +03:00
clockColor = colorScheme.bright.magenta;
cpuColor = colorScheme.bright.green;
memColor = colorScheme.bright.blue;
pulseColor = {
normal = colorScheme.bright.cyan;
muted = colorScheme.bright.gray;
};
tmpColor = {
normal = colorScheme.bright.yellow;
critical = colorScheme.bright.red;
};
2022-02-18 20:31:01 +03:00
in ''
2021-07-05 00:01:15 +03:00
* {
border: none;
border-radius: 0;
/* `otf-font-awesome` is required to be installed for icons */
font-family: ${font};
font-size: ${toString fontSize}px;
min-height: 0;
}
window#waybar {
background-color: #${bgColor};
/* border-bottom: 0px solid rgba(100, 114, 125, 0.5); */
color: #${fgColor};
transition-property: background-color;
transition-duration: .5s;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #${fgColor};
border-bottom: 3px solid transparent;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
box-shadow: inherit;
border-bottom: 3px solid #ffffff;
}
#workspaces button.focused {
border-bottom: 3px solid #${acColor};
}
#workspaces button.urgent {
background-color: #${acColor};
color: #${bgColor};
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#temperature,
#backlight,
#network,
#pulseaudio,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#mpd {
padding: 0 10px;
margin: 0 4px;
background-color: transparent;
${makeInfo fgColor}
}
label:focus {
color: #000000;
}
#clock {
${makeInfo clockColor}
}
#cpu {
${makeInfo cpuColor}
}
#memory {
${makeInfo memColor}
}
#pulseaudio {
${makeInfo pulseColor.normal}
}
#pulseaudio.muted {
${makeInfo pulseColor.muted}
}
#temperature {
${makeInfo tmpColor.normal}
}
#temperature.critical {
${makeInfo tmpColor.critical}
}
'';
};
};
2021-05-03 07:48:31 +03:00
};
2020-11-21 23:54:07 +03:00
}