Compare commits

...

46 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
ea3485f5c5
Add window rule for PiP windows 2023-09-10 13:30:39 +01:00
bfadf34dd4
Add wallpapers to config 2023-09-10 13:30:19 +01:00
cdb3431ed0
Update packages
+ mpv
2023-09-07 20:59:13 +01:00
0f4faf77fc
Fix hyprland not updating 2023-09-07 20:58:33 +01:00
a9c21fd9c5
Update README 2023-09-07 17:06:06 +01:00
ee3cff93b1
Update packages 2023-09-07 17:06:00 +01:00
59a23ad6ff
Update packages
+ wiki-tui
+ calcurse
+ spotify-tui
+ youtube-tui
2023-09-07 14:29:56 +01:00
47d826abe1
Format hyprland.nix 2023-09-07 14:29:40 +01:00
93ea6a87d8
Update monitors config 2023-09-07 14:29:28 +01:00
ea59727240
Update home packages
+ lua
+ flutter (inc dart)
- dart
2023-09-05 19:16:10 +01:00
65f87f22b5
Reconfig waybar 2023-09-05 19:01:24 +01:00
36 changed files with 2496 additions and 2355 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

@ -1,8 +1,8 @@
<h1>
floppydisk's dotfiles
floppydisk's dotfiles<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">
</a>
<a href="https://github.com/floppydisk05/dotfiles/">
@ -22,17 +22,18 @@
- **Editor:** [neovim](https://github.com/neovim/neovim/) / [VScode](https://code.visualstudio.com/)
- **File Manager:** [Dolphin](https://github.com/KDE/dolphin)
## Main Applications
- **Browser:** [Mozilla Firefox Developer Edition](https://www.mozilla.org/en-US/firefox/developer/)
- **E-mail:** [Mozilla Thunderbird](https://www.thunderbird.net/en-US/)
- **Media:** [VLC Media Player](https://www.videolan.org/) / [Plexamp](https://www.plex.tv/plexamp/)
# 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.
## Credits
- **[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)

2979
flake.lock

File diff suppressed because it is too large Load diff

127
flake.nix
View file

@ -1,103 +1,66 @@
{
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 = {
self,
nixpkgs,
home-manager,
hyprland,
...
} @ inputs: let
inherit (self) outputs;
}: let
forAllSystems = nixpkgs.lib.genAttrs [
"aarch64-linux"
"i686-linux"
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
#"i686-linux"
#"aarch64-darwin"
#"x86_64-darwin"
];
in rec {
# Your custom packages
# Acessible through 'nix build', 'nix shell', etc
packages = forAllSystems (
system: let
pkgs = nixpkgs.legacyPackages.${system};
in
import ./pkgs {inherit pkgs;}
);
# Devshell for bootstrapping
# Acessible through 'nix develop' or 'nix-shell' (legacy)
in {
# Entrypoint for NixOS configurations
nixosConfigurations = import ./hosts {inherit self;};
# devshells that are provided by this flake
# adding more packages to buildInputs makes them available
# while inside the devshell - enetered via `nix develop`
devShells = forAllSystems (
system: let
pkgs = nixpkgs.legacyPackages.${system};
in
import ./shell.nix {inherit pkgs;}
in {
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
# overlays = import ./overlays {inherit inputs;}; # TODO: only use overlays when you understand what tthey do
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
};
# 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;
inputs = {
# Nixpkgs (unstable)
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# NixOS configuration entrypoint
# Available through 'nixos-rebuild --flake .#your-hostname'
nixosConfigurations = import ./hosts {inherit nixpkgs self outputs;};
# Home manager
home-manager.url = "github:nix-community/home-manager/";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# 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
];
};
# 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,
self,
outputs,
config,
...
}: {
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
extraSpecialArgs = {
inherit inputs self outputs;
inherit inputs self;
};
users = {
# TODO: "base" user that will be used by default is there is no defined
# home directory for the user
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,217 +1,29 @@
# This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
{
inputs,
pkgs,
lib,
...
}: {
# You can import other home-manager modules here
imports = [
# If you want to use modules your own flake exports (from modules/home-manager):
# outputs.homeManagerModules.example
# 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
./packages.nix # home.packages and similar stuff
./nvf.nix
./ssh.nix
./git.nix
];
home = {
username = "floppydisk";
homeDirectory = "/home/floppydisk";
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
# 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
];
};
# Add stuff for your user as you see fit:
programs = {
# Enable home-manager
home-manager.enable = true;
# Enable z-shell
zsh = {
enable = true;
shellAliases = {
ls = "lsd";
ll = "ls -l";
la = "ls -la";
};
history = {
size = 10000;
path = "$HOME/.config/zsh/history";
};
oh-my-zsh = {
enable = true;
plugins = [
"git"
"thefuck"
];
custom = "$HOME/.oh-my-custom";
theme = "powerlevel10k/powerlevel10k";
};
plugins = [
{
name = "powerlevel10k";
src = pkgs.zsh-powerlevel10k;
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
}
];
initExtra = ''
source ~/.p10k.zsh
'';
};
# enable git and configure users
git = {
enable = true;
userName = "Frankie B.";
userEmail = "git@diskfloppy.me";
extraConfig = {
# Sign all commits using ssh key
commit.gpgsign = true;
gpg.format = "ssh";
user.signingkey = "~/.ssh/id_ed25519.pub";
init.defaultBranch = "master";
};
};
irssi = {
enable = true;
networks = {
znc = {
nick = "floppydisk";
server = {
address = "irc.nick99nack.com";
port = 8888;
autoConnect = true;
ssl.enable = false;
};
};
};
};
file.".config/lockonsleep/config.sh".source = ./lock.sh;
file.".config/hypr/hyprpaper.conf".text = ''
preload = ${/. + ../../misc/wallpapers/oneshot-1.jpg}
wallpaper = ,${/. + ../../misc/wallpapers/oneshot-1.jpg}
splash = false
'';
};
wayland.windowManager.hyprland = {
enable = true;
systemdIntegration = true;
systemd.enable = true;
settings = import ./hyprland.nix;
};
@ -221,9 +33,73 @@
style = import ./waybar-style.nix;
};
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
services.udiskie.enable = true;
services.arrpc.enable = true;
programs.zsh = {
enable = true;
shellAliases = {
ls = "lsd";
ll = "ls -l";
la = "ls -la";
};
history = {
size = 10000;
path = "$HOME/.config/zsh/history";
};
oh-my-zsh = {
enable = true;
plugins = [
"git"
# "thefuck"
];
custom = "$HOME/.oh-my-custom";
#theme = "powerlevel10k/powerlevel10k";
};
plugins = [
{
name = "powerlevel10k";
src = pkgs.zsh-powerlevel10k;
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
}
];
initExtra = ''
source ~/.p10k.zsh
'';
};
programs.git = {
enable = true;
userName = "Frankie B.";
userEmail = "git@diskfloppy.me";
extraConfig = {
# commit.gpgsign = true;
# gpg.format = "ssh";
# user.signingkey = "~/.ssh/id_ed25519.pub";
init.defaultBranch = "master";
};
};
programs.irssi = {
enable = true;
networks = {
znc = {
nick = "floppydisk";
server = {
address = "irc.nick99nack.com";
port = 8888;
autoConnect = true;
ssl.enable = false;
};
};
};
};
# let HM manage itself when in standalone mode
programs.home-manager.enable = true;
# Nicely reload system(d) units when changing configs
systemd.user.startServices = lib.mkDefault "sd-switch";
# 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,11 +10,20 @@
"waybar"
"swaync"
"1password --silent"
"blueman-applet"
];
monitor = [
"DP-1,1600x900,0x0,1"
"HDMI-A-1,1280x1024,1600x0,1"
monitor = [];
windowrulev2 = [
"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 = {
@ -28,33 +37,30 @@
gaps_in = 5;
gaps_out = 20;
border_size = 2;
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
"col.inactive_border" = "rgba(595959aa)";
"col.active_border" = "rgb(f38ba8)";
"col.inactive_border" = "rgb(313244)";
layout = "dwindle";
};
decoration = {
blur = {
enabled = true;
size = 3;
passes = 1;
new_optimizations = 1;
enabled = true;
size = 3;
passes = 1;
new_optimizations = 1;
};
drop_shadow = "yes";
shadow_range = 20;
shadow_render_power = 5;
"col.shadow" = "rgba(1a1a1aee)";
drop_shadow = "no";
};
animations = {
enabled = true;
animation = [
"windows, 1, 7, default"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
"windows, 1, 7, default"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
];
};
@ -63,16 +69,17 @@
preserve_split = "yes";
};
master = {
new_is_master = true;
};
gestures = {
workspace_swipe = false;
};
"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 = [
# mouse binds
"ALT,mouse:272,movewindow"
@ -88,6 +95,10 @@
# mute key
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# brightness controls
", XF86MonBrightnessUp, exec, brightnessctl s +20%"
", XF86MonBrightnessDown, exec, brightnessctl s 20%-"
# general shortcuts
"$mod, Q, exec, kitty"
"$mod, C, killactive, "
@ -105,11 +116,14 @@
"$mod SHIFT, K, movewindow, u"
"$mod SHIFT, J, movewindow, d"
# maximize window
"$mod, return, fullscreen, 0"
# screenshot
", Print, exec, grim -l 9 -g \"$(slurp)\" - | wl-copy"
# rofi
"$mod, D, exec, rofi -show drun --show-icons"
# wofi
"$mod, D, exec, wofi --show=drun -G"
# workspace scroll
"$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 = [
inputs.neovim-flake.homeManagerModules.default
inputs.nvf.homeManagerModules.default
];
programs.neovim-flake = {
programs.nvf = {
enable = true;
settings = {
vim = {
@ -63,7 +63,7 @@
enable = true;
fillChar = null;
eolChar = null;
showCurrContext = true;
scope.enabled = true;
};
cursorline = {
enable = true;
@ -78,12 +78,12 @@
};
};
vim.theme = {
enable = true;
name = "onedark";
style = "dark";
transparent = false;
};
#vim.theme = {
# enable = true;
# name = "onedark";
# style = "dark";
#transparent = false;
#};
vim.autopairs.enable = true;
vim.autocomplete = {
@ -92,52 +92,53 @@
};
vim.filetree = {
nvimTree = {
nvimTree = {
enable = true;
openOnSetup = true;
disableNetrw = true;
setupOpts = {
disable_netrw = true;
hijackUnnamedBufferWhenOpening = true;
hijackCursor = true;
hijackDirectories = {
enable = true;
autoOpen = true;
};
git = {
enable = true;
showOnDirs = false;
timeout = 100;
};
view = {
preserveWindowProportions = false;
cursorline = false;
width = {
min = 35;
max = -1;
padding = 1;
hijack_unnamed_buffer_when_opening = true;
hijack_cursor = true;
hijack_directories = {
enable = true;
autoOpen = true;
};
};
renderer = {
indentMarkers.enable = true;
rootFolderLabel = false;
icons = {
modifiedPlacement = "after";
gitPlacement = "after";
show.git = true;
show.modified = true;
git = {
enable = true;
showOnDirs = false;
timeout = 100;
};
};
diagnostics.enable = true;
view = {
cursorline = false;
width = {
min = 35;
max = -1;
padding = 1;
};
};
modified = {
enable = true;
showOnDirs = false;
showOnOpenDirs = true;
renderer = {
indent_markers.enable = true;
root_folder_label = false;
icons = {
modified_placement = "after";
git_placement = "after";
show.git = true;
show.modified = true;
};
};
diagnostics.enable = true;
modified = {
enable = true;
show_on_dirs = false;
show_on_open_dirs = true;
};
};
mappings = {
@ -162,7 +163,7 @@
vim.git = {
enable = true;
gitsigns.enable = true;
gitsigns.codeActions = false;
gitsigns.codeActions.enable = false;
};
vim.minimap = {
@ -210,11 +211,11 @@
noice.enable = true;
smartcolumn = {
enable = true;
columnAt.languages = {
nix = 150;
ruby = 110;
java = 120;
go = [110 150];
setupOpts.custom_colorcolumn = {
nix = "150";
ruby = "110";
java = "120";
go = ["110" "150"];
};
};
};
@ -235,18 +236,18 @@
comment-nvim.enable = true;
};
vim.presence = {
presence-nvim = {
enable = true;
auto_update = true;
image_text = "The Superior Text Editor";
client_id = "793271441293967371";
main_image = "neovim";
rich_presence = {
editing_text = "Editing %s";
};
};
};
#vim.presence = {
# presence-nvim = {
# enable = true;
# auto_update = true;
# image_text = "The Superior Text Editor";
# client_id = "793271441293967371";
# main_image = "neovim";
# rich_presence = {
# 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 {
background: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #1e2030;
color: #181825;
}
window#waybar.hidden {
@ -20,14 +20,14 @@ window#waybar.hidden {
#workspaces button {
padding: 0 5px;
background: transparent;
color: #494d64;
color: #45475a;
border-bottom: 3px solid transparent;
}
#workspaces button.active
#workspaces button.focused {
background-color: #939ab7;
border-bottom: 3px solid #494d64;
background-color: #9399b2;
border-bottom: 3px solid #45475a;
}
#workspaces button.urgent {
@ -39,37 +39,41 @@ window#waybar.hidden {
border-bottom: 3px solid #cad3f5;
}
#custom-notification, #disk, #clock, #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;
margin: 0 2px;
}
#workspaces {
background-color: #cad3f5;
background-color: #cdd6f4;
margin-right: 2px;
padding: 0 10px;
}
#clock {
background-color: #64727D;
padding: 0 10px;
margin-left: 2px;
}
#battery {
background-color: #cad3f5;
background-color: #cdd6f4;
}
#battery.charging {
color: #cad3f5;
color: #cdd6f4;
background-color: #26A65B;
}
@keyframes blink {
to {
background-color: #cad3f5;
background-color: #cdd6f4;
}
}
#battery.critical:not(.charging) {
background: #f53c3c;
color: #cad3f5;
color: #cdd6f4;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
@ -78,11 +82,11 @@ window#waybar.hidden {
}
#cpu {
background: #a6da95;
background: #a6e3a1;
}
#memory {
background: #c6a0f6;
background: #cba6f7;
}
#backlight {
@ -90,12 +94,16 @@ window#waybar.hidden {
}
#network {
background: #f5a97f;
background: #fab387;
}
#disk {
background: #2980b9;
color: #cad3f5;
color: #cdd6f4;
}
#bluetooth {
background: #74c7ec;
}
@ -104,7 +112,7 @@ window#waybar.hidden {
}
#pulseaudio {
background: #eed49f;
background: #f9e2af;
color: #000000;
}
@ -148,7 +156,7 @@ window#waybar.hidden {
}
#custom-notification {
color: #1e2030;
background-color: #8bd5ca;
color: #181825;
background-color: #94e2d5;
}
''

