diff options
| -rw-r--r-- | flake.nix | 20 | ||||
| -rw-r--r-- | home.nix | 83 |
2 files changed, 65 insertions, 38 deletions
| @@ -2,10 +2,10 @@ | |||
| 2 | description = "my nixos configuration"; | 2 | description = "my nixos configuration"; |
| 3 | 3 | ||
| 4 | inputs = { | 4 | inputs = { |
| 5 | nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; | 5 | nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; |
| 6 | 6 | ||
| 7 | home-manager = { | 7 | home-manager = { |
| 8 | url = "github:nix-community/home-manager/release-24.05"; | 8 | url = "github:nix-community/home-manager/release-24.11"; |
| 9 | inputs.nixpkgs.follows = "nixpkgs"; | 9 | inputs.nixpkgs.follows = "nixpkgs"; |
| 10 | }; | 10 | }; |
| 11 | 11 | ||
| @@ -18,11 +18,27 @@ | |||
| 18 | outputs = { self, home-manager, nixpkgs, everblush-gtk, ... }@inputs: { | 18 | outputs = { self, home-manager, nixpkgs, everblush-gtk, ... }@inputs: { |
| 19 | # TODO: deduplicate this | 19 | # TODO: deduplicate this |
| 20 | nixosConfigurations = { | 20 | nixosConfigurations = { |
| 21 | demiurge = nixpkgs.lib.nixosSystem { | ||
| 22 | system = "x86_64-linux"; | ||
| 23 | specialArgs = inputs; | ||
| 24 | modules = [ | ||
| 25 | ./hosts/demiurge | ||
| 26 | |||
| 27 | home-manager.nixosModules.home-manager { | ||
| 28 | home-manager.extraSpecialArgs = { inherit inputs; }; | ||
| 29 | home-manager.useGlobalPkgs = true; | ||
| 30 | home-manager.useUserPackages = true; | ||
| 31 | home-manager.users.vin = import ./home.nix; | ||
| 32 | } | ||
| 33 | ]; | ||
| 34 | }; | ||
| 35 | |||
| 21 | lappy = nixpkgs.lib.nixosSystem { | 36 | lappy = nixpkgs.lib.nixosSystem { |
| 22 | system = "x86_64-linux"; | 37 | system = "x86_64-linux"; |
| 23 | specialArgs = inputs; | 38 | specialArgs = inputs; |
| 24 | modules = [ | 39 | modules = [ |
| 25 | ./hosts/lappy | 40 | ./hosts/lappy |
| 41 | |||
| 26 | home-manager.nixosModules.home-manager { | 42 | home-manager.nixosModules.home-manager { |
| 27 | home-manager.extraSpecialArgs = { inherit inputs; }; | 43 | home-manager.extraSpecialArgs = { inherit inputs; }; |
| 28 | home-manager.useGlobalPkgs = true; | 44 | home-manager.useGlobalPkgs = true; |
| @@ -12,7 +12,6 @@ | |||
| 12 | alacritty # doing st/suckless declaratively seems like it'll suck | 12 | alacritty # doing st/suckless declaratively seems like it'll suck |
| 13 | dmenu | 13 | dmenu |
| 14 | doas | 14 | doas |
| 15 | hsetroot | ||
| 16 | kicad | 15 | kicad |
| 17 | librewolf | 16 | librewolf |
| 18 | mlocate | 17 | mlocate |
| @@ -20,6 +19,7 @@ | |||
| 20 | mupdf | 19 | mupdf |
| 21 | neofetch | 20 | neofetch |
| 22 | profanity | 21 | profanity |
| 22 | qutebrowser | ||
| 23 | rclone | 23 | rclone |
| 24 | redshift | 24 | redshift |
| 25 | st | 25 | st |
| @@ -37,31 +37,45 @@ | |||
| 37 | ]; | 37 | ]; |
| 38 | 38 | ||
| 39 | sessionVariables = { | 39 | sessionVariables = { |
| 40 | #EDITOR = "vis"; | 40 | EDITOR = "emacs"; |
| 41 | VISUAL = "emacs -nw" | ||
| 41 | PAGER = "less"; | 42 | PAGER = "less"; |
| 42 | LESS = "-iR"; | 43 | LESS = "-iR"; |
| 43 | LESSHISTFILE = "/dev/null"; | 44 | LESSHISTFILE = "/dev/null"; |
| 44 | #BROWSER = "links -g"; | 45 | BROWSER = "qutebrowser"; |
| 45 | 46 | ||
| 46 | GOPROXY = "direct"; | 47 | GOPROXY = "direct"; |
| 47 | 48 | ||
| 48 | AGE_KEY = "~/.ssh/id_ed25519"; | 49 | AGE_KEY = "$HOME/.ssh/id_ed25519"; |
| 49 | AGE_PUB = "~/.ssh/id_ed25519.pub"; | 50 | AGE_PUB = "$AGE_KEY.pub"; |
| 50 | ANGOU_DIR = "/data/angou-age"; | 51 | ANGOU_DIR = "/data/angou-age"; |
| 51 | ANGOU_ENCRYPT = "age -R $AGE_PUB"; | 52 | ANGOU_ENCRYPT = "age -R $AGE_PUB"; |
| 52 | ANGOU_DECRYPT = "age -d -i $AGE_KEY"; | 53 | ANGOU_DECRYPT = "age -d -i $AGE_KEY"; |
| 53 | ANGOU_EXT = "age"; | 54 | ANGOU_EXT = "age"; |
| 54 | ANGOU_CLIPBOARD = "xsel -ib"; | 55 | ANGOU_CLIPBOARD = "xsel -ib"; |
| 55 | 56 | ||
| 57 | # w3m is only used for aerc html preview | ||
| 58 | W3M_DIR = "/var/empty"; | ||
| 59 | |||
| 60 | # backblaze on rclone | ||
| 61 | RCLONE_FAST_LIST = 1; | ||
| 62 | |||
| 63 | CRAWL_DIR = "$HOME/.local/share/crawl"; | ||
| 64 | |||
| 56 | MOZ_ACCELERATED = 1; | 65 | MOZ_ACCELERATED = 1; |
| 57 | MOZ_WEBRENDER = 1; | 66 | MOZ_WEBRENDER = 1; |
| 58 | }; | 67 | }; |
| 59 | 68 | ||
| 60 | shellAliases = { | 69 | shellAliases = { |
| 70 | md = "mkdir -p"; | ||
| 71 | ls = "ls -F --color=auto"; | ||
| 61 | e = "$EDITOR"; | 72 | e = "$EDITOR"; |
| 62 | gc = "git"; | 73 | p = "$PAGER"; |
| 63 | ls = "ls -F"; | 74 | cbc = "xsel -cb; xsel -cp; xsel -cs"; |
| 75 | gc = "git clone"; | ||
| 76 | rsync = "rsync --no-inc-recursive"; | ||
| 64 | mpv = "mpv --save-position-on-quit"; | 77 | mpv = "mpv --save-position-on-quit"; |
| 78 | wget = "wget --no-hsts"; | ||
| 65 | }; | 79 | }; |
| 66 | }; | 80 | }; |
| 67 | 81 | ||
| @@ -73,13 +87,13 @@ | |||
| 73 | emoji = []; | 87 | emoji = []; |
| 74 | monospace = [ "Comic Code" ]; | 88 | monospace = [ "Comic Code" ]; |
| 75 | sansSerif = [ "Cantarell" ]; | 89 | sansSerif = [ "Cantarell" ]; |
| 76 | serif = [ "Open Baskerville 0.0.75" ]; | 90 | serif = [ "CMU Serif" ]; |
| 77 | }; | 91 | }; |
| 78 | }; | 92 | }; |
| 79 | 93 | ||
| 80 | gtk = { | 94 | gtk = { |
| 81 | enable = true; | 95 | enable = true; |
| 82 | font.name = "monospace 10"; | 96 | font.name = "monospace 11"; |
| 83 | iconTheme.name = "rose-pine"; | 97 | iconTheme.name = "rose-pine"; |
| 84 | iconTheme.package = pkgs.rose-pine-icon-theme; | 98 | iconTheme.package = pkgs.rose-pine-icon-theme; |
| 85 | theme.name = "Everblush"; | 99 | theme.name = "Everblush"; |
| @@ -128,7 +142,7 @@ | |||
| 128 | }; | 142 | }; |
| 129 | filters = { | 143 | filters = { |
| 130 | "message/delivery-status" = "colorize"; | 144 | "message/delivery-status" = "colorize"; |
| 131 | "message/rfc822" = "colorize"; | 145 | "message/rfc822" = "colorize"; |
| 132 | 146 | ||
| 133 | "text/calendar" = "calendar"; | 147 | "text/calendar" = "calendar"; |
| 134 | "text/html" = "html-unsafe | colorize"; | 148 | "text/html" = "html-unsafe | colorize"; |
| @@ -136,8 +150,8 @@ | |||
| 136 | }; | 150 | }; |
| 137 | openers = { | 151 | openers = { |
| 138 | "application/pdf" = "mupdf"; | 152 | "application/pdf" = "mupdf"; |
| 139 | "text/html" = "librewolf"; | 153 | "text/html" = "qutebrowser"; |
| 140 | "text/plain" = "vis"; | 154 | "text/plain" = "emacs"; |
| 141 | }; | 155 | }; |
| 142 | templates = { | 156 | templates = { |
| 143 | "new-message" = "new_message"; | 157 | "new-message" = "new_message"; |
| @@ -147,8 +161,6 @@ | |||
| 147 | }; | 161 | }; |
| 148 | stylesets = { | 162 | stylesets = { |
| 149 | monochrome = '' | 163 | monochrome = '' |
| 150 | # vim: ft=dosini | ||
| 151 | # | ||
| 152 | # aerc monochrome styleset | 164 | # aerc monochrome styleset |
| 153 | # | 165 | # |
| 154 | 166 | ||
| @@ -234,28 +246,27 @@ | |||
| 234 | ]; | 246 | ]; |
| 235 | }; | 247 | }; |
| 236 | 248 | ||
| 237 | neovim = { | 249 | mpv = { |
| 238 | enable = true; | 250 | bindings = { |
| 239 | defaultEditor = true; | 251 | # I wish there was a more elegant way of setting Anime4K |
| 240 | extraConfig = '' | 252 | |
| 241 | " my sensible defaults. | 253 | "Ctrl+1" = "no-osd change-list glsl-shaders set '~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl'; show-text 'Anime4K: Mode A (HQ)'"; |
| 242 | " I use mouse in terminal for primary select and paste, not what (n)vim wants | 254 | "Ctrl+2" = "no-osd change-list glsl-shaders set '~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl'; show-text 'Anime4K: Mode B (HQ)'"; |
| 243 | " 8-wide hardtabs I prefer visually and doesn't feel cramped | 255 | "Ctrl+3" = "no-osd change-list glsl-shaders set '~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl'; show-text 'Anime4K: Mode C (HQ)'"; |
| 244 | set background=dark | 256 | "Ctrl+4" = "no-osd change-list glsl-shaders set '~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl'; show-text 'Anime4K: Mode A+A (HQ)'"; |
| 245 | set backupdir=/tmp/nvim | 257 | "Ctrl+5" = "no-osd change-list glsl-shaders set '~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl'; show-text 'Anime4K: Mode B+B (HQ)'"; |
| 246 | set noexpandtab | 258 | "Ctrl+6" = "no-osd change-list glsl-shaders set '~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl'; show-text 'Anime4K: Mode C+A (HQ)'"; |
| 247 | set nohlsearch | 259 | |
| 248 | set ignorecase | 260 | "Ctrl+0" = "no-osd change-list glsl-shaders clr ''; show-text 'GLSL shaders cleared'"; |
| 249 | set mouse= | 261 | }; |
| 250 | set relativenumber | 262 | |
| 251 | set shiftwidth=8 | 263 | config = { |
| 252 | set tabstop=8 | 264 | # sets default shaders to Anime4K Mode A (HQ). laptop's igpu doesn't like it though |
| 253 | 265 | glsl-shaders = "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; | |
| 254 | " stop annoying cursor movement on escape from insert | 266 | |
| 255 | " this seems to be default behaviour from vis | 267 | ytdl-format = "bestvideo[height<=?1440]+bestaudio/best"; |
| 256 | inoremap <silent> <Esc> <C-O>:stopinsert<CR> | 268 | }; |
| 257 | ''; | 269 | }; |
| 258 | }; | ||
| 259 | 270 | ||
| 260 | yt-dlp = { | 271 | yt-dlp = { |
| 261 | enable = true; | 272 | enable = true; |
