my terrible dotfiles
2
fork

Configure Feed

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

disable some stuff, add another user

+190 -124
+2 -1
bathtub/default.nix
··· 4 4 pkgs, 5 5 ... 6 6 }: 7 - 8 7 { 9 8 imports = lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../nixos/core) ++ [ 10 9 ./hardware.nix ··· 53 52 hashedPasswordFile = config.sops.secrets."passwords/monke".path; 54 53 }; 55 54 }; 55 + 56 + home-manager.users.monke = import ./home.nix; 56 57 57 58 security.pki.certificateFiles = [ 58 59 ../files/forest.pem
-29
bathtub/home-overrides.nix
··· 1 - { 2 - lib, 3 - ... 4 - }: 5 - { 6 - programs.waybar = { 7 - settings = { 8 - bar.modules-center = lib.mkForce [ ]; 9 - bar.modules-right = lib.mkForce [ 10 - "backlight" 11 - "battery" 12 - "wireplumber" 13 - "tray" 14 - "clock" 15 - ]; 16 - }; 17 - style = lib.mkForce (builtins.readFile ../files/waybar/style-bathtub.css); 18 - }; 19 - 20 - programs.niri.settings.outputs."eDP-1" = { 21 - mode = { 22 - width = 3024; 23 - height = 1964; 24 - refresh = 120.0; 25 - }; 26 - scale = 1.5; 27 - variable-refresh-rate = true; 28 - }; 29 - }
+25 -1
bathtub/home.nix
··· 7 7 ++ [ 8 8 ../modules/rclone.nix 9 9 ../modules/email.nix 10 - ./home-overrides.nix 11 10 ]; 12 11 13 12 sops = { ··· 53 52 ]; 54 53 55 54 stateVersion = "26.05"; 55 + }; 56 + 57 + # overrides 58 + programs.waybar = { 59 + settings = { 60 + bar.modules-center = lib.mkForce [ ]; 61 + bar.modules-right = lib.mkForce [ 62 + "backlight" 63 + "battery" 64 + "wireplumber" 65 + "tray" 66 + "clock" 67 + ]; 68 + }; 69 + style = lib.mkForce (builtins.readFile ../files/waybar/style-bathtub.css); 70 + }; 71 + 72 + programs.niri.settings.outputs."eDP-1" = { 73 + mode = { 74 + width = 3024; 75 + height = 1964; 76 + refresh = 120.0; 77 + }; 78 + scale = 1.5; 79 + variable-refresh-rate = true; 56 80 }; 57 81 }
-1
flake.nix
··· 99 99 extraSpecialArgs = inputs; 100 100 useGlobalPkgs = true; 101 101 useUserPackages = true; 102 - users."monke" = import ./${hostname}/home.nix; 103 102 sharedModules = [ 104 103 inputs.sops-nix.homeManagerModules.sops 105 104 inputs.nixvim.homeModules.nixvim
+16 -5
forest/default.nix
··· 4 4 pkgs, 5 5 ... 6 6 }: 7 - 8 7 { 9 8 imports = 10 9 lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../nixos/core) ··· 21 20 secrets = { 22 21 "passwords/root".neededForUsers = true; 23 22 "passwords/monke".neededForUsers = true; 23 + "passwords/taro".neededForUsers = true; 24 24 }; 25 25 }; 26 26 ··· 41 41 useXkbConfig = true; 42 42 }; 43 43 44 - services.xserver.xkb = { 45 - layout = "us"; 46 - variant = "colemak_dh_ortho"; 47 - }; 44 + services.xserver.xkb.layout = "us"; 48 45 49 46 users.defaultUserShell = pkgs.zsh; 50 47 users.users = { 51 48 root.hashedPasswordFile = config.sops.secrets."passwords/root".path; 49 + taro = { 50 + isNormalUser = true; 51 + extraGroups = [ 52 + "audio" 53 + "input" 54 + "lp" 55 + "render" 56 + "video" 57 + ]; 58 + hashedPasswordFile = config.sops.secrets."passwords/taro".path; 59 + }; 52 60 monke = { 53 61 isNormalUser = true; 54 62 extraGroups = [ ··· 70 78 ]; 71 79 }; 72 80 }; 81 + 82 + home-manager.users.monke = import ./home.nix; 83 + home-manager.users.taro = import ./home-taro.nix; 73 84 74 85 system.stateVersion = "25.11"; 75 86 }
-28
forest/home-overrides.nix
··· 1 - { lib, ... }: 2 - { 3 - programs.zsh.initContent = lib.mkForce '' 4 - PROMPT="[%F{blue}%~%f] %F{green}>%f " 5 - bindkey '^R' history-incremental-search-backward 6 - if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then 7 - exec tmux new -A -s ssh 8 - fi 9 - ''; 10 - 11 - programs.niri.settings = { 12 - spawn-at-startup = lib.mkForce [ ]; 13 - }; 14 - 15 - programs.anki.enable = lib.mkForce false; 16 - programs.eww.enable = lib.mkForce false; 17 - programs.hexchat.enable = lib.mkForce false; 18 - programs.inori.enable = lib.mkForce false; 19 - programs.ncmpcpp.enable = lib.mkForce false; 20 - programs.sioyek.enable = lib.mkForce false; 21 - programs.swayimg.enable = lib.mkForce false; 22 - services.easyeffects.enable = lib.mkForce false; 23 - services.fusuma.enable = lib.mkForce false; 24 - services.kdeconnect.enable = lib.mkForce false; 25 - services.mpd.enable = lib.mkForce false; 26 - services.mpd-mpris.enable = lib.mkForce false; 27 - services.udiskie.enable = lib.mkForce false; 28 - }
+62
forest/home-taro.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: 7 + { 8 + home = { 9 + username = "taro"; 10 + homeDirectory = "/home/taro"; 11 + 12 + sessionPath = [ 13 + "$HOME/usr/bin" 14 + ]; 15 + preferXdgDirectories = true; 16 + 17 + stateVersion = "26.05"; 18 + }; 19 + 20 + wayland.windowManager.sway = { 21 + enable = true; 22 + config = { 23 + modifier = "Mod4"; 24 + keybindings = 25 + let 26 + modifier = config.wayland.windowManager.sway.config.modifier; 27 + in 28 + lib.mkOptionDefault { 29 + "${modifier}+Return" = "exec ghostty"; 30 + "${modifier}+d" = "exec wofi"; 31 + }; 32 + }; 33 + }; 34 + 35 + programs = { 36 + ghostty = { 37 + enable = true; 38 + enableZshIntegration = true; 39 + }; 40 + wofi = { 41 + enable = true; 42 + settings = { 43 + show = "drun"; 44 + width = 300; 45 + prompt = "type to search..."; 46 + allow_images = true; 47 + insentitive = true; 48 + line_wrap = "word"; 49 + }; 50 + }; 51 + }; 52 + 53 + services.swayidle = { 54 + enable = true; 55 + timeouts = [ 56 + { 57 + timeout = 600; 58 + command = "${pkgs.hyprlock}/bin/hyprlock"; 59 + } 60 + ]; 61 + }; 62 + }
+28 -4
forest/home.nix
··· 4 4 lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/core) 5 5 ++ lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/nixvim) 6 6 ++ lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/desktop) 7 - ++ lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/server) 8 - ++ [ 9 - ./home-overrides.nix 10 - ]; 7 + ++ lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/server); 11 8 12 9 home = { 13 10 username = "monke"; ··· 24 21 25 22 stateVersion = "26.05"; 26 23 }; 24 + 25 + # overrides 26 + programs.zsh.initContent = lib.mkForce '' 27 + PROMPT="[%F{blue}%~%f] %F{green}>%f " 28 + bindkey '^R' history-incremental-search-backward 29 + if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then 30 + exec tmux new -A -s ssh 31 + fi 32 + ''; 33 + 34 + programs.niri.settings = { 35 + spawn-at-startup = lib.mkForce [ ]; 36 + }; 37 + 38 + programs.anki.enable = lib.mkForce false; 39 + programs.eww.enable = lib.mkForce false; 40 + programs.hexchat.enable = lib.mkForce false; 41 + programs.inori.enable = lib.mkForce false; 42 + programs.ncmpcpp.enable = lib.mkForce false; 43 + programs.sioyek.enable = lib.mkForce false; 44 + programs.swayimg.enable = lib.mkForce false; 45 + services.easyeffects.enable = lib.mkForce false; 46 + services.fusuma.enable = lib.mkForce false; 47 + services.kdeconnect.enable = lib.mkForce false; 48 + services.mpd.enable = lib.mkForce false; 49 + services.mpd-mpris.enable = lib.mkForce false; 50 + services.udiskie.enable = lib.mkForce false; 27 51 }
+29 -27
nixos/server/nextcloud.nix
··· 1 1 { pkgs, config, ... }: 2 2 { 3 - sops = { 4 - secrets = { 5 - "nc/adminPass" = { 3 + /* 4 + sops = { 5 + secrets = { 6 + "nc/adminPass" = { 7 + owner = "nextcloud"; 8 + group = "nextcloud"; 9 + }; 10 + "nc/id" = { }; 11 + "nc/passSalt" = { }; 12 + "nc/secret" = { }; 13 + "nc/smtpHost" = { }; 14 + "nc/smtpPass" = { }; 15 + "nc/smtpUser" = { }; 16 + }; 17 + templates.nc-secrets = { 6 18 owner = "nextcloud"; 7 19 group = "nextcloud"; 8 - }; 9 - "nc/id" = { }; 10 - "nc/passSalt" = { }; 11 - "nc/secret" = { }; 12 - "nc/smtpHost" = { }; 13 - "nc/smtpPass" = { }; 14 - "nc/smtpUser" = { }; 15 - }; 16 - templates.nc-secrets = { 17 - owner = "nextcloud"; 18 - group = "nextcloud"; 19 - content = builtins.toJSON { 20 - instanceid = config.sops.placeholder."nc/id"; 21 - passwordsalt = config.sops.placeholder."nc/passSalt"; 22 - secret = config.sops.placeholder."nc/secret"; 23 - mail_domain = "monke.moe"; 24 - mail_from_address = "nc"; 25 - mail_smtpsecure = "ssl"; 26 - mail_smtpauth = true; 27 - mail_smtphost = config.sops.placeholder."nc/smtpHost"; 28 - mail_smtpuser = config.sops.placeholder."nc/smtpUser"; 29 - mail_smtppassword = config.sops.placeholder."nc/smtpPass"; 30 - mail_smtpport = 465; 20 + content = builtins.toJSON { 21 + instanceid = config.sops.placeholder."nc/id"; 22 + passwordsalt = config.sops.placeholder."nc/passSalt"; 23 + secret = config.sops.placeholder."nc/secret"; 24 + mail_domain = "monke.moe"; 25 + mail_from_address = "nc"; 26 + mail_smtpsecure = "ssl"; 27 + mail_smtpauth = true; 28 + mail_smtphost = config.sops.placeholder."nc/smtpHost"; 29 + mail_smtpuser = config.sops.placeholder."nc/smtpUser"; 30 + mail_smtppassword = config.sops.placeholder."nc/smtpPass"; 31 + mail_smtpport = 465; 32 + }; 31 33 }; 32 34 }; 33 - }; 35 + */ 34 36 35 37 services.nextcloud = { 36 38 enable = false;
+1 -1
nixos/server/nginx.nix
··· 26 26 virtualHosts = { 27 27 "${config.services.nextcloud.hostName}" = { 28 28 onlySSL = true; 29 - useACMEHost = "monke.moe"; 29 + useACMEHost = "auri.ee"; 30 30 http2 = true; 31 31 }; 32 32 "pds.monke.moe" = {
+3 -2
secrets/forest.yaml
··· 13 13 passwords: 14 14 root: ENC[AES256_GCM,data:4g87dG2Y+kz0zu66EpHZlObWwds1Arkjg1/nvxHrMErLhFB8M2rFOaNhS+RFQaYDwlhSXDWSinYXTp+7OipwWBPaC0Ad+C0+KQ==,iv:7lzxuV74uq6vvl+X7imIzPc019b6MbgSjyoMaiF0WIY=,tag:MXrANiv9cMnkyXNfIvWIcw==,type:str] 15 15 monke: ENC[AES256_GCM,data:kScs+gH39P8CuWsYBV9A4cGuItiyRb8Ea3155W1CmOTOdpBQPqAdalAeSyT8Otuik5H1lo1cRWNEHCT78qO03FtSjui08zrXCg==,iv:5ecPv00sUU0V7JoNcKHcllrah3AZyVvRaAFViwzqkFM=,tag:YMbAxmRTcIqgtd/Fs4QiEA==,type:str] 16 + taro: ENC[AES256_GCM,data:xJJwf6GUwIerBuErsEv8pfxbYMrcrKsxmxSLZPErvkj9M7xJtQdFmmBtDhoieCm1QLOBJPAhHm302aat2hK3gK09UyogQ4WRtA==,iv:VLgz17h9SJbkfJ9kyLzJ1q4GF7TdGqdUJbHISPUWQbE=,tag:M3eoXwkAWxIc5YdE9zEI5Q==,type:str] 16 17 zed: 17 18 ntfyTopic: ENC[AES256_GCM,data:5td6059epSxPwYopRLD3Ng==,iv:Kfh16V0KfhJ4DuWnw3IO4s0mvyvclQ+zW4o/P/8fF/s=,tag:+TJraDgrG5tnEF0SCTh9DQ==,type:str] 18 19 smtpPass: ENC[AES256_GCM,data:JCpD1nIRSXQiaDo9XdHVznpTqqHYhDSkA9E5LzmfMiogIe6lM7yLku2IZce6JD+Xw3EWlBQhOFHPiZmnL6f+kg==,iv:ySNDkmYk9SdqdfPoPVLGHYDJjm0eRB1Q1rhO02T7jgc=,tag:1mCFMDWQvUD4YhiFVeHe0A==,type:str] ··· 43 44 Q0hjS2ZHamZXUHhCWE5MOHJIZ2xNa0kKUrtOBXmsBhwmDfehU0kDymfTCGaCSoBm 44 45 fwzrYdaF72+lxgvuqm8t6KK+x3yrz3/ksuVRvHPfgvM0cKp1D2vNKA== 45 46 -----END AGE ENCRYPTED FILE----- 46 - lastmodified: "2025-12-07T01:26:22Z" 47 - mac: ENC[AES256_GCM,data:lEMPIXQ5SiDHoCMXteBuKU+WoDsRhb4q73YZkgN1TaDUVtziHLjGN8cYmKPCHuOgWiEeMdYNHNgrTI214NA5Jkw24ux2dmeY/nYKv0raB41IhIIw7IAarU6KXOG5nNLM1AmSOcp5JrdW2RCj1avhOBNhnMSkzJ8DfXd54surirU=,iv:48Yqa6UCKOEU7atmlJsSdUCZ8yI2mR61tuLmPUMEXDs=,tag:6Kcxn5CbpGcCuK4raBuqWQ==,type:str] 47 + lastmodified: "2026-01-21T00:03:45Z" 48 + mac: ENC[AES256_GCM,data:HYa3/t73/3VOtOgNYdJls7a5StbAZsUCW5jq2whWylmGGWeHmJZcGp3xFD6K90pI1827zhMQiAt4XSYy2Tfdry24w+eo2Z0kr9ubL9/G8gRsixGnjDAup0cMk0LZAj266SzRxklxl+IFRTJnvg5/KcQb/0OLXrlm4c2CfUpPxx0=,iv:R79rzwiTK3X+WfTq4YRqssBASpaaP7vl83pta0aRiUM=,tag:0iyd2QEqrauWFJZLIJpuIw==,type:str] 48 49 unencrypted_suffix: _unencrypted 49 50 version: 3.11.0
+2 -1
tundra/default.nix
··· 4 4 config, 5 5 ... 6 6 }: 7 - 8 7 { 9 8 imports = lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../nixos/core) ++ [ 10 9 ./hardware.nix ··· 54 53 hashedPasswordFile = config.sops.secrets."passwords/monke".path; 55 54 }; 56 55 }; 56 + 57 + home-manager.users.monke = import ./home.nix; 57 58 58 59 services.xserver.xkb = { 59 60 layout = "us";
-22
tundra/home-overrides.nix
··· 1 - { config, lib, ... }: 2 - { 3 - programs.niri.settings = { 4 - outputs = { 5 - "eDP-1" = lib.mkForce { 6 - mode = { 7 - width = 1920; 8 - height = 1080; 9 - refresh = 60.0; 10 - }; 11 - scale = 1.0; 12 - variable-refresh-rate = false; 13 - }; 14 - # TODO: find out why my thinkpad adds a random fucking nonexistent display 15 - "Unknown-1".enable = lib.mkForce false; 16 - }; 17 - binds = with config.lib.niri.actions; { 18 - "Print".action = spawn "screenshot"; 19 - }; 20 - input.touchpad.enable = false; 21 - }; 22 - }
+22 -2
tundra/home.nix
··· 1 1 { 2 2 pkgs, 3 3 lib, 4 + config, 4 5 ... 5 6 }: 6 - 7 7 { 8 8 imports = 9 9 lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/core) ··· 11 11 ++ lib.fileset.toList (lib.fileset.fileFilter (file: file.hasExt "nix") ../modules/desktop) 12 12 ++ [ 13 13 ../modules/wlsunset.nix 14 - ./home-overrides.nix 15 14 ../modules/rclone.nix 16 15 ]; 17 16 ··· 49 48 ]; 50 49 51 50 stateVersion = "26.05"; 51 + }; 52 + 53 + # overrides 54 + programs.niri.settings = { 55 + outputs = { 56 + "eDP-1" = lib.mkForce { 57 + mode = { 58 + width = 1920; 59 + height = 1080; 60 + refresh = 60.0; 61 + }; 62 + scale = 1.0; 63 + variable-refresh-rate = false; 64 + }; 65 + # TODO: find out why my thinkpad adds a random fucking nonexistent display 66 + "Unknown-1".enable = lib.mkForce false; 67 + }; 68 + binds = with config.lib.niri.actions; { 69 + "Print".action = spawn "screenshot"; 70 + }; 71 + input.touchpad.enable = false; 52 72 }; 53 73 }