Merge branch 'main' of github.com:bloxx12/nichts

This commit is contained in:
larszauberer 2024-04-18 19:30:14 +02:00
commit 806fe3a093
16 changed files with 646 additions and 68 deletions

View file

@ -42,6 +42,7 @@ in {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit lib inputs self; }; specialArgs = { inherit lib inputs self; };
modules = [ modules = [
../overlay.nix # TODO: move this somewhere else
./dragyx/flocke ./dragyx/flocke
../modules ../modules
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager

View file

@ -0,0 +1,91 @@
{ config, lib, pkgs, ... }:
let
username = config.modules.other.system.username;
in
{
home-manager.users.${username} = {
programs = {
alacritty = {
enable = true;
};
alacritty.settings = {
shell = {
program = "zsh";
};
font.normal.family = "JetBrainsMono Nerd Font";
font.bold.family = "JetBrainsMono Nerd Font";
font.italic.family = "JetBrainsMono Nerd Font";
font.bold_italic.family = "JetBrainsMono Nerd Font";
window.opacity = 0.8;
# TODO: maybe use a different way to manage the theme
colors = {
primary = {
background = "#282a36";
foreground = "#f8f8f2";
bright_foreground = "#ffffff";
};
cursor = {
text = "CellBackground";
cursor = "CellForeground";
};
vi_mode_cursor = {
text = "CellBackground";
cursor = "CellForeground";
};
search = {
matches = {
foreground = "#44475a";
background = "#50fa7b";
};
focused_match = {
foreground = "#44475a";
background = "#ffb86c";
};
};
footer_bar = {
background = "#282a36";
foreground = "#f8f8f2";
};
hints = {
start = {
foreground = "#282a36";
background = "#f1fa8c";
};
end = {
foreground = "#f1fa8c";
background = "#282a36";
};
};
line_indicator = {
foreground = "None";
background = "None";
};
selection = {
text = "CellForeground";
background = "#44475a";
};
normal = {
black = "#21222c";
red = "#ff5555";
green = "#50fa7b";
yellow = "#f1fa8c";
blue = "#bd93f9";
magenta = "#ff79c6";
cyan = "#8be9fd";
white = "#f8f8f2";
};
bright = {
black = "#6272a4";
red = "#ff6e6e";
green = "#69ff94";
yellow = "#ffffa5";
blue = "#d6acff";
magenta = "#ff92df";
cyan = "#a4ffff";
white = "#ffffff";
};
};
};
};
};
}

View file

@ -0,0 +1,6 @@
_: {
imports = [
./alacritty.nix
];
}

View file

@ -1,6 +1,38 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
let
username = config.modules.other.system.username;
in
{ {
imports = [
../../../options/common/pin-registry.nix
../../../options/common/preserve-system.nix
../../../options/desktop/fonts.nix
];
services.locate = {
enable = true;
interval = "hourly";
package = pkgs.plocate;
localuser = null;
};
home-manager.users.${username} = {
programs.firefox.profiles = {
main = {
id = 0;
isDefault = true;
search.default = "DuckDuckGo";
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
bitwarden
darkreader
maya-dark
];
search.force = true;
};
};
};
} }

View file

@ -3,6 +3,9 @@ _: {
./configuration.nix ./configuration.nix
./packages.nix ./packages.nix
./hyprland.nix ./hyprland.nix
./waybar.nix
./theming
./cli
]; ];

View file

