diff --git a/darwin-common.nix b/darwin-common.nix index f92eab30..06390fa7 100644 --- a/darwin-common.nix +++ b/darwin-common.nix @@ -8,7 +8,7 @@ nix.settings.experimental-features = [ "nix-command" "flakes" ]; security.pam.enableSudoTouchIdAuth = true; programs.zsh.shellInit = '' - eval $(/opt/homebrew/bin/brew shellenv)' + eval "$(/opt/homebrew/bin/brew shellenv)" ''; environment.systemPath = [ "/opt/homebrew/bin" "/opt/homebrew/sbin" ]; #nix.settings.auto-optimise-store = true; diff --git a/flake.lock b/flake.lock index fa45ddfc..c07cf6f9 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1716561646, - "narHash": "sha256-UIGtLO89RxKt7RF2iEgPikSdU53r6v/6WYB0RW3k89I=", + "lastModified": 1718371084, + "narHash": "sha256-abpBi61mg0g+lFFU0zY4C6oP6fBwPzbHPKBGw676xsA=", "owner": "ryantm", "repo": "agenix", - "rev": "c2fc0762bbe8feb06a2e59a364fa81b3a57671c9", + "rev": "3a56735779db467538fb2e577eda28a9daacaca6", "type": "github" }, "original": { @@ -40,6 +40,27 @@ "type": "github" } }, + "crane": { + "inputs": { + "nixpkgs": [ + "helix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709610799, + "narHash": "sha256-5jfLQx0U9hXbi2skYMGodDJkIgffrjIOgMRjZqms2QE=", + "owner": "ipetkov", + "repo": "crane", + "rev": "81c393c776d5379c030607866afef6406ca1be57", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -69,11 +90,11 @@ ] }, "locked": { - "lastModified": 1716511055, - "narHash": "sha256-5Fe/DGgvMhPEMl9VdVxv3zvwRcwNDmW5eRJ0gk72w7U=", + "lastModified": 1718662658, + "narHash": "sha256-AKG7BsqtVWDlefgzyKz7vjaKTLi4+bmTSBhowbQoZtM=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "0bea8222f6e83247dd13b055d83e64bce02ee532", + "rev": "29b3096a6e283d7e6779187244cb2a3942239fdf", "type": "github" }, "original": { @@ -139,11 +160,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1709126324, + "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "d465f4819400de7c8d874d50b982301f28a84605", "type": "github" }, "original": { @@ -156,6 +177,24 @@ "inputs": { "systems": "systems_4" }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_5" + }, "locked": { "lastModified": 1685518550, "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", @@ -170,6 +209,27 @@ "type": "github" } }, + "helix": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1718700216, + "narHash": "sha256-7Edn+2OThc1FdAFE59C999ET7xbH8zxw3KZVZz9qv3g=", + "owner": "helix-editor", + "repo": "helix", + "rev": "d70f58da10194131bacf596b09b7a057bf7e9425", + "type": "github" + }, + "original": { + "owner": "helix-editor", + "repo": "helix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -198,27 +258,27 @@ ] }, "locked": { - "lastModified": 1716729592, - "narHash": "sha256-Y3bOjoh2cFBqZN0Jw1zUdyr7tjygyxl2bD/QY73GZP0=", + "lastModified": 1718530513, + "narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=", "owner": "nix-community", "repo": "home-manager", - "rev": "2c78a57c544dd19b07442350727ced097e1aa6e6", + "rev": "a1fddf0967c33754271761d91a3d921772b30d0e", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-23.11", + "ref": "release-24.05", "repo": "home-manager", "type": "github" } }, "imab": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay" + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1716678964, @@ -236,11 +296,11 @@ }, "impermanence": { "locked": { - "lastModified": 1708968331, - "narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=", + "lastModified": 1717932370, + "narHash": "sha256-7C5lCpiWiyPoIACOcu2mukn/1JRtz6HC/1aEMhUdcw0=", "owner": "nix-community", "repo": "impermanence", - "rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30", + "rev": "27979f1c3a0d3b9617a3563e2839114ba7d48d3f", "type": "github" }, "original": { @@ -295,11 +355,11 @@ ] }, "locked": { - "lastModified": 1716896735, - "narHash": "sha256-id351iMgA7aOla2BD6C/BTXMJTGigRQA64kCt8vM+cs=", + "lastModified": 1718200260, + "narHash": "sha256-YcifM/i8wMzZHjyY9FNoruDb5Arm6Xw4RKfdvZBLdQU=", "owner": "nix-community", "repo": "nixd", - "rev": "fe202307eaf7e89c4366ed927af761482a6065c8", + "rev": "6811dcf03ac055752a3f28cbabf90bd0b0cee417", "type": "github" }, "original": { @@ -310,11 +370,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1716881121, - "narHash": "sha256-oTf3enbe/lbiNzsyZ8ria+422hx4e/FB3xQcY2LPnJw=", + "lastModified": 1718548414, + "narHash": "sha256-1obyIuQPR/Kq1j5/i/5EuAfQrDwjYnjCDG8iLtXmBhQ=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "806e9d4a933dd1e75592e88894d4bd2f296f5bbf", + "rev": "cde8f7e11f036160b0fd6a9e07dc4c8e4061cf06", "type": "github" }, "original": { @@ -326,32 +386,32 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", + "lastModified": 1709479366, + "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-darwin": { "locked": { - "lastModified": 1716831864, - "narHash": "sha256-ixOy0p7GjOBTMj/VHjI/k/8M9PQ2omZebG6ohhFix/Y=", + "lastModified": 1718529426, + "narHash": "sha256-cPj5XeZm0rS0elg6HcLPNKXonAydlejJt20LIHZt6kk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c7815f2e44dd47202904b56600fcdab2eb9a2065", + "rev": "fed2354854f6da852a12e8e59e4414de794771f9", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", + "ref": "nixpkgs-24.05-darwin", "repo": "nixpkgs", "type": "github" } @@ -376,11 +436,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1716908784, - "narHash": "sha256-O9KWAhNy9VeOwkNQ7o0aGgGGxw5i2hiTpJJ6evu7vK8=", + "lastModified": 1718726077, + "narHash": "sha256-bJCzkCH+lgiytYucx3pmpuN7zwKE9ldl4929WwK1Dak=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "683ee2df30bd7c293cc9451a004b12e22b447e10", + "rev": "6d8d21411efd864784b575ea0798d4a8c0863a0b", "type": "github" }, "original": { @@ -392,16 +452,32 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1716633019, - "narHash": "sha256-xim1b5/HZYbWaZKyI7cn9TJCM6ewNVZnesRr00mXeS4=", + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9d29cd266cebf80234c98dd0b87256b6be0af44e", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1718437845, + "narHash": "sha256-ZT7Oc1g4I4pHVGGjQFnewFVDRLH5cIZhEzODLz9YXeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "752c634c09ceb50c45e751f8791cb45cb3d46c9e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } @@ -425,11 +501,11 @@ "noice-nvim": { "flake": false, "locked": { - "lastModified": 1716502618, - "narHash": "sha256-GrgFjVDIQcCfg5qyO6FnhlGUCrz6rwAFh81yZXUJra4=", + "lastModified": 1718648690, + "narHash": "sha256-eMcxoO6+bi423zJy90zdVAJt44LnV4jaU3U46r2vBGQ=", "owner": "folke", "repo": "noice.nvim", - "rev": "f119045f38792ad5311e5f9be7a879e4c1a95fe0", + "rev": "7ee3649b9b5f4df5b44ae63ed85b2c9fc834a124", "type": "github" }, "original": { @@ -472,7 +548,7 @@ }, "pnpm2nix": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_4", "nixpkgs": [ "lolpizza", "nixpkgs" @@ -497,6 +573,7 @@ "agenix": "agenix", "agkozak-zsh-prompt": "agkozak-zsh-prompt", "darwin": "darwin_2", + "helix": "helix", "home-manager": "home-manager_2", "imab": "imab", "impermanence": "impermanence", @@ -504,7 +581,7 @@ "miro": "miro", "nixd": "nixd", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nixpkgs-darwin": "nixpkgs-darwin", "nixpkgs-master": "nixpkgs-master", "nnn-nvim": "nnn-nvim", @@ -524,8 +601,33 @@ }, "rust-overlay": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs" + "flake-utils": [ + "helix", + "flake-utils" + ], + "nixpkgs": [ + "helix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709604635, + "narHash": "sha256-le4fwmWmjGRYWwkho0Gr7mnnZndOOe4XGbLw68OvF40=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "e86c0fb5d3a22a5f30d7f64ecad88643fe26449d", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1709863839, @@ -544,11 +646,11 @@ "spoons": { "flake": false, "locked": { - "lastModified": 1689613198, - "narHash": "sha256-L9uaTX3xKZgEoWKUhzJk2pn9wJh764KkxDtJDmv/yeY=", + "lastModified": 1717293677, + "narHash": "sha256-UYijuHkFy2o1zv5pb6+hO/X5WnW6u7j5oxZQ75ryk1k=", "owner": "Hammerspoon", "repo": "Spoons", - "rev": "5de05501a0bf8a691756e10469c190dce4f7c34e", + "rev": "70341ddc6ffeebc74f8264d9b2c52da0ee29060b", "type": "github" }, "original": { @@ -632,9 +734,24 @@ "type": "github" } }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "utils": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1710146030, @@ -689,11 +806,11 @@ "xonsh-fish-completer": { "flake": false, "locked": { - "lastModified": 1714421521, - "narHash": "sha256-blI3XPu7QkFNhxSNoHk+/TAS2rSmawt15AKrb3oA+BQ=", + "lastModified": 1718649913, + "narHash": "sha256-WmxOQ7F8avd/FWiezK54e2vBvvAolmDy51KwLA6FXkU=", "owner": "xonsh", "repo": "xontrib-fish-completer", - "rev": "2a7ceebc3efdd13ab5d67e749bb1d8c1913acc73", + "rev": "c345f0bf8c6aa8b717ac645c38050ae1a1902e0e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0f9ac11f..f15b6c4e 100644 --- a/flake.nix +++ b/flake.nix @@ -5,12 +5,12 @@ utils.url = "github:numtide/flake-utils"; ## nixos/nix-darwin dependencies - nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; - nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-23.11-darwin"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-24.05-darwin"; nixpkgs-master.url = "github:NixOS/nixpkgs/master"; agenix.url = "github:ryantm/agenix/main"; agenix.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager/release-23.11"; + home-manager.url = "github:nix-community/home-manager/release-24.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; impermanence.url = "github:nix-community/impermanence"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; @@ -26,6 +26,7 @@ x.inputs.nixpkgs.follows = "nixpkgs"; imab.url = "github:ulyssa/iamb"; imab.inputs.nixpkgs.follows = "nixpkgs"; + helix.url = "github:helix-editor/helix"; ## editor stuff nixd.url = "github:nix-community/nixd"; diff --git a/hm-modules/helix/default.nix b/hm-modules/helix/default.nix new file mode 100644 index 00000000..8fc1dd0a --- /dev/null +++ b/hm-modules/helix/default.nix @@ -0,0 +1,46 @@ +{ pkgs, config, lib, inputs, ... }: +let + cfg = config.ragon.helix; +in +{ + options.ragon.helix.enable = lib.mkOption { default = false; }; + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + nixpkgs-fmt + ## ts + typescript + dprint + nodePackages_latest.typescript-language-server + nodePackages_latest.vscode-langservers-extracted + ## python + ruff-lsp + nodePackages_latest.pyright + ]; + programs.helix = { + package = inputs.helix.packages.${pkgs.system}.default; + enable = true; + defaultEditor = true; + settings = { + theme = "gruvbox"; + editor = { + line-number = "relative"; + lsp.display-messages = true; + }; + }; + languages = { + language = lib.flatten [ + (map + (x: { + name = x; + language-servers = [ "typescript-language-server" "eslint" ]; + formatter = { command = "dprint"; args = [ "fmt" "--stdin" x ]; }; + }) [ "typescript" "javascript" "jsx" "tsx" ]) + { + name = "nix"; + formatter = { command = "nixpkgs-fmt"; }; + } + ]; + }; + }; + }; +} diff --git a/hm-modules/nushell/default.nix b/hm-modules/nushell/default.nix new file mode 100644 index 00000000..7fc23fc8 --- /dev/null +++ b/hm-modules/nushell/default.nix @@ -0,0 +1,88 @@ +{ pkgs, config, lib, inputs, ... }: +let + cfg = config.ragon.nushell; + aliasesJson = pkgs.writeText "shell-aliases.json" (builtins.toJSON config.home.shellAliases); +in +{ + options.ragon.nushell.enable = lib.mkOption { default = false; }; + config = lib.mkIf cfg.enable { + programs.direnv = { + enable = true; + enableNushellIntegration = true; + }; + programs.nushell = { + enable = true; + extraConfig = '' + let carapace_completer = {|spans| + carapace $spans.0 nushell ...$spans | from json + } + $env.config = { + edit_mode: vi + show_banner: false, + completions: { + case_sensitive: false # case-sensitive completions + quick: true # set to false to prevent auto-selecting completions + partial: true # set to false to prevent partial filling of the prompt + algorithm: "fuzzy" # prefix or fuzzy + external: { + # set to false to prevent nushell looking into $env.PATH to find more suggestions + enable: true + # set to lower can improve completion performance at the cost of omitting some options + max_results: 100 + completer: $carapace_completer # check 'carapace_completer' + } + } + } + $env.NIX_REMOTE = "daemon" + $env.NIX_USER_PROFILE_DIR = $"/nix/var/nix/profiles/per-user/($env.USER)" + $env.NIX_PROFILES = $"/nix/var/nix/profiles/default:($env.HOME)/.nix-profile" + $env.NIX_SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt" + $env.NIX_PATH = "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs:/nix/var/nix/profiles/per-user/root/channels" + $env.PATH = ($env.PATH | + split row (char esep) | + append /usr/bin/env | + append $"($env.HOME)/.nix-profile/bin" | + append "/nix/var/nix/profiles/default/bin" | + append $"/etc/profiles/per-user/($env.USER)/bin" | + append "/run/current-system/sw/bin" | + append "/opt/homebrew/bin" | + append $"($env.HOME)/.cargo/bin" | + append $"($env.HOME)/.local/bin" + ) + alias no = open + alias open = ^open + alias l = ls -al + alias ll = ls -l + alias ga = git add + alias gaa = git add -A + alias gd = git diff + alias gc = git commit + alias gp = git push + alias gpl = git pull + ''; + shellAliases = { + vi = "hx"; + vim = "hx"; + nano = "hx"; + }; + }; + programs.carapace.enable = true; + programs.carapace.enableNushellIntegration = true; + + programs.starship = { enable = true; + settings = { + add_newline = false; + character = { + success_symbol = "[➜](bold green)"; + error_symbol = "[➜](bold red)"; + }; + }; + }; + programs.vscode.userSettings."terminal.integrated.profiles.osx" = { + nushell = { + path = "${pkgs.nushell}/bin/nushell"; + }; + }; + programs.vscode.userSettings."terminal.integrated.defaultProfile.osx" = "nushell"; + }; +} diff --git a/hm-modules/zellij/default.nix b/hm-modules/zellij/default.nix new file mode 100644 index 00000000..a838f62b --- /dev/null +++ b/hm-modules/zellij/default.nix @@ -0,0 +1,12 @@ +{ pkgs, config, lib, inputs, ... }: +let + cfg = config.ragon.zellij; +in +{ + options.ragon.zellij.enable = lib.mkOption { default = false; }; + config = lib.mkIf cfg.enable { + programs.zellij = { + enable = true; + }; + }; +} diff --git a/hosts/daedalus/default.nix b/hosts/daedalus/default.nix index 5086f859..798ff282 100644 --- a/hosts/daedalus/default.nix +++ b/hosts/daedalus/default.nix @@ -74,6 +74,8 @@ with lib.my; # "Tailscale" = 1475387142; #}; }; + nix.configureBuildUsers = true; + ids.uids.nixbld = lib.mkForce 400; environment.pathsToLink = [ "/share/fish" ]; @@ -139,6 +141,9 @@ with lib.my; ../../hm-modules/tmux ../../hm-modules/vscode ../../hm-modules/xonsh + ../../hm-modules/helix + ../../hm-modules/zellij + ../../hm-modules/nushell ../../hm-modules/cli.nix ../../hm-modules/files.nix ]; @@ -156,7 +161,9 @@ with lib.my; home.file.".hammerspoon/Spoons/MiroWindowsManager.spoon".source = "${inputs.miro}/MiroWindowsManager.spoon"; ragon.vscode.enable = true; - ragon.xonsh.enable = true; + ragon.helix.enable = true; + ragon.nushell.enable = true; + ragon.zellij.enable = true; programs.home-manager.enable = true; home.stateVersion = "23.11"; @@ -166,8 +173,8 @@ with lib.my; # vv = lib.mkForce "emacsclient -c"; #}; home.sessionVariables = { - EDITOR = "nvim"; - VISUAL = "nvim"; + # EDITOR = "nvim"; + # VISUAL = "nvim"; COLORTERM = "truecolor"; # emacs tty fix }; home.packages = with pkgs; [