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
modules = {
base.enable = true;
bluetooth.enable = true;
power-saving.enable = false;
pipewire.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 = [
# Import modules
./base/default.nix
./bluetooth/default.nix
./boot/clean-tmp.nix
./boot/silent-boot.nix
./boot/systemd-boot.nix

View File

@ -8,7 +8,12 @@
with lib;
let
# 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 = 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 {
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 = {
enable = true;

View File

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

View File

@ -5,7 +5,7 @@ precision mediump float;
uniform float time;
uniform vec2 resolution;
#define iTime time * 0.01 + 10.0
#define iTime time * 0.05 + 50.0
#define iResolution resolution
#define fragCoord gl_FragCoord
#define fragColor gl_FragColor
@ -105,4 +105,4 @@ void main()
vec2 uv = fragCoord.xy/iResolution.x;
float shade = pattern(uv);
fragColor = vec4(colormap(shade).rgb, shade);
}
}

View File

@ -20,6 +20,7 @@ in
home.packages = with pkgs; [
pulsemixer
playerctl
wpa_supplicant_gui # TODO: Move
];
programs.waybar = {
@ -34,6 +35,8 @@ in
"mpris"
];
modules-right = [
"bluetooth"
"network"
"pulseaudio"
"battery"
"clock"
@ -55,6 +58,13 @@ in
];
disable-click = false;
};
network = {
tooltip = false;
on-click = "wpa_gui";
format-wifi = " {essid}"; # Spacing achieved using "Thin Space"
format-ethernet = "TODO";
format-disconnected = "";
};
pulseaudio = {
tooltip = false;
format = "{icon}{volume}%"; # Spacing achieved using "Thin Space"
@ -101,6 +111,11 @@ in
tooltip-format = "";
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
@ -124,7 +139,7 @@ in
padding: 0 5px 1px 5px;
border-radius: 0;
font-size: 16px;
font-family: "Unifont";
font-family: "wenquanyi bitmap song";
}
#tags button.occupied {

View File

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

View File

@ -22,27 +22,34 @@ in
# TODO: Move elsewhere and make keybindings more configurable
modules.rofi.enable = true;
# TODO: Move elsewhere
home.packages = with pkgs; [
brightnessctl
river-filtile
# owm
];
# Change desktop to execute river
modules.desktop.initScript = ''
river
'';
# Update background after rebuild
home.activation = {
river = lib.hm.dag.entryBetween [ "reloadSystemd" ] [ "installPackages" ] ''
# Close waybar
PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill waybar
# home.activation = {
# river = lib.hm.dag.entryBetween [ "reloadSystemd" ] [ "installPackages" ] ''
# # Close waybar
# PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill waybar
# Kill rivertile
PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill rivertile
# # Kill rivertile
# PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill rivertile
# Kill glpaper
PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill glpaper
# # Kill glpaper
# PATH="${pkgs.procps}/bin:$PATH" $DRY_RUN_CMD pkill glpaper
# Restart river
PATH="${pkgs.river}/bin:${pkgs.systemd}/bin:$PATH" $DRY_RUN_CMD ~/.config/river/init
'';
};
# # Restart river
# PATH="${pkgs.river}/bin:${pkgs.systemd}/bin:${pkgs.waybar}/bin:$PATH" $DRY_RUN_CMD ~/.config/river/init
# '';
# };
# River setup
wayland.windowManager.river = {
@ -50,7 +57,7 @@ in
xwayland.enable = true;
settings =
let
layout = "rivertile";
layout = "filtile";
layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}";
modes = [
"normal"
@ -102,7 +109,7 @@ in
];
map = (
lib.attrsets.recursiveUpdate
({
{
normal =
{
"${main} Q" = "close";
@ -113,6 +120,7 @@ in
"${ssm} Return" = "spawn foot";
"${main} P" = "spawn \"rofi -show drun\"";
"${ssm} P" = "spawn rofi-rbw";
"${main} S" = "spawn \"grim -g \\\"\\\$(slurp)\\\" ~/Images/Screenshots/\\\$(date +'%s_grim.png')\"";
# Window focus
"${main} J" = "focus-view next";
@ -124,22 +132,22 @@ in
"${main} Return" = "zoom";
# Main ratio
"${main} H" = "send-layout-cmd rivertile 'main-ratio -0.05'";
"${main} L" = "send-layout-cmd rivertile 'main-ratio +0.05'";
"${main} H" = "send-layout-cmd ${layout} 'main-ratio -0.05'";
"${main} L" = "send-layout-cmd ${layout} 'main-ratio +0.05'";
# Main count
"${ssm} H" = "send-layout-cmd rivertile 'main-count +1'";
"${ssm} L" = "send-layout-cmd rivertile 'main-count -1'";
"${ssm} H" = "send-layout-cmd ${layout} 'main-count +1'";
"${ssm} L" = "send-layout-cmd ${layout} 'main-count -1'";
# Tags
"${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}";
"${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}";
# Orientation
"${main} Up" = "send-layout-cmd rivertile \"main-location top\"";
"${main} Right" = "send-layout-cmd rivertile \"main-location right\"";
"${main} Down" = "send-layout-cmd rivertile \"main-location bottom\"";
"${main} Left" = "send-layout-cmd rivertile \"main-location left\"";
"${main} Up" = "send-layout-cmd ${layout} \"main-location top\"";
"${main} Right" = "send-layout-cmd ${layout} \"main-location right\"";
"${main} Down" = "send-layout-cmd ${layout} \"main-location bottom\"";
"${main} Left" = "send-layout-cmd ${layout} \"main-location left\"";
# Move floating windows
"${sam} H" = "move left 100";
@ -185,7 +193,7 @@ in
]) tags
)
);
})
}
(
builtins.listToAttrs (
map (mode: {
@ -230,6 +238,7 @@ in
"-app-id" = {
"'bar'" = "csd";
"'*'" = "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 {
# Development packages
home.packages = with pkgs; [
rustc
cargo
rust-analyzer
rustfmt
rustup
# rustc
# cargo
gcc
lldb
# rust-analyzer
# rustfmt
# clippy
];
# VSCode configuration
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 = {
"[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";
};
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;
settings = {
base_url = "https://keys.bulthuis.dev";
identity_url = "https://keys.bulthuis.dev";
email = "jan@bulthuis.dev";
pinentry = pkgs.pinentry;
};

View File

@ -101,6 +101,8 @@ in
# Import all themes
./themes/catppuccin.nix
./themes/gruvbox.nix
./themes/oxocarbon.nix
./themes/papercolor.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;
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 = {
# 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;
# 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 {
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
home.stateVersion = "24.05";
# TODO: Move into modules
home.packages = with pkgs; [ libreoffice-fresh ];
# Enabled modules
modules = {
# Window manager
@ -26,6 +29,7 @@
vscode.enable = true;
zathura.enable = true;
fish.enable = true;
whatsapp.enable = true;
winbox.enable = true;
discord.enable = true;
qutebrowser = {
@ -34,8 +38,11 @@
};
neovim.enable = true;
rofi-rbw.enable = true;
obsidian.enable = true;
bluetuith.enable = true;
# Programming languages
haskell.enable = true;
nix.enable = true;
rust.enable = true;
@ -57,11 +64,25 @@
fonts.extraFonts = [ ];
# Color scheme
themes.catppuccin = {
themes.oxocarbon = {
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