neovim lspconfig
This commit is contained in:
parent
fb5c04a84a
commit
34aaaf63d2
29 changed files with 1705 additions and 1399 deletions
|
|
@ -1,79 +1,120 @@
|
||||||
{ lib, stdenv, fetchurl, wrapGAppsHook, makeWrapper
|
{
|
||||||
, dpkg
|
lib,
|
||||||
, alsa-lib
|
stdenv,
|
||||||
, at-spi2-atk
|
fetchurl,
|
||||||
, at-spi2-core
|
wrapGAppsHook,
|
||||||
, atk
|
makeWrapper,
|
||||||
, cairo
|
dpkg,
|
||||||
, cups
|
alsa-lib,
|
||||||
, dbus
|
at-spi2-atk,
|
||||||
, expat
|
at-spi2-core,
|
||||||
, fontconfig
|
atk,
|
||||||
, freetype
|
cairo,
|
||||||
, gdk-pixbuf
|
cups,
|
||||||
, glib
|
dbus,
|
||||||
, gnome
|
expat,
|
||||||
, gsettings-desktop-schemas
|
fontconfig,
|
||||||
, gtk3
|
freetype,
|
||||||
, libuuid
|
gdk-pixbuf,
|
||||||
, libdrm
|
glib,
|
||||||
, libX11
|
gnome,
|
||||||
, libXcomposite
|
gsettings-desktop-schemas,
|
||||||
, libXcursor
|
gtk3,
|
||||||
, libXdamage
|
libuuid,
|
||||||
, libXext
|
libdrm,
|
||||||
, libXfixes
|
libX11,
|
||||||
, libXi
|
libXcomposite,
|
||||||
, libxkbcommon
|
libXcursor,
|
||||||
, libXrandr
|
libXdamage,
|
||||||
, libXrender
|
libXext,
|
||||||
, libXScrnSaver
|
libXfixes,
|
||||||
, libxshmfence
|
libXi,
|
||||||
, libXtst
|
libxkbcommon,
|
||||||
, mesa
|
libXrandr,
|
||||||
, nspr
|
libXrender,
|
||||||
, nss
|
libXScrnSaver,
|
||||||
, pango
|
libxshmfence,
|
||||||
, pipewire
|
libXtst,
|
||||||
, udev
|
mesa,
|
||||||
, wayland
|
nspr,
|
||||||
, xorg
|
nss,
|
||||||
, zlib
|
pango,
|
||||||
, xdg-utils
|
pipewire,
|
||||||
, snappy
|
udev,
|
||||||
|
wayland,
|
||||||
|
xorg,
|
||||||
|
zlib,
|
||||||
|
xdg-utils,
|
||||||
|
snappy,
|
||||||
# command line arguments which are always set e.g "--disable-gpu"
|
# command line arguments which are always set e.g "--disable-gpu"
|
||||||
, commandLineArgs ? ""
|
commandLineArgs ? "",
|
||||||
|
|
||||||
# Necessary for USB audio devices.
|
# Necessary for USB audio devices.
|
||||||
, pulseSupport ? stdenv.isLinux
|
pulseSupport ? stdenv.isLinux,
|
||||||
, libpulseaudio
|
libpulseaudio,
|
||||||
|
|
||||||
# For GPU acceleration support on Wayland (without the lib it doesn't seem to work)
|
# For GPU acceleration support on Wayland (without the lib it doesn't seem to work)
|
||||||
, libGL
|
libGL,
|
||||||
|
|
||||||
# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder)
|
# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder)
|
||||||
, libvaSupport ? stdenv.isLinux
|
libvaSupport ? stdenv.isLinux,
|
||||||
, libva
|
libva,
|
||||||
, enableVideoAcceleration ? libvaSupport
|
enableVideoAcceleration ? libvaSupport,
|
||||||
|
|
||||||
# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API
|
# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API
|
||||||
, vulkanSupport ? false
|
vulkanSupport ? false,
|
||||||
, addOpenGLRunpath
|
addOpenGLRunpath,
|
||||||
, enableVulkan ? vulkanSupport
|
enableVulkan ? vulkanSupport,
|
||||||
}:
|
}: let
|
||||||
|
inherit
|
||||||
|
(lib)
|
||||||
|
optional
|
||||||
|
optionals
|
||||||
|
makeLibraryPath
|
||||||
|
makeSearchPathOutput
|
||||||
|
makeBinPath
|
||||||
|
optionalString
|
||||||
|
strings
|
||||||
|
escapeShellArg
|
||||||
|
;
|
||||||
|
|
||||||
let
|
deps =
|
||||||
inherit (lib) optional optionals makeLibraryPath makeSearchPathOutput makeBinPath
|
[
|
||||||
optionalString strings escapeShellArg;
|
alsa-lib
|
||||||
|
at-spi2-atk
|
||||||
deps = [
|
at-spi2-core
|
||||||
alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat
|
atk
|
||||||
fontconfig freetype gdk-pixbuf glib gtk3 libdrm libX11 libGL
|
cairo
|
||||||
libxkbcommon libXScrnSaver libXcomposite libXcursor libXdamage
|
cups
|
||||||
libXext libXfixes libXi libXrandr libXrender libxshmfence
|
dbus
|
||||||
libXtst libuuid mesa nspr nss pango pipewire udev wayland
|
expat
|
||||||
xorg.libxcb zlib snappy
|
fontconfig
|
||||||
|
freetype
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
libdrm
|
||||||
|
libX11
|
||||||
|
libGL
|
||||||
|
libxkbcommon
|
||||||
|
libXScrnSaver
|
||||||
|
libXcomposite
|
||||||
|
libXcursor
|
||||||
|
libXdamage
|
||||||
|
libXext
|
||||||
|
libXfixes
|
||||||
|
libXi
|
||||||
|
libXrandr
|
||||||
|
libXrender
|
||||||
|
libxshmfence
|
||||||
|
libXtst
|
||||||
|
libuuid
|
||||||
|
mesa
|
||||||
|
nspr
|
||||||
|
nss
|
||||||
|
pango
|
||||||
|
pipewire
|
||||||
|
udev
|
||||||
|
wayland
|
||||||
|
xorg.libxcb
|
||||||
|
zlib
|
||||||
|
snappy
|
||||||
]
|
]
|
||||||
++ optional pulseSupport libpulseaudio
|
++ optional pulseSupport libpulseaudio
|
||||||
++ optional libvaSupport libva;
|
++ optional libvaSupport libva;
|
||||||
|
|
@ -81,14 +122,14 @@ let
|
||||||
rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
|
rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
|
||||||
binpath = makeBinPath deps;
|
binpath = makeBinPath deps;
|
||||||
|
|
||||||
enableFeatures = optionals enableVideoAcceleration [ "VaapiVideoDecoder" "VaapiVideoEncoder" ]
|
enableFeatures =
|
||||||
|
optionals enableVideoAcceleration ["VaapiVideoDecoder" "VaapiVideoEncoder"]
|
||||||
++ optional enableVulkan "Vulkan";
|
++ optional enableVulkan "Vulkan";
|
||||||
|
|
||||||
# The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935
|
# The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935
|
||||||
disableFeatures = optional enableVideoAcceleration "UseChromeOSDirectVideoDecoder";
|
disableFeatures = optional enableVideoAcceleration "UseChromeOSDirectVideoDecoder";
|
||||||
braveChannel = "nightly";
|
braveChannel = "nightly";
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "brave-${braveChannel}";
|
pname = "brave-${braveChannel}";
|
||||||
version = "1.52.54";
|
version = "1.52.54";
|
||||||
|
|
@ -110,7 +151,9 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
# needed for GSETTINGS_SCHEMAS_PATH
|
# needed for GSETTINGS_SCHEMAS_PATH
|
||||||
glib gsettings-desktop-schemas gtk3
|
glib
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
gtk3
|
||||||
|
|
||||||
# needed for XDG_ICON_DIRS
|
# needed for XDG_ICON_DIRS
|
||||||
gnome.adwaita-icon-theme
|
gnome.adwaita-icon-theme
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
{ lib
|
{
|
||||||
, stdenv
|
lib,
|
||||||
, buildGoModule
|
stdenv,
|
||||||
, fetchFromGitHub
|
buildGoModule,
|
||||||
, installShellFiles
|
fetchFromGitHub,
|
||||||
|
installShellFiles,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "lf";
|
pname = "lf";
|
||||||
version = "28-1";
|
version = "28-1";
|
||||||
|
|
|
||||||
12
flake.nix
12
flake.nix
|
|
@ -13,16 +13,20 @@
|
||||||
stylix.url = "github:danth/stylix";
|
stylix.url = "github:danth/stylix";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { nixpkgs, home-manager, hyprland, stylix, ... } @inputs :
|
outputs = {
|
||||||
let
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
|
hyprland,
|
||||||
|
stylix,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
lib = nixpkgs.lib;
|
lib = nixpkgs.lib;
|
||||||
mkConf = import ./lib/mkconf.nix;
|
mkConf = import ./lib/mkconf.nix;
|
||||||
|
|
||||||
user = "tristan";
|
user = "tristan";
|
||||||
userName = "Tristan Beedell";
|
userName = "Tristan Beedell";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
zenix = mkConf "zenix" {
|
zenix = mkConf "zenix" {
|
||||||
inherit inputs nixpkgs system user userName home-manager;
|
inherit inputs nixpkgs system user userName home-manager;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,10 @@
|
||||||
{ config, pkgs, name, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
name,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
# https://nix-community.github.io/home-manager/options.html
|
# https://nix-community.github.io/home-manager/options.html
|
||||||
let
|
let
|
||||||
my-deps = {
|
my-deps = {
|
||||||
|
|
@ -22,8 +28,7 @@ let
|
||||||
ffmpegthumbnailer = "${pkgs.ffmpegthumbnailer}/bin/ffmpegthumbnailer";
|
ffmpegthumbnailer = "${pkgs.ffmpegthumbnailer}/bin/ffmpegthumbnailer";
|
||||||
};
|
};
|
||||||
lf-sixel = pkgs.callPackage ../custom/lf-sixel/. {};
|
lf-sixel = pkgs.callPackage ../custom/lf-sixel/. {};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home.username = "tristan";
|
home.username = "tristan";
|
||||||
|
|
@ -31,7 +36,7 @@ in
|
||||||
|
|
||||||
xdg.userDirs.enable = true;
|
xdg.userDirs.enable = true;
|
||||||
|
|
||||||
home.packages = (with pkgs; [
|
home.packages = with pkgs; [
|
||||||
libnotify
|
libnotify
|
||||||
dig
|
dig
|
||||||
jq
|
jq
|
||||||
|
|
@ -66,7 +71,7 @@ in
|
||||||
desktopName = "Logseq";
|
desktopName = "Logseq";
|
||||||
exec = "${logseq}/bin/logseq --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --disable-gpu";
|
exec = "${logseq}/bin/logseq --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --disable-gpu";
|
||||||
})
|
})
|
||||||
]);
|
];
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -334,6 +339,4 @@ in
|
||||||
pdf-engine = "xelatex";
|
pdf-engine = "xelatex";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
# https://search.nixos.org/options
|
# https://search.nixos.org/options
|
||||||
|
user: {
|
||||||
user: { config, pkgs, lib, ... }:
|
config,
|
||||||
{
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home-manager.users.${user}.imports = [
|
home-manager.users.${user}.imports = [
|
||||||
./home.nix
|
./home.nix
|
||||||
];
|
];
|
||||||
|
|
@ -15,7 +17,6 @@ user: { config, pkgs, lib, ... }:
|
||||||
"electron-25.9.0"
|
"electron-25.9.0"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
nix.settings.trusted-users = ["root" user];
|
nix.settings.trusted-users = ["root" user];
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
@ -48,11 +49,26 @@ user: { config, pkgs, lib, ... }:
|
||||||
networking.firewall.allowedTCPPorts = [4713];
|
networking.firewall.allowedTCPPorts = [4713];
|
||||||
|
|
||||||
# kde connect
|
# kde connect
|
||||||
networking.firewall.allowedTCPPortRanges = [{ from = 1714; to = 1764; }];
|
networking.firewall.allowedTCPPortRanges = [
|
||||||
networking.firewall.allowedUDPPortRanges = [{ from = 1714; to = 1764; }];
|
{
|
||||||
|
from = 1714;
|
||||||
|
to = 1764;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
networking.firewall.allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 1714;
|
||||||
|
to = 1764;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
networking.firewall.interfaces.tailscale0 = {
|
networking.firewall.interfaces.tailscale0 = {
|
||||||
allowedTCPPortRanges = [{ from = 0; to = 65535; }];
|
allowedTCPPortRanges = [
|
||||||
|
{
|
||||||
|
from = 0;
|
||||||
|
to = 65535;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.avahi.enable = true;
|
services.avahi.enable = true;
|
||||||
|
|
@ -119,30 +135,6 @@ user: { config, pkgs, lib, ... }:
|
||||||
trash-cli
|
trash-cli
|
||||||
wget
|
wget
|
||||||
unzip
|
unzip
|
||||||
(neovim.override {
|
|
||||||
vimAlias = true;
|
|
||||||
configure = {
|
|
||||||
packages.myPlugins = with pkgs.vimPlugins; {
|
|
||||||
start = [ vim-surround vim-commentary vim-nix ];
|
|
||||||
opt = [ ];
|
|
||||||
};
|
|
||||||
customRC = ''
|
|
||||||
vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR>
|
|
||||||
vnoremap <C-R> "ry:%s/<C-R>=escape(@r,'/\')<CR>
|
|
||||||
vnoremap A :norm A
|
|
||||||
set number
|
|
||||||
set rnu
|
|
||||||
set ignorecase
|
|
||||||
set smartcase
|
|
||||||
set mouse=a
|
|
||||||
set path=.,**
|
|
||||||
let g:netrw_banner=0
|
|
||||||
let g:netrw_liststyle=3
|
|
||||||
set undofile
|
|
||||||
set undodir=~/.local/share/nvim/undo
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
services.dbus.enable = true;
|
services.dbus.enable = true;
|
||||||
|
|
@ -184,6 +176,4 @@ user: { config, pkgs, lib, ... }:
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
|
|
||||||
services.prometheus.exporters.node.enable = true;
|
services.prometheus.exporters.node.enable = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,26 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
displays = {
|
displays = {
|
||||||
enable = true;
|
enable = true;
|
||||||
displays = [
|
displays = [
|
||||||
{
|
{
|
||||||
name = "DP-1";
|
name = "DP-1";
|
||||||
description = "HP Inc. HP 24x 1CR9500W9Q";
|
description = "HP Inc. HP 24x 1CR9500W9Q";
|
||||||
resolution = { x = 1920; y = 1080; freq = 144; };
|
resolution = {
|
||||||
|
x = 1920;
|
||||||
|
y = 1080;
|
||||||
|
freq = 144;
|
||||||
|
};
|
||||||
position.x = 0;
|
position.x = 0;
|
||||||
position.y = 0;
|
position.y = 0;
|
||||||
wallpaper = "/home/tristan/Pictures/backgrounds/demonslayer.jpg";
|
wallpaper = "/home/tristan/Pictures/backgrounds/demonslayer.jpg";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "HDMI-A-1";
|
name = "HDMI-A-1";
|
||||||
resolution = { x = 1920; y = 1080; freq = 60; };
|
resolution = {
|
||||||
|
x = 1920;
|
||||||
|
y = 1080;
|
||||||
|
freq = 60;
|
||||||
|
};
|
||||||
position = {
|
position = {
|
||||||
x = 1920;
|
x = 1920;
|
||||||
y = 0;
|
y = 0;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
{user}: { config, lib, pkgs, modulesPath, ... }:
|
{user}: {
|
||||||
|
config,
|
||||||
{
|
lib,
|
||||||
imports =
|
pkgs,
|
||||||
[
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
./displays.nix
|
./displays.nix
|
||||||
];
|
];
|
||||||
|
|
@ -12,8 +15,7 @@
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = ["kvm-intel"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/48a07e82-1090-448c-a751-3a410afba0f7";
|
device = "/dev/disk/by-uuid/48a07e82-1090-448c-a751-3a410afba0f7";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@" "compress=zstd" "autodefrag"];
|
options = ["subvol=@" "compress=zstd" "autodefrag"];
|
||||||
|
|
@ -40,22 +42,19 @@
|
||||||
preLVM = false;
|
preLVM = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/48a07e82-1090-448c-a751-3a410afba0f7";
|
device = "/dev/disk/by-uuid/48a07e82-1090-448c-a751-3a410afba0f7";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@home" "compress=zstd" "autodefrag"];
|
options = ["subvol=@home" "compress=zstd" "autodefrag"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/swap" =
|
fileSystems."/swap" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/48a07e82-1090-448c-a751-3a410afba0f7";
|
device = "/dev/disk/by-uuid/48a07e82-1090-448c-a751-3a410afba0f7";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@swap"];
|
options = ["subvol=@swap"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/EED9-A165";
|
device = "/dev/disk/by-uuid/EED9-A165";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
@ -89,12 +88,13 @@
|
||||||
networking.hostName = "FCS-Tristan-Nixbook";
|
networking.hostName = "FCS-Tristan-Nixbook";
|
||||||
|
|
||||||
system.stateVersion = "22.11"; # do not change
|
system.stateVersion = "22.11"; # do not change
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
home.stateVersion = "22.05";
|
home.stateVersion = "22.05";
|
||||||
|
|
||||||
programs.waybar.settings.mainBar."hyprland/workspaces".persistent_workspaces = {
|
programs.waybar.settings.mainBar."hyprland/workspaces".persistent_workspaces = {
|
||||||
eDP-1 = 5;
|
eDP-1 = 5;
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
{user}: { config, lib, pkgs, modulesPath, ... }:
|
{user}: {
|
||||||
|
config,
|
||||||
{
|
lib,
|
||||||
imports =
|
pkgs,
|
||||||
[
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
./displays.nix
|
./displays.nix
|
||||||
];
|
];
|
||||||
|
|
@ -12,8 +15,7 @@
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/2dad5ed6-44cc-4d9d-9392-32afaa7b3909";
|
device = "/dev/disk/by-uuid/2dad5ed6-44cc-4d9d-9392-32afaa7b3909";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@" "compress=zstd" "autodefrag"];
|
options = ["subvol=@" "compress=zstd" "autodefrag"];
|
||||||
|
|
@ -43,21 +45,18 @@
|
||||||
preLVM = false;
|
preLVM = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" =
|
fileSystems."/home" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/2dad5ed6-44cc-4d9d-9392-32afaa7b3909";
|
device = "/dev/disk/by-uuid/2dad5ed6-44cc-4d9d-9392-32afaa7b3909";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@home" "compress=zstd" "autodefrag"];
|
options = ["subvol=@home" "compress=zstd" "autodefrag"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/FE7E-0DE3";
|
device = "/dev/disk/by-uuid/FE7E-0DE3";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [{device = "/dev/disk/by-uuid/da57b489-ab77-4830-b710-9f96cf43d053";}];
|
||||||
[{ device = "/dev/disk/by-uuid/da57b489-ab77-4830-b710-9f96cf43d053"; }];
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|
@ -85,7 +84,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
home.stateVersion = "22.05";
|
home.stateVersion = "22.05";
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
|
|
@ -101,7 +101,6 @@
|
||||||
programs.waybar.settings.mainBar."hyprland/workspaces".persistent_workspaces = {
|
programs.waybar.settings.mainBar."hyprland/workspaces".persistent_workspaces = {
|
||||||
DP-1 = 5;
|
DP-1 = 5;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
}];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
20
lib/home.nix
20
lib/home.nix
|
|
@ -1,12 +1,15 @@
|
||||||
{ user
|
|
||||||
, name
|
|
||||||
, work ? false
|
|
||||||
, displays ? [ ]
|
|
||||||
, userName
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
user,
|
||||||
|
name,
|
||||||
|
work ? false,
|
||||||
|
displays ? [],
|
||||||
|
userName,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
(import ./modules/terminal.nix {inherit user;})
|
(import ./modules/terminal.nix {inherit user;})
|
||||||
(import ./modules/scripts.nix {inherit user;})
|
(import ./modules/scripts.nix {inherit user;})
|
||||||
|
|
@ -35,5 +38,4 @@
|
||||||
roles.personal.enable = !work;
|
roles.personal.enable = !work;
|
||||||
roles.mpd.enable = true;
|
roles.mpd.enable = true;
|
||||||
programs.editor.neovim = true;
|
programs.editor.neovim = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
name: { pkgs, app-id, browser, desktopName, ... }:
|
name: {
|
||||||
|
pkgs,
|
||||||
|
app-id,
|
||||||
|
browser,
|
||||||
|
desktopName,
|
||||||
|
...
|
||||||
|
}:
|
||||||
pkgs.makeDesktopItem {
|
pkgs.makeDesktopItem {
|
||||||
name = "${name}";
|
name = "${name}";
|
||||||
desktopName = "${desktopName}";
|
desktopName = "${desktopName}";
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,25 @@
|
||||||
name:
|
name: {
|
||||||
{ nixpkgs
|
nixpkgs,
|
||||||
, inputs
|
inputs,
|
||||||
, home-manager
|
home-manager,
|
||||||
, system
|
system,
|
||||||
, user
|
user,
|
||||||
, laptop ? false
|
laptop ? false,
|
||||||
, work ? false
|
work ? false,
|
||||||
, userName
|
userName,
|
||||||
, ...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
nixpkgs.lib.nixosSystem rec {
|
nixpkgs.lib.nixosSystem rec {
|
||||||
specialArgs = {inherit inputs;};
|
specialArgs = {inherit inputs;};
|
||||||
|
|
||||||
inherit system;
|
inherit system;
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
|
({
|
||||||
({ inputs, pkgs, ... }: {
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
{ user, ... }: { lib, pkgs, config, ... }:
|
{user, ...}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.roles.dev;
|
cfg = config.roles.dev;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.roles = {
|
options.roles = {
|
||||||
dev = {
|
dev = {
|
||||||
enable = mkEnableOption "editor";
|
enable = mkEnableOption "editor";
|
||||||
|
|
@ -14,14 +17,16 @@ in
|
||||||
programs.editor.enable = true;
|
programs.editor.enable = true;
|
||||||
roles.git.enable = true;
|
roles.git.enable = true;
|
||||||
programs.terminal.enable = true;
|
programs.terminal.enable = true;
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
home.packages = (with pkgs; [
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
insomnia
|
insomnia
|
||||||
dbeaver
|
dbeaver
|
||||||
ansible
|
ansible
|
||||||
tig
|
tig
|
||||||
fx
|
fx
|
||||||
]);
|
];
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,34 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.displays;
|
cfg = config.displays;
|
||||||
|
|
||||||
renderDisplaysForHyprland = displays: (map displayHyprlandSetting displays);
|
renderDisplaysForHyprland = displays: (map displayHyprlandSetting displays);
|
||||||
|
|
||||||
displayHyprlandSetting = display: specificDisplay display +
|
displayHyprlandSetting = display:
|
||||||
", " + resToString display.resolution +
|
specificDisplay display
|
||||||
", " + positionToHyprlandString display.position +
|
+ ", "
|
||||||
", " + toString display.scaling +
|
+ resToString display.resolution
|
||||||
", " + "transform," + toString display.rotation;
|
+ ", "
|
||||||
|
+ positionToHyprlandString display.position
|
||||||
|
+ ", "
|
||||||
|
+ toString display.scaling
|
||||||
|
+ ", "
|
||||||
|
+ "transform,"
|
||||||
|
+ toString display.rotation;
|
||||||
|
|
||||||
swaybgJob = displays:
|
swaybgJob = displays: {
|
||||||
{
|
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "SwayBG";
|
Description = "SwayBG";
|
||||||
};
|
};
|
||||||
Service = {
|
Service = {
|
||||||
ExecStart = "${pkgs.swaybg}/bin/swaybg " +
|
ExecStart =
|
||||||
concatStringsSep " " (map swaybgCmd displays);
|
"${pkgs.swaybg}/bin/swaybg "
|
||||||
|
+ concatStringsSep " " (map swaybgCmd displays);
|
||||||
};
|
};
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = ["graphical-session.target"];
|
WantedBy = ["graphical-session.target"];
|
||||||
|
|
@ -26,32 +36,45 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
swaybgCmd = display:
|
swaybgCmd = display:
|
||||||
if (display.wallpaper != "") then "-o ${display.name} -i ${display.wallpaper} -m fill" else "";
|
if (display.wallpaper != "")
|
||||||
|
then "-o ${display.name} -i ${display.wallpaper} -m fill"
|
||||||
|
else "";
|
||||||
|
|
||||||
specificDisplay = display:
|
specificDisplay = display:
|
||||||
if display.description == ""
|
if display.description == ""
|
||||||
then display.name
|
then display.name
|
||||||
else "desc:" + display.description;
|
else "desc:" + display.description;
|
||||||
|
|
||||||
positionToHyprlandString = { x, y }:
|
positionToHyprlandString = {
|
||||||
if (x == -1 || y == -1) then "auto" else toString x + "x" + toString y;
|
x,
|
||||||
|
y,
|
||||||
|
}:
|
||||||
|
if (x == -1 || y == -1)
|
||||||
|
then "auto"
|
||||||
|
else toString x + "x" + toString y;
|
||||||
|
|
||||||
renderDisplaysForSway = displays:
|
renderDisplaysForSway = displays:
|
||||||
listToAttrs (map displaySwaySetting displays);
|
listToAttrs (map displaySwaySetting displays);
|
||||||
|
|
||||||
displaySwaySetting = display: {
|
displaySwaySetting = display: {
|
||||||
name = display.name;
|
name = display.name;
|
||||||
value = let res = display.resolution; in
|
value = let
|
||||||
{
|
res = display.resolution;
|
||||||
mode = mkIf (!resUnset res)
|
in {
|
||||||
|
mode =
|
||||||
|
mkIf (!resUnset res)
|
||||||
"${toString res.x}x${toString res.y}@${toString res.freq}Hz";
|
"${toString res.x}x${toString res.y}@${toString res.freq}Hz";
|
||||||
bg = display.wallpaper + " fill";
|
bg = display.wallpaper + " fill";
|
||||||
scale = toString display.scaling;
|
scale = toString display.scaling;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
resolutionType = types.submodule ({ x, y, freq, ... }:
|
resolutionType = types.submodule ({
|
||||||
{
|
x,
|
||||||
|
y,
|
||||||
|
freq,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
options = {
|
options = {
|
||||||
x = mkOption {
|
x = mkOption {
|
||||||
description = "x";
|
description = "x";
|
||||||
|
|
@ -70,7 +93,8 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
displayType = types.submodule
|
displayType =
|
||||||
|
types.submodule
|
||||||
({...}: {
|
({...}: {
|
||||||
options = {
|
options = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
|
|
@ -108,18 +132,14 @@ let
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
resUnset = res:
|
resUnset = res: (res.x == 0 || res.y == 0 || res.freq == 0);
|
||||||
(res.x == 0 || res.y == 0 || res.freq == 0);
|
|
||||||
|
|
||||||
resToString = res:
|
resToString = res:
|
||||||
if resUnset res
|
if resUnset res
|
||||||
then "preferred"
|
then "preferred"
|
||||||
else "${toString res.x}x${toString res.y}@${toString res.freq}";
|
else "${toString res.x}x${toString res.y}@${toString res.freq}";
|
||||||
|
in {
|
||||||
in
|
options.displays = {
|
||||||
{
|
|
||||||
options.displays =
|
|
||||||
{
|
|
||||||
enable = mkEnableOption "manage displays";
|
enable = mkEnableOption "manage displays";
|
||||||
displays = mkOption {
|
displays = mkOption {
|
||||||
type = types.listOf displayType;
|
type = types.listOf displayType;
|
||||||
|
|
@ -130,14 +150,15 @@ in
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.${user}.imports = [
|
home-manager.users.${user}.imports = [
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings.monitor = mkIf (cfg.displays != [ ])
|
wayland.windowManager.hyprland.settings.monitor =
|
||||||
|
mkIf (cfg.displays != [])
|
||||||
(renderDisplaysForHyprland cfg.displays);
|
(renderDisplaysForHyprland cfg.displays);
|
||||||
|
|
||||||
systemd.user.services.swaybg = swaybgJob cfg.displays;
|
systemd.user.services.swaybg = swaybgJob cfg.displays;
|
||||||
wayland.windowManager.sway.config.output = mkIf (cfg.displays != [ ])
|
wayland.windowManager.sway.config.output =
|
||||||
|
mkIf (cfg.displays != [])
|
||||||
(renderDisplaysForSway cfg.displays);
|
(renderDisplaysForSway cfg.displays);
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,16 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
editor = config.programs.editor;
|
editor = config.programs.editor;
|
||||||
pkg = editor.package;
|
pkg = editor.package;
|
||||||
terminal = config.programs.terminal.package;
|
terminal = config.programs.terminal.package;
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.programs = {
|
options.programs = {
|
||||||
editor = {
|
editor = {
|
||||||
enable = mkEnableOption "editor";
|
enable = mkEnableOption "editor";
|
||||||
|
|
@ -19,77 +22,78 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf editor.enable {
|
config = mkIf editor.enable {
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = editor.package;
|
package = editor.package;
|
||||||
extensions =
|
extensions =
|
||||||
if editor.neovim then with pkgs; [
|
if editor.neovim
|
||||||
|
then
|
||||||
|
with pkgs; [
|
||||||
vscode-extensions.asvetliakov.vscode-neovim
|
vscode-extensions.asvetliakov.vscode-neovim
|
||||||
] else [ ];
|
]
|
||||||
userSettings = {
|
else [];
|
||||||
|
userSettings =
|
||||||
|
{
|
||||||
"keyboard.dispatch" = "keyCode";
|
"keyboard.dispatch" = "keyCode";
|
||||||
"terminal.integrated.sendKeybindingsToShell" = true;
|
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||||
"aws.telemetry" = false;
|
"aws.telemetry" = false;
|
||||||
"gitlens.telemetry.enabled" = false;
|
"gitlens.telemetry.enabled" = false;
|
||||||
"redhat.telemetry.enabled" = false;
|
"redhat.telemetry.enabled" = false;
|
||||||
"cSpell.language" = "en,en-GB";
|
"cSpell.language" = "en,en-GB";
|
||||||
} // (if editor.neovim then {
|
}
|
||||||
|
// (
|
||||||
|
if editor.neovim
|
||||||
|
then {
|
||||||
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
||||||
"extensions.experimental.affinity" = {
|
"extensions.experimental.affinity" = {
|
||||||
"asvetliakov.vscode-neovim" = 1;
|
"asvetliakov.vscode-neovim" = 1;
|
||||||
};
|
};
|
||||||
} else { });
|
}
|
||||||
|
else {}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.neovim = mkIf editor.neovim {
|
programs.neovim = mkIf editor.neovim {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
coc = {
|
extraLuaConfig = ''
|
||||||
enable = true;
|
${builtins.readFile ./neovim/config.lua}
|
||||||
settings = {
|
|
||||||
languageserver = {
|
|
||||||
go = {
|
|
||||||
command = "${pkgs.gopls}/bin/gopls";
|
|
||||||
filetypes = [ "go" ];
|
|
||||||
};
|
|
||||||
nix = {
|
|
||||||
command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
|
|
||||||
filetypes = [ "nix" ];
|
|
||||||
};
|
|
||||||
typescript = {
|
|
||||||
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
|
|
||||||
filetypes = [ "ts" "tsx" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR>
|
|
||||||
vnoremap <C-R> "ry:%s/<C-R>=escape(@r,'/\')<CR>
|
|
||||||
vnoremap A :norm A
|
|
||||||
noremap <C-S-I> :CocCommand editor.action.formatDocument<CR>
|
|
||||||
set number
|
|
||||||
set rnu
|
|
||||||
set ignorecase
|
|
||||||
set smartcase
|
|
||||||
set mouse=a
|
|
||||||
set path=.,**
|
|
||||||
let g:netrw_banner=0
|
|
||||||
let g:netrw_liststyle=3
|
|
||||||
set undofile
|
|
||||||
set undodir=~/.local/share/nvim/undo
|
|
||||||
'';
|
'';
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
nodePackages_latest.typescript-language-server
|
||||||
|
vscode-langservers-extracted
|
||||||
|
gopls
|
||||||
|
nil
|
||||||
|
];
|
||||||
plugins = with pkgs.vimPlugins; [
|
plugins = with pkgs.vimPlugins; [
|
||||||
vim-surround
|
vim-surround
|
||||||
vim-commentary
|
vim-commentary
|
||||||
|
{
|
||||||
|
plugin = telescope-nvim;
|
||||||
|
type = "lua";
|
||||||
|
config = ''
|
||||||
|
local builtin = require('telescope.builtin')
|
||||||
|
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||||
|
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||||
|
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||||
|
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = nvim-lspconfig;
|
||||||
|
type = "lua";
|
||||||
|
config = builtins.readFile ./neovim/lspconfig.lua;
|
||||||
|
}
|
||||||
firenvim
|
firenvim
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
}];
|
programs.scripts = [
|
||||||
|
{
|
||||||
programs.scripts = [{
|
|
||||||
name = "open-code";
|
name = "open-code";
|
||||||
text = ''
|
text = ''
|
||||||
code_dir=~/Documents/code
|
code_dir=~/Documents/code
|
||||||
|
|
@ -104,7 +108,7 @@ in
|
||||||
'';
|
'';
|
||||||
install = false;
|
install = false;
|
||||||
hotkeys = [{key = "C";}];
|
hotkeys = [{key = "C";}];
|
||||||
}];
|
}
|
||||||
};
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,17 @@
|
||||||
{ user, userName }: { lib, pkgs, config, ... }:
|
{
|
||||||
with lib;
|
user,
|
||||||
let
|
userName,
|
||||||
|
}: {
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.roles.email;
|
cfg = config.roles.email;
|
||||||
terminal = config.programs.terminal.package;
|
terminal = config.programs.terminal.package;
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.roles = {
|
options.roles = {
|
||||||
email = {
|
email = {
|
||||||
enable = mkEnableOption "email settings";
|
enable = mkEnableOption "email settings";
|
||||||
|
|
@ -20,7 +26,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
programs.scripts = [
|
programs.scripts = [
|
||||||
{
|
{
|
||||||
name = "email";
|
name = "email";
|
||||||
|
|
@ -32,7 +37,8 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
userName = userName;
|
userName = userName;
|
||||||
userEmail = cfg.email;
|
userEmail = cfg.email;
|
||||||
|
|
@ -224,7 +230,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
};
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
{
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; {
|
||||||
options.roles.gamer = {
|
options.roles.gamer = {
|
||||||
enable = mkEnableOption "gamer packages";
|
enable = mkEnableOption "gamer packages";
|
||||||
};
|
};
|
||||||
|
|
@ -11,7 +15,8 @@ with lib;
|
||||||
"electron-25.9.0"
|
"electron-25.9.0"
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
airshipper
|
airshipper
|
||||||
minetest
|
minetest
|
||||||
|
|
@ -36,9 +41,11 @@ with lib;
|
||||||
})
|
})
|
||||||
oversteer
|
oversteer
|
||||||
];
|
];
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
"steam"
|
"steam"
|
||||||
"steam-run"
|
"steam-run"
|
||||||
"steam-original"
|
"steam-original"
|
||||||
|
|
@ -67,6 +74,5 @@ with lib;
|
||||||
ATTR{idVendor}=="046d", ATTR{idProduct}=="c261", RUN+="${pkgs.usb-modeswitch}/bin/usb_modeswitch -c '/etc/usb_modeswitch.d/046d:c261'"
|
ATTR{idVendor}=="046d", ATTR{idProduct}=="c261", RUN+="${pkgs.usb-modeswitch}/bin/usb_modeswitch -c '/etc/usb_modeswitch.d/046d:c261'"
|
||||||
'';
|
'';
|
||||||
hardware.new-lg4ff.enable = true;
|
hardware.new-lg4ff.enable = true;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
{ user, userName }: { lib, pkgs, config, ... }:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.roles.git;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
user,
|
||||||
|
userName,
|
||||||
|
}: {
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.roles.git;
|
||||||
|
in {
|
||||||
options.roles = {
|
options.roles = {
|
||||||
git = {
|
git = {
|
||||||
enable = mkEnableOption "email settings";
|
enable = mkEnableOption "email settings";
|
||||||
|
|
@ -11,7 +17,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
aliases = {
|
aliases = {
|
||||||
|
|
@ -25,7 +32,7 @@ in
|
||||||
pull.rebase = true;
|
pull.rebase = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
};
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
{
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; {
|
||||||
options.keyboard = {
|
options.keyboard = {
|
||||||
dvorak = {
|
dvorak = {
|
||||||
enable = mkEnableOption "use a good keyboard layout on a qwerty keyboard";
|
enable = mkEnableOption "use a good keyboard layout on a qwerty keyboard";
|
||||||
|
|
@ -26,7 +30,9 @@ with lib;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
services.xserver.xkbVariant = if config.keyboard.dvorak.enable then "dvorak" else "";
|
services.xserver.xkbVariant =
|
||||||
|
if config.keyboard.dvorak.enable
|
||||||
|
then "dvorak"
|
||||||
|
else "";
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.roles.laptop;
|
cfg = config.roles.laptop;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.roles = {
|
options.roles = {
|
||||||
laptop = {
|
laptop = {
|
||||||
enable = mkEnableOption "is a laptop";
|
enable = mkEnableOption "is a laptop";
|
||||||
|
|
@ -14,14 +17,17 @@ in
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
displays = mkIf cfg.displays {
|
displays = mkIf cfg.displays {
|
||||||
enable = true;
|
enable = true;
|
||||||
displays = [{
|
displays = [
|
||||||
|
{
|
||||||
name = "eDP-1";
|
name = "eDP-1";
|
||||||
scaling = 1.2;
|
scaling = 1.2;
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
keyboard.dvorak.enable = true;
|
keyboard.dvorak.enable = true;
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
|
|
@ -38,6 +44,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.programs.menu;
|
cfg = config.programs.menu;
|
||||||
terminal = config.programs.terminal.package;
|
terminal = config.programs.terminal.package;
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.programs = {
|
options.programs = {
|
||||||
menu = {
|
menu = {
|
||||||
enable = mkEnableOption "menu";
|
enable = mkEnableOption "menu";
|
||||||
|
|
@ -20,7 +23,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
programs.wofi = mkIf (cfg.package == pkgs.wofi) {
|
programs.wofi = mkIf (cfg.package == pkgs.wofi) {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
@ -28,6 +32,7 @@ in
|
||||||
insensitive = true;
|
insensitive = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,48 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.roles.mpd;
|
cfg = config.roles.mpd;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.roles.mpd = {
|
options.roles.mpd = {
|
||||||
enable = mkEnableOption "setup mpd client";
|
enable = mkEnableOption "setup mpd client";
|
||||||
host = mkOption {default = "192.168.1.2";};
|
host = mkOption {default = "192.168.1.2";};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
programs.ncmpcpp = {
|
programs.ncmpcpp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.mpd_host = cfg.host;
|
settings.mpd_host = cfg.host;
|
||||||
bindings = [
|
bindings = [
|
||||||
{ key = "j"; command = "scroll_down"; }
|
{
|
||||||
{ key = "k"; command = "scroll_up"; }
|
key = "j";
|
||||||
{ key = "l"; command = "next_column"; }
|
command = "scroll_down";
|
||||||
{ key = "h"; command = "previous_column"; }
|
}
|
||||||
{ key = "J"; command = [ "select_item" "scroll_down" ]; }
|
{
|
||||||
{ key = "K"; command = [ "select_item" "scroll_up" ]; }
|
key = "k";
|
||||||
|
command = "scroll_up";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "l";
|
||||||
|
command = "next_column";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "h";
|
||||||
|
command = "previous_column";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "J";
|
||||||
|
command = ["select_item" "scroll_down"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "K";
|
||||||
|
command = ["select_item" "scroll_up"];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
services.mpd-mpris = {
|
services.mpd-mpris = {
|
||||||
|
|
@ -41,7 +63,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
};
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
19
lib/modules/neovim/config.lua
Normal file
19
lib/modules/neovim/config.lua
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
vim.o.relativenumber = true
|
||||||
|
vim.o.signcolumn = 'yes'
|
||||||
|
vim.o.tabstop = 2
|
||||||
|
vim.o.shiftwidth = 2
|
||||||
|
vim.o.expandtab = true
|
||||||
|
vim.o.smartindent = true
|
||||||
|
vim.o.hlsearch = false
|
||||||
|
vim.o.scrolloff = 6
|
||||||
|
|
||||||
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
||||||
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||||
|
|
||||||
|
vim.keymap.set("x", "p", "\"_dP")
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>y", "\"+y")
|
||||||
|
vim.keymap.set("v", "<leader>y", "\"+y")
|
||||||
|
|
||||||
55
lib/modules/neovim/lspconfig.lua
Normal file
55
lib/modules/neovim/lspconfig.lua
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
-- Setup language servers.
|
||||||
|
local lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
lspconfig.tsserver.setup {
|
||||||
|
on_attach = function(client)
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
lspconfig.eslint.setup {
|
||||||
|
on_attach = function(client)
|
||||||
|
client.server_capabilities.documentFormattingProvider = true
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
lspconfig.gopls.setup {}
|
||||||
|
lspconfig.nil_ls.setup {}
|
||||||
|
|
||||||
|
-- Global mappings.
|
||||||
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
||||||
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
|
||||||
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
||||||
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
||||||
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
|
||||||
|
|
||||||
|
-- Use LspAttach autocommand to only map the following keys
|
||||||
|
-- after the language server attaches to the current buffer
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
||||||
|
callback = function(ev)
|
||||||
|
-- Enable completion triggered by <c-x><c-o>
|
||||||
|
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
||||||
|
|
||||||
|
-- Buffer local mappings.
|
||||||
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
|
local opts = { buffer = ev.buf }
|
||||||
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
|
||||||
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
|
||||||
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
|
||||||
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
|
||||||
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
|
||||||
|
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
|
||||||
|
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
|
||||||
|
vim.keymap.set('n', '<leader>wl', function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end, opts)
|
||||||
|
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts)
|
||||||
|
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
|
||||||
|
vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
|
||||||
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
|
||||||
|
vim.keymap.set('n', '<leader>f', function()
|
||||||
|
vim.lsp.buf.format { async = true }
|
||||||
|
end, opts)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
{
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; {
|
||||||
options.roles.personal = {
|
options.roles.personal = {
|
||||||
enable = mkEnableOption "personal packages";
|
enable = mkEnableOption "personal packages";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.roles.personal.enable {
|
config = mkIf config.roles.personal.enable {
|
||||||
|
|
||||||
roles.email = {
|
roles.email = {
|
||||||
enable = true;
|
enable = true;
|
||||||
email = "tristan@tristans.cloud";
|
email = "tristan@tristans.cloud";
|
||||||
|
|
@ -22,7 +25,8 @@ with lib;
|
||||||
"en_US.UTF-8/UTF-8"
|
"en_US.UTF-8/UTF-8"
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
services.nextcloud-client.enable = true;
|
services.nextcloud-client.enable = true;
|
||||||
services.gnome-keyring.enable = true;
|
services.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
|
@ -47,7 +51,7 @@ with lib;
|
||||||
libsForQt5.neochat
|
libsForQt5.neochat
|
||||||
bookworm
|
bookworm
|
||||||
];
|
];
|
||||||
|
}
|
||||||
}];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
scripts = config.programs.scripts;
|
scripts = config.programs.scripts;
|
||||||
|
|
||||||
hotkeyType = types.submodule ({...}: {
|
hotkeyType = types.submodule ({...}: {
|
||||||
|
|
@ -42,21 +46,22 @@ let
|
||||||
scriptToPackage = script:
|
scriptToPackage = script:
|
||||||
pkgs.writeShellScriptBin script.name script.text;
|
pkgs.writeShellScriptBin script.name script.text;
|
||||||
|
|
||||||
scriptExec = { script, hotkey }:
|
scriptExec = {
|
||||||
"${scriptToPackage script}/bin/${script.name} ${hotkey.args}";
|
script,
|
||||||
|
hotkey,
|
||||||
|
}: "${scriptToPackage script}/bin/${script.name} ${hotkey.args}";
|
||||||
|
|
||||||
installScripts = scripts:
|
installScripts = scripts: (map scriptToPackage (filter (s: s.install) scripts));
|
||||||
(map scriptToPackage (filter (s: s.install) scripts));
|
|
||||||
|
|
||||||
bindScript = script: concatStrings (
|
bindScript = script:
|
||||||
|
concatStrings (
|
||||||
map
|
map
|
||||||
(hotkey:
|
(
|
||||||
"${hotkey.modifier}, ${hotkey.key}, exec, ${scriptExec {inherit script hotkey;}}"
|
hotkey: "${hotkey.modifier}, ${hotkey.key}, exec, ${scriptExec {inherit script hotkey;}}"
|
||||||
)
|
)
|
||||||
script.hotkeys);
|
script.hotkeys
|
||||||
|
);
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.programs = {
|
options.programs = {
|
||||||
scripts = mkOption {
|
scripts = mkOption {
|
||||||
type = types.listOf scriptType;
|
type = types.listOf scriptType;
|
||||||
|
|
@ -65,10 +70,11 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
home.packages = installScripts scripts;
|
home.packages = installScripts scripts;
|
||||||
wayland.windowManager.hyprland.settings.bind = (map bindScript scripts);
|
wayland.windowManager.hyprland.settings.bind = map bindScript scripts;
|
||||||
}];
|
}
|
||||||
};
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.programs.terminal;
|
cfg = config.programs.terminal;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.programs = {
|
options.programs = {
|
||||||
terminal = {
|
terminal = {
|
||||||
enable = mkEnableOption "editor";
|
enable = mkEnableOption "editor";
|
||||||
|
|
@ -14,13 +17,15 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
programs.foot = mkIf (cfg.package == pkgs.foot) {
|
programs.foot = mkIf (cfg.package == pkgs.foot) {
|
||||||
enable = true;
|
enable = true;
|
||||||
server.enable = true;
|
server.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = [cfg.package];
|
home.packages = [cfg.package];
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.windowManager;
|
cfg = config.windowManager;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.windowManager = {
|
options.windowManager = {
|
||||||
hyprland = mkEnableOption "hyprland";
|
hyprland = mkEnableOption "hyprland";
|
||||||
sway = mkEnableOption "sway";
|
sway = mkEnableOption "sway";
|
||||||
|
|
@ -21,11 +24,15 @@ in
|
||||||
command = "sway";
|
command = "sway";
|
||||||
user = user;
|
user = user;
|
||||||
};
|
};
|
||||||
default_session = if cfg.sway then sway_session else hypr_session;
|
default_session =
|
||||||
|
if cfg.sway
|
||||||
|
then sway_session
|
||||||
|
else hypr_session;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
wayland.windowManager.hyprland = mkIf cfg.hyprland {
|
wayland.windowManager.hyprland = mkIf cfg.hyprland {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
|
|
@ -114,6 +121,7 @@ in
|
||||||
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
||||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||||
"NIXOS_OZONE_WL,1"
|
"NIXOS_OZONE_WL,1"
|
||||||
|
"WLR_NO_HARDWARE_CURSORS,1"
|
||||||
];
|
];
|
||||||
windowrule = [
|
windowrule = [
|
||||||
"float, title:wlogout"
|
"float, title:wlogout"
|
||||||
|
|
@ -181,8 +189,14 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
systemdTarget = "graphical-session.target";
|
systemdTarget = "graphical-session.target";
|
||||||
events = [
|
events = [
|
||||||
{ event = "before-sleep"; command = "${pkgs.swaylock-effects}/bin/swaylock"; }
|
{
|
||||||
{ event = "lock"; command = "${pkgs.swaylock-effects}/bin/swaylock"; }
|
event = "before-sleep";
|
||||||
|
command = "${pkgs.swaylock-effects}/bin/swaylock";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = "${pkgs.swaylock-effects}/bin/swaylock";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
timeouts = [
|
timeouts = [
|
||||||
{
|
{
|
||||||
|
|
@ -282,8 +296,7 @@ in
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
}];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
{ user }: { lib, pkgs, config, ... }:
|
{user}: {
|
||||||
with lib;
|
lib,
|
||||||
{
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; {
|
||||||
options.roles.work = {
|
options.roles.work = {
|
||||||
enable = mkEnableOption "work packages";
|
enable = mkEnableOption "work packages";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.roles.work.enable {
|
config = mkIf config.roles.work.enable {
|
||||||
|
|
||||||
roles.email = {
|
roles.email = {
|
||||||
enable = true;
|
enable = true;
|
||||||
email = "tristan.beedell@cryoserver.com";
|
email = "tristan.beedell@cryoserver.com";
|
||||||
|
|
@ -20,8 +23,8 @@ with lib;
|
||||||
package = pkgs.vscode;
|
package = pkgs.vscode;
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [{
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
onedrive
|
onedrive
|
||||||
kubectl
|
kubectl
|
||||||
|
|
@ -70,10 +73,11 @@ with lib;
|
||||||
bind = SUPER, t, focuswindow, brave-cifhbcnohmdccbgoicgdjpfamggdegmo-Profile_2
|
bind = SUPER, t, focuswindow, brave-cifhbcnohmdccbgoicgdjpfamggdegmo-Profile_2
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
}];
|
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||||
|
builtins.elem (lib.getName pkg) [
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
|
||||||
# nonfree vscode required for dev containers
|
# nonfree vscode required for dev containers
|
||||||
"vscode"
|
"vscode"
|
||||||
"steam-run"
|
"steam-run"
|
||||||
|
|
@ -97,6 +101,5 @@ with lib;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
112
lib/scripts.nix
112
lib/scripts.nix
|
|
@ -1,5 +1,9 @@
|
||||||
{ config, pkgs, lib, ... }:
|
{
|
||||||
let
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
my-deps = {
|
my-deps = {
|
||||||
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
|
|
@ -21,8 +25,7 @@ let
|
||||||
hyprpicker = "${pkgs.hyprpicker}/bin/hyprpicker";
|
hyprpicker = "${pkgs.hyprpicker}/bin/hyprpicker";
|
||||||
sed = "${pkgs.gnused}/bin/sed";
|
sed = "${pkgs.gnused}/bin/sed";
|
||||||
};
|
};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.scripts = [
|
programs.scripts = [
|
||||||
{
|
{
|
||||||
name = "play-pause";
|
name = "play-pause";
|
||||||
|
|
@ -38,7 +41,10 @@ in
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{ modifier = ""; key = "XF86AudioPlay"; }
|
{
|
||||||
|
modifier = "";
|
||||||
|
key = "XF86AudioPlay";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -56,7 +62,12 @@ in
|
||||||
items="$(rbw list)"
|
items="$(rbw list)"
|
||||||
echo "$items" | ${my-deps.menu} | xargs -I_ rbw code _ | wl-copy
|
echo "$items" | ${my-deps.menu} | xargs -I_ rbw code _ | wl-copy
|
||||||
'';
|
'';
|
||||||
hotkeys = [{ modifier = "SUPER_SHIFT"; key = "P"; }];
|
hotkeys = [
|
||||||
|
{
|
||||||
|
modifier = "SUPER_SHIFT";
|
||||||
|
key = "P";
|
||||||
|
}
|
||||||
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -72,7 +83,10 @@ in
|
||||||
cat "$FILE" | wl-copy -t image/png
|
cat "$FILE" | wl-copy -t image/png
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{ modifier = "SUPER_SHIFT"; key = "S"; }
|
{
|
||||||
|
modifier = "SUPER_SHIFT";
|
||||||
|
key = "S";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -82,8 +96,16 @@ in
|
||||||
${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-down -t 1000
|
${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-down -t 1000
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{ modifier = ""; key = "XF86MonBrightnessDown"; args = "10"; }
|
{
|
||||||
{ modifier = "SHIFT"; key = "XF86MonBrightnessDown"; args = "1"; }
|
modifier = "";
|
||||||
|
key = "XF86MonBrightnessDown";
|
||||||
|
args = "10";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "SHIFT";
|
||||||
|
key = "XF86MonBrightnessDown";
|
||||||
|
args = "1";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
|
@ -94,8 +116,16 @@ in
|
||||||
${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-up -t 1000
|
${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-up -t 1000
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{ modifier = ""; key = "XF86MonBrightnessUp"; args = "10"; }
|
{
|
||||||
{ modifier = "SHIFT"; key = "XF86MonBrightnessUp"; args = "1"; }
|
modifier = "";
|
||||||
|
key = "XF86MonBrightnessUp";
|
||||||
|
args = "10";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "SHIFT";
|
||||||
|
key = "XF86MonBrightnessUp";
|
||||||
|
args = "1";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
|
@ -118,18 +148,22 @@ in
|
||||||
text = ''
|
text = ''
|
||||||
${my-deps.hyprpicker} | wl-copy && notify-send "Copied Colour" "$(wl-paste)"
|
${my-deps.hyprpicker} | wl-copy && notify-send "Copied Colour" "$(wl-paste)"
|
||||||
'';
|
'';
|
||||||
hotkeys = [{
|
hotkeys = [
|
||||||
|
{
|
||||||
key = "G";
|
key = "G";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
(lib.mkIf config.roles.mpd.enable {
|
(lib.mkIf config.roles.mpd.enable {
|
||||||
name = "ncmpcpp";
|
name = "ncmpcpp";
|
||||||
text = ''
|
text = ''
|
||||||
${my-deps.terminal} -e ncmpcpp
|
${my-deps.terminal} -e ncmpcpp
|
||||||
'';
|
'';
|
||||||
hotkeys = [{
|
hotkeys = [
|
||||||
|
{
|
||||||
key = "M";
|
key = "M";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
install = false;
|
install = false;
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
|
|
@ -137,9 +171,11 @@ in
|
||||||
text = ''
|
text = ''
|
||||||
${my-deps.runmenu}
|
${my-deps.runmenu}
|
||||||
'';
|
'';
|
||||||
hotkeys = [{
|
hotkeys = [
|
||||||
|
{
|
||||||
key = "D";
|
key = "D";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -147,10 +183,12 @@ in
|
||||||
text = ''
|
text = ''
|
||||||
hyprctl keyword misc:cursor_zoom_factor 2
|
hyprctl keyword misc:cursor_zoom_factor 2
|
||||||
'';
|
'';
|
||||||
hotkeys = [{
|
hotkeys = [
|
||||||
|
{
|
||||||
modifier = "SUPER";
|
modifier = "SUPER";
|
||||||
key = "EQUAL";
|
key = "EQUAL";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -158,10 +196,12 @@ in
|
||||||
text = ''
|
text = ''
|
||||||
hyprctl keyword misc:cursor_zoom_factor 1
|
hyprctl keyword misc:cursor_zoom_factor 1
|
||||||
'';
|
'';
|
||||||
hotkeys = [{
|
hotkeys = [
|
||||||
|
{
|
||||||
modifier = "SUPER";
|
modifier = "SUPER";
|
||||||
key = "MINUS";
|
key = "MINUS";
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -171,7 +211,10 @@ in
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{key = "bracketright";}
|
{key = "bracketright";}
|
||||||
{ modifier = ""; key = "XF86AudioRaiseVolume"; }
|
{
|
||||||
|
modifier = "";
|
||||||
|
key = "XF86AudioRaiseVolume";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
|
@ -182,7 +225,10 @@ in
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{key = "bracketleft";}
|
{key = "bracketleft";}
|
||||||
{ modifier = ""; key = "XF86AudioLowerVolume"; }
|
{
|
||||||
|
modifier = "";
|
||||||
|
key = "XF86AudioLowerVolume";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
|
@ -192,8 +238,14 @@ in
|
||||||
${my-deps.playerctl} next
|
${my-deps.playerctl} next
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{ modifier = "SUPER_SHIFT"; key = "period"; }
|
{
|
||||||
{ modifier = ""; key = "XF86AudioNext"; }
|
modifier = "SUPER_SHIFT";
|
||||||
|
key = "period";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "";
|
||||||
|
key = "XF86AudioNext";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
|
@ -203,8 +255,14 @@ in
|
||||||
${my-deps.playerctl} previous
|
${my-deps.playerctl} previous
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{ modifier = "SUPER_SHIFT"; key = "comma"; }
|
{
|
||||||
{ modifier = ""; key = "XF86AudioPrev"; }
|
modifier = "SUPER_SHIFT";
|
||||||
|
key = "comma";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "";
|
||||||
|
key = "XF86AudioPrev";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue