This commit is contained in:
Jan Bulthuis 2024-09-02 20:03:39 +02:00
parent b921c2ac47
commit 8ea644f665
18 changed files with 250 additions and 22 deletions

View File

@ -16,6 +16,7 @@
# Enabled modules # Enabled modules
modules = { modules = {
base.enable = true; base.enable = true;
bluetooth.enable = true;
power-saving.enable = false; power-saving.enable = false;
pipewire.enable = true; pipewire.enable = true;
wpa_supplicant.enable = true; wpa_supplicant.enable = true;

View File

@ -0,0 +1,23 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.bluetooth;
in
{
options.modules.bluetooth = {
enable = mkEnableOption "bluetooth";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ bluez ];
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
};
}

View File

@ -10,6 +10,7 @@ with lib;
imports = [ imports = [
# Import modules # Import modules
./base/default.nix ./base/default.nix
./bluetooth/default.nix
./boot/clean-tmp.nix ./boot/clean-tmp.nix
./boot/silent-boot.nix ./boot/silent-boot.nix
./boot/systemd-boot.nix ./boot/systemd-boot.nix

View File

@ -8,7 +8,12 @@
with lib; with lib;
let let
# Nixvim # Nixvim
nixvim = import (builtins.fetchGit { url = "https://github.com/nix-community/nixvim"; }); nixvim = import (
builtins.fetchGit {
url = "https://github.com/nix-community/nixvim";
# ref = "nixos-24.05";
}
);
# Stylix # Stylix
stylix = import ( stylix = import (

View File

@ -0,0 +1,28 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.bluetuith;
in
{
options.modules.bluetuith = {
enable = mkEnableOption "bluetuith";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [ bluetuith ];
# Add nix tree
xdg.desktopEntries.bluetuith = {
exec = "${pkgs.bluetuith}/bin/bluetuith";
name = "Bluetuith";
terminal = true;
type = "Application";
};
};
}

View File

@ -19,6 +19,23 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
default.browser = mkIf cfg.default "org.qutebrowser.qutebrowser.desktop"; default.browser = mkIf cfg.default "org.qutebrowser.qutebrowser.desktop";
# TODO: Remove once nixpkgs updates
nixpkgs.config.packageOverrides = pkgs: {
python3 = pkgs.python3.override {
packageOverrides = self: super: {
pykeepass = super.pykeepass.overrideAttrs (attrs: {
version = "4.1.0.post1";
src = pkgs.fetchFromGitHub {
owner = "libkeepass";
repo = "pykeepass";
rev = "refs/tags/v4.1.0.post1";
hash = "sha256-64is/XoRF/kojqd4jQIAQi1od8TRhiv9uR+WNIGvP2A=";
};
});
};
};
};
programs.qutebrowser = { programs.qutebrowser = {
enable = true; enable = true;

View File

@ -8,11 +8,13 @@
{ {
imports = [ imports = [
# Import all modules # Import all modules
./bluetuith/default.nix
./browser/default.nix ./browser/default.nix
./desktop/default.nix ./desktop/default.nix
./discord/default.nix ./discord/default.nix
./feishin/default.nix ./feishin/default.nix
./fontconfig/default.nix ./fontconfig/default.nix
./language/haskell.nix
./language/nix.nix ./language/nix.nix
./language/rust.nix ./language/rust.nix
./mako/default.nix ./mako/default.nix
@ -27,6 +29,7 @@
./terminal/foot/default.nix ./terminal/foot/default.nix
./theming/default.nix ./theming/default.nix
./vscode/default.nix ./vscode/default.nix
./whatsapp/default.nix
./winbox/default.nix ./winbox/default.nix
./zathura/default.nix ./zathura/default.nix

View File

@ -35,6 +35,7 @@ in
"mpris" "mpris"
]; ];
modules-right = [ modules-right = [
"bluetooth"
"network" "network"
"pulseaudio" "pulseaudio"
"battery" "battery"
@ -110,6 +111,11 @@ in
tooltip-format = ""; tooltip-format = "";
interval = 1; interval = 1;
}; };
bluetooth = {
tooltip = false;
format = "{status}"; # Spacing achieved using "Thin Space"
format-connected = "{device_alias}"; # Spacing achieved using "Thin Space"
};
}; };
}; };
# TODO: Replace base03 color with named color # TODO: Replace base03 color with named color
@ -133,7 +139,7 @@ in
padding: 0 5px 1px 5px; padding: 0 5px 1px 5px;
border-radius: 0; border-radius: 0;
font-size: 16px; font-size: 16px;
font-family: "Unifont"; font-family: "wenquanyi bitmap song";
} }
#tags button.occupied { #tags button.occupied {

View File

@ -36,6 +36,8 @@ in
[ [
pkgs.wl-clipboard pkgs.wl-clipboard
pkgs.wtype pkgs.wtype
pkgs.grim
pkgs.slurp
] ]
); );

View File

@ -25,6 +25,7 @@ in
# TODO: Move elsewhere # TODO: Move elsewhere
home.packages = with pkgs; [ home.packages = with pkgs; [
brightnessctl brightnessctl
river-filtile
# owm # owm
]; ];
@ -56,7 +57,7 @@ in
xwayland.enable = true; xwayland.enable = true;
settings = settings =
let let
layout = "rivertile"; layout = "filtile";
layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}"; layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}";
modes = [ modes = [
"normal" "normal"
@ -108,7 +109,7 @@ in
]; ];
map = ( map = (
lib.attrsets.recursiveUpdate lib.attrsets.recursiveUpdate
({ {
normal = normal =
{ {
"${main} Q" = "close"; "${main} Q" = "close";
@ -119,6 +120,7 @@ in
"${ssm} Return" = "spawn foot"; "${ssm} Return" = "spawn foot";
"${main} P" = "spawn \"rofi -show drun\""; "${main} P" = "spawn \"rofi -show drun\"";
"${ssm} P" = "spawn rofi-rbw"; "${ssm} P" = "spawn rofi-rbw";
"${main} S" = "spawn \"grim -g \\\"\\\$(slurp)\\\" ~/Images/Screenshots/\\\$(date +'%s_grim.png')\"";
# Window focus # Window focus
"${main} J" = "focus-view next"; "${main} J" = "focus-view next";
@ -130,22 +132,22 @@ in
"${main} Return" = "zoom"; "${main} Return" = "zoom";
# Main ratio # Main ratio
"${main} H" = "send-layout-cmd rivertile 'main-ratio -0.05'"; "${main} H" = "send-layout-cmd ${layout} 'main-ratio -0.05'";
"${main} L" = "send-layout-cmd rivertile 'main-ratio +0.05'"; "${main} L" = "send-layout-cmd ${layout} 'main-ratio +0.05'";
# Main count # Main count
"${ssm} H" = "send-layout-cmd rivertile 'main-count +1'"; "${ssm} H" = "send-layout-cmd ${layout} 'main-count +1'";
"${ssm} L" = "send-layout-cmd rivertile 'main-count -1'"; "${ssm} L" = "send-layout-cmd ${layout} 'main-count -1'";
# Tags # Tags
"${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}"; "${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}";
"${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}"; "${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}";
# Orientation # Orientation
"${main} Up" = "send-layout-cmd rivertile \"main-location top\""; "${main} Up" = "send-layout-cmd ${layout} \"main-location top\"";
"${main} Right" = "send-layout-cmd rivertile \"main-location right\""; "${main} Right" = "send-layout-cmd ${layout} \"main-location right\"";
"${main} Down" = "send-layout-cmd rivertile \"main-location bottom\""; "${main} Down" = "send-layout-cmd ${layout} \"main-location bottom\"";
"${main} Left" = "send-layout-cmd rivertile \"main-location left\""; "${main} Left" = "send-layout-cmd ${layout} \"main-location left\"";
# Move floating windows # Move floating windows
"${sam} H" = "move left 100"; "${sam} H" = "move left 100";
@ -191,7 +193,7 @@ in
]) tags ]) tags
) )
); );
}) }
( (
builtins.listToAttrs ( builtins.listToAttrs (
map (mode: { map (mode: {

View File

@ -0,0 +1,40 @@
{
lib,
config,
pkgs,
...
}:
with lib;
let
cfg = config.modules.haskell;
in
{
options.modules.haskell = {
enable = mkEnableOption "haskell";
};
config = mkIf cfg.enable {
# Development packages
home.packages = with pkgs; [
haskell.compiler.ghc948
(haskell-language-server.override { supportedGhcVersions = [ "948" ]; })
];
# VSCode configuration
programs.vscode = {
extensions = with pkgs.vscode-extensions; [
haskell.haskell
justusadam.language-haskell
];
userSettings = {
"[haskell]" = { };
# "haskell.formattingProvider" = "fourmolu";
};
};
# Neovim configuration
programs.nixvim = { };
};
}

View File

@ -17,28 +17,31 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
# Development packages # Development packages
home.packages = with pkgs; [ home.packages = with pkgs; [
# rustup rustup
rustc # rustc
cargo # cargo
gcc gcc
# lldb lldb
gdb # rust-analyzer
rust-analyzer # rustfmt
rustfmt # clippy
]; ];
# VSCode configuration # VSCode configuration
programs.vscode = { programs.vscode = {
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
rust-lang.rust-analyzer rust-lang.rust-analyzer
# ms-vscode.cpp-tools
vadimcn.vscode-lldb vadimcn.vscode-lldb
tamasfe.even-better-toml
serayuzgur.crates
]; ];
userSettings = { userSettings = {
"[rust]" = { "[rust]" = {
"editor.inlayHints.enabled" = "off"; "editor.inlayHints.enabled" = "off";
}; };
"rust-analyzer.check.command" = "clippy";
"rust-analyzer.showUnlinkedFileNotification" = false;
}; };
}; };

View File

@ -101,6 +101,8 @@ in
# Import all themes # Import all themes
./themes/catppuccin.nix ./themes/catppuccin.nix
./themes/gruvbox.nix ./themes/gruvbox.nix
./themes/oxocarbon.nix
./themes/papercolor.nix
./themes/sakura.nix ./themes/sakura.nix
]; ];

View File

@ -0,0 +1,25 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.theming.themes.oxocarbon;
mode = if cfg.darkMode then "dark" else "light";
in
{
options = {
theming.themes.oxocarbon = {
enable = mkEnableOption "oxocarbon";
darkMode = mkEnableOption "dark mode";
};
};
config.theming = mkIf cfg.enable {
darkMode = cfg.darkMode;
colorScheme = "${pkgs.base16-schemes}/share/themes/oxocarbon-${mode}.yaml";
};
}

View File

@ -0,0 +1,25 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.theming.themes.papercolor;
mode = if cfg.darkMode then "dark" else "light";
in
{
options = {
theming.themes.papercolor = {
enable = mkEnableOption "papercolor";
darkMode = mkEnableOption "dark mode";
};
};
config.theming = mkIf cfg.enable {
darkMode = cfg.darkMode;
colorScheme = "${pkgs.base16-schemes}/share/themes/papercolor-${mode}.yaml";
};
}

View File

@ -35,6 +35,9 @@ in
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
eamodio.gitlens eamodio.gitlens
ms-vscode.hexeditor ms-vscode.hexeditor
mkhl.direnv
usernamehw.errorlens
gruntfuggly.todo-tree
]; ];
userSettings = { userSettings = {

View File

@ -0,0 +1,22 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.modules.whatsapp;
in
{
options.modules.whatsapp = {
enable = mkEnableOption "whatsapp";
};
config = mkIf cfg.enable {
modules.unfree.allowedPackages = [ "whatsapp-for-linux" ];
home.packages = with pkgs; [ whatsapp-for-linux ];
};
}

View File

@ -7,6 +7,9 @@
# State version # State version
home.stateVersion = "24.05"; home.stateVersion = "24.05";
# TODO: Move into modules
home.packages = with pkgs; [ libreoffice-fresh ];
# Enabled modules # Enabled modules
modules = { modules = {
# Window manager # Window manager
@ -26,6 +29,7 @@
vscode.enable = true; vscode.enable = true;
zathura.enable = true; zathura.enable = true;
fish.enable = true; fish.enable = true;
whatsapp.enable = true;
winbox.enable = true; winbox.enable = true;
discord.enable = true; discord.enable = true;
qutebrowser = { qutebrowser = {
@ -35,8 +39,10 @@
neovim.enable = true; neovim.enable = true;
rofi-rbw.enable = true; rofi-rbw.enable = true;
obsidian.enable = true; obsidian.enable = true;
bluetuith.enable = true;
# Programming languages # Programming languages
haskell.enable = true;
nix.enable = true; nix.enable = true;
rust.enable = true; rust.enable = true;
@ -58,11 +64,25 @@
fonts.extraFonts = [ ]; fonts.extraFonts = [ ];
# Color scheme # Color scheme
themes.oxocarbon = {
enable = false;
darkMode = false;
};
themes.catppuccin = { themes.catppuccin = {
enable = true; enable = true;
flavor = "latte"; flavor = "mocha";
}; };
themes.sakura.enable = false; themes.sakura.enable = false;
# TODO: Remove
# Nice themes:
# - rose-pine-dawn: Decent, bit too yellow though.
# - sagelight: Barely readable
# - danqing-light: Too minty
# - fruit-soda: Colors too bright, background too dark.
# - solarflare-light: Nice
# darkMode = false;
# colorScheme = "${pkgs.base16-schemes}/share/themes/solarflare-light.yaml";
}; };
# TODO: Remove everything below, it is here out of convenience and should be elsewhere # TODO: Remove everything below, it is here out of convenience and should be elsewhere