Compare commits

..

No commits in common. "master" and "multihome" have entirely different histories.

36 changed files with 2347 additions and 2488 deletions

View file

@ -1,8 +1,8 @@
<h1> <h1>
floppydisk's dotfiles<br> floppydisk's dotfiles
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/palette/macchiato.png" width="600px" /> <br> <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/palette/macchiato.png" width="600px" /> <br>
<a href="https://github.com/floppydisk05/dotfiles/stargazers"> <a href="https://github.com/floppydisk05/dotfiles/stargazers">
<img src="https://img.shields.io/github/stars/floppydisk05/dotfiles?color=ca9ee6&labelColor=303446&style=for-the-badge"> <img src="https://img.shields.io/github/stars/floppydisk05/dotfiles?color=ca9ee6&labelColor=303446&style=for-the-badge">
</a> </a>
<a href="https://github.com/floppydisk05/dotfiles/"> <a href="https://github.com/floppydisk05/dotfiles/">
@ -22,18 +22,17 @@
- **Editor:** [neovim](https://github.com/neovim/neovim/) / [VScode](https://code.visualstudio.com/) - **Editor:** [neovim](https://github.com/neovim/neovim/) / [VScode](https://code.visualstudio.com/)
- **File Manager:** [Dolphin](https://github.com/KDE/dolphin) - **File Manager:** [Dolphin](https://github.com/KDE/dolphin)
## Main Applications ## Main Applications
- **Browser:** [Mozilla Firefox Developer Edition](https://www.mozilla.org/en-US/firefox/developer/) - **Browser:** [Mozilla Firefox Developer Edition](https://www.mozilla.org/en-US/firefox/developer/)
- **E-mail:** [Mozilla Thunderbird](https://www.thunderbird.net/en-US/) - **E-mail:** [Mozilla Thunderbird](https://www.thunderbird.net/en-US/)
- **Media:** [VLC Media Player](https://www.videolan.org/) / [Plexamp](https://www.plex.tv/plexamp/) - **Media:** [VLC Media Player](https://www.videolan.org/) / [Plexamp](https://www.plex.tv/plexamp/)
# Notes
# Notes
If you have any questions or issues, open an issue under this repository. If you have any suggestions for improvement, head to the "Pull Requests" section and make your changes. If you think this repository is confusing, you are (mostly) right. Feel free to open an issue and ask why something is the way it is. If you have any questions or issues, open an issue under this repository. If you have any suggestions for improvement, head to the "Pull Requests" section and make your changes. If you think this repository is confusing, you are (mostly) right. Feel free to open an issue and ask why something is the way it is.
## Credits ## Credits
- **[NotAShelf](https://github.com/NotAShelf)** - Introduced me to NixOS, pretty much the reason this repo exists - **[NotAShelf](https://github.com/NotAShelf)** - Introduced me to NixOS, pretty much the reason this repo exists
- **[rubiigen](https://github.com/rubiigen)** - Huge thanks for un-fucking my dots after I neglected them for 5 months because my main pc died
- **[toger5](https://github.com/toger5)** - My waybar stylesheet is a ~~stolen~~ modified version of [theirs](https://gist.github.com/toger5/3a509d9a9d7ebba1e02205b00449ccff#file-style-css) - **[toger5](https://github.com/toger5)** - My waybar stylesheet is a ~~stolen~~ modified version of [theirs](https://gist.github.com/toger5/3a509d9a9d7ebba1e02205b00449ccff#file-style-css)

View file

@ -1,23 +0,0 @@
name: Check Flake
on:
workflow_dispatch:
pull_request:
paths:
- "**.nix"
- "**.lock"
- ".github/workflows/check.yml"
push:
paths:
- "**.nix"
- "**.lock"
- ".github/workflows/check.yml"
jobs:
check:
# uses the local reusable workflow
uses: ./.github/workflows/nix.yml
secrets:
GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
with:
command: nix flake check --accept-flake-config

View file

@ -1,33 +0,0 @@
name: Nix Setup
on:
workflow_call:
inputs:
command:
required: false
type: string
platform:
default: "ubuntu"
required: false
type: string
secrets:
GH_TOKEN:
required: true
jobs:
nix:
runs-on: "${{ inputs.platform }}-latest"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: "${{ secrets.GH_TOKEN }}"
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Nix Magic Cache
uses: DeterminateSystems/magic-nix-cache-action@main
- name: "Run Input: ${{ inputs.command }}"
run: "${{ inputs.command }}"

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.vscode/

View file

@ -1,3 +0,0 @@
{
"workbench.colorCustomizations": {}
}

2963
flake.lock

File diff suppressed because it is too large Load diff

131
flake.nix
View file

@ -1,66 +1,103 @@
{ {
description = "Your new nix config"; description = "Your new nix config";
inputs = {
# Nixpkgs
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # based unstable packages
nixpkgs-master.url = "github:nixos/nixpkgs/master"; # cringe stable packages
# Home manager
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# neovim-flake
neovim-flake = {
url = "github:notashelf/neovim-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
# arrpc
arrpc = {
url = "github:notashelf/arrpc-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
# hyprland
hyprland.url = "github:hyprwm/Hyprland";
};
outputs = { outputs = {
self, self,
nixpkgs, nixpkgs,
home-manager,
hyprland,
... ...
}: let } @ inputs: let
inherit (self) outputs;
forAllSystems = nixpkgs.lib.genAttrs [ forAllSystems = nixpkgs.lib.genAttrs [
"aarch64-linux" "aarch64-linux"
"i686-linux"
"x86_64-linux" "x86_64-linux"
#"i686-linux" "aarch64-darwin"
#"aarch64-darwin" "x86_64-darwin"
#"x86_64-darwin"
]; ];
in { in rec {
# Entrypoint for NixOS configurations # Your custom packages
nixosConfigurations = import ./hosts {inherit self;}; # Acessible through 'nix build', 'nix shell', etc
packages = forAllSystems (
# devshells that are provided by this flake system: let
# adding more packages to buildInputs makes them available pkgs = nixpkgs.legacyPackages.${system};
# while inside the devshell - enetered via `nix develop` in
import ./pkgs {inherit pkgs;}
);
# Devshell for bootstrapping
# Acessible through 'nix develop' or 'nix-shell' (legacy)
devShells = forAllSystems ( devShells = forAllSystems (
system: let system: let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
in { in
default = pkgs.mkShell { import ./shell.nix {inherit pkgs;}
buildInputs = with pkgs; [
alejandra # opionated Nix formatter
# example of bootstrapping self-contained shell
# applications for your flake
# this adds an `update` command to your shell
# which'll update all inputs and commit
(writeShellApplication {
name = "update";
text = ''
nix flake update && git commit flake.lock -m "flake: bump inputs"
'';
})
];
};
}
); );
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); # Your custom packages and modifications, exported as overlays
# overlays = import ./overlays {inherit inputs;}; # TODO: only use overlays when you understand what tthey do
# Reusable nixos modules you might want to export
# These are usually stuff you would upstream into nixpkgs
# nixosModules = import ./modules/public/nixos;
# Reusable home-manager modules you might want to export
# These are usually stuff you would upstream into home-manager
# homeManagerModules = import ./modules/public/home-manager;
# NixOS configuration entrypoint
# Available through 'nixos-rebuild --flake .#your-hostname'
nixosConfigurations = import ./hosts {inherit nixpkgs self outputs;};
# Standalone home-manager configuration entrypoint
# Available through 'home-manager --flake .#your-username@your-hostname'
homeConfigurations = {
"floppydisk@nixbox" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
extraSpecialArgs = {inherit inputs outputs;};
modules = [
hyprland.homeManagerModules.default
{wayland.windowManager.hyprland.enable = true;}
# > Our main home-manager configuration file <
./homes/floppydisk
];
};
"floppydisk@nixpad" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
extraSpecialArgs = {inherit inputs outputs;};
modules = [
hyprland.homeManagerModules.default
{wayland.windowManager.hyprland.enable = true;}
# > Our main home-manager configuration file <
./homes/floppydisk
];
}; };
inputs = {
# Nixpkgs (unstable)
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# Home manager
home-manager.url = "github:nix-community/home-manager/";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# nixos-hardware
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
hyprland.url = "github:hyprwm/Hyprland?submodules=1";
nvf = {
url = "github:notashelf/nvf";
inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
} }

View file

@ -1,18 +1,19 @@
{ {
inputs, inputs,
self, self,
config, outputs,
... ...
}: { }: {
home-manager = { home-manager = {
useUserPackages = true; useUserPackages = true;
useGlobalPkgs = true; useGlobalPkgs = true;
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs self; inherit inputs self outputs;
}; };
users = { users = {
# TODO: "base" user that will be used by default is there is no defined
# home directory for the user
floppydisk = ./floppydisk; floppydisk = ./floppydisk;
# more users can go here, the format is only for convenience
}; };
}; };
} }

View file

@ -0,0 +1,14 @@
{
inputs,
pkgs,
...
}: {
imports = [
inputs.arrpc.homeManagerModules.default
];
home.packages = [pkgs.webcord-vencord];
# provided by the arrpc-flake home-manager module
services.arrpc.enable = true;
}

View file

@ -1,41 +1,153 @@
# This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
{ {
inputs,
pkgs, pkgs,
lib,
... ...
}: { }: {
# You can import other home-manager modules here
imports = [ imports = [
./packages.nix # home.packages and similar stuff # If you want to use modules your own flake exports (from modules/home-manager):
./nvf.nix # outputs.homeManagerModules.example
./ssh.nix
./git.nix # Or modules exported from other flakes (such as nix-colors):
# inputs.nix-colors.homeManagerModules.default
# You can also split up your configuration and import pieces of it here:
./neovim-flake.nix
./arrpc.nix
]; ];
home = { home = {
username = "floppydisk"; username = "floppydisk";
homeDirectory = "/home/floppydisk"; homeDirectory = "/home/floppydisk";
file.".config/lockonsleep/config.sh".source = ./lock.sh; packages = with pkgs; [
file.".config/hypr/hyprpaper.conf".text = '' # Utils
preload = ${/. + ../../misc/wallpapers/oneshot-1.jpg} handbrake
wallpaper = ,${/. + ../../misc/wallpapers/oneshot-1.jpg} thunderbird
splash = false picard
''; realvnc-vnc-viewer
rpi-imager
obs-studio
yt-dlp
_1password-gui
_1password
git-credential-1password
firefox-devedition
inputs.arrpc.packages.${pkgs.system}.arrpc
rdesktop
_3llo
gimp
qemu
virt-manager
exactaudiocopy
fsv
lsd
lsdvd
thefuck
zip
unzip
notion-app-enhanced
libresprite
qbittorrent
wine
vifm
cloudflared
ansible
just
pwgen
grafx2
libreoffice-fresh
# Fetch
neofetch
yafetch
cpufetch
bunnyfetch
nitch
screenfetch
starfetch
# DevTools
github-desktop
gh
codeql
vscode
jetbrains.ruby-mine
jetbrains.rider
jetbrains.phpstorm
jetbrains.idea-ultimate
jetbrains.webstorm
lazygit
wakatime
mongodb-compass
mongosh
httpie
ngrok
mycli
squirrel-sql
figma-linux
# Langs
openscad
nodejs_18
nodePackages.yarn
nodePackages.ts-node
nodePackages.pnpm
php82
php82Packages.composer
deno
python310
python310Packages.pip
python310Packages.discordpy
dotnet-sdk
jdk17
maven
dart
purescript
# Comms
nheko
element-desktop
(discord.override {
withOpenASAR = true;
withVencord = true;
})
caprine-bin
teamspeak5_client
# Gaming
rpcs3
pcsxr
pcsx2
steam
gzdoom
minecraft
dolphin-emu
prismlauncher
fceux
snes9x
heroic
openrct2
osu-lazer-bin
# Media
vlc
libsForQt5.vvave
tidal-hifi
# zsh Themes
zsh-powerlevel10k
];
}; };
wayland.windowManager.hyprland = { # Add stuff for your user as you see fit:
enable = true; programs = {
systemd.enable = true; # Enable home-manager
settings = import ./hyprland.nix; home-manager.enable = true;
};
programs.waybar = { # Enable z-shell
enable = true; zsh = {
settings = import ./waybar.nix;
style = import ./waybar-style.nix;
};
services.udiskie.enable = true;
services.arrpc.enable = true;
programs.zsh = {
enable = true; enable = true;
shellAliases = { shellAliases = {
ls = "lsd"; ls = "lsd";
@ -50,10 +162,10 @@
enable = true; enable = true;
plugins = [ plugins = [
"git" "git"
# "thefuck" "thefuck"
]; ];
custom = "$HOME/.oh-my-custom"; custom = "$HOME/.oh-my-custom";
#theme = "powerlevel10k/powerlevel10k"; theme = "powerlevel10k/powerlevel10k";
}; };
plugins = [ plugins = [
{ {
@ -67,19 +179,21 @@
''; '';
}; };
programs.git = { # enable git and configure users
git = {
enable = true; enable = true;
userName = "Frankie B."; userName = "Frankie B.";
userEmail = "git@diskfloppy.me"; userEmail = "git@diskfloppy.me";
extraConfig = { extraConfig = {
# commit.gpgsign = true; # Sign all commits using ssh key
# gpg.format = "ssh"; commit.gpgsign = true;
# user.signingkey = "~/.ssh/id_ed25519.pub"; gpg.format = "ssh";
user.signingkey = "~/.ssh/id_ed25519.pub";
init.defaultBranch = "master"; init.defaultBranch = "master";
}; };
}; };
programs.irssi = { irssi = {
enable = true; enable = true;
networks = { networks = {
znc = { znc = {
@ -93,13 +207,23 @@
}; };
}; };
}; };
};
# let HM manage itself when in standalone mode wayland.windowManager.hyprland = {
programs.home-manager.enable = true; enable = true;
systemdIntegration = true;
settings = import ./hyprland.nix;
};
# Nicely reload system(d) units when changing configs programs.waybar = {
systemd.user.startServices = lib.mkDefault "sd-switch"; enable = true;
settings = import ./waybar.nix;
style = import ./waybar-style.nix;
};
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "24.05"; home.stateVersion = "22.11";
} }

View file

@ -1,17 +0,0 @@
{
nixosConfig,
lib,
pkgs,
...
}: {
programs.git = {
extraConfig = {
init.defaultBranch = "master";
gpg.format = "ssh";
gpg."ssh".program = "${pkgs._1password-gui}/bin/op-ssh-sign";
commit.gpgsign = true;
user.signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDcwriIE5K8SVewvVdgNvmhtAVvJPtMnNkkS4ETi5YgJ";
push.autoSetupRemote = true;
};
};
}

View file

@ -10,20 +10,11 @@
"waybar" "waybar"
"swaync" "swaync"
"1password --silent" "1password --silent"
"blueman-applet"
]; ];
monitor = []; monitor = [
"DP-1,1600x900,0x0,1"
windowrulev2 = [ "HDMI-A-1,1280x1024,1600x0,1"
"float, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"move 67% 72%, title:^(Picture-in-Picture)$"
"size 33% 28%, title:^(Picture-in-Picture)$"
];
windowrule = [
"float,^(blueman-manager)$"
]; ];
input = { input = {
@ -37,8 +28,8 @@
gaps_in = 5; gaps_in = 5;
gaps_out = 20; gaps_out = 20;
border_size = 2; border_size = 2;
"col.active_border" = "rgb(f38ba8)"; "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgb(313244)"; "col.inactive_border" = "rgba(595959aa)";
layout = "dwindle"; layout = "dwindle";
}; };
@ -49,7 +40,10 @@
passes = 1; passes = 1;
new_optimizations = 1; new_optimizations = 1;
}; };
drop_shadow = "no"; drop_shadow = "yes";
shadow_range = 20;
shadow_render_power = 5;
"col.shadow" = "rgba(1a1a1aee)";
}; };
animations = { animations = {
@ -69,17 +63,16 @@
preserve_split = "yes"; preserve_split = "yes";
}; };
master = {
new_is_master = true;
};
gestures = { gestures = {
workspace_swipe = false; workspace_swipe = false;
}; };
"general:resize_on_border" = "true"; "general:resize_on_border" = "true";
bindl = [
",switch:on:Lid Switch,exec,${/. + ../../misc/scripts/lidclose.sh}"
",switch:off:Lid Switch,exec,${/. + ../../misc/scripts/lidopen.sh}"
];
bindm = [ bindm = [
# mouse binds # mouse binds
"ALT,mouse:272,movewindow" "ALT,mouse:272,movewindow"
@ -95,10 +88,6 @@
# mute key # mute key
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# brightness controls
", XF86MonBrightnessUp, exec, brightnessctl s +20%"
", XF86MonBrightnessDown, exec, brightnessctl s 20%-"
# general shortcuts # general shortcuts
"$mod, Q, exec, kitty" "$mod, Q, exec, kitty"
"$mod, C, killactive, " "$mod, C, killactive, "
@ -116,14 +105,11 @@
"$mod SHIFT, K, movewindow, u" "$mod SHIFT, K, movewindow, u"
"$mod SHIFT, J, movewindow, d" "$mod SHIFT, J, movewindow, d"
# maximize window
"$mod, return, fullscreen, 0"
# screenshot # screenshot
", Print, exec, grim -l 9 -g \"$(slurp)\" - | wl-copy" ", Print, exec, grim -l 9 -g \"$(slurp)\" - | wl-copy"
# wofi # rofi
"$mod, D, exec, wofi --show=drun -G" "$mod, D, exec, rofi -show drun --show-icons"
# workspace scroll # workspace scroll
"$mod, mouse_down, workspace, e+1" "$mod, mouse_down, workspace, e+1"

View file

@ -1,2 +0,0 @@
exec swayidle -w \
before-sleep 'gtklock -d -i'

View file

@ -4,10 +4,10 @@
... ...
}: { }: {
imports = [ imports = [
inputs.nvf.homeManagerModules.default inputs.neovim-flake.homeManagerModules.default
]; ];
programs.nvf = { programs.neovim-flake = {
enable = true; enable = true;
settings = { settings = {
vim = { vim = {
@ -63,7 +63,7 @@
enable = true; enable = true;
fillChar = null; fillChar = null;
eolChar = null; eolChar = null;
scope.enabled = true; showCurrContext = true;
}; };
cursorline = { cursorline = {
enable = true; enable = true;
@ -78,12 +78,12 @@
}; };
}; };
#vim.theme = { vim.theme = {
# enable = true; enable = true;
# name = "onedark"; name = "onedark";
# style = "dark"; style = "dark";
#transparent = false; transparent = false;
#}; };
vim.autopairs.enable = true; vim.autopairs.enable = true;
vim.autocomplete = { vim.autocomplete = {
@ -95,12 +95,11 @@
nvimTree = { nvimTree = {
enable = true; enable = true;
openOnSetup = true; openOnSetup = true;
setupOpts = { disableNetrw = true;
disable_netrw = true;
hijack_unnamed_buffer_when_opening = true; hijackUnnamedBufferWhenOpening = true;
hijack_cursor = true; hijackCursor = true;
hijack_directories = { hijackDirectories = {
enable = true; enable = true;
autoOpen = true; autoOpen = true;
}; };
@ -112,6 +111,7 @@
}; };
view = { view = {
preserveWindowProportions = false;
cursorline = false; cursorline = false;
width = { width = {
min = 35; min = 35;
@ -121,12 +121,12 @@
}; };
renderer = { renderer = {
indent_markers.enable = true; indentMarkers.enable = true;
root_folder_label = false; rootFolderLabel = false;
icons = { icons = {
modified_placement = "after"; modifiedPlacement = "after";
git_placement = "after"; gitPlacement = "after";
show.git = true; show.git = true;
show.modified = true; show.modified = true;
}; };
@ -136,9 +136,8 @@
modified = { modified = {
enable = true; enable = true;
show_on_dirs = false; showOnDirs = false;
show_on_open_dirs = true; showOnOpenDirs = true;
};
}; };
mappings = { mappings = {
@ -163,7 +162,7 @@
vim.git = { vim.git = {
enable = true; enable = true;
gitsigns.enable = true; gitsigns.enable = true;
gitsigns.codeActions.enable = false; gitsigns.codeActions = false;
}; };
vim.minimap = { vim.minimap = {
@ -211,11 +210,11 @@
noice.enable = true; noice.enable = true;
smartcolumn = { smartcolumn = {
enable = true; enable = true;
setupOpts.custom_colorcolumn = { columnAt.languages = {
nix = "150"; nix = 150;
ruby = "110"; ruby = 110;
java = "120"; java = 120;
go = ["110" "150"]; go = [110 150];
}; };
}; };
}; };
@ -236,18 +235,18 @@
comment-nvim.enable = true; comment-nvim.enable = true;
}; };
#vim.presence = { vim.presence = {
# presence-nvim = { presence-nvim = {
# enable = true; enable = true;
# auto_update = true; auto_update = true;
# image_text = "The Superior Text Editor"; image_text = "The Superior Text Editor";
# client_id = "793271441293967371"; client_id = "793271441293967371";
# main_image = "neovim"; main_image = "neovim";
# rich_presence = { rich_presence = {
# editing_text = "Editing %s"; editing_text = "Editing %s";
# }; };
# }; };
#}; };
}; };
}; };
} }

View file

@ -1,124 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [
# utils
handbrake
thunderbird
#picard
rpi-imager
obs-studio
yt-dlp
_1password-gui
_1password
firefox-devedition
rdesktop
_3llo
gimp
qemu
virt-manager
exactaudiocopy
abcde
fsv
lsd
lsdvd
# thefuck
zip
unzip
notion-app-enhanced
libresprite
qbittorrent
wine
vifm
cloudflared
ansible
just
pwgen
grafx2
libreoffice-fresh
wiki-tui
calcurse
kitty
wofi
grim
wlogout
hyprpaper
brightnessctl
josm
# fetch
neofetch
yafetch
cpufetch
bunnyfetch
nitch
screenfetch
starfetch
# devtools
github-desktop
gh
vscode
jetbrains.ruby-mine
jetbrains.rider
jetbrains.phpstorm
jetbrains.idea-ultimate
lazygit
wakatime
mongodb-compass
mongosh
httpie
ngrok
mycli
squirrel-sql
figma-linux
processing
# langs
openscad
nodejs_18
nodePackages.yarn
nodePackages.ts-node
nodePackages.pnpm
php82
php82Packages.composer
deno
python310
python310Packages.pip
dotnet-sdk
jdk17
maven
purescript
lua
#flutter
# comms
nheko
vesktop
caprine-bin
teamspeak_client
# gaming
rpcs3
pcsxr
pcsx2
steam
gzdoom
dolphin-emu
prismlauncher
fceux
snes9x
openrct2
osu-lazer-bin
# media
vlc
libsForQt5.vvave
tidal-hifi
youtube-tui
mpv
spotify
spicetify-cli
# zsh themes
zsh-powerlevel10k
];
}

View file

@ -1,21 +0,0 @@
{
nixosConfig,
config,
lib,
...
}: let
_1passwordAgent = {
enable = nixosConfig != {} && nixosConfig.programs._1password-gui.enable && nixosConfig.programs._1password-gui.sshAgent;
path = "${config.home.homeDirectory}/.1password/agent.sock";
};
in {
programs.ssh = {
enable = true;
forwardAgent = _1passwordAgent.enable;
extraConfig = ''
Host *
IdentityAgent ~/.1password/agent.sock
'';
};
}

View file

@ -10,7 +10,7 @@
window#waybar { window#waybar {
background: rgba(43, 48, 59, 0.5); background: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5); border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #181825; color: #1e2030;
} }
window#waybar.hidden { window#waybar.hidden {
@ -20,14 +20,14 @@ window#waybar.hidden {
#workspaces button { #workspaces button {
padding: 0 5px; padding: 0 5px;
background: transparent; background: transparent;
color: #45475a; color: #494d64;
border-bottom: 3px solid transparent; border-bottom: 3px solid transparent;
} }
#workspaces button.active #workspaces button.active
#workspaces button.focused { #workspaces button.focused {
background-color: #9399b2; background-color: #939ab7;
border-bottom: 3px solid #45475a; border-bottom: 3px solid #494d64;
} }
#workspaces button.urgent { #workspaces button.urgent {
@ -39,41 +39,37 @@ window#waybar.hidden {
border-bottom: 3px solid #cad3f5; border-bottom: 3px solid #cad3f5;
} }
#custom-notification, #disk, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-media, #tray, #mode, #idle_inhibitor, #bluetooth { #custom-notification, #disk, #clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-media, #tray, #mode, #idle_inhibitor {
padding: 0 10px; padding: 0 10px;
margin: 0 2px; margin: 0 2px;
} }
#workspaces { #workspaces {
background-color: #cdd6f4; background-color: #cad3f5;
margin-right: 2px;
padding: 0 10px;
} }
#clock { #clock {
background-color: #64727D; background-color: #64727D;
padding: 0 10px;
margin-left: 2px;
} }
#battery { #battery {
background-color: #cdd6f4; background-color: #cad3f5;
} }
#battery.charging { #battery.charging {
color: #cdd6f4; color: #cad3f5;
background-color: #26A65B; background-color: #26A65B;
} }
@keyframes blink { @keyframes blink {
to { to {
background-color: #cdd6f4; background-color: #cad3f5;
} }
} }
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background: #f53c3c; background: #f53c3c;
color: #cdd6f4; color: #cad3f5;
animation-name: blink; animation-name: blink;
animation-duration: 0.5s; animation-duration: 0.5s;
animation-timing-function: linear; animation-timing-function: linear;
@ -82,11 +78,11 @@ window#waybar.hidden {
} }
#cpu { #cpu {
background: #a6e3a1; background: #a6da95;
} }
#memory { #memory {
background: #cba6f7; background: #c6a0f6;
} }
#backlight { #backlight {
@ -94,16 +90,12 @@ window#waybar.hidden {
} }
#network { #network {
background: #fab387; background: #f5a97f;
} }
#disk { #disk {
background: #2980b9; background: #2980b9;
color: #cdd6f4; color: #cad3f5;
}
#bluetooth {
background: #74c7ec;
} }
@ -112,7 +104,7 @@ window#waybar.hidden {
} }
#pulseaudio { #pulseaudio {
background: #f9e2af; background: #eed49f;
color: #000000; color: #000000;
} }
@ -156,7 +148,7 @@ window#waybar.hidden {
} }
#custom-notification { #custom-notification {
color: #181825; color: #1e2030;
background-color: #94e2d5; background-color: #8bd5ca;
} }
'' ''

View file

@ -5,11 +5,12 @@
height = 27; height = 27;
fixed-center = true; fixed-center = true;
modules-left = [ modules-left = [
"hyprland/workspaces"
"custom/notification" "custom/notification"
"custom/sep"
"tray" "tray"
]; ];
modules-center = [ modules-center = [
"wlr/workspaces"
]; ];
modules-right = [ modules-right = [
"battery" "battery"
@ -17,7 +18,6 @@
"memory" "memory"
"pulseaudio" "pulseaudio"
"network" "network"
"bluetooth"
"clock" "clock"
]; ];
@ -51,13 +51,10 @@
escape = true; escape = true;
}; };
"hyprland/workspaces" = { "wlr/workspaces" = {
disable-scroll = false; disable-scroll = false;
all-outputs = false; all-outputs = false;
format = "{icon}"; format = "{icon}";
"on-scroll-up" = "hyprctl dispatch workspace e+1";
"on-scroll-down" = "hyprctl dispatch workspace e-1";
"on-click" = "activate";
active-only = false; active-only = false;
format-icons = { format-icons = {
"1" = "I"; "1" = "I";
@ -111,9 +108,9 @@
"clock" = { "clock" = {
timezone = "Europe/London"; timezone = "Europe/London";
format = " {:%H:%M}"; format = "{: %H:%M}";
format-alt = " {:%H:%M} {%d/%m/%Y}"; format-alt = "{: %H:%M %d/%m/%Y}";
tooltip-format = " {:%H:%M} {%d/%m/%Y}"; tooltip-format = "{: %H:%M %d/%m/%Y}";
today-format = "<span color='#aaaaaa'><b><u>{}</u></b></span>"; today-format = "<span color='#aaaaaa'><b><u>{}</u></b></span>";
calendar-weeks-pos = "right"; calendar-weeks-pos = "right";
format-calendar = "<span color='#aaaaaa'><b><u>{}</u></b></span>"; format-calendar = "<span color='#aaaaaa'><b><u>{}</u></b></span>";
@ -138,11 +135,11 @@
"warning" = 30; "warning" = 30;
"critical" = 5; "critical" = 5;
}; };
format = "{icon}{capacity}%"; format = "{icon}{capacity}% ";
format-charging = " {capacity}%"; format-charging = " {capacity}% ";
format-plugged = " {capacity}%"; format-plugged = " {capacity}% ";
format-alt = "{icon}{time}"; format-alt = "{icon}{time}";
format-icons = [" " " " " " " " " "]; format-icoms = [" " " " " " " " " "];
}; };
"network" = { "network" = {
@ -156,15 +153,6 @@
format-alt = "{ifname}: {ipaddr}/{cidr}"; format-alt = "{ifname}: {ipaddr}/{cidr}";
}; };
"bluetooth" = {
format = " {status}";
format-disabled = "";
format-connected = " {num_connections} connected";
tooltip-format = "{controller_alias}\t{controller_address}";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
};
"pulseaudio" = { "pulseaudio" = {
on-click = "pavucontrol"; on-click = "pavucontrol";
format = "{icon}{volume}%"; format = "{icon}{volume}%";
@ -186,3 +174,4 @@
}; };
}; };
} }

