From 8e8ea8b835be103b85d620d219258efbcd75f796 Mon Sep 17 00:00:00 2001 From: Andrei Lazarescu Date: Sat, 12 Jul 2025 12:37:52 +0300 Subject: [PATCH] refactoring --- flake.lock | 42 ++----- flake.nix | 248 ++------------------------------------- home/andrei/default.nix | 16 +++ home/andrei/direnv.nix | 8 ++ home/andrei/firefox.nix | 33 ++++++ home/andrei/gh.nix | 8 ++ home/andrei/git.nix | 29 +++++ home/andrei/home.nix | 8 ++ home/andrei/kitty.nix | 17 +++ home/andrei/services.nix | 5 + home/andrei/ssh.nix | 10 ++ home/andrei/vscode.nix | 30 +++++ home/andrei/zsh.nix | 18 +++ system/default.nix | 14 +++ system/defaults.nix | 20 ++++ system/fonts.nix | 5 + system/homebrew.nix | 20 ++++ system/nix.nix | 5 + system/programs.nix | 5 + system/security.nix | 8 ++ system/services.nix | 5 + system/system.nix | 21 ++++ 22 files changed, 307 insertions(+), 268 deletions(-) create mode 100644 home/andrei/default.nix create mode 100644 home/andrei/direnv.nix create mode 100644 home/andrei/firefox.nix create mode 100644 home/andrei/gh.nix create mode 100644 home/andrei/git.nix create mode 100644 home/andrei/home.nix create mode 100644 home/andrei/kitty.nix create mode 100644 home/andrei/services.nix create mode 100644 home/andrei/ssh.nix create mode 100644 home/andrei/vscode.nix create mode 100644 home/andrei/zsh.nix create mode 100644 system/default.nix create mode 100644 system/defaults.nix create mode 100644 system/fonts.nix create mode 100644 system/homebrew.nix create mode 100644 system/nix.nix create mode 100644 system/programs.nix create mode 100644 system/security.nix create mode 100644 system/services.nix create mode 100644 system/system.nix diff --git a/flake.lock b/flake.lock index dd3b75c..4ed2966 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1751638848, - "narHash": "sha256-7HiC6w4ROEbMmKtj5pilnLOJej9HkkfU9wEd5QSTyNo=", + "lastModified": 1752265577, + "narHash": "sha256-YhnBM3oknReSFTAuc2SMwekwjl9nDd5PUhcar4DsefM=", "owner": "nix-community", "repo": "home-manager", - "rev": "7d9e3c35f0d46f82bac791d76260f15f53d83529", + "rev": "3976e0507edc9a5f332cb2be93fa20e646d22374", "type": "github" }, "original": { @@ -65,11 +65,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751596331, - "narHash": "sha256-7WSzIrw0nCl8iYroj7c//LLsf2zgNEIJNyUSvx4MPLI=", + "lastModified": 1751949589, + "narHash": "sha256-mgFxAPLWw0Kq+C8P3dRrZrOYEQXOtKuYVlo9xvPntt8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "472908faa934435cf781ae8fac77291af3d137d3", + "rev": "9b008d60392981ad674e04016d25619281550a9d", "type": "github" }, "original": { @@ -84,15 +84,14 @@ "flake-parts": "flake-parts", "nixpkgs": [ "nixpkgs" - ], - "treefmt-nix": "treefmt-nix" + ] }, "locked": { - "lastModified": 1751642422, - "narHash": "sha256-hvYrV5Wu6EwIIVsq9hpnIacrvykgZ7SxgTQ4a465sag=", + "lastModified": 1752264610, + "narHash": "sha256-wxbq3NFcAQIl06Of7YHSX2/8jD391rvlga5cINX8DRU=", "owner": "nix-community", "repo": "NUR", - "rev": "390876721dd32c9797da8935dd912477c4533311", + "rev": "556ac89a1c7d9d65ecd7bd0c07e24dcaccd80293", "type": "github" }, "original": { @@ -108,27 +107,6 @@ "nixpkgs": "nixpkgs", "nur": "nur" } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 1f8f60e..fba1ddd 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Example nix-darwin system flake"; + description = "Andrei's nix-darwin system flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; @@ -12,243 +12,19 @@ }; outputs = { self, nix-darwin, nixpkgs, home-manager, nur, ... }: - let - configuration = { pkgs, nur, ... }: { - - nixpkgs.overlays = [ nur.overlays.default ]; - # List packages installed in system profile. To search by name, run: - # $ nix-env -qaP | grep wget - environment.systemPackages = []; - - # Necessary for using flakes on this system. - nix.settings.experimental-features = "nix-command flakes"; - nix.settings.warn-dirty = false; - - # Set Git commit hash for darwin-version. - system.configurationRevision = self.rev or self.dirtyRev or null; - - # Used for backwards compatibility, please read the changelog before changing. - # $ darwin-rebuild changelog - system.stateVersion = 6; - - # The platform the configuration will be used on. - nixpkgs.hostPlatform = "aarch64-darwin"; - nixpkgs.config = { allowUnfree = true; }; - - users.users.andrei = { - home = "/Users/andrei"; - name = "andrei"; - }; - - system.primaryUser = "andrei"; - system.defaults.dock = { - tilesize = 40; - show-recents = false; - persistent-apps = [ - ]; - }; - - system.defaults.finder = { - FXDefaultSearchScope = "SCcf"; - FXEnableExtensionChangeWarning = false; - FXRemoveOldTrashItems = true; - }; - - system.defaults.NSGlobalDomain = { - NSAutomaticCapitalizationEnabled = false; - NSAutomaticSpellingCorrectionEnabled = false; - "com.apple.mouse.tapBehavior" = 1; - }; - - fonts.packages = [ pkgs.fira-code pkgs.nerd-fonts.fira-code ]; - - homebrew = { - enable = true; - brews = [ "asdf" "libyaml" "libpq" "k9s" - { - name = "postgresql@17"; - restart_service = "changed"; - } - ]; - casks = [ "raycast" "firefox" "slack" "google-chrome" "cursor" "qbittorrent" "vlc" "obsidian" ]; - onActivation = { - cleanup = "zap"; - }; - global = { - autoUpdate = false; - }; - }; - - programs = { - _1password-gui.enable = true; - }; - - security.pam.services.sudo_local = { - enable = true; - reattach = true; - touchIdAuth = true; - watchIdAuth = true; - }; - - - services = { - tailscale.enable = true; - }; - - home-manager.useGlobalPkgs = true; - home-manager.backupFileExtension = "bak"; - home-manager.users.andrei = { - home.packages = [ pkgs.go]; - home.stateVersion = "25.11"; - - programs = { - kitty = { - enable = true; - font = { - name = "FiraCode Nerd Font Mono"; - size = 16; - }; - settings = { - disable_ligatures = "never"; - confirm_os_window_close = 0; - }; - shellIntegration.enableZshIntegration = true; - keybindings = { - "cmd+u" = "kitten hints --type url"; - }; - }; - firefox = { - enable = true; - package = null; - profiles.default = { - isDefault = true; - extensions = { - force = true; - packages = with pkgs.nur.repos.rycee.firefox-addons; [ - ublock-origin - onepassword-password-manager - sponsorblock - imagus - reddit-enhancement-suite - react-devtools - ]; - settings = {}; - }; - settings = { - "extensions.autoDisableScopes" = 0; - "full-screen-api.transition-duration.enter" = 0; - "full-screen-api.transition-duration.exit" = 0; - "full-screen-api.warning.timeout" = 0; - "browser.fullscreen.exit_on_escape" = false; - "browser.tabs.closeWindowWithLastTab" = false; - "browser.ctrlTab.sortByRecentlyUsed" = true; - "browser.startup.page" = 3; - }; - }; - }; - vscode = { - enable = true; - mutableExtensionsDir = false; - profiles.default = { - enableExtensionUpdateCheck = true; - enableUpdateCheck = true; - extensions = [ - pkgs.vscode-extensions.ms-vscode-remote.remote-ssh - pkgs.vscode-extensions.ms-vscode-remote.remote-ssh-edit - pkgs.vscode-extensions.jnoortheen.nix-ide - pkgs.vscode-extensions.ms-dotnettools.csdevkit - pkgs.vscode-extensions.ms-dotnettools.csharp - pkgs.vscode-extensions.ms-dotnettools.vscode-dotnet-runtime - pkgs.vscode-extensions.shopify.ruby-lsp - pkgs.vscode-extensions.castwide.solargraph - ]; - userSettings = { - "editor.fontSize" = 16; - "editor.fontFamily" = "'FiraCode Nerd Font Mono'"; - "editor.fontLigatures" = true; - "security.workspace.trust.enabled" = false; - "remote.SSH.enableAgentForwarding" = true; - "git.enableSmartCommit" = true; - }; - }; - }; - ssh = { - enable = true; - extraConfig = '' - Host * - IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" - SetEnv TERM=xterm-256color - ''; - }; - direnv = { - enable = true; - enableZshIntegration = true; - nix-direnv.enable = true; - silent = true; - }; - zsh = { - enable = true; - enableCompletion = true; - enableVteIntegration = true; - autocd = true; - autosuggestion = { - enable = true; - }; - syntaxHighlighting = { - enable = true; - }; - envExtra = '' - # Add asdf shims to PATH - export PATH="$HOME/.asdf/shims:$PATH" - ''; - }; - git = { - enable = true; - package = pkgs.gitFull; - aliases = {}; - lfs.enable = true; - userEmail = "lazarescu.andrei19@gmail.com"; - userName = "Andrei Lazarescu"; - extraConfig = { - user.signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFkft5uSiWODIKIBGFPSCRktDEaxYPbudDUYlYyj53w/"; - gpg.format = "ssh"; - gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; - commit.gpgSign = true; - advice = { - addEmptyPathspec = false; - pushNonFastForward = false; - statusHints = false; - }; - init.defaultBranch = "main"; - pull.rebase = true; - push.autoSetupRemote = true; - "url \"git@github.com:\"".insteadOf = "gh:"; - "url \"git@gitlab.com:\"".insteadOf = "gl:"; - "url \"git@git.lazarescu.xyz:2222/lazandrei19/\"".insteadOf = "lz:"; - }; - }; - gh = { - enable = true; - settings = { - git_protocol = "ssh"; - }; - }; - }; - - services = { - ollama = { - enable = true; - }; - }; - }; - }; - in { - # Build darwin flake using: - # $ darwin-rebuild build --flake .#Andreis-MacBook-Pro darwinConfigurations."Andreis-MacBook-Pro" = nix-darwin.lib.darwinSystem { specialArgs = { inherit nur; }; - modules = [ configuration home-manager.darwinModules.home-manager ]; + modules = [ + ./system + { + nixpkgs.overlays = [ nur.overlays.default ]; + home-manager.useGlobalPkgs = true; + home-manager.backupFileExtension = "bak"; + home-manager.users.andrei = import ./home/andrei; + } + home-manager.darwinModules.home-manager + ]; }; }; -} +} \ No newline at end of file diff --git a/home/andrei/default.nix b/home/andrei/default.nix new file mode 100644 index 0000000..b1f5f5d --- /dev/null +++ b/home/andrei/default.nix @@ -0,0 +1,16 @@ +{ ... }: + +{ + imports = [ + ./direnv.nix + ./firefox.nix + ./gh.nix + ./git.nix + ./home.nix + ./kitty.nix + ./services.nix + ./ssh.nix + ./vscode.nix + ./zsh.nix + ]; +} diff --git a/home/andrei/direnv.nix b/home/andrei/direnv.nix new file mode 100644 index 0000000..7c6d193 --- /dev/null +++ b/home/andrei/direnv.nix @@ -0,0 +1,8 @@ +{ + programs.direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + silent = true; + }; +} diff --git a/home/andrei/firefox.nix b/home/andrei/firefox.nix new file mode 100644 index 0000000..52caac1 --- /dev/null +++ b/home/andrei/firefox.nix @@ -0,0 +1,33 @@ +{ pkgs, nur, ... }: + +{ + programs.firefox = { + enable = true; + package = null; + profiles.default = { + isDefault = true; + extensions = { + force = true; + packages = with pkgs.nur.repos.rycee.firefox-addons; [ + ublock-origin + onepassword-password-manager + sponsorblock + imagus + reddit-enhancement-suite + react-devtools + ]; + settings = {}; + }; + settings = { + "extensions.autoDisableScopes" = 0; + "full-screen-api.transition-duration.enter" = 0; + "full-screen-api.transition-duration.exit" = 0; + "full-screen-api.warning.timeout" = 0; + "browser.fullscreen.exit_on_escape" = false; + "browser.tabs.closeWindowWithLastTab" = false; + "browser.ctrlTab.sortByRecentlyUsed" = true; + "browser.startup.page" = 3; + }; + }; + }; +} diff --git a/home/andrei/gh.nix b/home/andrei/gh.nix new file mode 100644 index 0000000..9120613 --- /dev/null +++ b/home/andrei/gh.nix @@ -0,0 +1,8 @@ +{ + programs.gh = { + enable = true; + settings = { + git_protocol = "ssh"; + }; + }; +} diff --git a/home/andrei/git.nix b/home/andrei/git.nix new file mode 100644 index 0000000..3cf4cf9 --- /dev/null +++ b/home/andrei/git.nix @@ -0,0 +1,29 @@ +{ pkgs, ... }: + +{ + programs.git = { + enable = true; + package = pkgs.gitFull; + aliases = {}; + lfs.enable = true; + userEmail = "lazarescu.andrei19@gmail.com"; + userName = "Andrei Lazarescu"; + extraConfig = { + user.signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFkft5uSiWODIKIBGFPSCRktDEaxYPbudDUYlYyj53w/"; + gpg.format = "ssh"; + gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; + commit.gpgSign = true; + advice = { + addEmptyPathspec = false; + pushNonFastForward = false; + statusHints = false; + }; + init.defaultBranch = "main"; + pull.rebase = true; + push.autoSetupRemote = true; + "url \"git@github.com:\"".insteadOf = "gh:"; + "url \"git@gitlab.com:\"".insteadOf = "gl:"; + "url \"git@git.lazarescu.xyz:2222/lazandrei19/\"".insteadOf = "lz:"; + }; + }; +} diff --git a/home/andrei/home.nix b/home/andrei/home.nix new file mode 100644 index 0000000..8e0226d --- /dev/null +++ b/home/andrei/home.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + home = { + packages = [ pkgs.go ]; + stateVersion = "25.11"; + }; +} diff --git a/home/andrei/kitty.nix b/home/andrei/kitty.nix new file mode 100644 index 0000000..d284a76 --- /dev/null +++ b/home/andrei/kitty.nix @@ -0,0 +1,17 @@ +{ + programs.kitty = { + enable = true; + font = { + name = "FiraCode Nerd Font Mono"; + size = 16; + }; + settings = { + disable_ligatures = "never"; + confirm_os_window_close = 0; + }; + shellIntegration.enableZshIntegration = true; + keybindings = { + "cmd+u" = "kitten hints --type url"; + }; + }; +} diff --git a/home/andrei/services.nix b/home/andrei/services.nix new file mode 100644 index 0000000..19087de --- /dev/null +++ b/home/andrei/services.nix @@ -0,0 +1,5 @@ +{ + services.ollama = { + enable = true; + }; +} diff --git a/home/andrei/ssh.nix b/home/andrei/ssh.nix new file mode 100644 index 0000000..e8a1527 --- /dev/null +++ b/home/andrei/ssh.nix @@ -0,0 +1,10 @@ +{ + programs.ssh = { + enable = true; + extraConfig = '' + Host * + IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" + SetEnv TERM=xterm-256color + ''; + }; +} diff --git a/home/andrei/vscode.nix b/home/andrei/vscode.nix new file mode 100644 index 0000000..a4f563e --- /dev/null +++ b/home/andrei/vscode.nix @@ -0,0 +1,30 @@ +{ pkgs, ... }: + +{ + programs.vscode = { + enable = true; + mutableExtensionsDir = false; + profiles.default = { + enableExtensionUpdateCheck = true; + enableUpdateCheck = true; + extensions = [ + pkgs.vscode-extensions.ms-vscode-remote.remote-ssh + pkgs.vscode-extensions.ms-vscode-remote.remote-ssh-edit + pkgs.vscode-extensions.jnoortheen.nix-ide + pkgs.vscode-extensions.ms-dotnettools.csdevkit + pkgs.vscode-extensions.ms-dotnettools.csharp + pkgs.vscode-extensions.ms-dotnettools.vscode-dotnet-runtime + pkgs.vscode-extensions.shopify.ruby-lsp + pkgs.vscode-extensions.castwide.solargraph + ]; + userSettings = { + "editor.fontSize" = 16; + "editor.fontFamily" = "'FiraCode Nerd Font Mono'"; + "editor.fontLigatures" = true; + "security.workspace.trust.enabled" = false; + "remote.SSH.enableAgentForwarding" = true; + "git.enableSmartCommit" = true; + }; + }; + }; +} diff --git a/home/andrei/zsh.nix b/home/andrei/zsh.nix new file mode 100644 index 0000000..50f4e88 --- /dev/null +++ b/home/andrei/zsh.nix @@ -0,0 +1,18 @@ +{ + programs.zsh = { + enable = true; + enableCompletion = true; + enableVteIntegration = true; + autocd = true; + autosuggestion = { + enable = true; + }; + syntaxHighlighting = { + enable = true; + }; + envExtra = '' + # Add asdf shims to PATH + export PATH="$HOME/.asdf/shims:$PATH" + ''; + }; +} diff --git a/system/default.nix b/system/default.nix new file mode 100644 index 0000000..12d5e1a --- /dev/null +++ b/system/default.nix @@ -0,0 +1,14 @@ +{ ... }: + +{ + imports = [ + ./defaults.nix + ./fonts.nix + ./homebrew.nix + ./nix.nix + ./programs.nix + ./security.nix + ./services.nix + ./system.nix + ]; +} diff --git a/system/defaults.nix b/system/defaults.nix new file mode 100644 index 0000000..b2b7b25 --- /dev/null +++ b/system/defaults.nix @@ -0,0 +1,20 @@ +{ + system.defaults.dock = { + tilesize = 40; + show-recents = false; + persistent-apps = [ + ]; + }; + + system.defaults.finder = { + FXDefaultSearchScope = "SCcf"; + FXEnableExtensionChangeWarning = false; + FXRemoveOldTrashItems = true; + }; + + system.defaults.NSGlobalDomain = { + NSAutomaticCapitalizationEnabled = false; + NSAutomaticSpellingCorrectionEnabled = false; + "com.apple.mouse.tapBehavior" = 1; + }; +} diff --git a/system/fonts.nix b/system/fonts.nix new file mode 100644 index 0000000..fa89256 --- /dev/null +++ b/system/fonts.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: + +{ + fonts.packages = [ pkgs.fira-code pkgs.nerd-fonts.fira-code ]; +} diff --git a/system/homebrew.nix b/system/homebrew.nix new file mode 100644 index 0000000..491a36b --- /dev/null +++ b/system/homebrew.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + homebrew = { + enable = true; + brews = [ "asdf" "libyaml" "libpq" "k9s" + { + name = "postgresql@17"; + restart_service = "changed"; + } + ]; + casks = [ "raycast" "firefox" "slack" "google-chrome" "cursor" "qbittorrent" "vlc" "obsidian" ]; + onActivation = { + cleanup = "zap"; + }; + global = { + autoUpdate = false; + }; + }; +} diff --git a/system/nix.nix b/system/nix.nix new file mode 100644 index 0000000..a9beb5e --- /dev/null +++ b/system/nix.nix @@ -0,0 +1,5 @@ +{ + # Necessary for using flakes on this system. + nix.settings.experimental-features = "nix-command flakes"; + nix.settings.warn-dirty = false; +} diff --git a/system/programs.nix b/system/programs.nix new file mode 100644 index 0000000..27e7aa7 --- /dev/null +++ b/system/programs.nix @@ -0,0 +1,5 @@ +{ + programs = { + _1password-gui.enable = true; + }; +} diff --git a/system/security.nix b/system/security.nix new file mode 100644 index 0000000..ea6630c --- /dev/null +++ b/system/security.nix @@ -0,0 +1,8 @@ +{ + security.pam.services.sudo_local = { + enable = true; + reattach = true; + touchIdAuth = true; + watchIdAuth = true; + }; +} diff --git a/system/services.nix b/system/services.nix new file mode 100644 index 0000000..cf96239 --- /dev/null +++ b/system/services.nix @@ -0,0 +1,5 @@ +{ + services = { + tailscale.enable = true; + }; +} diff --git a/system/system.nix b/system/system.nix new file mode 100644 index 0000000..735649f --- /dev/null +++ b/system/system.nix @@ -0,0 +1,21 @@ +{ self, ... }: + +{ + # Set Git commit hash for darwin-version. + system.configurationRevision = self.rev or self.dirtyRev or null; + + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + system.stateVersion = 6; + + # The platform the configuration will be used on. + nixpkgs.hostPlatform = "aarch64-darwin"; + nixpkgs.config = { allowUnfree = true; }; + + users.users.andrei = { + home = "/Users/andrei"; + name = "andrei"; + }; + + system.primaryUser = "andrei"; +}