Compare commits

...

35 commits

Author SHA1 Message Date
adebf88996
set efi mountpoint
Some checks failed
Check Flake / check (push) Has been cancelled
2024-08-25 01:11:06 +01:00
e68b978c77
fuck
Some checks failed
Check Flake / check (push) Has been cancelled
2024-08-25 01:06:21 +01:00
d2b3336f13
Move README.md to root 2024-07-12 03:14:53 +01:00
9704820ba2
Change wallpaper 2024-07-11 23:38:36 +01:00
rubiigen
8bb14cb78d forgot the change to hardware.graphics from hardware.opengl in banana's configuration.nix file, added. 2024-07-11 15:17:22 +01:00
rubiigen
f3273f5c0f allows rebuild to succeed, few things commented out for they are shitfucked™️ 2024-07-11 15:17:22 +01:00
9bfa850bc3
Update packages 2024-05-29 14:45:17 +01:00
b3d517dbf9
Make zsh shut up 2024-05-07 19:47:04 +01:00
980b771446
Fix fprintd 2024-05-07 19:47:03 +01:00
rubiigen
a558df302b remove common folder at root, why was this still there? 2024-04-23 22:20:27 +01:00
3d29e532d9
Fix waybar clock but actually break it even more 2024-04-17 02:48:16 +01:00
1d21da6f05
Enable bluetooth 2024-04-15 15:25:47 +01:00
2716a9079f
Add bluetooth module and update color scheme 2024-04-15 15:25:26 +01:00
e4d98dd27c
Add blueman 2024-04-15 15:23:49 +01:00
6137e0b129
Switch from rofi to wofi 2024-04-14 14:02:32 +01:00
04668aa344
Add maximize shortcut 2024-04-14 14:01:57 +01:00
d9ed9f1b40
Add/remove packages
+ josm
2024-04-14 00:13:59 +01:00
2803546ede
Update flake 2024-04-14 00:12:14 +01:00
bde38336c1
Update packages
-realvnc-vnc-viewer
2024-04-14 00:11:56 +01:00
380503d322
This was broken anyway 2024-04-14 00:11:30 +01:00
945ace09ee
Disable Network Manager Wait Online
It was being a twat
2024-03-10 22:34:10 +00:00
3f341d9f5d
Lid open/close binds 2024-03-10 22:20:12 +00:00
28933a66d2
Crank up the sensitivity on my PS/2 mouse 2024-03-10 22:19:20 +00:00
622d394de8
Update flake 2024-03-10 22:18:19 +00:00
241347b926
Janky "fix" to make 1pass git/ssh work 2024-02-18 01:09:22 +00:00
782f76ba11 Add brightness control binds 2024-02-16 17:36:29 +00:00
95859272b9 Correct spacing in battery indicator 2024-02-16 17:36:18 +00:00
92a12b490e Everything is FUCKED 2024-02-16 12:23:02 +00:00
36d47bbb59 Add IBM wallpaper 2024-02-16 12:23:02 +00:00
b19c48e95e
Update credits in README.md 2024-02-07 01:50:36 +00:00
3eaad00180 Add binds to enable/disable nixpad internal display 2024-02-07 01:43:38 +00:00
d6e36dfa8e Update h/w config 2024-02-07 01:43:09 +00:00
417c45b85d Misc config formatting 2024-02-07 01:42:54 +00:00
1c68fd4369 Multiple cfg updates
* Add hyprpaper config
* Remove old monitor configs
* Update waybar to use hyprland workspaces
* Format waybar
* Enable networkmanager
* Remove KDE Plasma
2024-02-07 01:42:25 +00:00
rubiigen
d666f30475 major refactor (treewide amongst general cleaning based on my modified dots (with help from notashelf) - perks 1: it works 2024-02-02 18:39:57 +00:00
33 changed files with 2467 additions and 2347 deletions

23
.github/workflows/check.yml vendored Normal file
View file

@ -0,0 +1,23 @@
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

33
.github/workflows/nix.yml vendored Normal file
View file

@ -0,0 +1,33 @@
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
View file

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

3
.vscode/settings.json vendored Normal file
View file

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

View file

@ -35,4 +35,5 @@ If you have any questions or issues, open an issue under this repository. If you
## 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)

2979
flake.lock

File diff suppressed because it is too large Load diff

131
flake.nix
View file

@ -1,103 +1,66 @@
{ {
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,
... ...
} @ inputs: let }: let
inherit (self) outputs;
forAllSystems = nixpkgs.lib.genAttrs [ forAllSystems = nixpkgs.lib.genAttrs [
"aarch64-linux" "aarch64-linux"
"i686-linux"
"x86_64-linux" "x86_64-linux"
"aarch64-darwin" #"i686-linux"
"x86_64-darwin" #"aarch64-darwin"
#"x86_64-darwin"
]; ];
in rec { in {
# Your custom packages # Entrypoint for NixOS configurations
# Acessible through 'nix build', 'nix shell', etc nixosConfigurations = import ./hosts {inherit self;};
packages = forAllSystems (
system: let # devshells that are provided by this flake
pkgs = nixpkgs.legacyPackages.${system}; # adding more packages to buildInputs makes them available
in # while inside the devshell - enetered via `nix develop`
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 {
import ./shell.nix {inherit pkgs;} default = pkgs.mkShell {
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"
'';
})
];
};
}
); );
# Your custom packages and modifications, exported as overlays formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
# 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,19 +1,18 @@
{ {
inputs, inputs,
self, self,
outputs, config,
... ...
}: { }: {
home-manager = { home-manager = {
useUserPackages = true; useUserPackages = true;
useGlobalPkgs = true; useGlobalPkgs = true;
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs self outputs; inherit inputs self;
}; };
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

@ -1,14 +0,0 @@
{
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,163 +1,41 @@
# 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 = [
# If you want to use modules your own flake exports (from modules/home-manager): ./packages.nix # home.packages and similar stuff
# outputs.homeManagerModules.example ./nvf.nix
./ssh.nix
# Or modules exported from other flakes (such as nix-colors): ./git.nix
# 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;
file.".config/hypr/hyprpaper.conf".text = '' file.".config/hypr/hyprpaper.conf".text = ''
preload = ${/. + ../../misc/wallpapers/oneshot-1.jpg} preload = ${/. + ../../misc/wallpapers/oneshot-1.jpg}
wallpaper = ,${/. + ../../misc/wallpapers/oneshot-1.jpg} wallpaper = ,${/. + ../../misc/wallpapers/oneshot-1.jpg}
splash = false
''; '';
packages = with pkgs; [
# Utils
handbrake
thunderbird
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
wiki-tui
calcurse
# 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
purescript
lua
flutter
# 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
spotify-tui
youtube-tui
mpv
# zsh Themes
zsh-powerlevel10k
];
}; };
# Add stuff for your user as you see fit: wayland.windowManager.hyprland = {
programs = { enable = true;
# Enable home-manager systemd.enable = true;
home-manager.enable = true; settings = import ./hyprland.nix;
};
# Enable z-shell programs.waybar = {
zsh = { enable = true;
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";
@ -172,10 +50,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 = [
{ {
@ -189,21 +67,19 @@
''; '';
}; };
# enable git and configure users programs.git = {
git = {
enable = true; enable = true;
userName = "Frankie B."; userName = "Frankie B.";
userEmail = "git@diskfloppy.me"; userEmail = "git@diskfloppy.me";
extraConfig = { extraConfig = {
# Sign all commits using ssh key # commit.gpgsign = true;
commit.gpgsign = true; # gpg.format = "ssh";
gpg.format = "ssh"; # user.signingkey = "~/.ssh/id_ed25519.pub";
user.signingkey = "~/.ssh/id_ed25519.pub";
init.defaultBranch = "master"; init.defaultBranch = "master";
}; };
}; };
irssi = { programs.irssi = {
enable = true; enable = true;
networks = { networks = {
znc = { znc = {
@ -217,24 +93,13 @@
}; };
}; };
}; };
};
wayland.windowManager.hyprland = { # let HM manage itself when in standalone mode
enable = true; programs.home-manager.enable = true;
systemdIntegration = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
settings = import ./hyprland.nix;
};
programs.waybar = { # Nicely reload system(d) units when changing configs
enable = true; systemd.user.startServices = lib.mkDefault "sd-switch";
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 = "22.11"; home.stateVersion = "24.05";
} }

17
homes/floppydisk/git.nix Normal file
View file

@ -0,0 +1,17 @@
{
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,12 +10,10 @@
"waybar" "waybar"
"swaync" "swaync"
"1password --silent" "1password --silent"
"blueman-applet"
]; ];
monitor = [ monitor = [];
"DVI-D-1,1920x1080,1920x0,1"
"HDMI-A-1,1920x1080,0x0,1"
];
windowrulev2 = [ windowrulev2 = [
"float, title:^(Picture-in-Picture)$" "float, title:^(Picture-in-Picture)$"
@ -24,6 +22,10 @@
"size 33% 28%, title:^(Picture-in-Picture)$" "size 33% 28%, title:^(Picture-in-Picture)$"
]; ];
windowrule = [
"float,^(blueman-manager)$"
];
input = { input = {
kb_layout = "us"; kb_layout = "us";
follow_mouse = 1; follow_mouse = 1;
@ -35,8 +37,8 @@
gaps_in = 5; gaps_in = 5;
gaps_out = 20; gaps_out = 20;
border_size = 2; border_size = 2;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; "col.active_border" = "rgb(f38ba8)";
"col.inactive_border" = "rgba(595959aa)"; "col.inactive_border" = "rgb(313244)";
layout = "dwindle"; layout = "dwindle";
}; };
@ -47,10 +49,7 @@
passes = 1; passes = 1;
new_optimizations = 1; new_optimizations = 1;
}; };
drop_shadow = "yes"; drop_shadow = "no";
shadow_range = 20;
shadow_render_power = 5;
"col.shadow" = "rgba(1a1a1aee)";
}; };
animations = { animations = {
@ -70,16 +69,17 @@
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,6 +95,10 @@
# 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, "
@ -112,11 +116,14 @@
"$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"
# rofi # wofi
"$mod, D, exec, rofi -show drun --show-icons" "$mod, D, exec, wofi --show=drun -G"
# workspace scroll # workspace scroll
"$mod, mouse_down, workspace, e+1" "$mod, mouse_down, workspace, e+1"

2
homes/floppydisk/lock.sh Normal file
View file

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

View file

@ -4,10 +4,10 @@
... ...
}: { }: {
imports = [ imports = [
inputs.neovim-flake.homeManagerModules.default inputs.nvf.homeManagerModules.default
]; ];
programs.neovim-flake = { programs.nvf = {
enable = true; enable = true;
settings = { settings = {
vim = { vim = {
@ -63,7 +63,7 @@
enable = true; enable = true;
fillChar = null; fillChar = null;
eolChar = null; eolChar = null;
showCurrContext = true; scope.enabled = 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,11 +95,12 @@
nvimTree = { nvimTree = {
enable = true; enable = true;
openOnSetup = true; openOnSetup = true;
disableNetrw = true; setupOpts = {
disable_netrw = true;
hijackUnnamedBufferWhenOpening = true; hijack_unnamed_buffer_when_opening = true;
hijackCursor = true; hijack_cursor = true;
hijackDirectories = { hijack_directories = {
enable = true; enable = true;
autoOpen = true; autoOpen = true;
}; };
@ -111,7 +112,6 @@
}; };
view = { view = {
preserveWindowProportions = false;
cursorline = false; cursorline = false;
width = { width = {
min = 35; min = 35;
@ -121,12 +121,12 @@
}; };
renderer = { renderer = {
indentMarkers.enable = true; indent_markers.enable = true;
rootFolderLabel = false; root_folder_label = false;
icons = { icons = {
modifiedPlacement = "after"; modified_placement = "after";
gitPlacement = "after"; git_placement = "after";
show.git = true; show.git = true;
show.modified = true; show.modified = true;
}; };
@ -136,8 +136,9 @@
modified = { modified = {
enable = true; enable = true;
showOnDirs = false; show_on_dirs = false;
showOnOpenDirs = true; show_on_open_dirs = true;
};
}; };
mappings = { mappings = {
@ -162,7 +163,7 @@
vim.git = { vim.git = {
enable = true; enable = true;
gitsigns.enable = true; gitsigns.enable = true;
gitsigns.codeActions = false; gitsigns.codeActions.enable = false;
}; };
vim.minimap = { vim.minimap = {
@ -210,11 +211,11 @@
noice.enable = true; noice.enable = true;
smartcolumn = { smartcolumn = {
enable = true; enable = true;
columnAt.languages = { setupOpts.custom_colorcolumn = {
nix = 150; nix = "150";
ruby = 110; ruby = "110";
java = 120; java = "120";
go = [110 150]; go = ["110" "150"];
}; };
}; };
}; };
@ -235,18 +236,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

@ -0,0 +1,124 @@
{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
];
}

21
homes/floppydisk/ssh.nix Normal file
View file

@ -0,0 +1,21 @@
{
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: #1e2030; color: #181825;
} }
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: #494d64; color: #45475a;
border-bottom: 3px solid transparent; border-bottom: 3px solid transparent;
} }
#workspaces button.active #workspaces button.active
#workspaces button.focused { #workspaces button.focused {
background-color: #939ab7; background-color: #9399b2;
border-bottom: 3px solid #494d64; border-bottom: 3px solid #45475a;
} }
#workspaces button.urgent { #workspaces button.urgent {
@ -39,13 +39,13 @@ 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 { #custom-notification, #disk, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-media, #tray, #mode, #idle_inhibitor, #bluetooth {
padding: 0 10px; padding: 0 10px;
margin: 0 2px; margin: 0 2px;
} }
#workspaces { #workspaces {
background-color: #cad3f5; background-color: #cdd6f4;
margin-right: 2px; margin-right: 2px;
padding: 0 10px; padding: 0 10px;
} }
@ -57,23 +57,23 @@ window#waybar.hidden {
} }
#battery { #battery {
background-color: #cad3f5; background-color: #cdd6f4;
} }
#battery.charging { #battery.charging {
color: #cad3f5; color: #cdd6f4;
background-color: #26A65B; background-color: #26A65B;
} }
@keyframes blink { @keyframes blink {
to { to {
background-color: #cad3f5; background-color: #cdd6f4;
} }
} }
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background: #f53c3c; background: #f53c3c;
color: #cad3f5; color: #cdd6f4;
animation-name: blink; animation-name: blink;
animation-duration: 0.5s; animation-duration: 0.5s;
animation-timing-function: linear; animation-timing-function: linear;
@ -82,11 +82,11 @@ window#waybar.hidden {
} }
#cpu { #cpu {
background: #a6da95; background: #a6e3a1;
} }
#memory { #memory {
background: #c6a0f6; background: #cba6f7;
} }
#backlight { #backlight {
@ -94,12 +94,16 @@ window#waybar.hidden {
} }
#network { #network {
background: #f5a97f; background: #fab387;
} }
#disk { #disk {
background: #2980b9; background: #2980b9;
color: #cad3f5; color: #cdd6f4;
}
#bluetooth {
background: #74c7ec;
} }
@ -108,7 +112,7 @@ window#waybar.hidden {
} }
#pulseaudio { #pulseaudio {
background: #eed49f; background: #f9e2af;
color: #000000; color: #000000;
} }
@ -152,7 +156,7 @@ window#waybar.hidden {
} }
#custom-notification { #custom-notification {
color: #1e2030; color: #181825;
background-color: #8bd5ca; background-color: #94e2d5;
} }
'' ''

View file

@ -5,7 +5,7 @@
height = 27; height = 27;
fixed-center = true; fixed-center = true;
modules-left = [ modules-left = [
"wlr/workspaces" "hyprland/workspaces"
"custom/notification" "custom/notification"
"tray" "tray"
]; ];
@ -17,6 +17,7 @@
"memory" "memory"
"pulseaudio" "pulseaudio"
"network" "network"
"bluetooth"
"clock" "clock"
]; ];
@ -50,10 +51,13 @@
escape = true; escape = true;
}; };
"wlr/workspaces" = { "hyprland/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";
@ -107,9 +111,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,7 +142,7 @@
format-charging = " {capacity}%"; format-charging = " {capacity}%";
format-plugged = " {capacity}%"; format-plugged = " {capacity}%";
format-alt = "{icon}{time}"; format-alt = "{icon}{time}";
format-icoms = [" " " " " " " " " "]; format-icons = [" " " " " " " " " "];
}; };
"network" = { "network" = {
@ -152,6 +156,15 @@
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}%";
@ -173,4 +186,3 @@
}; };
}; };
} }

View file

@ -1,35 +1,42 @@
{ {self, ...}: let
nixpkgs, # get inputs from self
self, inherit (self) inputs;
outputs, # get necessary inputs from self.inputs
... inherit (inputs) nixpkgs;
}: let inherit (inputs.home-manager.nixosModules) home-manager;
inputs = self.inputs; # get lib from nixpkgs and create and alias for lib.nixosSystem
# for potential future overrides & abstractions
inherit (nixpkgs) lib;
mkSystem = lib.nixosSystem;
home-manager = inputs.home-manager.nixosModules.home-manager; home = ../homes;
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 {
nixbox = nixpkgs.lib.nixosSystem { "watermelon" = mkSystem {
specialArgs = {inherit inputs outputs;}; specialArgs = commonArgs;
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
./nixbox/configuration.nix ./watermelon/configuration.nix
# use the nixos-module for home-manager # use the nixos-module for home-manager
home-manager home-manager
homes home
]; ];
}; };
nixpad = nixpkgs.lib.nixosSystem { "sunfish" = mkSystem {
specialArgs = {inherit inputs outputs;}; specialArgs = commonArgs;
modules = [ modules = [
# this list defines which files will be imported to be used as "modules" in the system config ./sunfish/configuration.nix
./nixpad/configuration.nix
# use the nixos-module for home-manager
home-manager home-manager
homes home
]; ];
}; };
} }

