From e57625aa92022e1ba40fde5c8a40954948808cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20D=C3=B6nszelmann?= Date: Wed, 10 Jul 2024 16:32:37 +0200 Subject: [PATCH] add ori home config --- flake.nix | 60 +++++---- hosts/ori/home.nix | 47 +++++++ programs/gnome/default.nix | 242 +++++++++++++++++++++++++++++++++++++ 3 files changed, 317 insertions(+), 32 deletions(-) create mode 100644 hosts/ori/home.nix create mode 100644 programs/gnome/default.nix diff --git a/flake.nix b/flake.nix index b3c2c44..40d42b1 100644 --- a/flake.nix +++ b/flake.nix @@ -17,56 +17,52 @@ outputs = { self, home-manager, nixpkgs, flake-utils, nixvim, t }: let - homeManagerModules = [ - nixvim.homeManagerModules.nixvim - ]; + homeManagerModules = [ nixvim.homeManagerModules.nixvim ]; pkgsForSystem = system: import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ - (final: prev: { - custom = { - t = t.packages.${system}.default; - }; - }) + (final: prev: { custom = { t = t.packages.${system}.default; }; }) ]; }; mkHomeConfiguration = root: args: home-manager.lib.homeManagerConfiguration ({ - modules = [ root ] ++ homeManagerModules - ++ (args.modules or [ ]); + modules = [ root ] ++ homeManagerModules ++ (args.modules or [ ]); pkgs = pkgsForSystem (args.system or "x86_64-linux"); } // { inherit (args) extraSpecialArgs; }); - in - flake-utils.lib.eachDefaultSystem - (system: rec { - formatter = legacyPackages.nixfmt; - legacyPackages = pkgsForSystem system; - pkgs = legacyPackages; - devShells.default = pkgs.mkShell { - buildInputs = with pkgs; [ - (pkgs.writeShellScriptBin "fast-repl" '' - source /etc/set-environment - nix repl --file "${./.}/repl.nix" $@ - '') + in flake-utils.lib.eachDefaultSystem (system: rec { + formatter = legacyPackages.nixfmt; + legacyPackages = pkgsForSystem system; + pkgs = legacyPackages; + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + (pkgs.writeShellScriptBin "fast-repl" '' + source /etc/set-environment + nix repl --file "${./.}/repl.nix" $@ + '') - (pkgs.writeShellScriptBin "apply-home" '' - nix run .#home-manager -- switch --flake .#$@ - '') + (pkgs.writeShellScriptBin "apply-home" '' + nix run .#home-manager -- switch --flake .#$@ + '') - (pkgs.writeShellScriptBin "apply" '' - apply-home $(hostname -f) - '') - ]; - }; - }) // { + (pkgs.writeShellScriptBin "apply" '' + apply-home $(hostname -f) + '') + ]; + }; + }) // { homeConfigurations = { - kili = mkHomeConfiguration (import ./hosts/kili/home.nix) { extraSpecialArgs = { }; }; + kili = mkHomeConfiguration (import ./hosts/kili/home.nix) { + extraSpecialArgs = { }; + }; + ori = mkHomeConfiguration (import ./hosts/ori/home.nix) { + extraSpecialArgs = { }; + }; }; inherit home-manager; diff --git a/hosts/ori/home.nix b/hosts/ori/home.nix new file mode 100644 index 0000000..c76006b --- /dev/null +++ b/hosts/ori/home.nix @@ -0,0 +1,47 @@ +{ ... }: { + home.stateVersion = "24.05"; + home.username = "jonathan"; + home.homeDirectory = "/home/jonathan"; + imports = [ ./gnome.nix ]; + + home.packages = with pkgs; [ + element-desktop + atuin + discord-canary + comma + (python3.withPackages (pip: with pip; [ numpy matplotlib ])) + spotify + firefox + syncthing + nixfmt + xdg-utils + # to copy from the command line (my zsh config has an alias `clip` to pipe things to the clipboard) + wl-clipboard-rs + prismlauncher + graphviz-nox + + jetbrains.rust-rover + + libreoffice + ]; + + programs.firefox = { enable = true; }; + + services.syncthing = { enable = true; }; + + programs.git = { + enable = true; + extraConfig = { + init.defaultBranch = "main"; + pull.rebase = false; + # merge.tool = "meld"; + # mergetool.meld.cmd = '' + # ${pkgs.meld}/bin/meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED" + # ''; + push = { autoSetupRemote = true; }; + }; + aliases = { amend = "commit --amend"; }; + userName = "Jonathan Dönszelmann"; + userEmail = "jonathan@donsz.nl"; + }; +} diff --git a/programs/gnome/default.nix b/programs/gnome/default.nix new file mode 100644 index 0000000..1e9103d --- /dev/null +++ b/programs/gnome/default.nix @@ -0,0 +1,242 @@ +{ pkgs, lib, ... }: +let + unbound = [ "@as []" ]; + custom-keys = [ + { + binding = "Return"; + command = "gnome-terminal"; + name = "Launch terminal"; + } + { + binding = "z"; + command = "gnome-system-monitor"; + name = "launch system monitor"; + } + { + binding = "Return"; + command = "gnome-terminal"; + name = "focus-terminal"; + } + { + binding = "F12"; + command = "gnome-terminal -- ${((import ../zsh/scripts.nix) pkgs).calc}"; + name = "calculator"; + } + ]; +in { + dconf = { + enable = true; + + settings = { + "org/gnome/shell" = { + # pinned app bar + favorite-apps = [ + "firefox.desktop" + "org.gnome.Nautilus.desktop" + "org.gnome.Settings.desktop" + "org.gnome.Terminal.desktop" + "jetbrains-clion-ec2b1366-55e3-4ecc-8780-ab6c7542eb56.desktop" + "discord-canary.desktop" + "io.element.Element.desktop" + "mattermost-desktop.desktop" + "org.mozilla.Thunderbird.desktop" + "spotify.desktop" + ]; + disable-user-extensions = false; + enabled-extensions = [ + "horizontal-workspaces@gnome-shell-extensions.gcampax.github.com" + "org.gnome-shell.desktop-icons" + "auto-move-windows@gnome-shell-extensions.gcampax.github.com" + ]; + }; + + "org/gnome/desktop/background" = rec { + # picture-uri ="file:///${home.homeDirectory}/Pictures/backgrounds/2023-09-01-14-56-45-Road-saturated.png"; + # picture-uri-dark = picture-uri; + }; + + "org/gnome/desktop/input-sources" = { + per-window = false; + show-all-sources = false; + sources = [ "('xkb', 'us')" ]; + xkb-options = + [ "lv3:switch" "caps:escape" "eurosign:4" "compose:ralt" ]; + }; + + "org/gnome/desktop/interface" = { + clock-show-seconds = true; + clock-show-weekday = true; + color-scheme = "prefer-dark"; + cursor-theme = "Adwaita"; + enable-animations = true; + enable-hot-corners = true; + font-name = "Noto Sans, 10"; + }; + + "org/gnome/desktop/peripherals/mouse" = { + accel-profile = "adaptive"; + natural-scroll = false; + }; + + "org/gnome/desktop/peripherals/touchpad" = { + click-method = "fingers"; + disable-while-typing = false; + edge-scrolling-enabled = false; + natural-scroll = false; + send-events = "enabled"; + speed = 0.536764705882353; + tap-to-click = true; + two-finger-scrolling-enabled = true; + }; + "org/gnome/desktop/sound" = { + allow-volume-above-100-percent = true; + event-sounds = true; + }; + + "org/gnome/desktop/wm/keybindings" = { + begin-move = unbound; + begin-resize = unbound; + close = [ "q" ]; + lower = unbound; + maximize = unbound; + minimize = [ "w" ]; + move-to-monitor-down = [ "Down" ]; + move-to-monitor-left = [ "Left" ]; + move-to-monitor-right = [ "Right" ]; + move-to-monitor-up = [ "Up" ]; + move-to-workspace-1 = [ "exclam" ]; + move-to-workspace-2 = [ "at" ]; + move-to-workspace-3 = [ "numbersign" ]; + move-to-workspace-4 = [ "dollar" ]; + move-to-workspace-5 = [ "percent" ]; + move-to-workspace-6 = [ "asciicircum" ]; + panel-main-menu = [ "" ]; + raise-or-lower = [ "s" ]; + switch-applications = [ "Tab" ]; + switch-applications-backward = [ "Tab" ]; + switch-input-source = unbound; + switch-input-source-backward = unbound; + switch-to-workspace-1 = [ "1" ]; + switch-to-workspace-2 = [ "2" ]; + switch-to-workspace-3 = [ "3" ]; + switch-to-workspace-4 = [ "4" ]; + switch-to-workspace-5 = [ "5" ]; + switch-to-workspace-6 = [ "6" ]; + switch-to-workspace-down = [ "j" ]; + switch-to-workspace-last = [ "0" ]; + switch-to-workspace-up = [ "k" ]; + switch-windows = unbound; + switch-windows-backward = unbound; + toggle-fullscreen = [ "f" ]; + toggle-maximized = [ "d" ]; + unmaximize = unbound; + }; + + "org/gnome/desktop/wm/preferences" = { + auto-raise = false; + button-layout = ":,maximize,minimize,close"; + focus-mode = "click"; + mouse-button-modifier = ""; + num-workspaces = 6; + resize-with-right-button = false; + visual-bell = false; + }; + + "org/gnome/mutter" = { + center-new-windows = true; + dynamic-workspaces = false; + edge-tiling = true; + experimental-features = [ "scale-monitor-framebuffer" ]; + overlay-key = "Super_L"; + workspaces-only-on-primary = true; + }; + + "org/gnome/mutter/keybindings" = { + switch-monitor = [ "o" ]; + toggle-tiled-left = [ "bracketleft" ]; + toggle-tiled-right = [ "bracketright" ]; + }; + + "org/gnome/settings-daemon/plugins/media-keys" = { + area-screenshot = unbound; + area-screenshot-clip = [ "s" ]; + custom-keybindings = with builtins; + (map (i: + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${ + toString (i - 1) + }/") (genList (x: x + 1) (length custom-keys))); + email = [ "Display" ]; + home = [ "e" ]; + mic-mute = [ "AudioMicMute" ]; + next = [ "period" ]; + on-screen-keyboard = unbound; + pause = unbound; + play = [ "slash" ]; + previous = [ "comma" ]; + screensaver = [ "l" ]; + screenshot = unbound; + screenshot-clip = unbound; + stop = unbound; + volume-down = [ "AudioLowerVolume" ]; + volume-mute = [ "AudioMute" ]; + volume-up = [ "AudioRaiseVolume" ]; + window-screenshot = unbound; + window-screenshot-clip = unbound; + }; + + "org/gnome/settings-daemon/plugins/power" = { + ambient-enabled = false; + idle-dim = false; + power-button-action = "nothing"; + power-saver-profile-on-low-battery = true; + sleep-inactive-ac-timeout = 7200; + sleep-inactive-ac-type = "nothing"; + sleep-inactive-battery-timeout = 7200; + sleep-inactive-battery-type = "suspend"; + }; + "org/gnome/shell/extensions/auto-move-windows" = { + application-list = [ + "firefox.desktop:1" + "discord.desktop:3" + "jetbrains-clion.desktop:2" + "jetbrains-goland.desktop:2" + "jetbrains-pycharm.desktop:2" + "jetbrains-idea.desktop:2" + "spotify.desktop:5" + ]; + }; + + "org/gnome/shell/keybindings" = { + open-application-menu = [ "Menu" ]; + show-screenshot-ui = [ "s" ]; + switch-to-application-1 = unbound; + switch-to-application-2 = unbound; + switch-to-application-3 = unbound; + switch-to-application-4 = unbound; + switch-to-application-5 = unbound; + switch-to-application-6 = unbound; + switch-to-application-7 = unbound; + switch-to-application-8 = unbound; + switch-to-application-9 = unbound; + toggle-message-tray = unbound; + toggle-overview = [ "p" ]; + }; + + "org/gnome/terminal/legacy" = { + menu-accelerator-enabled = false; + mnemonics-enabled = true; + new-terminal-mode = "window"; + shortcuts-enabled = true; + theme-variant = "dark"; + }; + + "org/gnome/terminal/legacy/keybindings" = { zoom-in = "equal"; }; + } // (with builtins; + foldl' (a: b: a // b) { } (map (i: { + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${ + toString (i - 1) + }" = elemAt custom-keys (i - 1); + }) (genList (x: x + 1) (length custom-keys)))); + }; +} +