Compare commits

...

2 Commits

Author SHA1 Message Date
Jan Bulthuis 8ea644f665 Changes 2024-09-02 20:03:39 +02:00
Jan Bulthuis b921c2ac47 Progress on some things, can't remember what though 2024-07-31 13:39:09 +02:00
23 changed files with 320 additions and 53 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

@ -5,7 +5,7 @@ precision mediump float;
uniform float time; uniform float time;
uniform vec2 resolution; uniform vec2 resolution;
#define iTime time * 0.01 + 10.0 #define iTime time * 0.05 + 50.0
#define iResolution resolution #define iResolution resolution
#define fragCoord gl_FragCoord #define fragCoord gl_FragCoord
#define fragColor gl_FragColor #define fragColor gl_FragColor

View File

@ -20,6 +20,7 @@ in
home.packages = with pkgs; [ home.packages = with pkgs; [
pulsemixer pulsemixer
playerctl playerctl
wpa_supplicant_gui # TODO: Move
]; ];
programs.waybar = { programs.waybar = {
@ -34,6 +35,8 @@ in
"mpris" "mpris"
]; ];
modules-right = [ modules-right = [
"bluetooth"
"network"
"pulseaudio" "pulseaudio"
"battery" "battery"
"clock" "clock"
@ -55,6 +58,13 @@ in
]; ];
disable-click = false; disable-click = false;
}; };
network = {
tooltip = false;
on-click = "wpa_gui";
format-wifi = " {essid}"; # Spacing achieved using "Thin Space"
format-ethernet = "TODO";
format-disconnected = "";
};
pulseaudio = { pulseaudio = {
tooltip = false; tooltip = false;
format = "{icon}{volume}%"; # Spacing achieved using "Thin Space" format = "{icon}{volume}%"; # Spacing achieved using "Thin Space"
@ -101,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
@ -124,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

@ -22,27 +22,34 @@ in
# TODO: Move elsewhere and make keybindings more configurable # TODO: Move elsewhere and make keybindings more configurable
modules.rofi.enable = true; modules.rofi.enable = true;
# TODO: Move elsewhere
home.packages = with pkgs; [
brightnessctl
river-filtile
# owm
];
# Change desktop to execute river # Change desktop to execute river
modules.desktop.initScript = '' modules.desktop.initScript = ''
river river
''; '';
# Update background after rebuild # Update background after rebuild
home.activation = { # home.activation = {
river = lib.hm.dag.entryBetween [ "reloadSystemd" ] [ "installPackages" ] '' # river = lib.hm.dag.entryBetween [ "reloadSystemd" ] [ "installPackages" ] ''
# Close waybar # # Close waybar
PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill waybar # PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill waybar
# Kill rivertile # # Kill rivertile
PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill rivertile # PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill rivertile
# Kill glpaper # # Kill glpaper
PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill glpaper # PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill glpaper
# Restart river # # Restart river
PATH="${pkgs.river}/bin:${pkgs.systemd}/bin:$PATH" $DRY_RUN_CMD ~/.config/river/init # PATH="${pkgs.river}/bin:${pkgs.systemd}/bin:${pkgs.waybar}/bin:$PATH" $DRY_RUN_CMD ~/.config/river/init
''; # '';
}; # };
# River setup # River setup
wayland.windowManager.river = { wayland.windowManager.river = {
@ -50,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"
@ -102,7 +109,7 @@ in
]; ];
map = ( map = (
lib.attrsets.recursiveUpdate lib.attrsets.recursiveUpdate
({ {
normal = normal =
{ {
"${main} Q" = "close"; "${main} Q" = "close";
@ -113,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";
@ -124,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";
@ -185,7 +193,7 @@ in
]) tags ]) tags
) )
); );
}) }
( (
builtins.listToAttrs ( builtins.listToAttrs (
map (mode: { map (mode: {
@ -230,6 +238,7 @@ in
"-app-id" = { "-app-id" = {
"'bar'" = "csd"; "'bar'" = "csd";
"'*'" = "ssd"; "'*'" = "ssd";
"'wpa_gui'" = "float";
}; };
}; };
}; };

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

View File

@ -14,5 +14,9 @@ in
enable = mkEnableOption "obsidian"; enable = mkEnableOption "obsidian";
}; };
config = mkIf cfg.enable { home.packages = with pkgs; [ obsidian ]; }; config = mkIf cfg.enable {
modules.unfree.allowedPackages = [ "obsidian" ];
home.packages = with pkgs; [ obsidian ];
};
} }

View File

@ -22,7 +22,6 @@ in
enable = true; enable = true;
settings = { settings = {
base_url = "https://keys.bulthuis.dev"; base_url = "https://keys.bulthuis.dev";
identity_url = "https://keys.bulthuis.dev";
email = "jan@bulthuis.dev"; email = "jan@bulthuis.dev";
pinentry = pkgs.pinentry; pinentry = pkgs.pinentry;
}; };

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

@ -32,7 +32,13 @@ in
enable = true; enable = true;
mutableExtensionsDir = false; mutableExtensionsDir = false;
extensions = with pkgs.vscode-extensions; [ eamodio.gitlens ]; extensions = with pkgs.vscode-extensions; [
eamodio.gitlens
ms-vscode.hexeditor
mkhl.direnv
usernamehw.errorlens
gruntfuggly.todo-tree
];
userSettings = { userSettings = {
# Font setup # Font setup

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

@ -6,20 +6,6 @@
}: }:
with lib; with lib;
# let
# mkPackage = path: (mkOption {
# type = types.package;
# default = (pkgs.callPackage path) {};
# description = (mkPackage path).default.name;
# });
# in {
# options.pkgs = {
# # Add all custom packages
# wqy-zenhei = mkPackage ./fonts/wqy-zenhei.nix;
# wqy-microhei = mkPackage ./fonts/wqy-microhei.nix;
# wqy-bitmapsong = mkPackage ./fonts/wqy-bitmapsong.nix;
# };
# }
{ {
nixpkgs.config.packageOverrides = pkgs: rec { nixpkgs.config.packageOverrides = pkgs: rec {
wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix { }; wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix { };

20
pkgs/river/owm.nix Normal file
View File

@ -0,0 +1,20 @@
{
lib,
config,
pkgs,
...
}:
pkgs.rustPlatform.buildRustPackage rec {
pname = "owm";
version = "0.1.0";
src = pkgs.fetchFromGitHub {
owner = "justinlovinger";
repo = pname;
rev = "master";
sha256 = "sha256-l9usg0XGtghCX8elvjExYJgMuMGeujOoS2n1hCQkN78=";
};
cargoSha256 = "";
}

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 = {
@ -34,8 +38,11 @@
}; };
neovim.enable = true; neovim.enable = true;
rofi-rbw.enable = true; rofi-rbw.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;
@ -57,11 +64,25 @@
fonts.extraFonts = [ ]; fonts.extraFonts = [ ];
# Color scheme # Color scheme
themes.catppuccin = { themes.oxocarbon = {
enable = false; enable = false;
flavor = "latte"; darkMode = false;
}; };
themes.sakura.enable = true; themes.catppuccin = {
enable = true;
flavor = "mocha";
};
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