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,12 +1,13 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
home = { home = {
username = "hms"; username = "hms";
homeDirectory = "/home/hms"; homeDirectory = "/home/hms";
# Packages # Packages
packages = with pkgs; [ packages =
with pkgs;
[
# Utilities # Utilities
xz xz
zip zip
@ -15,6 +16,11 @@
tealdeer tealdeer
zoxide zoxide
just just
gnome-tweaks
protonmail-bridge-gui
xclip
adw-gtk3
nerd-fonts.adwaita-mono
# Applications # Applications
blackbox-terminal blackbox-terminal
@ -23,7 +29,6 @@
discord discord
signal-desktop signal-desktop
gapless gapless
protonmail-bridge-gui
newsflash newsflash
gnome-solanum gnome-solanum
@ -35,7 +40,16 @@
## 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,10 +76,8 @@
stateVersion = "25.11"; stateVersion = "25.11";
}; };
programs = { programs.home-manager.enable = true;
home-manager.enable = true; programs.taskwarrior = {
taskwarrior = {
enable = true; enable = true;
dataLocation = "${config.home.homeDirectory}/.local/share/task"; dataLocation = "${config.home.homeDirectory}/.local/share/task";
colorTheme = "light-256"; colorTheme = "light-256";
@ -73,7 +85,7 @@
}; };
# Helix configuration # Helix configuration
helix = { programs.helix = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
settings = { settings = {
@ -87,8 +99,7 @@
keys.insert.j.k = "normal_mode"; keys.insert.j.k = "normal_mode";
}; };
}; };
programs.jujutsu = {
jujutsu = {
enable = true; enable = true;
settings = { settings = {
user = { user = {
@ -99,7 +110,8 @@
}; };
}; };
firefox = { programs.firefox.enable = true;
programs.librewolf = {
enable = true; enable = true;
profiles.default = { profiles.default = {
name = "Default"; name = "Default";
@ -109,15 +121,14 @@
"gnomeTheme.hideSingleTab" = true; "gnomeTheme.hideSingleTab" = true;
}; };
userChrome = '' userChrome = ''
@import "firefox-gnome-theme/userChrome.css"; @import "librewolf-gnome-theme/userChrome.css";
@import "firefox-gnome-theme/theme/colors/dark.css"; @import "librewolf-gnome-theme/theme/colors/dark.css";
''; '';
}; };
}; };
bat.enable = true; programs.bat.enable = true;
programs.git = {
git = {
enable = true; enable = true;
settings = { settings = {
user = { user = {
@ -126,33 +137,35 @@
}; };
init.defaultBranch = "main"; init.defaultBranch = "main";
}; };
signing.format = "openpgp"; signing = {
format = "openpgp";
signByDefault = true;
key = "0x7065F57ED8856128";
};
}; };
bash = { programs.bash = {
enable = true; enable = true;
bashrcExtra = '' bashrcExtra = ''
export PS1=" \W \[\e[33m\]λ\[\e[0m\] " export PS1=" \W \[\e[33m\]λ\[\e[0m\] "
task ls task ls
if [ "$(ls -A ~/dwn)" ]; then echo "TODO: organize downloads."; fi if [ "$(ls -A ~/dwn)" ]; then echo "TODO: organize downloads."; fi
''; '';
}; };
gpg.enable = true; programs.gpg.enable = true;
zoxide = { programs.zoxide = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;
options = [ "--cmd cd" ]; options = [ "--cmd cd" ];
}; };
direnv = { programs.direnv = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
};
xdg.userDirs = { xdg.userDirs = {
enable = true; enable = 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; boot.kernelPackages = pkgs.linuxPackages_latest;
initrd.luks.devices."luks-374c6259-18c4-462b-9f30-9c9648de00ae".device = boot.initrd.luks.devices."luks-374c6259-18c4-462b-9f30-9c9648de00ae".device =
"/dev/disk/by-uuid/374c6259-18c4-462b-9f30-9c9648de00ae"; "/dev/disk/by-uuid/374c6259-18c4-462b-9f30-9c9648de00ae";
};
networking = { networking = {
hostName = "nixos"; hostName = "nixos";
@ -28,9 +23,8 @@
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";
@ -41,35 +35,30 @@
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 = { xkb.layout = "fr";
layout = "fr"; xkb.variant = "ergol";
variant = "ergol";
};
}; };
# Use GNOME. # Use GNOME.
displayManager.gdm.enable = true; services.displayManager.gdm.enable = true;
desktopManager.gnome.enable = true; services.desktopManager.gnome.enable = true;
services.gnome.gnome-browser-connector.enable = true;
# Use CUPSfor printing. # Use CUPSfor printing.
printing.enable = true; services.printing.enable = true;
# Use pipewire for audio. # Use pipewire for audio.
pulseaudio.enable = false; services.pulseaudio.enable = false;
pipewire = { services.pipewire = {
enable = true; enable = true;
alsa = { alsa.enable = true;
enable = true; alsa.support32Bit = true;
support32Bit = true;
};
pulse.enable = true; pulse.enable = true;
}; };
openssh.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 = {