View file

@ -1,42 +1,35 @@
{self, ...}: let {
# get inputs from self nixpkgs,
inherit (self) inputs; self,
# get necessary inputs from self.inputs outputs,
inherit (inputs) nixpkgs; ...
inherit (inputs.home-manager.nixosModules) home-manager; }: let
# get lib from nixpkgs and create and alias for lib.nixosSystem inputs = self.inputs;
# for potential future overrides & abstractions
inherit (nixpkgs) lib;
mkSystem = lib.nixosSystem;
home = ../homes; home-manager = inputs.home-manager.nixosModules.home-manager;
homes = ../homes;
# define a sharedArgs variable that we can simply inherit
# across all hosts to avoid traversing the file whenever
# we need to add a common specialArg
# if a host needs a specific arg that others do not need
# then we can merge into the old attribute set as such:
# specialArgs = commonArgs // { newArg = "value"; };
commonArgs = {inherit self inputs;};
in { in {
"watermelon" = mkSystem { nixbox = nixpkgs.lib.nixosSystem {
specialArgs = commonArgs; specialArgs = {inherit inputs outputs;};
modules = [ modules = [
# this list defines which files will be imported to be used as "modules" in the system config # this list defines which files will be imported to be used as "modules" in the system config
./watermelon/configuration.nix ./nixbox/configuration.nix
# use the nixos-module for home-manager # use the nixos-module for home-manager
home-manager home-manager
home homes
]; ];
}; };
"sunfish" = mkSystem { nixpad = nixpkgs.lib.nixosSystem {
specialArgs = commonArgs; specialArgs = {inherit inputs outputs;};
modules = [ modules = [
./sunfish/configuration.nix # this list defines which files will be imported to be used as "modules" in the system config
./nixpad/configuration.nix
# use the nixos-module for home-manager
home-manager home-manager
home homes
]; ];
}; };
} }

View file

@ -0,0 +1,219 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{
config,
pkgs,
...
}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
networking.hostName = "nixbox"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/London";
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the flatpak service
services.flatpak.enable = true;
# Enable SDDM and set second display resolution/position
services.xserver.displayManager = {
sddm.enable = true;
setupCommands = "xrandr --output HDMI-0 --mode 1280x1024 --output HDMI-0 --right-of DP-0";
};
# Enable the KDE Plasma Desktop Environment.
services.xserver.desktopManager.plasma5.enable = true;
# Enable hyprland
programs.hyprland = {
enable = true;
enableNvidiaPatches = true;
xwayland.enable = true;
};
# Configure keymap in X11
services.xserver = {
layout = "us";
xkbVariant = "";
};
# Enable experimental features
nix.settings.extra-experimental-features = ["flakes" "nix-command"];
# Enable automatic gc
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# I never want to touch this again
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
services.xserver.videoDrivers = ["nvidia"];
hardware = {
opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
nvidia = {
modesetting.enable = true;
nvidiaSettings = true;
};
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.floppydisk = {
isNormalUser = true;
description = "Frankie B.";
extraGroups = ["networkmanager" "wheel"];
packages = with pkgs; [
kate
];
initialPassword = "changeme";
shell = pkgs.zsh;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# security is for wusses
nixpkgs.config.permittedInsecurePackages = [
"openssl-1.1.1u"
];
# Fonts
fonts.packages = with pkgs; [
winePackages.fonts
];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# Tools
vim
wget
git
gnupg
pinentry
kitty
ntfs3g
pulseaudioFull
linuxKernel.packages.linux_zen.v4l2loopback
pciutils
usbutils
isoimagewriter
nvtop
screen
pavucontrol
paprefs
gcc
# Fonts
nerdfonts
jetbrains-mono
# other shit
libnotify
hyprpaper
networkmanagerapplet
grim
slurp
wl-clipboard
font-awesome
rofi
wlogout
swaynotificationcenter
swaylock
sway
swayidle
helvum
];
environment.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1";
};
xdg.portal.enable = true;
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
programs.zsh.enable = true;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Enable printing
services.printing.enable = true;
services.printing.drivers = [pkgs.hplipWithPlugin];
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.11"; # Did you read the comment?
}

View file

@ -12,24 +12,23 @@
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod"]; boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
boot.initrd.kernelModules = []; boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"]; boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = []; boot.extraModulePackages = [];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/8050c8ec-0625-498d-99f6-198d58f65c79"; device = "/dev/disk/by-uuid/c694a72f-2faa-49f3-813f-b9b552143088";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/efi" = { fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/4EAD-75BA"; device = "/dev/disk/by-uuid/BA8E-DAAA";
fsType = "vfat"; fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
}; };
swapDevices = [ swapDevices = [
{device = "/dev/disk/by-uuid/1a21fac9-5a8e-4ae1-ae44-5049211d56fc";} {device = "/dev/disk/by-uuid/f30ab1ac-66a5-4389-b4fe-a52f53255ec6";}
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
@ -38,8 +37,8 @@
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.tailscale0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View file

@ -0,0 +1,199 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{
config,
pkgs,
...
}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
networking.hostName = "nixpad"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/London";
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
# Configure keymap in X11
services.xserver = {
layout = "us";
xkbVariant = "";
};
# Enable experimental features
nix.settings.extra-experimental-features = ["flakes" "nix-command"];
# Enable automatic gc
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# I never want to touch this again
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
services.xserver.videoDrivers = ["intel"];
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
# Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.floppydisk = {
isNormalUser = true;
description = "Frankie B.";
extraGroups = ["networkmanager" "wheel"];
packages = with pkgs; [
kate
];
initialPassword = "changeme";
shell = pkgs.zsh;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Fonts
fonts.packages = with pkgs; [
winePackages.fonts
];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# Tools
vim
wget
git
gnupg
pinentry
kitty
ntfs3g
pulseaudioFull
linuxKernel.packages.linux_zen.v4l2loopback
pciutils
usbutils
isoimagewriter
nvtop
screen
pavucontrol
paprefs
gcc
# Fonts
nerdfonts
jetbrains-mono
# other shit
#dunst
libnotify
hyprpaper
networkmanagerapplet
grim
slurp
wl-clipboard
font-awesome
rofi
wlogout
swaynotificationcenter
swaylock
sway
swayidle
helvum
];
environment.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1";
};
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
programs.zsh.enable = true;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.11"; # Did you read the comment?
}

View file

@ -13,22 +13,18 @@
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
services.blueman.enable = true;
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/82b7f887-2059-45ae-9bdd-60082718d922"; { device = "/dev/disk/by-uuid/79fd353d-4e05-44fd-9e10-e57b08c140f0";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot/efi" =
{ device = "/dev/disk/by-uuid/C630-E94C"; { device = "/dev/disk/by-uuid/AA53-B6CE";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = swapDevices =
[ { device = "/dev/disk/by-uuid/3ce61b0c-691d-4452-93f2-e64e4b926f30"; } [ { device = "/dev/disk/by-uuid/92e64b37-f558-4333-bfb0-0e4bfe6e91c0"; }
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View file

@ -1,184 +0,0 @@
# This is your system's configuration file.
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
{
inputs,
lib,
config,
pkgs,
...
}: {
# You can import other NixOS modules here
imports = [
./hardware-configuration.nix
];
services.xserver = {
enable = true;
xkb.layout = "us";
};
services.libinput.enable = true;
boot.loader.efi.efiSysMountPoint = "/efi";
services.tailscale.enable = true;
hardware.graphics = {
enable = true;
enable32Bit = true;
};
nixpkgs = {
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
};
nix = {
# This will add each flake input as a registry
# To make nix3 commands consistent with your flake
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
# This will additionally add your inputs to the system's legacy channels
# Making legacy nix commands consistent as well, awesome!
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
settings = {
# Enable flakes and new 'nix' command
experimental-features = "nix-command flakes";
# Deduplicate and optimize nix store
auto-optimise-store = true;
};
};
# the configuration (pain)
programs = {
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
hyprland = {
enable = true;
xwayland.enable = true;
};
zsh.enable = true;
};
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
environment.systemPackages = with pkgs; [
gcc
git
grim
lxqt.lxqt-policykit
pavucontrol
pciutils
pulseaudio
screen
slurp
usbutils
wget
wl-clipboard
xdg-utils
swaynotificationcenter
swayidle
wofi
swaylock
gnome-keyring
gtklock
tailscale
];
services.printing.enable = true;
fonts.packages = with pkgs; [
font-awesome
nerdfonts
jetbrains-mono
winePackages.fonts
];
networking.hostName = "sunfish";
networking.networkmanager.enable = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.systemd.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
# Set a time zone, idiot
time.timeZone = "Europe/London";
# Fun internationalisation stuffs (AAAAAAAA)
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# define user acc
users.users.floppydisk = {
isNormalUser = true;
description = "Frankie B.";
extraGroups = ["networkmanager" "wheel"];
openssh.authorizedKeys.keys = [
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
];
shell = pkgs.zsh;
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# This setups a SSH server. Very important if you're setting up a headless system.
# Feel free to remove if you don't need it.
services.openssh.enable = true;
services.greetd = {
enable = true;
restart = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
user = "greeter";
};
};
};
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal";
TTYReset = "true";
TTYHangup = "true";
TTYVTDisallocate = true;
};
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
security.pam.services.gtklock.text = lib.readFile "${pkgs.gtklock}/etc/pam.d/gtklock";
networking.firewall.enable = false;
system.stateVersion = "24.05";
}

View file

@ -1,204 +0,0 @@
# This is your system's configuration file.
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
{
inputs,
lib,
config,
pkgs,
...
}: {
# You can import other NixOS modules here
imports = [
./hardware-configuration.nix
];
services.xserver = {
enable = true;
xkb.layout = "us";
};
services.tailscale.enable = true;
hardware.graphics = {
enable = true;
enable32Bit = true;
};
nixpkgs = {
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
};
nix = {
# This will add each flake input as a registry
# To make nix3 commands consistent with your flake
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
# This will additionally add your inputs to the system's legacy channels
# Making legacy nix commands consistent as well, awesome!
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
settings = {
# Enable flakes and new 'nix' command
experimental-features = "nix-command flakes";
# Deduplicate and optimize nix store
auto-optimise-store = true;
};
};
# the configuration (pain)
programs = {
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
hyprland = {
enable = true;
xwayland.enable = true;
};
zsh.enable = true;
};
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
security.polkit.enable = true;
systemd = {
user.services.polkit-lxqt = {
description = "polkit-lxqt";
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.lxqt.lxqt-policykit}/bin/lxqt-policykit-agent";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
};
environment.systemPackages = with pkgs; [
lxqt.lxqt-policykit
gcc
git
grim
lxqt.lxqt-policykit
pavucontrol
pciutils
pulseaudio
screen
slurp
usbutils
wget
wl-clipboard
xdg-utils
swaynotificationcenter
swayidle
wofi
swaylock
gnome-keyring
gtklock
fprintd
tailscale
];
services.fprintd = {
enable = true;
};
services.printing.enable = true;
fonts.packages = with pkgs; [
font-awesome
nerdfonts
jetbrains-mono
winePackages.fonts
];
networking.hostName = "watermelon";
networking.networkmanager.enable = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.systemd.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
# Set a time zone, idiot
time.timeZone = "Europe/London";
# Fun internationalisation stuffs (AAAAAAAA)
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# define user acc
users.users.floppydisk = {
isNormalUser = true;
description = "Frankie B.";
extraGroups = ["networkmanager" "wheel"];
openssh.authorizedKeys.keys = [
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
];
shell = pkgs.zsh;
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# This setups a SSH server. Very important if you're setting up a headless system.
# Feel free to remove if you don't need it.
services.openssh.enable = true;
services.greetd = {
enable = true;
restart = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
user = "greeter";
};
};
};
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal";
TTYReset = "true";
TTYHangup = "true";
TTYVTDisallocate = true;
};
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
security.pam.services.gtklock.text = lib.readFile "${pkgs.gtklock}/etc/pam.d/gtklock";
networking.firewall.enable = false;
system.stateVersion = "24.05";
}

