diff --git a/machines/MacBookPro12.1-configuration.nix b/machines/MacBookPro12.1-configuration.nix index f24dbd5..e5ea4a4 100644 --- a/machines/MacBookPro12.1-configuration.nix +++ b/machines/MacBookPro12.1-configuration.nix @@ -1,4 +1,3 @@ - # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ’nixos-help’). @@ -14,7 +13,9 @@ "hid_apple.swap_fn_leftctrl=1" "hid_apple.iso_layout=0" ]; - boot.kernel.sysctl = { "vm.swappiness" = 10;}; + boot.kernel.sysctl = { + "vm.swappiness" = 10; + }; # Bootloader. boot.loader.systemd-boot.enable = true; @@ -38,7 +39,10 @@ networking.networkmanager.enable = true; networking.firewall = { enable = true; - allowedTCPPorts = [ 80 443 ]; + allowedTCPPorts = [ + 80 + 443 + ]; }; # Set your time zone. @@ -76,18 +80,18 @@ ../modules/local-dev.nix ../modules/nixos.nix ]; -services.eris-server = { - enable = true; - backends = [ + services.eris-server = { + enable = true; + backends = [ "badger+file:///var/eris?put&get" # local one on /var/eris # "coap+tcp://eris.example.com:5683?get" # an online one - ]; - mountpoint = "/mnt/media/eris"; # useful to mount eris-fs folders - listenHttp = ":8080"; # or "[::1]:8080" - listenCoap = ":5683"; # or "[::1]:5683" - decode = true; # for http access via https://127.0.0.1:8080/uri-res/N2R?urn:eris:... - package = pkgs.eris-go; # default package -}; + ]; + mountpoint = "/mnt/media/eris"; # useful to mount eris-fs folders + listenHttp = ":8080"; # or "[::1]:8080" + listenCoap = ":5683"; # or "[::1]:5683" + decode = true; # for http access via https://127.0.0.1:8080/uri-res/N2R?urn:eris:... + package = pkgs.eris-go; # default package + }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It's perfectly fine and recommended to leave diff --git a/machines/MacBookPro12.1-hardware-configuration.nix b/machines/MacBookPro12.1-hardware-configuration.nix index 1c205e1..0c8b22a 100644 --- a/machines/MacBookPro12.1-hardware-configuration.nix +++ b/machines/MacBookPro12.1-hardware-configuration.nix @@ -1,15 +1,27 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/hardware/network/broadcom-43xx.nix") - (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/hardware/network/broadcom-43xx.nix") + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.blacklistedKernelModules = [ ]; @@ -17,39 +29,51 @@ #rtl8192eu ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/d56411cf-7072-48a8-aab7-70fb73695e64"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/d56411cf-7072-48a8-aab7-70fb73695e64"; + fsType = "ext4"; + }; - fileSystems."/boot/efi" = - { device = "/dev/disk/by-uuid/37E1-D07F"; - fsType = "vfat"; - }; - fileSystems."/mnt/nas/music" = - { - device = "192.168.1.2:/volume1/music"; - options = [ "nfsvers=4.2" "x-systemd.automount" "noauto" "rw" "relatime" "user" "acl" "defaults"]; - fsType = "nfs"; - }; + fileSystems."/boot/efi" = { + device = "/dev/disk/by-uuid/37E1-D07F"; + fsType = "vfat"; + }; + fileSystems."/mnt/nas/music" = { + device = "192.168.1.2:/volume1/music"; + options = [ + "nfsvers=4.2" + "x-systemd.automount" + "noauto" + "rw" + "relatime" + "user" + "acl" + "defaults" + ]; + fsType = "nfs"; + }; services.rpcbind.enable = true; # needed for NFS - systemd.mounts = [{ - type = "nfs"; - mountConfig = { - Options = "defaults,acl,user,noauto,relatime,rw"; - }; - what = "192.168.1.2:/volume1/music"; - where = "/mnt/nas/music"; - }]; + systemd.mounts = [ + { + type = "nfs"; + mountConfig = { + Options = "defaults,acl,user,noauto,relatime,rw"; + }; + what = "192.168.1.2:/volume1/music"; + where = "/mnt/nas/music"; + } + ]; - systemd.automounts = [{ - wantedBy = [ "multi-user.target" ]; - automountConfig = { - TimeoutIdleSec = "600"; - }; - where = "/mnt/nas/music"; - }]; + systemd.automounts = [ + { + wantedBy = [ "multi-user.target" ]; + automountConfig = { + TimeoutIdleSec = "600"; + }; + where = "/mnt/nas/music"; + } + ]; swapDevices = [ ]; diff --git a/modules/console.nix b/modules/console.nix index 79a1f9c..b488835 100644 --- a/modules/console.nix +++ b/modules/console.nix @@ -1,10 +1,11 @@ # cli programs should be available on servers and desktop { config, pkgs, ... }: -let - unstable = import - (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/7afa2c97ebb0585d00c64c112344483e89e00545) - # reuse the current configuration - { config = config.nixpkgs.config; }; +let + unstable = + import + (builtins.fetchTarball "https://github.com/nixos/nixpkgs/tarball/7afa2c97ebb0585d00c64c112344483e89e00545") + # reuse the current configuration + { config = config.nixpkgs.config; }; in { programs.zsh.enable = true; diff --git a/modules/desktop.nix b/modules/desktop.nix index 02830d0..82f4403 100644 --- a/modules/desktop.nix +++ b/modules/desktop.nix @@ -7,8 +7,8 @@ services = { openvpn.servers = { - arn = { - config = '' config /home/mrflos/Nextcloud/vpn\ ARN/2023/vpn510.conf ''; + arn = { + config = ''config /home/mrflos/Nextcloud/vpn\ ARN/2023/vpn510.conf ''; autoStart = false; }; }; @@ -62,25 +62,25 @@ }; droidcam.enable = true; firefox.enable = true; - firefox.languagePacks = ["fr"]; + firefox.languagePacks = [ "fr" ]; hyprland.enable = true; ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass"; # conflict between kde and gnome cf. https://github.com/NixOS/nixpkgs/issues/75867 ssh.startAgent = true; - + steam.enable = true; - + nix-ld.enable = true; # Sets up all the libraries to load nix-ld.libraries = with pkgs; [ - stdenv.cc.cc - zlib + stdenv.cc.cc + zlib ]; }; # Allow unfree packages nixpkgs.config.allowUnfree = true; - + # no kde bloat environment.plasma5.excludePackages = with pkgs.libsForQt5; [ baloo @@ -93,32 +93,33 @@ # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ - (callPackage ./sddm-rose-pine.nix {}) + (callPackage ./sddm-rose-pine.nix { }) (vscode-with-extensions.override { vscode = vscodium; - vscodeExtensions = with vscode-extensions; [ - #bmewburn.vscode-intelephense-client - #dracula-theme.theme-dracula - mvllow.rose-pine - editorconfig.editorconfig - esbenp.prettier-vscode - github.github-vscode-theme - gruntfuggly.todo-tree - jnoortheen.nix-ide - mhutchie.git-graph - ms-ceintl.vscode-language-pack-fr - #junstyle.php-cs-fixer - #ms-vscode-remote.remote-ssh - ] - ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - name = "vscode-twig-language-2"; - publisher = "mblode"; - version = "0.9.2"; - sha256 = "113w2iis4zi4z3sqc3vd2apyrh52hbh2gvmxjr5yvjpmrsksclbd"; - } - ] - ; + vscodeExtensions = + with vscode-extensions; + [ + #bmewburn.vscode-intelephense-client + #dracula-theme.theme-dracula + mvllow.rose-pine + editorconfig.editorconfig + esbenp.prettier-vscode + github.github-vscode-theme + gruntfuggly.todo-tree + jnoortheen.nix-ide + mhutchie.git-graph + ms-ceintl.vscode-language-pack-fr + #junstyle.php-cs-fixer + #ms-vscode-remote.remote-ssh + ] + ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "vscode-twig-language-2"; + publisher = "mblode"; + version = "0.9.2"; + sha256 = "113w2iis4zi4z3sqc3vd2apyrh52hbh2gvmxjr5yvjpmrsksclbd"; + } + ]; }) (chromium.override { enableWideVine = true; # DRM support diff --git a/modules/home-config.nix b/modules/home-config.nix index 0d5beb8..eb12935 100644 --- a/modules/home-config.nix +++ b/modules/home-config.nix @@ -1,5 +1,10 @@ # Inject the right home-manager config for the machine. -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: let plasma-manager = pkgs.fetchFromGitHub { owner = "pjones"; @@ -8,19 +13,18 @@ let sha256 = "sha256-LJ/lFEupLSi7xtUps234hhMk7ZdVLRoYeU7KiCFaoGw="; }; startupScript = pkgs.pkgs.writeShellScriptBin "hyprland-start" '' - ${pkgs.waybar}/bin/waybar & - ${pkgs.swww}/bin/swww init & - - sleep 1 - - ${pkgs.swww}/bin/swww img /home/mrflos/Nextcloud/Images/Wallpapers/chihiro014.jpg & - ''; -in { + ${pkgs.waybar}/bin/waybar & + ${pkgs.swww}/bin/swww init & + + sleep 1 + + ${pkgs.swww}/bin/swww img /home/mrflos/Nextcloud/Images/Wallpapers/chihiro014.jpg & + ''; +in +{ # TODO can we automate the installation of home-manager ? # sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager - imports = [ - - ]; + imports = [ ]; # Let Home Manager install and manage itself. #programs.home-manager.enable = true; @@ -29,323 +33,349 @@ in { isNormalUser = true; description = "mrflos"; createHome = true; - extraGroups = ["users" "docker" "libvirtd" "lxd" "networkmanager" "wheel" ]; + extraGroups = [ + "users" + "docker" + "libvirtd" + "lxd" + "networkmanager" + "wheel" + ]; uid = 1000; shell = pkgs.zsh; }; nix.settings.trusted-users = [ "mrflos" ]; - home-manager.backupFileExtension = "backup"; - home-manager.users.mrflos = { pkgs, ... }: { - home.stateVersion = "23.05"; - home.packages = with pkgs; [ - gcc - cmake - ripgrep - fd - lua-language-server - rust-analyzer-unwrapped - php83Packages.composer - nodejs_20 - swww - grimblast - swaylock - waybar - yarn - ]; + home-manager.backupFileExtension = "backup"; + home-manager.users.mrflos = + { pkgs, ... }: + { + home.stateVersion = "23.05"; + home.packages = with pkgs; [ + gcc + cmake + ripgrep + fd + lua-language-server + rust-analyzer-unwrapped + php83Packages.composer + nodejs_20 + swww + grimblast + swaylock + waybar + yarn + ]; - imports = [ - (plasma-manager + "/modules") - ./home-plasma.nix - ]; - home.file = { - "./.config/kitty/" = { - source = ../dotfiles/kitty; - recursive = true; - }; + imports = [ + (plasma-manager + "/modules") + ./home-plasma.nix + ]; + home.file = { + "./.config/kitty/" = { + source = ../dotfiles/kitty; + recursive = true; + }; - "./.config/nvim/" = { - source = ../dotfiles/nvim; - recursive = true; - }; + "./.config/nvim/" = { + source = ../dotfiles/nvim; + recursive = true; + }; - "./.config/lazygit/" = { - source = ../dotfiles/lazygit; - recursive = true; - }; + "./.config/lazygit/" = { + source = ../dotfiles/lazygit; + recursive = true; + }; - "./.config/tmux/" = { - source = ../dotfiles/tmux; - recursive = true; + "./.config/tmux/" = { + source = ../dotfiles/tmux; + recursive = true; + }; }; - }; - home.sessionVariables = { + home.sessionVariables = { EDITOR = "nvim"; - }; - home.sessionPath = [ - "$HOME/.local/bin" - "$HOME/go/bin" - ]; - accounts.email.accounts = { - "mrflos@chmok.net" = { - realName = "Florian Schmitt"; - userName = "mrflos@chmok.net"; - address = "mrflos@chmok.net"; - - primary = true; - thunderbird = { enable = true; }; - imap = { - host = "mail.infomaniak.com"; - port = 993; - }; - - smtp = { - host = "mail.infomaniak.com"; - port = 465; - }; }; - "mrflos@yeswiki.pro" = { - realName = "Florian Schmitt - Yeswiki.pro"; - userName = "mrflos@yeswiki.pro"; - address = "mrflos@yeswiki.pro"; + home.sessionPath = [ + "$HOME/.local/bin" + "$HOME/go/bin" + ]; + accounts.email.accounts = { + "mrflos@chmok.net" = { + realName = "Florian Schmitt"; + userName = "mrflos@chmok.net"; + address = "mrflos@chmok.net"; - thunderbird = { enable = true; }; - imap = { - host = "mail.infomaniak.com"; - port = 993; + primary = true; + thunderbird = { + enable = true; + }; + imap = { + host = "mail.infomaniak.com"; + port = 993; + }; + + smtp = { + host = "mail.infomaniak.com"; + port = 465; + }; }; + "mrflos@yeswiki.pro" = { + realName = "Florian Schmitt - Yeswiki.pro"; + userName = "mrflos@yeswiki.pro"; + address = "mrflos@yeswiki.pro"; - smtp = { - host = "mail.infomaniak.com"; - port = 465; + thunderbird = { + enable = true; + }; + imap = { + host = "mail.infomaniak.com"; + port = 993; + }; + + smtp = { + host = "mail.infomaniak.com"; + port = 465; + }; }; - }; - "mrflos@mrflos.pw" = { - realName = "Florian Schmitt"; - userName = "mrflos"; - address = "mrflos@mrflos.pw"; + "mrflos@mrflos.pw" = { + realName = "Florian Schmitt"; + userName = "mrflos"; + address = "mrflos@mrflos.pw"; - primary = false; - thunderbird = { enable = true; }; - imap = { - host = "mrflos.pw"; - port = 993; - #tls.enable = true; - #tls.useStartTls = true; + primary = false; + thunderbird = { + enable = true; + }; + imap = { + host = "mrflos.pw"; + port = 993; + #tls.enable = true; + #tls.useStartTls = true; + }; + + smtp = { + host = "mrflos.pw"; + port = 587; + #tls.useStartTls = true; + }; }; + "contact@yeswiki.pro" = { + realName = "YesWiki.pro"; + userName = "contact@yeswiki.pro"; + address = "contact@yeswiki.pro"; - smtp = { - host = "mrflos.pw"; - port = 587; - #tls.useStartTls = true; + primary = false; + thunderbird = { + enable = true; + }; + imap = { + host = "mail.infomaniak.com"; + port = 993; + }; + + smtp = { + host = "mail.infomaniak.com"; + port = 465; + }; }; - }; - "contact@yeswiki.pro" = { - realName = "YesWiki.pro"; - userName = "contact@yeswiki.pro"; - address = "contact@yeswiki.pro"; + "contact@yeswiki.net" = { + realName = "YesWiki.net"; + userName = "contact@yeswiki.net"; + address = "contact@yeswiki.net"; - primary = false; - thunderbird = { enable = true; }; - imap = { - host = "mail.infomaniak.com"; - port = 993; - }; + primary = false; + thunderbird = { + enable = true; + }; + imap = { + host = "mail.infomaniak.com"; + port = 993; + }; - smtp = { - host = "mail.infomaniak.com"; - port = 465; - }; - }; - "contact@yeswiki.net" = { - realName = "YesWiki.net"; - userName = "contact@yeswiki.net"; - address = "contact@yeswiki.net"; - - primary = false; - thunderbird = { enable = true; }; - imap = { - host = "mail.infomaniak.com"; - port = 993; - }; - - smtp = { - host = "mail.infomaniak.com"; - port = 465; - }; - }; - }; - - programs = { - direnv = { - enable = true; - enableZshIntegration = true; - nix-direnv.enable = true; - }; - - git = { - enable = true; - userName = "Florian Schmitt"; - userEmail = "mrflos@gmail.com"; - aliases = { - fa = "fetch --all --tags --prune --recurse-submodules --force"; - }; - extraConfig = { - pull.rebase = true; - init.defaultBranch = "main"; - core.editor = "nvim"; - core.fileMode = false; + smtp = { + host = "mail.infomaniak.com"; + port = 465; + }; }; }; - neovim = { - defaultEditor = true; - viAlias = true; - vimAlias = true; - }; - - starship = { - enable = true; - settings = with builtins; fromTOML (readFile ../dotfiles/starship/starship.toml); - }; - - zsh = { - enable = true; - autosuggestion.enable = true; - enableCompletion = true; - shellAliases = { - #tmux = "tmux -f ~/.config/tmux/tmux.conf attach || tmux -f ~/.config/tmux/tmux.conf new"; - bunx = "bun --bun x"; - g = "lazygit"; - kdenix = "nix run github:pjones/plasma-manager --extra-experimental-features nix-command --extra-experimental-features flakes > /home/mrflos/Developpements/nixos-config/modules/home-plasma.nix"; - icat = "kitty +kitten icat"; - nixedit = "vi /etc/nixos"; - nixupdate = "sudo nix-channel --update && sudo nixos-rebuild switch"; - nixclean = "sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system && sudo /nix/var/nix/profiles/system/bin/switch-to-configuration switch && sudo nix-store --gc"; - socks = "ssh -N -f -C -D 9090 mrflos@yunohost.yeswiki.net -p 6742"; - vi = "/run/current-system/sw/bin/nvim"; - vim = "/run/current-system/sw/bin/nvim"; - yeswiki-updater = "cd /home/mrflos/Developpements/yeswiki-installer/ && sudo php yeswiki-updater.php"; - }; - initExtra = '' - export BUN_INSTALL="$HOME/.bun" - export PHP_CS_FIXER_IGNORE_ENV=1 - export PATH="$HOME/.local/bin:$BUN_INSTALL/bin:$PATH" - eval "$(atuin init zsh)" - eval "$(zoxide init zsh)" - ''; - oh-my-zsh = { + programs = { + direnv = { enable = true; - extraConfig = '' - zstyle :omz:plugins:ssh-agent helper ksshaskpass - zstyle :omz:plugins:ssh-agent agent-forwarding yes - zstyle :omz:plugins:ssh-agent lazy yes + enableZshIntegration = true; + nix-direnv.enable = true; + }; + + git = { + enable = true; + userName = "Florian Schmitt"; + userEmail = "mrflos@gmail.com"; + aliases = { + fa = "fetch --all --tags --prune --recurse-submodules --force"; + }; + extraConfig = { + pull.rebase = true; + init.defaultBranch = "main"; + core.editor = "nvim"; + core.fileMode = false; + }; + }; + + neovim = { + defaultEditor = true; + viAlias = true; + vimAlias = true; + }; + + starship = { + enable = true; + settings = with builtins; fromTOML (readFile ../dotfiles/starship/starship.toml); + }; + + zsh = { + enable = true; + autosuggestion.enable = true; + enableCompletion = true; + shellAliases = { + #tmux = "tmux -f ~/.config/tmux/tmux.conf attach || tmux -f ~/.config/tmux/tmux.conf new"; + bunx = "bun --bun x"; + g = "lazygit"; + kdenix = "nix run github:pjones/plasma-manager --extra-experimental-features nix-command --extra-experimental-features flakes > /home/mrflos/Developpements/nixos-config/modules/home-plasma.nix"; + icat = "kitty +kitten icat"; + nixedit = "vi /etc/nixos"; + nixupdate = "sudo nix-channel --update && sudo nixos-rebuild switch"; + nixclean = "sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system && sudo /nix/var/nix/profiles/system/bin/switch-to-configuration switch && sudo nix-store --gc"; + socks = "ssh -N -f -C -D 9090 mrflos@yunohost.yeswiki.net -p 6742"; + vi = "/run/current-system/sw/bin/nvim"; + vim = "/run/current-system/sw/bin/nvim"; + yeswiki-updater = "cd /home/mrflos/Developpements/yeswiki-installer/ && sudo php yeswiki-updater.php"; + }; + initExtra = '' + export BUN_INSTALL="$HOME/.bun" + export PHP_CS_FIXER_IGNORE_ENV=1 + export PATH="$HOME/.local/bin:$BUN_INSTALL/bin:$PATH" + eval "$(atuin init zsh)" + eval "$(zoxide init zsh)" ''; - plugins = [ "git" "ssh-agent" ]; - # theme = "robbyrussell"; + oh-my-zsh = { + enable = true; + extraConfig = '' + zstyle :omz:plugins:ssh-agent helper ksshaskpass + zstyle :omz:plugins:ssh-agent agent-forwarding yes + zstyle :omz:plugins:ssh-agent lazy yes + ''; + plugins = [ + "git" + "ssh-agent" + ]; + # theme = "robbyrussell"; + }; }; }; + + services.ssh-agent.enable = true; + wayland.windowManager.hyprland.enable = true; + wayland.windowManager.hyprland.settings = { + exec-once = ''${startupScript}/bin/hyprland-start''; + "$mod" = "SUPER"; + + # assign apps + "$term" = "kitty"; + "$editor" = "nvim"; + "$file" = "dolphin"; + "$browser" = "firefox"; + + bind = + [ + ", Print, exec, grimblast copy area" + # Window/Session actions + "$mod, Q, killactive" + "ALT, F4, killactive" + "$mod, delete, exit" # kill hyperland session + "$mod, W, togglefloating" # toggle the window on focus to float + "$mod, G, togglegroup" # toggle the window on focus to float + "ALT, return, fullscreen" # toggle the window on focus to fullscreen + "$mod, L, exec, swaylock" # lock screen + # "$mod, backspace, exec, wlogout-launcher-hyprland 1" # logout menu + "$CONTROL, ESCAPE, exec, systemctl-toggle --user waybar.service" + + # Application shortcuts + "$mod, T, exec, $term" # open terminal + "$mod, E, exec, $file" # open file manager + "$mod, C, exec, $editor" # open vscode + "$mod, F, exec, $browser" # open browser + + # Move focus with mainMod + arrow keys + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + "ALT, Tab, movefocus, d" + + # Switch workspaces relative to the active workspace with mainMod + CTRL + [←→] + "$mod CTRL, right, workspace, r+1" + "$mod CTRL, left, workspace, r-1" + + # move to the first empty workspace instantly with mainMod + CTRL + [↓] + "$mod CTRL, down, workspace, empty" + + # Move active window to a relative workspace with mainMod + CTRL + ALT + [←→] + "$mod CTRL ALT, right, movetoworkspace, r+1" + "$mod CTRL ALT, left, movetoworkspace, r-1" + + # Move active window around current workspace with mainMod + SHIFT + CTRL [←→↑↓] + "$mod SHIFT $CONTROL, left, movewindow, l" + "$mod SHIFT $CONTROL, right, movewindow, r" + "$mod SHIFT $CONTROL, up, movewindow, u" + "$mod SHIFT $CONTROL, down, movewindow, d" + + # Scroll through existing workspaces with mainMod + scroll + "$mod, mouse_down, workspace, e+1" + "$mod, mouse_up, workspace, e-1" + + # Special workspaces (scratchpad) + "$mod ALT, S, movetoworkspacesilent, special" + "$mod, S, togglespecialworkspace," + + # Toggle Layout + "$mod, J, togglesplit," # dwindle + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} + builtins.concatLists ( + builtins.genList ( + x: + let + ws = + let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in + [ + "$mod, ${ws}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + "$mod ALT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}" # Move window silently to workspace Super + Alt + [0-9] + ] + ) 10 + ) + ); + + # Move/Resize windows with mainMod + LMB/RMB and dragging + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + # Resize windows + binde = [ + "$mod SHIFT, right, resizeactive, 30 0" + "$mod SHIFT, left, resizeactive, -30 0" + "$mod SHIFT, up, resizeactive, 0 -30" + "$mod SHIFT, down, resizeactive, 0 30" + ]; + }; + }; - - services.ssh-agent.enable = true; - wayland.windowManager.hyprland.enable = true; - wayland.windowManager.hyprland.settings = { - exec-once = ''${startupScript}/bin/hyprland-start''; - "$mod" = "SUPER"; - - # assign apps - "$term" = "kitty"; - "$editor" = "nvim"; - "$file" = "dolphin"; - "$browser" = "firefox"; - - bind = [ - ", Print, exec, grimblast copy area" - # Window/Session actions - "$mod, Q, killactive" - "ALT, F4, killactive" - "$mod, delete, exit" # kill hyperland session - "$mod, W, togglefloating" # toggle the window on focus to float - "$mod, G, togglegroup" # toggle the window on focus to float - "ALT, return, fullscreen" # toggle the window on focus to fullscreen - "$mod, L, exec, swaylock" # lock screen - # "$mod, backspace, exec, wlogout-launcher-hyprland 1" # logout menu - "$CONTROL, ESCAPE, exec, systemctl-toggle --user waybar.service" - - # Application shortcuts - "$mod, T, exec, $term" # open terminal - "$mod, E, exec, $file" # open file manager - "$mod, C, exec, $editor" # open vscode - "$mod, F, exec, $browser" # open browser - - # Move focus with mainMod + arrow keys - "$mod, left, movefocus, l" - "$mod, right, movefocus, r" - "$mod, up, movefocus, u" - "$mod, down, movefocus, d" - "ALT, Tab, movefocus, d" - - - # Switch workspaces relative to the active workspace with mainMod + CTRL + [←→] - "$mod CTRL, right, workspace, r+1" - "$mod CTRL, left, workspace, r-1" - - # move to the first empty workspace instantly with mainMod + CTRL + [↓] - "$mod CTRL, down, workspace, empty" - - # Move active window to a relative workspace with mainMod + CTRL + ALT + [←→] - "$mod CTRL ALT, right, movetoworkspace, r+1" - "$mod CTRL ALT, left, movetoworkspace, r-1" - - # Move active window around current workspace with mainMod + SHIFT + CTRL [←→↑↓] - "$mod SHIFT $CONTROL, left, movewindow, l" - "$mod SHIFT $CONTROL, right, movewindow, r" - "$mod SHIFT $CONTROL, up, movewindow, u" - "$mod SHIFT $CONTROL, down, movewindow, d" - - # Scroll through existing workspaces with mainMod + scroll - "$mod, mouse_down, workspace, e+1" - "$mod, mouse_up, workspace, e-1" - - # Special workspaces (scratchpad) - "$mod ALT, S, movetoworkspacesilent, special" - "$mod, S, togglespecialworkspace," - - # Toggle Layout - "$mod, J, togglesplit," # dwindle - ] - ++ ( - # workspaces - # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} - builtins.concatLists (builtins.genList ( - x: let - ws = let - c = (x + 1) / 10; - in - builtins.toString (x + 1 - (c * 10)); - in [ - "$mod, ${ws}, workspace, ${toString (x + 1)}" - "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" - "$mod ALT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}" # Move window silently to workspace Super + Alt + [0-9] - ] - ) - 10) - ); - - # Move/Resize windows with mainMod + LMB/RMB and dragging - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - - # Resize windows - binde = [ - "$mod SHIFT, right, resizeactive, 30 0" - "$mod SHIFT, left, resizeactive, -30 0" - "$mod SHIFT, up, resizeactive, 0 -30" - "$mod SHIFT, down, resizeactive, 0 30" - ]; - }; - - }; } diff --git a/modules/home-plasma.nix b/modules/home-plasma.nix index c646356..f35f0e6 100644 --- a/modules/home-plasma.nix +++ b/modules/home-plasma.nix @@ -45,21 +45,35 @@ "kaccess"."Toggle Screen Reader On and Off" = "Meta+Alt+S"; "kcm_touchpad"."Disable Touchpad" = "Touchpad Off"; "kcm_touchpad"."Enable Touchpad" = "Touchpad On"; - "kcm_touchpad"."Toggle Touchpad" = ["Touchpad Toggle,Touchpad Toggle" "Meta+Ctrl+Zenkaku Hankaku"]; + "kcm_touchpad"."Toggle Touchpad" = [ + "Touchpad Toggle,Touchpad Toggle" + "Meta+Ctrl+Zenkaku Hankaku" + ]; "kded5"."Show System Activity" = "Ctrl+Esc"; - "kded5"."display" = ["Display" "Meta+P,Display" "Meta+P,Changer d'affichage"]; + "kded5"."display" = [ + "Display" + "Meta+P,Display" + "Meta+P,Changer d'affichage" + ]; "khotkeys"."{d03619b6-9b3c-48cc-9d9c-a2aadb485550}" = [ ]; "kitty.desktop"."_launch" = "Meta+T,none"; "kmix"."decrease_microphone_volume" = "Microphone Volume Down"; "kmix"."decrease_volume" = "Volume Down"; "kmix"."increase_microphone_volume" = "Microphone Volume Up"; "kmix"."increase_volume" = "Volume Up"; - "kmix"."mic_mute" = ["Microphone Mute" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Couper le son du microphone"]; + "kmix"."mic_mute" = [ + "Microphone Mute" + "Meta+Volume Mute,Microphone Mute" + "Meta+Volume Mute,Couper le son du microphone" + ]; "kmix"."mute" = "Volume Mute"; "konversation"."next_active_tab" = [ ]; "konversation"."toggle_mainwindow_visibility" = [ ]; "ksmserver"."Halt Without Confirmation" = "none,,Éteindre sans confirmation"; - "ksmserver"."Lock Session" = ["Screensaver,Meta+L" "Screensaver,Verrouiller la session"]; + "ksmserver"."Lock Session" = [ + "Screensaver,Meta+L" + "Screensaver,Verrouiller la session" + ]; "ksmserver"."Log Out" = "Ctrl+Alt+Del"; "ksmserver"."Log Out Without Confirmation" = "none,,Déconnexion sans confirmation"; "ksmserver"."Reboot Without Confirmation" = "none,,Redémarrer sans confirmation"; @@ -67,7 +81,11 @@ "kwin"."Decrease Opacity" = "none,,Diminuer l'opacité de la fenêtre active de 5 %"; "kwin"."Edit Tiles" = "none,Meta+T,Basculer ou sortir de l'éditeur de recouvrement"; "kwin"."Expose" = "Ctrl+F9"; - "kwin"."ExposeAll" = ["Ctrl+F10" "Launch (C),Ctrl+F10" "Launch (C),Activer / désactiver la présentation des fenêtres (tous les bureaux)"]; + "kwin"."ExposeAll" = [ + "Ctrl+F10" + "Launch (C),Ctrl+F10" + "Launch (C),Activer / désactiver la présentation des fenêtres (tous les bureaux)" + ]; "kwin"."ExposeClass" = "Ctrl+F7"; "kwin"."ExposeClassCurrentDesktop" = [ ]; "kwin"."Grid-Tiling: Close Desktop" = [ ]; @@ -198,7 +216,10 @@ "kwin"."Walk Through Windows of Current Application Alternative (Reverse)" = "none,,Naviguer parmi les fenêtres de l'application alternative courante (en ordre inverse)"; "kwin"."Window Above Other Windows" = "none,,Conserver une fenêtre au-dessus des autres"; "kwin"."Window Below Other Windows" = "none,,Conserver une fenêtre au-dessous des autres"; - "kwin"."Window Close" = ["Alt+F4" "Meta+Q,Alt+F4,Fermer une fenêtre"]; + "kwin"."Window Close" = [ + "Alt+F4" + "Meta+Q,Alt+F4,Fermer une fenêtre" + ]; "kwin"."Window Fullscreen" = "none,,Mettre une fenêtre en plein écran"; "kwin"."Window Grow Horizontal" = "none,,Maximiser horizontalement une fenêtre"; "kwin"."Window Grow Vertical" = "none,,Maximiser verticalement une fenêtre"; @@ -206,7 +227,10 @@ "kwin"."Window Maximize" = "Meta+PgUp"; "kwin"."Window Maximize Horizontal" = "none,,Maximiser horizontalement une fenêtre"; "kwin"."Window Maximize Vertical" = "none,,Maximiser verticalement une fenêtre"; - "kwin"."Window Minimize" = ["Meta+PgDown" "Meta+M,Meta+PgDown,Réduire une fenêtre"]; + "kwin"."Window Minimize" = [ + "Meta+PgDown" + "Meta+M,Meta+PgDown,Réduire une fenêtre" + ]; "kwin"."Window Move" = "none,,Déplacer une fenêtre"; "kwin"."Window Move Center" = "none,,Déplacer la fenêtre au centre"; "kwin"."Window No Border" = "none,,Afficher / Masquer la barre de titre et la bordure"; @@ -270,7 +294,11 @@ "kwin"."Window to Screen 6" = "none,,Envoyer la fenêtre sur l'écran 6"; "kwin"."Window to Screen 7" = "none,,Envoyer la fenêtre sur l'écran 7"; "kwin"."view_actual_size" = "Meta+0"; - "kwin"."view_zoom_in" = ["Meta++" "Meta+=,Meta++" "Meta+=,Zoom avant"]; + "kwin"."view_zoom_in" = [ + "Meta++" + "Meta+=,Meta++" + "Meta+=,Zoom avant" + ]; "kwin"."view_zoom_out" = "Meta+-"; "lattedock"."activate entry 1" = "none,Meta+1,Activer l'entrée 1"; "lattedock"."activate entry 10" = "none,Meta+0,Activer l'entrée 10"; @@ -326,8 +354,15 @@ "org.kde.konsole.desktop"."NewWindow" = [ ]; "org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T,none"; "org.kde.krunner.desktop"."RunClipboard" = "Alt+Shift+F2,none"; - "org.kde.krunner.desktop"."_launch" = ["Alt+Space" "Alt+F2" "Search,none"]; - "org.kde.plasma.emojier.desktop"."_launch" = ["Meta+." "Meta+Ctrl+Alt+Shift+Space,none"]; + "org.kde.krunner.desktop"."_launch" = [ + "Alt+Space" + "Alt+F2" + "Search,none" + ]; + "org.kde.plasma.emojier.desktop"."_launch" = [ + "Meta+." + "Meta+Ctrl+Alt+Shift+Space,none" + ]; "org.kde.spectacle.desktop"."ActiveWindowScreenShot" = "Meta+Print,none"; "org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = [ ]; "org.kde.spectacle.desktop"."FullScreenScreenShot" = "Shift+Print,none"; @@ -1090,7 +1125,7 @@ "kwinrc"."Tiling/ed6da6d2-dc03-5e69-aae5-b2fee83fe2cd"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; "kwinrc"."Windows"."AutoRaise" = true; "kwinrc"."Windows"."AutoRaiseInterval" = 300; - "kwinrc"."Windows"."ElectricBorderCornerRatio" = 0.01; + "kwinrc"."Windows"."ElectricBorderCornerRatio" = 1.0e-2; "kwinrc"."Windows"."Placement" = "Maximizing"; "kwinrc"."Windows"."RollOverDesktops" = true; "kwinrc"."Xwayland"."Scale" = 1.75; diff --git a/modules/local-dev.nix b/modules/local-dev.nix index 072c4ed..fb9fda9 100644 --- a/modules/local-dev.nix +++ b/modules/local-dev.nix @@ -1,5 +1,11 @@ # Local developpement -{ pkgs, config, lib, ... }: { +{ + pkgs, + config, + lib, + ... +}: +{ virtualisation = { docker.enable = true; #docker.rootless = { @@ -17,31 +23,34 @@ ${pkgs.systemd}/bin/systemctl start mysql # etc ''; - serviceConfig = let - startstop = command: - (pkgs.writeShellApplication { - name = "yeswikidev"; - runtimeInputs = with pkgs; [ systemd ]; - text = '' - systemctl ${command} mysql.service - ''; - }); - #startstopFullShell = pkgs.writeShellApplication { - # name = "yeswikidev"; - # runtimeInputs = with pkgs; [ systemd ]; - # text = '' - # systemctl "$1" mysql.service - # ''; - #}); - #commands = [ "start" "stop" ]; - #scripts = map (command: (pkgs.writeShellApplication { - # name = "yeswikidev"; - # runtimeInputs = with pkgs; [ systemd ]; - # text = '' - # systemctl ${command} mysql.service - # ''; - #})) commands; + serviceConfig = + let + startstop = + command: + (pkgs.writeShellApplication { + name = "yeswikidev"; + runtimeInputs = with pkgs; [ systemd ]; + text = '' + systemctl ${command} mysql.service + ''; + }); + #startstopFullShell = pkgs.writeShellApplication { + # name = "yeswikidev"; + # runtimeInputs = with pkgs; [ systemd ]; + # text = '' + # systemctl "$1" mysql.service + # ''; + #}); + #commands = [ "start" "stop" ]; + #scripts = map (command: (pkgs.writeShellApplication { + # name = "yeswikidev"; + # runtimeInputs = with pkgs; [ systemd ]; + # text = '' + # systemctl ${command} mysql.service + # ''; + #})) commands; + in #execs = { # ExecStart = "start"; # ExecStop = "stop"; @@ -50,17 +59,17 @@ # https://nixos.org/manual/nix/stable/language/builtins#builtins-mapAttrs #execAttrs = attrNames execs; # ["Start" "Stop"]; #execs2 = mapAttrs (k: v: ()) execs; - in { - # pkgs.writeScript, pkgs.writeScriptBin - #ExecStart = startstop "start"; - #ExecStop = startstop "stop"; - # OR - # ExecStart = "${startstopFullShell} start"; - # ExecStop = "${startstopFullShell} stop"; - # OR - # ExecStart = "${scripts[0]}"; - # ExecStop = "${scripts[1]}"; - }; + { + # pkgs.writeScript, pkgs.writeScriptBin + #ExecStart = startstop "start"; + #ExecStop = startstop "stop"; + # OR + # ExecStart = "${startstopFullShell} start"; + # ExecStop = "${startstopFullShell} stop"; + # OR + # ExecStart = "${scripts[0]}"; + # ExecStop = "${scripts[1]}"; + }; }; services.mysql = { @@ -70,45 +79,47 @@ # List packages installed in system profile. To search, run: # $ nix search wget - environment.systemPackages = with pkgs; - let - php83 = pkgs.php83.buildEnv { extraConfig = "memory_limit = 2G"; }; - in [ - #clang - dart-sass - dbeaver-bin - docker-compose - eris-go - gcc - go - nixfmt-rfc-style - lua - lua-language-server - luarocks - nixpkgs-fmt - nodejs - nodePackages.eslint - nodePackages.prettier - php83 - php83Packages.composer - php83Packages.php-cs-fixer - python3 - python311Packages.virtualenv - rpi-imager - ruff-lsp - stylelint - symfony-cli - tree-sitter - virt-manager - yarn - zig - # image optimizers - image_optim - nodePackages.svgo - jpegoptim - optipng - pngquant - gifsicle - libwebp - ]; + environment.systemPackages = + with pkgs; + let + php83 = pkgs.php83.buildEnv { extraConfig = "memory_limit = 2G"; }; + in + [ + #clang + dart-sass + dbeaver-bin + docker-compose + eris-go + gcc + go + nixfmt-rfc-style + lua + lua-language-server + luarocks + nixpkgs-fmt + nodejs + nodePackages.eslint + nodePackages.prettier + php83 + php83Packages.composer + php83Packages.php-cs-fixer + python3 + python311Packages.virtualenv + rpi-imager + ruff-lsp + stylelint + symfony-cli + tree-sitter + virt-manager + yarn + zig + # image optimizers + image_optim + nodePackages.svgo + jpegoptim + optipng + pngquant + gifsicle + libwebp + ]; } diff --git a/modules/nixos.nix b/modules/nixos.nix index 9e6c38f..ddb4a9b 100644 --- a/modules/nixos.nix +++ b/modules/nixos.nix @@ -1,11 +1,11 @@ { # Auto system update system.autoUpgrade = { - enable = true; + enable = true; }; nix.settings.experimental-features = [ "nix-command" ]; - + # Automatic Garbage Collection nix.gc = { automatic = true; @@ -14,7 +14,5 @@ }; # TODO : find what is installing this, probably obsidian? - nixpkgs.config.permittedInsecurePackages = [ - "electron-25.9.0" - ]; + nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ]; } diff --git a/modules/sddm-rose-pine.nix b/modules/sddm-rose-pine.nix index a614282..b5657ce 100644 --- a/modules/sddm-rose-pine.nix +++ b/modules/sddm-rose-pine.nix @@ -1,6 +1,7 @@ -{ stdenvNoCC -, fetchFromGitHub -, libsForQt5 +{ + stdenvNoCC, + fetchFromGitHub, + libsForQt5, }: stdenvNoCC.mkDerivation rec { @@ -8,9 +9,7 @@ stdenvNoCC.mkDerivation rec { version = "1.2"; dontBuild = true; - propagatedUserEnvPkgs = [ - libsForQt5.qt5.qtgraphicaleffects - ]; + propagatedUserEnvPkgs = [ libsForQt5.qt5.qtgraphicaleffects ]; src = fetchFromGitHub { owner = "lwndhrst";