From 86b9b25e10ef155a17ce252d80e543ab830d59c5 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 | 41 +-- modules/home-config.nix | 275 +++++++++----------- modules/home-plasma.nix | 10 +- modules/local-dev.nix | 158 ++++++----- {home-manager => users}/mrflos-cli.nix | 0 8 files changed, 279 insertions(+), 249 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 f2bbdde..b0fbbb2 100644 --- a/modules/console.nix +++ b/modules/console.nix @@ -3,24 +3,24 @@ { programs.zsh.enable = true; - programs.fzf = { - fuzzyCompletion = true; - keybindings = true; - }; + # programs.fzf = { + # fuzzyCompletion = true; + # keybindings = true; + # }; - services = { - mpd.enable = true; - mpd.musicDirectory = "/home/mrflos/Musique"; - mpd.user = "mrflos"; - mpd.group = "users"; - mpd.startWhenNeeded = true; - mpd.extraConfig = '' - audio_output { - type "pulse" - name "mpd" - } -''; - }; +# services = { +# mpd.enable = true; +# mpd.musicDirectory = "/home/mrflos/Musique"; +# mpd.user = "mrflos"; +# mpd.group = "users"; +# mpd.startWhenNeeded = true; +# mpd.extraConfig = '' +# audio_output { +# type "pulse" +# name "mpd" +# } +# ''; +# }; # List packages installed in system profile. To search, run: @@ -55,11 +55,12 @@ mpc-cli mpd neofetch + neovim ollama pandoc pass pciutils - pinentry + #pinentry ripgrep rustc slides @@ -69,11 +70,11 @@ tokei tree unzip - usbutils + #usbutils wget whois wl-clipboard - wirelesstools + #wirelesstools yt-dlp zellij zsh-autosuggestions diff --git a/modules/home-config.nix b/modules/home-config.nix index 18df11c..a8c1bb6 100644 --- a/modules/home-config.nix +++ b/modules/home-config.nix @@ -1,72 +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="; - }; - treesitterWithGrammars = (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ - p.bash - p.comment - p.css - p.dockerfile - p.fish - p.gitattributes - p.gitignore - p.go - p.gomod - p.gowork - p.hcl - p.html - p.php - p.javascript - p.jq - p.json5 - p.json - p.lua - p.make - p.markdown - p.nix - p.python - p.rust - p.twig - p.toml - p.typescript - p.vue - p.yaml - ])); - 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-23.11.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; [ @@ -78,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; @@ -107,10 +68,10 @@ in { # Treesitter is configured as a locally developed module in lazy.nvim # we hardcode a symlink here so that we can refer to it in our lazy config - "./.local/share/nvim/nix/nvim-treesitter/" = { - recursive = true; - source = treesitterWithGrammars; - }; + #"./.local/share/nvim/nix/nvim-treesitter/" = { + # recursive = true; + # source = treesitterWithGrammars; + #}; }; home.sessionVariables = { EDITOR = "nvim"; @@ -149,23 +110,23 @@ in { port = 465; }; }; - "mrflos@saint-ex.deuxfleurs.org" = { - realName = "Florian Schmitt"; - userName = "mrflos"; - address = "mrflos@saint-ex.deuxfleurs.org"; + #"mrflos@saint-ex.deuxfleurs.org" = { + # realName = "Florian Schmitt"; + # userName = "mrflos"; + # address = "mrflos@saint-ex.deuxfleurs.org"; - primary = false; - thunderbird = { enable = true; }; - imap = { - host = "imap.saint-ex.deuxfleurs.org"; - port = 993; - }; + #primary = false; + #thunderbird = { enable = true; }; + #imap = { + # host = "imap.saint-ex.deuxfleurs.org"; + # port = 993; + #}; - smtp = { - host = "smtp.saint-ex.deuxfleurs.org"; - port = 465; - }; - }; + #smtp = { + # host = "smtp.saint-ex.deuxfleurs.org"; + # port = 465; + #}; + #}; "mrflos@mrflos.pw" = { realName = "Florian Schmitt"; userName = "mrflos"; @@ -250,7 +211,7 @@ in { vimAlias = true; coc.enable = false; - plugins = [ treesitterWithGrammars ]; + #plugins = [ treesitterWithGrammars ]; }; password-store = { @@ -263,10 +224,10 @@ in { }; }; - thunderbird = { - enable = true; - profiles.default = { isDefault = true; }; - }; + #thunderbird = { + # enable = true; + # profiles.default = { isDefault = true; }; + #}; starship = { enable = true; @@ -275,7 +236,7 @@ in { zsh = { enable = true; - enableAutosuggestions = true; + autosuggestion.enable = true; enableCompletion = true; shellAliases = { #tmux = "tmux -f ~/.config/tmux/tmux.conf attach || tmux -f ~/.config/tmux/tmux.conf new"; @@ -305,105 +266,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 1955138..7028ec1 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 4907359..66e8ef6 100644 --- a/modules/local-dev.nix +++ b/modules/local-dev.nix @@ -1,84 +1,101 @@ # Local developpement { pkgs, config, lib, ... }: { - virtualisation = { - docker.enable = true; - #docker.rootless = { - # enable = true; - # setSocketVariable = true; - #}; - #libvirtd.enable = true; - #lxd.enable = true; - #waydroid.enable = true; - }; + # virtualisation = { + # docker.enable = true; + # #docker.rootless = { + # # enable = true; + # # setSocketVariable = true; + # #}; + # #libvirtd.enable = true; + # #lxd.enable = true; + # #waydroid.enable = true; + # }; - 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; + # 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]}"; - }; - }; + # #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; - }; +# services.mysql = { +# enable = true; +# package = pkgs.mariadb; +# }; + homebrew.enable = true; + homebrew.brews = [ + # `brew install` + #"imagemagick" + + # `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; [ - #clang + environment.systemPackages = with pkgs; + let + php83 = pkgs.php83.buildEnv { extraConfig = "max_upload_size = 2G"; }; + in [ + cmake dart-sass - dbeaver docker-compose + fd + fzf gcc - gitkraken go - nixfmt + lua-language-server + nixfmt-classic nixpkgs-fmt nodejs nodePackages.eslint @@ -88,7 +105,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