@ -1,12 +1,11 @@
{ config, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; with lib;
let let
username = config.modules.other.system.username; username = config.modules.other.system.username;
cfg = config.modules.WM.hyprland; cfg = config.modules.WM.hyprland;
in
{ {
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
rofi-wayland rofi-wayland
@ -27,9 +26,8 @@ let
# hyprland settings # hyprland settings
home-manager.users.${username} = { home-manager.users.${username} = {
programs.waybar.enable = true;
wayland.windowManager.hyprland.settings = {
programs.hyprland.settings = {
input = { input = {
kb_layout = "us"; kb_layout = "us";
natural_scroll = true; natural_scroll = true;

View file

@ -0,0 +1,80 @@
{ config, pkgs, ... }:
# TODO: Make this more generic / reusable
let
username = config.modules.other.system.username;
gitPath = config.modules.other.system.gitPath;
catpuccin-rofi = pkgs.stdenv.mkDerivation {
pname = "catppuccin-rofi";
version = "0";
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "rofi";
rev = "5350da41a11814f950c3354f090b90d4674a95ce";
sha256 = "sha256-DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
};
installPhase = ''
mkdir -p $out/share/
mkdir -p $out/.config/
cp -r $src/basic/.config/rofi/* $out/.config/
cp -r $src/basic/.local/share/rofi/themes/* $out/share/
'';
};
grub-theme = pkgs.stdenv.mkDerivation {
pname = "catppuccin-grub";
version = "0";
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "grub";
rev = "803c5df0e83aba61668777bb96d90ab8f6847106";
sha256 = "sha256-/bSolCta8GCZ4lP0u5NVqYQ9Y3ZooYCNdTwORNvR7M0=";
};
installPhase = ''
# runHook preInstall
mkdir -p $out/
cp -r $src/src/catppuccin-mocha-grub-theme/* $out/
# runHook postInstall
'';
};
catppuccin-sddm-corners-patched = pkgs.catppuccin-sddm-corners.overrideAttrs (prevAttrs: {
postInstall = (prevAttrs.postInstall or "") + ''
sed -i -E "s/passwordMaskDelay: [0-9]+/passwordMaskDelay: 0/" $out/share/sddm/themes/catppuccin-sddm-corners/components/PasswordPanel.qml
'';
});
in
{
home-manager.users.${username} = {
xdg.configFile."rofi".source = "${catpuccin-rofi}/.config";
xdg.dataFile."rofi/themes".source = "${catpuccin-rofi}/share";
programs.waybar.style = ./waybar-style.css;
wayland.windowManager.hyprland.settings.exec-once = [
"hyprshade auto"
"dunst"
"hyprpaper"
];
xdg.configFile."hypr/hyprpaper.conf" = { #TODO: generic path
text = ''
preload = ${gitPath}/hosts/dragyx/common/theming/wallpapers/default.jpg
wallpaper = ,${gitPath}/hosts/dragyx/common/theming/wallpapers/default.jpg
'';
};
};
environment.systemPackages = [ catppuccin-sddm-corners-patched ];
services.displayManager.sddm.theme = "catppuccin-sddm-corners";
boot.loader.grub.theme = grub-theme;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View file

@ -0,0 +1,136 @@
/* Styles */
@define-color bar-back rgba(40, 40, 40, 0.2);
@define-color widget rgba(40, 40, 40, 0.8);
@define-color warning @bryellow;
@define-color critical red;
@define-color mode black;
@define-color unfocused @widget;
@define-color active rgba(100, 40, 40, 0.7);
@define-color focused red;/*rgba(100, 40, 40, 0.7);*/
@define-color inactive purple;
@define-color fg1 rgba(0, 0, 255, 1);
@define-color fg2 rgba(255, 0, 0, 1);
/* Reset all styles */
* {
border: none;
border-radius: 0;
min-height: 0;
margin: 0;
padding: 0;
box-shadow: none;
text-shadow: none;
-gtk-icon-shadow: none;
}
/* The whole bar */
#waybar {
background: @bar-back;
/*
background: rgba(0, 0, 0, 0);
*/
/*background-image: linear-gradient(to left, rgba(255, 100, 100, 100), rgba(255, 100, 100, 0));*/
background: linear-gradient(90deg, rgba(0,212,255,0.19089642693014708) 0%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 75%, rgba(248,0,255,0.2105042700674019) 100%);
color: @white;
font-family: JetBrains Mono;
font-size: 13pt;
}
/* Each module */
#battery,
#clock,
#cpu,
#language,
#memory,
#mode,
#network,
#pulseaudio-slider,
#temperature,
#tray,
#backlight,
#wireplumber,
#idle_inhibitor,
#disk,
#user,
#keyboard-state,
#workspaces button,
#custom-os-icon,
#mpris {
background: @widget;
margin: 0 0.2em 0 0.2em;
padding: 0em 0.3em 0em 0.3em;
border-radius: 0.35em;
}
#custom-os-icon {
min-width: 0.8em;
padding: 0 0.5em 0 0.1em; /*Otherwise the icon is not centered properly*/
}
#tray {
min-width: 0.8em;
}
#keyboard-state {
min-width: 2em;
color: white;
}
#workspaces button {
opacity: 100;
color: white;
}
/* Inactive (on unfocused output) */
#workspaces button.inactive {
background: @inactive;
}
#workspaces button.active {
background: @active;
}
#custom-os-icon {
color: rgba(150, 150, 255, 1);
margin: 0 1em 0 0.2em;
}
#wireplumber {
/*color: @fg1;*/
border-radius: 0 0.3em 0.3em 0;
}
#backlight {
/*color: @fg2;*/
border-radius: 0.3em 0 0 0.3em;
}
/* Active (on focused output) */
#workspaces button.focused {
opacity: 100;
background: @focused;
}
/* Contains an urgent window */
#workspaces button.urgent {
background: @warning;
}
/* Style when cursor is on the button */
#workspaces button:hover {
opacity: 110;
background: @focused;
}
#clock.date {
border-radius: 0.3em 0 0 0.3em;
min-width: 7em;
}
#clock.time{
/*border-radius: 0 0.3em 0.3em 0;*/
border-radius: 0;
min-width: 4em;
}

