added new usb system, started modularizing

This commit is contained in:
Remy Moll 2025-06-13 18:52:13 +02:00
parent 58b0456f8c
commit 0a731ef17f
17 changed files with 669 additions and 354 deletions

View File

@ -53,13 +53,37 @@
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.remy.imports = [
./users/remy.nix
./users/remy_spectre
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
}
];
};
nixosConfigurations.nichts = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/lenovo-yoga-usb
stylix.nixosModules.stylix
inputs.superfreq.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.remy.imports = [
./users/remy_yoga-usb
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
}
];
};
# nixosConfigurations.raspberry-pi = nixpkgs.lib.nixosSystem {
# system = "aarch64-linux";
# modules = [

View File

@ -0,0 +1,52 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Use the "experimental" flakes for cleaner config
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nixpkgs.config.allowUnfree = true;
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.hostName = "nichts";
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# # Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
# i18n.supportedLocales = [ "en_US.UTF-8" "de_DE.UTF-8" ];
# Define a user account. Don't forget to set a password with passwd.
users.users.remy = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
};
networking.networkmanager.wifi.powersave = true;
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.05"; # Did you read the comment?
}

View File

@ -0,0 +1,25 @@
{lib, config, options, pkgs, ...}:
{
# Merge the configuration and hardware configuration
imports = [
./configuration.nix
./hardware-configuration.nix
../../modules/nixos/bluetooth.nix
../../modules/nixos/flakes.nix
../../modules/nixos/flatpak.nix
../../modules/nixos/fonts.nix
../../modules/nixos/hyprland.nix
../../modules/nixos/ld.nix
../../modules/nixos/monitoring.nix
../../modules/nixos/networking.nix
../../modules/nixos/nh.nix
../../modules/nixos/pipewire.nix
../../modules/nixos/podman.nix
../../modules/nixos/power.nix
../../modules/nixos/stylix.nix
../../modules/nixos/usb_config.nix
../../utils/binary-cache.nix
../../utils/garbage-collection.nix
];
}

View File

@ -0,0 +1,40 @@
# 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.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/621498e8-64f6-4979-8489-3dc1d145e349";
fsType = "ext4";
};
boot.initrd.luks.devices."root-enc".device = "/dev/disk/by-uuid/156d0f15-397c-4bc6-8f57-026108975246";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/B2D0-672E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# 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.wlp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -3,7 +3,7 @@
programs.vscode = {
enable = true;
# install vscode in a FHS environment to allow extensions with prebuilt binaries
package = pkgs.vscode.fhs;
# package = pkgs.vscode.fhs;
# profiles = {
# default = {
@ -18,9 +18,9 @@
ms-python.isort
ms-python.debugpy
ms-python.vscode-pylance
ms-toolsai.jupyter
ms-toolsai.vscode-jupyter-slideshow
ms-toolsai.jupyter-renderers
# ms-toolsai.jupyter
# ms-toolsai.vscode-jupyter-slideshow
# ms-toolsai.jupyter-renderers
# Nix language
jnoortheen.nix-ide
@ -28,11 +28,17 @@
# typst
myriad-dreamin.tinymist
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "jupyter";
publisher = "ms-toolsai";
version = "2025.3.2025032101";
sha256 = "sha256-s2qEUl9J6EOije6MasZOnHErYs3NYXBqLSfMT03vEH0=";
}
{
name = "jupyter-hub";
publisher = "ms-toolsai";
version = "2024.10.1002831100";
sha256 = "sha256-3YF91Wgw5je040xPpLHPdxQIEAetpmDz6La7bw2JM+g=";
sha256 = "sha256-5IRczwXbYkDdYEOXvQnnH+HJNLvsRsrZ6fnoVCveqrs=";
}
];

View File

@ -2,6 +2,6 @@
{
home.packages = [
# pdf viewer
pkgs.evince
pkgs.papers
];
}

View File

@ -1,228 +1,251 @@
{inputs, pkgs, ...}:
{inputs, pkgs, lib, config, ...}:
let
cfg = config.nix-config.hypr;
in
{
home.packages = [
pkgs.hyprshot
pkgs.nautilus
pkgs.gnome-control-center
pkgs.brightnessctl
pkgs.cliphist
pkgs.wl-clipboard
pkgs.gcr # Provides org.gnome.keyring.SystemPrompter
];
options = {
nix-config.hypr.internal-screen.resolution = lib.mkOption { type = lib.types.str; };
nix-config.hypr.internal-screen.scale = lib.mkOption { type = lib.types.str; };
nix-config.hypr.browser = lib.mkOption {
type = lib.types.str;
default = "firefox";
description = "The browser to use in Hyprland.";
};
nix-config.hypr.launcher-cmd = lib.mkOption {
type = lib.types.str;
default = "wofi --show drun -n";
description = "The command to launch the application launcher in Hyprland.";
};
nix-config.hypr.ide = lib.mkOption {
type = lib.types.str;
default = "code";
description = "The IDE to use in Hyprland.";
};
};
config = {
home.packages = [
pkgs.hyprshot
pkgs.nautilus
pkgs.gnome-control-center
pkgs.gnome-bluetooth # needed by gnome-control-center to manage bluetooth
pkgs.brightnessctl
pkgs.cliphist
pkgs.wl-clipboard
pkgs.gcr # Provides org.gnome.keyring.SystemPrompter
];
# Also use gnome keyring
services.gnome-keyring.enable = true;
# Also use gnome keyring
services.gnome-keyring.enable = true;
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = true;
settings = {
"$mod" = "SUPER";
"$browser" = "firefox";
"$launcher-cmd" = "wofi --show drun -n";
"$ide" = "code";
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = true;
settings = {
"$mod" = "SUPER";
# Global bindings
bind = [
# Launch applications
"$mod, space, exec, $launcher-cmd"
"$mod, return, exec, kitty"
"$mod, b, exec, $browser"
"$mod, s, exec, $ide"
"$mod, e, exec, nautilus"
# Global bindings
bind = [
# Launch applications
"$mod, space, exec, ${cfg.launcher-cmd}"
"$mod, return, exec, kitty"
"$mod, b, exec, ${cfg.browser}"
"$mod, s, exec, ${cfg.ide}"
"$mod, e, exec, nautilus"
# Lock screen
"$mod, l, exec, hyprlock"
# Lock screen
"$mod, l, exec, hyprlock"
# Clipboard management
"$mod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy"
# Clipboard management
"$mod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy"
# Close window
"$mod, Q, killactive,"
"$mod+Shift, Q, exit," # this is the true kill
# Close window
"$mod, Q, killactive,"
"$mod+Shift, Q, exit," # this is the true kill
# Toggle Floating and reduce size
"$mod, f, togglefloating,"
"$mod, f, resizeactive, 50% 50%,"
# Toggle fullscreen
"$mod+Shift, f, fullscreen,"
# Toggle Floating and reduce size
"$mod, f, togglefloating,"
"$mod, f, resizeactive, 50% 50%,"
# Toggle fullscreen
"$mod+Shift, f, fullscreen,"
# Alt-tab alternative
"$mod, Tab, cyclenext,"
"$mod, Tab, bringactivetotop,"
# Alt-tab alternative
"$mod, Tab, cyclenext,"
"$mod, Tab, bringactivetotop,"
# Move the window
"$mod+Shift, left, movewindow, l"
"$mod+Shift, right, movewindow, r"
"$mod+Shift, up, movewindow, u"
"$mod+Shift, down, movewindow, d"
# Move the window
"$mod+Shift, left, movewindow, l"
"$mod+Shift, right, movewindow, r"
"$mod+Shift, up, movewindow, u"
"$mod+Shift, down, movewindow, d"
"$mod+Ctrl, left, movetoworkspace, -1"
"$mod+Ctrl, right, movetoworkspace, +1"
"$mod+Ctrl, left, movetoworkspace, -1"
"$mod+Ctrl, right, movetoworkspace, +1"
# Switch workspace
"$mod+Alt, left, workspace, -1"
"$mod+Alt, right, workspace, +1"
# Switch workspace
"$mod+Alt, left, workspace, -1"
"$mod+Alt, right, workspace, +1"
# Screenshot
"$mod, Print, exec, hyprshot -m region -o ~/Pictures/Screenshots"
"$mod+Shift, Print, exec, hyprshot -m window -o ~/Pictures/Screenshots"
# Screenshot
"$mod, Print, exec, hyprshot -m region -o ~/Pictures/Screenshots"
"$mod+Shift, Print, exec, hyprshot -m window -o ~/Pictures/Screenshots"
];
];
# repeatable bindings
binde = [
# Fn keys
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
", XF86MonBrightnessUp, exec, brightnessctl set +5%"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# repeatable bindings
binde = [
# Fn keys
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
", XF86MonBrightnessUp, exec, brightnessctl set +5%"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# Reshape the window in focus
"$mod, MINUS, resizeactive, -2% -2%"
"$mod, KP_Subtract, resizeactive, -2% -2%"
"$mod, PLUS, resizeactive, 2% 2%"
"$mod, KP_Add, resizeactive, 2% 2%"
# Reshape the window in focus
"$mod, MINUS, resizeactive, -2% -2%"
"$mod, KP_Subtract, resizeactive, -2% -2%"
"$mod, PLUS, resizeactive, 2% 2%"
"$mod, KP_Add, resizeactive, 2% 2%"
];
];
# lock-screen bindings
bindl = [
# on lid close, lock the screen
# if another monitor is connected, only turn the internal monitor off and don't lock the screen
", switch:on:Lid Switch, exec, hyprctl dispatch dpms off eDP-1"
# if there is no active monitor, perform a screen lock
", switch:on:Lid Switch, exec, hyprctl monitors | grep 'dpmsStatus: 1' || hyprlock"
", switch:off:Lid Switch, exec, hyprctl dispatch dpms on eDP-1"
];
# lock-screen bindings
bindl = [
# on lid close, lock the screen
# if another monitor is connected, only turn the internal monitor off and don't lock the screen
", switch:on:Lid Switch, exec, hyprctl dispatch dpms off eDP-1"
# if there is no active monitor, perform a screen lock
", switch:on:Lid Switch, exec, hyprctl monitors | grep 'dpmsStatus: 1' || hyprlock"
", switch:off:Lid Switch, exec, hyprctl dispatch dpms on eDP-1"
];
# bindr = [
# # Overview
# "$mod, , overview:toggle"
# ];
# bindr = [
# # Overview
# "$mod, , overview:toggle"
# ];
bindm = [
# move the window
"$mod, mouse:272, movewindow"
];
bindm = [
# move the window
"$mod, mouse:272, movewindow"
];
exec-once = [
"gnome-keyring-daemon --start --components=secrets"
# "${pkgs.hyprpaper}/bin/hyprpaper"
# hyprpaper is handled as its own service
"${pkgs.waybar}/bin/waybar"
# listen to clipboard events and send them to cliphist
"wl-paste --watch cliphist store"
"${pkgs.waybar}/bin/hypridle"
"hyprpaper"
# # Fixes cursor themes in gnome apps under hyprland
# "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
# "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}"
"${pkgs.owncloud-client}"
];
exec-once = [
"gnome-keyring-daemon --start --components=secrets"
# "${pkgs.hyprpaper}/bin/hyprpaper"
# hyprpaper is handled as its own service
"${pkgs.waybar}/bin/waybar"
# listen to clipboard events and send them to cliphist
"wl-paste --watch cliphist store"
"${pkgs.waybar}/bin/hypridle"
"hyprpaper"
# # Fixes cursor themes in gnome apps under hyprland
# "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
# "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}"
"${pkgs.owncloud-client}"
];
general = {
resize_on_border = true;
gaps_in = 5;
gaps_out = 5;
border_size = 1;
"col.active_border" = "rgb(98971A) rgb(CC241D) 45deg";
layout = "master";
};
misc = {
# disable refreshs when nothing is going on
vfr = false;
disable_hyprland_logo = true;
};
input = {
kb_layout = "de";
# remap caps lock to ctrl
kb_options = "ctrl:nocaps";
numlock_by_default = true;
# mouse input should be unchanged
natural_scroll = false;
sensitivity = 0.3;
touchpad = {
disable_while_typing = false;
natural_scroll = true;
general = {
resize_on_border = true;
gaps_in = 5;
gaps_out = 5;
border_size = 1;
"col.active_border" = "rgb(98971A) rgb(CC241D) 45deg";
layout = "master";
};
};
device = {
name = "syna329a:00-06cb:cd4f-touchpad";
sensitivity = 0.5;
};
misc = {
# disable refreshs when nothing is going on
vfr = false;
disable_hyprland_logo = true;
};
gestures = {
workspace_swipe = true;
workspace_swipe_fingers = 4;
workspace_swipe_touch = true;
};
input = {
kb_layout = "de";
# remap caps lock to ctrl
kb_options = "ctrl:nocaps";
numlock_by_default = true;
# mouse input should be unchanged
natural_scroll = false;
sensitivity = 0.3;
touchpad = {
disable_while_typing = false;
natural_scroll = true;
};
};
decoration = {
rounding = 7;
# active_opacity = 0.95;
inactive_opacity = 0.9;
device = {
name = "syna329a:00-06cb:cd4f-touchpad";
sensitivity = 0.5;
};
shadow = {
gestures = {
workspace_swipe = true;
workspace_swipe_fingers = 4;
workspace_swipe_touch = true;
};
decoration = {
rounding = 7;
# active_opacity = 0.95;
inactive_opacity = 0.9;
shadow = {
enabled = false;
};
# blur is set on a per-program basis
windowrulev2 = [
# kitty should behave like a floating window
"animation popin, class:kitty"
"move cursor -50% -50%, class:kitty"
"float, class:kitty"
"size 50% 50%, class:kitty"
# some more floating windows
"float, class:org.gnome.Settings"
"float, class:desktopclient.owncloud.com"
"float, class:org.keepassxc.KeePassXC"
];
};
monitor = [
# the internal monitor, always at the "center"
"eDP-1, ${cfg.internal-screen.resolution}, 0x0, ${cfg.internal-screen.scale}"
# Samsung monitors at irchel (matching the description)
# "desc:Samsung Electric Company LS27D80xU HK7X800803, 3840x2160, auto-up, 1.8"
"desc:Samsung Electric Company LS27D80xU HNAX600169, 2560x1440@59.95, auto-up, 1"
", preferred, auto-up, auto" # automatically add any newly detected monitor
];
xwayland = {
enabled = false;
};
# blur is set on a per-program basis
windowrulev2 = [
# kitty should behave like a floating window
"animation popin, class:kitty"
"move cursor -50% -50%, class:kitty"
"float, class:kitty"
"size 50% 50%, class:kitty"
# some more floating windows
"float, class:org.gnome.Settings"
"float, class:desktopclient.owncloud.com"
"float, class:org.keepassxc.KeePassXC"
env = [
# force apps to use wayland
"NIXOS_OZONE_WL, 1"
"ELECTRON_OZONE_PLATFORM_HINT, wayland"
# set the scale factor for GDK apps
"GDK_SCALE, 1.7"
# set the scale factor for QT apps
"QT_SCALE_FACTOR, 1.7"
# set the scale factor for GTK apps
];
};
monitor = [
"eDP-1, 3840x2160, 0x0, 1.666667" # the internal laptop monitor
# Samsung monitors at irchel (matching the description)
# "desc:Samsung Electric Company LS27D80xU HK7X800803, 3840x2160, auto-up, 1.8"
"desc:Samsung Electric Company LS27D80xU HNAX600169, 2560x1440@59.95, auto-up, 1"
", preferred, auto-up, auto" # automatically add any newly detected monitor
];
xwayland = {
enabled = false;
};
env = [
# force apps to use wayland
"NIXOS_OZONE_WL, 1"
"ELECTRON_OZONE_PLATFORM_HINT, wayland"
# set the scale factor for GDK apps
"GDK_SCALE, 1.7"
# set the scale factor for QT apps
"QT_SCALE_FACTOR, 1.7"
# set the scale factor for GTK apps
plugins = [
# Global overview
pkgs.hyprlandPlugins.hyprspace
# Touch gestures
pkgs.hyprlandPlugins.hyprgrass
];
};
plugins = [
# Global overview
pkgs.hyprlandPlugins.hyprspace
# Touch gestures
pkgs.hyprlandPlugins.hyprgrass
];
services.swaync.enable = true;
};
services.swaync.enable = true;
}

View File

@ -1,4 +1,7 @@
{inputs, pkgs, ...}:
{inputs, pkgs, lib, config, ...}:
let
cfg = config.nix-config.style;
in
{
# required to autoload fonts from packages installed via Home Manager
fonts.fontconfig.enable = true;
@ -14,14 +17,16 @@
settings = {
mainBar = {
margin-top = 2;
margin-bottom = 2;
margin-left = 5;
margin-right = 5;
layer = "top";
position = "top";
spacing = 5;
margin-top = 5;
# margin-bottom = 2;
# margin-left = 5;
# margin-right = 5;
# margin between the modules
spacing = 2;
modules-left = [
"hyprland/workspaces"
@ -36,8 +41,8 @@
modules-right = [
"tray"
"privacy"
"wireplumber"
"network"
"wireplumber"
"battery"
"backlight"
"idle_inhibitor"
@ -150,18 +155,29 @@
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "sleep 0.1 && task-waybar";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
"network" = {
format = "󰤭";
format-wifi = "{icon} {essid}";
format-ethernet = " {ipaddr}";
format-wifi = "{icon}";
format-icons = [ "󰤯" "󰤟" "󰤢" "󰤥" "󰤨" ];
format-ethernet = "󰊗 {ipaddr}/{cidr}";
format-disconnected = "";
tooltip-format = "󰊗 {ifname} via {gwaddr}";
tooltip-format-wifi = "SSID: {essid}({signalStrength}%), {frequency} MHz\nInterface: {ifname}\nIP: {ipaddr}\nGW: {gwaddr}\n\n<span color='#a6da95'>{bandwidthUpBits}</span>\t<span color='#ee99a0'>{bandwidthDownBits}</span>\t<span color='#c6a0f6'>󰹹{bandwidthTotalBits}</span>";
tooltip-format-ethernet = "{ifname} ";
format-disconnected = "󰤭";
tooltip-format = " {ifname} via {gwaddr}";
# TODO - don't escape the strings in the tooltip
tooltip-format-wifi = ''
󰤨 {essid}({signalStrength}%), {frequency} GHz\nInterface: {ifname}
IP: {ipaddr} GW: {gwaddr}
<span color='#a6da95'>{bandwidthUpBits}</span> <span color='#ee99a0'>{bandwidthDownBits}</span> <span color='#c6a0f6'>󰹹{bandwidthTotalBits}</span>
'';
tooltip-format-ethernet = ''
{ifname} - {ipaddr}/{cidr}
<span color='#a6da95'>{bandwidthUpBits}</span> <span color='#ee99a0'>{bandwidthDownBits}</span> <span color='#c6a0f6'>󰹹{bandwidthTotalBits}</span>
'';
tooltip-format-disconnected = "Disconnected";
on-click = "XDG_CURRENT_DESKTOP=GNOME gnome-control-center wifi";
};
@ -192,22 +208,20 @@
style = ''
* {
font-family: "FiraCode Nerd Font";
font-family: "${cfg.monospaceFont}";
font-weight: bold;
font-size: 20px;
font-size: ${builtins.toString (cfg.fontSizes.desktop + 7)}px;
}
window#waybar {
background-color: transparent;
}
.module {
background: rgba(0, 0, 0, 0.6);
color: white;
border-radius: 7px;
padding: 5px 5px 5px 5px;
margin: 5px 0;
}
box.module button:hover {
box-shadow: inset 0 -3px #ffffff;

View File

@ -1,6 +1,6 @@
{pkgs, lib, ...}:
{pkgs, lib, config, ...}:
let
stylix = import ./stylix.nix { inherit pkgs; };
cfg = config.nix-config.style;
in
{
programs.kitty = {
@ -35,12 +35,12 @@ in
# color15 = stylix.stylix.base16Scheme.base0F;
# also reuse the background opacity by stylix
background_opacity = stylix.stylix.opacity.terminal;
background_opacity = cfg.terminalOpacity;
background = "#000000";
font_family = stylix.stylix.fonts.monospace.name;
font_size = stylix.stylix.fonts.sizes.terminal;
font_family = cfg.monospaceFont;
font_size = cfg.fontSizes.terminal;
confirm_os_window_close = 0;
enable_audio_bell = false;
cursor_trail = 3;

View File

@ -1,96 +1,147 @@
{pkgs, ...}:
{pkgs, config, lib, ...}:
let
cfg = config.nix-config.style;
in
{
stylix = {
# Stylix is already enabled since the system is configured to use it
# enable = true;
# don't theme applications by default
autoEnable = false;
options.nix-config.style = {
cursor = {
package = pkgs.apple-cursor;
name = "macOS";
size = 35;
size = lib.mkOption {
type = lib.types.int;
default = 35;
description = "Size of the cursor in pixels.";
};
};
iconTheme = {
enable = true;
package = pkgs.tela-icon-theme;
};
image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
fonts = {
serif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Serif";
fontSizes = {
applications = lib.mkOption {
type = lib.types.int;
default = 12;
description = "Font size for applications.";
};
sansSerif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans";
desktop = lib.mkOption {
type = lib.types.int;
default = 12;
description = "Font size for desktop icons.";
};
monospace = {
package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; };
name = "FiraCode Nerd Font Mono";
popups = lib.mkOption {
type = lib.types.int;
default = 12;
description = "Font size for popups.";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
sizes = {
applications = 12;
desktop = 12;
popups = 12;
terminal = 12;
terminal = lib.mkOption {
type = lib.types.int;
default = 12;
description = "Font size for terminal.";
};
};
opacity = {
applications = 1.0;
desktop = 1.0;
popups = 0.9;
terminal = 0.8;
terminalOpacity = lib.mkOption {
type = lib.types.float;
default = 0.8;
description = "Terminal default opacity";
};
monospaceFont = lib.mkOption {
type = lib.types.str;
default = "FiraCode Nerd Font Mono";
description = "Monospace font. Needs to be installed.";
};
};
stylix.base16Scheme = {
scheme = "onelight";
author = "https://github.com/one-dark";
base00 = "#fafafa";
base01 = "#f4f4f4";
base02 = "#e5e5e6";
base03 = "#dfdfe0";
base04 = "#d7d7d8";
base05 = "#383a42";
base06 = "#202227";
base07 = "#090a0b";
base08 = "#d84a3d";
base09 = "#a626a4";
base0A = "#c18401";
base0B = "#50a14f";
base0C = "#0070a8";
base0D = "#4078f2";
base0E = "#a626a4";
base0F = "#986801";
};
config = {
stylix.targets = {
hyprpaper.enable = true;
hyprlock.enable = true;
gnome.enable = true;
stylix = {
# Stylix is already enabled since the system is configured to use it
# enable = true;
# don't theme applications by default
autoEnable = false;
# disabled because they overwrite too many settings
# wofi.enable = true;
# vscode.enable = true;
# waybar.enable = true;
# kitty.enable = true;
cursor = {
package = pkgs.apple-cursor;
name = "macOS";
size = cfg.cursor.size;
};
iconTheme = {
enable = true;
package = pkgs.tela-icon-theme;
};
image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
fonts = {
serif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Serif";
};
sansSerif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans";
};
monospace = {
package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; };
name = cfg.monospaceFont;
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
sizes = {
applications = cfg.fontSizes.applications;
desktop = cfg.fontSizes.desktop;
popups = cfg.fontSizes.popups;
terminal = cfg.fontSizes.terminal;
};
};
opacity = {
applications = 1.0;
desktop = 1.0;
popups = 0.9;
terminal = cfg.terminalOpacity;
};
};
stylix.base16Scheme = {
scheme = "onelight";
author = "https://github.com/one-dark";
base00 = "#fafafa";
base01 = "#f4f4f4";
base02 = "#e5e5e6";
base03 = "#dfdfe0";
base04 = "#d7d7d8";
base05 = "#383a42";
base06 = "#202227";
base07 = "#090a0b";
base08 = "#d84a3d";
base09 = "#a626a4";
base0A = "#c18401";
base0B = "#50a14f";
base0C = "#0070a8";
base0D = "#4078f2";
base0E = "#a626a4";
base0F = "#986801";
};
stylix.targets = {
hyprpaper.enable = true;
hyprlock.enable = true;
gnome.enable = true;
# disabled because they overwrite too many settings
# wofi.enable = true;
# vscode.enable = true;
# waybar.enable = true;
# kitty.enable = true;
};
};
}

View File

@ -1,8 +1,8 @@
{ config, pkgs, lib, ... }:
let
stylix = import ./stylix.nix { inherit pkgs; };
in {
cfg = config.nix-config.style;
in
{
home.packages = with pkgs; [ wofi-emoji ];
@ -52,14 +52,14 @@ in {
style = ''
* {
font-family: ${stylix.stylix.fonts.sansSerif.name};
font-size: ${builtins.toString (stylix.stylix.fonts.sizes.applications + 10)}px;
color: ${stylix.stylix.base16Scheme.base04};
font-family: ${cfg.monospaceFont};
font-size: ${builtins.toString (cfg.fontSizes.desktop + 8)}px;
color: white;
background: transparent;
}
#window {
background: rgba(41, 46, 66, 0.5);
background: rgba(1, 1, 1, 0.5);
margin: auto;
padding: 10px;
}

View File

@ -10,17 +10,17 @@
];
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
Name = "Nixtre";
ControllerMode = "dual";
FastConnectable = "true";
Experimental = "true";
};
Policy = {
AutoEnable = "true";
};
};
# powerOnBoot = true;
# settings = {
# General = {
# Name = "Nixtre";
# ControllerMode = "dual";
# FastConnectable = "true";
# Experimental = "true";
# };
# Policy = {
# AutoEnable = "true";
# };
# };
};
}

View File

@ -4,24 +4,32 @@
pkgs,
...
}:
let
cfg = config.nix-config;
in
{
# Use hyprland as the main desktop environment but use gdm as desktop manager
programs.hyprland = {
enable = true;
xwayland.enable = false;
config = {
# Use hyprland as the main desktop environment but use gdm as desktop manager
programs.hyprland = {
enable = true;
xwayland.enable = false;
};
services.displayManager = {
defaultSession = "hyprland";
};
services.xserver.displayManager.gdm = {
enable = true;
wayland = true;
};
security.pam.services.hyprlock = {};
security.pam.services.gdm.enableGnomeKeyring = true;
};
services.displayManager = {
defaultSession = "hyprland";
};
services.xserver.displayManager.gdm = {
enable = true;
wayland = true;
};
security.pam.services.hyprlock = {};
security.pam.services.gdm.enableGnomeKeyring = true;
}

View File

@ -0,0 +1,17 @@
{
config,
pkgs,
...
}:
{
boot.loader.grub.enable = true;
boot.loader.grub.efiSupport = true;
# location at install time. Since the drive is a USB drive this is expcected to change on each device
boot.loader.grub.device = "/dev/sdb";
boot.loader.grub.efiInstallAsRemovable = true;
boot.loader.systemd-boot.enable = false;
boot.loader.efi.canTouchEfiVariables = false;
boot.tmp.useTmpfs = true;
}

View File

@ -1,26 +1,5 @@
{ config, pkgs, lib, ... }:
with lib.hm.gvariant;
{
imports = [
../modules/home-manager/browser.nix
../modules/home-manager/code.nix
../modules/home-manager/dev.nix
../modules/home-manager/documents.nix
../modules/home-manager/fish.nix
../modules/home-manager/flatpaks.nix
../modules/home-manager/hypr
../modules/home-manager/keepassxc.nix
../modules/home-manager/kitty.nix
../modules/home-manager/kubectl.nix
../modules/home-manager/obsidian.nix
../modules/home-manager/owncloud-client.nix
../modules/home-manager/ssh.nix
../modules/home-manager/stylix.nix
../modules/home-manager/thunderbird.nix
../modules/home-manager/wofi.nix
../modules/home-manager/xdg-portals.nix
];
## Home Manager configuration
home.stateVersion = "24.05";
# Let Home Manager install and manage itself.

View File

@ -0,0 +1,38 @@
{ config, pkgs, lib, ... }:
with lib.hm.gvariant;
{
config = {
nix-config = {
hypr = {
internal-screen = {
resolution = "3840x2160";
scale = "1.666667";
};
};
};
};
imports = [
../remy.nix
../../modules/home-manager/browser.nix
../../modules/home-manager/code.nix
../../modules/home-manager/dev.nix
../../modules/home-manager/documents.nix
../../modules/home-manager/fish.nix
../../modules/home-manager/flatpaks.nix
../../modules/home-manager/hypr
../../modules/home-manager/keepassxc.nix
../../modules/home-manager/kitty.nix
../../modules/home-manager/kubectl.nix
../../modules/home-manager/obsidian.nix
../../modules/home-manager/owncloud-client.nix
../../modules/home-manager/ssh.nix
../../modules/home-manager/stylix.nix
../../modules/home-manager/thunderbird.nix
../../modules/home-manager/wofi.nix
../../modules/home-manager/xdg-portals.nix
];
}

View File

@ -0,0 +1,38 @@
{ config, pkgs, lib, ... }:
with lib.hm.gvariant;
{
config = {
nix-config = {
hypr = {
internal-screen = {
resolution = "2880x1800@90.00100";
scale = "1.666667";
};
};
};
};
imports = [
../remy.nix
../../modules/home-manager/browser.nix
../../modules/home-manager/code.nix
../../modules/home-manager/dev.nix
../../modules/home-manager/documents.nix
../../modules/home-manager/fish.nix
../../modules/home-manager/flatpaks.nix
../../modules/home-manager/hypr
../../modules/home-manager/keepassxc.nix
../../modules/home-manager/kitty.nix
../../modules/home-manager/kubectl.nix
../../modules/home-manager/obsidian.nix
../../modules/home-manager/owncloud-client.nix
../../modules/home-manager/ssh.nix
../../modules/home-manager/stylix.nix
../../modules/home-manager/thunderbird.nix
../../modules/home-manager/wofi.nix
../../modules/home-manager/xdg-portals.nix
];
}