feat: renamed computers to hosts
This commit is contained in:
parent
f6af310a18
commit
b03c70b486
34 changed files with 5 additions and 6 deletions
18
hosts/default.nix
Normal file
18
hosts/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
flake = {
|
||||
nixosConfigurations = lib.mkHosts {
|
||||
python = {
|
||||
system = "x86_64-linux";
|
||||
user = "artur";
|
||||
extraModules = [
|
||||
inputs.disko.nixosModules.disko
|
||||
];
|
||||
};
|
||||
};
|
||||
nixosModules.default = ./shared;
|
||||
};
|
||||
}
|
41
hosts/python/apps.nix
Normal file
41
hosts/python/apps.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
environment = {
|
||||
systemPackages = builtins.attrValues {
|
||||
inherit
|
||||
(pkgs)
|
||||
nil
|
||||
statix
|
||||
deadnix
|
||||
alejandra
|
||||
;
|
||||
neovim = inputs.painless-neovim.packages.${pkgs.system}.default;
|
||||
};
|
||||
sessionVariables = {EDITOR = "nvim";};
|
||||
};
|
||||
alqueva = {
|
||||
mpd = {
|
||||
enable = true;
|
||||
ncmpcpp = true;
|
||||
};
|
||||
emacs.enable = true;
|
||||
xonsh.enable = true;
|
||||
libvirt.enable = true;
|
||||
direnv.enable = true;
|
||||
git.enable = true;
|
||||
pipewire.enable = true;
|
||||
qutebrowser.enable = true;
|
||||
openssh.enable = true;
|
||||
river.enable = true;
|
||||
};
|
||||
|
||||
xdg.mime = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"text/html" = ["qutebrowser.desktop"];
|
||||
};
|
||||
};
|
||||
}
|
26
hosts/python/configs/fuzzel/fuzzel.ini
Normal file
26
hosts/python/configs/fuzzel/fuzzel.ini
Normal file
|
@ -0,0 +1,26 @@
|
|||
[main]
|
||||
font=monospace:size=15
|
||||
use-bold=yes
|
||||
icons-enabled=no
|
||||
match-mode=fuzzy
|
||||
anchor=center
|
||||
lines=8
|
||||
horizontal-pad=15
|
||||
vertical-pad=15
|
||||
|
||||
[colors]
|
||||
background=16161eff
|
||||
text=c0caf5ff
|
||||
match=2ac3deff
|
||||
selection=343a55ff
|
||||
selection-match=2ac3deff
|
||||
selection-text=c0caf5ff
|
||||
border=27a1b9ff
|
||||
|
||||
[border]
|
||||
width=2
|
||||
radius=0
|
||||
|
||||
[key-bindings]
|
||||
cancel=Control+[
|
||||
execute=Control+m
|
3
hosts/python/configs/kanshi/config
Normal file
3
hosts/python/configs/kanshi/config
Normal file
|
@ -0,0 +1,3 @@
|
|||
profile {
|
||||
output HDMI-A-1 mode 1920x1080@100Hz
|
||||
}
|
50
hosts/python/configs/kitty/current-theme.conf
Normal file
50
hosts/python/configs/kitty/current-theme.conf
Normal file
|
@ -0,0 +1,50 @@
|
|||
# vim:ft=kitty
|
||||
|
||||
## name: Tokyo Night
|
||||
## license: MIT
|
||||
## author: Folke Lemaitre
|
||||
## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_night.conf
|
||||
|
||||
|
||||
background #1a1b26
|
||||
foreground #c0caf5
|
||||
selection_background #283457
|
||||
selection_foreground #c0caf5
|
||||
url_color #73daca
|
||||
cursor #c0caf5
|
||||
cursor_text_color #1a1b26
|
||||
|
||||
# Tabs
|
||||
active_tab_background #7aa2f7
|
||||
active_tab_foreground #16161e
|
||||
inactive_tab_background #292e42
|
||||
inactive_tab_foreground #545c7e
|
||||
#tab_bar_background #15161e
|
||||
|
||||
# Windows
|
||||
active_border_color #7aa2f7
|
||||
inactive_border_color #292e42
|
||||
|
||||
# normal
|
||||
color0 #15161e
|
||||
color1 #f7768e
|
||||
color2 #9ece6a
|
||||
color3 #e0af68
|
||||
color4 #7aa2f7
|
||||
color5 #bb9af7
|
||||
color6 #7dcfff
|
||||
color7 #a9b1d6
|
||||
|
||||
# bright
|
||||
color8 #414868
|
||||
color9 #f7768e
|
||||
color10 #9ece6a
|
||||
color11 #e0af68
|
||||
color12 #7aa2f7
|
||||
color13 #bb9af7
|
||||
color14 #7dcfff
|
||||
color15 #c0caf5
|
||||
|
||||
# extended colors
|
||||
color16 #ff9e64
|
||||
color17 #db4b4b
|
14
hosts/python/configs/kitty/kitty.conf
Normal file
14
hosts/python/configs/kitty/kitty.conf
Normal file
|
@ -0,0 +1,14 @@
|
|||
# BEGIN_KITTY_THEME
|
||||
# Tokyo Night
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
||||
|
||||
# BEGIN_KITTY_FONTS
|
||||
font_family family='Source Code Pro' postscript_name=SourceCodePro-Regular
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
font_size 14.0
|
||||
# END_KITTY_FONTS
|
||||
|
||||
window_padding_width 8
|
4
hosts/python/configs/kitty/kitty.conf.bak
Normal file
4
hosts/python/configs/kitty/kitty.conf.bak
Normal file
|
@ -0,0 +1,4 @@
|
|||
# BEGIN_KITTY_THEME
|
||||
# Tokyo Night
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
2
hosts/python/configs/qutebrowser/config.py
Normal file
2
hosts/python/configs/qutebrowser/config.py
Normal file
|
@ -0,0 +1,2 @@
|
|||
config.load_autoconfig()
|
||||
config.set('colors.webpage.preferred_color_scheme', 'dark')
|
92
hosts/python/configs/river/init
Executable file
92
hosts/python/configs/river/init
Executable file
|
@ -0,0 +1,92 @@
|
|||
#!/bin/sh
|
||||
|
||||
riverctl spawn kanshi
|
||||
riverctl spawn "wbg ~/.local/share/wallpapers/04.png"
|
||||
|
||||
riverctl spawn "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
riverctl spawn "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river"
|
||||
|
||||
riverctl map normal Super+Shift Return spawn kitty
|
||||
riverctl map normal Super P spawn fuzzel
|
||||
riverctl map normal Super Q close
|
||||
riverctl map normal Super+Shift E exit
|
||||
riverctl map normal Super+Shift C spawn "~/.config/river/init"
|
||||
riverctl map normal Super J focus-view next
|
||||
riverctl map normal Super K focus-view previous
|
||||
riverctl map normal Super+Shift J swap next
|
||||
riverctl map normal Super+Shift K swap previous
|
||||
riverctl map normal Super Period focus-output next
|
||||
riverctl map normal Super Comma focus-output previous
|
||||
riverctl map normal Super+Shift Period send-to-output next
|
||||
riverctl map normal Super+Shift Comma send-to-output previous
|
||||
riverctl map normal Super Return zoom
|
||||
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
||||
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
||||
riverctl map normal Super+Alt H move left 100
|
||||
riverctl map normal Super+Alt J move down 100
|
||||
riverctl map normal Super+Alt K move up 100
|
||||
riverctl map normal Super+Alt L move right 100
|
||||
riverctl map normal Super+Alt+Control H snap left
|
||||
riverctl map normal Super+Alt+Control J snap down
|
||||
riverctl map normal Super+Alt+Control K snap up
|
||||
riverctl map normal Super+Alt+Control L snap right
|
||||
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
||||
riverctl map normal Super+Alt+Shift J resize vertical 100
|
||||
riverctl map normal Super+Alt+Shift K resize vertical -100
|
||||
riverctl map normal Super+Alt+Shift L resize horizontal 100
|
||||
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
||||
|
||||
for i in $(seq 1 9)
|
||||
do
|
||||
tags=$((1 << ($i - 1)))
|
||||
riverctl map normal Super $i set-focused-tags $tags
|
||||
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||
done
|
||||
|
||||
all_tags=$(((1 << 32) - 1))
|
||||
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||
riverctl map normal Super Space toggle-float
|
||||
riverctl map normal Super F toggle-fullscreen
|
||||
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
||||
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
||||
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
||||
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
||||
riverctl declare-mode passthrough
|
||||
riverctl map normal Super F11 enter-mode passthrough
|
||||
riverctl map passthrough Super F11 enter-mode normal
|
||||
|
||||
for mode in normal locked
|
||||
do
|
||||
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
|
||||
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
|
||||
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
|
||||
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||
riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set +5%'
|
||||
riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-'
|
||||
done
|
||||
|
||||
# hacky way of making everything have borders
|
||||
riverctl rule-add ssd
|
||||
|
||||
riverctl background-color 0x00000000
|
||||
riverctl border-color-focused 0x27a1b9ff
|
||||
riverctl border-color-unfocused 0x00000000
|
||||
|
||||
riverctl keyboard-layout "us"
|
||||
riverctl set-repeat 50 300
|
||||
|
||||
riverctl xcursor-theme "BreezeX-RosePine-Linux"
|
||||
|
||||
riverctl default-layout rivertile
|
||||
rivertile -view-padding 10 -outer-padding 10 &
|
46
hosts/python/default.nix
Normal file
46
hosts/python/default.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./disks.nix
|
||||
./theme.nix
|
||||
./apps.nix
|
||||
./users.nix
|
||||
./fonts.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
keyMap = "us";
|
||||
};
|
||||
|
||||
services = {
|
||||
xserver.xkb = {
|
||||
layout = "us";
|
||||
options = "eurosign:e,ctrl:nocaps";
|
||||
};
|
||||
|
||||
udev.packages = [
|
||||
pkgs.android-udev-rules
|
||||
];
|
||||
|
||||
libinput.enable = true;
|
||||
openssh.enable = true;
|
||||
};
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = false;
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
time.timeZone = "Europe/London";
|
||||
i18n.defaultLocale = "nl_NL.UTF-8";
|
||||
system.stateVersion = "24.11";
|
||||
};
|
||||
}
|
67
hosts/python/disks.nix
Normal file
67
hosts/python/disks.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
type = "disk";
|
||||
device = "/dev/disk/by-id/nvme-WDC_PC_SN520_SDAPNUW-256G-1014_20270F804683";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = ["defaults"];
|
||||
};
|
||||
};
|
||||
luks = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "luks";
|
||||
name = "utero";
|
||||
passwordFile = "/tmp/secret.key"; # Interactive
|
||||
settings = {
|
||||
allowDiscards = true;
|
||||
};
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = ["-f"];
|
||||
subvolumes = {
|
||||
"/@root" = {
|
||||
mountpoint = "/";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"/@home" = {
|
||||
mountpoint = "/home";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"/@nix" = {
|
||||
mountpoint = "/nix";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"/@swap" = {
|
||||
mountpoint = "/.swapvol";
|
||||
swap.swapfile.size = "8G";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
21
hosts/python/fonts.nix
Normal file
21
hosts/python/fonts.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{pkgs, ...}: {
|
||||
alqueva.fonts = {
|
||||
names = {
|
||||
sansSerif = ["Source Sans Pro"];
|
||||
monospace = ["Source Code Pro"];
|
||||
serif = ["Source Serif Pro"];
|
||||
emoji = ["OpenMoji Color"];
|
||||
};
|
||||
packages = {
|
||||
sansSerif = [pkgs.source-sans-pro];
|
||||
monospace = [pkgs.source-code-pro];
|
||||
serif = [pkgs.source-serif-pro];
|
||||
emoji = [pkgs.openmoji-color];
|
||||
extra = [
|
||||
pkgs.source-han-sans
|
||||
(pkgs.nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];})
|
||||
];
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
}
|
28
hosts/python/hardware.nix
Normal file
28
hosts/python/hardware.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
# 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,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "sd_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-amd"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
# 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.enp8s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
41
hosts/python/theme.nix
Normal file
41
hosts/python/theme.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
programs.dconf = {
|
||||
profiles.user.databases = [
|
||||
{
|
||||
settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
cursor-size = lib.gvariant.mkUint32 24;
|
||||
cursor-theme = "Simp1e-Tokyo-Night";
|
||||
icon-theme = "Tela-circle-purple-dark";
|
||||
gtk-theme = "Tokyonight-dark";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
enable = true;
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
style = "kvantum";
|
||||
};
|
||||
|
||||
environment.systemPackages = builtins.attrValues {
|
||||
gtk-theme = pkgs.tokyonight-gtk-theme;
|
||||
icon-theme = pkgs.tela-circle-icon-theme.override {
|
||||
colorVariants = ["purple"];
|
||||
circularFolder = true;
|
||||
};
|
||||
cursor-theme = pkgs.simp1e-cursors;
|
||||
};
|
||||
|
||||
systemd.user.tmpfiles.rules = [
|
||||
"L+ %h/.config/gtk-4.0/gtk.css - - - - ${pkgs.tokyonight-gtk-theme}/share/themes/Tokyonight-Dark/gtk-4.0/gtk.css"
|
||||
"L+ %h/.config/gtk-4.0/gtk-dark.css - - - - ${pkgs.tokyonight-gtk-theme}/share/themes/Tokyonight-Dark/gtk-4.0/gtk-dark.css"
|
||||
];
|
||||
}
|
38
hosts/python/users.nix
Normal file
38
hosts/python/users.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
alqueva.users.artur = {
|
||||
tmpfiles = {
|
||||
".config/qutebrowser/config.py" = ./configs/qutebrowser/config.py;
|
||||
".config/kanshi/" = ./configs/kanshi;
|
||||
".config/fuzzel/" = ./configs/fuzzel;
|
||||
".config/river/" = ./configs/river;
|
||||
".config/kitty/" = ./configs/kitty;
|
||||
".local/share/wallpapers" = "${inputs.wallpkgs.packages.${pkgs.system}.tokyo_night}/share/wallpapers/tokyo_night";
|
||||
};
|
||||
packages = builtins.attrValues {
|
||||
inherit
|
||||
(pkgs)
|
||||
wget
|
||||
vesktop
|
||||
mpv
|
||||
imv
|
||||
amberol
|
||||
fractal
|
||||
nicotine-plus
|
||||
nautilus
|
||||
librewolf
|
||||
;
|
||||
};
|
||||
groups = [
|
||||
"wheel"
|
||||
"video"
|
||||
"audio"
|
||||
"networkmanager"
|
||||
"input"
|
||||
"libvirtd"
|
||||
];
|
||||
};
|
||||
}
|
16
hosts/shared/aliases.nix
Normal file
16
hosts/shared/aliases.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{pkgs, ...}: let
|
||||
ezaOptions = "--colour=always --icons=never --group-directories-first --octal-permissions";
|
||||
in {
|
||||
config = {
|
||||
environment = {
|
||||
shellAliases = builtins.mapAttrs (_: v: "${v} ${ezaOptions}") {
|
||||
l = "eza -alh";
|
||||
ls = "eza";
|
||||
ll = "eza -l";
|
||||
};
|
||||
systemPackages = [
|
||||
pkgs.eza
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
20
hosts/shared/default.nix
Normal file
20
hosts/shared/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./fish.nix
|
||||
./sddm.nix
|
||||
./git.nix
|
||||
./qutebrowser.nix
|
||||
./pipewire.nix
|
||||
./mpd.nix
|
||||
./fonts.nix
|
||||
./emacs.nix
|
||||
./ssh.nix
|
||||
./direnv.nix
|
||||
./xonsh.nix
|
||||
./aliases.nix
|
||||
./libvirt.nix
|
||||
./users.nix
|
||||
./support.nix
|
||||
./river.nix
|
||||
];
|
||||
}
|
23
hosts/shared/direnv.nix
Normal file
23
hosts/shared/direnv.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.direnv;
|
||||
in {
|
||||
options.alqueva.direnv = {
|
||||
enable = lib.mkEnableOption "direnv";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
silent = true;
|
||||
nix-direnv.enable = true;
|
||||
direnvrcExtra = ''
|
||||
echo "direnv version: ${config.programs.direnv.package.version}"
|
||||
echo "shell version: ${config.users.defaultUserShell.pname} ${config.users.defaultUserShell.version}"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
19
hosts/shared/emacs.nix
Normal file
19
hosts/shared/emacs.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.emacs;
|
||||
in {
|
||||
options.alqueva.emacs = {
|
||||
enable = lib.mkEnableOption "Emacs";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment = {
|
||||
systemPackages = [inputs.pankomacs.packages.${pkgs.system}.pankomacs];
|
||||
sessionVariables."EDITOR" = lib.mkDefault "emacs";
|
||||
};
|
||||
};
|
||||
}
|
37
hosts/shared/fish.nix
Normal file
37
hosts/shared/fish.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.fish;
|
||||
in {
|
||||
options.alqueva.fish = {
|
||||
enable = lib.mkEnableOption "fish";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs = {
|
||||
fish = {
|
||||
vendor = {
|
||||
functions.enable = true;
|
||||
config.enable = true;
|
||||
completions.enable = true;
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
starship = {
|
||||
enable = true;
|
||||
presets = ["no-nerd-font"];
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = builtins.attrValues {
|
||||
inherit
|
||||
(pkgs.fishPlugins)
|
||||
fzf-fish
|
||||
forgit
|
||||
autopair
|
||||
;
|
||||
};
|
||||
};
|
||||
}
|
80
hosts/shared/fonts.nix
Normal file
80
hosts/shared/fonts.nix
Normal file
|
@ -0,0 +1,80 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.fonts;
|
||||
inherit (lib) types mkOption;
|
||||
mkStringsOption = default: letterform:
|
||||
mkOption {
|
||||
type = types.listOf types.str;
|
||||
inherit default;
|
||||
description = "The default fonts for ${letterform}.";
|
||||
};
|
||||
mkPackagesOption = default: letterform:
|
||||
mkOption {
|
||||
type = types.listOf types.package;
|
||||
inherit default;
|
||||
description = "The packages you want to use for your ${letterform} fonts.";
|
||||
};
|
||||
in {
|
||||
options.alqueva.fonts = {
|
||||
enable = lib.mkEnableOption "" // {description = "Whether you want to use this fonts module.";};
|
||||
packages =
|
||||
{
|
||||
extra = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
description = "Extra font packages you want installed.";
|
||||
};
|
||||
}
|
||||
// builtins.mapAttrs (_n: v: mkPackagesOption v.default v.letterform) {
|
||||
sansSerif = {
|
||||
default = [pkgs.roboto];
|
||||
letterform = "sans-serif";
|
||||
};
|
||||
monospace = {
|
||||
default = [pkgs.roboto-mono];
|
||||
letterform = "monospace";
|
||||
};
|
||||
serif = {
|
||||
default = [pkgs.roboto-serif];
|
||||
letterform = "serif";
|
||||
};
|
||||
emoji = {
|
||||
default = [pkgs.noto-fonts-color-emoji];
|
||||
letterform = "emoji";
|
||||
};
|
||||
};
|
||||
names = builtins.mapAttrs (_n: v: mkStringsOption v.default v.letterform) {
|
||||
sansSerif = {
|
||||
default = ["Roboto"];
|
||||
letterform = "sans-serif";
|
||||
};
|
||||
monospace = {
|
||||
default = ["Roboto Mono"];
|
||||
letterform = "monospace";
|
||||
};
|
||||
serif = {
|
||||
default = ["Roboto Serif"];
|
||||
letterform = "serif";
|
||||
};
|
||||
emoji = {
|
||||
default = ["Noto Color Emoji"];
|
||||
letterform = "emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
fonts = {
|
||||
packages = builtins.concatLists (builtins.attrValues cfg.packages);
|
||||
fontconfig = {
|
||||
defaultFonts = {
|
||||
inherit (cfg.names) sansSerif monospace serif emoji;
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
118
hosts/shared/git.nix
Normal file
118
hosts/shared/git.nix
Normal file
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.git;
|
||||
in {
|
||||
options.alqueva.git = {
|
||||
enable = lib.mkEnableOption "git";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
config = {
|
||||
alias = {
|
||||
a = "add";
|
||||
aa = "add .";
|
||||
aliases = "! f(){ TOP=$(expr $(grep -n \"^\\\\\\\\[alias\" /etc/gitconfig | sed -e 's|:.*||') + 1) && for LINE_NUMBER in $(grep -n \"^\\\\\\\\[\" /etc/gitconfig | sed -e 's|:.*||'); do [ $TOP -lt $LINE_NUMBER ] && BOTTOM=$(expr $LINE_NUMBER - 2 ) && break; done; sed -n \"\${TOP},\${BOTTOM}p\" /etc/gitconfig; }; f | sed -e 's|^ ||'";
|
||||
ap = "add -p";
|
||||
b = "! git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's|refs/heads/||'";
|
||||
bD = "branch -D";
|
||||
ba = "branch -a";
|
||||
bc = "branch -c";
|
||||
bd = "branch -d";
|
||||
br = "branch -r";
|
||||
c = "! git commit --verbose; git push";
|
||||
ca = "! git c --amend";
|
||||
cf = "! git commit --verbose; git push --force";
|
||||
ch = "switch -C";
|
||||
change = "switch -C";
|
||||
cl = "clone";
|
||||
cm = "commit -m";
|
||||
co = "checkout "; # old/bad practice - switches branch and can modify worktree
|
||||
cp = "cherry-pick ; usually abusive; sometimes necessary";
|
||||
create = "! git bc";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
ds = "diff --stat";
|
||||
expire = "! git fsck --unreachable --dangling --no-reflogs; git reflog expire --expire=now --all; git gc --prune=now";
|
||||
f = "fetch";
|
||||
fe = "fetch";
|
||||
filelog = "log --patch";
|
||||
find = "! git ls-files | grep -i";
|
||||
fl = "log --patch";
|
||||
fp = "fetch --prune ; removes branches not in upstream";
|
||||
gr = "grep -Ii";
|
||||
grep = "grep -Ii";
|
||||
greproot = "! git grr";
|
||||
grr = "! f() { ROOT=$(git rev-parse --show-toplevel) && cd $ROOT && git grep --full-name -In $1 | xargs -I{} echo $ROOT/{}; }; f";
|
||||
invert = "revert";
|
||||
l = "log --oneline --graph --decorate --parents";
|
||||
lasttag = "describe --tags --abbrev=0";
|
||||
ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat";
|
||||
lref = "log --oneline --graph --decorate --parents --reflog";
|
||||
ls = "log --pretty=format:\"%C(yellow)%h\\\\ %ad%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --date=short";
|
||||
lt = "describe --tags --abbrev=0";
|
||||
mailmap = "! f(){ printf \\\"$(git config user.name) <$(git config user.email)> <\${1}>\\\" > mailmap; git filter-repo --force --mailmap mailmap; }; f";
|
||||
one = "log -1 ; no input displays HEAD";
|
||||
pd = "push -d";
|
||||
pf = "push --force";
|
||||
pl = "pull";
|
||||
pp = "pull --prune ; removes branches not in upstream";
|
||||
pr = "pull --rebase ; rebases commits onto upstream";
|
||||
ps = "push";
|
||||
pt = "! f(){ git push $1 tag $2; }; f";
|
||||
r = "rebase";
|
||||
ra = "rebase --skip";
|
||||
rc = "rebase --continue";
|
||||
re = "restore";
|
||||
ref = "reflog";
|
||||
ri = "rebase --interactive";
|
||||
rm = "rm -r";
|
||||
rmf = "! git rm --force";
|
||||
rq = "rebase --quit";
|
||||
rs = "rebase --abort";
|
||||
sh = "show";
|
||||
st = "status";
|
||||
sw = "switch ; new checkout - only switching branch w/o restoring worktree";
|
||||
sync = "! git fe upstream; git rebase upstream/main; git push";
|
||||
t = "tag";
|
||||
td = "tag --delete";
|
||||
un = "restore --staged --worktree";
|
||||
uncommit = "switch -C";
|
||||
undo = "restore --staged --worktree";
|
||||
undo-specific = "! f(){ git restore --source=\\\"$1\\\" $2; }; f";
|
||||
undo-stage = "restore";
|
||||
undo-unstaged = "restore";
|
||||
undo-work = "restore --staged --worktree";
|
||||
undo-wt = "restore --staged --worktree";
|
||||
unstage = "restore --staged";
|
||||
wa = "! f(){ git worktree add ../$1 $1; }; f";
|
||||
wc = "! f(){ PROJ=$(printf $1 | sed -e 's|.*/||' | sed -e 's|.git||'); mkdir $PROJ; cd $PROJ; if git ls-remote $1 | grep -q \"main\"; then BRANCH=\"main\"; elif git ls-remote $1 | grep -q \"master\"; then BRANCH=\"master\"; elif git ls-remote $1 | grep -q \"trunk\"; then BRANCH=\"trunk\"; fi; git clone $1 $BRANCH; }; f";
|
||||
wcreate = "! git wc";
|
||||
wmv = "worktree move";
|
||||
wnew = "! f(){ git worktree add ../$1; cd ../$1; git push --set-upstream origin $1; }; f";
|
||||
wr = "worktree remove";
|
||||
wrm = "! git wr";
|
||||
wsc = "! f(){ PROJ=$(printf $1 | sed -e 's|.*/||' | sed -e 's|.git||'); mkdir $PROJ; cd $PROJ; if git ls-remote $1 | grep -q \"main\"; then BRANCH=\"main\"; elif git ls-remote $1 | grep -q \"master\"; then BRANCH=\"master\"; elif git ls-remote $1 | grep -q \"trunk\"; then BRANCH=\"trunk\"; fi; git clone --depth=1 --single-branch $1 $BRANCH; }; f";
|
||||
wshallow = "! git wsc";
|
||||
};
|
||||
branch = {
|
||||
autosetuprebase = "always";
|
||||
};
|
||||
color = {
|
||||
branch = "auto";
|
||||
diff = "auto";
|
||||
status = "auto";
|
||||
};
|
||||
user = {
|
||||
email = "balkenix@outlook.com";
|
||||
name = "Artur Manuel";
|
||||
signingKey = "~/.ssh/id_ed25519.pub";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
22
hosts/shared/libvirt.nix
Normal file
22
hosts/shared/libvirt.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.libvirt;
|
||||
in {
|
||||
options.alqueva.libvirt = {
|
||||
enable = lib.mkEnableOption "libvirt";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
virtualisation.libvirtd = {
|
||||
enable = true;
|
||||
qemu.package = pkgs.qemu_kvm;
|
||||
};
|
||||
|
||||
programs.virt-manager.enable = true;
|
||||
networking.nftables.enable = true;
|
||||
};
|
||||
}
|
24
hosts/shared/mpd.nix
Normal file
24
hosts/shared/mpd.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.mpd;
|
||||
in {
|
||||
options.alqueva.mpd = {
|
||||
enable = lib.mkEnableOption "mpd";
|
||||
ncmpcpp = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable ncmpcpp alongside mpd.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.mpd.enable = true;
|
||||
environment.systemPackages =
|
||||
[pkgs.mpd]
|
||||
++ lib.optional cfg.ncmpcpp pkgs.ncmpcpp;
|
||||
};
|
||||
}
|
26
hosts/shared/pipewire.nix
Normal file
26
hosts/shared/pipewire.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.pipewire;
|
||||
in {
|
||||
options.alqueva.pipewire = {
|
||||
enable = lib.mkEnableOption "PipeWire";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
jack.enable = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.pwvucontrol
|
||||
pkgs.helvum
|
||||
];
|
||||
};
|
||||
}
|
18
hosts/shared/qutebrowser.nix
Normal file
18
hosts/shared/qutebrowser.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.qutebrowser;
|
||||
in {
|
||||
options.alqueva.qutebrowser = {
|
||||
enable = lib.mkEnableOption "qutebrowser";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [
|
||||
pkgs.qutebrowser
|
||||
];
|
||||
};
|
||||
}
|
38
hosts/shared/river.nix
Normal file
38
hosts/shared/river.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.river;
|
||||
in {
|
||||
options.alqueva.river = {
|
||||
enable = lib.mkEnableOption "River";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
alqueva.support.wayland = true;
|
||||
|
||||
programs.river = {
|
||||
enable = true;
|
||||
xwayland.enable = false;
|
||||
extraPackages = [
|
||||
pkgs.wbg
|
||||
pkgs.kanshi
|
||||
];
|
||||
};
|
||||
|
||||
xdg.portal.wlr = {
|
||||
enable = true;
|
||||
settings = {
|
||||
screencast = {
|
||||
output_name = "HDMI-A-1";
|
||||
chooser_type = "simple";
|
||||
chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
};
|
||||
}
|
25
hosts/shared/sddm.nix
Normal file
25
hosts/shared/sddm.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.sddm;
|
||||
in {
|
||||
options.alqueva.sddm = {
|
||||
enable = lib.mkEnableOption "sddm";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.displayManager.sddm = {
|
||||
wayland = {
|
||||
enable = true;
|
||||
compositor = "kwin";
|
||||
};
|
||||
enable = true;
|
||||
theme = "where_is_my_sddm_theme";
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.i-found-my-sddm-theme
|
||||
];
|
||||
};
|
||||
}
|
19
hosts/shared/ssh.nix
Normal file
19
hosts/shared/ssh.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.openssh;
|
||||
in {
|
||||
options.alqueva.openssh = {
|
||||
enable = lib.mkEnableOption "OpenSSH";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs = {
|
||||
ssh.enableAskPassword = true;
|
||||
seahorse.enable = true;
|
||||
};
|
||||
services.openssh.enable = true;
|
||||
};
|
||||
}
|
46
hosts/shared/support.nix
Normal file
46
hosts/shared/support.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.support;
|
||||
inherit (lib) mkEnableOption;
|
||||
in {
|
||||
options.alqueva.support = {
|
||||
wayland = mkEnableOption "wayland support";
|
||||
};
|
||||
config = lib.mkIf cfg.wayland {
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.common = {
|
||||
default = [
|
||||
"gtk"
|
||||
"kde"
|
||||
];
|
||||
};
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-kde
|
||||
];
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages = builtins.attrValues {
|
||||
inherit
|
||||
(pkgs)
|
||||
slurp
|
||||
grim
|
||||
wf-recorder
|
||||
fuzzel
|
||||
kitty
|
||||
wl-clipboard
|
||||
;
|
||||
};
|
||||
sessionVariables = {
|
||||
"NIXOS_OZONE_WL" = "1";
|
||||
"QT_QPA_PLATFORM" = "wayland";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
51
hosts/shared/users.nix
Normal file
51
hosts/shared/users.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) types mkOption;
|
||||
createTmpfilesEntries = entries: builtins.attrValues (builtins.mapAttrs (dest: path: "L+ %h/${dest} - - - - ${path}") entries);
|
||||
cfg = config.alqueva.users;
|
||||
in {
|
||||
options.alqueva.users = mkOption {
|
||||
description = "Users to have on the system.";
|
||||
default = {};
|
||||
type = types.attrsOf (types.submodule {
|
||||
options = {
|
||||
tmpfiles = mkOption {
|
||||
description = "tmpfiles";
|
||||
type = types.attrsOf types.path;
|
||||
default = {};
|
||||
};
|
||||
packages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
description = "Packages installed to the the defined user.";
|
||||
};
|
||||
groups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = "Groups to add the defined user to.";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
config = {
|
||||
users.users =
|
||||
builtins.mapAttrs (user: ucfg: {
|
||||
description = user;
|
||||
isNormalUser = true;
|
||||
extraGroups = ucfg.groups;
|
||||
inherit (ucfg) packages;
|
||||
shell = config.programs.xonsh.package;
|
||||
})
|
||||
cfg;
|
||||
|
||||
systemd.user.tmpfiles.users =
|
||||
builtins.mapAttrs (_: ucfg: {
|
||||
rules = createTmpfilesEntries ucfg.tmpfiles;
|
||||
})
|
||||
cfg;
|
||||
};
|
||||
}
|
50
hosts/shared/xonsh.nix
Normal file
50
hosts/shared/xonsh.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.xonsh;
|
||||
inherit (pkgs) fetchFromGitHub;
|
||||
in {
|
||||
options.alqueva.xonsh = {
|
||||
enable = lib.mkEnableOption "xonsh";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs = {
|
||||
xonsh = {
|
||||
config =
|
||||
"from xonsh.xontribs import get_xontribs\n"
|
||||
+ lib.concatStringsSep "\n" (builtins.attrValues (builtins.mapAttrs (n: v: "aliases['${n}'] = '${v}'\n") config.environment.shellAliases))
|
||||
+ ''
|
||||
for xontrib in get_xontribs():
|
||||
xontrib load @(xontrib)
|
||||
|
||||
execx($(zoxide init xonsh --cmd j), 'exec', __xonsh__.ctx, filename='zoxide')
|
||||
'';
|
||||
package = pkgs.xonsh.override {
|
||||
extraPackages = ps: [
|
||||
(let
|
||||
name = "xontrib-fish-completer";
|
||||
version = "0.0.1";
|
||||
in
|
||||
ps.buildPythonPackage {
|
||||
inherit name version;
|
||||
src = fetchFromGitHub {
|
||||
owner = "xonsh";
|
||||
repo = name;
|
||||
rev = version;
|
||||
hash = "sha256-PhhdZ3iLPDEIG9uDeR5ctJ9zz2+YORHBhbsiLrJckyA=";
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.zoxide
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue