Compare commits
No commits in common. "b3f80e0818269eace4e313a4e270b798aa588667" and "b0f3174ed0af09fe2962c99e0f1db742e7736187" have entirely different histories.
b3f80e0818
...
b0f3174ed0
43 changed files with 3273 additions and 155 deletions
1
hosts/nb-01.cloonar.com/channel
Normal file
1
hosts/nb-01.cloonar.com/channel
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
https://channels.nixos.org/nixos-24.05
|
||||||
227
hosts/nb-01.cloonar.com/configuration.nix
Normal file
227
hosts/nb-01.cloonar.com/configuration.nix
Normal file
|
|
@ -0,0 +1,227 @@
|
||||||
|
# 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, ... }:
|
||||||
|
let
|
||||||
|
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||||
|
in {
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
# ./modules/clevis.nix
|
||||||
|
./utils/bento.nix
|
||||||
|
|
||||||
|
./utils/modules/sops.nix
|
||||||
|
./utils/modules/nur.nix
|
||||||
|
./modules/sway/sway.nix
|
||||||
|
# ./modules/gnome.nix
|
||||||
|
./modules/printer.nix
|
||||||
|
./modules/nvim/default.nix
|
||||||
|
./utils/modules/autoupgrade.nix
|
||||||
|
|
||||||
|
./users
|
||||||
|
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(import ./utils/overlays/packages.nix)
|
||||||
|
];
|
||||||
|
|
||||||
|
# nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
# "openssl-1.1.1v"
|
||||||
|
# "electron-24.8.6"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
open-sans
|
||||||
|
];
|
||||||
|
|
||||||
|
virtualisation.waydroid.enable = true;
|
||||||
|
|
||||||
|
# security.sudo.wheelNeedsPassword = false;
|
||||||
|
# services.clevis.uuid = "7435d48f-f942-485b-9817-328ad3fc0b93";
|
||||||
|
|
||||||
|
# nixos cross building qemu
|
||||||
|
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||||
|
boot.supportedFilesystems = [ "ntfs" ];
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
boot.plymouth.theme = "breeze";
|
||||||
|
boot.kernelParams = ["quiet"];
|
||||||
|
# boot.loader.systemd-boot.netbootxyz.enable = true;
|
||||||
|
# boot.plymouth.themePackages = [ pkgs.nixos-bgrt-plymouth ];
|
||||||
|
# boot.plymouth.theme = "nixos-bgrt";
|
||||||
|
# allow hibernation
|
||||||
|
security.protectKernelImage = false;
|
||||||
|
|
||||||
|
sops.defaultSopsFile = ./secrets.yaml;
|
||||||
|
sops.age.keyFile = "/var/lib/sops-nix/key.txt";
|
||||||
|
sops.age.generateKey = true;
|
||||||
|
|
||||||
|
sops.secrets.epicenter_vpn_ca = {};
|
||||||
|
sops.secrets.epicenter_vpn_cert = {};
|
||||||
|
sops.secrets.epicenter_vpn_key = {};
|
||||||
|
sops.secrets.wg_private_key = {};
|
||||||
|
sops.secrets.wg_preshared_key = {};
|
||||||
|
sops.secrets.wg-cloonar-key = {};
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
# virtualisation.virtualbox.host = {
|
||||||
|
# enable = true;
|
||||||
|
# enableExtensionPack = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
networking.hostName = "cl-nb-01"; # Define your hostname.
|
||||||
|
networking.resolvconf.enable = true;
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
networking.extraHosts = ''
|
||||||
|
10.25.0.25 archive.zeichnemit.at
|
||||||
|
5.9.131.26 old.epicenter.works
|
||||||
|
# 10.25.0.25 epicenter.works en.epicenter.works
|
||||||
|
127.0.0.1 wohnservice.local mieterhilfe.local wohnpartner.local wohnberatung.local wienbautvor.local wienwohntbesser.local
|
||||||
|
127.0.0.1 wohnservice-wien.local mieterhilfe.local wohnpartner-wien.local wohnberatung-wien.local wienbautvor.local wienwohntbesser.local
|
||||||
|
127.0.0.1 diabetes.local
|
||||||
|
127.0.0.1 test.cloonar.com
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
excludePackages = [ pkgs.xterm ];
|
||||||
|
displayManager.gdm.enable = true;
|
||||||
|
displayManager.gdm.wayland = true;
|
||||||
|
# displayManager.sddm.enable = true;
|
||||||
|
displayManager.sessionPackages = [ pkgs.sway ];
|
||||||
|
displayManager.defaultSession = "sway";
|
||||||
|
libinput.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Vienna";
|
||||||
|
console.keyMap = "de";
|
||||||
|
|
||||||
|
users.users.dominik = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" "disk" "video" "audio" "mysql" "docker" "vboxusers" "networkmanager" "onepassword" "onepassword-cli" "dialout" ]; # Enable ‘sudo’ for the user.
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
bento
|
||||||
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
wget
|
||||||
|
docker-compose
|
||||||
|
drone-cli
|
||||||
|
wireguard-tools
|
||||||
|
wineWowPackages.stable
|
||||||
|
wineWowPackages.fonts
|
||||||
|
winetricks
|
||||||
|
git-filter-repo
|
||||||
|
ykfde
|
||||||
|
nix-prefetch-git
|
||||||
|
unstable.rustdesk-flutter
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
TERMINAL_COMMAND = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.blueman.enable = true;
|
||||||
|
|
||||||
|
# services.printing.enable = true;
|
||||||
|
# services.printing.drivers = [ pkgs.brlaser ];
|
||||||
|
|
||||||
|
services.mysql = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.mariadb;
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "dominik";
|
||||||
|
ensurePermissions = {
|
||||||
|
"*.*" = "ALL PRIVILEGES";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "22.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
security.polkit.enable = true;
|
||||||
|
systemd = {
|
||||||
|
user.services.polkit-gnome-authentication-agent-1 = {
|
||||||
|
description = "polkit-gnome-authentication-agent-1";
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
wants = [ "graphical-session.target" ];
|
||||||
|
after = [ "graphical-session.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 1;
|
||||||
|
TimeoutStopSec = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedUDPPorts = [ 51820 ]; # Clients and peers can use the same port, see listenport
|
||||||
|
# if packets are still dropped, they will show up in dmesg
|
||||||
|
logReversePathDrops = true;
|
||||||
|
# wireguard trips rpfilter up
|
||||||
|
extraCommands = ''
|
||||||
|
ip46tables -t mangle -I nixos-fw-rpfilter -p udp -m udp --sport 51820 -j RETURN
|
||||||
|
ip46tables -t mangle -I nixos-fw-rpfilter -p udp -m udp --dport 51820 -j RETURN
|
||||||
|
'';
|
||||||
|
extraStopCommands = ''
|
||||||
|
ip46tables -t mangle -D nixos-fw-rpfilter -p udp -m udp --sport 51820 -j RETURN || true
|
||||||
|
ip46tables -t mangle -D nixos-fw-rpfilter -p udp -m udp --dport 51820 -j RETURN || true
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
networking.wireguard.interfaces = {
|
||||||
|
wg0 = {
|
||||||
|
# Determines the IP address and subnet of the client's end of the tunnel interface.
|
||||||
|
ips = [ "10.42.98.201/32" ];
|
||||||
|
# Path to the private key file.
|
||||||
|
#
|
||||||
|
# Note: The private key can also be included inline via the privateKey option,
|
||||||
|
# but this makes the private key world-readable; thus, using privateKeyFile is
|
||||||
|
# recommended.
|
||||||
|
# publicKey: YdlRGsjh4hS3OMJI+t6SZ2eGXKbs0wZBXWudHW4NyS8=
|
||||||
|
privateKeyFile = config.sops.secrets.wg-cloonar-key.path;
|
||||||
|
|
||||||
|
peers = [
|
||||||
|
{
|
||||||
|
publicKey = "TKQVDmBnf9av46kQxLQSBDhAeaK8r1zh8zpU64zuc1Q=";
|
||||||
|
allowedIPs = [ "10.42.96.0/20" "10.14.0.0/16" "10.25.0.0/16" ];
|
||||||
|
endpoint = "vpn.cloonar.com:51820"; # ToDo: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577
|
||||||
|
persistentKeepalive = 25;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Facial recognition "Windows hello"
|
||||||
|
# services.ir-toggle.enable = true;
|
||||||
|
# services.howdy = {
|
||||||
|
# enable = true;
|
||||||
|
# device = "/dev/video2";
|
||||||
|
# };
|
||||||
|
nix = {
|
||||||
|
settings.auto-optimise-store = true;
|
||||||
|
# autoOptimiseStore = true;
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
# Free up to 1GiB whenever there is less than 100MiB left.
|
||||||
|
extraOptions = ''
|
||||||
|
min-free = ${toString (100 * 1024 * 1024)}
|
||||||
|
max-free = ${toString (1024 * 1024 * 1024)}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
72
hosts/nb-01.cloonar.com/hardware-configuration.nix
Normal file
72
hosts/nb-01.cloonar.com/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.initrd.availableKernelModules = [ "vfat" "nls_cp437" "nls_iso8859-1" "usbhid" "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "amdgpu" ];
|
||||||
|
boot.kernelParams = [ "resume=/swap/swapfile" "resume_offset=533760" "psi=1" ];
|
||||||
|
boot.resumeDevice = "/dev/disk/by-uuid/92284909-c5dd-4e0f-ab22-64157c8175cb";
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/92284909-c5dd-4e0f-ab22-64157c8175cb";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=root" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd = {
|
||||||
|
luks.devices."nixos-enc" = {
|
||||||
|
crypttabExtraOpts = [ "fido2-device=auto" ];
|
||||||
|
device = "/dev/disk/by-uuid/7435d48f-f942-485b-9817-328ad3fc0b93";
|
||||||
|
};
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{ device = "/dev/disk/by-uuid/92284909-c5dd-4e0f-ab22-64157c8175cb";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=home" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/C281-E509";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/swap" =
|
||||||
|
{ device = "/dev/disk/by-uuid/92284909-c5dd-4e0f-ab22-64157c8175cb";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=swap" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [{
|
||||||
|
device = "/swap/swapfile";
|
||||||
|
size = (1024 * 16);
|
||||||
|
}];
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp52s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
vaapiVdpau
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
221
hosts/nb-01.cloonar.com/modules/nvim/config/bufferline.lua
Normal file
221
hosts/nb-01.cloonar.com/modules/nvim/config/bufferline.lua
Normal file
|
|
@ -0,0 +1,221 @@
|
||||||
|
local function is_ft(b, ft)
|
||||||
|
return vim.bo[b].filetype == ft
|
||||||
|
end
|
||||||
|
|
||||||
|
local function diagnostics_indicator(num, _, diagnostics, _)
|
||||||
|
local result = {}
|
||||||
|
local symbols = {
|
||||||
|
error = Icons.diagnostics.Error,
|
||||||
|
warning = Icons.diagnostics.Warning,
|
||||||
|
info = Icons.diagnostics.Information,
|
||||||
|
}
|
||||||
|
for name, count in pairs(diagnostics) do
|
||||||
|
if symbols[name] and count > 0 then
|
||||||
|
table.insert(result, symbols[name] .. " " .. count)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
result = table.concat(result, " ")
|
||||||
|
return #result > 0 and result or ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local function custom_filter(buf, buf_nums)
|
||||||
|
local logs = vim.tbl_filter(function(b)
|
||||||
|
return is_ft(b, "log")
|
||||||
|
end, buf_nums)
|
||||||
|
if vim.tbl_isempty(logs) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
local tab_num = vim.fn.tabpagenr()
|
||||||
|
local last_tab = vim.fn.tabpagenr "$"
|
||||||
|
local is_log = is_ft(buf, "log")
|
||||||
|
if last_tab == 1 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
-- only show log buffers in secondary tabs
|
||||||
|
return (tab_num == last_tab and is_log) or (tab_num ~= last_tab and not is_log)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
active = true,
|
||||||
|
on_config_done = nil,
|
||||||
|
keymap = {
|
||||||
|
normal_mode = {},
|
||||||
|
},
|
||||||
|
highlights = {
|
||||||
|
background = {
|
||||||
|
italic = true,
|
||||||
|
},
|
||||||
|
buffer_selected = {
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
options = {
|
||||||
|
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||||||
|
numbers = "none", -- can be "none" | "ordinal" | "buffer_id" | "both" | function
|
||||||
|
close_command = function(bufnr) -- can be a string | function, see "Mouse actions"
|
||||||
|
buf_kill("bd", bufnr, false)
|
||||||
|
end,
|
||||||
|
right_mouse_command = "vert sbuffer %d", -- can be a string | function, see "Mouse actions"
|
||||||
|
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
||||||
|
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
||||||
|
indicator = {
|
||||||
|
icon = Icons.ui.BoldLineLeft, -- this should be omitted if indicator style is not 'icon'
|
||||||
|
style = "icon", -- can also be 'underline'|'none',
|
||||||
|
},
|
||||||
|
buffer_close_icon = Icons.ui.Close,
|
||||||
|
modified_icon = Icons.ui.Circle,
|
||||||
|
close_icon = Icons.ui.BoldClose,
|
||||||
|
left_trunc_marker = Icons.ui.ArrowCircleLeft,
|
||||||
|
right_trunc_marker = Icons.ui.ArrowCircleRight,
|
||||||
|
--- name_formatter can be used to change the buffer's label in the bufferline.
|
||||||
|
--- Please note some names can/will break the
|
||||||
|
--- bufferline so use this at your discretion knowing that it has
|
||||||
|
--- some limitations that will *NOT* be fixed.
|
||||||
|
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
||||||
|
-- remove extension from markdown files for example
|
||||||
|
if buf.name:match "%.md" then
|
||||||
|
return vim.fn.fnamemodify(buf.name, ":t:r")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
max_name_length = 18,
|
||||||
|
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
||||||
|
truncate_names = true, -- whether or not tab names should be truncated
|
||||||
|
tab_size = 18,
|
||||||
|
diagnostics = "nvim_lsp",
|
||||||
|
diagnostics_update_in_insert = false,
|
||||||
|
diagnostics_indicator = diagnostics_indicator,
|
||||||
|
-- NOTE: this will be called a lot so don't do any heavy processing here
|
||||||
|
custom_filter = custom_filter,
|
||||||
|
offsets = {
|
||||||
|
{
|
||||||
|
filetype = "undotree",
|
||||||
|
text = "Undotree",
|
||||||
|
highlight = "PanelHeading",
|
||||||
|
padding = 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filetype = "NvimTree",
|
||||||
|
text = "Explorer",
|
||||||
|
highlight = "PanelHeading",
|
||||||
|
padding = 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filetype = "DiffviewFiles",
|
||||||
|
text = "Diff View",
|
||||||
|
highlight = "PanelHeading",
|
||||||
|
padding = 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filetype = "flutterToolsOutline",
|
||||||
|
text = "Flutter Outline",
|
||||||
|
highlight = "PanelHeading",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filetype = "packer",
|
||||||
|
text = "Packer",
|
||||||
|
highlight = "PanelHeading",
|
||||||
|
padding = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
color_icons = true, -- whether or not to add the filetype icon highlights
|
||||||
|
show_buffer_icons = true, -- disable filetype icons for buffers
|
||||||
|
show_buffer_close_icons = true,
|
||||||
|
show_close_icon = false,
|
||||||
|
show_tab_indicators = true,
|
||||||
|
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
|
||||||
|
-- can also be a table containing 2 custom separators
|
||||||
|
-- [focused and unfocused]. eg: { '|', '|' }
|
||||||
|
separator_style = "thin",
|
||||||
|
enforce_regular_tabs = false,
|
||||||
|
always_show_bufferline = false,
|
||||||
|
hover = {
|
||||||
|
enabled = false, -- requires nvim 0.8+
|
||||||
|
delay = 200,
|
||||||
|
reveal = { "close" },
|
||||||
|
},
|
||||||
|
sort_by = "id",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
--require('keymappings').load(config.keymap)
|
||||||
|
|
||||||
|
require("bufferline").setup({
|
||||||
|
options = config.options,
|
||||||
|
highlights = config.highlights,
|
||||||
|
})
|
||||||
|
|
||||||
|
--stylua: ignore
|
||||||
|
|
||||||
|
-- Common kill function for bdelete and bwipeout
|
||||||
|
-- credits: based on bbye and nvim-bufdel
|
||||||
|
---@param kill_command? string defaults to "bd"
|
||||||
|
---@param bufnr? number defaults to the current buffer
|
||||||
|
---@param force? boolean defaults to false
|
||||||
|
function buf_kill(kill_command, bufnr, force)
|
||||||
|
kill_command = kill_command or "bd"
|
||||||
|
|
||||||
|
local bo = vim.bo
|
||||||
|
local api = vim.api
|
||||||
|
local fmt = string.format
|
||||||
|
local fnamemodify = vim.fn.fnamemodify
|
||||||
|
|
||||||
|
if bufnr == 0 or bufnr == nil then
|
||||||
|
bufnr = api.nvim_get_current_buf()
|
||||||
|
end
|
||||||
|
|
||||||
|
local bufname = api.nvim_buf_get_name(bufnr)
|
||||||
|
|
||||||
|
if not force then
|
||||||
|
local warning
|
||||||
|
if bo[bufnr].modified then
|
||||||
|
warning = fmt([[No write since last change for (%s)]], fnamemodify(bufname, ":t"))
|
||||||
|
elseif api.nvim_buf_get_option(bufnr, "buftype") == "terminal" then
|
||||||
|
warning = fmt([[Terminal %s will be killed]], bufname)
|
||||||
|
end
|
||||||
|
if warning then
|
||||||
|
vim.ui.input({
|
||||||
|
prompt = string.format([[%s. Close it anyway? [y]es or [n]o (default: no): ]], warning),
|
||||||
|
}, function(choice)
|
||||||
|
if choice:match "ye?s?" then force = true end
|
||||||
|
end)
|
||||||
|
if not force then return end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get list of windows IDs with the buffer to close
|
||||||
|
local windows = vim.tbl_filter(function(win)
|
||||||
|
return api.nvim_win_get_buf(win) == bufnr
|
||||||
|
end, api.nvim_list_wins())
|
||||||
|
|
||||||
|
if force then
|
||||||
|
kill_command = kill_command .. "!"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get list of active buffers
|
||||||
|
local buffers = vim.tbl_filter(function(buf)
|
||||||
|
return api.nvim_buf_is_valid(buf) and bo[buf].buflisted
|
||||||
|
end, api.nvim_list_bufs())
|
||||||
|
|
||||||
|
-- If there is only one buffer (which has to be the current one), vim will
|
||||||
|
-- create a new buffer on :bd.
|
||||||
|
-- For more than one buffer, pick the previous buffer (wrapping around if necessary)
|
||||||
|
if #buffers > 1 and #windows > 0 then
|
||||||
|
for i, v in ipairs(buffers) do
|
||||||
|
if v == bufnr then
|
||||||
|
local prev_buf_idx = i == 1 and (#buffers - 1) or (i - 1)
|
||||||
|
local prev_buffer = buffers[prev_buf_idx]
|
||||||
|
for _, win in ipairs(windows) do
|
||||||
|
api.nvim_win_set_buf(win, prev_buffer)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Check if buffer still exists, to ensure the target buffer wasn't killed
|
||||||
|
-- due to options like bufhidden=wipe.
|
||||||
|
if api.nvim_buf_is_valid(bufnr) and bo[bufnr].buflisted then
|
||||||
|
vim.cmd(string.format("%s %d", kill_command, bufnr))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
2
hosts/nb-01.cloonar.com/modules/nvim/config/copilot.lua
Normal file
2
hosts/nb-01.cloonar.com/modules/nvim/config/copilot.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
vim.api.nvim_set_keymap('i', '<C-J>', 'copilot#Accept("<CR>")', { expr=true, noremap = true, silent = true })
|
||||||
|
vim.g.copilot_no_tab_map = true
|
||||||
155
hosts/nb-01.cloonar.com/modules/nvim/config/icons.lua
Normal file
155
hosts/nb-01.cloonar.com/modules/nvim/config/icons.lua
Normal file
|
|
@ -0,0 +1,155 @@
|
||||||
|
Icons = {
|
||||||
|
kind = {
|
||||||
|
Array = "",
|
||||||
|
Boolean = "蘒",
|
||||||
|
Class = "",
|
||||||
|
Color = "",
|
||||||
|
Constant = "",
|
||||||
|
Constructor = "",
|
||||||
|
Enum = "",
|
||||||
|
EnumMember = "",
|
||||||
|
Event = "",
|
||||||
|
Field = "",
|
||||||
|
File = "",
|
||||||
|
Folder = "",
|
||||||
|
Function = "",
|
||||||
|
Interface = "",
|
||||||
|
Key = "",
|
||||||
|
Keyword = "",
|
||||||
|
Method = "",
|
||||||
|
Module = "",
|
||||||
|
Namespace = "",
|
||||||
|
Null = "ﳠ",
|
||||||
|
Number = "",
|
||||||
|
Object = "",
|
||||||
|
Operator = "",
|
||||||
|
Package = "",
|
||||||
|
Property = "",
|
||||||
|
Reference = "",
|
||||||
|
Snippet = "",
|
||||||
|
String = "",
|
||||||
|
Struct = "",
|
||||||
|
Text = "",
|
||||||
|
TypeParameter = "",
|
||||||
|
Unit = "",
|
||||||
|
Value = "",
|
||||||
|
Variable = "",
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
LineAdded = "",
|
||||||
|
LineModified = "",
|
||||||
|
LineRemoved = "",
|
||||||
|
FileDeleted = "",
|
||||||
|
FileIgnored = "◌",
|
||||||
|
FileRenamed = "➜",
|
||||||
|
FileStaged = "S",
|
||||||
|
FileUnmerged = "",
|
||||||
|
FileUnstaged = "",
|
||||||
|
FileUntracked = "U",
|
||||||
|
Diff = "",
|
||||||
|
Repo = "",
|
||||||
|
Octoface = "",
|
||||||
|
Branch = "",
|
||||||
|
},
|
||||||
|
ui = {
|
||||||
|
ArrowCircleDown = "",
|
||||||
|
ArrowCircleLeft = "",
|
||||||
|
ArrowCircleRight = "",
|
||||||
|
ArrowCircleUp = "",
|
||||||
|
BoldArrowDown = "",
|
||||||
|
BoldArrowLeft = "",
|
||||||
|
BoldArrowRight = "",
|
||||||
|
BoldArrowUp = "",
|
||||||
|
BoldClose = "",
|
||||||
|
BoldDividerLeft = "",
|
||||||
|
BoldDividerRight = "",
|
||||||
|
BoldLineLeft = "▎",
|
||||||
|
BookMark = "",
|
||||||
|
BoxChecked = "",
|
||||||
|
Bug = "",
|
||||||
|
Stacks = " ",
|
||||||
|
Scopes = "",
|
||||||
|
Watches = "",
|
||||||
|
DebugConsole = " ",
|
||||||
|
Calendar = "",
|
||||||
|
Check = "",
|
||||||
|
ChevronRight = ">",
|
||||||
|
ChevronShortDown = "",
|
||||||
|
ChevronShortLeft = "",
|
||||||
|
ChevronShortRight = "",
|
||||||
|
ChevronShortUp = "",
|
||||||
|
Circle = "",
|
||||||
|
Close = "",
|
||||||
|
CloudDownload = "",
|
||||||
|
Code = "",
|
||||||
|
Comment = "",
|
||||||
|
Dashboard = "",
|
||||||
|
DividerLeft = "",
|
||||||
|
DividerRight = "",
|
||||||
|
DoubleChevronRight = "»",
|
||||||
|
Ellipsis = "…",
|
||||||
|
EmptyFolder = "",
|
||||||
|
EmptyFolderOpen = "",
|
||||||
|
File = "",
|
||||||
|
FileSymlink = "",
|
||||||
|
Files = "",
|
||||||
|
FindFile = "",
|
||||||
|
FindText = "",
|
||||||
|
Fire = "",
|
||||||
|
Folder = "",
|
||||||
|
FolderOpen = "",
|
||||||
|
FolderSymlink = "",
|
||||||
|
Forward = "",
|
||||||
|
Gear = "",
|
||||||
|
History = "",
|
||||||
|
Lightbulb = "",
|
||||||
|
LineLeft = "▏",
|
||||||
|
LineMiddle = "│",
|
||||||
|
List = "",
|
||||||
|
Lock = "",
|
||||||
|
NewFile = "",
|
||||||
|
Note = "",
|
||||||
|
Package = "",
|
||||||
|
Pencil = "",
|
||||||
|
Plus = "",
|
||||||
|
Project = "",
|
||||||
|
Search = "",
|
||||||
|
SignIn = "",
|
||||||
|
SignOut = "",
|
||||||
|
Tab = "",
|
||||||
|
Table = "",
|
||||||
|
Target = "",
|
||||||
|
Telescope = "",
|
||||||
|
Text = "",
|
||||||
|
Tree = "",
|
||||||
|
Triangle = "契",
|
||||||
|
TriangleShortArrowDown = "",
|
||||||
|
TriangleShortArrowLeft = "",
|
||||||
|
TriangleShortArrowRight = "",
|
||||||
|
TriangleShortArrowUp = "",
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
BoldError = "",
|
||||||
|
Error = "",
|
||||||
|
BoldWarning = "",
|
||||||
|
Warning = "",
|
||||||
|
BoldInformation = "",
|
||||||
|
Information = "",
|
||||||
|
BoldQuestion = "",
|
||||||
|
Question = "",
|
||||||
|
BoldHint = "",
|
||||||
|
Hint = "",
|
||||||
|
Debug = "",
|
||||||
|
Trace = "✎",
|
||||||
|
},
|
||||||
|
misc = {
|
||||||
|
Robot = "ﮧ",
|
||||||
|
Squirrel = "",
|
||||||
|
Tag = "",
|
||||||
|
Watch = "",
|
||||||
|
Smiley = "ﲃ",
|
||||||
|
Package = "",
|
||||||
|
CircuitBoard = "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
58
hosts/nb-01.cloonar.com/modules/nvim/config/init.lua
Normal file
58
hosts/nb-01.cloonar.com/modules/nvim/config/init.lua
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
-- vim.opt.expandtab = true
|
||||||
|
-- vim.opt.hidden = true
|
||||||
|
-- vim.opt.incsearch = true
|
||||||
|
-- vim.opt.mouse = "a"
|
||||||
|
-- vim.opt.number = true
|
||||||
|
-- vim.opt.shiftwidth = 2
|
||||||
|
-- vim.opt.splitbelow = true
|
||||||
|
-- vim.opt.splitright = true
|
||||||
|
-- vim.opt.signcolumn = "yes:3"
|
||||||
|
-- vim.opt.tabstop = 2
|
||||||
|
-- vim.opt.timeoutlen = 0
|
||||||
|
-- vim.wo.wrap = false
|
||||||
|
-- vim.opt.exrc = true
|
||||||
|
-- vim.cmd("syntax on")
|
||||||
|
|
||||||
|
vim.opt.backup = false -- creates a backup file
|
||||||
|
vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard
|
||||||
|
vim.opt.cmdheight = 2 -- more space in the neovim command line for displaying messages
|
||||||
|
vim.opt.colorcolumn = "99999" -- fixes indentline for now
|
||||||
|
vim.opt.completeopt = { "menuone", "noselect" }
|
||||||
|
vim.opt.conceallevel = 0 -- so that `` is visible in markdown files
|
||||||
|
vim.opt.fileencoding = "utf-8" -- the encoding written to a file
|
||||||
|
vim.opt.foldmethod = "manual" -- folding set to "expr" for treesitter based folding
|
||||||
|
vim.opt.foldexpr = "" -- set to "nvim_treesitter#foldexpr()" for treesitter based folding
|
||||||
|
vim.opt.guifont = "monospace:h17" -- the font used in graphical neovim applications
|
||||||
|
vim.opt.hidden = true -- required to keep multiple buffers and open multiple buffers
|
||||||
|
vim.opt.hlsearch = true -- highlight all matches on previous search pattern
|
||||||
|
vim.opt.ignorecase = true -- ignore case in search patterns
|
||||||
|
vim.opt.mouse = "a" -- allow the mouse to be used in neovim
|
||||||
|
vim.opt.pumheight = 10 -- pop up menu height
|
||||||
|
vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore
|
||||||
|
vim.opt.showtabline = 2 -- always show tabs
|
||||||
|
vim.opt.smartcase = true -- smart case
|
||||||
|
vim.opt.smartindent = true -- make indenting smarter again
|
||||||
|
vim.opt.splitbelow = true -- force all horizontal splits to go below current window
|
||||||
|
vim.opt.splitright = true -- force all vertical splits to go to the right of current window
|
||||||
|
vim.opt.swapfile = false -- creates a swapfile
|
||||||
|
vim.opt.termguicolors = true -- set term gui colors (most terminals support this)
|
||||||
|
vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds)
|
||||||
|
vim.opt.title = true -- set the title of window to the value of the titlestring
|
||||||
|
vim.opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
|
||||||
|
vim.opt.undodir = vim.fn.stdpath "cache" .. "/undo"
|
||||||
|
vim.opt.undofile = true -- enable persistent undo
|
||||||
|
vim.opt.updatetime = 300 -- faster completion
|
||||||
|
vim.opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program) it is not allowed to be edited
|
||||||
|
vim.opt.expandtab = true -- convert tabs to spaces
|
||||||
|
vim.opt.shiftwidth = 2 -- the number of spaces inserted for each indentation
|
||||||
|
vim.opt.tabstop = 2 -- insert 2 spaces for a tab
|
||||||
|
vim.opt.cursorline = true -- highlight the current line
|
||||||
|
vim.opt.number = true -- set numbered lines
|
||||||
|
vim.opt.relativenumber = false -- set relative numbered lines
|
||||||
|
vim.opt.numberwidth = 4 -- set number column width to 2 {default 4}
|
||||||
|
vim.opt.signcolumn = "yes" -- always show the sign column otherwise it would shift the text each time
|
||||||
|
vim.opt.wrap = false -- display lines as one long line
|
||||||
|
vim.opt.spell = false
|
||||||
|
vim.opt.spelllang = "en"
|
||||||
|
vim.opt.scrolloff = 8 -- is one of my fav
|
||||||
|
vim.opt.sidescrolloff = 8
|
||||||
145
hosts/nb-01.cloonar.com/modules/nvim/config/keymappings.lua
Normal file
145
hosts/nb-01.cloonar.com/modules/nvim/config/keymappings.lua
Normal file
|
|
@ -0,0 +1,145 @@
|
||||||
|
local generic_opts_any = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
local generic_opts = {
|
||||||
|
insert_mode = generic_opts_any,
|
||||||
|
normal_mode = generic_opts_any,
|
||||||
|
visual_mode = generic_opts_any,
|
||||||
|
visual_block_mode = generic_opts_any,
|
||||||
|
command_mode = generic_opts_any,
|
||||||
|
term_mode = { silent = true },
|
||||||
|
}
|
||||||
|
|
||||||
|
local mode_adapters = {
|
||||||
|
insert_mode = "i",
|
||||||
|
normal_mode = "n",
|
||||||
|
term_mode = "t",
|
||||||
|
visual_mode = "v",
|
||||||
|
visual_block_mode = "x",
|
||||||
|
command_mode = "c",
|
||||||
|
}
|
||||||
|
|
||||||
|
---@class Keys
|
||||||
|
---@field insert_mode table
|
||||||
|
---@field normal_mode table
|
||||||
|
---@field terminal_mode table
|
||||||
|
---@field visual_mode table
|
||||||
|
---@field visual_block_mode table
|
||||||
|
---@field command_mode table
|
||||||
|
|
||||||
|
local defaults = {
|
||||||
|
insert_mode = {
|
||||||
|
-- Move current line / block with Alt-j/k ala vscode.
|
||||||
|
["<A-j>"] = "<Esc>:m .+1<CR>==gi",
|
||||||
|
-- Move current line / block with Alt-j/k ala vscode.
|
||||||
|
["<A-k>"] = "<Esc>:m .-2<CR>==gi",
|
||||||
|
-- navigation
|
||||||
|
["<A-Up>"] = "<C-\\><C-N><C-w>k",
|
||||||
|
["<A-Down>"] = "<C-\\><C-N><C-w>j",
|
||||||
|
["<A-Left>"] = "<C-\\><C-N><C-w>h",
|
||||||
|
["<A-Right>"] = "<C-\\><C-N><C-w>l",
|
||||||
|
},
|
||||||
|
|
||||||
|
normal_mode = {
|
||||||
|
-- Better window movement
|
||||||
|
["<C-h>"] = "<C-w>h",
|
||||||
|
["<C-j>"] = "<C-w>j",
|
||||||
|
["<C-k>"] = "<C-w>k",
|
||||||
|
["<C-l>"] = "<C-w>l",
|
||||||
|
|
||||||
|
-- Resize with arrows
|
||||||
|
["<C-Up>"] = ":resize -2<CR>",
|
||||||
|
["<C-Down>"] = ":resize +2<CR>",
|
||||||
|
["<C-Left>"] = ":vertical resize -2<CR>",
|
||||||
|
["<C-Right>"] = ":vertical resize +2<CR>",
|
||||||
|
|
||||||
|
-- Move current line / block with Alt-j/k a la vscode.
|
||||||
|
["<A-j>"] = ":m .+1<CR>==",
|
||||||
|
["<A-k>"] = ":m .-2<CR>==",
|
||||||
|
|
||||||
|
-- QuickFix
|
||||||
|
["]q"] = ":cnext<CR>",
|
||||||
|
["[q"] = ":cprev<CR>",
|
||||||
|
["<C-q>"] = ":call QuickFixToggle()<CR>",
|
||||||
|
},
|
||||||
|
|
||||||
|
term_mode = {
|
||||||
|
-- Terminal window navigation
|
||||||
|
["<C-h>"] = "<C-\\><C-N><C-w>h",
|
||||||
|
["<C-j>"] = "<C-\\><C-N><C-w>j",
|
||||||
|
["<C-k>"] = "<C-\\><C-N><C-w>k",
|
||||||
|
["<C-l>"] = "<C-\\><C-N><C-w>l",
|
||||||
|
},
|
||||||
|
|
||||||
|
visual_mode = {
|
||||||
|
-- Better indenting
|
||||||
|
["<"] = "<gv",
|
||||||
|
[">"] = ">gv",
|
||||||
|
|
||||||
|
-- ["p"] = '"0p',
|
||||||
|
-- ["P"] = '"0P',
|
||||||
|
},
|
||||||
|
|
||||||
|
visual_block_mode = {
|
||||||
|
-- Move current line / block with Alt-j/k ala vscode.
|
||||||
|
["<A-j>"] = ":m '>+1<CR>gv-gv",
|
||||||
|
["<A-k>"] = ":m '<-2<CR>gv-gv",
|
||||||
|
},
|
||||||
|
|
||||||
|
command_mode = {
|
||||||
|
-- navigate tab completion with <c-j> and <c-k>
|
||||||
|
-- runs conditionally
|
||||||
|
["<C-j>"] = { 'pumvisible() ? "\\<C-n>" : "\\<C-j>"', { expr = true, noremap = true } },
|
||||||
|
["<C-k>"] = { 'pumvisible() ? "\\<C-p>" : "\\<C-k>"', { expr = true, noremap = true } },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if vim.fn.has "mac" == 1 then
|
||||||
|
defaults.normal_mode["<A-Up>"] = defaults.normal_mode["<C-Up>"]
|
||||||
|
defaults.normal_mode["<A-Down>"] = defaults.normal_mode["<C-Down>"]
|
||||||
|
defaults.normal_mode["<A-Left>"] = defaults.normal_mode["<C-Left>"]
|
||||||
|
defaults.normal_mode["<A-Right>"] = defaults.normal_mode["<C-Right>"]
|
||||||
|
Log:debug "Activated mac keymappings"
|
||||||
|
end
|
||||||
|
|
||||||
|
function set_keymaps(mode, key, val)
|
||||||
|
local opt = generic_opts[mode] or generic_opts_any
|
||||||
|
if type(val) == "table" then
|
||||||
|
opt = val[2]
|
||||||
|
val = val[1]
|
||||||
|
end
|
||||||
|
if val then
|
||||||
|
vim.keymap.set(mode, key, val, opt)
|
||||||
|
else
|
||||||
|
pcall(vim.api.nvim_del_keymap, mode, key)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function load_mode(mode, keymaps)
|
||||||
|
mode = mode_adapters[mode] or mode
|
||||||
|
for k, v in pairs(keymaps) do
|
||||||
|
set_keymaps(mode, k, v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function load(keymaps)
|
||||||
|
keymaps = keymaps or {}
|
||||||
|
for mode, mapping in pairs(keymaps) do
|
||||||
|
load_mode(mode, mapping)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function load_defaults()
|
||||||
|
load(get_defaults())
|
||||||
|
keys = keys or {}
|
||||||
|
for idx, _ in pairs(defaults) do
|
||||||
|
if not keys[idx] then
|
||||||
|
keys[idx] = {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_defaults()
|
||||||
|
return defaults
|
||||||
|
end
|
||||||
|
|
||||||
|
load_defaults()
|
||||||
45
hosts/nb-01.cloonar.com/modules/nvim/config/lspconfig.lua
Normal file
45
hosts/nb-01.cloonar.com/modules/nvim/config/lspconfig.lua
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
local status, lspc = pcall(require, 'lspconfig')
|
||||||
|
if (not status) then return end
|
||||||
|
|
||||||
|
lspc.clangd.setup{}
|
||||||
|
|
||||||
|
local buf_map = function(bufnr, mode, lhs, rhs, opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, opts or {
|
||||||
|
silent = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local protocol = require('vim.lsp.protocol')
|
||||||
|
|
||||||
|
local on_attach = function(client, buffnr)
|
||||||
|
if client.server.capabilities.documentFormattingProvider then
|
||||||
|
vimapi.nvim_create_autocmd("BufWritePre", {
|
||||||
|
group = vim.api.nvim_create_augroup("format", { clear = true }),
|
||||||
|
buffer = buffnr,
|
||||||
|
callback = function() vim.lsp.buf.formatting_seq_sync() end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
|
||||||
|
local servers = { 'tsserver', 'lua', 'cssls', 'yamlls', 'intelephense' }
|
||||||
|
for _, lsp in pairs(servers) do
|
||||||
|
require('lspconfig')[lsp].setup {
|
||||||
|
-- on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
lspc.yamlls.setup({
|
||||||
|
settings = {
|
||||||
|
yaml = {
|
||||||
|
keyOrdering = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
-- lspc.intelephense.setup()
|
||||||
73
hosts/nb-01.cloonar.com/modules/nvim/config/nvim-cmp.lua
Normal file
73
hosts/nb-01.cloonar.com/modules/nvim/config/nvim-cmp.lua
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
local has_words_before = function()
|
||||||
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local feedkey = function(key, mode)
|
||||||
|
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
local cmp = require("cmp")
|
||||||
|
local lspkind = require("lspkind")
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
sources = {
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "cmp_tabnine" },
|
||||||
|
{ name = "treesitter" },
|
||||||
|
{ name = "buffer" },
|
||||||
|
{ name = "path" },
|
||||||
|
{ name = "vsnip" },
|
||||||
|
-- { name = "copilot" },
|
||||||
|
},
|
||||||
|
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
vim.fn["vsnip#anonymous"](args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
formatting = {
|
||||||
|
format = lspkind.cmp_format({
|
||||||
|
with_text = true,
|
||||||
|
menu = {
|
||||||
|
buffer = "[Buf]",
|
||||||
|
nvim_lsp = "[LSP]",
|
||||||
|
nvim_lua = "[Lua]",
|
||||||
|
latex_symbols = "[Latex]",
|
||||||
|
treesitter = "[TS]",
|
||||||
|
cmp_tabnine = "[TN]",
|
||||||
|
vsnip = "[Snip]",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
|
||||||
|
mapping = {
|
||||||
|
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif vim.fn["vsnip#available"](1) == 1 then
|
||||||
|
feedkey("<Plug>(vsnip-expand-or-jump)", "")
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
|
|
||||||
|
["<S-Tab>"] = cmp.mapping(function()
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif vim.fn["vsnip#jumpable"](-1) == 1 then
|
||||||
|
feedkey("<Plug>(vsnip-jump-prev)", "")
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
})
|
||||||
41
hosts/nb-01.cloonar.com/modules/nvim/config/project.lua
Normal file
41
hosts/nb-01.cloonar.com/modules/nvim/config/project.lua
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
config = {
|
||||||
|
---@usage set to false to disable project.nvim.
|
||||||
|
--- This is on by default since it's currently the expected behavior.
|
||||||
|
active = true,
|
||||||
|
|
||||||
|
on_config_done = nil,
|
||||||
|
|
||||||
|
---@usage set to true to disable setting the current-woriking directory
|
||||||
|
--- Manual mode doesn't automatically change your root directory, so you have
|
||||||
|
--- the option to manually do so using `:ProjectRoot` command.
|
||||||
|
manual_mode = false,
|
||||||
|
|
||||||
|
---@usage Methods of detecting the root directory
|
||||||
|
--- Allowed values: **"lsp"** uses the native neovim lsp
|
||||||
|
--- **"pattern"** uses vim-rooter like glob pattern matching. Here
|
||||||
|
--- order matters: if one is not detected, the other is used as fallback. You
|
||||||
|
--- can also delete or rearangne the detection methods.
|
||||||
|
-- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project
|
||||||
|
detection_methods = { "pattern" },
|
||||||
|
|
||||||
|
---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods
|
||||||
|
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json", "pom.xml" },
|
||||||
|
|
||||||
|
---@ Show hidden files in telescope when searching for files in a project
|
||||||
|
show_hidden = false,
|
||||||
|
|
||||||
|
---@usage When set to false, you will get a message when project.nvim changes your directory.
|
||||||
|
-- When set to false, you will get a message when project.nvim changes your directory.
|
||||||
|
silent_chdir = true,
|
||||||
|
|
||||||
|
---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... }
|
||||||
|
ignore_lsp = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
local status_ok, project = pcall(require, "project_nvim")
|
||||||
|
if not status_ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
project.setup(config)
|
||||||
|
|
||||||
148
hosts/nb-01.cloonar.com/modules/nvim/config/telescope.lua
Normal file
148
hosts/nb-01.cloonar.com/modules/nvim/config/telescope.lua
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
local function get_pickers(actions)
|
||||||
|
return {
|
||||||
|
find_files = {
|
||||||
|
theme = "dropdown",
|
||||||
|
hidden = true,
|
||||||
|
previewer = false,
|
||||||
|
},
|
||||||
|
live_grep = {
|
||||||
|
--@usage don't include the filename in the search results
|
||||||
|
only_sort_text = true,
|
||||||
|
theme = "dropdown",
|
||||||
|
},
|
||||||
|
grep_string = {
|
||||||
|
only_sort_text = true,
|
||||||
|
theme = "dropdown",
|
||||||
|
},
|
||||||
|
buffers = {
|
||||||
|
theme = "dropdown",
|
||||||
|
previewer = false,
|
||||||
|
initial_mode = "normal",
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
["<C-d>"] = actions.delete_buffer,
|
||||||
|
},
|
||||||
|
n = {
|
||||||
|
["dd"] = actions.delete_buffer,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
planets = {
|
||||||
|
show_pluto = true,
|
||||||
|
show_moon = true,
|
||||||
|
},
|
||||||
|
git_files = {
|
||||||
|
theme = "dropdown",
|
||||||
|
hidden = true,
|
||||||
|
previewer = false,
|
||||||
|
show_untracked = true,
|
||||||
|
},
|
||||||
|
lsp_references = {
|
||||||
|
theme = "dropdown",
|
||||||
|
initial_mode = "normal",
|
||||||
|
},
|
||||||
|
lsp_definitions = {
|
||||||
|
theme = "dropdown",
|
||||||
|
initial_mode = "normal",
|
||||||
|
},
|
||||||
|
lsp_declarations = {
|
||||||
|
theme = "dropdown",
|
||||||
|
initial_mode = "normal",
|
||||||
|
},
|
||||||
|
lsp_implementations = {
|
||||||
|
theme = "dropdown",
|
||||||
|
initial_mode = "normal",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok, actions = pcall(require, "telescope.actions")
|
||||||
|
if not ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
prompt_prefix = " ",
|
||||||
|
selection_caret = " ",
|
||||||
|
entry_prefix = " ",
|
||||||
|
initial_mode = "insert",
|
||||||
|
selection_strategy = "reset",
|
||||||
|
sorting_strategy = "descending",
|
||||||
|
layout_strategy = "horizontal",
|
||||||
|
layout_config = {
|
||||||
|
width = 0.75,
|
||||||
|
preview_cutoff = 120,
|
||||||
|
horizontal = {
|
||||||
|
preview_width = function(_, cols, _)
|
||||||
|
if cols < 120 then
|
||||||
|
return math.floor(cols * 0.8)
|
||||||
|
end
|
||||||
|
return math.floor(cols * 0.8)
|
||||||
|
end,
|
||||||
|
mirror = false,
|
||||||
|
},
|
||||||
|
vertical = { mirror = false },
|
||||||
|
},
|
||||||
|
vimgrep_arguments = {
|
||||||
|
"rg",
|
||||||
|
"--color=never",
|
||||||
|
"--no-heading",
|
||||||
|
"--with-filename",
|
||||||
|
"--line-number",
|
||||||
|
"--column",
|
||||||
|
"--smart-case",
|
||||||
|
"--hidden",
|
||||||
|
"--glob=!.git/",
|
||||||
|
},
|
||||||
|
---@usage Mappings are fully customizable. Many familiar mapping patterns are setup as defaults.
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
["<C-n>"] = actions.move_selection_next,
|
||||||
|
["<C-p>"] = actions.move_selection_previous,
|
||||||
|
["<C-c>"] = actions.close,
|
||||||
|
["<C-j>"] = actions.cycle_history_next,
|
||||||
|
["<C-k>"] = actions.cycle_history_prev,
|
||||||
|
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
|
||||||
|
["<CR>"] = actions.select_default,
|
||||||
|
},
|
||||||
|
n = {
|
||||||
|
["<C-n>"] = actions.move_selection_next,
|
||||||
|
["<C-p>"] = actions.move_selection_previous,
|
||||||
|
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pickers = get_pickers(actions),
|
||||||
|
file_ignore_patterns = {},
|
||||||
|
path_display = { "smart" },
|
||||||
|
winblend = 0,
|
||||||
|
border = {},
|
||||||
|
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
|
||||||
|
color_devicons = true,
|
||||||
|
set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
|
||||||
|
extensions = {
|
||||||
|
fzf = {
|
||||||
|
fuzzy = true, -- false will only do exact matching
|
||||||
|
override_generic_sorter = true, -- override the generic sorter
|
||||||
|
override_file_sorter = true, -- override the file sorter
|
||||||
|
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
local previewers = require "telescope.previewers"
|
||||||
|
local sorters = require "telescope.sorters"
|
||||||
|
|
||||||
|
config = vim.tbl_extend("keep", {
|
||||||
|
file_previewer = previewers.vim_buffer_cat.new,
|
||||||
|
grep_previewer = previewers.vim_buffer_vimgrep.new,
|
||||||
|
qflist_previewer = previewers.vim_buffer_qflist.new,
|
||||||
|
file_sorter = sorters.get_fuzzy_file,
|
||||||
|
generic_sorter = sorters.get_generic_fuzzy_sorter,
|
||||||
|
}, config)
|
||||||
|
|
||||||
|
local telescope = require "telescope"
|
||||||
|
telescope.setup(config)
|
||||||
|
|
||||||
|
require("telescope").load_extension "projects"
|
||||||
|
require("telescope").load_extension "fzf"
|
||||||
133
hosts/nb-01.cloonar.com/modules/nvim/config/terminal.lua
Normal file
133
hosts/nb-01.cloonar.com/modules/nvim/config/terminal.lua
Normal file
|
|
@ -0,0 +1,133 @@
|
||||||
|
local config = {
|
||||||
|
active = true,
|
||||||
|
on_config_done = nil,
|
||||||
|
-- size can be a number or function which is passed the current terminal
|
||||||
|
size = 60,
|
||||||
|
open_mapping = [[<c-t>]],
|
||||||
|
hide_numbers = true, -- hide the number column in toggleterm buffers
|
||||||
|
shade_filetypes = {},
|
||||||
|
shade_terminals = true,
|
||||||
|
shading_factor = 2, -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light
|
||||||
|
start_in_insert = true,
|
||||||
|
insert_mappings = true, -- whether or not the open mapping applies in insert mode
|
||||||
|
persist_size = false,
|
||||||
|
-- direction = 'vertical' | 'horizontal' | 'window' | 'float',
|
||||||
|
direction = "float",
|
||||||
|
close_on_exit = true, -- close the terminal window when the process exits
|
||||||
|
shell = vim.o.shell, -- change the default shell
|
||||||
|
-- This field is only relevant if direction is set to 'float'
|
||||||
|
float_opts = {
|
||||||
|
-- The border key is *almost* the same as 'nvim_win_open'
|
||||||
|
-- see :h nvim_win_open for details on borders however
|
||||||
|
-- the 'curved' border is a custom border type
|
||||||
|
-- not natively supported but implemented in this plugin.
|
||||||
|
-- border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
|
||||||
|
border = "curved",
|
||||||
|
-- width = <value>,
|
||||||
|
-- height = <value>,
|
||||||
|
winblend = 0,
|
||||||
|
highlights = {
|
||||||
|
border = "Normal",
|
||||||
|
background = "Normal",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Add executables on the config.lua
|
||||||
|
-- { exec, keymap, name}
|
||||||
|
-- lvim.builtin.terminal.execs = {{}} to overwrite
|
||||||
|
-- lvim.builtin.terminal.execs[#lvim.builtin.terminal.execs+1] = {"gdb", "tg", "GNU Debugger"}
|
||||||
|
-- TODO: pls add mappings in which key and refactor this
|
||||||
|
execs = {
|
||||||
|
{ vim.o.shell, "<M-1>", "Horizontal Terminal", "horizontal", 0.3 },
|
||||||
|
{ vim.o.shell, "<M-2>", "Vertical Terminal", "vertical", 0.4 },
|
||||||
|
{ vim.o.shell, "<M-3>", "Float Terminal", "float", nil },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
--- Get current buffer size
|
||||||
|
---@return {width: number, height: number}
|
||||||
|
local function get_buf_size()
|
||||||
|
local cbuf = vim.api.nvim_get_current_buf()
|
||||||
|
local bufinfo = vim.tbl_filter(function(buf)
|
||||||
|
return buf.bufnr == cbuf
|
||||||
|
end, vim.fn.getwininfo(vim.api.nvim_get_current_win()))[1]
|
||||||
|
if bufinfo == nil then
|
||||||
|
return { width = -1, height = -1 }
|
||||||
|
end
|
||||||
|
return { width = bufinfo.width, height = bufinfo.height }
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Get the dynamic terminal size in cells
|
||||||
|
---@param direction number
|
||||||
|
---@param size integer
|
||||||
|
---@return integer
|
||||||
|
local function get_dynamic_terminal_size(direction, size)
|
||||||
|
size = size or config.size
|
||||||
|
if direction ~= "vertical" and tostring(size):find(".", 1, true) then
|
||||||
|
size = math.min(size, 1.0)
|
||||||
|
local buf_sizes = get_buf_size()
|
||||||
|
local buf_size = direction == "horizontal" and buf_sizes.height or buf_sizes.width
|
||||||
|
return buf_size * size
|
||||||
|
else
|
||||||
|
return size
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Add_exec = function(opts)
|
||||||
|
local binary = opts.cmd:match "(%S+)"
|
||||||
|
if vim.fn.executable(binary) ~= 1 then
|
||||||
|
Log:debug("Skipping configuring executable " .. binary .. ". Please make sure it is installed properly.")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set({ "n", "t" }, opts.keymap, function()
|
||||||
|
M._exec_toggle { cmd = opts.cmd, count = opts.count, direction = opts.direction, size = opts.size() }
|
||||||
|
end, { desc = opts.label, noremap = true, silent = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
local terminal = require "toggleterm"
|
||||||
|
terminal.setup(config)
|
||||||
|
|
||||||
|
for i, exec in pairs(config.execs) do
|
||||||
|
local direction = exec[4] or config.direction
|
||||||
|
|
||||||
|
local opts = {
|
||||||
|
cmd = exec[1],
|
||||||
|
keymap = exec[2],
|
||||||
|
label = exec[3],
|
||||||
|
-- NOTE: unable to consistently bind id/count <= 9, see #2146
|
||||||
|
count = i + 100,
|
||||||
|
direction = direction,
|
||||||
|
size = function()
|
||||||
|
return get_dynamic_terminal_size(direction, exec[5])
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
Add_exec(opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
_exec_toggle = function(opts)
|
||||||
|
local Terminal = require("toggleterm.terminal").Terminal
|
||||||
|
local term = Terminal:new { cmd = opts.cmd, count = opts.count, direction = opts.direction }
|
||||||
|
term:toggle(opts.size, opts.direction)
|
||||||
|
end
|
||||||
|
|
||||||
|
Lazygit_toggle = function()
|
||||||
|
local Terminal = require("toggleterm.terminal").Terminal
|
||||||
|
local lazygit = Terminal:new {
|
||||||
|
cmd = "lazygit",
|
||||||
|
hidden = true,
|
||||||
|
direction = "float",
|
||||||
|
float_opts = {
|
||||||
|
border = "none",
|
||||||
|
width = 100000,
|
||||||
|
height = 100000,
|
||||||
|
},
|
||||||
|
on_open = function(_)
|
||||||
|
vim.cmd "startinsert!"
|
||||||
|
end,
|
||||||
|
on_close = function(_) end,
|
||||||
|
count = 99,
|
||||||
|
}
|
||||||
|
lazygit:toggle()
|
||||||
|
end
|
||||||
|
|
||||||
18
hosts/nb-01.cloonar.com/modules/nvim/config/theming.lua
Normal file
18
hosts/nb-01.cloonar.com/modules/nvim/config/theming.lua
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
-- set colorscheme
|
||||||
|
vim.cmd 'set termguicolors'
|
||||||
|
|
||||||
|
require("catppuccin").setup()
|
||||||
|
|
||||||
|
vim.cmd [[colorscheme dracula]]
|
||||||
|
|
||||||
|
-- enable colorizer
|
||||||
|
require'colorizer'.setup()
|
||||||
|
|
||||||
|
-- set sign
|
||||||
|
vim.cmd 'sign define DiagnosticSignError text= linehl= texthl=DiagnosticSignError numhl='
|
||||||
|
vim.cmd 'sign define DiagnosticSignHint text= linehl= texthl=DiagnosticSignHint numhl='
|
||||||
|
vim.cmd 'sign define DiagnosticSignInfo text= linehl= texthl=DiagnosticSignInfo numhl='
|
||||||
|
vim.cmd 'sign define DiagnosticSignWarn text= linehl= texthl=DiagnosticSignWarn numhl='
|
||||||
|
|
||||||
|
-- set lightline theme to horizon
|
||||||
|
vim.g.lightline = { colorscheme = "dracula" }
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
require'nvim-treesitter.configs'.setup {
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
-- You can use the capture groups defined in textobjects.scm
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = "@class.inner",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
30
hosts/nb-01.cloonar.com/modules/nvim/config/treesitter.lua
Normal file
30
hosts/nb-01.cloonar.com/modules/nvim/config/treesitter.lua
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
disable = {},
|
||||||
|
},
|
||||||
|
rainbow = {
|
||||||
|
enable = true,
|
||||||
|
extended_mode = true,
|
||||||
|
},
|
||||||
|
autotag = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
context_commentstring = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = "gnn",
|
||||||
|
node_incremental = "grn",
|
||||||
|
scope_incremental = "grc",
|
||||||
|
node_decremental = "grm",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- breaks highlight
|
||||||
|
-- vim.cmd([[set foldmethod=expr]])
|
||||||
|
-- vim.cmd([[set foldlevel=10]])
|
||||||
|
-- vim.cmd([[set foldexpr=nvim_treesitter#foldexpr()]])
|
||||||
28
hosts/nb-01.cloonar.com/modules/nvim/config/utils.lua
Normal file
28
hosts/nb-01.cloonar.com/modules/nvim/config/utils.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
-- null-ls
|
||||||
|
local nb = require('null-ls').builtins
|
||||||
|
|
||||||
|
require('null-ls').setup({
|
||||||
|
sources = {
|
||||||
|
nb.formatting.alejandra,
|
||||||
|
nb.code_actions.statix,
|
||||||
|
nb.diagnostics.cppcheck,
|
||||||
|
nb.diagnostics.deadnix,
|
||||||
|
nb.diagnostics.statix,
|
||||||
|
nb.diagnostics.eslint,
|
||||||
|
nb.completion.spell,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("gitsigns").setup()
|
||||||
|
|
||||||
|
-- autopairs
|
||||||
|
require('nvim-autopairs').setup{}
|
||||||
|
|
||||||
|
require('todo-comments').setup{}
|
||||||
|
|
||||||
|
-- copy to system clipboard
|
||||||
|
vim.api.nvim_set_keymap( 'v', '<Leader>y', '"+y', {noremap = true})
|
||||||
|
vim.api.nvim_set_keymap( 'n', '<Leader>y', ':%+y<CR>', {noremap = true})
|
||||||
|
|
||||||
|
-- paste from system clipboard
|
||||||
|
vim.api.nvim_set_keymap( 'n', '<Leader>p', '"+p', {noremap = true})
|
||||||
148
hosts/nb-01.cloonar.com/modules/nvim/config/which-key.lua
Normal file
148
hosts/nb-01.cloonar.com/modules/nvim/config/which-key.lua
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
local function smart_quit()
|
||||||
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
|
local modified = vim.api.nvim_buf_get_option(bufnr, "modified")
|
||||||
|
if modified then
|
||||||
|
vim.ui.input({
|
||||||
|
prompt = "You have unsaved changes. Quit anyway? (y/n) ",
|
||||||
|
}, function(input)
|
||||||
|
if input == "y" then
|
||||||
|
vim.cmd "q!"
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
vim.cmd "q!"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function find_project_files()
|
||||||
|
local _, builtin = pcall(require, "telescope.builtin")
|
||||||
|
local ok = pcall(builtin.git_files)
|
||||||
|
|
||||||
|
if not ok then
|
||||||
|
builtin.find_files()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
wk.setup({})
|
||||||
|
|
||||||
|
wk.register({
|
||||||
|
["<leader>"] = {
|
||||||
|
|
||||||
|
[";"] = { "<cmd>Alpha<CR>", "Dashboard" },
|
||||||
|
["w"] = { "<cmd>w!<CR>", "Save" },
|
||||||
|
["q"] = { "<cmd>smart_quit()<CR>", "Quit" },
|
||||||
|
["/"] = { "<Plug>(comment_toggle_linewise_current)", "Comment toggle current line" },
|
||||||
|
["c"] = { "<cmd>BufferKill<CR>", "Close Buffer" },
|
||||||
|
["f"] = { find_project_files, "Find File" },
|
||||||
|
["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
|
||||||
|
["t"] = { "<cmd>TodoTelescope keywords=TODO,FIX<CR>", "Find TODO,FIX" },
|
||||||
|
b = {
|
||||||
|
name = "Buffers",
|
||||||
|
j = { "<cmd>BufferLinePick<cr>", "Jump" },
|
||||||
|
f = { "<cmd>Telescope buffers<cr>", "Find" },
|
||||||
|
b = { "<cmd>BufferLineCyclePrev<cr>", "Previous" },
|
||||||
|
n = { "<cmd>BufferLineCycleNext<cr>", "Next" },
|
||||||
|
-- w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, -- TODO: implement this for bufferline
|
||||||
|
e = {
|
||||||
|
"<cmd>BufferLinePickClose<cr>",
|
||||||
|
"Pick which buffer to close",
|
||||||
|
},
|
||||||
|
h = { "<cmd>BufferLineCloseLeft<cr>", "Close all to the left" },
|
||||||
|
l = {
|
||||||
|
"<cmd>BufferLineCloseRight<cr>",
|
||||||
|
"Close all to the right",
|
||||||
|
},
|
||||||
|
D = {
|
||||||
|
"<cmd>BufferLineSortByDirectory<cr>",
|
||||||
|
"Sort by directory",
|
||||||
|
},
|
||||||
|
L = {
|
||||||
|
"<cmd>BufferLineSortByExtension<cr>",
|
||||||
|
"Sort by language",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- " Available Debug Adapters:
|
||||||
|
-- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/
|
||||||
|
-- " Adapter configuration and installation instructions:
|
||||||
|
-- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation
|
||||||
|
-- " Debug Adapter protocol:
|
||||||
|
-- " https://microsoft.github.io/debug-adapter-protocol/
|
||||||
|
-- " Debugging
|
||||||
|
g = {
|
||||||
|
name = "Git",
|
||||||
|
g = { Lazygit_toggle, "Lazygit" },
|
||||||
|
j = { "<cmd>lua require 'gitsigns'.next_hunk({navigation_message = false})<cr>", "Next Hunk" },
|
||||||
|
k = { "<cmd>lua require 'gitsigns'.prev_hunk({navigation_message = false})<cr>", "Prev Hunk" },
|
||||||
|
l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
|
||||||
|
p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
|
||||||
|
r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
|
||||||
|
R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
|
||||||
|
s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
|
||||||
|
u = {
|
||||||
|
"<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
|
||||||
|
"Undo Stage Hunk",
|
||||||
|
},
|
||||||
|
o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
|
||||||
|
b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
|
||||||
|
c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
|
||||||
|
C = {
|
||||||
|
"<cmd>Telescope git_bcommits<cr>",
|
||||||
|
"Checkout commit(for current file)",
|
||||||
|
},
|
||||||
|
d = {
|
||||||
|
"<cmd>Gitsigns diffthis HEAD<cr>",
|
||||||
|
"Git Diff",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
l = {
|
||||||
|
name = "LSP",
|
||||||
|
a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
|
||||||
|
d = { "<cmd>Telescope diagnostics bufnr=0 theme=get_ivy<cr>", "Buffer Diagnostics" },
|
||||||
|
w = { "<cmd>Telescope diagnostics<cr>", "Diagnostics" },
|
||||||
|
-- f = { require("lvim.lsp.utils").format, "Format" },
|
||||||
|
i = { "<cmd>LspInfo<cr>", "Info" },
|
||||||
|
I = { "<cmd>Mason<cr>", "Mason Info" },
|
||||||
|
j = {
|
||||||
|
vim.diagnostic.goto_next,
|
||||||
|
"Next Diagnostic",
|
||||||
|
},
|
||||||
|
k = {
|
||||||
|
vim.diagnostic.goto_prev,
|
||||||
|
"Prev Diagnostic",
|
||||||
|
},
|
||||||
|
l = { vim.lsp.codelens.run, "CodeLens Action" },
|
||||||
|
q = { vim.diagnostic.setloclist, "Quickfix" },
|
||||||
|
r = { vim.lsp.buf.rename, "Rename" },
|
||||||
|
s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
|
||||||
|
S = {
|
||||||
|
"<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
|
||||||
|
"Workspace Symbols",
|
||||||
|
},
|
||||||
|
e = { "<cmd>Telescope quickfix<cr>", "Telescope Quickfix" },
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
a = { "<cmd>lua require('telescope.builtin').lsp_code_actions()<cr>", "Code Actions" },
|
||||||
|
d = { "<cmd>lua require('telescope.builtin').lsp_document_diagnostics()<cr>", "LSP Diagnostics" },
|
||||||
|
k = { "<cmd>lua vim.lsp.buf.signature_help()<cr>", "Signature Help" },
|
||||||
|
P = { "<cmd>lua require'telescope'.extensions.projects.projects{}<cr>", "Signature Help" },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
wk.register(
|
||||||
|
{
|
||||||
|
["/"] = { "<Plug>(comment_toggle_linewise_visual)", "Comment toggle linewise (visual)" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = "v", -- VISUAL mode
|
||||||
|
prefix = "<leader>",
|
||||||
|
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
|
||||||
|
silent = true, -- use `silent` when creating keymaps
|
||||||
|
noremap = true, -- use `noremap` when creating keymaps
|
||||||
|
nowait = true, -- use `nowait` when creating keymaps
|
||||||
|
}
|
||||||
|
)
|
||||||
90
hosts/nb-01.cloonar.com/modules/nvim/default.nix
Normal file
90
hosts/nb-01.cloonar.com/modules/nvim/default.nix
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.variables = { EDITOR = "vim"; };
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
sumneko-lua-language-server
|
||||||
|
nodePackages.intelephense
|
||||||
|
nodePackages.vscode-css-languageserver-bin
|
||||||
|
nodePackages.yaml-language-server
|
||||||
|
gopls
|
||||||
|
lazygit
|
||||||
|
ripgrep
|
||||||
|
(neovim.override {
|
||||||
|
vimAlias = true;
|
||||||
|
configure = {
|
||||||
|
packages.myPlugins = with pkgs.vimPlugins; {
|
||||||
|
start = [
|
||||||
|
bufferline-nvim
|
||||||
|
catppuccin-nvim
|
||||||
|
cmp-buffer
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-path
|
||||||
|
cmp-spell
|
||||||
|
cmp-treesitter
|
||||||
|
cmp-vsnip
|
||||||
|
comment-nvim
|
||||||
|
copilot-vim
|
||||||
|
copilot-lua
|
||||||
|
copilot-cmp
|
||||||
|
# CopilotChat-nvim
|
||||||
|
dracula-vim
|
||||||
|
friendly-snippets
|
||||||
|
gitsigns-nvim
|
||||||
|
lightline-vim
|
||||||
|
lspkind-nvim
|
||||||
|
neogit
|
||||||
|
null-ls-nvim
|
||||||
|
nvim-autopairs
|
||||||
|
nvim-cmp
|
||||||
|
nvim-colorizer-lua
|
||||||
|
nvim-lspconfig
|
||||||
|
nvim-tree-lua
|
||||||
|
pkgs.vimPlugins.nvim-treesitter.withAllGrammars
|
||||||
|
# (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
|
||||||
|
plenary-nvim
|
||||||
|
project-nvim
|
||||||
|
rainbow-delimiters-nvim
|
||||||
|
telescope-fzf-native-nvim
|
||||||
|
telescope-nvim
|
||||||
|
todo-comments-nvim
|
||||||
|
toggleterm-nvim
|
||||||
|
vim-floaterm
|
||||||
|
vim-sneak
|
||||||
|
vim-vsnip
|
||||||
|
which-key-nvim
|
||||||
|
];
|
||||||
|
opt = [];
|
||||||
|
};
|
||||||
|
customRC = let
|
||||||
|
luaRequire = module:
|
||||||
|
builtins.readFile (builtins.toString
|
||||||
|
./config
|
||||||
|
+ "/${module}.lua");
|
||||||
|
luaConfig = builtins.concatStringsSep "\n" (map luaRequire [
|
||||||
|
"init"
|
||||||
|
"keymappings"
|
||||||
|
"copilot"
|
||||||
|
"icons"
|
||||||
|
"lspconfig"
|
||||||
|
"nvim-cmp"
|
||||||
|
"theming"
|
||||||
|
"project"
|
||||||
|
"telescope"
|
||||||
|
"terminal"
|
||||||
|
"treesitter"
|
||||||
|
"treesitter-textobjects"
|
||||||
|
"utils"
|
||||||
|
"bufferline"
|
||||||
|
"which-key"
|
||||||
|
]);
|
||||||
|
in ''
|
||||||
|
lua << EOF
|
||||||
|
${luaConfig}
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)];
|
||||||
|
}
|
||||||
25
hosts/nb-01.cloonar.com/modules/printer.nix
Normal file
25
hosts/nb-01.cloonar.com/modules/printer.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
in {
|
||||||
|
services.printing.enable = true;
|
||||||
|
# services.printing.drivers = [ pkgs.brlaser ];
|
||||||
|
# services.avahi.enable = true;
|
||||||
|
# services.avahi.nssmdns = true;
|
||||||
|
# services.avahi.openFirewall = true;
|
||||||
|
|
||||||
|
hardware.printers = {
|
||||||
|
ensureDefaultPrinter = "Cloonar";
|
||||||
|
ensurePrinters = [
|
||||||
|
{
|
||||||
|
name = "epicenter.works";
|
||||||
|
deviceUri = "ipp://mercury.epicenter.intra/ipp/print";
|
||||||
|
model = "everywhere";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Cloonar";
|
||||||
|
deviceUri = "ipp://brn30055c566237.cloonar.multimedia/ipp/print";
|
||||||
|
model = "everywhere";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.apache-directory-studio
|
||||||
|
];
|
||||||
|
}
|
||||||
200
hosts/nb-01.cloonar.com/modules/sway/foot.ini
Normal file
200
hosts/nb-01.cloonar.com/modules/sway/foot.ini
Normal file
|
|
@ -0,0 +1,200 @@
|
||||||
|
# -*- conf -*-
|
||||||
|
|
||||||
|
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
|
||||||
|
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
|
||||||
|
# login-shell=no
|
||||||
|
|
||||||
|
# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
|
||||||
|
# title=foot
|
||||||
|
# locked-title=no
|
||||||
|
|
||||||
|
# font=monospace:size=12
|
||||||
|
# font-bold=<bold variant of regular font>
|
||||||
|
# font-italic=<italic variant of regular font>
|
||||||
|
# font-bold-italic=<bold+italic variant of regular font>
|
||||||
|
# font-size-adjustment=0.5
|
||||||
|
# line-height=<font metrics>
|
||||||
|
# letter-spacing=0
|
||||||
|
# horizontal-letter-offset=0
|
||||||
|
# vertical-letter-offset=0
|
||||||
|
# underline-offset=<font metrics>
|
||||||
|
# underline-thickness=<font underline thickness>
|
||||||
|
# box-drawings-uses-font-glyphs=no
|
||||||
|
dpi-aware=yes
|
||||||
|
|
||||||
|
# initial-window-size-pixels=700x500 # Or,
|
||||||
|
# initial-window-size-chars=<COLSxROWS>
|
||||||
|
# initial-window-mode=windowed
|
||||||
|
# pad=0x0 # optionally append 'center'
|
||||||
|
# resize-delay-ms=100
|
||||||
|
|
||||||
|
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
|
||||||
|
|
||||||
|
# bold-text-in-bright=no
|
||||||
|
# word-delimiters=,│`|:"'()[]{}<>
|
||||||
|
# selection-target=primary
|
||||||
|
# workers=<number of logical CPUs>
|
||||||
|
# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux)
|
||||||
|
# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD)
|
||||||
|
|
||||||
|
[environment]
|
||||||
|
# name=value
|
||||||
|
|
||||||
|
[bell]
|
||||||
|
# urgent=no
|
||||||
|
# notify=no
|
||||||
|
# command=
|
||||||
|
# command-focused=no
|
||||||
|
|
||||||
|
[scrollback]
|
||||||
|
# lines=1000
|
||||||
|
# multiplier=3.0
|
||||||
|
# indicator-position=relative
|
||||||
|
# indicator-format=""
|
||||||
|
|
||||||
|
[url]
|
||||||
|
# launch=xdg-open ${url}
|
||||||
|
# label-letters=sadfjklewcmpgh
|
||||||
|
# osc8-underline=url-mode
|
||||||
|
# protocols=http, https, ftp, ftps, file, gemini, gopher
|
||||||
|
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
|
||||||
|
|
||||||
|
[cursor]
|
||||||
|
# style=block
|
||||||
|
# color=<inverse foreground/background>
|
||||||
|
# blink=no
|
||||||
|
# beam-thickness=1.5
|
||||||
|
# underline-thickness=<font underline thickness>
|
||||||
|
|
||||||
|
[mouse]
|
||||||
|
# hide-when-typing=no
|
||||||
|
# alternate-scroll-mode=yes
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
# alpha=1.0
|
||||||
|
background=282a36
|
||||||
|
foreground=f8f8f2
|
||||||
|
|
||||||
|
## Normal/regular colors (color palette 0-7)
|
||||||
|
regular0=21222c # black
|
||||||
|
regular1=ff5555 # red
|
||||||
|
regular2=50fa7b # green
|
||||||
|
regular3=f1fa8c # yellow
|
||||||
|
regular4=bd93f9 # blue
|
||||||
|
regular5=ff79c6 # magenta
|
||||||
|
regular6=8be9fd # cyan
|
||||||
|
regular7=f8f8f2 # white
|
||||||
|
|
||||||
|
## Bright colors (color palette 8-15)
|
||||||
|
bright0=6272a4 # bright black
|
||||||
|
bright1=ff6e6e # bright red
|
||||||
|
bright2=69ff94 # bright green
|
||||||
|
bright3=ffffa5 # bright yellow
|
||||||
|
bright4=d6acff # bright blue
|
||||||
|
bright5=ff92df # bright magenta
|
||||||
|
bright6=a4ffff # bright cyan
|
||||||
|
bright7=ffffff # bright white
|
||||||
|
|
||||||
|
## dimmed colors (see foot.ini(5) man page)
|
||||||
|
# dim0=<not set>
|
||||||
|
# ...
|
||||||
|
# dim7=<not-set>
|
||||||
|
|
||||||
|
## The remaining 256-color palette
|
||||||
|
# 16 = <256-color palette #16>
|
||||||
|
# ...
|
||||||
|
# 255 = <256-color palette #255>
|
||||||
|
|
||||||
|
## Misc colors
|
||||||
|
# selection-foreground=<inverse foreground/background>
|
||||||
|
# selection-background=<inverse foreground/background>
|
||||||
|
# jump-labels=<regular0> <regular3> # black-on-yellow
|
||||||
|
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
|
||||||
|
# search-box-no-match=<regular0> <regular1> # black-on-red
|
||||||
|
# search-box-match=<regular0> <regular3> # black-on-yellow
|
||||||
|
# urls=<regular3>
|
||||||
|
|
||||||
|
[csd]
|
||||||
|
# preferred=server
|
||||||
|
# size=26
|
||||||
|
# font=<primary font>
|
||||||
|
# color=<foreground color>
|
||||||
|
# hide-when-maximized=no
|
||||||
|
# double-click-to-maximize=yes
|
||||||
|
# border-width=0
|
||||||
|
# border-color=<csd.color>
|
||||||
|
# button-width=26
|
||||||
|
# button-color=<background color>
|
||||||
|
# button-minimize-color=<regular4>
|
||||||
|
# button-maximize-color=<regular2>
|
||||||
|
# button-close-color=<regular1>
|
||||||
|
|
||||||
|
[key-bindings]
|
||||||
|
# scrollback-up-page=Shift+Page_Up
|
||||||
|
# scrollback-up-half-page=none
|
||||||
|
# scrollback-up-line=none
|
||||||
|
# scrollback-down-page=Shift+Page_Down
|
||||||
|
# scrollback-down-half-page=none
|
||||||
|
# scrollback-down-line=none
|
||||||
|
# clipboard-copy=Control+Shift+c XF86Copy
|
||||||
|
# clipboard-paste=Control+Shift+v XF86Paste
|
||||||
|
# primary-paste=Shift+Insert
|
||||||
|
# search-start=Control+Shift+r
|
||||||
|
# font-increase=Control+plus Control+equal Control+KP_Add
|
||||||
|
# font-decrease=Control+minus Control+KP_Subtract
|
||||||
|
# font-reset=Control+0 Control+KP_0
|
||||||
|
# spawn-terminal=Control+Shift+n
|
||||||
|
# minimize=none
|
||||||
|
# maximize=none
|
||||||
|
# fullscreen=none
|
||||||
|
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
|
||||||
|
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
|
||||||
|
# pipe-selected=[xargs -r firefox] none
|
||||||
|
# show-urls-launch=Control+Shift+o
|
||||||
|
# show-urls-copy=none
|
||||||
|
# show-urls-persistent=none
|
||||||
|
# prompt-prev=Control+Shift+z
|
||||||
|
# prompt-next=Control+Shift+x
|
||||||
|
# unicode-input=Control+Shift+u
|
||||||
|
# noop=none
|
||||||
|
|
||||||
|
[search-bindings]
|
||||||
|
# cancel=Control+g Control+c Escape
|
||||||
|
# commit=Return
|
||||||
|
# find-prev=Control+r
|
||||||
|
# find-next=Control+s
|
||||||
|
# cursor-left=Left Control+b
|
||||||
|
# cursor-left-word=Control+Left Mod1+b
|
||||||
|
# cursor-right=Right Control+f
|
||||||
|
# cursor-right-word=Control+Right Mod1+f
|
||||||
|
# cursor-home=Home Control+a
|
||||||
|
# cursor-end=End Control+e
|
||||||
|
# delete-prev=BackSpace
|
||||||
|
# delete-prev-word=Mod1+BackSpace Control+BackSpace
|
||||||
|
# delete-next=Delete
|
||||||
|
# delete-next-word=Mod1+d Control+Delete
|
||||||
|
# extend-to-word-boundary=Control+w
|
||||||
|
# extend-to-next-whitespace=Control+Shift+w
|
||||||
|
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
|
||||||
|
# primary-paste=Shift+Insert
|
||||||
|
# unicode-input=none
|
||||||
|
|
||||||
|
[url-bindings]
|
||||||
|
# cancel=Control+g Control+c Control+d Escape
|
||||||
|
# toggle-url-visible=t
|
||||||
|
|
||||||
|
[text-bindings]
|
||||||
|
# \x03=Mod4+c # Map Super+c -> Ctrl+c
|
||||||
|
|
||||||
|
[mouse-bindings]
|
||||||
|
# selection-override-modifiers=Shift
|
||||||
|
# primary-paste=BTN_MIDDLE
|
||||||
|
# select-begin=BTN_LEFT
|
||||||
|
# select-begin-block=Control+BTN_LEFT
|
||||||
|
# select-extend=BTN_RIGHT
|
||||||
|
# select-extend-character-wise=Control+BTN_RIGHT
|
||||||
|
# select-word=BTN_LEFT-2
|
||||||
|
# select-word-whitespace=Control+BTN_LEFT-2
|
||||||
|
# select-row=BTN_LEFT-3
|
||||||
|
|
||||||
|
# vim: ft=dosini
|
||||||
17
hosts/nb-01.cloonar.com/modules/sway/parsec.nix
Normal file
17
hosts/nb-01.cloonar.com/modules/sway/parsec.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
||||||
|
config = { allowUnfree = true; };
|
||||||
|
};
|
||||||
|
parsecDesktopItem = pkgs.makeDesktopItem {
|
||||||
|
name = "parsec";
|
||||||
|
desktopName = "Parsec Gaming";
|
||||||
|
exec = "parsecd";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
unstable.parsec-bin
|
||||||
|
parsecDesktopItem
|
||||||
|
];
|
||||||
|
}
|
||||||
16
hosts/nb-01.cloonar.com/modules/sway/signal-work.nix
Normal file
16
hosts/nb-01.cloonar.com/modules/sway/signal-work.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
signalWorkDesktopItem = pkgs.makeDesktopItem {
|
||||||
|
name = "signal-work";
|
||||||
|
desktopName = "Signal with work profile";
|
||||||
|
icon = "signal-desktop";
|
||||||
|
exec = "signal-desktop --user-data-dir=/home/dominik/.config/Signal-work -- %u";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.signal-desktop
|
||||||
|
signalWorkDesktopItem
|
||||||
|
];
|
||||||
|
}
|
||||||
11
hosts/nb-01.cloonar.com/modules/sway/social.nix
Normal file
11
hosts/nb-01.cloonar.com/modules/sway/social.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
socialDesktopItem = pkgs.makeDesktopItem {
|
||||||
|
name = "social";
|
||||||
|
desktopName = "Firefox browser with social profile";
|
||||||
|
exec = "firefox -P social";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
environment.systemPackages = [ socialDesktopItem ];
|
||||||
|
}
|
||||||
356
hosts/nb-01.cloonar.com/modules/sway/sway.conf
Normal file
356
hosts/nb-01.cloonar.com/modules/sway/sway.conf
Normal file
|
|
@ -0,0 +1,356 @@
|
||||||
|
# Oxide theme
|
||||||
|
#
|
||||||
|
# Author: Diki Ananta <diki1aap@gmail.com> Repository: https://github.com/dikiaap/dotfiles
|
||||||
|
# License: MIT
|
||||||
|
# i3 config file (v4)
|
||||||
|
|
||||||
|
# font for window titles and bar
|
||||||
|
font pango:Source Sans Pro 10
|
||||||
|
|
||||||
|
# use win key
|
||||||
|
set $mod Mod4
|
||||||
|
|
||||||
|
# use these keys for focus, movement, and resize directions
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
|
||||||
|
# define names for workspaces
|
||||||
|
set $ws1 "1: "
|
||||||
|
set $ws2 "2: "
|
||||||
|
set $ws3 "3: "
|
||||||
|
set $ws4 "4: "
|
||||||
|
set $ws5 "5: "
|
||||||
|
set $ws6 "6: "
|
||||||
|
set $ws7 "7: "
|
||||||
|
set $ws8 "8: "
|
||||||
|
set $ws9 "9: "
|
||||||
|
set $ws10 "10: "
|
||||||
|
|
||||||
|
# assign workspaces to primary monitor
|
||||||
|
workspace $ws1 output primary
|
||||||
|
workspace $ws2 output primary
|
||||||
|
workspace $ws3 output primary
|
||||||
|
workspace $ws4 output primary
|
||||||
|
workspace $ws5 output primary
|
||||||
|
workspace $ws6 output primary
|
||||||
|
workspace $ws7 output primary
|
||||||
|
workspace $ws8 output primary
|
||||||
|
workspace $ws9 output primary
|
||||||
|
|
||||||
|
# use $mod+Mouse to drag floating windows to their wanted position
|
||||||
|
floating_modifier $mod
|
||||||
|
|
||||||
|
# control focused window when follows the mouse movements
|
||||||
|
focus_follows_mouse no
|
||||||
|
|
||||||
|
# window border settings
|
||||||
|
default_border none
|
||||||
|
default_floating_border none
|
||||||
|
|
||||||
|
# hiding borders adjacent to the screen edges
|
||||||
|
hide_edge_borders none
|
||||||
|
|
||||||
|
# set popups during fullscreen mode
|
||||||
|
popup_during_fullscreen smart
|
||||||
|
|
||||||
|
# start a terminal
|
||||||
|
#bindsym $mod+Return workspace $ws1; exec --no-startup-id alacritty
|
||||||
|
# bindsym $mod+Return workspace $ws1; exec alacritty -t alacritty-sway
|
||||||
|
bindsym $mod+Return workspace $ws1; exec foot -c /etc/xdg/foot/foot.ini -T terminal-sway
|
||||||
|
|
||||||
|
# start a program launcher
|
||||||
|
# bindsym $mod+d exec --no-startup-id wofi -s /etc/wofi/style.css --show drun --lines 5 --columns 1 -t alacritty
|
||||||
|
# bindsym $mod+d exec alacritty --class=launcher -e env TERMINAL_COMMAND="alacritty -e" sway-launcher-desktop
|
||||||
|
bindsym $mod+d exec foot -a launcher -e env TERMINAL_COMMAND="foot -c /etc/xdg/foot/foot.ini -e" sway-launcher-desktop
|
||||||
|
#bindsym $mod+d exec --no-startup-id bemenu
|
||||||
|
#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu="dmenu -i -fn 'Source Sans Pro-10' -nb '#212121' -sb '#2b83a6' -sf '#ffffff'
|
||||||
|
#bindsym $mod+d exec --no-startup-id bemenu --dmenu="dmenu -i -fn 'Source Sans Pro-10' -nb '#212121' -sb '#2b83a6' -sf '#ffffff'
|
||||||
|
|
||||||
|
# start an explorer
|
||||||
|
bindsym $mod+e exec --no-startup-id pcmanfm
|
||||||
|
|
||||||
|
# switching window with win+tab
|
||||||
|
bindsym $mod+Tab exec --no-startup-id wofi -show window
|
||||||
|
|
||||||
|
# kill focused window
|
||||||
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
|
# change keyboard layout
|
||||||
|
bindsym $mod+i swaymsg input "*" us
|
||||||
|
bindsym $mod+Shift+i swaymsg input "*" de
|
||||||
|
|
||||||
|
# change focus
|
||||||
|
bindsym $mod+$left focus left
|
||||||
|
bindsym $mod+$down focus down
|
||||||
|
bindsym $mod+$up focus up
|
||||||
|
bindsym $mod+$right focus right
|
||||||
|
|
||||||
|
# alternatively, you can use the cursor keys:
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# move focused window
|
||||||
|
bindsym $mod+Shift+$left move left
|
||||||
|
bindsym $mod+Shift+$down move down
|
||||||
|
bindsym $mod+Shift+$up move up
|
||||||
|
bindsym $mod+Shift+$right move right
|
||||||
|
|
||||||
|
# alternatively, you can use the cursor keys:
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
# split in horizontal orientation
|
||||||
|
bindsym $mod+c split h
|
||||||
|
|
||||||
|
# split in vertical orientation
|
||||||
|
bindsym $mod+v split v
|
||||||
|
|
||||||
|
# enter fullscreen mode for the focused container
|
||||||
|
bindsym $mod+f fullscreen toggle
|
||||||
|
|
||||||
|
# change container layout
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+p layout toggle split
|
||||||
|
|
||||||
|
# toggle tiling / floating
|
||||||
|
# bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# change focus between tiling / floating windows
|
||||||
|
# bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# focus the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
# focus the child container
|
||||||
|
bindsym $mod+Shift+a focus child
|
||||||
|
|
||||||
|
# move the currently focused window to the scratchpad
|
||||||
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
|
|
||||||
|
# show the next scratchpad window or hide the focused scratchpad window
|
||||||
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
|
# move focused floating window to the current position of the cursor
|
||||||
|
bindsym $mod+Shift+m move position mouse
|
||||||
|
|
||||||
|
# set a window to stick to the glass
|
||||||
|
bindsym $mod+Shift+s sticky toggle
|
||||||
|
|
||||||
|
# sticky preview for media
|
||||||
|
bindsym $mod+Shift+p fullscreen disable; floating enable; resize set 350 px 197 px; sticky enable; move window to position 1006 px 537 px
|
||||||
|
|
||||||
|
# shortcut to change window border
|
||||||
|
bindsym $mod+t border normal 0
|
||||||
|
bindsym $mod+y border pixel 1
|
||||||
|
bindsym $mod+u border none
|
||||||
|
|
||||||
|
# switch to workspace
|
||||||
|
|
||||||
|
bindcode $mod+10 workspace $ws1
|
||||||
|
bindcode $mod+11 workspace $ws2
|
||||||
|
bindcode $mod+12 workspace $ws3
|
||||||
|
bindcode $mod+13 workspace $ws4
|
||||||
|
bindcode $mod+14 workspace $ws5
|
||||||
|
bindcode $mod+15 workspace $ws6
|
||||||
|
bindcode $mod+16 workspace $ws7
|
||||||
|
bindcode $mod+17 workspace $ws8
|
||||||
|
bindcode $mod+18 workspace $ws9
|
||||||
|
bindcode $mod+19 workspace $ws10
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindcode $mod+Shift+10 move container to workspace $ws1
|
||||||
|
bindcode $mod+Shift+11 move container to workspace $ws2
|
||||||
|
bindcode $mod+Shift+12 move container to workspace $ws3
|
||||||
|
bindcode $mod+Shift+13 move container to workspace $ws4
|
||||||
|
bindcode $mod+Shift+14 move container to workspace $ws5
|
||||||
|
bindcode $mod+Shift+15 move container to workspace $ws6
|
||||||
|
bindcode $mod+Shift+16 move container to workspace $ws7
|
||||||
|
bindcode $mod+Shift+17 move container to workspace $ws8
|
||||||
|
bindcode $mod+Shift+18 move container to workspace $ws9
|
||||||
|
bindcode $mod+Shift+19 move container to workspace $ws10
|
||||||
|
|
||||||
|
# shortcut applications
|
||||||
|
bindsym $mod+F1 exec gkamus
|
||||||
|
bindsym $mod+F2 workspace $ws2; exec subl
|
||||||
|
bindsym $mod+F3 workspace $ws3; exec chromium-browser
|
||||||
|
bindsym $mod+F4 workspace $ws4; exec pcmanfm
|
||||||
|
bindsym $mod+F5 workspace $ws5; exec evince
|
||||||
|
bindsym $mod+F6 workspace $ws6; exec audacious
|
||||||
|
bindsym $mod+F7 workspace $ws7; exec gcolor2
|
||||||
|
bindsym $mod+F8 workspace $ws8; exec telegram
|
||||||
|
bindsym $mod+F9 workspace $ws9; exec go-for-it
|
||||||
|
bindsym Print exec --no-startup-id gnome-screenshot
|
||||||
|
bindcode $mod+9 exec swaylock --image ~/.wallpaper.jpg
|
||||||
|
bindsym Ctrl+Shift+Space exec 1password --quick-access
|
||||||
|
bindsym $mod+Space exec rofi-rbw --menu-keybindings ctrl+p:copy:password
|
||||||
|
|
||||||
|
# volume
|
||||||
|
bindsym XF86AudioLowerVolume exec amixer -q sset Master 5%- unmute
|
||||||
|
bindsym XF86AudioRaiseVolume exec amixer -q sset Master 5%+ unmute
|
||||||
|
bindsym XF86AudioMute exec amixer -q sset Master toggle
|
||||||
|
|
||||||
|
# touchpad
|
||||||
|
# bindsym XF86NotificationCenter exec swaymsg input type:touchpad events toggle enabled disabled
|
||||||
|
|
||||||
|
# set brightness logarithmically by factor 1.4
|
||||||
|
# .72 is just slightly bigger than 1 / 1.4
|
||||||
|
bindsym --locked XF86MonBrightnessUp exec light -S "$(light -G | awk '{ print int(($1 + .72) * 1.4) }')"
|
||||||
|
bindsym --locked XF86MonBrightnessDown exec light -S "$(light -G | awk '{ print int($1 / 1.4) }')"
|
||||||
|
|
||||||
|
# reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
|
# restart i3 inplace
|
||||||
|
bindsym $mod+Shift+r restart
|
||||||
|
|
||||||
|
# manage i3 session
|
||||||
|
bindsym $mod+Shift+e exec swaynag --background f1fa8c --border ffb86c --border-bottom-size 0 --button-background ffb86c --button-text 282a36 -t warning -f "pango:Hack 9" -m "Do you really want to exit?" -B " Exit " "swaymsg exit" -B " Lock " "pkill swaynag && swaylock --image ~/.wallpaper.jpg" -B " Reboot " "pkill swaynag && reboot" -B " Shutdown " "pkill swaynag && shutdown -h now" -B " Suspend " "pkill swaynag && systemctl suspend"
|
||||||
|
|
||||||
|
# resize window
|
||||||
|
bindsym $mod+r mode " "
|
||||||
|
mode " " {
|
||||||
|
# pressing left and up will shrink the window's width and height
|
||||||
|
# pressing right and down will grow the window's width and height
|
||||||
|
bindsym $left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym $down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym $up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym $right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
# same bindings, but for the arrow keys
|
||||||
|
bindsym Left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym Down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym Up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym Right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
# back to normal: Enter or win+r
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym $mod+r mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
# set specific windows to floating mode
|
||||||
|
for_window [window_role="app"] floating enable
|
||||||
|
#for_window [window_role="pop-up"] floating enable
|
||||||
|
for_window [window_role="task_dialog"] floating enable
|
||||||
|
for_window [title="Preferences$"] floating enable
|
||||||
|
for_window [class="Gkamus"] floating enable
|
||||||
|
for_window [class="Go-for-it"] floating enable
|
||||||
|
for_window [class="Lightdm-gtk-greeter-settings"] floating enable
|
||||||
|
for_window [class="Lxappearance"] floating enable
|
||||||
|
for_window [class="Menu"] floating enable
|
||||||
|
for_window [class="Nm-connection-editor"] floating enable
|
||||||
|
for_window [class="Software-properties-gtk"] floating enable
|
||||||
|
for_window [app_id="launcher"] floating enable
|
||||||
|
|
||||||
|
# set specific windows to tabbed mode
|
||||||
|
#for_window [class="Rambox"]tabbed
|
||||||
|
#for_window [class="Signal"]tabbed
|
||||||
|
|
||||||
|
# assign program to workspace
|
||||||
|
assign [title="terminal-sway"] → $ws1
|
||||||
|
# assign [app_id="Alacritty" title="^(?!alacritty-sway)$"] → $ws2
|
||||||
|
assign [app_id="foot" title="^(?!terminal-sway)$"] → $ws2
|
||||||
|
assign [app_id="chromium"] → $ws3
|
||||||
|
assign [app_id="firefox"] → $ws3
|
||||||
|
assign [app_id="librewolf"] → $ws3
|
||||||
|
assign [app_id="pcmanfm"] → $ws4
|
||||||
|
assign [app_id="libreoffice-calc"] → $ws5
|
||||||
|
assign [app_id="libreoffice-writer"] → $ws5
|
||||||
|
assign [class="vlc"] → $ws6
|
||||||
|
assign [class="Gimp"] → $ws7
|
||||||
|
assign [class="Signal"] → $ws8
|
||||||
|
assign [app_id="social"] → $ws8
|
||||||
|
assign [app_id="thunderbird"] → $ws8
|
||||||
|
assign [class="Lightdm-gtk-greeter-settings"] → $ws10
|
||||||
|
assign [class="Software-properties-gtk"] → $ws10
|
||||||
|
|
||||||
|
# class border backgr. text indicator child_border
|
||||||
|
client.focused #2b83a6 #2b83a6 #ffffff #dddddd #2b83a6
|
||||||
|
client.focused_inactive #212121 #212121 #86888c #292d2e #5a5a5a
|
||||||
|
client.unfocused #212121 #212121 #86888c #292d2e #5a5a5a
|
||||||
|
client.urgent #d64e4e #d64e4e #ffffff #d64e4e #d64e4e
|
||||||
|
client.placeholder #212121 #0c0c0c #ffffff #212121 #262626
|
||||||
|
client.background #212121
|
||||||
|
|
||||||
|
bar {
|
||||||
|
swaybar_command waybar
|
||||||
|
}
|
||||||
|
|
||||||
|
# gaps
|
||||||
|
smart_gaps on
|
||||||
|
gaps inner 12
|
||||||
|
gaps outer 0
|
||||||
|
|
||||||
|
# startup applications
|
||||||
|
exec /run/wrappers/bin/gnome-keyring-daemon --start --daemonize
|
||||||
|
exec dbus-sway-environment
|
||||||
|
exec configure-gtk
|
||||||
|
exec nm-applet --indicator
|
||||||
|
exec alacritty -t alacritty-sway
|
||||||
|
exec signal-desktop
|
||||||
|
exec firefox --name=social -p social
|
||||||
|
exec thunderbird
|
||||||
|
exec firefox
|
||||||
|
exec nextcloud
|
||||||
|
exec cryptomator
|
||||||
|
exec swayidle \
|
||||||
|
before-sleep 'loginctl lock-session $XDG_SESSION_ID' \
|
||||||
|
lock 'swaylock --image ~/.wallpaper.jpg' \
|
||||||
|
timeout 180 'swaylock --screenshots --effect-blur 7x5' \
|
||||||
|
timeout 1800 'systemctl suspend'
|
||||||
|
exec dunst
|
||||||
|
#exec --no-startup-id swaybg -c "#000000" -m fill -i ~/.config/wallpaper/wot.jpg
|
||||||
|
# exec --no-startup-id gnome-keyring-daemon --start --components=pkcs11,secrets,ssh
|
||||||
|
exec 'sleep 2; swaymsg workspace $ws8; swaymsg layout tabbed'
|
||||||
|
exec mako --default-timeout=5000
|
||||||
|
|
||||||
|
# wallpaper
|
||||||
|
output eDP-1 scale 1.5
|
||||||
|
output eDP-1 bg ~/.wallpaper.jpg fill
|
||||||
|
output DP-4 bg ~/.wallpaper.jpg fill
|
||||||
|
output DP-5 bg ~/.wallpaper.jpg fill
|
||||||
|
|
||||||
|
input * xkb_layout "de"
|
||||||
|
input * xkb_variant "colemak,,typewriter"
|
||||||
|
input * xkb_options "grp:win_space_toggle"
|
||||||
|
input "MANUFACTURER1 Keyboard" xkb_model "pc101"
|
||||||
|
|
||||||
|
# notebook
|
||||||
|
set $laptop eDP-1
|
||||||
|
# bindswitch --reload --locked lid:on output $laptop disable
|
||||||
|
# bindswitch --reload lid:off output $laptop enable
|
||||||
|
|
||||||
|
# A lock command used in several places
|
||||||
|
set $lock_script swaylock
|
||||||
|
|
||||||
|
# A sleep command used in several places.
|
||||||
|
# We leave a bit of time for locking to happen before putting the system to sleep
|
||||||
|
set $sleep $lock_script && sleep 3 && systemctl suspend
|
||||||
|
|
||||||
|
# Triggers a short notification
|
||||||
|
set $notify dunstify --timeout 1500
|
||||||
|
|
||||||
|
# Set your laptop screen name
|
||||||
|
set $laptop_screen 'eDP-1'
|
||||||
|
|
||||||
|
# Clamshell mode or lock & sleep
|
||||||
|
# This is a if/else statement: [ outputs_count == 1 ] && true || false
|
||||||
|
# bindswitch --locked lid:on exec '[ $(swaymsg -t get_outputs | grep name | wc -l) == 1 ] && ($sleep) || swaymsg output $laptop_screen disable'
|
||||||
|
bindswitch --locked lid:on exec 'swaymsg output $laptop_screen disable'
|
||||||
|
bindswitch --locked lid:off output $laptop_screen enable
|
||||||
|
|
||||||
|
# disable xwayland
|
||||||
|
#xwayland disable
|
||||||
|
|
||||||
|
# Touchpad
|
||||||
|
input type:touchpad {
|
||||||
|
tap enabled
|
||||||
|
natural_scroll enabled
|
||||||
|
}
|
||||||
|
|
||||||
143
hosts/nb-01.cloonar.com/modules/sway/sway.nix
Normal file
143
hosts/nb-01.cloonar.com/modules/sway/sway.nix
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.cloonar.sway;
|
||||||
|
|
||||||
|
dbus-sway-environment = pkgs.writeTextFile {
|
||||||
|
name = "dbus-sway-environment";
|
||||||
|
destination = "/bin/dbus-sway-environment";
|
||||||
|
executable = true;
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||||
|
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||||
|
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
sway-conf = builtins.readFile ./sway.conf + cfg.additionalConfig;
|
||||||
|
unstable = import <nixos-unstable> { config = { allowUnfree = true; }; };
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
./social.nix
|
||||||
|
./signal-work.nix
|
||||||
|
./parsec.nix
|
||||||
|
./thunderbird.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.cloonar.sway = {
|
||||||
|
additionalConfig = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Additional sway config
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
hardware.sane.enable = true;
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
|
||||||
|
virtualisation.virtualbox.host.enable = true;
|
||||||
|
users.extraGroups.vboxusers.members = [ "dominik" ];
|
||||||
|
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
alsaUtils
|
||||||
|
apache-directory-studio
|
||||||
|
bitwarden
|
||||||
|
bitwarden-cli
|
||||||
|
rofi-rbw-wayland
|
||||||
|
cryptomator
|
||||||
|
|
||||||
|
brave
|
||||||
|
chromium
|
||||||
|
firefox
|
||||||
|
vivaldi
|
||||||
|
|
||||||
|
unstable.cura
|
||||||
|
freecad
|
||||||
|
openscad
|
||||||
|
|
||||||
|
dbus-sway-environment
|
||||||
|
ddev
|
||||||
|
dracula-theme
|
||||||
|
foot
|
||||||
|
gcc
|
||||||
|
git
|
||||||
|
glib
|
||||||
|
gimp
|
||||||
|
gnome.seahorse
|
||||||
|
gnome3.adwaita-icon-theme
|
||||||
|
go
|
||||||
|
grim
|
||||||
|
hunspell
|
||||||
|
hunspellDicts.de_DE
|
||||||
|
hunspellDicts.en_US
|
||||||
|
jmeter
|
||||||
|
libreoffice
|
||||||
|
mako
|
||||||
|
mqttui
|
||||||
|
networkmanagerapplet
|
||||||
|
nextcloud-client
|
||||||
|
onlyoffice-bin
|
||||||
|
pavucontrol
|
||||||
|
pcmanfm
|
||||||
|
pinentry
|
||||||
|
rbw
|
||||||
|
rofi-rbw
|
||||||
|
slurp
|
||||||
|
sway
|
||||||
|
sway-launcher-desktop
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
thunderbird
|
||||||
|
unzip
|
||||||
|
vlc
|
||||||
|
waybar
|
||||||
|
wayland
|
||||||
|
wl-clipboard
|
||||||
|
wofi
|
||||||
|
wtype
|
||||||
|
yubikey-manager-qt
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.light.enable = true;
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
nerdfonts
|
||||||
|
];
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.sway = {
|
||||||
|
enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--unsupported-gpu"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
"sway/config".text = sway-conf;
|
||||||
|
"wofi/style.css".text = builtins.readFile ./wofi.css;
|
||||||
|
"xdg/waybar/config".text = builtins.readFile ./waybar.conf;
|
||||||
|
"xdg/waybar/style.css".text = builtins.readFile ./waybar.css;
|
||||||
|
"xdg/foot/foot.ini".text = builtins.readFile ./foot.ini;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
40
hosts/nb-01.cloonar.com/modules/sway/thunderbird.nix
Normal file
40
hosts/nb-01.cloonar.com/modules/sway/thunderbird.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
thunderbirdWorkDesktopItem = pkgs.makeDesktopItem {
|
||||||
|
name = "thunderbird-work";
|
||||||
|
desktopName = "Thunderbird Work";
|
||||||
|
icon = "thunderbird";
|
||||||
|
exec = "thunderbird -p work";
|
||||||
|
};
|
||||||
|
thunderbirdCloonarDesktopItem = pkgs.makeDesktopItem {
|
||||||
|
name = "thunderbird-cloonar";
|
||||||
|
desktopName = "Thunderbird Cloonar";
|
||||||
|
icon = "thunderbird";
|
||||||
|
exec = "thunderbird -p cloonar";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
# nixpkgs.overlays = [
|
||||||
|
# (self: super:
|
||||||
|
# {
|
||||||
|
# thunderbird-bin-unwrapped = super.thunderbird-bin-unwrapped.overrideAttrs ( old: rec {
|
||||||
|
# version = "112.0b7";
|
||||||
|
# name = "thunderbird-bin";
|
||||||
|
# src = super.fetchurl {
|
||||||
|
# url = "https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/${version}/linux-x86_64/en-US/thunderbird-${version}.tar.bz2";
|
||||||
|
# sha256 = "30d23df34834096a79261439d5ea6d78d44921f0218893f100596ee6296cd806";
|
||||||
|
# };
|
||||||
|
# });
|
||||||
|
# }
|
||||||
|
# )
|
||||||
|
# ];
|
||||||
|
environment.systemPackages = [
|
||||||
|
# (import ../../pkgs/thunderbird.nix)
|
||||||
|
pkgs.thunderbird
|
||||||
|
# pkgs.thunderbird-bin-unwrapped
|
||||||
|
thunderbirdWorkDesktopItem
|
||||||
|
thunderbirdCloonarDesktopItem
|
||||||
|
];
|
||||||
|
}
|
||||||
132
hosts/nb-01.cloonar.com/modules/sway/waybar.conf
Normal file
132
hosts/nb-01.cloonar.com/modules/sway/waybar.conf
Normal file
|
|
@ -0,0 +1,132 @@
|
||||||
|
// -*- mode: json -*-
|
||||||
|
|
||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"position": "top",
|
||||||
|
|
||||||
|
"modules-left": [
|
||||||
|
"sway/workspaces",
|
||||||
|
"custom/right-arrow-dark"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"clock#1",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"clock#2",
|
||||||
|
"custom/right-arrow-dark",
|
||||||
|
"custom/right-arrow-light",
|
||||||
|
"clock#3",
|
||||||
|
"custom/right-arrow-dark"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"network",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"pulseaudio",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"memory",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"cpu",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"battery",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"disk",
|
||||||
|
"custom/left-arrow-light",
|
||||||
|
"custom/left-arrow-dark",
|
||||||
|
"tray"
|
||||||
|
],
|
||||||
|
|
||||||
|
"custom/left-arrow-dark": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"custom/left-arrow-light": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"custom/right-arrow-dark": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"custom/right-arrow-light": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
|
||||||
|
"sway/workspaces": {
|
||||||
|
"disable-scroll": true,
|
||||||
|
"format": "{name}"
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock#1": {
|
||||||
|
"format": "{:%a}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"clock#2": {
|
||||||
|
"format": "{:%H:%M}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"clock#3": {
|
||||||
|
"format": "{:%d.%m}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon}{volume}%",
|
||||||
|
"format-muted": "ﱝ",
|
||||||
|
"format-icons": {
|
||||||
|
"phone": ["奄", "奔", "墳"],
|
||||||
|
"default": ["奄", "奔", "墳"]
|
||||||
|
},
|
||||||
|
"scroll-step": 5,
|
||||||
|
"on-click": "pavucontrol",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||||
|
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||||
|
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format-disconnected": "Disconnected ",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": "{}%"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": "{usage:2}%"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
"good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{icon} {capacity}%",
|
||||||
|
"format-icons": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"disk": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": "{percentage_used:2}%",
|
||||||
|
"path": "/home/"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
79
hosts/nb-01.cloonar.com/modules/sway/waybar.css
Normal file
79
hosts/nb-01.cloonar.com/modules/sway/waybar.css
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
* {
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: #282a36;
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-right-arrow-dark,
|
||||||
|
#custom-left-arrow-dark {
|
||||||
|
color: #252525;
|
||||||
|
}
|
||||||
|
#custom-right-arrow-light,
|
||||||
|
#custom-left-arrow-light {
|
||||||
|
color: #282a36;
|
||||||
|
background: #252525;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces,
|
||||||
|
#clock.1,
|
||||||
|
#clock.2,
|
||||||
|
#clock.3,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#memory,
|
||||||
|
#cpu,
|
||||||
|
#battery,
|
||||||
|
#disk,
|
||||||
|
#tray {
|
||||||
|
background: #252525;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 2px;
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
#workspaces button.focused {
|
||||||
|
color: #50fa7b;
|
||||||
|
}
|
||||||
|
#workspaces button:hover {
|
||||||
|
box-shadow: inherit;
|
||||||
|
text-shadow: inherit;
|
||||||
|
}
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: #252525;
|
||||||
|
border: #252525;
|
||||||
|
padding: 0 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: #8be9fd;
|
||||||
|
}
|
||||||
|
#pulseaudio {
|
||||||
|
color: #6272a4;
|
||||||
|
}
|
||||||
|
#memory {
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
#cpu {
|
||||||
|
color: #bd93f9;
|
||||||
|
}
|
||||||
|
#battery {
|
||||||
|
color: #f1fa8c;
|
||||||
|
}
|
||||||
|
#disk {
|
||||||
|
color: #ffb86c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#memory,
|
||||||
|
#cpu,
|
||||||
|
#battery,
|
||||||
|
#disk {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
40
hosts/nb-01.cloonar.com/modules/sway/wofi.css
Normal file
40
hosts/nb-01.cloonar.com/modules/sway/wofi.css
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
window {
|
||||||
|
margin: 0px;
|
||||||
|
border: 1px solid #bd93f9;
|
||||||
|
background-color: #282a36;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
color: #f8f8f2;
|
||||||
|
background-color: #44475a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#inner-box {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
background-color: #282a36;
|
||||||
|
}
|
||||||
|
|
||||||
|
#outer-box {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
background-color: #282a36;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scroll {
|
||||||
|
margin: 0px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
color: #f8f8f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected {
|
||||||
|
background-color: #44475a;
|
||||||
|
}
|
||||||
|
|
||||||
35
hosts/nb-01.cloonar.com/secrets.yaml
Normal file
35
hosts/nb-01.cloonar.com/secrets.yaml
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
epicenter_vpn_ca: ENC[AES256_GCM,data:DUvpuL92zpQkK0auXGdHDw+f5gzjMARMroBknmgR+eq1LV5aISdA0XOCw7d3VFpMtHY+tPM4pDEWlnGJDoHDJBSFAUdmbLkDq2DvoDR1RBbsidmlXpvu7UnL4OyCgrN9G3I65HQmCh64/453T0Y5MZKUiFZXn9SZJgOU3h0qOnAiIKTQADXmUo6imhLuUdPxjwiLkNp8zHNystbfUuZkF15J+TXV9yndy/E8E4sFs4uysK9E+VM84v0q75zTf48cheE+cBGI9xOP5QMvSND6MloyGYUTPZOiQyz8M9AmJObvQFryysKf5Q1W1GBiTz9FVuSsr1IM7meljdBYwfxQaA5MurdsXVFYfdRgL6NyL5x7WOd367pgtBBwuVyT+cygg5ITIBc6YTuT8thp/q0BsJkq1OdVQrLa4PK12Tg2IOUg2Za/tLJxxiNWqs1gAmTWEIGAeJWmNgCZAjJIISwTGcdbpdWqhjAEgaaLf9ZD0hUXQ5MmSO+KXzP7lIGgqCXoMEc7W7rn3R2VkIrvaVgCBK3psTg6+CxoPQwnYbUKgPLG7ys54eECJyRfc8YPH1957Q67pYkVD166ZP/sDJfplOGH19QyFnaaSLRLoXCAfWuO72NwO/fSljN4+pmB6Ev1cRCe4mXicz7TTqGG740VOam/JW4OJCrnHVs67cs9/MsVSNZOsI+x44TKJjaFph4onaodDh5P7e52IkfRnHnjK6FjEvYPasUr9YDqUR3ucHxhD9UqvINDwhp3L/zyFb2HRuO1KzEQLzmG96xiJpJxBVl8GOTeNrK2owOf6cCuh6o3iPaAFjFok26gI1ujX/mPbBigOxB6S0cLOLoA7oA+E6L22nsoYdIwjU4b6Y/DQvndgsZFnycLsSA4TRYHUH1Q51fGU3S/zAlB66rYchsw3JqODD51axxEdo5uu/2a6K9c8BSDo+stHBPmGvty6IorhM+17IGwSVrnxBFbSICja/Mi9eHmkUuUQWaXe5iWiNGYOIe0Xsbu4PQANhDE0f4U1LboVdI46uVhBV36zLSRJ5hUYARdmaz+aUSfNSE20xwCQiqd4U1cb2W6ZRER5WOfNFa8LCjk1YyhDY1yKCbo5tZrYZtmo4T47EuH/2uyW9vPtDlAhpZWmJJ0LEbZMhl9hIEAgGYmhnxPIVItJWHgq4O+YavYWvu1qgbdBC/FZJ8xx0uSy48oKCbuTUbIBUHQ37/6wp+IC+FAoYc2CDgCKzYvYjGrjMr+l/bhWE6KqI2DE/8yG4sOZIyrKNOYRq/aqDRkaeu96bLSYZECoLpohEKRNLTFQ+J8btjGX+xak0HRNEX9bxx8Zs3ml8mDKfh11uy05zPMVU4jaLrc5VtvmNdCg1EffbtEIRhi88aP5K2flRLxvSsYODd8iisqJ3CEqa8/C/FoHhWqgs7vk9UeRs46CJjGQ2Nx7UeQhAK8ey8FwqqSPQ6hp6jFnAv5ha583GZm3G8CsapajioHOpNcyYRhUW/ekdQ1E7DafOLRRO0hdWws8fsP/96uuWJ1Ir1ec2pepmh8s9zCZl/CKSU6+PUjX03Y9buZDnAYao5nDFsF5hgi2nLCTRbHnCh/S5C4NL/Lss2gi/9HdQUWr3KNONgoGbdRNS4MHtK/t9MtxQT8FOS54fM76XLygYZhQEQuDHUr3vaihOPKXncPNx+M4IGd+tsOoGADfpZk7W4OLd5jl8OiCulKvmRXzGCrmyofifh6XBE/EDa97j4eXt/fZPhUh+kv7i39mLKiccPUqpq9WYA/pqlMc84PAsewRerk3Z7jygFb2oX8LwYX2vDer565q+74n/y+oqz/CQ7jypoGBC8f9a16h2e2ZuvjQZ2sUdBB0xKwmLHC5mXLRkJYZ8Myt0Bzp0iVnC8P,iv:0GfL3sG36nsg/4BPw32kKMB78TmbN+mLq/mqEFp0yas=,tag:x+kxJsS+Fn7VO3MlOmqgwQ==,type:str]
|
||||||
|
epicenter_vpn_cert: ENC[AES256_GCM,data:y94SNCZISKCGbG3dtMZKPntzHvmvAK9fr0+TASNUPp+RG0o7sWRZHrAk+zs4x6tTJpRMCN3VJUzH0bkSHrsKHsYLwVOT5Sb3l7y0CUjjT463NWj1ZipaMU94NRbtDC6Q4sMkFQPaLEefaOhjQu2a2qMx0FkQ9OA3T4f4u5GVN72/PTftHw3SybhptlF5L1e3Q69J3H0uVGRuXmmrws6HcLb2th9sAYPAi82yEimdzPa154DKIRcBY78QVkRz4X7VVyLFY3X34TMvGTmKP7MsW5lApVd/qoML0MkqvrWdEClMWG7i4jMRjSUSRIVr33DE8ds4aBx565tKQ9rVZT7KPZU7IbFqgKP6TQN8w7g5mY3aImPlRMB/xb7V8a+qBScOgBiwCgdAnz+PKGaCwcaBba80q0m/gONkxgVy+QKLLdALjb3iUpKiGvWFLwsKr/hQ1O0h7MBFDTGqWniiXZbyb39HABZNVtKAC/4qouG/G+hP6fpk/+TMtjRNSh6wWtyiYvTeFOtCWfi6YEC7IZFautr3vcu24soA+Q4vFwYr6lIEPnQYlpBCr/TLVzEvxWEjsR8G2RaBSWGm2E0tre8qVSFkJwz+niL8FQgaQTjnsYmJGHFS8sxseGuAakuSH+gzopc75H6y2pEnZrpQMOMyDq0GMkIW8xGk7x5Ewq1DZ8ji13Y8xtnbLqiJkhPc19JDoXdpls/40K4Ymrz6dOO8zxzvW8SHF47gOYvp+a5d3vqwXFZH2qDUvdScV5eATmK8ltfGod9PbZWgFzhp336dkba5aAspXlyzAlRRqrVhvpff+V8cyHTIz9qA8fhXv+v2pN0E/Es1NTJhtQo09OGnZn82lfVyR93hLtr6AgbDggwhvAOlJr/pAt0YZ5FhehhhnH0+ekUJC0YemUMj0QVbpxIWc4rt5n7nqewSHC8feo6Zfc4NHfE8sWemGGm2sUOdf6C2F9k0h+Snwfyu95XIWccMAC/Ii14ciu/nj0L67bbj8XAECjWCIlhhCJcMXlpxfU3lZX7zEy4WH+IqV1399KmtvUssuObBb9uAMwHjZl0l2GVQPo3clDea2ZP5HDO9B3kWRqpvIrjawh4IM73O43jbIDgjNXMijnH0GJu8FH8igS+7JOhRHrOBQiNc0unx6EgAfXHo3v6o8ktzbtRcUwU8k+wldU1cu9ugpVpG9j8O+zvPYkaH+0xfdAdxDKXz+4e8462O5zr3IVRp63CBBNtnTn6fcwnxgD9ouhgyyLBylzrwCmRAODHyukJovkNARWmhcYCAnYhrYf9KqaCoeRLmFq8sLMeiYGDTJ/+PTyheZMHboaoZbUbnRtrvuXQiCHqDKxSan0OACW+oXgCBgZSshj8lb58A+zjpMVy4Wis8s6K9HFpiPSP4tmHxXvOod2+qL/eZBV4LhLoahO0gg3+DUPTeJVO+4I7YZYLVXBhf0OC7z8jMGf8Q4SjO8p6Vufx2KXIEpcITto0IJFsIAv9UVfsKVyvVeuGaGGi8VQWhexdQxjDtoURRts91EFNpJ86o9HPbQCAWXBx9hlnBH2zZntqPd5eVA57s67i1dWpuudD/oBzGn3fBv3Fck9tpArMNSrOtbtl3sBc6Calo/5+HWSY4tz1Hnrlv0/IxD2EcgzH5dFu6klTn3gaMdgd288/kRPDzfdcVGqlvV8rQJjTD1XN48FK/Zp2ydCede+SKLidqrqz1ISXOwsya0ivfc4Vdk3hhnnkTnqZT3qR88Z69X+9QkYCVNaoojTiBoRCekqNDI3Ev8MKp1eX0E3rXT3AG3E7xEFGulhe2C9RdMwQg0QG/Ws7n/CtTeVwpv+JG73TlDnBzoVHN6fqKBVchbGPtcObM90N2itJ/wf3jXefhrrsQudLch+Mwp72YcvCKqOMsrO3egvNxIiLKrrVOI8buo0NJrPoQE3/+rZQFzx2r0AHkrwEUHGUvr2oHDJyXwSY2/7zCYbewN44Zjo7n5ofOhSUsaGJNySHgC6V74gyU0UCUEBnF8fZK/Y6QgdtT9gApHVtJwXRvLig2P11bIlyWZjISRaAVAUAMKdS8ir8l+P3NL8kBZstfpH2eeYFHIWeZ7VrVTs4CaHDzkyMizui0EBfvf5irWeJvIekCWnetfo047QKJvrKr+6239QxH5ni7wlzWxiZNcewaOfCK2SqOvYz6NIRp+/blZuxL2pXhTInB/XxbP2zHH64dC8AVvViU8bI2DR/HhzbbpEylzD4ttvil7hLt6AMpugFrmAgWd6JU5yM9lXoTSprmXZ7awYTLcQlCQu9cUNXF0JdtELA/oQipEEUz+2lRt3B+0abYGVWb,iv:MVId1jgmyhY/iUxnjca5IpYwlzUAsa6Nwchg52AKgRc=,tag:1RASj3dFAYVNphJ4zjXxtA==,type:str]
|
||||||
|
epicenter_vpn_key: ENC[AES256_GCM,data:Kt33OLiauTrkzSwib2px/rZoQO6tlCzsy2exxIrZb91ukUDo716+JaZ2dB6FEjx/z0jaUEiU8u3lZbq4gkhwXe/hwUnr7pIW+V1InJhuGOAENfnusDkSu6P5pVpE5FNBKYF6u77/h5pdWwI/bHo7Hfi7f1xVtPkAeSqDScprUOVIoEYeJ0AXo0L9xCQVPSIAsdrh2jZQPe1S4iCLqQTTYK5CvP4/1wjwA2C4PheXEK5Z74Xkxd3pRI0cogpt711+ujMbh01siQNs9tk5+pk8vbXV6M5duzQlJar6iF47GsaomFkLNsk4QvTVZ7kKIMWEfOzwgwniI8YGtDgjxCvd13H1agaeDjsboFxR3i5aI0ZKC4sP7aTASDQbWwTQxoFdMlHjbkMvVWAT1CxUw/phUfwA8L5xLBxzauvHgE0B/R2rW5FU+qaDZfyUts9RyIJzaF+bESz6YKV27i1ZQNp00YPH9jy05uYDjPldLo2PLzgLQHMsSwZ60KKlHU68gGtVI7qtH9fpy34h0/6IsCRAJF1mRHEHHzC8Ny4Q7dtN3GenMPVT07dwgEYczONjbtrpyKoLDHnAf5JguUydLIKvcxDwNmfXlaAcOzX9seEO0L+Wy2sjG5SCKjPA0wTwIvpWuthTpTaptde0KDBauzJZZvkx3FnABF5Ho2VHCY9MkQxnc61488rQXv15FNM2WaTKcI97b/kc+PXK0XbvKD1OKJ/fyNloaLPAJKB7Q+Nu9sSK91nyM5WOALhkp/5PiKQhSO75X1qsd2S35mWY6upES887He2rdmNjt0YPVzETVXhDk48OHwNNcqKTG0qs354/bF00lQJ7asQaHZ9vnomZTy3F+vWdadmUntu3r0lz/74ZEA1rWe+CIyINkuGcT0q48FMwlzms6XXYe4qnVjG1Yu/PknI6XfIpEAHN3aR/dVkpvwSDKzJD9mUr18IoXf7mcbRmhc0yAz7dmoT+Z5x+/z4G5u5xmMa9lvtHOnaXn0RhbMQP/Gziy9hB7GySGyztnBxOLghO6pnY17Etxcd+RDGkHb+PAZY2tJi3ObTry10dT3Zcx4aHNp69EcOjTQ1+629jFatFB2dhgIt2JdWbpgwppE2QB0g5cFY3e8s3rdriHfXsZNFt1xF7aaBYBUb/Z29EeC3EGUyV1fjhG0ZMDuZAw/7UEOObWS1Mx+z707OWWwGXy+5BYdSC/sYzUF9aMfGXjfttsqr36Cza9aSia6Qin5vMmJtpLYl1WGA3TjcgnglVhgKmg9DvEijm/pa1gy5hMX9SQgV0SuHtWfGIo+uleBr3n38CGJ8BOVJbZ4pHR4JQWrAjxE5MHIzZRF1UmbxWUoqL73IyTGZQovPrLO+z6rl+Djd7bGcQgpsBd8nJaOG5qoSH3Y40+onrlAz4WmKWPaSAclSgSPdHE4OEHIPzzrzLOaJWrI9B04LG9qMfhtpMNse/O4XT76QBfgaeDtKHO4Pv7T9PjIHYC4dPljkvrthEPQeJwo1zywDw2uu+I+WyxWuEGuR9JByJ8s7vaSLcDSP1BRkAq+i+YDDB4/a9iWmF4db/mKjVn6c+NRJjmugoCPeVbzyAfkxBm0nXVjQpOAsYGvGneAN53xHJmZ4kO91wrx+i+lXfRsnU3pgYYfHOePEhCUZoFXSVCFy0ksZKSHQSZb+v4x6CsvtpomUP6u0LIukZgZEgNsrpHXn4oQ0uzrts9LwKECAjGpgRINdJ6XCD8uxcIE+uuS5wyOWg/m1TmC5MThTwe4UfpxD0erMiqgGSSJ+xWuwmnjSS62XmLHnfe+VWEiLOk/7vWQxLy3bdHSfSXCee76isRcFpRKY+x59/Tj02I3F5onVuqAehtLkL4zUgdavmLmKI/81uKRTcMtXdFnYuCR+4xBZYauVtL3t7yhozhZwSZe/02mBahe61dwhZIIbAbAqivbrw210H5cKi9R9i+dR85ISJTrGFlXwT1EX/kD8BWdWPZrg9s5JD2jzrl56dKu+oeNPCZNuD6qlCaFBytJOixj/WkggyMGtOcy2do7MZZfuswbLLdD8ClzUx2D+nrRfae7Mze0s7KhyArmtjRyAfh8xqD+vTR7/yh8mgp2k5XOBw2bdCqH79ctq50drdBnpLuILKuruO/A1isS6YkjD0vxXQZh3yt5D3iqlAAOHdIzaWf8q0zUQsHp0aOgZG0WSlVPg44oHEG40O+laDu62fgcI4JisL6KwdJIPidw==,iv:pB/cNgmHi14ugi6kd+J6poWXX79LMHiiakNa03ibZ0Q=,tag:nLfjOesXDm5/QtwHznJROw==,type:str]
|
||||||
|
wg_private_key: ENC[AES256_GCM,data:A80vGf9aMxowC2xME4FIVTmKpSRLNB2tWiUQeP1v8vCRk6Gt8BKYOuXYt04=,iv:vr7qvfr78syrI5pIytjLouPwZcw4xvBTvEUzzv7ibnQ=,tag:qjALlFkd8JocLJqMKFERaw==,type:str]
|
||||||
|
wg_preshared_key: ENC[AES256_GCM,data:bhXoD95ahDRawoHd5Z35FY0G6Xv0PHwWJf300fHQ5jNsGN1TQKHsIswx8YI=,iv:fBsIWkVZUt8pahuO9daaRBIEEIWsSnFW5Velj9uP2ZY=,tag:RvbCYhnRv0OrjTxjsNFW6g==,type:str]
|
||||||
|
wg-cloonar-key: ENC[AES256_GCM,data:ZMEeIZApOD0ij3nPMZeQRwJ4MwVx0sHu08F+m/u6IMHBGid5YwMgxZ7qbLk=,iv:OfIZ9TqBLjToIQi7zRUBATrynBtu0bzXeGVI/EAUPhQ=,tag:mJICT/ak5U76JE/IxJsCKw==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age16veg3fmvpfm7a89a9fc8dvvsxmsthlm70nfxqspr6t8vnf9wkcwsvdq38d
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmTVMrSENXV213bThlL2xj
|
||||||
|
Rkw3Z2R0bCsxN05OaVE5VHpjN2VDMWNJWno0Ck1WQURoNXRMWGlVK2R5TThRSmNy
|
||||||
|
T3NJUVpDaUx2Rm5peVlZakMvQkdZaUkKLS0tIENLVlBEUWRWTlVIMnV4cG05OUQ1
|
||||||
|
UFZ1MTBkTHNMNEVUVzJuNU56WjI0aXMK79Z5+OMEp/ZR9OkFxnjAnOXDcJaagOkL
|
||||||
|
iSMvU4cD+GMQZCMVMCRAxuPQEaTcCIiZcCxkyVeod4GRA0MdwIGCsA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1v6p8dan2t3w9h94fz4flldl32082j3s9x6zqq7u5j66keth9aphsd6pvch
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYaWtOVWZzdGtCTFZ6T0N1
|
||||||
|
UEdFdWJEeW5BTzVsMU0wd3pwTnl6WFZRMkI0CkRRRWtNK0prVmFad09SNXV1WTV0
|
||||||
|
dlhjR3JubVY3b05WTFZvQXhoTGZwWU0KLS0tIFAyTS9HMnNiYnVsUklhbzdjUkxv
|
||||||
|
bWRUTk9VTTQ5TU5MZnU1bitUa0dzYncK4Sp/tVHlYjFON9W665DJ7a4ARl8Nie7l
|
||||||
|
g1eGwOGIb6+V6zXVb4uBAMTsKBFVerggYuwYepXc/n7UQT4iBjdWaQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2022-11-30T08:33:24Z"
|
||||||
|
mac: ENC[AES256_GCM,data:/vJdDVpv+iM66wANeLLl+CPtg2j1OCyKlGHhsQQT/RphUj4IlIsjKj+j59lmM6bRBfebTTRt1scFgz8CCPoyfSH0KrAyPLPs1SPxZT6Le87PkmO2rfH0MpNCrBDUdtpMgKs+kbxSzbqnh6X3+juXnOL3oUB3K0cdF6hAr4cP5xU=,iv:3IxaC/8y8FwKxO3mPP7f/byjYih3O6zZU6HJK2cAPvw=,tag:g8crhgnYs670wLPcC3HIhw==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.7.3
|
||||||
16
hosts/nb-01.cloonar.com/users/default.nix
Normal file
16
hosts/nb-01.cloonar.com/users/default.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz";
|
||||||
|
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(import "${home-manager}/nixos")
|
||||||
|
./dominik.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
"${builtins.fetchTarball "https://github.com/Mic92/sops-nix/archive/master.tar.gz"}/modules/home-manager/sops.nix"
|
||||||
|
];
|
||||||
|
}
|
||||||
378
hosts/nb-01.cloonar.com/users/dominik.nix
Normal file
378
hosts/nb-01.cloonar.com/users/dominik.nix
Normal file
|
|
@ -0,0 +1,378 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
thunderbirdSettings = {
|
||||||
|
"extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org";
|
||||||
|
"browser.theme.content-theme" = 0;
|
||||||
|
"browser.theme.toolbar-theme" = 0;
|
||||||
|
"calendar.alarms.showmissed" = false;
|
||||||
|
"mail.uidensity" = 2;
|
||||||
|
"mail.inline_attachments" = false;
|
||||||
|
"mail.folder.views.version" = 1;
|
||||||
|
"calendar.list.sortOrder" = "cloonar-personal";
|
||||||
|
"calendar.ui.version" = 3;
|
||||||
|
"calendar.timezone.local" = "Europe/Vienna";
|
||||||
|
"calendar.week.start" = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
thunderbirdCalendarPersonal = {
|
||||||
|
"calendar.registry.cloonar-personal.cache.enabled" = true;
|
||||||
|
"calendar.registry.cloonar-personal.calendar-main-in-composite" = true;
|
||||||
|
"calendar.registry.cloonar-personal.color" = "#232323";
|
||||||
|
"calendar.registry.cloonar-personal.disabled" = false;
|
||||||
|
"calendar.registry.cloonar-personal.forceEmailScheduling" = true;
|
||||||
|
"calendar.registry.cloonar-personal.imip.identity.key" = "id6";
|
||||||
|
"calendar.registry.cloonar-personal.name" = "Personal";
|
||||||
|
"calendar.registry.cloonar-personal.readOnly" = false;
|
||||||
|
"calendar.registry.cloonar-personal.refreshInterval" = 30;
|
||||||
|
"calendar.registry.cloonar-personal.suppressAlarms" = false;
|
||||||
|
"calendar.registry.cloonar-personal.type" = "caldav";
|
||||||
|
"calendar.registry.cloonar-personal.uri" = "https://cloud.cloonar.com/remote.php/dav/calendars/dominik.polakovics@cloonar.com/personal/";
|
||||||
|
"calendar.registry.cloonar-personal.username" = "dominik.polakovics@cloonar.com";
|
||||||
|
};
|
||||||
|
thunderbirdCalendarEpicenterEmployees = {
|
||||||
|
"calendar.registry.epicenter-employees.cache.enabled" = true;
|
||||||
|
"calendar.registry.epicenter-employees.calendar-main-in-composite" = true;
|
||||||
|
"calendar.registry.epicenter-employees.color" = "#e774ca";
|
||||||
|
"calendar.registry.epicenter-employees.disabled" = true;
|
||||||
|
"calendar.registry.epicenter-employees.forceEmailScheduling" = true;
|
||||||
|
"calendar.registry.epicenter-employees.name" = "epicenter.works-Employees (admin)";
|
||||||
|
"calendar.registry.epicenter-employees.readOnly" = false;
|
||||||
|
"calendar.registry.epicenter-employees.refreshInterval" = 30;
|
||||||
|
"calendar.registry.epicenter-employees.suppressAlarms" = true;
|
||||||
|
"calendar.registry.epicenter-employees.type" = "caldav";
|
||||||
|
"calendar.registry.epicenter-employees.uri" = "https://cloud.epicenter.works/remote.php/dav/calendars/razormind/akvorrat-employees_shared_by_admin/";
|
||||||
|
"calendar.registry.epicenter-employees.username" = "razormind";
|
||||||
|
};
|
||||||
|
|
||||||
|
thunderbirdContactsPersonal = {
|
||||||
|
"ldap_2.servers.Contacts.carddav.token" = "http://sabre.io/ns/sync/325";
|
||||||
|
"ldap_2.servers.Contacts.carddav.url" = "https://cloud.cloonar.com/remote.php/dav/addressbooks/users/dominik.polakovics@cloonar.com/contacts/";
|
||||||
|
"ldap_2.servers.Contacts.carddav.username" = "dominik.polakovics@cloonar.com";
|
||||||
|
"ldap_2.servers.Contacts.description" = "Contacts";
|
||||||
|
"ldap_2.servers.Contacts.dirType" = 102;
|
||||||
|
"ldap_2.servers.Contacts.filename" = "abook-1.sqlite";
|
||||||
|
"ldap_2.servers.Contacts.uid" = "68fb463c-1c2d-4f39-be37-bbb6ecb97e63";
|
||||||
|
"ldap_2.servers.history.uid" = "01df0056-319d-47ac-93ff-b24b978c0902";
|
||||||
|
"ldap_2.servers.pab.uid" = "3a7c1bff-18ec-4500-9ae2-098b5fdbaeaa";
|
||||||
|
};
|
||||||
|
|
||||||
|
firefoxSettings = {
|
||||||
|
"browser.startup.homepage" = "https://start.duckduckgo.com";
|
||||||
|
"browser.startup.page" = 1;
|
||||||
|
"browser.startup.homepage_override.mstone" = "ignore";
|
||||||
|
"extensions.autoDisableScopes" = 0;
|
||||||
|
"app.normandy.first_run" = false;
|
||||||
|
"browser.download.panel.shown" = true;
|
||||||
|
"devtools.cache.disabled" = true;
|
||||||
|
"devtools.toolbox.host" = "right";
|
||||||
|
"browser.uiCustomization.state" = "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"urlbar-container\",\"downloads-button\",\"screenshot-button\",\"ublock0_raymondhill_net-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"_d634138d-c276-4fc8-924b-40a0ea21d284_-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"_testpilot-containers-browser-action\",\"unified-extensions-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"firefox-view-button\",\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"import-button\",\"personal-bookmarks\"]},\"seen\":[\"save-to-pocket-button\",\"_d634138d-c276-4fc8-924b-40a0ea21d284_-browser-action\",\"_testpilot-containers-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"developer-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"PersonalToolbar\"],\"currentVersion\":20,\"newElementCount\":3}";
|
||||||
|
};
|
||||||
|
|
||||||
|
firefoxExtensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
bitwarden
|
||||||
|
multi-account-containers
|
||||||
|
onepassword-password-manager
|
||||||
|
privacy-badger
|
||||||
|
ublock-origin
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home-manager.users.dominik = { lib, pkgs, ... }: {
|
||||||
|
/* The home.stateVersion option does not have a default and must be set */
|
||||||
|
home.stateVersion = "24.05";
|
||||||
|
home.enableNixpkgsReleaseCheck = false;
|
||||||
|
/* Here goes the rest of your home-manager config, e.g. home.packages = [ pkgs.foo ]; */
|
||||||
|
programs.git = {
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.gitAndTools.gitFull;
|
||||||
|
userName = "Dominik Polakovics";
|
||||||
|
userEmail = "dominik.polakovics@cloonar.com";
|
||||||
|
# signing = {
|
||||||
|
# key = "dominik.polakovics@cloonar.com";
|
||||||
|
# signByDefault = false;
|
||||||
|
# };
|
||||||
|
iniContent = {
|
||||||
|
# Branch with most recent change comes first
|
||||||
|
branch.sort = "-committerdate";
|
||||||
|
# Remember and auto-resolve merge conflicts
|
||||||
|
# https://git-scm.com/book/en/v2/Git-Tools-Rerere
|
||||||
|
rerere.enabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = {
|
||||||
|
private = {
|
||||||
|
isDefault = true;
|
||||||
|
settings = lib.mkMerge [
|
||||||
|
thunderbirdSettings
|
||||||
|
thunderbirdCalendarPersonal
|
||||||
|
thunderbirdContactsPersonal
|
||||||
|
];
|
||||||
|
};
|
||||||
|
cloonar = {
|
||||||
|
settings = lib.mkMerge [
|
||||||
|
thunderbirdSettings
|
||||||
|
thunderbirdCalendarPersonal
|
||||||
|
thunderbirdContactsPersonal
|
||||||
|
];
|
||||||
|
};
|
||||||
|
work = {
|
||||||
|
settings = lib.mkMerge [
|
||||||
|
thunderbirdSettings
|
||||||
|
thunderbirdCalendarPersonal
|
||||||
|
thunderbirdCalendarEpicenterEmployees
|
||||||
|
thunderbirdContactsPersonal
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
accounts.email.accounts = {
|
||||||
|
"dominik@superbros.tv" = {
|
||||||
|
primary = true;
|
||||||
|
realName = "Dominik Polakovics";
|
||||||
|
address = "dominik@superbros.tv";
|
||||||
|
userName = "dominik@superbros.tv";
|
||||||
|
imap = {
|
||||||
|
host = "imap.cloonar.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "mail.cloonar.com";
|
||||||
|
port = 587;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = [ "private" "cloonar" "work" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"office@cloonar.com" = {
|
||||||
|
realName = "Cloonar";
|
||||||
|
address = "office@cloonar.com";
|
||||||
|
userName = "office@cloonar.com";
|
||||||
|
imap = {
|
||||||
|
host = "imap.cloonar.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "mail.cloonar.com";
|
||||||
|
port = 587;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = [ "cloonar" "work" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"dominik.polakovics@cloonar.com" = {
|
||||||
|
realName = "Dominik Polakovics";
|
||||||
|
address = "dominik.polakovics@cloonar.com";
|
||||||
|
userName = "dominik.polakovics@cloonar.com";
|
||||||
|
imap = {
|
||||||
|
host = "imap.cloonar.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "mail.cloonar.com";
|
||||||
|
port = 587;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = [ "cloonar" "work" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"dominik.polakovics@epicenter.works" = {
|
||||||
|
realName = "Dominik Polakovics";
|
||||||
|
address = "dominik.polakovics@epicenter.works";
|
||||||
|
userName = "dominik.polakovics@epicenter.works";
|
||||||
|
imap = {
|
||||||
|
host = "mail.epicenter.works";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = "mail.epicenter.works";
|
||||||
|
port = 587;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = [ "work" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
profiles = {
|
||||||
|
default = {
|
||||||
|
id = 0;
|
||||||
|
isDefault = true;
|
||||||
|
settings = firefoxSettings;
|
||||||
|
search.default = "DuckDuckGo";
|
||||||
|
search.privateDefault = "DuckDuckGo";
|
||||||
|
extensions = firefoxExtensions;
|
||||||
|
};
|
||||||
|
social = {
|
||||||
|
id = 1;
|
||||||
|
settings = firefoxSettings;
|
||||||
|
search.default = "DuckDuckGo";
|
||||||
|
search.privateDefault = "DuckDuckGo";
|
||||||
|
containersForce = true;
|
||||||
|
containers = {
|
||||||
|
"private" = {
|
||||||
|
color = "green";
|
||||||
|
icon = "fingerprint";
|
||||||
|
id = 1;
|
||||||
|
};
|
||||||
|
"cloonar" = {
|
||||||
|
color = "purple";
|
||||||
|
icon = "briefcase";
|
||||||
|
id = 2;
|
||||||
|
};
|
||||||
|
"epicenter.works" = {
|
||||||
|
color = "blue";
|
||||||
|
icon = "briefcase";
|
||||||
|
id = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extensions = firefoxExtensions;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Setup development projects */
|
||||||
|
home.activation.projects = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
|
PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH"
|
||||||
|
set +eu
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/nixos.git ~/projects/cloonar/cloonar-nixos 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/website.git ~/projects/cloonar/cloonar-website 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/wohnservice-wien-typo3.git ~/projects/cloonar/wohnservice-wien 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/gbv-aktuell.git ~/projects/cloonar/gbv-aktuell 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Paraclub/api.git ~/projects/cloonar/paraclub/paraclub-api 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Paraclub/frontend.git ~/projects/cloonar/paraclub/paraclub-frontend 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Paraclub/website.git ~/projects/cloonar/paraclub/paraclub-website 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Paraclub/module.git ~/projects/cloonar/paraclub/paraclub-module 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/amz-api.git ~/projects/cloonar/amz/amz-api 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/amz-frontend.git ~/projects/cloonar/amz/amz-frontend 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:myhidden.life/web.git ~/projects/myhidden.life/myhidden.life-web 2>/dev/null
|
||||||
|
|
||||||
|
git clone git@gitlab.epicenter.works:epicenter.works/campaigntool.git ~/projects/epicenter.works/campaigntool 2>/dev/null
|
||||||
|
git clone git@gitlab.epicenter.works:epicenter.works/website.git ~/projects/epicenter.works/epicenter.works 2>/dev/null
|
||||||
|
git clone git@gitlab.epicenter.works:epicenter.works/nixos.git ~/projects/epicenter.works/epicenter-nixos 2>/dev/null
|
||||||
|
git clone git@github.com:AKVorrat/spenden.akvorrat.at.git ~/projects/epicenter.works/spenden.akvorrat.at 2>/dev/null
|
||||||
|
git clone git@github.com:AKVorrat/dearmep-website.git ~/projects/epicenter.works/dearmep-website 2>/dev/null
|
||||||
|
set -eu
|
||||||
|
'';
|
||||||
|
|
||||||
|
home.activation.nvim-project = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
|
PATH="${pkgs.coreutils}/bin:$PATH"
|
||||||
|
if [ ! -e "~/.local/share/nvim/project_nvim/project_history" ] ; then
|
||||||
|
cat > ~/.local/share/nvim/project_nvim/project_history << EOL
|
||||||
|
/home/dominik/projects/cloonar/cloonar-nixos
|
||||||
|
/home/dominik/projects/cloonar/cloonar-website
|
||||||
|
/home/dominik/projects/cloonar/wohnservice-wien
|
||||||
|
/home/dominik/projects/cloonar/gbv-aktuell
|
||||||
|
/home/dominik/projects/cloonar/paraclub/paraclub-api
|
||||||
|
/home/dominik/projects/cloonar/paraclub/paraclub-frontend
|
||||||
|
/home/dominik/projects/cloonar/paraclub/paraclub-website
|
||||||
|
/home/dominik/projects/cloonar/paraclub/paraclub-module
|
||||||
|
/home/dominik/projects/cloonar/amz/amz-api
|
||||||
|
/home/dominik/projects/cloonar/amz/amz-frontend
|
||||||
|
/home/dominik/projects/myhidden.life/myhidden.life-web
|
||||||
|
/home/dominik/projects/epicenter.works/campaigntool
|
||||||
|
/home/dominik/projects/epicenter.works/epicenter.works
|
||||||
|
/home/dominik/projects/epicenter.works/epicenter-nixos
|
||||||
|
/home/dominik/projects/epicenter.works/spenden.akvorrat.at
|
||||||
|
/home/dominik/projects/epicenter.works/dearmep-website
|
||||||
|
EOL
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
/* Setup nextcloud folders */
|
||||||
|
home.activation.nextcloud = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
|
set +eu
|
||||||
|
${pkgs.coreutils}/bin/mkdir ~/cloud.cloonar.com
|
||||||
|
${pkgs.coreutils}/bin/mkdir ~/cloud.epicenter.works
|
||||||
|
set -eu
|
||||||
|
'';
|
||||||
|
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
matchBlocks = {
|
||||||
|
"git.cloonar.com" = {
|
||||||
|
user = "git";
|
||||||
|
identityFile = "~/.ssh/id_rsa";
|
||||||
|
identitiesOnly = true;
|
||||||
|
};
|
||||||
|
"gitlab.epicenter.works" = {
|
||||||
|
user = "git";
|
||||||
|
identityFile = "~/.ssh/id_rsa";
|
||||||
|
identitiesOnly = true;
|
||||||
|
};
|
||||||
|
"tools.epicenter.works" = {
|
||||||
|
user = "root";
|
||||||
|
identityFile = "~/.ssh/epicenter.id_rsa";
|
||||||
|
};
|
||||||
|
"*.epicenter.works !tools.epicenter.works" = {
|
||||||
|
user = "dominik";
|
||||||
|
identityFile = "~/.ssh/epicenter.id_rsa";
|
||||||
|
};
|
||||||
|
"*.dearmep.eu" = {
|
||||||
|
user = "root";
|
||||||
|
identityFile = "~/.ssh/epicenter.id_rsa";
|
||||||
|
};
|
||||||
|
"*.akvorrat.at" = {
|
||||||
|
user = "dominik";
|
||||||
|
setEnv = {
|
||||||
|
TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
identityFile = "~/.ssh/epicenter.id_rsa";
|
||||||
|
};
|
||||||
|
"*.cloonar.com" = {
|
||||||
|
user = "root";
|
||||||
|
};
|
||||||
|
"*.cloonar.smart" = {
|
||||||
|
user = "root";
|
||||||
|
};
|
||||||
|
"*.wsw.at" = {
|
||||||
|
user = "wswdpolakovics";
|
||||||
|
setEnv = {
|
||||||
|
TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"*.nycro.net" = {
|
||||||
|
user = "hilgenberg-gmbh.de_kk33i9d2xv"; # prod
|
||||||
|
#user = "hilgenberg.gmbh.de_pci2n5aqzt"; # stage
|
||||||
|
setEnv = {
|
||||||
|
TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"amz-websrv-01.amz.at" = {
|
||||||
|
user = "ebs";
|
||||||
|
};
|
||||||
|
"u149513.your-backup.de" = {
|
||||||
|
user = "u149513";
|
||||||
|
# user = "u149513-sub2"; # fw.cloonar.com
|
||||||
|
port = 23;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
1
hosts/nb-01.cloonar.com/utils
Symbolic link
1
hosts/nb-01.cloonar.com/utils
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../../utils
|
||||||
|
|
@ -90,6 +90,17 @@ in {
|
||||||
127.0.0.1 test.cloonar.com
|
127.0.0.1 test.cloonar.com
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
excludePackages = [ pkgs.xterm ];
|
||||||
|
displayManager.gdm.enable = true;
|
||||||
|
displayManager.gdm.wayland = true;
|
||||||
|
# displayManager.sddm.enable = true;
|
||||||
|
displayManager.sessionPackages = [ pkgs.sway ];
|
||||||
|
displayManager.defaultSession = "sway";
|
||||||
|
libinput.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
time.timeZone = "Europe/Vienna";
|
time.timeZone = "Europe/Vienna";
|
||||||
console.keyMap = "de";
|
console.keyMap = "de";
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
background=/nix/persist/system/wallpaper.png
|
|
||||||
backgroundFillMode=Image.Pad
|
|
||||||
backgroundFill=#252525
|
|
||||||
|
|
@ -187,7 +187,7 @@ bindsym $mod+F7 workspace $ws7; exec gcolor2
|
||||||
bindsym $mod+F8 workspace $ws8; exec telegram
|
bindsym $mod+F8 workspace $ws8; exec telegram
|
||||||
bindsym $mod+F9 workspace $ws9; exec go-for-it
|
bindsym $mod+F9 workspace $ws9; exec go-for-it
|
||||||
bindsym Print exec --no-startup-id gnome-screenshot
|
bindsym Print exec --no-startup-id gnome-screenshot
|
||||||
bindcode $mod+9 exec swaylock -c 252525 -s center -i ~/.wallpaper.png
|
bindcode $mod+9 exec swaylock --image ~/.wallpaper.jpg
|
||||||
bindsym Ctrl+Shift+Space exec 1password --quick-access
|
bindsym Ctrl+Shift+Space exec 1password --quick-access
|
||||||
bindsym $mod+Space exec rofi-rbw --menu-keybindings ctrl+p:copy:password
|
bindsym $mod+Space exec rofi-rbw --menu-keybindings ctrl+p:copy:password
|
||||||
|
|
||||||
|
|
@ -211,7 +211,7 @@ bindsym $mod+Shift+c reload
|
||||||
bindsym $mod+Shift+r restart
|
bindsym $mod+Shift+r restart
|
||||||
|
|
||||||
# manage i3 session
|
# manage i3 session
|
||||||
bindsym $mod+Shift+e exec swaynag --background f1fa8c --border ffb86c --border-bottom-size 0 --button-background ffb86c --button-text 282a36 -t warning -f "pango:Hack 9" -m "Do you really want to exit?" -B " Exit " "swaymsg exit" -B " Lock " "pkill swaynag && swaylock -c 252525 -s center -i ~/.wallpaper.png" -B " Reboot " "pkill swaynag && reboot" -B " Shutdown " "pkill swaynag && shutdown -h now" -B " Suspend " "pkill swaynag && systemctl suspend"
|
bindsym $mod+Shift+e exec swaynag --background f1fa8c --border ffb86c --border-bottom-size 0 --button-background ffb86c --button-text 282a36 -t warning -f "pango:Hack 9" -m "Do you really want to exit?" -B " Exit " "swaymsg exit" -B " Lock " "pkill swaynag && swaylock --image ~/.wallpaper.jpg" -B " Reboot " "pkill swaynag && reboot" -B " Shutdown " "pkill swaynag && shutdown -h now" -B " Suspend " "pkill swaynag && systemctl suspend"
|
||||||
|
|
||||||
# resize window
|
# resize window
|
||||||
bindsym $mod+r mode " "
|
bindsym $mod+r mode " "
|
||||||
|
|
@ -301,8 +301,8 @@ exec nextcloud
|
||||||
exec cryptomator
|
exec cryptomator
|
||||||
exec swayidle \
|
exec swayidle \
|
||||||
before-sleep 'loginctl lock-session $XDG_SESSION_ID' \
|
before-sleep 'loginctl lock-session $XDG_SESSION_ID' \
|
||||||
lock 'swaylock -c 252525 -s center -i ~/.wallpaper.png' \
|
lock 'swaylock --image ~/.wallpaper.jpg' \
|
||||||
timeout 180 'swaylock -c 252525 -s center -i ~/.wallpaper.png' \
|
timeout 180 'swaylock --screenshots --effect-blur 7x5' \
|
||||||
timeout 1800 'systemctl suspend'
|
timeout 1800 'systemctl suspend'
|
||||||
exec dunst
|
exec dunst
|
||||||
#exec --no-startup-id swaybg -c "#000000" -m fill -i ~/.config/wallpaper/wot.jpg
|
#exec --no-startup-id swaybg -c "#000000" -m fill -i ~/.config/wallpaper/wot.jpg
|
||||||
|
|
@ -312,12 +312,9 @@ exec mako --default-timeout=5000
|
||||||
|
|
||||||
# wallpaper
|
# wallpaper
|
||||||
output eDP-1 scale 1.5
|
output eDP-1 scale 1.5
|
||||||
output eDP-1 bg #282a36 solid_color
|
output eDP-1 bg ~/.wallpaper.jpg fill
|
||||||
output eDP-1 bg ~/.wallpaper.png center
|
output DP-4 bg ~/.wallpaper.jpg fill
|
||||||
output DP-4 bg #282a36 solid_color
|
output DP-5 bg ~/.wallpaper.jpg fill
|
||||||
output DP-4 bg ~/.wallpaper.png center
|
|
||||||
output DP-5 bg #282a36 solid_color
|
|
||||||
output DP-5 bg ~/.wallpaper.png center
|
|
||||||
|
|
||||||
input * xkb_layout "de"
|
input * xkb_layout "de"
|
||||||
input * xkb_variant "colemak,,typewriter"
|
input * xkb_variant "colemak,,typewriter"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
cfg = config.cloonar.sway;
|
||||||
|
|
||||||
dbus-sway-environment = pkgs.writeTextFile {
|
dbus-sway-environment = pkgs.writeTextFile {
|
||||||
name = "dbus-sway-environment";
|
name = "dbus-sway-environment";
|
||||||
destination = "/bin/dbus-sway-environment";
|
destination = "/bin/dbus-sway-environment";
|
||||||
|
|
@ -15,9 +17,7 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
sway-conf = builtins.readFile ./sway.conf + ''
|
sway-conf = builtins.readFile ./sway.conf + cfg.additionalConfig;
|
||||||
exec swaybg -m center -c 252525 -i ~/.wallpaper.png
|
|
||||||
'';
|
|
||||||
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
||||||
config = { allowUnfree = true; };
|
config = { allowUnfree = true; };
|
||||||
};
|
};
|
||||||
|
|
@ -29,139 +29,117 @@ in {
|
||||||
./thunderbird.nix
|
./thunderbird.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware.sane.enable = true;
|
options.cloonar.sway = {
|
||||||
hardware.pulseaudio.enable = false;
|
additionalConfig = mkOption {
|
||||||
|
type = types.str;
|
||||||
virtualisation.virtualbox.host.enable = true;
|
default = "";
|
||||||
users.extraGroups.vboxusers.members = [ "dominik" ];
|
description = lib.mdDoc ''
|
||||||
|
Additional sway config
|
||||||
services.gnome.gnome-keyring.enable = true;
|
'';
|
||||||
|
};
|
||||||
services.displayManager.defaultSession = "sway";
|
|
||||||
services.displayManager.sddm = {
|
|
||||||
enable = true;
|
|
||||||
wayland.enable = true;
|
|
||||||
theme = "where_is_my_sddm_theme_qt5";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# services.xserver = {
|
config = {
|
||||||
# enable = true;
|
hardware.sane.enable = true;
|
||||||
# excludePackages = [ pkgs.xterm ];
|
hardware.pulseaudio.enable = false;
|
||||||
# displayManager.gdm.enable = true;
|
|
||||||
# displayManager.gdm.wayland = true;
|
|
||||||
# # displayManager.sddm.enable = true;
|
|
||||||
# displayManager.sessionPackages = [ pkgs.sway ];
|
|
||||||
# displayManager.defaultSession = "sway";
|
|
||||||
# libinput.enable = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
virtualisation.virtualbox.host.enable = true;
|
||||||
alsaUtils
|
users.extraGroups.vboxusers.members = [ "dominik" ];
|
||||||
apache-directory-studio
|
|
||||||
bitwarden
|
|
||||||
bitwarden-cli
|
|
||||||
rofi-rbw-wayland
|
|
||||||
cryptomator
|
|
||||||
|
|
||||||
brave
|
services.gnome.gnome-keyring.enable = true;
|
||||||
chromium
|
|
||||||
firefox
|
|
||||||
vivaldi
|
|
||||||
|
|
||||||
unstable.cura
|
environment.systemPackages = with pkgs; [
|
||||||
freecad
|
alsaUtils
|
||||||
openscad
|
apache-directory-studio
|
||||||
|
bitwarden
|
||||||
|
bitwarden-cli
|
||||||
|
rofi-rbw-wayland
|
||||||
|
cryptomator
|
||||||
|
|
||||||
(unstable.where-is-my-sddm-theme.override {
|
brave
|
||||||
themeConfig.General = {
|
chromium
|
||||||
showUsersByDefault = true;
|
firefox
|
||||||
background = "/nix/persist/system/wallpaper.png";
|
vivaldi
|
||||||
backgroundFill = "#252525";
|
|
||||||
backgroundFillMode="Image.Pad";
|
|
||||||
passwordInputWidth = 0.25;
|
|
||||||
passwordInputBackground = "#60ffffff";
|
|
||||||
passwordFontSize = 28;
|
|
||||||
sessionsFontSize=24;
|
|
||||||
usersFontSize=32;
|
|
||||||
};
|
|
||||||
variants = ["qt5"];
|
|
||||||
})
|
|
||||||
|
|
||||||
dbus-sway-environment
|
unstable.cura
|
||||||
ddev
|
freecad
|
||||||
dracula-theme
|
openscad
|
||||||
foot
|
|
||||||
gcc
|
|
||||||
git
|
|
||||||
glib
|
|
||||||
gimp
|
|
||||||
gnome.seahorse
|
|
||||||
gnome3.adwaita-icon-theme
|
|
||||||
go
|
|
||||||
grim
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.de_DE
|
|
||||||
hunspellDicts.en_US
|
|
||||||
jmeter
|
|
||||||
libreoffice
|
|
||||||
mako
|
|
||||||
mqttui
|
|
||||||
networkmanagerapplet
|
|
||||||
nextcloud-client
|
|
||||||
onlyoffice-bin
|
|
||||||
pavucontrol
|
|
||||||
pcmanfm
|
|
||||||
pinentry
|
|
||||||
rbw
|
|
||||||
rofi-rbw
|
|
||||||
slurp
|
|
||||||
sway
|
|
||||||
swaybg
|
|
||||||
sway-launcher-desktop
|
|
||||||
swayidle
|
|
||||||
swaylock
|
|
||||||
thunderbird
|
|
||||||
unzip
|
|
||||||
vlc
|
|
||||||
waybar
|
|
||||||
wayland
|
|
||||||
wl-clipboard
|
|
||||||
wofi
|
|
||||||
wtype
|
|
||||||
yubikey-manager-qt
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.light.enable = true;
|
dbus-sway-environment
|
||||||
|
ddev
|
||||||
fonts.packages = with pkgs; [
|
dracula-theme
|
||||||
noto-fonts
|
foot
|
||||||
noto-fonts-cjk
|
gcc
|
||||||
noto-fonts-emoji
|
git
|
||||||
nerdfonts
|
glib
|
||||||
];
|
gimp
|
||||||
|
gnome.seahorse
|
||||||
security.rtkit.enable = true;
|
gnome3.adwaita-icon-theme
|
||||||
services.pipewire = {
|
go
|
||||||
enable = true;
|
grim
|
||||||
alsa.enable = true;
|
hunspell
|
||||||
alsa.support32Bit = true;
|
hunspellDicts.de_DE
|
||||||
pulse.enable = true;
|
hunspellDicts.en_US
|
||||||
jack.enable = true;
|
jmeter
|
||||||
};
|
libreoffice
|
||||||
|
mako
|
||||||
programs.sway = {
|
mqttui
|
||||||
enable = true;
|
networkmanagerapplet
|
||||||
wrapperFeatures.gtk = true;
|
nextcloud-client
|
||||||
extraOptions = [
|
onlyoffice-bin
|
||||||
"--unsupported-gpu"
|
pavucontrol
|
||||||
|
pcmanfm
|
||||||
|
pinentry
|
||||||
|
rbw
|
||||||
|
rofi-rbw
|
||||||
|
slurp
|
||||||
|
sway
|
||||||
|
sway-launcher-desktop
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
thunderbird
|
||||||
|
unzip
|
||||||
|
vlc
|
||||||
|
waybar
|
||||||
|
wayland
|
||||||
|
wl-clipboard
|
||||||
|
wofi
|
||||||
|
wtype
|
||||||
|
yubikey-manager-qt
|
||||||
];
|
];
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc = {
|
programs.light.enable = true;
|
||||||
"sway/config".text = sway-conf;
|
|
||||||
"wofi/style.css".text = builtins.readFile ./wofi.css;
|
fonts.packages = with pkgs; [
|
||||||
"xdg/waybar/config".text = builtins.readFile ./waybar.conf;
|
noto-fonts
|
||||||
"xdg/waybar/style.css".text = builtins.readFile ./waybar.css;
|
noto-fonts-cjk
|
||||||
"xdg/foot/foot.ini".text = builtins.readFile ./foot.ini;
|
noto-fonts-emoji
|
||||||
|
nerdfonts
|
||||||
|
];
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.sway = {
|
||||||
|
enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--unsupported-gpu"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = {
|
||||||
|
"sway/config".text = sway-conf;
|
||||||
|
"wofi/style.css".text = builtins.readFile ./wofi.css;
|
||||||
|
"xdg/waybar/config".text = builtins.readFile ./waybar.conf;
|
||||||
|
"xdg/waybar/style.css".text = builtins.readFile ./waybar.css;
|
||||||
|
"xdg/foot/foot.ini".text = builtins.readFile ./foot.ini;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.5 KiB |
|
|
@ -109,9 +109,9 @@ in
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
gtk2.extraConfig = ''
|
gtk2.extraConfig = {
|
||||||
gtk-application-prefer-dark-theme=1;
|
"gtk-application-prefer-dark-theme" = true;
|
||||||
'';
|
};
|
||||||
gtk3.extraConfig = {
|
gtk3.extraConfig = {
|
||||||
"gtk-application-prefer-dark-theme" = true;
|
"gtk-application-prefer-dark-theme" = true;
|
||||||
};
|
};
|
||||||
|
|
@ -316,12 +316,8 @@ in
|
||||||
home.activation.symlinks = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
home.activation.symlinks = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH"
|
PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH"
|
||||||
set +eu
|
set +eu
|
||||||
if [ ! -L ~/Documents ]; then
|
ln -s /home/dominik/.local/share/Cryptomator/mnt/Documents ~/Documents
|
||||||
ln -s /home/dominik/.local/share/Cryptomator/mnt/Documents ~/Documents
|
ln -s /home/dominik/.local/share/Cryptomator/mnt/Downloads ~/Downloads
|
||||||
fi
|
|
||||||
if [ ! -L ~/Downloads ]; then
|
|
||||||
ln -s /home/dominik/.local/share/Cryptomator/mnt/Downloads ~/Downloads
|
|
||||||
fi
|
|
||||||
set -eu
|
set -eu
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
@ -349,8 +345,6 @@ in
|
||||||
set -eu
|
set -eu
|
||||||
'';
|
'';
|
||||||
|
|
||||||
home.file.".wallpaper.jpg".source = ./configs/wallpaper.jpg;
|
|
||||||
home.file.".wallpaper.png".source = ./configs/wallpaper.png;
|
|
||||||
home.file.".local/share/nvim/project_nvim/project_history".source = ./configs/project_history;
|
home.file.".local/share/nvim/project_nvim/project_history".source = ./configs/project_history;
|
||||||
home.file.".config/Cryptomator/settings.json".source = ./configs/cryptomator.json;
|
home.file.".config/Cryptomator/settings.json".source = ./configs/cryptomator.json;
|
||||||
|
|
||||||
|
|
|
||||||
4
todos.md
4
todos.md
|
|
@ -1,5 +1 @@
|
||||||
move modules for hosts into respecting hosts directory so not every host gets rebuilded when one module changes
|
move modules for hosts into respecting hosts directory so not every host gets rebuilded when one module changes
|
||||||
change sddm theme
|
|
||||||
add yubikey
|
|
||||||
change playmouth theme
|
|
||||||
look into secure boot
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue