nixos-dotfiles

nixos-dotfiles

https://git.tonybtw.com/nixos-dotfiles.git git://git.tonybtw.com/nixos-dotfiles.git
5,278 bytes raw
1
{
2
  config,
3
  lib,
4
  pkgs,
5
  pkgs-stable,
6
  ...
7
}: let
8
  ns = pkgs.writeShellScriptBin "ns" (builtins.readFile ./scripts/nixpkgs.sh);
9
  cinit = pkgs.writeShellScriptBin "cinit" (builtins.readFile ./scripts/cinit.sh);
10
  dotlink = pkgs.writeShellScriptBin "dotlink" (builtins.readFile ./scripts/dotlink.sh);
11
  sync = pkgs.writeShellScriptBin "sync" (builtins.readFile ./scripts/sync.sh);
12
in {
13
  boot.loader.systemd-boot.enable = true;
14
  boot.loader.efi.canTouchEfiVariables = true;
15
  networking.networkmanager.enable = true;
16
17
  # But NixOS Isn't FHS Compiant!!!!
18
  programs.nix-ld.enable = true;
19
20
  time.timeZone = "America/Los_Angeles";
21
  services = {
22
    desktopManager.cosmic.enable = true;
23
    displayManager = {
24
      ly.enable = true;
25
    };
26
    xserver = {
27
      enable = true;
28
      autoRepeatDelay = 200;
29
      autoRepeatInterval = 35;
30
      desktopManager.xfce.enable = true;
31
      windowManager = {
32
        i3.enable = true;
33
        xmonad = {
34
          enable = true;
35
          enableContribAndExtras = true;
36
          extraPackages = hpkgs: [
37
            hpkgs.xmonad
38
            hpkgs.xmonad-extras
39
            hpkgs.xmonad-contrib
40
          ];
41
        };
42
        qtile.enable = true;
43
        dwm = {
44
          enable = true;
45
          package = pkgs.dwm.overrideAttrs {
46
            src = ./config/dwm;
47
          };
48
        };
49
      };
50
      modules = [pkgs.xorg.xf86inputlibinput];
51
      displayManager.sessionCommands = ''
52
        xwallpaper --zoom ~/walls/waifus/waifu3.jpg &
53
        picom --config ~/nixos-dotfiles/config/picom/picom.conf &
54
      '';
55
    };
56
  };
57
58
  users.users.tony = {
59
    isNormalUser = true;
60
    extraGroups = ["wheel" "seatd" "input" "video" "libvirtd"];
61
    packages = with pkgs; [
62
      tree
63
    ];
64
  };
65
66
  virtualisation = {
67
    spiceUSBRedirection.enable = true;
68
    libvirtd.enable = true;
69
  };
70
71
  programs = {
72
    virt-manager.enable = true;
73
    mango.enable = true;
74
    firefox.enable = true;
75
    sway = {
76
      enable = true;
77
      xwayland.enable = true;
78
    };
79
80
    hyprland = {
81
      enable = true;
82
      xwayland.enable = true;
83
    };
84
  };
85
86
  environment.systemPackages = with pkgs;
87
    [
88
      nheko
89
      emacs.pkgs.treesit-grammars.with-all-grammars
90
      gnupg
91
      pinentry-curses
92
      vim
93
      picom
94
      wget
95
      alacritty
96
      git
97
      pavucontrol
98
      xorg.xinit
99
      xorg.xf86inputlibinput
100
      ncurses.dev
101
      pkg-config
102
      dino
103
      haskellPackages.xmonad-contrib
104
      hyprland
105
      uwsm
106
      (writeShellScriptBin
107
        "reload_waybar"
108
        ''
109
          pkill waybar
110
          sleep 0.2
111
          waybar -c ~/.config/mango/config.jsonc &
112
        '')
113
      (writeShellScriptBin
114
        "snip"
115
        ''
116
          ${grim}/bin/grim -l 0 -g "$(${slurp}/bin/slurp)" - | wl-copy
117
        '')
118
      ns
119
      cinit
120
      dotlink
121
      sync
122
      xmobar
123
      rustc
124
      cargo
125
      distrobox
126
      podman
127
      rofi
128
      fastfetch
129
      xwallpaper
130
      pcmanfm
131
      tldr
132
      xclip
133
      maim
134
      pfetch-rs
135
      lxappearance
136
      jq
137
      eza
138
      acpi
139
      tmux
140
      gh
141
      gimp
142
      libreoffice
143
      xorg.xclock
144
      direnv
145
      qbittorrent
146
      slides
147
      presenterm
148
      dunst
149
      libnotify
150
      heaptrack
151
      figlet
152
      bear
153
      libvterm
154
      libtool
155
      cmake
156
      lm_sensors
157
      xfce4-whiskermenu-plugin
158
      ripgrep
159
      fd
160
      gcc
161
      sqlite
162
      neovim
163
      fzf
164
      gopls
165
      nil
166
      nixpkgs-fmt
167
      lua-language-server
168
      pyright
169
      rust-analyzer
170
      clang-tools
171
      rustfmt
172
      alejandra
173
      vscode-json-languageserver
174
      prettier
175
      zig
176
      zls
177
      (haskellPackages.ghcWithPackages (hpkgs:
178
        with hpkgs; [
179
          xmonad
180
          xmonad-contrib
181
        ]))
182
      haskell-language-server
183
      nodejs
184
      gnumake
185
      nitch
186
      bat
187
      nix-search-tv
188
      delta
189
      btop
190
      c3c
191
      c3-lsp
192
      intelephense
193
      brave
194
      emacs
195
      (pkgs.st.overrideAttrs (_: {
196
        src = ./config/st;
197
        patches = [];
198
      }))
199
      (pkgs.dmenu.overrideAttrs (_: {
200
        src = ./config/dmenu;
201
        patches = [];
202
      }))
203
      (pkgs.dwmblocks.overrideAttrs (_: {
204
        src = ./config/dwmblocks;
205
        patches = [];
206
      }))
207
      discord
208
      claude-code
209
      slack
210
      zoom
211
      jetbrains.datagrip
212
      arc-theme
213
      materia-theme
214
      qogir-theme
215
      orchis-theme
216
      numix-gtk-theme
217
      gtk-engine-murrine
218
      catppuccin-gtk
219
      candy-icons
220
      foot
221
      wayland
222
      xwayland
223
      libdrm
224
      fcft
225
      wmenu
226
      wofi
227
      bemenu
228
      grim
229
      slurp
230
      wl-clipboard
231
      swaybg
232
      swaylock
233
      swayidle
234
      procps
235
      waybar
236
      hyprpaper
237
      fuzzel
238
      xwayland-satellite
239
      evil-helix
240
      zed-editor
241
      mpv
242
      gajim
243
    ]
244
    ++ (with pkgs-stable; [
245
      kdePackages.kdenlive
246
      obs-studio
247
    ]);
248
249
  fonts.packages = with pkgs; [
250
    nerd-fonts.jetbrains-mono
251
    nerd-fonts.iosevka
252
  ];
253
254
  # Sorry Uncle Richard
255
  nixpkgs.config.allowUnfree = true;
256
  services.seatd.enable = true;
257
258
  nix.settings = {
259
    experimental-features = ["nix-command" "flakes"];
260
    download-buffer-size = 268435456;
261
  };
262
263
  nixpkgs.config.permittedInsecurePackages = [
264
    "olm-3.2.16"
265
  ];
266
267
  system.stateVersion = "25.05";
268
}