yep, more dotfiles

switch formatter to nixfmt

wiro.world cae19d06 248bd00d

verified
+1510 -837
+7 -3
apps/default.nix
··· 1 1 { pkgs-per-system }: 2 2 3 - { lib 4 - , ... 3 + { 4 + lib, 5 + ... 5 6 }@pkgs: 6 7 7 8 let ··· 10 11 }; 11 12 in 12 13 13 - lib.mapAttrs (_: program: { type = "app"; inherit program; }) apps 14 + lib.mapAttrs (_: program: { 15 + type = "app"; 16 + inherit program; 17 + }) apps
+9 -5
apps/flash-installer.nix
··· 1 1 targetSystemPkgs: 2 2 3 - { self 4 - , lib 3 + { 4 + self, 5 + lib, 5 6 6 - , writeShellApplication 7 - , ... 7 + writeShellApplication, 8 + ... 8 9 }@pkgs: 9 10 10 11 let ··· 17 18 in 18 19 lib.getExe (writeShellApplication { 19 20 name = "flash-installer"; 20 - runtimeInputs = with pkgs; [ pv fzf ]; 21 + runtimeInputs = with pkgs; [ 22 + pv 23 + fzf 24 + ]; 21 25 22 26 text = '' 23 27 # Select disk to flash
+32 -6
configurations.nix
··· 8 8 # Desktops 9 9 "neo-wiro-laptop" = createSystem pkgs [ 10 10 (system "neo-wiro-laptop" "laptop") 11 - (managedDiskLayout "luks-btrfs" { device = "nvme0n1"; swapSize = 12; }) 12 - (user "milomoisson" { description = "Milo Moisson"; profile = "desktop"; keys = keys.users; elevated = true; }) 11 + (managedDiskLayout "luks-btrfs" { 12 + device = "nvme0n1"; 13 + swapSize = 12; 14 + }) 15 + (user "milomoisson" { 16 + description = "Milo Moisson"; 17 + profile = "desktop"; 18 + keys = keys.users; 19 + elevated = true; 20 + }) 13 21 ]; 14 22 15 23 "archaic-wiro-laptop" = createSystem pkgs [ 16 24 (system "archaic-wiro-laptop" "laptop") 17 - (user "milomoisson" { description = "Milo Moisson"; profile = "desktop"; keys = keys.users; elevated = true; }) 25 + (user "milomoisson" { 26 + description = "Milo Moisson"; 27 + profile = "desktop"; 28 + keys = keys.users; 29 + elevated = true; 30 + }) 18 31 ]; 19 32 20 33 # Servers 21 34 "weird-row-server" = createSystem pkgs [ 22 35 (host "weird-row-server") 23 - (managedDiskLayout "ext4-hetzner" { device = "sda"; swapSize = 2; }) 36 + (managedDiskLayout "ext4-hetzner" { 37 + device = "sda"; 38 + swapSize = 2; 39 + }) 24 40 # TODO: should we keep a real user there? 25 - (user "milomoisson" { description = "Milo Moisson"; profile = "server"; keys = keys.users; elevated = true; }) 41 + (user "milomoisson" { 42 + description = "Milo Moisson"; 43 + profile = "server"; 44 + keys = keys.users; 45 + elevated = true; 46 + }) 26 47 ]; 27 48 }; 28 49 ··· 37 58 darwinConfigurations = with flake-lib.darwin; { 38 59 "apple-wiro-laptop" = createSystem pkgs [ 39 60 (system "apple-wiro-laptop" "macintosh") 40 - (user "milomoisson" { description = "Milo Moisson"; profile = "macintosh"; keys = keys.users; elevated = true; }) 61 + (user "milomoisson" { 62 + description = "Milo Moisson"; 63 + profile = "macintosh"; 64 + keys = keys.users; 65 + elevated = true; 66 + }) 41 67 ]; 42 68 }; 43 69 }
+11 -7
flake.nix
··· 53 53 zen-browser.inputs.home-manager.follows = "home-manager"; 54 54 }; 55 55 56 - outputs = { self, nixpkgs, ... }: 56 + outputs = 57 + { self, nixpkgs, ... }: 57 58 let 58 59 inherit (self) outputs; 59 60 inherit (flake-lib) forAllSystems; ··· 61 62 flake-lib = import ./lib/flake (nixpkgs // { inherit self; }); 62 63 63 64 # This should be the only constructed nixpkgs instances in this flake 64 - allPkgs = forAllSystems (system: (import nixpkgs { 65 - inherit system; 66 - config.allowUnfreePredicate = import ./lib/unfree.nix { lib = nixpkgs.lib; }; 67 - overlays = [ outputs.overlays.all ]; 68 - })); 65 + allPkgs = forAllSystems ( 66 + system: 67 + import nixpkgs { 68 + inherit system; 69 + config.allowUnfreePredicate = import ./lib/unfree.nix { lib = nixpkgs.lib; }; 70 + overlays = [ outputs.overlays.all ]; 71 + } 72 + ); 69 73 70 74 forAllPkgs = func: forAllSystems (system: func allPkgs.${system}); 71 75 in 72 76 { 73 - formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt); 77 + formatter = forAllPkgs (pkgs: pkgs.nixfmt); 74 78 75 79 inherit flake-lib; # Nonstandard 76 80 lib = forAllPkgs (import ./lib);
+5 -4
home-manager/fragments/agenix.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 7 7 8 let
+4 -3
home-manager/fragments/aws.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let
+9 -6
home-manager/fragments/chromium.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 16 17 programs.chromium = { 17 18 enable = true; 18 19 19 - dictionaries = with pkgs.hunspellDictsChromium; [ en_US fr_FR ]; 20 + dictionaries = with pkgs.hunspellDictsChromium; [ 21 + en_US 22 + fr_FR 23 + ]; 20 24 21 25 extensions = [ 22 26 # Language Tool ··· 31 35 }; 32 36 }; 33 37 } 34 -
+5 -5
home-manager/fragments/compose-key.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 - 7 7 8 8 let 9 9 inherit (self.outputs) homeManagerModules;
+3 -6
home-manager/fragments/default.nix
··· 1 1 { 2 2 # Provides the NixOS configuration if HM was loaded through the NixOS module 3 - osConfig ? null 4 - , ... 3 + osConfig ? null, 4 + ... 5 5 }: 6 6 7 7 { ··· 38 38 config = { 39 39 programs.home-manager.enable = osConfig == null; 40 40 41 - home.stateVersion = 42 - if osConfig != null 43 - then osConfig.system.stateVersion 44 - else "24.05"; 41 + home.stateVersion = if osConfig != null then osConfig.system.stateVersion else "24.05"; 45 42 46 43 # Reload system units when switching config 47 44 systemd.user.startServices = "sd-switch";
+17 -11
home-manager/fragments/epita.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 11 12 12 13 mount-epita-afs = pkgs.writeShellApplication { 13 14 name = "mount-epita-afs"; 14 - runtimeInputs = with pkgs; [ krb5 sshfs ]; 15 + runtimeInputs = with pkgs; [ 16 + krb5 17 + sshfs 18 + ]; 15 19 text = '' 16 20 USERNAME="${epita-forge-username}" 17 21 ··· 44 48 }; 45 49 46 50 # The forge uses master as its default branch 47 - programs.git.includes = [{ 48 - condition = "gitdir:~/Development/forge.epita.fr/"; 49 - contents = { 50 - init.defaultBranch = "master"; 51 - }; 52 - }]; 51 + programs.git.includes = [ 52 + { 53 + condition = "gitdir:~/Development/forge.epita.fr/"; 54 + contents = { 55 + init.defaultBranch = "master"; 56 + }; 57 + } 58 + ]; 53 59 54 60 home.packages = [ 55 61 # Useful to connect to EPITA related services
+10 -5
home-manager/fragments/firefox.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 7 7 8 let ··· 135 136 search = { 136 137 force = true; 137 138 default = "ddg"; 138 - order = [ "ddg" "wikipedia" "google" ]; 139 + order = [ 140 + "ddg" 141 + "wikipedia" 142 + "google" 143 + ]; 139 144 }; 140 145 }; 141 146 };
+9 -7
home-manager/fragments/foot.nix
··· 1 - { config 2 - , lib 1 + { 2 + config, 3 + lib, 3 4 4 - , isDarwin 5 - , ... 5 + isDarwin, 6 + ... 6 7 }: 7 8 8 9 let ··· 15 16 16 17 config = lib.mkIf cfg.enable { 17 18 assertions = [ 18 - { assertion = !isDarwin; message = "this is a non-darwin fragment"; } 19 + { 20 + assertion = !isDarwin; 21 + message = "this is a non-darwin fragment"; 22 + } 19 23 ]; 20 24 21 25 home.sessionVariables.TERMINAL = lib.getExe config.programs.foot.package; ··· 28 32 }; 29 33 }; 30 34 } 31 - 32 -
+19 -13
home-manager/fragments/git.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , lpkgs 5 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + lpkgs, 6 + ... 6 7 }: 7 8 8 9 let ··· 131 132 # TODO: change to $PROJECTS env var? 132 133 leaveTool = { 133 134 defaultFolder = "${config.home.homeDirectory}/Development"; 134 - checks = [ "dirty" "ahead-branches" ]; 135 + checks = [ 136 + "dirty" 137 + "ahead-branches" 138 + ]; 135 139 }; 136 140 }; 137 141 }; 138 142 139 - home.packages = (with pkgs; [ 140 - glab 143 + home.packages = 144 + (with pkgs; [ 145 + glab 141 146 142 - lazyjj 147 + lazyjj 143 148 144 - difftastic 145 - ]) ++ lib.optionals (!flags.onlyCached) [ 146 - lpkgs.git-leave 147 - ]; 149 + difftastic 150 + ]) 151 + ++ lib.optionals (!flags.onlyCached) [ 152 + lpkgs.git-leave 153 + ]; 148 154 149 155 programs.gh.enable = true; 150 156
+49 -28
home-manager/fragments/helix.nix
··· 1 - { self 2 - , config 3 - , pkgs 4 - , upkgs 5 - , lpkgs 6 - , lib 7 - , ... 1 + { 2 + self, 3 + config, 4 + pkgs, 5 + upkgs, 6 + lpkgs, 7 + lib, 8 + ... 8 9 }: 9 10 10 11 let ··· 26 27 27 28 config = lib.mkIf cfg.enable { 28 29 assertions = [ 29 - { assertion = config.local.fragment.agenix.enable; message = "`helix` fragment depends on `agenix` fragment"; } 30 + { 31 + assertion = config.local.fragment.agenix.enable; 32 + message = "`helix` fragment depends on `agenix` fragment"; 33 + } 30 34 ]; 31 35 32 36 stylix.targets.helix.enable = false; ··· 92 96 }; 93 97 }; 94 98 95 - extraPackages = with pkgs; [ 96 - clang-tools 97 - gopls 98 - kotlin-language-server 99 - ltex-ls 100 - marksman 101 - nil 102 - nodePackages.bash-language-server 103 - nodePackages.typescript-language-server 104 - taplo 105 - typos-lsp 106 - vscode-langservers-extracted 107 - yaml-language-server 108 - ] ++ lib.optionals (!flags.onlyCached) [ 109 - lpkgs.wakatime-ls 110 - ]; 99 + extraPackages = 100 + with pkgs; 101 + [ 102 + clang-tools 103 + gopls 104 + kotlin-language-server 105 + ltex-ls 106 + marksman 107 + nil 108 + nodePackages.bash-language-server 109 + nodePackages.typescript-language-server 110 + taplo 111 + typos-lsp 112 + vscode-langservers-extracted 113 + yaml-language-server 114 + ] 115 + ++ lib.optionals (!flags.onlyCached) [ 116 + lpkgs.wakatime-ls 117 + ]; 111 118 112 119 languages = { 113 120 language-server = { 114 - rust-analyzer.config = { check.command = "clippy"; }; 121 + rust-analyzer.config = { 122 + check.command = "clippy"; 123 + }; 115 124 116 125 ltex-ls.command = "ltex-ls"; 117 126 typos-ls.command = "typos-lsp"; ··· 120 129 121 130 language = 122 131 let 123 - global-lsps = [ "wakatime-ls" "typos-ls" ]; 124 - mk-lang = name: language-servers: extra: { inherit name; language-servers = language-servers ++ global-lsps; } // extra; 132 + global-lsps = [ 133 + "wakatime-ls" 134 + "typos-ls" 135 + ]; 136 + mk-lang = 137 + name: language-servers: extra: 138 + { 139 + inherit name; 140 + language-servers = language-servers ++ global-lsps; 141 + } 142 + // extra; 125 143 in 126 144 [ 127 145 (mk-lang "c" [ "clangd" ] { 128 - formatter = { command = lib.getExe' pkgs.clang-tools "clang-format"; args = [ ]; }; 146 + formatter = { 147 + command = lib.getExe' pkgs.clang-tools "clang-format"; 148 + args = [ ]; 149 + }; 129 150 }) 130 151 (mk-lang "markdown" [ "marksman" ] { 131 152 soft-wrap.enable = true;
+4 -3
home-manager/fragments/imv.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let
+19 -7
home-manager/fragments/jujutsu.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , upkgs 5 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + upkgs, 6 + ... 6 7 }: 7 8 8 9 let ··· 72 73 merge-editor = ":builtin"; 73 74 pager = ":builtin"; 74 75 75 - diff-formatter = [ "difft" "--color=always" "--display=inline" "$left" "$right" ]; 76 + diff-formatter = [ 77 + "difft" 78 + "--color=always" 79 + "--display=inline" 80 + "$left" 81 + "$right" 82 + ]; 76 83 }; 77 84 78 85 aliases = { 79 - ui = [ "util" "exec" "--" "lazyjj" ]; 86 + ui = [ 87 + "util" 88 + "exec" 89 + "--" 90 + "lazyjj" 91 + ]; 80 92 }; 81 93 82 94 git = {
+31 -11
home-manager/fragments/kanshi.nix
··· 1 - { config 2 - , lib 1 + { 2 + config, 3 + lib, 3 4 4 - , isDarwin 5 - , ... 5 + isDarwin, 6 + ... 6 7 }: 7 8 8 9 let ··· 15 16 16 17 config = lib.mkIf cfg.enable { 17 18 assertions = [ 18 - { assertion = !isDarwin; message = "this is a non-darwin fragment"; } 19 + { 20 + assertion = !isDarwin; 21 + message = "this is a non-darwin fragment"; 22 + } 19 23 ]; 20 24 21 25 services.kanshi = { 22 26 enable = true; 23 27 24 28 settings = [ 25 - { output = { criteria = "eDP-1"; scale = 2.0; }; } 29 + { 30 + output = { 31 + criteria = "eDP-1"; 32 + scale = 2.0; 33 + }; 34 + } 26 35 27 36 { 28 37 profile.name = "undocked"; ··· 35 44 profile.name = "eizo-dock"; 36 45 # position external screen centered above 37 46 profile.outputs = [ 38 - { criteria = "Eizo Nanao Corporation CG222W 29804118"; position = "0,0"; } 39 - { criteria = "eDP-1"; position = "120,1050"; } 47 + { 48 + criteria = "Eizo Nanao Corporation CG222W 29804118"; 49 + position = "0,0"; 50 + } 51 + { 52 + criteria = "eDP-1"; 53 + position = "120,1050"; 54 + } 40 55 ]; 41 56 } 42 57 ··· 44 59 profile.name = "hdmi-default"; 45 60 # position external screen right 46 61 profile.outputs = [ 47 - { criteria = "eDP-1"; position = "0,0"; } 48 - { criteria = "HDMI"; position = "1440,0"; } 62 + { 63 + criteria = "eDP-1"; 64 + position = "0,0"; 65 + } 66 + { 67 + criteria = "HDMI"; 68 + position = "1440,0"; 69 + } 49 70 ]; 50 71 } 51 72 ]; 52 73 }; 53 74 }; 54 75 } 55 -
+11 -6
home-manager/fragments/kitty.nix
··· 1 - { config 2 - , lib 1 + { 2 + config, 3 + lib, 3 4 4 - , isDarwin 5 - , ... 5 + isDarwin, 6 + ... 6 7 }: 7 8 8 9 let ··· 20 21 21 22 config = lib.mkIf cfg.enable { 22 23 assertions = [ 23 - { assertion = (!isDarwin) || config.programs.fish.enable; message = "`kitty` fragment depends on `fish` program on darwin platforms"; } 24 + { 25 + assertion = (!isDarwin) || config.programs.fish.enable; 26 + message = "`kitty` fragment depends on `fish` program on darwin platforms"; 27 + } 24 28 ]; 25 29 26 30 home.sessionVariables.TERMINAL = lib.getExe config.programs.kitty.package; ··· 31 35 confirm_os_window_close = 0; 32 36 enable_audio_bell = "no"; 33 37 macos_option_as_alt = "left"; 34 - } // lib.optionalAttrs isDarwin { 38 + } 39 + // lib.optionalAttrs isDarwin { 35 40 # Workaround to avoid launching fish as a login shell 36 41 shell = "zsh -c fish"; 37 42 };
+5 -4
home-manager/fragments/launcher.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let
+9 -6
home-manager/fragments/rust.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 49 50 target = { 50 51 x86_64-unknown-linux-gnu = { 51 52 linker = clang; 52 - rustflags = [ "-Clink-arg=--ld-path=${wild}" "-Ctarget-cpu=native" ]; 53 + rustflags = [ 54 + "-Clink-arg=--ld-path=${wild}" 55 + "-Ctarget-cpu=native" 56 + ]; 53 57 }; 54 58 x86_64-apple-darwin.rustflags = [ "-Ctarget-cpu=native" ]; 55 59 aarch64-apple-darwin.rustflags = [ "-Ctarget-cpu=native" ]; ··· 59 63 }; 60 64 }; 61 65 } 62 -
+5 -4
home-manager/fragments/screen.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 7 7 8 let
+13 -10
home-manager/fragments/shell.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , upkgs 5 - , lpkgs 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + upkgs, 6 + lpkgs, 6 7 7 - , isDarwin 8 - , ... 8 + isDarwin, 9 + ... 9 10 }: 10 11 11 12 let ··· 153 154 # Quickly explore a derivation (using registry syntax) 154 155 # e.g. `cdd nixpkgs#fontforge` or `cdd unixpkgs#fontforge` 155 156 cdd = "cd (nix build --no-link --print-out-paths $argv | ${lib.getExe pkgs.fzf})"; 156 - } // lib.optionalAttrs (!flags.onlyCached) { 157 + } 158 + // lib.optionalAttrs (!flags.onlyCached) { 157 159 # Quickly get outta here to test something 158 160 cdtmp = '' 159 161 set -l name $argv[1] (${lib.getExe lpkgs.names}) ··· 162 164 mkdir $dir 163 165 cd $dir 164 166 ''; 165 - } // lib.optionalAttrs (!isDarwin) { 167 + } 168 + // lib.optionalAttrs (!isDarwin) { 166 169 change-mac = '' 167 170 set dev (nmcli --get-values GENERAL.DEVICE,GENERAL.TYPE device show | sed '/^wifi/!{h;d;};x;q') 168 171 sudo ip link set $dev down 169 - 172 + 170 173 if test "$argv[1]" = "reset"; 171 174 sudo ${lib.getExe pkgs.macchanger} --permanent $dev 172 175 else;
+18 -8
home-manager/fragments/stylix.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , pkgs 5 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + pkgs, 6 + ... 6 7 }: 7 8 8 9 let ··· 34 35 image = ../../assets/wallpaper-binary-cloud.png; 35 36 36 37 fonts = { 37 - sansSerif = { package = pkgs.inter; name = "Inter"; }; 38 - serif = { package = pkgs.merriweather; name = "Merriweather"; }; 39 - monospace = { package = pkgs.nerd-fonts.jetbrains-mono; name = "JetBrainsMono Nerd Font"; }; 38 + sansSerif = { 39 + package = pkgs.inter; 40 + name = "Inter"; 41 + }; 42 + serif = { 43 + package = pkgs.merriweather; 44 + name = "Merriweather"; 45 + }; 46 + monospace = { 47 + package = pkgs.nerd-fonts.jetbrains-mono; 48 + name = "JetBrainsMono Nerd Font"; 49 + }; 40 50 41 51 sizes = { 42 52 applications = 12;
+89 -26
home-manager/fragments/sway.nix
··· 1 - { config 2 - , lib 3 - , pkgs 1 + { 2 + config, 3 + lib, 4 + pkgs, 4 5 5 - , isDarwin 6 - , ... 6 + isDarwin, 7 + ... 7 8 }: 8 9 9 10 let 10 11 cfg = config.local.fragment.sway; 11 12 cfg-sway = config.wayland.windowManager.sway.config; 12 13 13 - workspacesRange = lib.zipListsWith (key-idx: workspace-idx: { inherit key-idx workspace-idx; }) [ 1 2 3 4 5 6 7 8 9 0 ] (lib.range 1 10); 14 + workspacesRange = lib.zipListsWith (key-idx: workspace-idx: { inherit key-idx workspace-idx; }) [ 15 + 1 16 + 2 17 + 3 18 + 4 19 + 5 20 + 6 21 + 7 22 + 8 23 + 9 24 + 0 25 + ] (lib.range 1 10); 14 26 in 15 27 { 16 28 options.local.fragment.sway.enable = lib.mkEnableOption '' ··· 19 31 20 32 config = lib.mkIf cfg.enable { 21 33 assertions = [ 22 - { assertion = !isDarwin; message = "this is a non-darwin fragment"; } 34 + { 35 + assertion = !isDarwin; 36 + message = "this is a non-darwin fragment"; 37 + } 23 38 ]; 24 39 25 40 programs.swaylock = { ··· 101 116 } 102 117 ]; 103 118 events = [ 104 - { event = "before-sleep"; command = "${playerctl} pause; ${display "off"}; ${loginctl} lock-session"; } 105 - { event = "after-resume"; command = display "on"; } 106 - { event = "lock"; command = lock; } 107 - { event = "unlock"; command = display "on"; } 119 + { 120 + event = "before-sleep"; 121 + command = "${playerctl} pause; ${display "off"}; ${loginctl} lock-session"; 122 + } 123 + { 124 + event = "after-resume"; 125 + command = display "on"; 126 + } 127 + { 128 + event = "lock"; 129 + command = lock; 130 + } 131 + { 132 + event = "unlock"; 133 + command = display "on"; 134 + } 108 135 ]; 109 136 }; 110 137 ··· 137 164 # Toggle floating mode for some specific windows 138 165 { 139 166 # TODO: Bitwarden window glitches on opening 140 - criteria = { app_id = "^firefox$"; title = "Bitwarden Password Manager"; }; 167 + criteria = { 168 + app_id = "^firefox$"; 169 + title = "Bitwarden Password Manager"; 170 + }; 141 171 command = ''floating enable''; 142 172 } 143 173 { 144 174 # Toggles floating for every Unity window but the main one 145 175 # Only the main window begins with `Unity - ` 146 - criteria = { title = "^((?!^Unity - ).)*$"; class = "^Unity$"; instance = "^Unity$"; }; 176 + criteria = { 177 + title = "^((?!^Unity - ).)*$"; 178 + class = "^Unity$"; 179 + instance = "^Unity$"; 180 + }; 147 181 command = ''floating enable''; 148 182 } 149 183 150 184 # Inhibit IDLE when these are fullscreen 151 - { criteria.app_id = "firefox"; command = "inhibit_idle fullscreen"; } 152 - { criteria.app_id = "mpv"; command = "inhibit_idle fullscreen"; } 153 - { criteria.app_id = "spotify"; command = "inhibit_idle fullscreen"; } 154 - { criteria.app_id = "zen-beta"; command = "inhibit_idle fullscreen"; } 185 + { 186 + criteria.app_id = "firefox"; 187 + command = "inhibit_idle fullscreen"; 188 + } 189 + { 190 + criteria.app_id = "mpv"; 191 + command = "inhibit_idle fullscreen"; 192 + } 193 + { 194 + criteria.app_id = "spotify"; 195 + command = "inhibit_idle fullscreen"; 196 + } 197 + { 198 + criteria.app_id = "zen-beta"; 199 + command = "inhibit_idle fullscreen"; 200 + } 155 201 ]; 156 202 }; 157 203 ··· 180 226 # "type:touchpad" = { events = "disabled_on_external_mouse"; }; 181 227 182 228 # Disable touchscreen by default 183 - "type:touch" = { events = "disabled"; }; 229 + "type:touch" = { 230 + events = "disabled"; 231 + }; 184 232 }; 185 233 186 234 output."*".bg = lib.mkForce "#000000 solid_color"; ··· 268 316 "--locked XF86AudioMicMute" = "exec ${pamixer} --default-source --toggle-mute"; 269 317 "--locked XF86MonBrightnessUp" = "exec ${brightnessctl} --exponent set 5%+"; 270 318 "--locked XF86MonBrightnessDown" = "exec ${brightnessctl} --exponent set 5%- --min-value=1"; 271 - "--locked XF86TouchpadToggle" = ''input "type:touchpad" events toggle enabled disabled_on_external_mouse''; 319 + "--locked XF86TouchpadToggle" = 320 + ''input "type:touchpad" events toggle enabled disabled_on_external_mouse''; 272 321 } 273 - // lib.listToAttrs (lib.flatten (map 274 - ({ key-idx, workspace-idx }: [ 275 - { name = "${mod}+${toString key-idx}"; value = "workspace number ${toString workspace-idx}"; } 276 - { name = "${mod}+Alt+${toString key-idx}"; value = "move container to workspace number ${toString workspace-idx}"; } 277 - { name = "${mod}+Shift+${toString key-idx}"; value = "move container to workspace number ${toString workspace-idx}; workspace number ${toString workspace-idx}"; } 278 - ]) 279 - workspacesRange)); 322 + // lib.listToAttrs ( 323 + lib.flatten ( 324 + map ( 325 + { key-idx, workspace-idx }: 326 + [ 327 + { 328 + name = "${mod}+${toString key-idx}"; 329 + value = "workspace number ${toString workspace-idx}"; 330 + } 331 + { 332 + name = "${mod}+Alt+${toString key-idx}"; 333 + value = "move container to workspace number ${toString workspace-idx}"; 334 + } 335 + { 336 + name = "${mod}+Shift+${toString key-idx}"; 337 + value = "move container to workspace number ${toString workspace-idx}; workspace number ${toString workspace-idx}"; 338 + } 339 + ] 340 + ) workspacesRange 341 + ) 342 + ); 280 343 }; 281 344 }; 282 345
+40 -27
home-manager/fragments/swaybar.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 37 38 | select(.identifier=="${integrated-keyboard-id}") 38 39 | .libinput.send_events') 39 40 ''; 40 - click = [{ 41 - button = "left"; 42 - cmd = '' 43 - ${swaymsg} input ${integrated-keyboard-id} events toggle; 44 - ${swaymsg} input ${integrated-keyboard-id-bis} events toggle 45 - ''; 46 - update = true; 47 - }]; 41 + click = [ 42 + { 43 + button = "left"; 44 + cmd = '' 45 + ${swaymsg} input ${integrated-keyboard-id} events toggle; 46 + ${swaymsg} input ${integrated-keyboard-id-bis} events toggle 47 + ''; 48 + update = true; 49 + } 50 + ]; 48 51 interval = "once"; 49 52 } 50 53 51 54 { 52 55 block = "custom"; 53 56 command = "echo  $(${lib.getExe' pkgs.mako "makoctl"} mode)"; 54 - click = [{ 55 - button = "left"; 56 - # Toggle DND mode 57 - cmd = "${lib.getExe' pkgs.mako "makoctl"} mode -t dnd"; 58 - update = true; 59 - }]; 57 + click = [ 58 + { 59 + button = "left"; 60 + # Toggle DND mode 61 + cmd = "${lib.getExe' pkgs.mako "makoctl"} mode -t dnd"; 62 + update = true; 63 + } 64 + ]; 60 65 interval = "once"; 61 66 } 62 67 ··· 66 71 block = "keyboard_layout"; 67 72 driver = "sway"; 68 73 } 69 - { block = "backlight"; device = "intel_backlight"; } 74 + { 75 + block = "backlight"; 76 + device = "intel_backlight"; 77 + } 70 78 { block = "sound"; } 71 79 { block = "battery"; } 72 80 { ··· 79 87 }; 80 88 81 89 wayland.windowManager.sway.config.bars = [ 82 - ({ 83 - statusCommand = "${lib.getExe pkgs.i3status-rust} ${config.home.homeDirectory}/${config.xdg.configFile."i3status-rust/config-default.toml".target}"; 90 + ( 91 + { 92 + statusCommand = "${lib.getExe pkgs.i3status-rust} ${config.home.homeDirectory}/${ 93 + config.xdg.configFile."i3status-rust/config-default.toml".target 94 + }"; 84 95 85 - hiddenState = "hide"; 86 - mode = "hide"; 96 + hiddenState = "hide"; 97 + mode = "hide"; 87 98 88 - # TODO: fix color theme on the bar 89 - # TODO: would be nice to have rounded corners and padding when appearing 99 + # TODO: fix color theme on the bar 100 + # TODO: would be nice to have rounded corners and padding when appearing 90 101 91 - extraConfig = "icon_theme Papirus"; 92 - } // config.stylix.targets.sway.exportedBarConfig) 102 + extraConfig = "icon_theme Papirus"; 103 + } 104 + // config.stylix.targets.sway.exportedBarConfig 105 + ) 93 106 ]; 94 107 }; 95 108 }
+4 -4
home-manager/fragments/thunderbird.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let ··· 40 41 }; 41 42 }; 42 43 } 43 -
+58 -55
home-manager/fragments/tools.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , lpkgs 5 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + lpkgs, 6 + ... 6 7 }: 7 8 8 9 let ··· 15 16 ''; 16 17 17 18 config = lib.mkIf cfg.enable { 18 - home.packages = (with pkgs; [ 19 - # Man 20 - ascii 21 - man-pages 19 + home.packages = 20 + (with pkgs; [ 21 + # Man 22 + ascii 23 + man-pages 22 24 23 - # TUIs 24 - btop 25 - glow 25 + # TUIs 26 + btop 27 + glow 26 28 27 - # CLIs 28 - asciinema 29 - calc 30 - csvlens 31 - delta 32 - dogdns 33 - dust 34 - encfs 35 - fastfetch 36 - fd 37 - ffmpeg 38 - file 39 - fzf 40 - gemini-cli 41 - inetutils 42 - jq 43 - just 44 - killall 45 - libnotify 46 - lsof 47 - mediainfo 48 - openssl 49 - otree 50 - ouch 51 - parallel 52 - perf 53 - pv 54 - restic 55 - ripgrep 56 - speedtest-go 57 - srgn 58 - sshfs 59 - termimage 60 - tlrc 61 - tokei 62 - trash-cli 63 - uni 64 - unzip 65 - vlock 66 - wormhole-rs 67 - ]) ++ lib.optionals (!flags.onlyCached) [ 68 - lpkgs.nix-alien 69 - ]; 29 + # CLIs 30 + asciinema 31 + calc 32 + csvlens 33 + delta 34 + dogdns 35 + dust 36 + encfs 37 + fastfetch 38 + fd 39 + ffmpeg 40 + file 41 + fzf 42 + gemini-cli 43 + inetutils 44 + jq 45 + just 46 + killall 47 + libnotify 48 + lsof 49 + mediainfo 50 + openssl 51 + otree 52 + ouch 53 + parallel 54 + perf 55 + pv 56 + restic 57 + ripgrep 58 + speedtest-go 59 + srgn 60 + sshfs 61 + termimage 62 + tlrc 63 + tokei 64 + trash-cli 65 + uni 66 + unzip 67 + vlock 68 + wormhole-rs 69 + ]) 70 + ++ lib.optionals (!flags.onlyCached) [ 71 + lpkgs.nix-alien 72 + ]; 70 73 71 74 programs.fish.shellAbbrs = { 72 75 # Use newer tools
+33 -29
home-manager/fragments/vscodium.nix
··· 1 - { lib 2 - , config 3 - , pkgs 4 - , ... 1 + { 2 + lib, 3 + config, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 17 18 enable = true; 18 19 package = pkgs.vscodium; 19 20 20 - profiles.default.extensions = with pkgs.vscode-extensions; [ 21 - bradlc.vscode-tailwindcss 22 - dbaeumer.vscode-eslint 23 - eamodio.gitlens 24 - esbenp.prettier-vscode 25 - ms-vsliveshare.vsliveshare 26 - usernamehw.errorlens 27 - vue.volar 28 - wakatime.vscode-wakatime 29 - ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ 30 - { 31 - # https://marketplace.visualstudio.com/items?itemName=meganrogge.template-string-converter 32 - name = "template-string-converter"; 33 - publisher = "meganrogge"; 34 - version = "0.6.1"; 35 - sha256 = "sha256-w0ppzh0m/9Hw3BPJbAKsNcMStdzoH9ODf3zweRcCG5k="; 36 - } 37 - { 38 - # https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onedark 39 - name = "vscode-theme-onedark"; 40 - publisher = "akamud"; 41 - version = "2.3.0"; 42 - sha256 = "sha256-8GGv4L4poTYjdkDwZxgNYajuEmIB5XF1mhJMxO2Ho84="; 43 - } 44 - ]; 21 + profiles.default.extensions = 22 + with pkgs.vscode-extensions; 23 + [ 24 + bradlc.vscode-tailwindcss 25 + dbaeumer.vscode-eslint 26 + eamodio.gitlens 27 + esbenp.prettier-vscode 28 + ms-vsliveshare.vsliveshare 29 + usernamehw.errorlens 30 + vue.volar 31 + wakatime.vscode-wakatime 32 + ] 33 + ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ 34 + { 35 + # https://marketplace.visualstudio.com/items?itemName=meganrogge.template-string-converter 36 + name = "template-string-converter"; 37 + publisher = "meganrogge"; 38 + version = "0.6.1"; 39 + sha256 = "sha256-w0ppzh0m/9Hw3BPJbAKsNcMStdzoH9ODf3zweRcCG5k="; 40 + } 41 + { 42 + # https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onedark 43 + name = "vscode-theme-onedark"; 44 + publisher = "akamud"; 45 + version = "2.3.0"; 46 + sha256 = "sha256-8GGv4L4poTYjdkDwZxgNYajuEmIB5XF1mhJMxO2Ho84="; 47 + } 48 + ]; 45 49 }; 46 50 }; 47 51 }
+38 -14
home-manager/fragments/waybar.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 101 102 format-full = "{capacity}% {icon}"; 102 103 format-charging = "{capacity}% "; 103 104 format-plugged = "{capacity}% "; 104 - format-icons = [ " " " " " " " " " " ]; 105 + format-icons = [ 106 + " " 107 + " " 108 + " " 109 + " " 110 + " " 111 + ]; 105 112 }; 106 113 107 114 pulseaudio = { ··· 122 129 phone = " "; 123 130 portable = " "; 124 131 car = " "; 125 - default = [ "" " " " " ]; 132 + default = [ 133 + "" 134 + " " 135 + " " 136 + ]; 126 137 }; 127 138 128 139 on-click = "pavucontrol"; ··· 135 146 136 147 cava = { 137 148 bars = 6; 138 - format-icons = [ "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ]; 149 + format-icons = [ 150 + "▁" 151 + "▂" 152 + "▃" 153 + "▄" 154 + "▅" 155 + "▆" 156 + "▇" 157 + "█" 158 + ]; 139 159 bar_delimiter = 0; 140 160 hide_on_silence = true; 141 161 }; ··· 163 183 "clock" 164 184 "group/misc" 165 185 ]; 166 - } // modules-settings; 186 + } 187 + // modules-settings; 167 188 168 189 additional = { 169 190 mode = "hide"; ··· 188 209 "clock" 189 210 "group/misc" 190 211 ]; 191 - } // modules-settings; 212 + } 213 + // modules-settings; 192 214 }; 193 215 194 216 style = '' ··· 267 289 ''; 268 290 }; 269 291 270 - wayland.windowManager.sway.config.bars = [{ 271 - command = lib.getExe pkgs.waybar; 292 + wayland.windowManager.sway.config.bars = [ 293 + { 294 + command = lib.getExe pkgs.waybar; 272 295 273 - mode = "hide"; 274 - hiddenState = "hide"; 275 - }]; 296 + mode = "hide"; 297 + hiddenState = "hide"; 298 + } 299 + ]; 276 300 }; 277 301 }
+18 -7
home-manager/fragments/xdg-mime.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 19 20 20 21 config = lib.mkIf cfg.enable { 21 22 assertions = [ 22 - { assertion = config.programs.firefox.enable; message = "`xdg-mime` fragment depends on `firefox` program"; } 23 - { assertion = config.programs.imv.enable; message = "`xdg-mime` fragment depends on `imv` program"; } 24 - { assertion = lib.lists.count (drv: (drv.pname or "") == pkgs.nautilus.pname) config.home.packages > 0; message = "`xdg-mime` fragment depends on `nautilus` program"; } 23 + { 24 + assertion = config.programs.firefox.enable; 25 + message = "`xdg-mime` fragment depends on `firefox` program"; 26 + } 27 + { 28 + assertion = config.programs.imv.enable; 29 + message = "`xdg-mime` fragment depends on `imv` program"; 30 + } 31 + { 32 + assertion = 33 + lib.lists.count (drv: (drv.pname or "") == pkgs.nautilus.pname) config.home.packages > 0; 34 + message = "`xdg-mime` fragment depends on `nautilus` program"; 35 + } 25 36 ]; 26 37 27 38 xdg.enable = true;
+5 -4
home-manager/fragments/zed.nix
··· 1 - { lib 2 - , config 3 - , upkgs 4 - , ... 1 + { 2 + lib, 3 + config, 4 + upkgs, 5 + ... 5 6 }: 6 7 7 8 let
+4 -3
home-manager/fragments/zellij/default.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let
+3 -2
home-manager/options.nix
··· 1 - { lib 2 - , ... 1 + { 2 + lib, 3 + ... 3 4 }: 4 5 5 6 {
+9 -5
home-manager/profiles/desktop.nix
··· 1 - { config 2 - , pkgs 1 + { 2 + config, 3 + pkgs, 3 4 4 - , isDarwin 5 - , ... 5 + isDarwin, 6 + ... 6 7 }: 7 8 8 9 { 9 10 config = { 10 11 assertions = [ 11 - { assertion = !isDarwin; message = "this is a HM non-darwin config"; } 12 + { 13 + assertion = !isDarwin; 14 + message = "this is a HM non-darwin config"; 15 + } 12 16 ]; 13 17 14 18 local.fragment = {
+10 -6
home-manager/profiles/lightweight.nix
··· 1 - { self 2 - , config 3 - , pkgs 1 + { 2 + self, 3 + config, 4 + pkgs, 4 5 5 - , isDarwin 6 - , ... 6 + isDarwin, 7 + ... 7 8 }: 8 9 9 10 let ··· 14 15 15 16 config = { 16 17 assertions = [ 17 - { assertion = !isDarwin; message = "this is a HM non-darwin config"; } 18 + { 19 + assertion = !isDarwin; 20 + message = "this is a HM non-darwin config"; 21 + } 18 22 ]; 19 23 20 24 local.flags.onlyCached = true;
+11 -7
home-manager/profiles/macintosh.nix
··· 1 - { self 2 - , config 3 - , pkgs 1 + { 2 + self, 3 + config, 4 + pkgs, 4 5 5 - , isDarwin 6 + isDarwin, 6 7 # Provides the NixOS configuration if HM was loaded through the NixOS module 7 - , osConfig ? null 8 - , ... 8 + osConfig ? null, 9 + ... 9 10 }: 10 11 11 12 let ··· 23 24 24 25 config = { 25 26 assertions = [ 26 - { assertion = isDarwin; message = "this is a HM darwin-only config"; } 27 + { 28 + assertion = isDarwin; 29 + message = "this is a HM darwin-only config"; 30 + } 27 31 ]; 28 32 29 33 local.fragment = {
+7 -4
home-manager/profiles/server.nix
··· 1 - { isDarwin 2 - , ... 1 + { 2 + isDarwin, 3 + ... 3 4 }: 4 5 5 6 { 6 7 config = { 7 8 assertions = [ 8 - { assertion = !isDarwin; message = "this is a HM non-darwin config"; } 9 + { 10 + assertion = !isDarwin; 11 + message = "this is a HM non-darwin config"; 12 + } 9 13 ]; 10 14 11 15 local.fragment.shell.enable = true; 12 16 }; 13 17 } 14 -
+49 -16
hosts/weird-row-server/authelia.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let ··· 13 14 in 14 15 { 15 16 config = { 16 - age.secrets.authelia-jwt-secret = { file = secrets/authelia-jwt-secret.age; owner = config.services.authelia.instances.main.user; }; 17 - age.secrets.authelia-issuer-private-key = { file = secrets/authelia-issuer-private-key.age; owner = config.services.authelia.instances.main.user; }; 18 - age.secrets.authelia-storage-key = { file = secrets/authelia-storage-key.age; owner = config.services.authelia.instances.main.user; }; 19 - age.secrets.authelia-ldap-password = { file = secrets/authelia-ldap-password.age; owner = config.services.authelia.instances.main.user; }; 20 - age.secrets.authelia-smtp-password = { file = secrets/authelia-smtp-password.age; owner = config.services.authelia.instances.main.user; }; 17 + age.secrets.authelia-jwt-secret = { 18 + file = secrets/authelia-jwt-secret.age; 19 + owner = config.services.authelia.instances.main.user; 20 + }; 21 + age.secrets.authelia-issuer-private-key = { 22 + file = secrets/authelia-issuer-private-key.age; 23 + owner = config.services.authelia.instances.main.user; 24 + }; 25 + age.secrets.authelia-storage-key = { 26 + file = secrets/authelia-storage-key.age; 27 + owner = config.services.authelia.instances.main.user; 28 + }; 29 + age.secrets.authelia-ldap-password = { 30 + file = secrets/authelia-ldap-password.age; 31 + owner = config.services.authelia.instances.main.user; 32 + }; 33 + age.secrets.authelia-smtp-password = { 34 + file = secrets/authelia-smtp-password.age; 35 + owner = config.services.authelia.instances.main.user; 36 + }; 21 37 services.authelia.instances.main = { 22 38 enable = true; 23 39 ··· 39 55 }; 40 56 41 57 session = { 42 - cookies = [{ 43 - domain = "wiro.world"; 44 - authelia_url = "https://${authelia-hostname}"; 45 - default_redirection_url = "https://wiro.world"; 46 - }]; 58 + cookies = [ 59 + { 60 + domain = "wiro.world"; 61 + authelia_url = "https://${authelia-hostname}"; 62 + default_redirection_url = "https://wiro.world"; 63 + } 64 + ]; 47 65 }; 48 66 49 67 authentication_backend.ldap = { ··· 85 103 domain = "news.wiro.world"; 86 104 policy = "one_factor"; 87 105 88 - subject = [ [ "group:miniflux" "oauth2:client:miniflux" ] ]; 106 + subject = [ 107 + [ 108 + "group:miniflux" 109 + "oauth2:client:miniflux" 110 + ] 111 + ]; 89 112 } 90 113 { 91 114 domain = "*.wiro.world"; ··· 99 122 100 123 authorization_policies = 101 124 let 102 - mkStrictPolicy = policy: subject: 103 - { default_policy = "deny"; rules = [{ inherit policy subject; }]; }; 125 + mkStrictPolicy = policy: subject: { 126 + default_policy = "deny"; 127 + rules = [ { inherit policy subject; } ]; 128 + }; 104 129 in 105 130 { 106 131 headscale = mkStrictPolicy "two_factor" [ "group:headscale" ]; ··· 109 134 miniflux = mkStrictPolicy "one_factor" [ "group:miniflux" ]; 110 135 }; 111 136 112 - claims_policies.headscale = { id_token = [ "email" "name" "preferred_username" "picture" "groups" ]; }; 137 + claims_policies.headscale = { 138 + id_token = [ 139 + "email" 140 + "name" 141 + "preferred_username" 142 + "picture" 143 + "groups" 144 + ]; 145 + }; 113 146 114 147 clients = [ 115 148 {
+43 -11
hosts/weird-row-server/default.nix
··· 1 - { self 2 - , config 3 - , pkgs 4 - , ... 1 + { 2 + self, 3 + config, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 44 45 45 46 config = { 46 47 boot.loader.grub.enable = true; 47 - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "ext4" ]; 48 + boot.initrd.availableKernelModules = [ 49 + "ahci" 50 + "xhci_pci" 51 + "virtio_pci" 52 + "virtio_scsi" 53 + "sd_mod" 54 + "sr_mod" 55 + "ext4" 56 + ]; 48 57 49 58 # Single network card is `eth0` 50 59 networking.usePredictableInterfaceNames = false; 51 60 52 - networking.nameservers = [ "2001:4860:4860::8888" "2001:4860:4860::8844" ]; 61 + networking.nameservers = [ 62 + "2001:4860:4860::8888" 63 + "2001:4860:4860::8844" 64 + ]; 53 65 54 66 networking = { 55 67 interfaces.${ext-if} = { 56 - ipv4.addresses = [{ address = external-ip; prefixLength = external-netmask; }]; 57 - ipv6.addresses = [{ address = external-ip6; prefixLength = external-netmask6; }]; 68 + ipv4.addresses = [ 69 + { 70 + address = external-ip; 71 + prefixLength = external-netmask; 72 + } 73 + ]; 74 + ipv6.addresses = [ 75 + { 76 + address = external-ip6; 77 + prefixLength = external-netmask6; 78 + } 79 + ]; 58 80 }; 59 - defaultGateway = { interface = ext-if; address = external-gw; }; 60 - defaultGateway6 = { interface = ext-if; address = external-gw6; }; 81 + defaultGateway = { 82 + interface = ext-if; 83 + address = external-gw; 84 + }; 85 + defaultGateway6 = { 86 + interface = ext-if; 87 + address = external-gw6; 88 + }; 61 89 62 90 # Reflect firewall configuration on Hetzner 63 - firewall.allowedTCPPorts = [ 22 80 443 ]; 91 + firewall.allowedTCPPorts = [ 92 + 22 93 + 80 94 + 443 95 + ]; 64 96 }; 65 97 66 98 services.qemuGuest.enable = true;
+3 -2
hosts/weird-row-server/goatcounter.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let
+19 -8
hosts/weird-row-server/grafana.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let ··· 15 16 in 16 17 { 17 18 config = { 18 - age.secrets.grafana-oidc-secret = { file = secrets/grafana-oidc-secret.age; owner = "grafana"; }; 19 + age.secrets.grafana-oidc-secret = { 20 + file = secrets/grafana-oidc-secret.age; 21 + owner = "grafana"; 22 + }; 19 23 services.grafana = { 20 24 enable = true; 21 25 ··· 38 42 role_attribute_path = "contains(roles[*], 'admin') && 'GrafanaAdmin' || contains(roles[*], 'editor') && 'Editor' || 'Viewer'"; 39 43 allow_assign_grafana_admin = true; 40 44 41 - scopes = [ "openid" "profile" "email" "groups" ]; 45 + scopes = [ 46 + "openid" 47 + "profile" 48 + "email" 49 + "groups" 50 + ]; 42 51 auth_url = "https://auth.wiro.world/api/oidc/authorization"; 43 52 token_url = "https://auth.wiro.world/api/oidc/token"; 44 53 api_url = "https://auth.wiro.world/api/oidc/userinfo"; ··· 59 68 scrapeConfigs = [ 60 69 { 61 70 job_name = "caddy"; 62 - static_configs = [{ targets = [ "localhost:${toString caddy-metrics-port}" ]; }]; 71 + static_configs = [ { targets = [ "localhost:${toString caddy-metrics-port}" ]; } ]; 63 72 } 64 73 { 65 74 job_name = "node-exporter"; 66 - static_configs = [{ targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; }]; 75 + static_configs = [ 76 + { targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; } 77 + ]; 67 78 } 68 79 { 69 80 job_name = "headscale"; 70 - static_configs = [{ targets = [ "localhost:${toString headscale-metrics-port}" ]; }]; 81 + static_configs = [ { targets = [ "localhost:${toString headscale-metrics-port}" ]; } ]; 71 82 } 72 83 { 73 84 job_name = "authelia"; 74 - static_configs = [{ targets = [ "localhost:${toString authelia-metrics-port}" ]; }]; 85 + static_configs = [ { targets = [ "localhost:${toString authelia-metrics-port}" ]; } ]; 75 86 } 76 87 ]; 77 88 };
+20 -6
hosts/weird-row-server/headscale.nix
··· 1 - { pkgs 2 - , config 3 - , ... 1 + { 2 + pkgs, 3 + config, 4 + ... 4 5 }: 5 6 6 7 let ··· 16 17 config = { 17 18 networking.firewall.allowedUDPPorts = [ headscale-derp-port ]; 18 19 19 - age.secrets.headscale-oidc-secret = { file = secrets/headscale-oidc-secret.age; owner = config.services.headscale.user; }; 20 + age.secrets.headscale-oidc-secret = { 21 + file = secrets/headscale-oidc-secret.age; 22 + owner = config.services.headscale.user; 23 + }; 20 24 services.headscale = { 21 25 enable = true; 22 26 ··· 54 58 55 59 override_local_dns = true; 56 60 # Quad9 nameservers 57 - nameservers.global = [ "9.9.9.9" "149.112.112.112" "2620:fe::fe" "2620:fe::9" ]; 61 + nameservers.global = [ 62 + "9.9.9.9" 63 + "149.112.112.112" 64 + "2620:fe::fe" 65 + "2620:fe::9" 66 + ]; 58 67 }; 59 68 60 69 oidc = { ··· 62 71 issuer = "https://auth.wiro.world"; 63 72 client_id = "headscale"; 64 73 client_secret_path = config.age.secrets.headscale-oidc-secret.path; 65 - scope = [ "openid" "profile" "email" "groups" ]; 74 + scope = [ 75 + "openid" 76 + "profile" 77 + "email" 78 + "groups" 79 + ]; 66 80 pkce.enabled = true; 67 81 }; 68 82
+4 -3
hosts/weird-row-server/hypixel-bank-tracker.nix
··· 1 - { self 2 - , config 3 - , ... 1 + { 2 + self, 3 + config, 4 + ... 4 5 }: 5 6 6 7 let
+11 -4
hosts/weird-row-server/lldap.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let ··· 9 10 { 10 11 config = { 11 12 age.secrets.lldap-env.file = secrets/lldap-env.age; 12 - users.users.lldap = { isSystemUser = true; group = "lldap"; }; 13 + users.users.lldap = { 14 + isSystemUser = true; 15 + group = "lldap"; 16 + }; 13 17 users.groups.lldap = { }; 14 - age.secrets.lldap-user-pass = { file = secrets/lldap-user-pass.age; owner = "lldap"; }; 18 + age.secrets.lldap-user-pass = { 19 + file = secrets/lldap-user-pass.age; 20 + owner = "lldap"; 21 + }; 15 22 services.lldap = { 16 23 enable = true; 17 24
+17 -8
hosts/weird-row-server/miniflux.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let ··· 8 9 in 9 10 { 10 11 config = { 11 - users.users.miniflux = { isSystemUser = true; group = "miniflux"; }; 12 + users.users.miniflux = { 13 + isSystemUser = true; 14 + group = "miniflux"; 15 + }; 12 16 users.groups.miniflux = { }; 13 - age.secrets.miniflux-oidc-secret = { file = secrets/miniflux-oidc-secret.age; owner = "miniflux"; }; 17 + age.secrets.miniflux-oidc-secret = { 18 + file = secrets/miniflux-oidc-secret.age; 19 + owner = "miniflux"; 20 + }; 14 21 services.miniflux = { 15 22 enable = true; 16 23 ··· 38 45 }; 39 46 }; 40 47 41 - services.prometheus.scrapeConfigs = [{ 42 - job_name = "miniflux"; 43 - static_configs = [{ targets = [ "localhost:${toString miniflux-port}" ]; }]; 44 - }]; 48 + services.prometheus.scrapeConfigs = [ 49 + { 50 + job_name = "miniflux"; 51 + static_configs = [ { targets = [ "localhost:${toString miniflux-port}" ]; } ]; 52 + } 53 + ]; 45 54 46 55 services.caddy = { 47 56 virtualHosts.${miniflux-hostname}.extraConfig = ''
+4 -3
hosts/weird-row-server/paisa.nix
··· 1 - { config 2 - , pkgs 3 - , ... 1 + { 2 + config, 3 + pkgs, 4 + ... 4 5 }: 5 6 6 7 let
+3 -2
hosts/weird-row-server/pds.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let
+4 -3
hosts/weird-row-server/tangled.nix
··· 1 - { self 2 - , config 3 - , ... 1 + { 2 + self, 3 + config, 4 + ... 4 5 }: 5 6 6 7 let
+3 -2
hosts/weird-row-server/thelounge.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let
+7 -3
hosts/weird-row-server/tuwunel.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let ··· 10 11 in 11 12 { 12 13 config = { 13 - age.secrets.tuwunel-registration-tokens = { file = secrets/tuwunel-registration-tokens.age; owner = config.services.matrix-tuwunel.user; }; 14 + age.secrets.tuwunel-registration-tokens = { 15 + file = secrets/tuwunel-registration-tokens.age; 16 + owner = config.services.matrix-tuwunel.user; 17 + }; 14 18 services.matrix-tuwunel = { 15 19 enable = true; 16 20
+3 -2
hosts/weird-row-server/vaultwarden.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let
+2 -1
hosts/weird-row-server/warrior.nix
··· 1 - { ... 1 + { 2 + ... 2 3 }: 3 4 4 5 let
+5 -4
hosts/weird-row-server/webfinger.nix
··· 1 - { pkgs 2 - , config 3 - , ... 1 + { 2 + pkgs, 3 + config, 4 + ... 4 5 }: 5 6 6 7 let ··· 57 58 root ${webfinger-dir} 58 59 file_server 59 60 } 60 - '' + 61 61 '' 62 + + '' 62 63 @discord { 63 64 path /.well-known/discord 64 65 method GET HEAD
+39 -26
lib/flake/default.nix
··· 1 - { self 2 - , lib 3 - , ... 1 + { 2 + self, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let ··· 10 11 inherit (home-manager.lib) homeManagerConfiguration; 11 12 in 12 13 rec { 13 - forAllSystems = lib.genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 14 + forAllSystems = lib.genAttrs [ 15 + "x86_64-linux" 16 + "aarch64-linux" 17 + "aarch64-darwin" 18 + ]; 14 19 15 20 specialModuleArgs = pkgs: { 16 21 # this flake ··· 30 35 31 36 # NixOS related 32 37 nixos = { 33 - createSystem = pkgs: modules: lib.nixosSystem { 34 - inherit pkgs; 35 - modules = modules ++ [ 36 - ../../nixos/fragments/default.nix 37 - ]; 38 - specialArgs = specialModuleArgs pkgs; 39 - }; 38 + createSystem = 39 + pkgs: modules: 40 + lib.nixosSystem { 41 + inherit pkgs; 42 + modules = modules ++ [ 43 + ../../nixos/fragments/default.nix 44 + ]; 45 + specialArgs = specialModuleArgs pkgs; 46 + }; 40 47 41 48 # `createSystem` modules 42 49 system = hostName: profile: { ··· 59 66 60 67 # Darwin related 61 68 darwin = { 62 - createSystem = pkgs: modules: darwinSystem { 63 - inherit pkgs; 64 - modules = modules ++ [ 65 - ../../nixos/fragments/default.nix 66 - ]; 67 - specialArgs = specialModuleArgs pkgs; 68 - }; 69 + createSystem = 70 + pkgs: modules: 71 + darwinSystem { 72 + inherit pkgs; 73 + modules = modules ++ [ 74 + ../../nixos/fragments/default.nix 75 + ]; 76 + specialArgs = specialModuleArgs pkgs; 77 + }; 69 78 70 79 # `darwin.createSystem` modules 71 80 user = import ./user.nix; ··· 73 82 74 83 # Home Manager related 75 84 home-manager = { 76 - createHome = pkgs: modules: homeManagerConfiguration { 77 - inherit pkgs; 78 - modules = modules ++ [ 79 - ../../home-manager/fragments/default.nix 80 - ../../home-manager/options.nix 81 - ]; 82 - extraSpecialArgs = (specialModuleArgs pkgs) // { osConfig = null; }; 83 - }; 85 + createHome = 86 + pkgs: modules: 87 + homeManagerConfiguration { 88 + inherit pkgs; 89 + modules = modules ++ [ 90 + ../../home-manager/fragments/default.nix 91 + ../../home-manager/options.nix 92 + ]; 93 + extraSpecialArgs = (specialModuleArgs pkgs) // { 94 + osConfig = null; 95 + }; 96 + }; 84 97 85 98 # `home-manager.createHome` modules 86 99 home = username: home-dir: profile: {
+8 -2
lib/flake/managedDiskLayout.nix
··· 1 - layout: { device, swapSize }: 1 + layout: 2 + { device, swapSize }: 2 3 3 - { self, pkgs, lib, ... }: 4 + { 5 + self, 6 + pkgs, 7 + lib, 8 + ... 9 + }: 4 10 5 11 let 6 12 inherit (self.inputs) disko;
+46 -26
lib/flake/user.nix
··· 1 - name: { description, profile, keys ? [ ], user ? { }, elevated }: 1 + name: 2 + { 3 + description, 4 + profile, 5 + keys ? [ ], 6 + user ? { }, 7 + elevated, 8 + }: 2 9 3 - { self 4 - , pkgs 5 - , lib 6 - , isDarwin 7 - , ... 10 + { 11 + self, 12 + pkgs, 13 + lib, 14 + isDarwin, 15 + ... 8 16 }: 9 17 10 18 let ··· 13 21 in 14 22 { 15 23 imports = [ 16 - (if isDarwin then home-manager.darwinModules.home-manager else home-manager.nixosModules.home-manager) 24 + ( 25 + if isDarwin then home-manager.darwinModules.home-manager else home-manager.nixosModules.home-manager 26 + ) 17 27 ]; 18 28 19 29 options = { ··· 31 41 shell = pkgs.fish; 32 42 33 43 openssh.authorizedKeys.keys = keys; 34 - } // (if isDarwin then { 35 - home = "/Users/${name}"; 36 - } else { 37 - home = "/home/${name}"; 38 - isNormalUser = true; 39 - extraGroups = [ 40 - "networkmanager" 41 - ] ++ lib.optionals elevated [ 42 - "wheel" # root access 43 - "tss" # tpm access 44 - ]; 45 - }) // user; 44 + } 45 + // ( 46 + if isDarwin then 47 + { 48 + home = "/Users/${name}"; 49 + } 50 + else 51 + { 52 + home = "/home/${name}"; 53 + isNormalUser = true; 54 + extraGroups = [ 55 + "networkmanager" 56 + ] 57 + ++ lib.optionals elevated [ 58 + "wheel" # root access 59 + "tss" # tpm access 60 + ]; 61 + } 62 + ) 63 + // user; 46 64 47 65 home-manager = { 48 66 extraSpecialArgs = specialModuleArgs pkgs; ··· 50 68 useUserPackages = false; 51 69 useGlobalPkgs = true; 52 70 53 - users.${name} = { ... }: { 54 - imports = [ 55 - ../../home-manager/profiles/${profile}.nix 56 - ../../home-manager/fragments/default.nix 57 - ../../home-manager/options.nix 58 - ]; 59 - }; 71 + users.${name} = 72 + { ... }: 73 + { 74 + imports = [ 75 + ../../home-manager/profiles/${profile}.nix 76 + ../../home-manager/fragments/default.nix 77 + ../../home-manager/options.nix 78 + ]; 79 + }; 60 80 }; 61 81 }; 62 82 }
+2 -1
lib/unfree.nix
··· 1 1 { lib }: 2 2 3 3 # List of all unfree packages authorized 4 - package: builtins.elem (lib.getName package) [ 4 + package: 5 + builtins.elem (lib.getName package) [ 5 6 # NixOS 6 7 "hplip" 7 8 "steam"
+5 -4
modules/home-manager/screen.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let
+11 -7
modules/home-manager/wakatime.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 57 58 # e.g. agenix uses `$XDG_RUNTIME_DIR` 58 59 wakatime-key = pkgs.writeShellScript "cat-wakatime-api-key" "cat ${cfg.apiKeyFile}"; 59 60 60 - merged-settings = cfg.settings // { api_key_vault_cmd = "${wakatime-key}"; }; 61 - final-config = cfg.extraConfig // { settings = merged-settings; }; 61 + merged-settings = cfg.settings // { 62 + api_key_vault_cmd = "${wakatime-key}"; 63 + }; 64 + final-config = cfg.extraConfig // { 65 + settings = merged-settings; 66 + }; 62 67 in 63 68 lib.mkIf cfg.enable { 64 69 home.sessionVariables.WAKATIME_HOME = "${config.xdg.configHome}/wakatime"; ··· 66 71 xdg.configFile."wakatime/.wakatime.cfg".source = ini-format.generate "wakatime-config" final-config; 67 72 }; 68 73 } 69 -
+37 -16
modules/home-manager/xcompose.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 64 65 comboListToString = foldl (acc: val: acc + "<${val}> ") ""; 65 66 sanitizeComboResult = escape [ ''"'' ]; 66 67 67 - comboSetToList = ip: flatten (mapAttrsToList 68 - (name: value: 69 - if isAttrs value then 70 - let vs = comboSetToList value; 71 - in 72 - map ({ combo, value }: { combo = [ name ] ++ combo; inherit value; }) vs 73 - else if isString value then 74 - { combo = [ name ]; inherit value; } 75 - else throw "combo value must be a string" 76 - ) 77 - ip); 78 - complexListToSimple = map ({ combo, value }: { combo = comboListToString combo; value = sanitizeComboResult value; }); 68 + comboSetToList = 69 + ip: 70 + flatten ( 71 + mapAttrsToList ( 72 + name: value: 73 + if isAttrs value then 74 + let 75 + vs = comboSetToList value; 76 + in 77 + map ( 78 + { combo, value }: 79 + { 80 + combo = [ name ] ++ combo; 81 + inherit value; 82 + } 83 + ) vs 84 + else if isString value then 85 + { 86 + combo = [ name ]; 87 + inherit value; 88 + } 89 + else 90 + throw "combo value must be a string" 91 + ) ip 92 + ); 93 + complexListToSimple = map ( 94 + { combo, value }: 95 + { 96 + combo = comboListToString combo; 97 + value = sanitizeComboResult value; 98 + } 99 + ); 79 100 toComposeFile = foldl (acc: val: acc + "${val.combo}: \"${val.value}\"\n") ""; 80 101 81 102 processComposeSet = set: toComposeFile (complexListToSimple (comboSetToList set));
+36 -33
modules/nixos/logiops.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 20 21 type = libconfig-format.type; 21 22 default = { }; 22 23 example = { 23 - devices = [{ 24 - name = "Wireless Mouse MX Master 3"; 24 + devices = [ 25 + { 26 + name = "Wireless Mouse MX Master 3"; 25 27 26 - smartshift = { 27 - on = true; 28 - threshold = 20; 29 - }; 28 + smartshift = { 29 + on = true; 30 + threshold = 20; 31 + }; 30 32 31 - hiresscroll = { 32 - hires = true; 33 - invert = false; 34 - target = false; 35 - }; 33 + hiresscroll = { 34 + hires = true; 35 + invert = false; 36 + target = false; 37 + }; 36 38 37 - dpi = 1500; 39 + dpi = 1500; 38 40 39 - buttons = [ 40 - { 41 - cid = "0x53"; 42 - action = { 43 - type = "Keypress"; 44 - keys = [ "KEY_FORWARD" ]; 45 - }; 46 - } 47 - { 48 - cid = "0x56"; 49 - action = { 50 - type = "Keypress"; 51 - keys = [ "KEY_BACK" ]; 52 - }; 53 - } 54 - ]; 55 - }]; 41 + buttons = [ 42 + { 43 + cid = "0x53"; 44 + action = { 45 + type = "Keypress"; 46 + keys = [ "KEY_FORWARD" ]; 47 + }; 48 + } 49 + { 50 + cid = "0x56"; 51 + action = { 52 + type = "Keypress"; 53 + keys = [ "KEY_BACK" ]; 54 + }; 55 + } 56 + ]; 57 + } 58 + ]; 56 59 }; 57 60 description = lib.mdDoc '' 58 61 Logid configuration. Refer to
+10 -7
nixos/fragments/agenix.nix
··· 1 - { self 2 - , config 3 - , lib 1 + { 2 + self, 3 + config, 4 + lib, 4 5 5 - , isDarwin 6 - , ... 6 + isDarwin, 7 + ... 7 8 }: 8 9 9 10 let ··· 25 26 26 27 config = lib.mkIf cfg.enable { 27 28 assertions = [ 28 - { assertion = config.services.openssh.enable; message = "`agenix` fragment depends on `openssh` program"; } 29 + { 30 + assertion = config.services.openssh.enable; 31 + message = "`agenix` fragment depends on `openssh` program"; 32 + } 29 33 ]; 30 34 31 35 age = { ··· 39 43 }; 40 44 }; 41 45 } 42 -
+23 -17
nixos/fragments/backup.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 16 17 options.local.fragment.backup.enable = lib.mkEnableOption '' 17 18 Backup related 18 19 ''; 19 - 20 20 21 21 config = lib.mkIf cfg.enable { 22 22 # TODO: fix module 23 - assertions = [{ assertion = false; message = "module is broken"; }]; 23 + assertions = [ 24 + { 25 + assertion = false; 26 + message = "module is broken"; 27 + } 28 + ]; 24 29 25 30 age.secrets.backup-restic-key.file = ../../secrets/backup/restic-key.age; 26 31 age.secrets.backup-rclone-google-drive.file = ../../secrets/backup/rclone-googledrive.age; ··· 48 53 # Remove stale Restic locks 49 54 ${lib.getExe pkgs.restic} unlock || true 50 55 51 - ${lib.getExe pkgs.rsync} \ 52 - ${"\\" /* Archive mode and delete files that are not in the source directory. `--mkpath` is like `mkdir`'s `-p` option */} 53 - --archive --delete --mkpath \ 54 - ${"\\" /* `:-` operator uses .gitignore files as exclude patterns */} 55 - --filter=':- .gitignore' \ 56 - ${"\\" /* Exclude nixpkgs repository because they have some weird symlink test files that break rsync */} 57 - --exclude 'nixpkgs' \ 58 - ${"\\" /* Hardlink files to avoid taking up more space */} 59 - --link-dest=/home/${mainUsername}/Development \ 60 - /home/${mainUsername}/Development/ /home/${mainUsername}/.local/backup/repos 56 + ${lib.getExe pkgs.rsync} ${lib.cli.toCommandLineGNU {} { 57 + # Archive mode and delete files that are not in the source directory. `--mkpath` is like `mkdir`'s `-p` option 58 + archive = true; 59 + delete = true; 60 + mkpath = true; 61 + # `:-` operator uses .gitignore files as exclude patterns 62 + filter = ":- .gitignore"; 63 + # Exclude nixpkgs repository because they have some weird symlink test files that break rsync 64 + exclude = "nixpkgs"; 65 + # Hardlink files to avoid taking up more space 66 + link-dest = "/home/${mainUsername}/Development"; 67 + }} /home/${mainUsername}/Development/ /home/${mainUsername}/.local/backup/repos 61 68 ''; 62 69 63 70 pruneOpts = [ ··· 65 72 "--keep-weekly 5" 66 73 "--keep-yearly 10" 67 74 ]; 68 - 69 75 70 76 # TODO: fix config 71 77 timerConfig = null;
+6 -4
nixos/fragments/default.nix
··· 1 - { lib 2 - , isDarwin 3 - , ... 1 + { 2 + lib, 3 + isDarwin, 4 + ... 4 5 }: 5 6 6 7 { ··· 16 17 ./security.nix 17 18 ./virtualisation.nix 18 19 ./wireless.nix 19 - ] ++ lib.optionals isDarwin [ 20 + ] 21 + ++ lib.optionals isDarwin [ 20 22 ./yabai.nix 21 23 ]; 22 24 }
+19 -8
nixos/fragments/fonts.nix
··· 1 - { config 2 - , lib 3 - , pkgs 1 + { 2 + config, 3 + lib, 4 + pkgs, 4 5 5 - , isDarwin 6 - , ... 6 + isDarwin, 7 + ... 7 8 }: 8 9 9 10 let ··· 25 26 noto-fonts-cjk-sans 26 27 noto-fonts-color-emoji 27 28 ]; 28 - } // lib.optionalAttrs (!isDarwin) { 29 + } 30 + // lib.optionalAttrs (!isDarwin) { 29 31 fontconfig = { 30 32 defaultFonts = { 31 - sansSerif = [ "Inter" "Noto Sans" "Noto Sans Japanese" "Noto Sans Korean" "Noto Sans Chinese" ]; 33 + sansSerif = [ 34 + "Inter" 35 + "Noto Sans" 36 + "Noto Sans Japanese" 37 + "Noto Sans Korean" 38 + "Noto Sans Chinese" 39 + ]; 32 40 serif = [ "Merriweather" ]; 33 - monospace = [ "JetBrainsMono Nerd Font" "Noto Sans Mono" ]; 41 + monospace = [ 42 + "JetBrainsMono Nerd Font" 43 + "Noto Sans Mono" 44 + ]; 34 45 emoji = [ "Noto Color Emoji" ]; 35 46 }; 36 47 };
+4 -3
nixos/fragments/gaming.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let
+5 -4
nixos/fragments/kanata/default.nix
··· 1 - { config 2 - , lib 3 - , pkgs 1 + { 2 + config, 3 + lib, 4 + pkgs, 4 5 5 - , ... 6 + ... 6 7 }: 7 8 8 9 let
+69 -60
nixos/fragments/logiops.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 7 7 8 let ··· 22 23 settings = 23 24 let 24 25 cid = { 25 - # Control IDs │ reprog? │ fn key? │ mouse key? │ gesture support? 26 - leftMouse = 80; # 0x50 │ │ │ YES │ 27 - rightMouse = 81; # 0x51 │ │ │ YES │ 28 - middleMouse = 81; # 0x52 │ YES │ │ YES │ YES 29 - back = 83; # 0x53 │ YES │ │ YES │ YES 30 - forward = 86; # 0x56 │ YES │ │ YES │ YES 31 - switchReceivers = 215; # 0xD7 │ YES │ │ │ YES 32 - mouseSensitivity = 253; # 0xFD │ YES │ │ YES │ YES 26 + # Control IDs │ reprog? │ fn key? │ mouse key? │ gesture support? 27 + # 0x50 │ │ │ YES │ 28 + # 0x51 │ │ │ YES │ 29 + # 0x52 │ YES │ │ YES │ YES 30 + # 0x53 │ YES │ │ YES │ YES 31 + # 0x56 │ YES │ │ YES │ YES 32 + # 0xD7 │ YES │ │ │ YES 33 + # 0xFD │ YES │ │ YES │ YES 34 + leftMouse = 80; 35 + rightMouse = 81; 36 + middleMouse = 81; 37 + back = 83; 38 + forward = 86; 39 + switchReceivers = 215; 40 + mouseSensitivity = 253; 33 41 }; 34 42 in 35 43 { 36 - devices = [{ 37 - name = "MX Vertical Advanced Ergonomic Mouse"; 44 + devices = [ 45 + { 46 + name = "MX Vertical Advanced Ergonomic Mouse"; 38 47 39 - dpi = 1500; 48 + dpi = 1500; 40 49 41 - hiresscroll = { 42 - hires = true; 43 - invert = false; 44 - target = false; 45 - }; 50 + hiresscroll = { 51 + hires = true; 52 + invert = false; 53 + target = false; 54 + }; 46 55 47 - buttons = [ 48 - { 49 - cid = cid.forward; 50 - action = { 51 - type = "Keypress"; 52 - keys = [ "KEY_FORWARD" ]; 53 - # type = "Gestures"; 54 - # gestures = [ 55 - # { 56 - # direction = "Left"; 57 - # mode = "OnThreshold"; 58 - # action = { 59 - # type = "Keypress"; 60 - # keys = ["KEY_LEFTMETA" "KEY_LEFTCTRL" "KEY_LEFTSHIFT" "KEY_TAB"]; 61 - # }; 62 - # } 63 - # ]; 64 - }; 65 - } 66 - { 67 - cid = cid.back; 68 - action = { 69 - type = "Keypress"; 70 - keys = [ "KEY_BACK" ]; 71 - }; 72 - } 73 - { 74 - cid = cid.mouseSensitivity; 75 - action = { 76 - type = "Keypress"; 77 - keys = [ "KEY_LEFTMETA" ]; 78 - }; 79 - } 80 - { 81 - cid = cid.switchReceivers; 82 - action.type = "None"; 83 - } 84 - ]; 85 - }]; 56 + buttons = [ 57 + { 58 + cid = cid.forward; 59 + action = { 60 + type = "Keypress"; 61 + keys = [ "KEY_FORWARD" ]; 62 + # type = "Gestures"; 63 + # gestures = [ 64 + # { 65 + # direction = "Left"; 66 + # mode = "OnThreshold"; 67 + # action = { 68 + # type = "Keypress"; 69 + # keys = ["KEY_LEFTMETA" "KEY_LEFTCTRL" "KEY_LEFTSHIFT" "KEY_TAB"]; 70 + # }; 71 + # } 72 + # ]; 73 + }; 74 + } 75 + { 76 + cid = cid.back; 77 + action = { 78 + type = "Keypress"; 79 + keys = [ "KEY_BACK" ]; 80 + }; 81 + } 82 + { 83 + cid = cid.mouseSensitivity; 84 + action = { 85 + type = "Keypress"; 86 + keys = [ "KEY_LEFTMETA" ]; 87 + }; 88 + } 89 + { 90 + cid = cid.switchReceivers; 91 + action.type = "None"; 92 + } 93 + ]; 94 + } 95 + ]; 86 96 }; 87 97 }; 88 98 } 89 -
+34 -16
nixos/fragments/nix.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , pkgs 1 + { 2 + self, 3 + config, 4 + lib, 5 + pkgs, 5 6 6 - , isDarwin 7 - , ... 7 + isDarwin, 8 + ... 8 9 }: 9 10 10 11 let ··· 27 28 registry = lib.mapAttrs (_: value: { flake = value; }) (self.inputs // { inherit self; }); 28 29 29 30 nixPath = 30 - if clear-nix-env 31 + if 32 + clear-nix-env 31 33 # Actually make it empty to disable nix-* legacy commands 32 - then [ ] 34 + then 35 + [ ] 33 36 # Make NixOS system's legacy channels consistent with registry and flake inputs 34 - else lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; 37 + else 38 + lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; 35 39 36 40 gc = { 37 41 automatic = true; ··· 40 44 options = "--delete-older-than 30d"; 41 45 } 42 46 # Same option to say that GC is ran weekly at 3h15 43 - // (if isDarwin then { 44 - interval = { Weekday = 7; Hour = 3; Minute = 15; }; 45 - } else { 46 - dates = "Sun *-*-* 03:15:00"; 47 - }); 47 + // ( 48 + if isDarwin then 49 + { 50 + interval = { 51 + Weekday = 7; 52 + Hour = 3; 53 + Minute = 15; 54 + }; 55 + } 56 + else 57 + { 58 + dates = "Sun *-*-* 03:15:00"; 59 + } 60 + ); 48 61 49 62 settings = { 50 - experimental-features = [ "nix-command" "flakes" ]; 63 + experimental-features = [ 64 + "nix-command" 65 + "flakes" 66 + ]; 51 67 auto-optimise-store = true; 52 68 53 69 # Disable flake registry to keep system pure and ··· 62 78 63 79 trusted-users = [ config.local.user.username ]; 64 80 extra-substituters = [ "https://nix-community.cachix.org" ]; 65 - extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; 81 + extra-trusted-public-keys = [ 82 + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 83 + ]; 66 84 }; 67 85 }; 68 86
+6 -7
nixos/fragments/secure-boot.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , upkgs 5 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + upkgs, 6 + ... 6 7 }: 7 8 8 9 # https://github.com/nix-community/lanzaboote/blob/master/docs/QUICK_START.md ··· 37 38 ]; 38 39 }; 39 40 } 40 - 41 -
+18 -5
nixos/fragments/security.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let ··· 32 33 }; 33 34 34 35 # `swaylock` pam service must be at least declared to work properly 35 - security.pam.services."swaylock" = { nodelay = true; failDelay = { enable = true; delay = 500000; }; }; 36 + security.pam.services."swaylock" = { 37 + nodelay = true; 38 + failDelay = { 39 + enable = true; 40 + delay = 500000; 41 + }; 42 + }; 36 43 37 44 # reduce sudo fail delay to half a second 38 - security.pam.services."sudo" = { nodelay = true; failDelay = { enable = true; delay = 500000; }; }; 45 + security.pam.services."sudo" = { 46 + nodelay = true; 47 + failDelay = { 48 + enable = true; 49 + delay = 500000; 50 + }; 51 + }; 39 52 40 53 # Signing 41 54 programs.gnupg.agent.enable = true;
+4 -3
nixos/fragments/virtualisation.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let
+18 -7
nixos/fragments/wireless.nix
··· 1 - { pkgs 2 - , config 3 - , lib 4 - , ... 1 + { 2 + pkgs, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 7 7 8 let ··· 15 16 16 17 config = lib.mkIf cfg.enable { 17 18 # Wifi 18 - networking.nameservers = [ "1.1.1.1" "8.8.8.8" "9.9.9.9" ]; 19 + networking.nameservers = [ 20 + "1.1.1.1" 21 + "8.8.8.8" 22 + "9.9.9.9" 23 + ]; 19 24 networking.networkmanager.enable = true; 20 25 21 26 # Firewall ··· 28 33 # Open arbitrary ports to share things on local networks 29 34 allowedTCPPorts = [ 4242 ]; 30 35 allowedTCPPortRanges = [ 31 - { from = 42420; to = 42429; } 36 + { 37 + from = 42420; 38 + to = 42429; 39 + } 32 40 ]; 33 41 allowedUDPPorts = [ 4242 ]; 34 42 allowedUDPPortRanges = [ 35 - { from = 42420; to = 42429; } 43 + { 44 + from = 42420; 45 + to = 42429; 46 + } 36 47 ]; 37 48 38 49 # Allow packets from Docker containers
+4 -3
nixos/fragments/yabai.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let
+5 -4
nixos/hardware/apple-wiro-laptop.nix
··· 1 - { self 2 - , config 3 - , lib 4 - , ... 1 + { 2 + self, 3 + config, 4 + lib, 5 + ... 5 6 }: 6 7 7 8 {
+10 -4
nixos/hardware/archaic-wiro-laptop.nix
··· 1 - { config 2 - , lib 3 - , ... 1 + { 2 + config, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 { ··· 10 11 time.timeZone = "Europe/Paris"; 11 12 12 13 # --- Generated by `nixos-generate-config` --- 13 - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "sd_mod" "rtsx_pci_sdmmc" ]; 14 + boot.initrd.availableKernelModules = [ 15 + "xhci_pci" 16 + "ahci" 17 + "sd_mod" 18 + "rtsx_pci_sdmmc" 19 + ]; 14 20 boot.initrd.kernelModules = [ ]; 15 21 boot.kernelModules = [ "kvm-intel" ]; 16 22 boot.extraModulePackages = [ ];
+12 -5
nixos/hardware/neo-wiro-laptop.nix
··· 1 - { config 2 - , lib 3 - , pkgs 4 - , ... 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 5 6 }: 6 7 7 8 let ··· 32 33 ''; 33 34 34 35 # --- Generated by `nixos-generate-config` --- 35 - boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "sdhci_pci" ]; 36 + boot.initrd.availableKernelModules = [ 37 + "xhci_pci" 38 + "thunderbolt" 39 + "vmd" 40 + "nvme" 41 + "sdhci_pci" 42 + ]; 36 43 boot.initrd.kernelModules = [ ]; 37 44 boot.kernelModules = [ "kvm-intel" ]; 38 45 boot.extraModulePackages = [ ];
+9 -5
nixos/hardware/weird-row-server.nix
··· 1 - { lib 1 + { 2 + lib, 2 3 3 - , modulesPath 4 - , ... 4 + modulesPath, 5 + ... 5 6 }: 6 7 7 8 { ··· 11 12 system.stateVersion = "24.11"; 12 13 13 14 # --- Generated by `nixos-generate-config` --- 14 - boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_scsi" "sr_mod" ]; 15 + boot.initrd.availableKernelModules = [ 16 + "xhci_pci" 17 + "virtio_scsi" 18 + "sr_mod" 19 + ]; 15 20 boot.initrd.kernelModules = [ ]; 16 21 boot.kernelModules = [ ]; 17 22 boot.extraModulePackages = [ ]; ··· 21 26 nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; 22 27 }; 23 28 } 24 -
+3 -2
nixos/layout/ext4-hetzner.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let
+15 -5
nixos/layout/luks-btrfs.nix
··· 1 - { config 2 - , ... 1 + { 2 + config, 3 + ... 3 4 }: 4 5 5 6 let ··· 36 37 subvolumes = { 37 38 "/root" = { 38 39 mountpoint = "/"; 39 - mountOptions = [ "compress=zstd" "noatime" ]; 40 + mountOptions = [ 41 + "compress=zstd" 42 + "noatime" 43 + ]; 40 44 }; 41 45 "/home" = { 42 46 mountpoint = "/home"; 43 - mountOptions = [ "compress=zstd" "noatime" ]; 47 + mountOptions = [ 48 + "compress=zstd" 49 + "noatime" 50 + ]; 44 51 }; 45 52 "/nix" = { 46 53 mountpoint = "/nix"; 47 - mountOptions = [ "compress=zstd" "noatime" ]; 54 + mountOptions = [ 55 + "compress=zstd" 56 + "noatime" 57 + ]; 48 58 }; 49 59 "/swap" = { 50 60 mountpoint = "/.swapvol";
+13 -7
nixos/profiles/installer.nix
··· 1 - { lib 2 - , pkgs 1 + { 2 + lib, 3 + pkgs, 3 4 4 - , modulesPath 5 - , ... 5 + modulesPath, 6 + ... 6 7 }: 7 8 8 9 let ··· 20 21 connect-wifi = writeShellScriptBin "connect-wifi" '' 21 22 if [ -z "$1" ]; then echo "Interface unset"; exit; fi 22 23 if [ -z "$2" ]; then echo "SSID unset"; exit; fi 23 - 24 + 24 25 CONFIG=$(mktemp) 25 26 wpa_passphrase $2 > $CONFIG 26 27 sudo wpa_supplicant -B -i$1 -c$CONFIG ··· 69 70 boot.kernelPackages = lib.mkForce pkgs.linuxKernel.packages.linux_6_6; 70 71 71 72 nix.settings = { 72 - experimental-features = [ "nix-command" "flakes" ]; 73 + experimental-features = [ 74 + "nix-command" 75 + "flakes" 76 + ]; 73 77 extra-substituters = [ "https://nix-community.cachix.org" ]; 74 - extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; 78 + extra-trusted-public-keys = [ 79 + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 80 + ]; 75 81 }; 76 82 77 83 # Add our keys to default users for better remote experience
+13 -5
nixos/profiles/laptop.nix
··· 1 - { config 2 - , pkgs 3 - , ... 1 + { 2 + config, 3 + pkgs, 4 + ... 4 5 }: 5 6 6 7 { ··· 87 88 enable = true; 88 89 package = pkgs.wireshark; 89 90 }; 90 - users.users.${config.local.user.username}.extraGroups = [ "wireshark" "plugdev" ]; 91 + users.users.${config.local.user.username}.extraGroups = [ 92 + "wireshark" 93 + "plugdev" 94 + ]; 91 95 92 96 # This option is already filled with aliases that snowball and have 93 97 # priority on fish internal `ls` aliases 94 - environment.shellAliases = { ls = null; ll = null; l = null; }; 98 + environment.shellAliases = { 99 + ls = null; 100 + ll = null; 101 + l = null; 102 + }; 95 103 programs.fish.enable = true; 96 104 97 105 services.udev.packages = with pkgs; [
+2 -1
nixos/profiles/macintosh.nix
··· 1 - { ... 1 + { 2 + ... 2 3 }: 3 4 4 5 {
+8 -4
overlays/default.nix
··· 1 - { self 2 - , lib 3 - , ... 1 + { 2 + self, 3 + lib, 4 + ... 4 5 }: 5 6 6 7 let ··· 8 9 in 9 10 rec { 10 11 # Bundles all overlays, order matters here 11 - all = composeManyExtensions [ bringSpecialArgs patches ]; 12 + all = composeManyExtensions [ 13 + bringSpecialArgs 14 + patches 15 + ]; 12 16 13 17 # Bring `self`, `llib` and `upkgs` 14 18 bringSpecialArgs = final: prev: self.flake-lib.specialModuleArgs final;
+7 -7
pkgs/asak.nix
··· 1 - { lib 2 - , rustPlatform 3 - , fetchFromGitHub 1 + { 2 + lib, 3 + rustPlatform, 4 + fetchFromGitHub, 4 5 5 - , pkg-config 6 - , alsa-lib 7 - , jack2 6 + pkg-config, 7 + alsa-lib, 8 + jack2, 8 9 }: 9 10 10 11 rustPlatform.buildRustPackage rec { ··· 37 38 mainProgram = "asak"; 38 39 }; 39 40 } 40 -
+5 -4
pkgs/default.nix
··· 1 - { self 1 + { 2 + self, 2 3 3 - , stdenv 4 - , callPackage 5 - , ... 4 + stdenv, 5 + callPackage, 6 + ... 6 7 }: 7 8 8 9 let
+4 -4
pkgs/ebnfer.nix
··· 1 - { lib 1 + { 2 + lib, 2 3 3 - , fetchFromGitHub 4 - , rustPlatform 4 + fetchFromGitHub, 5 + rustPlatform, 5 6 }: 6 7 7 8 rustPlatform.buildRustPackage rec { ··· 26 27 mainProgram = "ebnfer"; 27 28 }; 28 29 } 29 -
+4 -3
pkgs/find-unicode.nix
··· 1 - { lib 1 + { 2 + lib, 2 3 3 - , rustPlatform 4 - , fetchFromGitHub 4 + rustPlatform, 5 + fetchFromGitHub, 5 6 }: 6 7 7 8 rustPlatform.buildRustPackage rec {
+5 -1
pkgs/lsr/deps.nix
··· 1 1 # generated by zon2nix (https://github.com/nix-community/zon2nix) 2 2 3 - { linkFarm, fetchzip, fetchgit }: 3 + { 4 + linkFarm, 5 + fetchzip, 6 + fetchgit, 7 + }: 4 8 5 9 linkFarm "zig-packages" [ 6 10 {
+4 -3
pkgs/names.nix
··· 1 - { lib 1 + { 2 + lib, 2 3 3 - , fetchFromGitHub 4 - , rustPlatform 4 + fetchFromGitHub, 5 + rustPlatform, 5 6 }: 6 7 7 8 rustPlatform.buildRustPackage rec {
+4 -3
pkgs/probe-rs-udev-rules.nix
··· 1 - { lib 2 - , stdenv 3 - , fetchurl 1 + { 2 + lib, 3 + stdenv, 4 + fetchurl, 4 5 }: 5 6 6 7 stdenv.mkDerivation rec {
+10 -7
secrets.nix
··· 2 2 inherit (builtins) listToAttrs attrNames; 3 3 4 4 # Map the name and value of all items of an attrset 5 - mapAttrs' = 6 - f: 7 - set: 8 - listToAttrs (map (attr: f attr set.${attr}) (attrNames set)); 5 + mapAttrs' = f: set: listToAttrs (map (attr: f attr set.${attr}) (attrNames set)); 9 6 10 7 keys = import ./secrets/keys.nix; 11 8 12 - prependAttrsName = prefix: mapAttrs' (name: value: { name = prefix + name; inherit value; }); 9 + prependAttrsName = 10 + prefix: 11 + mapAttrs' ( 12 + name: value: { 13 + name = prefix + name; 14 + inherit value; 15 + } 16 + ); 13 17 secretsDir = path: prependAttrsName (path + "/") ((import ./${path}/default.nix) keys); 14 18 in 15 19 16 - secretsDir "secrets" 17 - // secretsDir "hosts/weird-row-server/secrets" 20 + secretsDir "secrets" // secretsDir "hosts/weird-row-server/secrets"
+8 -2
secrets/keys.nix
··· 2 2 # Machine SSH key (/etc/ssh/ssh_host_ed25519_key.pub) 3 3 archaic-wiro-laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJDuBHC0f7N0q1KRczJMoaBVdY0JFOtcpPy6WlYsoxUh"; 4 4 neo-wiro-laptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINR1/9o1HLnSRkXt3xxAM5So1YCCNdJpBN1leSu7giuR"; 5 - systems = [ archaic-wiro-laptop neo-wiro-laptop ]; 5 + systems = [ 6 + archaic-wiro-laptop 7 + neo-wiro-laptop 8 + ]; 6 9 7 10 weird-row-server = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII5sThvKuIj8yfeZzUPYfxWxnjTTdNtSID2OL4czE8AL"; 8 11 servers = [ weird-row-server ]; ··· 14 17 # User keys (~/.ssh/id_{ed25519,ecdsa}.pub) 15 18 milo-ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJdt7atyPTOfaBIsgDYYb0DG1yid2u78abaCDji6Uxgi"; 16 19 wirody = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMdW6ijH9oTsrswUJmQBF2LQkhjrMFkJ1LktnirPuL2S"; 17 - users = [ milo-ed25519 wirody ]; 20 + users = [ 21 + milo-ed25519 22 + wirody 23 + ]; 18 24 }
+25 -13
shells.nix
··· 1 - { lpkgs 2 - , ... 1 + { 2 + lpkgs, 3 + ... 3 4 }@pkgs: 4 5 5 6 let ··· 8 9 9 10 { 10 11 # Import packages of this flake along with useful tools for managing dotfiles 11 - default = mkPackageShell (with pkgs; [ 12 - lpkgs.agenix 13 - home-manager 14 - just 15 - nix-inspect 16 - nixos-anywhere 17 - nix-tree 18 - ]); 12 + default = mkPackageShell ( 13 + with pkgs; 14 + [ 15 + lpkgs.agenix 16 + home-manager 17 + just 18 + nix-inspect 19 + nixos-anywhere 20 + nix-tree 21 + ] 22 + ); 19 23 20 24 # Add presets that I can quickly use 21 25 22 - rust = mkPackageShell (with pkgs; [ rustup cargo-show-asm ]); 26 + rust = mkPackageShell ( 27 + with pkgs; 28 + [ 29 + rustup 30 + cargo-show-asm 31 + ] 32 + ); 23 33 24 34 go = mkPackageShell (with pkgs; [ go ]); 25 35 26 36 python = 27 - let pythonEnv = pkgs.python3.withPackages (ps: with ps; [ ipython ]); 28 - in mkPackageShell [ pythonEnv ]; 37 + let 38 + pythonEnv = pkgs.python3.withPackages (ps: with ps; [ ipython ]); 39 + in 40 + mkPackageShell [ pythonEnv ]; 29 41 }
+22 -15
templates/blank/flake.nix
··· 3 3 nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; 4 4 }; 5 5 6 - outputs = { self, nixpkgs }: 6 + outputs = 7 + { self, nixpkgs }: 7 8 let 8 9 inherit (nixpkgs.lib) genAttrs; 9 10 10 - forAllSystems = genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 11 + forAllSystems = genAttrs [ 12 + "x86_64-linux" 13 + "aarch64-linux" 14 + "aarch64-darwin" 15 + ]; 11 16 forAllPkgs = function: forAllSystems (system: function pkgs.${system}); 12 17 13 - pkgs = forAllSystems (system: import nixpkgs { 14 - inherit system; 15 - overlays = [ ]; 16 - }); 18 + pkgs = forAllSystems ( 19 + system: 20 + import nixpkgs { 21 + inherit system; 22 + overlays = [ ]; 23 + } 24 + ); 17 25 in 18 26 { 19 - formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt); 27 + formatter = forAllPkgs (pkgs: pkgs.nixfmt); 20 28 21 - devShells = forAllPkgs (pkgs: 22 - { 23 - default = pkgs.mkShell { 24 - packages = with pkgs; [ 25 - # hello 26 - ]; 27 - }; 28 - }); 29 + devShells = forAllPkgs (pkgs: { 30 + default = pkgs.mkShell { 31 + packages = with pkgs; [ 32 + # hello 33 + ]; 34 + }; 35 + }); 29 36 }; 30 37 }
+28 -12
templates/c/flake.nix
··· 3 3 nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; 4 4 }; 5 5 6 - outputs = { self, nixpkgs }: 6 + outputs = 7 + { self, nixpkgs }: 7 8 let 8 9 inherit (nixpkgs.lib) genAttrs; 9 10 10 - forAllSystems = genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 11 + forAllSystems = genAttrs [ 12 + "x86_64-linux" 13 + "aarch64-linux" 14 + "aarch64-darwin" 15 + ]; 11 16 forAllPkgs = function: forAllSystems (system: function pkgs.${system}); 12 17 13 - pkgs = forAllSystems (system: import nixpkgs { 14 - inherit system; 15 - overlays = [ ]; 16 - }); 18 + pkgs = forAllSystems ( 19 + system: 20 + import nixpkgs { 21 + inherit system; 22 + overlays = [ ]; 23 + } 24 + ); 17 25 in 18 26 { 19 - formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt); 27 + formatter = forAllPkgs (pkgs: pkgs.nixfmt); 20 28 21 - devShells = forAllPkgs (pkgs: 29 + devShells = forAllPkgs ( 30 + pkgs: 22 31 let 23 32 mkClangShell = pkgs.mkShell.override { stdenv = pkgs.clangStdenv; }; 24 33 in 25 34 { 26 35 default = mkClangShell { 27 - packages = with pkgs; [ 28 - clang-tools 29 - ] ++ (with llvmPackages; [ clang lldb ]); 36 + packages = 37 + with pkgs; 38 + [ 39 + clang-tools 40 + ] 41 + ++ (with llvmPackages; [ 42 + clang 43 + lldb 44 + ]); 30 45 }; 31 - }); 46 + } 47 + ); 32 48 }; 33 49 }
+30 -10
templates/rust-pkg/flake.nix
··· 9 9 gitignore.inputs.nixpkgs.follows = "nixpkgs"; 10 10 }; 11 11 12 - outputs = { self, nixpkgs, rust-overlay, gitignore }: 12 + outputs = 13 + { 14 + self, 15 + nixpkgs, 16 + rust-overlay, 17 + gitignore, 18 + }: 13 19 let 14 20 inherit (nixpkgs.lib) genAttrs getExe; 15 21 16 - forAllSystems = genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 22 + forAllSystems = genAttrs [ 23 + "x86_64-linux" 24 + "aarch64-linux" 25 + "aarch64-darwin" 26 + ]; 17 27 forAllPkgs = function: forAllSystems (system: function pkgs.${system}); 18 28 19 - mkApp = (program: { type = "app"; inherit program; }); 29 + mkApp = ( 30 + program: { 31 + type = "app"; 32 + inherit program; 33 + } 34 + ); 20 35 21 - pkgs = forAllSystems (system: import nixpkgs { 22 - inherit system; 23 - overlays = [ (import rust-overlay) ]; 24 - }); 36 + pkgs = forAllSystems ( 37 + system: 38 + import nixpkgs { 39 + inherit system; 40 + overlays = [ (import rust-overlay) ]; 41 + } 42 + ); 25 43 in 26 44 { 27 - formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt); 45 + formatter = forAllPkgs (pkgs: pkgs.nixfmt); 28 46 29 47 packages = forAllPkgs (pkgs: rec { 30 48 default = app; ··· 35 53 app = mkApp (getExe self.packages.${system}.app); 36 54 }); 37 55 38 - devShells = forAllPkgs (pkgs: 56 + devShells = forAllPkgs ( 57 + pkgs: 39 58 let 40 59 file-rust-toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; 41 60 rust-toolchain = file-rust-toolchain.override { extensions = [ "rust-analyzer" ]; }; ··· 49 68 50 69 RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; 51 70 }; 52 - }); 71 + } 72 + ); 53 73 }; 54 74 }
+7 -4
templates/rust-pkg/package.nix
··· 1 - { lib 1 + { 2 + lib, 2 3 3 - , rustPlatform 4 - , gitignore 4 + rustPlatform, 5 + gitignore, 5 6 }: 6 7 7 8 let ··· 16 17 17 18 inherit src; 18 19 19 - cargoLock = { lockFile = "${src}/Cargo.lock"; }; 20 + cargoLock = { 21 + lockFile = "${src}/Cargo.lock"; 22 + }; 20 23 21 24 nativeBuildInputs = [ ]; 22 25 buildInputs = [ ];
+23 -9
templates/rust/flake.nix
··· 6 6 rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; 7 7 }; 8 8 9 - outputs = { self, nixpkgs, rust-overlay }: 9 + outputs = 10 + { 11 + self, 12 + nixpkgs, 13 + rust-overlay, 14 + }: 10 15 let 11 16 inherit (nixpkgs.lib) genAttrs; 12 17 13 - forAllSystems = genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 18 + forAllSystems = genAttrs [ 19 + "x86_64-linux" 20 + "aarch64-linux" 21 + "aarch64-darwin" 22 + ]; 14 23 forAllPkgs = function: forAllSystems (system: function pkgs.${system}); 15 24 16 - pkgs = forAllSystems (system: import nixpkgs { 17 - inherit system; 18 - overlays = [ (import rust-overlay) ]; 19 - }); 25 + pkgs = forAllSystems ( 26 + system: 27 + import nixpkgs { 28 + inherit system; 29 + overlays = [ (import rust-overlay) ]; 30 + } 31 + ); 20 32 in 21 33 { 22 - formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt); 34 + formatter = forAllPkgs (pkgs: pkgs.nixfmt); 23 35 24 - devShells = forAllPkgs (pkgs: 36 + devShells = forAllPkgs ( 37 + pkgs: 25 38 let 26 39 file-rust-toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; 27 40 rust-toolchain = file-rust-toolchain.override { extensions = [ "rust-analyzer" ]; }; ··· 35 48 36 49 RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; 37 50 }; 38 - }); 51 + } 52 + ); 39 53 }; 40 54 }