View file

@ -1,219 +0,0 @@
# 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

@ -1,199 +0,0 @@
# 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

@ -0,0 +1,184 @@
# 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

@ -12,23 +12,24 @@
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_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/c694a72f-2faa-49f3-813f-b9b552143088"; device = "/dev/disk/by-uuid/8050c8ec-0625-498d-99f6-198d58f65c79";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot/efi" = { fileSystems."/efi" = {
device = "/dev/disk/by-uuid/BA8E-DAAA"; device = "/dev/disk/by-uuid/4EAD-75BA";
fsType = "vfat"; fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
}; };
swapDevices = [ swapDevices = [
{device = "/dev/disk/by-uuid/f30ab1ac-66a5-4389-b4fe-a52f53255ec6";} {device = "/dev/disk/by-uuid/1a21fac9-5a8e-4ae1-ae44-5049211d56fc";}
]; ];
# 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
@ -37,8 +38,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,204 @@
# 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

@ -13,18 +13,22 @@
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/79fd353d-4e05-44fd-9e10-e57b08c140f0"; { device = "/dev/disk/by-uuid/82b7f887-2059-45ae-9bdd-60082718d922";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot/efi" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/AA53-B6CE"; { device = "/dev/disk/by-uuid/C630-E94C";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = swapDevices =
[ { device = "/dev/disk/by-uuid/92e64b37-f558-4333-bfb0-0e4bfe6e91c0"; } [ { device = "/dev/disk/by-uuid/3ce61b0c-691d-4452-93f2-e64e4b926f30"; }
]; ];
# 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

15
misc/scripts/lidclose.sh Executable file
View file

@ -0,0 +1,15 @@
#!/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

3
misc/scripts/lidopen.sh Executable file
View file

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

BIN
misc/wallpapers/ibm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View file

@ -1,6 +0,0 @@
# 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

@ -1,6 +0,0 @@
# 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;
}

View file

@ -1,9 +0,0 @@
# 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;
})

View file

@ -1,5 +0,0 @@
# 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 { };
}

View file

@ -1,9 +0,0 @@
# 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];
};
}