View file

@ -0,0 +1,197 @@
{ config, lib, pkgs, ... }:
with lib;
let
username = config.modules.other.system.username;
in
{
environment.systemPackages = with pkgs; [ waybar ];
home-manager.users.${username} = {
programs.waybar = {
systemd.enable = true;
settings = {
main = {
layer = "top";
position = "top";
modules-left = [
"custom/os-icon"
"hyprland/workspaces"
];
modules-center = [
"backlight"
"clock#time"
"wireplumber"
];
modules-right = [
"tray"
"network"
"battery"
];
# Modules
"custom/os-icon" = {
format = "\\uf313"; #NixOS logo
};
battery = {
interval = 10;
states = {
warning = 30;
critical = 15;
};
format-time = "{H}:{M:02}";
format = "{icon} {capacity}%";
format-charging = " {capacity}%";
format-charging-full = " {capacity}%";
format-full = "{icon} {capacity}%";
format-icons = [
""
""
""
""
""
];
tooltip = false;
};
"clock#time" = {
interval = 10;
format = "{:%H:%M}";
tooltip = false;
};
"clock#date" = {
interval = 20;
format = "{:%d.%m.%Y}";
tooltip = false;
};
memory = {
interval = 5;
format = " {used:0.1f}G/{total:0.1f}G";
states = {
warning = 70;
critical = 90;
};
tooltip = false;
};
network = {
interval = 5;
format-wifi = "{icon} {essid}";
format-ethernet = "\\udb80\\ude01 {ifname}";
format-disconnected = "\\uf0202 Offline";
format-alt = "\\udb80\\uddda {bandwidthDownBytes} \\udb81\\udd52 {bandwidthUpBytes} \\udb82\\ude5f {ipaddr}/{cidr}";
format-icons = [
"\\udb82\\udd28 "
"\\udb82\\udd25 "
"\\udb82\\udd22 "
"\\udb82\\udd1f "
"\\udb82\\udd2f "
];
tooltip = false;
};
"hyprland/mode" = {
format = "test{}";
tooltip = false;
};
"hyprland/window" = {
format = "{}";
max-length = 30;
tooltip = false;
rewrite = {
"([Aa]lacritty|kitty)" = "\\ue795 $1";
"(.*) .{15} Mozilla Firefox" = "\\ue745 $1";
"(^Spotify.*)" = "\\uf1bc $1";
};
};
"hyprland/workspaces" = {
disable-scroll-wraparound = true;
smooth-scrolling-threshold = 4;
enable-bar-scroll = true;
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
"11" = "";
"12" = "";
};
};
"pulseaudio/slider" = {
min = 0;
max = 100;
orientation = "horizontal";
};
pulseaudio = {
format = "{icon} {volume}%";
format-bluetooth = "{icon} {volume}%";
format-muted = "";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [
""
""
];
};
scroll-step = 1;
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
tooltip = false;
};
user = {};
temperature = {
critical-threshold = 90;
interval = 5;
format = " {icon} {temperatureC}°";
format-icons = [
""
""
""
""
""
];
tooltip = false;
};
backlight = {
format = "{percent}% {icon} ";
format-icons = [
"\\udb80\\udf36"
"\\udb86\\ude4e"
"\\udb86\\ude4f"
"\\udb86\\ude50"
"\\udb86\\ude51"
"\\udb86\\ude52"
"\\udb86\\ude53"
"\\udb86\\ude54"
"\\udb86\\ude55"
"\\udb86\\ude56"
"\\udb81\\udee8"
];
};
wireplumber = {
format = "{icon} {volume}%";
format-muted = "\\udb81\\udd81";
format-icons = [
"\\uf026"
"\\uf027"
"\\udb81\\udd7e"
];
};
tray = {
icon-size = 18;
};
};
};
};
};
}

View file

@ -2,10 +2,7 @@
{ {
imports = [ imports = [
../configuration.nix ../common/default.nix
../../../options/common/pin-registry.nix
../../../options/common/preserve-system.nix
../../../options/desktop/fonts.nix
./packages.nix ./packages.nix
]; ];
@ -51,6 +48,15 @@
device = "nodev"; device = "nodev";
efiSupport = true; efiSupport = true;
enableCryptodisk = true; enableCryptodisk = true;
useOSProber = true;
extraEntries = ''
menuentry "Reboot" {
reboot
}
menuentry "Poweroff" {
halt
}
'';
}; };
}; };
initrd.luks.devices = { initrd.luks.devices = {
@ -127,6 +133,7 @@
refresh_rate = 60; refresh_rate = 60;
} }
]; ];
wayland = true;
}; };
home-manager = { home-manager = {
enable = true; enable = true;
@ -137,9 +144,10 @@
vesktop.enable = false; vesktop.enable = false;
btop.enable = true; btop.enable = true;
mpv.enable = true; mpv.enable = true;
schizofox.enable = true; schizofox.enable = false;
obs.enable = true; obs.enable = true;
vivado.enable = true; # vivado.enable = true;
rofi.enable = true;
# neovim.enable = true; # neovim.enable = true;
git = { git = {
enable = true; enable = true;
@ -158,6 +166,7 @@
pipewire.enable = true; pipewire.enable = true;
}; };
WM.hyprland.enable = true; WM.hyprland.enable = true;
WM.hyprland.gnome-keyring = true;
}; };
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions

View file

@ -26,6 +26,7 @@ in {
ffmpeg_6-full ffmpeg_6-full
flameshot flameshot
foot foot
img2pdf
gcc gcc
gdb gdb
gnumake gnumake
@ -47,6 +48,7 @@ in {
pamixer pamixer
pavucontrol pavucontrol
pcmanfm pcmanfm
pdfarranger
pfetch pfetch
playerctl playerctl
polkit polkit

View file

@ -41,18 +41,19 @@ in
wl-clipboard wl-clipboard
]; ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
xwayland.enable = true; xwayland.enable = true;
settings = { settings = {
exec-once = if cfg.gnome-keyring then ["${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"] exec-once = (if cfg.gnome-keyring then
else []; ["${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"]
monitor = map ( else []);
m: "${m.device},${builtins.toString m.resolution.x}x${builtins.toString m.resolution.y}@${builtins.toString m.refresh_rate},${builtins.toString m.position.x}x${builtins.toString m.position.y},${builtins.toString m.scale},transform,${builtins.toString m.transform}" monitor = map (
) monitors; #TODO: default value m: "${m.device},${builtins.toString m.resolution.x}x${builtins.toString m.resolution.y}@${builtins.toString m.refresh_rate},${builtins.toString m.position.x}x${builtins.toString m.position.y},${builtins.toString m.scale},transform,${builtins.toString m.transform}"
) monitors; #TODO: default value
};
}; };
}; };
}; };
};
} }

