From 232b3546e1db7aa29ed9c81af54f6632d7fdbf65 Mon Sep 17 00:00:00 2001 From: mrflos Date: Thu, 30 May 2024 13:16:42 +0300 Subject: [PATCH] wip macos config --- darwin-configuration.nix | 8 + dotfiles/init_yeswiki_repos.sh | 2 +- machines/MacMiniM2-darwin-configuration.nix | 34 ++++ modules/console.nix | 15 +- modules/home-config.nix | 194 ++++++++++---------- modules/home-plasma.nix | 10 +- modules/local-dev.nix | 93 +++------- {home-manager => users}/mrflos-cli.nix | 0 8 files changed, 176 insertions(+), 180 deletions(-) create mode 100644 darwin-configuration.nix mode change 100644 => 100755 dotfiles/init_yeswiki_repos.sh create mode 100644 machines/MacMiniM2-darwin-configuration.nix rename {home-manager => users}/mrflos-cli.nix (100%) diff --git a/darwin-configuration.nix b/darwin-configuration.nix new file mode 100644 index 0000000..ef1869f --- /dev/null +++ b/darwin-configuration.nix @@ -0,0 +1,8 @@ +# NixOS config entry point +# import the hardware and configuration files specific to your machine +{ + imports = + [ + ./machines/MacMiniM2-darwin-configuration.nix + ]; +} diff --git a/dotfiles/init_yeswiki_repos.sh b/dotfiles/init_yeswiki_repos.sh old mode 100644 new mode 100755 index 16db261..34be1b2 --- a/dotfiles/init_yeswiki_repos.sh +++ b/dotfiles/init_yeswiki_repos.sh @@ -14,7 +14,7 @@ corebranch="doryphore-dev" curdir="$HOME/Developpements" #${PWD} -repos=$(curl --request GET --url "https://api.github.com/orgs/yeswiki/repos" | jq '.[].full_name' | tr -d "\"" | sort) +repos=$(curl --request GET --url "https://api.github.com/orgs/yeswiki/repos?per_page=100" | jq '.[].full_name' | tr -d "\"" | sort) # core printf "\n================ Install YesWiki core ================\n" diff --git a/machines/MacMiniM2-darwin-configuration.nix b/machines/MacMiniM2-darwin-configuration.nix new file mode 100644 index 0000000..c7d403c --- /dev/null +++ b/machines/MacMiniM2-darwin-configuration.nix @@ -0,0 +1,34 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ../modules/console.nix + ../modules/local-dev.nix + ../modules/home-config.nix + ]; + + fonts = { + fontDir.enable = true; + fonts = with pkgs; [ + inter + (nerdfonts.override { fonts = [ "Iosevka" ]; }) + ]; + }; + + # Use a custom configuration.nix location. + # $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix + # environment.darwinConfig = "$HOME/.config/nixpkgs/darwin/configuration.nix"; + + # Auto upgrade nix package and the daemon service. + services.nix-daemon.enable = true; + nix.package = pkgs.nix; + + networking.hostName = "ace"; + + # Create /etc/zshrc that loads the nix-darwin environment. + programs.zsh.enable = true; # default shell on catalina + + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + system.stateVersion = 4; +} diff --git a/modules/console.nix b/modules/console.nix index b09f1bf..c67aed7 100644 --- a/modules/console.nix +++ b/modules/console.nix @@ -3,10 +3,10 @@ { programs.zsh.enable = true; - programs.fzf = { - fuzzyCompletion = true; - keybindings = true; - }; + # programs.fzf = { + # fuzzyCompletion = true; + # keybindings = true; + # }; # List packages installed in system profile. To search, run: # $ nix search wget @@ -41,11 +41,12 @@ mpc-cli mpd neofetch + neovim ollama pandoc pass pciutils - pinentry + #pinentry ripgrep rustc slides @@ -55,12 +56,12 @@ tokei tree unzip - usbutils + #usbutils wget whois wl-clipboard - wirelesstools yazi + #wirelesstools yt-dlp zellij zoxide diff --git a/modules/home-config.nix b/modules/home-config.nix index 8c7ed1d..4b4e2b7 100644 --- a/modules/home-config.nix +++ b/modules/home-config.nix @@ -1,41 +1,33 @@ -# Inject the right home-manager config for the machine. { config, pkgs, lib, ... }: let - plasma-manager = pkgs.fetchFromGitHub { - owner = "pjones"; - repo = "plasma-manager"; - rev = "4e56cfeb95081a43cb49487d0996dc936d6201e5"; - sha256 = "sha256-LJ/lFEupLSi7xtUps234hhMk7ZdVLRoYeU7KiCFaoGw="; - }; - startupScript = pkgs.pkgs.writeShellScriptBin "hyprland-start" '' - ${pkgs.waybar}/bin/waybar & - ${pkgs.swww}/bin/swww init & + #startupScript = pkgs.pkgs.writeShellScriptBin "hyprland-start" '' + # ${pkgs.waybar}/bin/waybar & + # ${pkgs.swww}/bin/swww init & + # + # sleep 1 - sleep 1 - - ${pkgs.swww}/bin/swww img /home/mrflos/Nextcloud/Images/Wallpapers/chihiro014.jpg & - ''; + # ${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 = [ - + # + ]; - - # Let Home Manager install and manage itself. - #programs.home-manager.enable = true; home-manager.useGlobalPkgs = true; users.users.mrflos = { - isNormalUser = true; + #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; + home = "/Users/mrflos"; }; nix.settings.trusted-users = [ "mrflos" ]; - + home-manager.backupFileExtension = "backup"; home-manager.users.mrflos = { pkgs, ... }: { home.stateVersion = "23.05"; home.packages = with pkgs; [ @@ -47,17 +39,17 @@ in { rust-analyzer-unwrapped php83Packages.composer nodejs_20 - swww - grimblast - swaylock - waybar + # swww + # grimblast + #swaylock + #waybar yarn ]; - imports = [ - (plasma-manager + "/modules") - ./home-plasma.nix - ]; + #imports = [ + # (plasma-manager + "/modules") + # ./home-plasma.nix + #]; home.file = { "./.config/kitty/" = { source = ../dotfiles/kitty; @@ -238,105 +230,105 @@ in { }; }; - services.ssh-agent.enable = true; - wayland.windowManager.hyprland.enable = true; - wayland.windowManager.hyprland.settings = { - exec-once = ''${startupScript}/bin/hyprland-start''; - "$mod" = "SUPER"; + #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"; + # "$term" = "kitty"; + # "$editor" = "nvim"; + # "$file" = "dolphin"; + # "$browser" = "firefox"; - bind = [ - ", Print, exec, grimblast copy area" + # 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, 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" + # "$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 +# "$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" +# "$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" + # "$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" + # "$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" + # "$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" + # "$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" + # "$mod, mouse_down, workspace, e+1" + # "$mod, mouse_up, workspace, e-1" # Special workspaces (scratchpad) - "$mod ALT, S, movetoworkspacesilent, special" - "$mod, S, togglespecialworkspace," + # "$mod ALT, S, movetoworkspacesilent, special" + # "$mod, S, togglespecialworkspace," # Toggle Layout - "$mod, J, togglesplit," # dwindle - ] - ++ ( + # "$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) - ); + # 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" +# ]; - # 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" - ]; - }; + # # 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..a3b4b83 100644 --- a/modules/home-plasma.nix +++ b/modules/home-plasma.nix @@ -1,4 +1,12 @@ -{ +{ config, pkgs, lib, ... }: +let + plasma-manager = pkgs.fetchFromGitHub { + owner = "pjones"; + repo = "plasma-manager"; + rev = "4e56cfeb95081a43cb49487d0996dc936d6201e5"; + sha256 = "sha256-LJ/lFEupLSi7xtUps234hhMk7ZdVLRoYeU7KiCFaoGw="; + }; +in { programs.plasma = { enable = true; shortcuts = { diff --git a/modules/local-dev.nix b/modules/local-dev.nix index 21ebb43..8876b9e 100644 --- a/modules/local-dev.nix +++ b/modules/local-dev.nix @@ -1,86 +1,38 @@ # Local developpement { pkgs, config, lib, ... }: { - virtualisation = { - docker.enable = true; - #docker.rootless = { - # enable = true; - # setSocketVariable = true; - #}; - #libvirtd.enable = true; - #lxd.enable = true; - #waydroid.enable = true; - }; + homebrew.enable = true; + homebrew.brews = [ + # `brew install` + #"imagemagick" - systemd.services.yeswikidev = { - enable = true; - script = '' - ${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; - - #execs = { - # ExecStart = "start"; - # ExecStop = "stop"; - #}; - # https://nixos.org/manual/nix/stable/language/builtins - # 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]}"; - }; - }; - - services.mysql = { - enable = true; - package = pkgs.mariadb; - }; + # `brew install`, always `brew services restart`, `brew link`, `brew unlink mysql` (if it is installed) + { + name = "mariadb"; + restart_service = true; + link = true; + conflicts_with = [ "mysql" ]; + } + ]; # 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"; }; + php83 = pkgs.php83.buildEnv { extraConfig = "" + memory_limit = 2G + max_upload_size = 2G + ""; }; in [ - #clang dart-sass - dbeaver-bin + cmake + dart-sass docker-compose + fd + fzf gcc go nixfmt-rfc-style + lua-language-server nixpkgs-fmt nodejs nodePackages.eslint @@ -90,7 +42,8 @@ php83Packages.php-cs-fixer python3 python311Packages.virtualenv - rpi-imager + ripgrep + rust-analyzer-unwrapped ruff-lsp stylelint symfony-cli diff --git a/home-manager/mrflos-cli.nix b/users/mrflos-cli.nix similarity index 100% rename from home-manager/mrflos-cli.nix rename to users/mrflos-cli.nix