diff --git a/home/home.nix b/home/home.nix index 7156011..4795865 100644 --- a/home/home.nix +++ b/home/home.nix @@ -1,41 +1,55 @@ { config, pkgs, ... }: - { home = { username = "hms"; homeDirectory = "/home/hms"; # Packages - packages = with pkgs; [ - # Utilities - xz - zip - unzip - ripgrep - tealdeer - zoxide - just + packages = + with pkgs; + [ + # Utilities + xz + zip + unzip + ripgrep + tealdeer + zoxide + just + gnome-tweaks + protonmail-bridge-gui + xclip + adw-gtk3 + nerd-fonts.adwaita-mono - # Applications - blackbox-terminal - zotero - zulip - discord - signal-desktop - gapless - protonmail-bridge-gui - newsflash - gnome-solanum + # Applications + blackbox-terminal + zotero + zulip + discord + signal-desktop + gapless + newsflash + gnome-solanum - # Development - ## Typst, LaTeX - tinymist - texliveFull + # Development + ## Typst, LaTeX + tinymist + texliveFull - ## Nix - nixfmt-rfc-style - nil - ]; + ## Nix + nixfmt-rfc-style + nil + ] + ++ (with gnomeExtensions; [ + blur-my-shell + clipboard-indicator + rounded-window-corners-reborn + runcat + caffeine + launch-new-instance + light-style + ]); # Bash configuration shell.enableBashIntegration = true; @@ -62,98 +76,97 @@ stateVersion = "25.11"; }; - programs = { - home-manager.enable = true; + programs.home-manager.enable = true; + programs.taskwarrior = { + enable = true; + dataLocation = "${config.home.homeDirectory}/.local/share/task"; + colorTheme = "light-256"; + config.editor = "hx"; + }; - taskwarrior = { - enable = true; - dataLocation = "${config.home.homeDirectory}/.local/share/task"; - colorTheme = "light-256"; - config.editor = "hx"; + # Helix configuration + programs.helix = { + enable = true; + defaultEditor = true; + 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 - helix = { - enable = true; - defaultEditor = true; + programs.firefox.enable = true; + programs.librewolf = { + enable = true; + profiles.default = { + name = "Default"; 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"; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "svg.context-properties.content.enabled" = true; + "gnomeTheme.hideSingleTab" = true; }; - }; - - jujutsu = { - 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 + userChrome = '' + @import "librewolf-gnome-theme/userChrome.css"; + @import "librewolf-gnome-theme/theme/colors/dark.css"; ''; }; + }; - gpg.enable = true; - - zoxide = { - enable = true; - enableBashIntegration = true; - options = [ "--cmd cd" ]; + programs.bat.enable = true; + programs.git = { + enable = true; + settings = { + user = { + email = "henri.saudubray@proton.me"; + name = "Henri Saudubray"; + }; + init.defaultBranch = "main"; }; - - direnv = { - enable = true; - enableBashIntegration = true; - nix-direnv.enable = true; + signing = { + format = "openpgp"; + signByDefault = true; + key = "0x7065F57ED8856128"; }; }; + 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 = { enable = true; # createDirectories = true; @@ -167,6 +180,7 @@ videos = "${config.home.homeDirectory}/vid"; }; + ## FIXME: Find an alternative. # systemd.user.services.helix-theme = { # Unit = { # Description = "Helix System Colour Scheme Synchronisation Service"; @@ -181,9 +195,7 @@ # ExecStart = # let # update-script = pkgs.writeShellScript "helix-theme-update" '' - # #!/bin/sh # set -eu -o pipefail - # if [ "$1" = "default" ]; then # sed -i 's/theme = ".*"/theme = "adwaita-light"/' \ # $HOME/.config/helix/config.toml @@ -191,12 +203,10 @@ # sed -i 's/theme = ".*"/theme = "adwaita-dark"/' \ # $HOME/.config/helix/config.toml # fi - # killall -s SIGUSR1 hx # ''; # in # "${pkgs.writeShellScript "helix-theme-monitor" '' - # #!/bin/sh # gsettings monitor org.gnome.desktop.interface color-scheme \ # | xargs -L1 bash -c "source ${update-script}" # ''}"; @@ -204,8 +214,52 @@ # }; dconf.settings = { - "org/gnome/TextEditor" = { - keybindings = "vim"; + "org/gnome/TextEditor".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 = [ "grave" ]; + # switch-applications-backwards = [ "grave" ]; + # switch-windows = [ "Tab" ]; + # switch-windows-backwards = [ "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 = "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 = "d"; + # }; }; } diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 218dd49..7380dfc 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -1,23 +1,18 @@ { pkgs, ... }: - { - imports = [ - ./hardware-configuration.nix - ]; + imports = [ ./hardware-configuration.nix ]; # Use flakes. nix.settings.experimental-features = "nix-command flakes"; # Bootloader. - boot = { - loader = { - systemd-boot.enable = 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.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; }; + 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 = { hostName = "nixos"; @@ -28,48 +23,42 @@ time.timeZone = "Europe/Paris"; # Select internationalisation properties. - i18n = { - defaultLocale = "en_GB.UTF-8"; - extraLocaleSettings = { - LC_ADDRESS = "fr_FR.UTF-8"; - LC_IDENTIFICATION = "fr_FR.UTF-8"; - LC_MEASUREMENT = "fr_FR.UTF-8"; - LC_MONETARY = "fr_FR.UTF-8"; - LC_NAME = "fr_FR.UTF-8"; - LC_NUMERIC = "fr_FR.UTF-8"; - LC_PAPER = "fr_FR.UTF-8"; - LC_TELEPHONE = "fr_FR.UTF-8"; - LC_TIME = "fr_FR.UTF-8"; - }; + i18n.defaultLocale = "en_GB.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "fr_FR.UTF-8"; + LC_IDENTIFICATION = "fr_FR.UTF-8"; + LC_MEASUREMENT = "fr_FR.UTF-8"; + LC_MONETARY = "fr_FR.UTF-8"; + LC_NAME = "fr_FR.UTF-8"; + LC_NUMERIC = "fr_FR.UTF-8"; + LC_PAPER = "fr_FR.UTF-8"; + LC_TELEPHONE = "fr_FR.UTF-8"; + LC_TIME = "fr_FR.UTF-8"; }; - services = { - xserver = { - # Use X11. - enable = true; - # Set keyboard layout in X11. - xkb = { - layout = "fr"; - variant = "ergol"; - }; - }; - # Use GNOME. - displayManager.gdm.enable = true; - desktopManager.gnome.enable = true; - # Use CUPS for 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; + services.xserver = { + # Use X11. + enable = true; + # Set keyboard layout in X11. + xkb.layout = "fr"; + xkb.variant = "ergol"; }; + # Use GNOME. + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; + + services.gnome.gnome-browser-connector.enable = true; + # Use CUPS for 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. console.keyMap = "fr"; @@ -85,8 +74,6 @@ packages = [ ]; }; - programs.firefox.enable = true; - nixpkgs = { overlays = [ ]; config.allowUnfree = true; @@ -95,19 +82,8 @@ environment.systemPackages = with pkgs; [ helix 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 clang - just - xclip ]; programs.gnupg.agent = {