this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

flake: generate project editor cfgs with nix

Aly Raffauf c5e81953 caaac6da

+413 -93
+3
.gitignore
··· 1 1 .DS_Store 2 2 .direnv 3 + .helix/ 3 4 .pre-commit-config.yaml 5 + .vscode/ 6 + .zed/ 4 7 result
+8 -9
.helix/languages.toml
··· 1 1 [[language]] 2 2 auto-format = true 3 - formatter.command = "alejandra" 4 3 language-servers = ["nixd"] 5 4 name = "nix" 6 5 6 + [language.formatter] 7 + command = "alejandra" 8 + 7 9 [[language]] 8 10 auto-format = true 9 11 file-types = ["sh", "bash", "dash", "ksh", "mksh"] 10 - formatter = { command = "shfmt", args = ["-i", "2"] } 11 - language-servers = [ "bash-language-server" ] 12 + language-servers = ["bash-language-server"] 12 13 name = "bash" 13 14 14 - [[language]] 15 - auto-format = true 16 - file-types = ["md", "markdown", "mdx"] 17 - formatter = { command = "prettier", args = ["--stdin-filepath", "%val{filename}", "--parser", "markdown"] } 18 - name = "markdown" 15 + [language.formatter] 16 + args = ["-i", "2"] 17 + command = "shfmt" 19 18 20 19 [language-server.bash-language-server] 21 - command = "bash-language-server" 22 20 args = ["start"] 21 + command = "bash-language-server"
+22 -14
.vscode/settings.json
··· 1 1 { 2 - "editor.formatOnPaste": true, 3 - "editor.formatOnSave": true, 4 - "editor.formatOnType": true, 2 + "[markdown]": { 3 + "editor": { 4 + "defaultFormatter": "esbenp.prettier-vscode", 5 + "formatOnSave": true 6 + } 7 + }, 8 + "[shellscript]": { 9 + "editor": { 10 + "defaultFormatter": "foxundermoon.shell-format", 11 + "formatOnSave": true 12 + } 13 + }, 14 + "editor": { 15 + "formatOnPaste": true, 16 + "formatOnSave": true, 17 + "formatOnType": true 18 + }, 5 19 "nix": { 6 20 "enableLanguageServer": true, 7 21 "formatterPath": "alejandra", ··· 9 23 "serverSettings": { 10 24 "nixd": { 11 25 "formatting": { 12 - "command": ["alejandra"] 26 + "command": [ 27 + "alejandra" 28 + ] 13 29 } 14 30 } 15 31 } 16 32 }, 17 - "[shellscript]": { 18 - "editor.defaultFormatter": "foxundermoon.shell-format", 19 - "editor.formatOnSave": true 20 - }, 21 33 "shellformat": { 22 - "path": "shfmt", 23 - "flag": "-i 2" 24 - }, 25 - "[markdown]": { 26 - "editor.defaultFormatter": "esbenp.prettier-vscode", 27 - "editor.formatOnSave": true 34 + "flag": "-i 2", 35 + "path": "shfmt" 28 36 } 29 37 }
+47 -34
.vscode/tasks.json
··· 1 1 { 2 - "version": "2.0.0", 3 2 "tasks": [ 4 3 { 5 - "label": "Evaluate Flake", 6 - "type": "shell", 4 + "args": [ 5 + "flake", 6 + "check", 7 + "--all-systems" 8 + ], 7 9 "command": "nix", 8 - "args": ["flake", "check", "--all-systems"], 9 10 "group": { 10 - "kind": "build", 11 - "isDefault": true 11 + "isDefault": true, 12 + "kind": "build" 12 13 }, 14 + "label": "Evaluate Flake", 13 15 "presentation": { 14 16 "echo": true, 15 - "reveal": "silent", 16 17 "focus": false, 17 - "panel": "shared" 18 + "panel": "shared", 19 + "reveal": "silent" 18 20 }, 19 - "problemMatcher": [] 21 + "problemMatcher": [], 22 + "type": "shell" 20 23 }, 21 24 { 22 - "label": "Rebuild NixOS", 23 - "type": "shell", 25 + "args": [ 26 + "os", 27 + "test" 28 + ], 24 29 "command": "nh", 25 - "args": ["os", "test"], 26 30 "group": { 27 - "kind": "build", 28 - "isDefault": false 31 + "isDefault": false, 32 + "kind": "build" 29 33 }, 34 + "label": "Rebuild NixOS", 30 35 "presentation": { 31 36 "echo": true, 32 - "reveal": "always", 33 37 "focus": true, 34 - "panel": "shared" 38 + "panel": "shared", 39 + "reveal": "always" 35 40 }, 36 - "problemMatcher": [] 41 + "problemMatcher": [], 42 + "type": "shell" 37 43 }, 38 44 { 39 - "label": "Rebuild Darwin", 40 - "type": "shell", 45 + "args": [ 46 + "darwin", 47 + "switch", 48 + "." 49 + ], 41 50 "command": "nh", 42 - "args": ["darwin", "switch", "."], 43 51 "group": { 44 - "kind": "build", 45 - "isDefault": false 52 + "isDefault": false, 53 + "kind": "build" 46 54 }, 55 + "label": "Rebuild Darwin", 47 56 "presentation": { 48 57 "echo": true, 49 - "reveal": "always", 50 58 "focus": true, 51 - "panel": "shared" 59 + "panel": "shared", 60 + "reveal": "always" 52 61 }, 53 - "problemMatcher": [] 62 + "problemMatcher": [], 63 + "type": "shell" 54 64 }, 55 65 { 56 - "label": "Format Repository", 57 - "type": "shell", 66 + "args": [ 67 + "fmt" 68 + ], 58 69 "command": "nix", 59 - "args": ["fmt"], 60 70 "group": { 61 - "kind": "none", 62 - "isDefault": false 71 + "isDefault": false, 72 + "kind": "none" 63 73 }, 74 + "label": "Format Repository", 64 75 "presentation": { 65 76 "echo": true, 66 - "reveal": "silent", 67 77 "focus": false, 68 - "panel": "shared" 78 + "panel": "shared", 79 + "reveal": "silent" 69 80 }, 70 - "problemMatcher": [] 81 + "problemMatcher": [], 82 + "type": "shell" 71 83 } 72 - ] 84 + ], 85 + "version": "2.0.0" 73 86 }
+33 -28
.zed/settings.json
··· 1 - // Folder-specific settings 2 - // 3 - // For a full list of overridable settings, and general information on folder-specific settings, 4 - // see the documentation: https://zed.dev/docs/configuring-zed#settings-files 5 - 6 1 { 7 2 "auto_install_extensions": { 8 3 "basher": true, 9 4 "nix": true 10 5 }, 11 - 12 6 "languages": { 13 7 "JSON": { 14 8 "format_on_save": "on", 15 - 16 9 "formatter": { 17 10 "external": { 18 - "command": "prettier", 19 - "arguments": ["--stdin-filepath", "{buffer_path}"] 11 + "arguments": [ 12 + "--stdin-filepath", 13 + "{buffer_path}" 14 + ], 15 + "command": "prettier" 20 16 } 21 17 } 22 18 }, 23 - 24 19 "Markdown": { 25 20 "format_on_save": "on", 26 - 27 21 "formatter": { 28 22 "external": { 29 - "command": "prettier", 30 - "arguments": ["--stdin-filepath", "{buffer_path}"] 23 + "arguments": [ 24 + "--stdin-filepath", 25 + "{buffer_path}" 26 + ], 27 + "command": "prettier" 31 28 } 32 29 } 33 30 }, 34 - 35 31 "Nix": { 36 32 "format_on_save": "on", 37 33 "formatter": "language_server", 38 - "language_servers": ["nixd", "!nil"] 34 + "language_servers": [ 35 + "nixd", 36 + "!nil" 37 + ] 39 38 }, 40 - 41 39 "Shell Script": { 42 40 "format_on_save": "on", 43 - 44 41 "formatter": { 45 42 "external": { 46 - "command": "shfmt", 47 - "arguments": ["--filename", "{buffer_path}", "-i", "2"] 43 + "arguments": [ 44 + "--filename", 45 + "{buffer_path}", 46 + "-i", 47 + "2" 48 + ], 49 + "command": "shfmt" 48 50 } 49 51 }, 50 - 51 - "tab_size": 2, 52 - "hard_tabs": false 52 + "hard_tabs": false, 53 + "tab_size": 2 53 54 }, 54 - 55 55 "YAML": { 56 56 "format_on_save": "on", 57 - 58 57 "formatter": { 59 58 "external": { 60 - "command": "prettier", 61 - "arguments": ["--stdin-filepath", "{buffer_path}"] 59 + "arguments": [ 60 + "--stdin-filepath", 61 + "{buffer_path}" 62 + ], 63 + "command": "prettier" 62 64 } 63 65 } 64 66 } 65 67 }, 66 - 67 68 "lsp": { 68 69 "nixd": { 69 70 "settings": { 70 71 "formatting": { 71 - "command": ["alejandra", "--quiet", "--"] 72 + "command": [ 73 + "alejandra", 74 + "--quiet", 75 + "--" 76 + ] 72 77 } 73 78 } 74 79 }
+16
flake.lock
··· 219 219 "type": "github" 220 220 } 221 221 }, 222 + "files": { 223 + "locked": { 224 + "lastModified": 1750263550, 225 + "narHash": "sha256-EW/QJ8i/13GgiynBb6zOMxhLU1uEkRqmzbIDEP23yVA=", 226 + "owner": "mightyiam", 227 + "repo": "files", 228 + "rev": "5f4ef1fd1f9012354a9748be093e277675d10f07", 229 + "type": "github" 230 + }, 231 + "original": { 232 + "owner": "mightyiam", 233 + "repo": "files", 234 + "type": "github" 235 + } 236 + }, 222 237 "firefox-gnome-theme": { 223 238 "flake": false, 224 239 "locked": { ··· 1171 1186 "audnexus": "audnexus", 1172 1187 "chaotic": "chaotic", 1173 1188 "disko": "disko", 1189 + "files": "files", 1174 1190 "flake-parts": "flake-parts", 1175 1191 "git-hooks-nix": "git-hooks-nix", 1176 1192 "hama": "hama",
+10 -7
flake.nix
··· 18 18 inputs.nixpkgs.follows = "nixpkgs"; 19 19 }; 20 20 21 + files.url = "github:mightyiam/files"; 22 + flake-parts.url = "github:hercules-ci/flake-parts"; 23 + 24 + git-hooks-nix = { 25 + url = "github:cachix/git-hooks.nix"; 26 + inputs.nixpkgs.follows = "nixpkgs"; 27 + }; 28 + 21 29 home-manager = { 22 30 url = "github:nix-community/home-manager/master"; 23 31 inputs.nixpkgs.follows = "nixpkgs"; ··· 52 60 inputs.nixpkgs.follows = "nixpkgs"; 53 61 }; 54 62 55 - git-hooks-nix = { 56 - url = "github:cachix/git-hooks.nix"; 57 - inputs.nixpkgs.follows = "nixpkgs"; 58 - }; 59 - 60 63 self2025 = { 61 64 url = "github:alyraffauf/self2025"; 62 65 inputs.nixpkgs.follows = "nixpkgs"; ··· 78 81 url = "github:0xc000022070/zen-browser-flake"; 79 82 inputs.nixpkgs.follows = "nixpkgs"; 80 83 }; 81 - 82 - flake-parts.url = "github:hercules-ci/flake-parts"; 83 84 84 85 # Non-flake inputs 85 86 absolute = { ··· 144 145 imports = [ 145 146 ./flake/darwin.nix 146 147 ./flake/devShells.nix 148 + ./flake/editors 147 149 ./flake/git-hooks-nix.nix 148 150 ./flake/home-manager.nix 149 151 ./flake/nixos.nix ··· 152 154 ./flake/packages.nix 153 155 ./flake/tailscale.nix 154 156 ./flake/treefmt.nix 157 + inputs.files.flakeModules.default 155 158 inputs.git-hooks-nix.flakeModule 156 159 inputs.home-manager.flakeModules.home-manager 157 160 inputs.treefmt-nix.flakeModule
+5
flake/devShells.nix
··· 4 4 lib, 5 5 pkgs, 6 6 inputs', 7 + self', 7 8 ... 8 9 }: { 9 10 devShells.default = pkgs.mkShell { ··· 20 21 inputs'.agenix.packages.default 21 22 inputs'.disko.packages.disko-install 22 23 inputs'.nynx.packages.nynx 24 + self'.packages.gen-files 23 25 ]; 24 26 25 27 shellHook = '' 28 + echo "Installing pre-commit hooks..." 26 29 ${config.pre-commit.installationScript} 30 + ${lib.getExe self'.packages.gen-files} 27 31 export FLAKE="." NH_FLAKE="." 32 + echo "👋 Welcome to the nixcfg devShell!" 28 33 ''; 29 34 }; 30 35 };
+7
flake/editors/default.nix
··· 1 + { 2 + imports = [ 3 + ./helix.nix 4 + ./vscode.nix 5 + ./zed.nix 6 + ]; 7 + }
+37
flake/editors/helix.nix
··· 1 + _: { 2 + perSystem = {pkgs, ...}: { 3 + files.files = [ 4 + { 5 + path_ = ".helix/languages.toml"; 6 + 7 + drv = (pkgs.formats.toml {}).generate "helix-languages.toml" { 8 + language = [ 9 + { 10 + name = "nix"; 11 + "auto-format" = true; 12 + formatter = {command = "alejandra";}; 13 + "language-servers" = ["nixd"]; 14 + } 15 + { 16 + name = "bash"; 17 + "auto-format" = true; 18 + "file-types" = ["sh" "bash" "dash" "ksh" "mksh"]; 19 + formatter = { 20 + command = "shfmt"; 21 + args = ["-i" "2"]; 22 + }; 23 + "language-servers" = ["bash-language-server"]; 24 + } 25 + ]; 26 + 27 + "language-server" = { 28 + "bash-language-server" = { 29 + command = "bash-language-server"; 30 + args = ["start"]; 31 + }; 32 + }; 33 + }; 34 + } 35 + ]; 36 + }; 37 + }
+135
flake/editors/vscode.nix
··· 1 + _: { 2 + perSystem = {pkgs, ...}: { 3 + files.files = [ 4 + { 5 + path_ = ".vscode/extensions.json"; 6 + 7 + drv = (pkgs.formats.json {}).generate "vscode-extensions.json" { 8 + recommendations = [ 9 + "esbenp.prettier-vscode" 10 + "foxundermoon.shell-format" 11 + "jnoortheen.nix-ide" 12 + "mads-hartmann.bash-ide-vscode" 13 + "mkhl.direnv" 14 + ]; 15 + }; 16 + } 17 + { 18 + path_ = ".vscode/settings.json"; 19 + 20 + drv = (pkgs.formats.json {}).generate "vscode-setting.json" { 21 + editor = { 22 + formatOnPaste = true; 23 + formatOnSave = true; 24 + formatOnType = true; 25 + }; 26 + 27 + nix = { 28 + enableLanguageServer = true; 29 + formatterPath = "alejandra"; 30 + serverPath = "nixd"; 31 + serverSettings = { 32 + nixd = { 33 + formatting = { 34 + command = ["alejandra"]; 35 + }; 36 + }; 37 + }; 38 + }; 39 + 40 + "[shellscript]" = { 41 + editor.defaultFormatter = "foxundermoon.shell-format"; 42 + editor.formatOnSave = true; 43 + }; 44 + 45 + shellformat = { 46 + path = "shfmt"; 47 + flag = "-i 2"; 48 + }; 49 + 50 + "[markdown]" = { 51 + editor.defaultFormatter = "esbenp.prettier-vscode"; 52 + editor.formatOnSave = true; 53 + }; 54 + }; 55 + } 56 + { 57 + path_ = ".vscode/tasks.json"; 58 + 59 + drv = (pkgs.formats.json {}).generate "vscode-tasks.json" { 60 + version = "2.0.0"; 61 + tasks = [ 62 + { 63 + label = "Evaluate Flake"; 64 + type = "shell"; 65 + command = "nix"; 66 + args = ["flake" "check" "--all-systems"]; 67 + group = { 68 + kind = "build"; 69 + isDefault = true; 70 + }; 71 + presentation = { 72 + echo = true; 73 + reveal = "silent"; 74 + focus = false; 75 + panel = "shared"; 76 + }; 77 + problemMatcher = []; 78 + } 79 + { 80 + label = "Rebuild NixOS"; 81 + type = "shell"; 82 + command = "nh"; 83 + args = ["os" "test"]; 84 + group = { 85 + kind = "build"; 86 + isDefault = false; 87 + }; 88 + presentation = { 89 + echo = true; 90 + reveal = "always"; 91 + focus = true; 92 + panel = "shared"; 93 + }; 94 + problemMatcher = []; 95 + } 96 + { 97 + label = "Rebuild Darwin"; 98 + type = "shell"; 99 + command = "nh"; 100 + args = ["darwin" "switch" "."]; 101 + group = { 102 + kind = "build"; 103 + isDefault = false; 104 + }; 105 + presentation = { 106 + echo = true; 107 + reveal = "always"; 108 + focus = true; 109 + panel = "shared"; 110 + }; 111 + problemMatcher = []; 112 + } 113 + { 114 + label = "Format Repository"; 115 + type = "shell"; 116 + command = "nix"; 117 + args = ["fmt"]; 118 + group = { 119 + kind = "none"; 120 + isDefault = false; 121 + }; 122 + presentation = { 123 + echo = true; 124 + reveal = "silent"; 125 + focus = false; 126 + panel = "shared"; 127 + }; 128 + problemMatcher = []; 129 + } 130 + ]; 131 + }; 132 + } 133 + ]; 134 + }; 135 + }
+76
flake/editors/zed.nix
··· 1 + _: { 2 + perSystem = {pkgs, ...}: { 3 + files.files = [ 4 + { 5 + path_ = ".zed/settings.json"; 6 + 7 + drv = (pkgs.formats.json {}).generate "zed-setting.json" { 8 + auto_install_extensions = { 9 + basher = true; 10 + nix = true; 11 + }; 12 + 13 + languages = { 14 + JSON = { 15 + format_on_save = "on"; 16 + formatter = { 17 + external = { 18 + command = "prettier"; 19 + arguments = ["--stdin-filepath" "{buffer_path}"]; 20 + }; 21 + }; 22 + }; 23 + 24 + Markdown = { 25 + format_on_save = "on"; 26 + formatter = { 27 + external = { 28 + command = "prettier"; 29 + arguments = ["--stdin-filepath" "{buffer_path}"]; 30 + }; 31 + }; 32 + }; 33 + 34 + Nix = { 35 + format_on_save = "on"; 36 + formatter = "language_server"; 37 + language_servers = ["nixd" "!nil"]; 38 + }; 39 + 40 + "Shell Script" = { 41 + format_on_save = "on"; 42 + formatter = { 43 + external = { 44 + command = "shfmt"; 45 + arguments = ["--filename" "{buffer_path}" "-i" "2"]; 46 + }; 47 + }; 48 + tab_size = 2; 49 + hard_tabs = false; 50 + }; 51 + 52 + YAML = { 53 + format_on_save = "on"; 54 + formatter = { 55 + external = { 56 + command = "prettier"; 57 + arguments = ["--stdin-filepath" "{buffer_path}"]; 58 + }; 59 + }; 60 + }; 61 + }; 62 + 63 + lsp = { 64 + nixd = { 65 + settings = { 66 + formatting = { 67 + command = ["alejandra" "--quiet" "--"]; 68 + }; 69 + }; 70 + }; 71 + }; 72 + }; 73 + } 74 + ]; 75 + }; 76 + }
+14 -1
flake/packages.nix
··· 1 1 _: { 2 - perSystem = _: { 2 + perSystem = { 3 + config, 4 + lib, 5 + pkgs, 6 + ... 7 + }: { 3 8 packages = { 9 + gen-files = pkgs.writeShellApplication { 10 + name = "gen-files"; 11 + 12 + text = '' 13 + echo "Configuring your editors..." 14 + ${lib.getExe config.files.writer.drv} 15 + ''; 16 + }; 4 17 }; 5 18 }; 6 19 }