View file

@ -1,15 +0,0 @@
#!/usr/bin/env bash
# Count the number of connected monitors
connected_monitors=$(xrandr | grep " connected " | wc -l)
# Check if more than one monitor is connected
if [ $connected_monitors -gt 1 ]; then
# Disable LVDS-1
hyprctl keyword monitor LVDS-1, disable
else
# Send computer to sleep
swayidle -w \
timeout 1800 'hyprctl dispatch dpms off' \
resume 'hyprctl dispatch dpms on' \
timeout 3600 'systemctl suspend'
fi

View file

@ -1,3 +0,0 @@
#!/usr/bin/env bash
hyprctl keyword monitor LVDS-1, preferred, auto, 1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

View file

@ -0,0 +1,6 @@
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
# These should be stuff you would like to share with others, not your personal configurations.
{
# List your module files here
# my-module = import ./my-module.nix;
}

View file

@ -0,0 +1,6 @@
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
# These should be stuff you would like to share with others, not your personal configurations.
{
# List your module files here
# my-module = import ./my-module.nix;
}

9
nixpkgs.nix Normal file
View file

@ -0,0 +1,9 @@
# A nixpkgs instance that is grabbed from the pinned nixpkgs commit in the lock file
# This is useful to avoid using channels when using legacy nix commands
let
lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
in
import (fetchTarball {
url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
sha256 = lock.narHash;
})

5
pkgs/default.nix Normal file
View file

@ -0,0 +1,5 @@
# Custom packages, that can be defined similarly to ones from nixpkgs
# You can build them using 'nix build .#example' or (legacy) 'nix-build -A example'
{pkgs ? (import ../nixpkgs.nix) {}}: {
# example = pkgs.callPackage ./example { };
}

9
shell.nix Normal file
View file

@ -0,0 +1,9 @@
# Shell for bootstrapping flake-enabled nix and home-manager
# You can enter it through 'nix develop' or (legacy) 'nix-shell'
{pkgs ? (import ./nixpkgs.nix) {}}: {
default = pkgs.mkShell {
# Enable experimental features without having to specify the argument
NIX_CONFIG = "experimental-features = nix-command flakes";
nativeBuildInputs = with pkgs; [nix home-manager git];
};
}