feat (home): formatting, dconf, librewolf

This commit is contained in:
Henri Saudubray 2026-01-20 15:10:55 +01:00
parent 215ecdf804
commit d5e56333bc
2 changed files with 208 additions and 178 deletions

View file

@ -1,41 +1,55 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
home = { home = {
username = "hms"; username = "hms";
homeDirectory = "/home/hms"; homeDirectory = "/home/hms";
# Packages # Packages
packages = with pkgs; [ packages =
# Utilities with pkgs;
xz [
zip # Utilities
unzip xz
ripgrep zip
tealdeer unzip
zoxide ripgrep
just tealdeer
zoxide
just
gnome-tweaks
protonmail-bridge-gui
xclip
adw-gtk3
nerd-fonts.adwaita-mono
# Applications # Applications
blackbox-terminal blackbox-terminal
zotero zotero
zulip zulip
discord discord
signal-desktop signal-desktop
gapless gapless
protonmail-bridge-gui newsflash
newsflash gnome-solanum
gnome-solanum
# Development # Development
## Typst, LaTeX ## Typst, LaTeX
tinymist tinymist
texliveFull texliveFull
## Nix ## Nix
nixfmt-rfc-style nixfmt-rfc-style
nil nil
]; ]
++ (with gnomeExtensions; [
blur-my-shell
clipboard-indicator
rounded-window-corners-reborn
runcat
caffeine
launch-new-instance
light-style
]);
# Bash configuration # Bash configuration
shell.enableBashIntegration = true; shell.enableBashIntegration = true;
@ -62,98 +76,97 @@
stateVersion = "25.11"; stateVersion = "25.11";
}; };
programs = { programs.home-manager.enable = true;
home-manager.enable = true; programs.taskwarrior = {
enable = true;
dataLocation = "${config.home.homeDirectory}/.local/share/task";
colorTheme = "light-256";
config.editor = "hx";
};
taskwarrior = { # Helix configuration
enable = true; programs.helix = {
dataLocation = "${config.home.homeDirectory}/.local/share/task"; enable = true;
colorTheme = "light-256"; defaultEditor = true;
config.editor = "hx"; settings = {
theme = "adwaita-light";
editor = {
lsp.display-messages = true;
inline-diagnostics.cursor-line = "hint";
rulers = [ 81 ];
gutters.layout = [ "diagnostics" ];
};
keys.insert.j.k = "normal_mode";
}; };
};
programs.jujutsu = {
enable = true;
settings = {
user = {
name = "Henri Saudubray";
email = "henri.saudubray@proton.me";
};
ui.default-command = "log";
};
};
# Helix configuration programs.firefox.enable = true;
helix = { programs.librewolf = {
enable = true; enable = true;
defaultEditor = true; profiles.default = {
name = "Default";
settings = { settings = {
theme = "adwaita-light"; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
editor = { "svg.context-properties.content.enabled" = true;
lsp.display-messages = true; "gnomeTheme.hideSingleTab" = true;
inline-diagnostics.cursor-line = "hint";
rulers = [ 81 ];
gutters.layout = [ "diagnostics" ];
};
keys.insert.j.k = "normal_mode";
}; };
}; userChrome = ''
@import "librewolf-gnome-theme/userChrome.css";
jujutsu = { @import "librewolf-gnome-theme/theme/colors/dark.css";
enable = true;
settings = {
user = {
name = "Henri Saudubray";
email = "henri.saudubray@proton.me";
};
ui.default-command = "log";
};
};
firefox = {
enable = true;
profiles.default = {
name = "Default";
settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"gnomeTheme.hideSingleTab" = true;
};
userChrome = ''
@import "firefox-gnome-theme/userChrome.css";
@import "firefox-gnome-theme/theme/colors/dark.css";
'';
};
};
bat.enable = true;
git = {
enable = true;
settings = {
user = {
email = "henri.saudubray@proton.me";
name = "Henri Saudubray";
};
init.defaultBranch = "main";
};
signing.format = "openpgp";
};
bash = {
enable = true;
bashrcExtra = ''
export PS1=" \W \[\e[33m\]λ\[\e[0m\] "
task ls
if [ "$(ls -A ~/dwn)" ]; then echo "TODO: organize downloads."; fi
''; '';
}; };
};
gpg.enable = true; programs.bat.enable = true;
programs.git = {
zoxide = { enable = true;
enable = true; settings = {
enableBashIntegration = true; user = {
options = [ "--cmd cd" ]; email = "henri.saudubray@proton.me";
name = "Henri Saudubray";
};
init.defaultBranch = "main";
}; };
signing = {
direnv = { format = "openpgp";
enable = true; signByDefault = true;
enableBashIntegration = true; key = "0x7065F57ED8856128";
nix-direnv.enable = true;
}; };
}; };
programs.bash = {
enable = true;
bashrcExtra = ''
export PS1=" \W \[\e[33m\]λ\[\e[0m\] "
task ls
if [ "$(ls -A ~/dwn)" ]; then echo "TODO: organize downloads."; fi
'';
};
programs.gpg.enable = true;
programs.zoxide = {
enable = true;
enableBashIntegration = true;
options = [ "--cmd cd" ];
};
programs.direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
};
xdg.userDirs = { xdg.userDirs = {
enable = true; enable = true;
# createDirectories = true; # createDirectories = true;
@ -167,6 +180,7 @@
videos = "${config.home.homeDirectory}/vid"; videos = "${config.home.homeDirectory}/vid";
}; };
## FIXME: Find an alternative.
# systemd.user.services.helix-theme = { # systemd.user.services.helix-theme = {
# Unit = { # Unit = {
# Description = "Helix System Colour Scheme Synchronisation Service"; # Description = "Helix System Colour Scheme Synchronisation Service";
@ -181,9 +195,7 @@
# ExecStart = # ExecStart =
# let # let
# update-script = pkgs.writeShellScript "helix-theme-update" '' # update-script = pkgs.writeShellScript "helix-theme-update" ''
# #!/bin/sh
# set -eu -o pipefail # set -eu -o pipefail
# if [ "$1" = "default" ]; then # if [ "$1" = "default" ]; then
# sed -i 's/theme = ".*"/theme = "adwaita-light"/' \ # sed -i 's/theme = ".*"/theme = "adwaita-light"/' \
# $HOME/.config/helix/config.toml # $HOME/.config/helix/config.toml
@ -191,12 +203,10 @@
# sed -i 's/theme = ".*"/theme = "adwaita-dark"/' \ # sed -i 's/theme = ".*"/theme = "adwaita-dark"/' \
# $HOME/.config/helix/config.toml # $HOME/.config/helix/config.toml
# fi # fi
# killall -s SIGUSR1 hx # killall -s SIGUSR1 hx
# ''; # '';
# in # in
# "${pkgs.writeShellScript "helix-theme-monitor" '' # "${pkgs.writeShellScript "helix-theme-monitor" ''
# #!/bin/sh
# gsettings monitor org.gnome.desktop.interface color-scheme \ # gsettings monitor org.gnome.desktop.interface color-scheme \
# | xargs -L1 bash -c "source ${update-script}" # | xargs -L1 bash -c "source ${update-script}"
# ''}"; # ''}";
@ -204,8 +214,52 @@
# }; # };
dconf.settings = { dconf.settings = {
"org/gnome/TextEditor" = { "org/gnome/TextEditor".keybindings = "vim";
keybindings = "vim"; "org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = [
"clipboard-indicator@tudmotu.com"
"rounded-window-corners@fxgn"
"runcat@kolesnikov.se"
"caffeine@patapon.info"
"launch-new-instance@gnome-shell-extensions.gcampax.github.com"
];
}; };
"org/gnome/desktop/interface" = {
gtk-theme = "adw-gtk3";
show-battery-percentage = true;
};
"org/gnome/desktop/wm/preferences".button-layout = "appmenu:minimize,maximize,close";
## FIXME: Figure out why this does not work.
# "org/gnome/desktop/wm/keybindings" = {
# switch-applications = [ "<Alt>grave" ];
# switch-applications-backwards = [ "<Shift><Alt>grave" ];
# switch-windows = [ "<Alt>Tab" ];
# switch-windows-backwards = [ "<Shift><Alt>Tab" ];
# };
# "org/gnome/settings-daemon/plugins/media-keys".custom-keybindings = [
# "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0"
# "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1"
# ];
# "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
# name = "Terminal";
# command = "blackbox";
# binding = "<Super>Return";
# };
# "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
# name = "Dark mode switcher";
# command = "${pkgs.writeShellScript "gnome-dark-mode-switcher" ''
# SCHEMA=org.gnome.desktop.interface
# KEY=color-scheme
# if [ "$(gsettings get "$SCHEMA" "$KEY")" = "'prefer-dark'" ]; then
# gsettings set "$SCHEMA" "$KEY" "prefer-light";
# else
# gsettings set "$SCHEMA" "$KEY" "prefer-dark";
# fi
# ''}";
# binding = "<Super>d";
# };
}; };
} }

View file

@ -1,23 +1,18 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
imports = [ imports = [ ./hardware-configuration.nix ];
./hardware-configuration.nix
];
# Use flakes. # Use flakes.
nix.settings.experimental-features = "nix-command flakes"; nix.settings.experimental-features = "nix-command flakes";
# Bootloader. # Bootloader.
boot = { boot.loader = {
loader = { systemd-boot.enable = true;
systemd-boot.enable = true; efi.canTouchEfiVariables = true;
efi.canTouchEfiVariables = true;
};
kernelPackages = pkgs.linuxPackages_latest;
initrd.luks.devices."luks-374c6259-18c4-462b-9f30-9c9648de00ae".device =
"/dev/disk/by-uuid/374c6259-18c4-462b-9f30-9c9648de00ae";
}; };
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.initrd.luks.devices."luks-374c6259-18c4-462b-9f30-9c9648de00ae".device =
"/dev/disk/by-uuid/374c6259-18c4-462b-9f30-9c9648de00ae";
networking = { networking = {
hostName = "nixos"; hostName = "nixos";
@ -28,48 +23,42 @@
time.timeZone = "Europe/Paris"; time.timeZone = "Europe/Paris";
# Select internationalisation properties. # Select internationalisation properties.
i18n = { i18n.defaultLocale = "en_GB.UTF-8";
defaultLocale = "en_GB.UTF-8"; i18n.extraLocaleSettings = {
extraLocaleSettings = { LC_ADDRESS = "fr_FR.UTF-8";
LC_ADDRESS = "fr_FR.UTF-8"; LC_IDENTIFICATION = "fr_FR.UTF-8";
LC_IDENTIFICATION = "fr_FR.UTF-8"; LC_MEASUREMENT = "fr_FR.UTF-8";
LC_MEASUREMENT = "fr_FR.UTF-8"; LC_MONETARY = "fr_FR.UTF-8";
LC_MONETARY = "fr_FR.UTF-8"; LC_NAME = "fr_FR.UTF-8";
LC_NAME = "fr_FR.UTF-8"; LC_NUMERIC = "fr_FR.UTF-8";
LC_NUMERIC = "fr_FR.UTF-8"; LC_PAPER = "fr_FR.UTF-8";
LC_PAPER = "fr_FR.UTF-8"; LC_TELEPHONE = "fr_FR.UTF-8";
LC_TELEPHONE = "fr_FR.UTF-8"; LC_TIME = "fr_FR.UTF-8";
LC_TIME = "fr_FR.UTF-8";
};
}; };
services = { services.xserver = {
xserver = { # Use X11.
# Use X11. enable = true;
enable = true; # Set keyboard layout in X11.
# Set keyboard layout in X11. xkb.layout = "fr";
xkb = { xkb.variant = "ergol";
layout = "fr";
variant = "ergol";
};
};
# Use GNOME.
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
# Use CUPSfor printing.
printing.enable = true;
# Use pipewire for audio.
pulseaudio.enable = false;
pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
};
openssh.enable = true;
}; };
# Use GNOME.
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
services.gnome.gnome-browser-connector.enable = true;
# Use CUPSfor printing.
services.printing.enable = true;
# Use pipewire for audio.
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
services.openssh.enable = true;
# Configure console keymap. # Configure console keymap.
console.keyMap = "fr"; console.keyMap = "fr";
@ -85,8 +74,6 @@
packages = [ ]; packages = [ ];
}; };
programs.firefox.enable = true;
nixpkgs = { nixpkgs = {
overlays = [ ]; overlays = [ ];
config.allowUnfree = true; config.allowUnfree = true;
@ -95,19 +82,8 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
helix helix
wget wget
gnome-tweaks
gnomeExtensions.blur-my-shell
gnomeExtensions.clipboard-indicator
gnomeExtensions.rounded-window-corners-reborn
gnomeExtensions.runcat
gnomeExtensions.caffeine
gnomeExtensions.launch-new-instance
nerd-fonts.adwaita-mono
adw-gtk3
gnumake gnumake
clang clang
just
xclip
]; ];
programs.gnupg.agent = { programs.gnupg.agent = {