diff options
| author | Simen A. W. Olsen <hello@simenandre.no> | 2026-03-21 18:43:01 +0100 |
|---|---|---|
| committer | Simen A. W. Olsen <hello@simenandre.no> | 2026-03-21 18:43:01 +0100 |
| commit | e08f800b6dc1bc6a6a6127c12b7df72bd219d50b (patch) | |
| tree | d8946586bdda098983322316d02421c57ffb885d /modules | |
| parent | 1fd92fcaf3aadea1e9509f859340f57100218c41 (diff) | |
| download | dotfiles-e08f800b6dc1bc6a6a6127c12b7df72bd219d50b.tar.gz dotfiles-e08f800b6dc1bc6a6a6127c12b7df72bd219d50b.zip | |
use nix
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/darwin/default.nix | 15 | ||||
| -rw-r--r-- | modules/darwin/homebrew.nix | 119 | ||||
| -rw-r--r-- | modules/darwin/macos.nix | 3 | ||||
| -rw-r--r-- | modules/home/default.nix | 19 | ||||
| -rw-r--r-- | modules/home/git.nix | 8 | ||||
| -rw-r--r-- | modules/home/lazygit.nix | 20 | ||||
| -rw-r--r-- | modules/home/twm.nix | 37 | ||||
| -rw-r--r-- | modules/nixos/default.nix | 6 |
8 files changed, 145 insertions, 82 deletions
diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix index 5474b91..5b487ef 100644 --- a/modules/darwin/default.nix +++ b/modules/darwin/default.nix @@ -6,8 +6,8 @@ ./macos.nix ]; - # Enable experimental Nix features - nix.settings.experimental-features = "nix-command flakes"; + # Nix is managed by Determinate installer + nix.enable = false; # Allow unfree packages nixpkgs.config.allowUnfree = true; @@ -15,8 +15,17 @@ # System state version – do not change after first installation system.stateVersion = 5; + # Primary user for system defaults and homebrew + system.primaryUser = "cobraz"; + # Enable Touch ID for sudo - security.pam.enableSudoTouchIdAuth = true; + security.pam.services.sudo_local.touchIdAuth = true; + + # Remap Caps Lock to Escape + system.keyboard = { + enableKeyMapping = true; + remapCapsLockToEscape = true; + }; # Core system packages available to all users environment.systemPackages = with pkgs; [ diff --git a/modules/darwin/homebrew.nix b/modules/darwin/homebrew.nix index 9ac9816..2434d7d 100644 --- a/modules/darwin/homebrew.nix +++ b/modules/darwin/homebrew.nix @@ -11,13 +11,10 @@ }; taps = [ - "bramstein/webfonttools" - "danielgtaylor/restish" "oven-sh/bun" "pulumi/tap" "go-task/tap" "tursodatabase/tap" - "yakitrak/yakitrak" "simenandre/tools" ]; @@ -42,11 +39,7 @@ "openssh" "nmap" "wget" - - # Security and encryption - "gnupg" - "git-secret" - "ssh-copy-id" + "cloudflared" # Compression libraries and tools "lz4" @@ -55,60 +48,58 @@ "libffi" "p7zip" "pigz" - "zopfli" # Programming languages and runtimes "golang" "golangci-lint" - "python@3.11" "rust" "zig" - "pkl" - - # Font tools - "sfnt2woff" - "sfnt2woff-zopfli" - "woff2" + "typst" # JavaScript runtimes and package managers "bun" "pnpm" "volta" - "corepack" "deno" - # REST API clients - "danielgtaylor/restish/restish" - # Version control "git" "git-lfs" + "git-delta" "lazygit" - "microplane" # Search tools "ripgrep" - "ack" "fzf" # JSON/YAML processing tools "jq" "yq" + # Protobuf and gRPC + "protobuf" + "protoc-gen-go" + "protoc-gen-go-grpc" + # Cloud and IaC tools "pulumi" - "crd2pulumi" - "kube2pulumi" "pulumictl" - "tf2pulumi" "azure-cli" "kubectl" "helm" "cilium-cli" "doctl" "flyctl" + "talosctl" + "tektoncd-cli" + "runpodctl" # Container tools + "docker" + "docker-buildx" + "docker-compose" + "docker-completion" + "colima" "podman" "podman-compose" @@ -119,74 +110,74 @@ # Databases and database tools "turso" "libpq" - "sqld" # Terminal tools "pv" "rename" - "rlwrap" "tree" - "screen" - "vbindiff" - "tmate" - "asciinema" - "dasel" "tldr" "starship" "gh" - "claude-code" + "htop" + "opencode" # HTTP and web servers "caddy" "goreleaser" - # Specific toolsets - "whalebrew" - "gd" + # Document and media tools + "pandoc" + "ffmpeg" + "tesseract" "ghostscript" - "rclone" "graphviz" + # Python tools + "pipx" + + # Specific toolsets + "rclone" + # Mac App Store CLI "mas" ]; casks = [ - "spotify" - "slack" - "sonos" - "figma" - "discord" - "grammarly" - "microsoft-remote-desktop" - "postico" - "cyberduck" - "adobe-creative-cloud" + "1password" "1password-cli" - "protonvpn" - "openvpn-connect" - "raycast" - "rectangle" - "google-chrome" - "google-drive" - "karabiner-elements" - "postman" - "ghostty" - "proton-mail" + "arc" + "basictex" "claude" - "font-symbols-only-nerd-font" + "discord" + "elgato-camera-hub" + "figma" "font-jetbrains-mono" - "google-cloud-sdk" - "docker" - "podman-desktop" + "font-symbols-only-nerd-font" + "gcloud-cli" + "ghostty" + "google-chrome" + "google-chrome@canary" + "google-drive" + "libreoffice" + "loom" "microsoft-teams" - "zoom" "obsidian" + "postico" + "proton-mail" + "protonvpn" + "raycast" + "signal" + "slack" + "sonos" + "spotify" + "visual-studio-code" + "zoom" ]; masApps = { - "Outline" = 1356178125; - "Remote Desktop" = 409907375; + "Tailscale" = 1475387142; + "Jojo" = 1659864300; + "reMarkable" = 1276493162; }; }; } diff --git a/modules/darwin/macos.nix b/modules/darwin/macos.nix index 8927903..0dd120a 100644 --- a/modules/darwin/macos.nix +++ b/modules/darwin/macos.nix @@ -65,13 +65,14 @@ Clicking = true; }; + ActivityMonitor = { # Show the main window when launching Activity Monitor OpenMainWindow = true; # Visualize CPU usage in the Activity Monitor Dock icon IconType = 5; # Show all processes in Activity Monitor - ShowCategory = 0; + ShowCategory = 100; # Sort Activity Monitor results by CPU usage SortColumn = "CPUUsage"; SortDirection = 0; diff --git a/modules/home/default.nix b/modules/home/default.nix index 1ff1c19..b9c80e5 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ pkgs, lib, config, ... }: { imports = [ @@ -6,12 +6,17 @@ ./ghostty.nix ./starship.nix ./tmux.nix + ./lazygit.nix + ./twm.nix ./zsh.nix ]; home = { - username = "simenandre"; - homeDirectory = if pkgs.stdenv.isDarwin then "/Users/simenandre" else "/home/simenandre"; + homeDirectory = lib.mkForce ( + if pkgs.stdenv.isDarwin + then "/Users/${config.home.username}" + else "/home/${config.home.username}" + ); # Do not change this after the first installation stateVersion = "24.11"; }; @@ -23,10 +28,10 @@ # Let home-manager manage itself programs.home-manager.enable = true; - # Install Claude Code via npm on Linux (on macOS it's managed by Homebrew) - home.activation.installClaudeCode = lib.mkIf (!pkgs.stdenv.isDarwin) - (lib.hm.dag.entryAfter [ "writeBoundary" ] '' + # Install Claude Code via npm + home.activation.installClaudeCode = + lib.hm.dag.entryAfter [ "writeBoundary" ] '' export PATH="${pkgs.nodejs_22}/bin:$PATH" npm install -g @anthropic-ai/claude-code 2>/dev/null || true - ''); + ''; } diff --git a/modules/home/git.nix b/modules/home/git.nix index e79a760..3865e25 100644 --- a/modules/home/git.nix +++ b/modules/home/git.nix @@ -3,15 +3,17 @@ { programs.git = { enable = true; - userName = "Simen A. W. Olsen"; - userEmail = "hello@simenandre.no"; signing = { key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCyUn5BfmAnd/6xi0X1mYF/+jPOmCS0bpNUePF55gCY"; signByDefault = true; }; - extraConfig = { + settings = { + user = { + name = "Simen A. W. Olsen"; + email = "hello@simenandre.no"; + }; apply.whitespace = "fix"; core = { trustctime = false; diff --git a/modules/home/lazygit.nix b/modules/home/lazygit.nix new file mode 100644 index 0000000..da8996a --- /dev/null +++ b/modules/home/lazygit.nix @@ -0,0 +1,20 @@ +{ ... }: + +{ + home.file.".config/lazygit/config.yml".text = '' + git: + pagers: + - colorArg: always + pager: delta --dark --paging=never + customCommands: + - key: "C" + context: "files" + description: "Generate commit message with Claude Code" + command: > + git diff --staged | $HOME/.local/bin/claude -p 'Generate a concise git commit message for these staged changes. + Output ONLY the raw commit message with no markdown, no code blocks, no backticks, no explanations. + Use conventional commit format.' --model haiku --output-format text > /tmp/commit_msg && + GIT_EDITOR=nvim git commit -e -F /tmp/commit_msg + output: terminal + ''; +} diff --git a/modules/home/twm.nix b/modules/home/twm.nix new file mode 100644 index 0000000..cebfc6e --- /dev/null +++ b/modules/home/twm.nix @@ -0,0 +1,37 @@ +{ config, ... }: + +{ + home.file.".config/twm/twm.yaml".text = '' + search_paths: + - ${config.home.homeDirectory}/ghq + - ~/.config/nvim/ + + exclude_path_components: + - .git + - .direnv + - node_modules + - venv + - target + + workspace_definitions: + - name: catchall + default_layout: catchall-dev + + - name: go + has_all_files: + - go.mod + - go.sum + + - name: docker-compose + has_any_file: + - docker-compose.yml + - docker-compose.yaml + has_all_files: + - Dockerfile + - .git + + - name: pulumi + has_all_files: + - Pulumi.yaml + ''; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 155601a..f005dbd 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,9 +1,7 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: { - imports = [ - ./hardware-configuration.nix - ]; + imports = [ ] ++ lib.optional (builtins.pathExists ./hardware-configuration.nix) ./hardware-configuration.nix; # Enable experimental Nix features nix.settings.experimental-features = "nix-command flakes"; |