View file

@ -9,7 +9,8 @@ _: {
./zathura.nix ./zathura.nix
./obs.nix ./obs.nix
./foot.nix ./foot.nix
# ./vivado.nix ./rofi.nix
./vivado2.nix
./WM ./WM
./alacritty.nix ./alacritty.nix
./firefox.nix ./firefox.nix

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ... }:
with lib;
let
username = config.modules.other.system.username;
cfg = config.modules.programs.rofi;
in
{
options.modules.programs.rofi.enable = mkEnableOption "rofi";
options.modules.other.system.wayland = mkOption {
type = types.bool;
description = "Does this system use wayland?";
default = false;
}; #FIXME: move this to the (hopefully then) refactored options directory
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
(if config.modules.other.system.wayland then rofi-wayland else rofi)
];
};
}

View file

@ -1,58 +1,57 @@
{ config, lib, pkgs, ...}: { config, lib, pkgs, ...}:
with lib;
let let
vivado-desktop-symbol = pkgs.makeDesktopItem { vivado-desktop-symbol = pkgs.makeDesktopItem {
name = "vivado-2022_2"; name = "vivado-2022_2";
desktopName = "Vivado"; desktopName = "Vivado";
exec = "${pkgs.nur.repos.lschuermann.vivado-2022_2}/bin/vivado"; exec = "${pkgs.nur.repos.lschuermann.vivado-2022_2}/bin/vivado";
}; };
cfg = with lib; [ config.modules.programs.vivado ]; cfg = config.modules.programs.vivado;
username = with lib; [ config.modules.other.system.username ]; username = config.modules.other.system.username;
in in
{ {
options.modules.programs.vivado.enable = mkEnableOption "vivado"; options.modules.programs.vivado.enable = mkEnableOption "vivado";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.${username} = { environment.systemPackages = with pkgs; [
environment.systemPackages = with pkgs; [ # this propietary software is huge, but I need it for
# this propietary software is huge, but I need it for # university
# university pkgs.nur.repos.lschuermann.vivado-2022_2
pkgs.nur.repos.lschuermann.vivado-2022_2 vivado-desktop-symbol
vivado-desktop-symbol ];
];
# Create udev rules. Reference: https://blog.kotatsu.dev/posts/2021-09-14-vivado-on-nixos/ # Create udev rules. Reference: https://blog.kotatsu.dev/posts/2021-09-14-vivado-on-nixos/
services.udev.packages = [ services.udev.packages = [
(pkgs.writeTextFile { (pkgs.writeTextFile {
name = "xilinx-dilligent-usb-udev"; name = "xilinx-dilligent-usb-udev";
destination = "/etc/udev/rules.d/52-xilinx-digilent-usb.rules"; destination = "/etc/udev/rules.d/52-xilinx-digilent-usb.rules";
text = '' text = ''
ATTR{idVendor}=="1443", MODE:="666" ATTR{idVendor}=="1443", MODE:="666"
ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE:="666" ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE:="666"
''; '';
}) })
(pkgs.writeTextFile { (pkgs.writeTextFile {
name = "xilinx-pcusb-udev"; name = "xilinx-pcusb-udev";
destination = "/etc/udev/rules.d/52-xilinx-pcusb.rules"; destination = "/etc/udev/rules.d/52-xilinx-pcusb.rules";
text = '' text = ''
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666" ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666"
''; '';
}) })
(pkgs.writeTextFile { (pkgs.writeTextFile {
name = "xilinx-ftdi-usb-udev"; name = "xilinx-ftdi-usb-udev";
destination = "/etc/udev/rules.d/52-xilinx-ftdi-usb.rules"; destination = "/etc/udev/rules.d/52-xilinx-ftdi-usb.rules";
text = '' text = ''
ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Xilinx", MODE:="666" ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Xilinx", MODE:="666"
''; '';
}) })
]; ];
};
}; };
} }