View file

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

View file

@ -1,35 +1,42 @@
{
nixpkgs,
self,
outputs,
...
}: let
inputs = self.inputs;
{self, ...}: let
# get inputs from self
inherit (self) inputs;
# get necessary inputs from self.inputs
inherit (inputs) nixpkgs;
inherit (inputs.home-manager.nixosModules) home-manager;
# 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;
homes = ../homes;
home = ../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 {
nixbox = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs;};
"watermelon" = mkSystem {
specialArgs = commonArgs;
modules = [
# 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
home-manager
homes
home
];
};
nixpad = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs;};
"sunfish" = mkSystem {
specialArgs = commonArgs;
modules = [
# 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
./sunfish/configuration.nix
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")
];
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.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/c694a72f-2faa-49f3-813f-b9b552143088";
device = "/dev/disk/by-uuid/8050c8ec-0625-498d-99f6-198d58f65c79";
fsType = "ext4";
};
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/BA8E-DAAA";
fileSystems."/efi" = {
device = "/dev/disk/by-uuid/4EAD-75BA";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
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
@ -37,8 +38,8 @@
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.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";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
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.extraModulePackages = [ ];
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
services.blueman.enable = true;
fileSystems."/" =
{ device = "/dev/disk/by-uuid/79fd353d-4e05-44fd-9e10-e57b08c140f0";
{ device = "/dev/disk/by-uuid/82b7f887-2059-45ae-9bdd-60082718d922";
fsType = "ext4";
};
fileSystems."/boot/efi" =
{ device = "/dev/disk/by-uuid/AA53-B6CE";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/C630-E94C";
fsType = "vfat";
};
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

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

BIN
misc/wallpapers/oneshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

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];
};
}