diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index e69de29..31f728a --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,5 @@ +ISSUES/ +secrets/ + +result +rebuild*.log diff --git a/INSPIRATION b/INSPIRATION deleted file mode 100644 index 2c5adf0..0000000 --- a/INSPIRATION +++ /dev/null @@ -1,8 +0,0 @@ -Godlike - https://github.com/end-4/dots-hyprland - -Gorgeous - https://github.com/prasanthrangan/hyprdots - -Very nice - https://github.com/linuxmobile/hyprland-dots diff --git a/README.md b/README.md old mode 100755 new mode 100644 index ce2a13b..36d887e --- a/README.md +++ b/README.md @@ -1,11 +1,8 @@ +## My NixOS Flake ### Philosophy -I try to use Home Manager as little as possible. When I first started with NixOS I found -it distracting and confusing. NixOS already handles system wide and user packages, so having -another user level package management method was baffling. Obviously I understand now how -it can be useful (so I do use it). But where possible I will instead use the functionality -of Nix rather than Home Manager. +> [!TODO] My philosophy has kinda changed since the beginning -###### Structuring Modules +### Repo Structure Modules are organised into groups (ie "Core"), from here a module is structured as either: 1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative 2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix` @@ -13,15 +10,19 @@ that simply imports one of the implementations. For the `sound` example I curren to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely I do in future. +### Security Considerations +###### Hashing +For services where password hashing is done infrequently (ie my forgejo instance with signups disabled) +use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred. ### TODO -There are a lot of `TODO` items in this repository. To improve these dotfiles -I should run a command to find files containing "TODO" and then implement the -recommendation I left behind :) +There are a lot of commented `# TODO: ...` items in this repository. +All (most) of my commented directives can be found via this pattern: +```sh +grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null +``` - - -##### Small Explanation of Fonts +### Random Explanation of Fonts There are four types of fonts (to my knowledge at least): 1. serif (funny squigles / small elegant strokes included) 2. sans-serif (meaning "without serifs") @@ -33,19 +34,9 @@ Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font For finding a font for programming I highly recommend trying https://www.codingfont.com/ -### My config - -Font: -Iosevka nerd font set as default/prefered font -Terminal uses IosevkaTerm nerd font - -Home-Manager: -I just to use home-manager standalone and not as a NixOS module, thus allowing -my dotfiles to also work on non-NixOS systems. - - - -### Explaining my Vision with r/unixporn posts +### Links +#### Inspiration +##### Explaining my Vision with r/unixporn posts I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/ but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right! @@ -64,22 +55,29 @@ Their window decorations and bar are great, also being able to hide everything u https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/ If their colour scheme was a little less white I'd love it but overall one of my favourites every +##### Other Inspiring Shtuff +1. https://github.com/sabrehagen/desktop-environment -### Wallpaper Sources +#### Wallpaper Sources 1. https://www.wallpaperflare.com/ 2. https://alphacoders.com especially this one person: https://alphacoders.com/users/profile/69089/robokoboto and also the lofi category: https://alphacoders.com/lofi +#### Teach Yourself Nix +1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles) + Really good security oriented NixOS stuff +2. https://jade.fyi/blog/flakes-arent-real/ + Interesting blog post on using flakes -### Credits +#### Credits 1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles -The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. + The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured. 2. https://github.com/Misterio77/nix-starter-configs -Really great starter config for learning how parts interact and how to generally structure flakes + Really great starter config for learning how parts interact and how to generally structure flakes 3. https://nixos.wiki/wiki/Fonts -Wiki page explaining how to install fonts and nerd fonts on NixOS + Wiki page explaining how to install fonts and nerd fonts on NixOS 4. https://github.com/adi1090x/rofi -For the Rofi theme + For the Rofi theme 5. https://github.com/zDyanTB/HyprNova -For the really cool hyprlock theme + For the really cool hyprlock theme diff --git a/TODO b/TODO deleted file mode 100644 index d91cb7b..0000000 --- a/TODO +++ /dev/null @@ -1,88 +0,0 @@ -Get Utilities: -1. httpie -2. curlie -3. zoxide -4. doggo - -1. Get helix editor -2. Custom helix -3. Complete helix tutorial - -Get nixcord working -Get thunar working -Set a GTK theme & icon theme -Get better wallpapers -Get hyprcursor working with Bibata-Modern-Ice - -Get a GRUB theme working -Get SDDM and a theme working - - - - -Get waybar (or another bar) working - - -Overtime just install more programs that I need regularly: ie -- btop/htop/etc - - -Get a QT theme - -Fix pipewire audio sometimes working and sometimes not :( - -Bind new terminal to SUPER+Enter instead of SUPER+Q - -Join Rio Terminal's discord and ask if they support nerdfonts or if I'm doing something wrong - -Figure out how to modularise my dotfiles - - -Change Dell loading screen (Boot Graphics Resource Table, aka BGRT) - -Get GTK Bibata Cursors to be the same size as my system cursor - - - -Fix: your 131072x1 screen size is bogus. expect trouble - - - -Search for all "TODO" items in my nix dotfiles - -Push nixdots to github - - - - -Check out the Ekala Project (I joined their discord server) - - -Create a program that enables/disables passwordless sudo access - (add to github too) - -Learn to package my own home-manager modules - - - - -Ideal Features: -1. AI assistant -2. searching can also be used to calculate stuff (like I do on my iPad) - - - - -Fork nixcord and fix documentation (the installation is confusing) -But firstly the first code snippet is wrong... -```nix -inputs.nixcord = { - url = "github:kaylorben/nixcord" -}; -``` -Should actually be -```nix -inputs.nixcord = { - url = "github:kaylorben/nixcord"; # dont forget the semicolon -}; -``` diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..52635fc --- /dev/null +++ b/TODO.md @@ -0,0 +1,10 @@ +- [ ] Update the README.md +- [ ] switch ssh keys to ECC (fuck RSA) + +- [ ] migrate forge.dobutterfliescry.net -> tearforge.net +- [ ] rename forgejo user to git +- [ ] setup my own VPN +- [ ] connect match to my VPN +- [ ] use matcha to build stuff instead of using my laptop + +- [ ] make `ceru` do local and remote deployments diff --git a/deploy b/deploy deleted file mode 100755 index b72232d..0000000 --- a/deploy +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -sudo nixos-rebuild switch --flake . -#nixos-rebuild build --flake .# --cores 8 -j 1 diff --git a/flake.lock b/flake.lock old mode 100755 new mode 100644 index 4f9c813..26fea2d --- a/flake.lock +++ b/flake.lock @@ -1,84 +1,91 @@ { "nodes": { - "ags": { + "cerulean": { "inputs": { - "nixpkgs": "nixpkgs", - "systems": "systems" - }, - "locked": { - "lastModified": 1728326430, - "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", - "owner": "Aylur", - "repo": "ags", - "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", - "type": "github" - }, - "original": { - "owner": "Aylur", - "repo": "ags", - "type": "github" - } - }, - "ags_2": { - "inputs": { - "nixpkgs": "nixpkgs_4", - "systems": "systems_3" - }, - "locked": { - "lastModified": 1728326430, - "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", - "owner": "Aylur", - "repo": "ags", - "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", - "type": "github" - }, - "original": { - "owner": "Aylur", - "repo": "ags", - "type": "github" - } - }, - "aquamarine": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], + "deploy-rs": "deploy-rs", + "home-manager": "home-manager", + "microvm": "microvm", "nixpkgs": [ - "hyprland", "nixpkgs" ], + "nt": [ + "nt" + ], "systems": [ - "hyprland", "systems" ] }, "locked": { - "lastModified": 1730968822, - "narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=", - "owner": "hyprwm", - "repo": "aquamarine", - "rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14", + "lastModified": 1771194110, + "narHash": "sha256-x6rijGWmPL5FTpkr+8vpcKKCOT33QHEV8bP6ibEAXFE=", + "owner": "cry128", + "repo": "Cerulean", + "rev": "d527937829dec0f410f126a2f85e374cb99a2fbb", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "aquamarine", + "owner": "cry128", + "repo": "Cerulean", "type": "github" } }, + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": [ + "cerulean", + "nixpkgs" + ], + "utils": "utils" + }, + "locked": { + "lastModified": 1766051518, + "narHash": "sha256-znKOwPXQnt3o7lDb3hdf19oDo0BLP4MfBOYiWkEHoik=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "d5eff7f948535b9c723d60cd8239f8f11ddc90fa", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, + "dobutterfliescry-net": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-unstable": [ + "nixpkgs-unstable" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1770947070, + "narHash": "sha256-g/l/iUET/M+nSrXlwYF2e0KeKqgGpjy3qhwQY4tG62A=", + "ref": "refs/heads/main", + "rev": "4fc28bfb4f95071d34184c7ba3153eaff87eba41", + "revCount": 121, + "type": "git", + "url": "https://forge.dobutterfliescry.net/cry/site" + }, + "original": { + "type": "git", + "url": "https://forge.dobutterfliescry.net/cry/site" + } + }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -89,82 +96,70 @@ }, "flake-compat_2": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" }, "original": { "type": "tarball", "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" } }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "gitignore": { + "flake-parts": { "inputs": { - "nixpkgs": [ - "hyprland", - "pre-commit-hooks", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nt", + "nix-unit", "nixpkgs" ] }, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "repo": "flake-parts", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", "type": "github" }, "original": { "owner": "hercules-ci", - "repo": "gitignore.nix", + "repo": "flake-parts", "type": "github" } }, "grub2-themes": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1730004881, - "narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=", + "lastModified": 1757136219, + "narHash": "sha256-tKU+vq34KHu/A2wD7WdgP5A4/RCmSD8hB0TyQAUlixA=", "owner": "vinceliuice", "repo": "grub2-themes", - "rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f", + "rev": "80dd04ddf3ba7b284a7b1a5df2b1e95ee2aad606", "type": "github" }, "original": { @@ -176,244 +171,190 @@ "home-manager": { "inputs": { "nixpkgs": [ + "cerulean", "nixpkgs" ] }, "locked": { - "lastModified": 1730633670, - "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=", + "lastModified": 1770260404, + "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", "owner": "nix-community", "repo": "home-manager", - "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661", + "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-25.11", "repo": "home-manager", "type": "github" } }, - "hyprcursor": { + "home-manager_2": { "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], "nixpkgs": [ - "hyprland", "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" ] }, "locked": { - "lastModified": 1728669738, - "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "0264e698149fcb857a66a53018157b41f8d97bb0", + "lastModified": 1770260404, + "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprcursor", + "owner": "nix-community", + "ref": "release-25.11", + "repo": "home-manager", "type": "github" } }, - "hyprland": { - "inputs": { - "aquamarine": "aquamarine", - "hyprcursor": "hyprcursor", - "hyprland-protocols": "hyprland-protocols", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_3", - "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1730969692, - "narHash": "sha256-4Ly9zkqnRB6qLjMeddfUyd4iRLvq+RDspBWABS8DGN4=", - "owner": "hyprwm", - "repo": "Hyprland", - "rev": "e58e97b0a38b8ccc87a4304c9e4e2b37c9966875", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "Hyprland", - "type": "github" - } - }, - "hyprland-protocols": { + "microvm": { "inputs": { "nixpkgs": [ - "hyprland", + "cerulean", "nixpkgs" ], - "systems": [ - "hyprland", - "systems" - ] + "spectrum": "spectrum" }, "locked": { - "lastModified": 1728345020, - "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "a7c183800e74f337753de186522b9017a07a8cee", + "lastModified": 1770310890, + "narHash": "sha256-lyWAs4XKg3kLYaf4gm5qc5WJrDkYy3/qeV5G733fJww=", + "owner": "microvm-nix", + "repo": "microvm.nix", + "rev": "68c9f9c6ca91841f04f726a298c385411b7bfcd5", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1728168612, - "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprpanel": { - "inputs": { - "ags": "ags_2", - "nixpkgs": "nixpkgs_5" - }, - "locked": { - "lastModified": 1731270736, - "narHash": "sha256-N0unlLf/7BqkrYx3BO9svv1+oLzKpArgiqLzkmNpD3Q=", - "owner": "Jas-SinghFSU", - "repo": "HyprPanel", - "rev": "a7855baf13c6abdd0b0e988e4390112cd7deda67", - "type": "github" - }, - "original": { - "owner": "Jas-SinghFSU", - "repo": "HyprPanel", - "type": "github" - } - }, - "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1730968903, - "narHash": "sha256-zFvzLXcSm0Ia4XI1SE4FQ9KE63hlGrRWhLtwMolWuR8=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "3ce0cde8709cdacbfba471f8e828433b58a561e9", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1726874836, - "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", + "owner": "microvm-nix", + "repo": "microvm.nix", "type": "github" } }, "nix-flatpak": { "locked": { - "lastModified": 1711997201, - "narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=", + "lastModified": 1767983141, + "narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=", "owner": "gmodena", "repo": "nix-flatpak", - "rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd", + "rev": "440818969ac2cbd77bfe025e884d0aa528991374", "type": "github" }, "original": { "owner": "gmodena", - "ref": "v0.4.1", + "ref": "latest", "repo": "nix-flatpak", "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737420293, + "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-unit": { + "inputs": { + "flake-parts": "flake-parts_2", + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "nt", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1762774186, + "narHash": "sha256-hRADkHjNt41+JUHw2EiSkMaL4owL83g5ZppjYUdF/Dc=", + "owner": "nix-community", + "repo": "nix-unit", + "rev": "1c9ab50554eed0b768f9e5b6f646d63c9673f0f7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-unit", + "type": "github" + } + }, "nixcord": { "inputs": { "flake-compat": "flake-compat_2", - "nixpkgs": "nixpkgs_6" + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1730720546, - "narHash": "sha256-5147A6X0MH6u/YDxLe+Nnva3oxfLQanC716LarG/uoo=", - "owner": "kaylorben", + "lastModified": 1770943752, + "narHash": "sha256-3vWAy2BCP5liaCEKmeqeVWbTCF/JnukgMOg8qf8mCcg=", + "owner": "FlameFlag", "repo": "nixcord", - "rev": "e3e27c77316f7526b1a846778ae9c759c9377611", + "rev": "aa1626057e57eca3686fbc1c3e2ddfde884c6b2a", "type": "github" }, "original": { - "owner": "kaylorben", + "owner": "FlameFlag", "repo": "nixcord", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1725634671, - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", + "lastModified": 1770770419, + "narHash": "sha256-iKZMkr6Cm9JzWlRYW/VPoL0A9jVKtZYiU4zSrVeetIs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6c5e707c6b5339359a9a9e215c5e66d6d802fd7a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "72716169fe93074c333e8d0173151350670b824c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1770841267, + "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", + "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", "type": "github" }, "original": { @@ -423,259 +364,73 @@ "type": "github" } }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { - "lastModified": 1730808093, - "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "master", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1725634671, - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1729880355, - "narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "18536bf04cd71abd345f9579158841376fdd0c5a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1730768919, - "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1730200266, - "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "pre-commit-hooks": { + "nt": { "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" + "nix-unit": "nix-unit", + "nixpkgs": "nixpkgs_2", + "systems": "systems_2" }, "locked": { - "lastModified": 1730814269, - "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "d70155fdc00df4628446352fc58adc640cd705c2", + "lastModified": 1770975056, + "narHash": "sha256-ZXTz/P3zUbbM6lNXzt91u8EwfNqhXpYMu8+wvFZqQHE=", + "owner": "cry128", + "repo": "nt", + "rev": "f42dcdd49a7921a7f433512e83d5f93696632412", "type": "github" }, "original": { - "owner": "cachix", - "repo": "git-hooks.nix", + "owner": "cry128", + "repo": "nt", "type": "github" } }, "root": { "inputs": { - "ags": "ags", + "cerulean": "cerulean", + "dobutterfliescry-net": "dobutterfliescry-net", "grub2-themes": "grub2-themes", - "home-manager": "home-manager", - "hyprland": "hyprland", - "hyprpanel": "hyprpanel", + "home-manager": "home-manager_2", "nix-flatpak": "nix-flatpak", "nixcord": "nixcord", - "nixpkgs": "nixpkgs_7", - "spicetify-nix": "spicetify-nix", - "swww": "swww" + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable", + "nt": "nt", + "systems": "systems_3" } }, - "spicetify-nix": { - "inputs": { - "flake-compat": "flake-compat_3", - "nixpkgs": [ - "nixpkgs" - ] - }, + "spectrum": { + "flake": false, "locked": { - "lastModified": 1730780158, - "narHash": "sha256-ZJkCFn4PL49rINz7xrjlBqw9nF8wWJE7fSVqbHlCWSA=", - "owner": "Gerg-L", - "repo": "spicetify-nix", - "rev": "2791c6662002731d3dfc00312307aef547e1c8be", - "type": "github" + "lastModified": 1759482047, + "narHash": "sha256-H1wiXRQHxxPyMMlP39ce3ROKCwI5/tUn36P8x6dFiiQ=", + "ref": "refs/heads/main", + "rev": "c5d5786d3dc938af0b279c542d1e43bce381b4b9", + "revCount": 996, + "type": "git", + "url": "https://spectrum-os.org/git/spectrum" }, "original": { - "owner": "Gerg-L", - "repo": "spicetify-nix", - "type": "github" - } - }, - "swww": { - "inputs": { - "flake-compat": "flake-compat_4", - "nixpkgs": "nixpkgs_8", - "utils": "utils" - }, - "locked": { - "lastModified": 1730424990, - "narHash": "sha256-+8YUJsNzvgAeZYLfbHYfYlad/iS+6Eec/LWzL1ZIGfY=", - "owner": "LGFae", - "repo": "swww", - "rev": "0db3f4eb192f1c9bf914efcc1d2aba809da5d78a", - "type": "github" - }, - "original": { - "owner": "LGFae", - "repo": "swww", - "type": "github" + "type": "git", + "url": "https://spectrum-os.org/git/spectrum" } }, "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -690,62 +445,73 @@ "type": "github" } }, - "utils": { - "inputs": { - "systems": "systems_4" - }, + "systems_2": { "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "xdph": { - "inputs": { - "hyprland-protocols": [ - "hyprland", - "hyprland-protocols" - ], - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, + "systems_3": { "locked": { - "lastModified": 1730743262, - "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nt", + "nix-unit", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762410071, + "narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "97a30861b13c3731a84e09405414398fbf3e109f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", "type": "github" } } diff --git a/flake.nix b/flake.nix old mode 100755 new mode 100644 index 138b629..2e7b315 --- a/flake.nix +++ b/flake.nix @@ -1,77 +1,55 @@ { - description = "Emile's Nix Dotfiles"; + description = "im gonna cry again ;-;"; inputs = { - #nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + systems.url = "github:nix-systems/default"; + + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { - url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; - spicetify-nix = { - url = "github:Gerg-L/spicetify-nix"; + nt.url = "github:cry128/nt"; + # nt.url = "/home/me/cry/mk/nt"; + + cerulean = { + url = "github:cry128/Cerulean"; + # url = "/home/me/cry/mk/Cerulean"; + inputs = { + systems.follows = "systems"; + nixpkgs.follows = "nixpkgs"; + nt.follows = "nt"; + }; + }; + + nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; + grub2-themes = { + url = "github:vinceliuice/grub2-themes"; inputs.nixpkgs.follows = "nixpkgs"; }; - nixcord.url = "github:kaylorben/nixcord"; - - grub2-themes.url = "github:vinceliuice/grub2-themes"; - - # is this necessary? (aren't I enabling it in `configuration.nix` anyways?) - hyprland.url = "github:hyprwm/Hyprland"; - - swww.url = "github:LGFae/swww"; - - # TODO: declarative flatpak management - nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; - - ags.url = "github:Aylur/ags"; - - hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; - }; - - outputs = { - self, - nixpkgs, - home-manager, - hyprland, - grub2-themes, - nixcord, - ... - } @ inputs: let - system = "x86_64-linux"; - - pkgs = import nixpkgs { - inherit system; - config.allowUnfree = true; + nixcord = { + url = "github:FlameFlag/nixcord"; + inputs.nixpkgs.follows = "nixpkgs"; }; - # this is just something I'm experimenting with - PROJECT_ROOT = builtins.toString ./.; - in { - nixosConfigurations = { - # i be on my puter fr - myputer = nixpkgs.lib.nixosSystem { - # nix passes these to every single module above - specialArgs = {inherit inputs pkgs;}; - - modules = [ - ./hosts/myputer - grub2-themes.nixosModules.default - ]; - }; - - # my laptop 0w0 - lolcathost = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs pkgs;}; - - modules = [ - ./hosts/lolcathost - grub2-themes.nixosModules.default - ]; + dobutterfliescry-net = { + url = "git+https://forge.dobutterfliescry.net/cry/site"; + inputs = { + nixpkgs.follows = "nixpkgs"; + nixpkgs-unstable.follows = "nixpkgs-unstable"; + systems.follows = "systems"; }; }; }; + + nixConfig = { + extra-experimental-features = "pipe-operators"; + }; + + outputs = inputs: + import ./snow.nix inputs; } diff --git a/groups/all/default.nix b/groups/all/default.nix new file mode 100644 index 0000000..a636196 --- /dev/null +++ b/groups/all/default.nix @@ -0,0 +1,63 @@ +{ + pkgs, + lib, + ... +}: { + imports = [ + ./modules/flatpak.nix + ]; + + # NOTE: mkDefault is 1000 and mkForce is 50 + # NOTE: so this is like a second mkDefault + security.sudo.wheelNeedsPassword = lib.mkDefault true; + + networking = { + networkmanager.enable = true; + + nftables.enable = true; + firewall.enable = lib.mkDefault true; + + # Use CloudFlare's WARP+ 1.1.1.1 DNS service + nameservers = [ + "1.1.1.1" + "1.0.0.1" + ]; + }; + + programs.nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 7d --keep 3"; + flake = "/home/me/flake"; # sets NH_OS_FLAKE variable for you + }; + + nix.settings = { + # make wheel group trusted users allows my "ae" user + # to import packages not signed by a trusted key + # (aka super duper easier to remote deploy) + trusted-users = ["root" "@wheel"]; + experimental-features = [ + "nix-command" + "flakes" + "pipe-operators" + ]; + download-buffer-size = 524288000; # 500 MiB + }; + + time.timeZone = lib.mkDefault "Australia/Brisbane"; + + i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + users.defaultUserShell = pkgs.bash; + + environment.systemPackages = with pkgs; [ + git + vim + wget + tree + ]; +} diff --git a/groups/all/modules/flatpak.nix b/groups/all/modules/flatpak.nix new file mode 100644 index 0000000..fbc2b38 --- /dev/null +++ b/groups/all/modules/flatpak.nix @@ -0,0 +1,12 @@ +{...}: { + services.flatpak = { + # DEBUG: remotes = [ + # DEBUG: { + # DEBUG: location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; + # DEBUG: name = "flathub"; + # DEBUG: } + # DEBUG: ]; + + # DEBUG: uninstallUnmanaged = true; + }; +} diff --git a/groups/cryde/default.nix b/groups/cryde/default.nix new file mode 100644 index 0000000..02c1be0 --- /dev/null +++ b/groups/cryde/default.nix @@ -0,0 +1,133 @@ +{ + pkgs, + upkgs, + config, + ... +}: { + imports = [ + ./programs.nix + + ../../hosts/modules/bashistrans.nix + ../../hosts/modules/wm/hyprland.nix + ../../hosts/modules/steam.nix + ../../hosts/modules/obsidian.nix + ]; + + boot.loader.grub2-theme = { + enable = true; + # GitHub: vinceliuice/grub2-themes + theme = "whitesur"; # stylish, vimix, or whitesur + footer = true; + customResolution = "1920x1080"; + }; + + services = { + # Set display manager (login screen) + displayManager = { + # sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects + sddm = { + enable = true; + wayland.enable = true; # experimental + theme = "corners"; + }; + defaultSession = + "hyprland" + + ( + if config.programs.hyprland.withUWSM == true + then "-uwsm" + else null + ); + }; + + tumbler.enable = true; # Thunar image thumbnail support + gvfs.enable = true; # Thunar mount, trash, and other functionality + }; + + programs = { + zsh.enable = true; + fish.enable = true; + + nix-ld.enable = true; + + neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + configure = { + customRC = '' + set number + set tabstop=4 + set shiftwidth=4 + ''; + }; + }; + + # Thunar also uses: `services.tumbler` & `services.gvfs` + thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-volman # for removable drives (ie USBs) + thunar-archive-plugin # create and extract archives + thunar-media-tags-plugin # change metadata for media files + ]; + }; + + # mozilla's email client + thunderbird.enable = true; + }; + + # ----- FONTS ----- + fonts = { + enableDefaultPackages = true; # no clue what this line does tbh + packages = with pkgs; + [ + geist-font # for my hyprlock theme + # texlive maintains a noto-emoji flake + texlivePackages.noto-emoji + ] + ++ builtins.filter lib.attrsets.isDerivation ( + builtins.attrValues pkgs.nerd-fonts + ); + + # TODO: change my default fonts + fontconfig = { + defaultFonts = { + serif = ["Geist"]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font + sansSerif = ["Geist"]; + monospace = ["Cousine"]; + emoji = ["Noto Emoji"]; + }; + }; + }; + + # ---- ENVIRONMENT VARIABLES ---- + environment = { + sessionVariables = { + # Hint Electrons apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; + systemPackages = with pkgs; [ + sddm-theme-corners + ]; + }; + + # ------- USERS ------- + users = { + users = { + # literally me fr (personal account) + me = { + isNormalUser = true; + extraGroups = ["wheel" "netdev" "docker"]; + shell = pkgs.bash; + packages = with pkgs; [ + firefox + nitch + starfetch + + gitkraken + ]; + }; + }; + }; +} diff --git a/groups/cryde/programs.nix b/groups/cryde/programs.nix new file mode 100644 index 0000000..09c0a67 --- /dev/null +++ b/groups/cryde/programs.nix @@ -0,0 +1,32 @@ +{ + pkgs, + upkgs, + ... +}: { + # ---- SYSTEM PACKAGES ----- + environment.systemPackages = with pkgs; [ + # User Environment + swww + helvum + easyeffects + pavucontrol + ani-cli + bluetui + wl-clipboard # clipboard for wayland + hyprpicker # color picker + hyprshot # screenshot utility + wl-screenrec # screen recording utility + qbittorrent # torrenting + signal-desktop + kdePackages.gwenview # image viewer + video-trimmer + element-desktop + + # Games + prismlauncher # minecraft + upkgs.olympus # celeste + discord + discordo + upkgs.ekphos + ]; +} diff --git a/groups/cryos/default.nix b/groups/cryos/default.nix new file mode 100644 index 0000000..82699d6 --- /dev/null +++ b/groups/cryos/default.nix @@ -0,0 +1,140 @@ +{ + pkgs, + lib, + ... +}: { + imports = [ + ./programs.nix + ]; + + nixpkgs.config.allowUnfreePredicate = let + whitelist = with pkgs; + map lib.getName [ + discord + steam + steamcmd + steam-unwrapped + + winbox + + obsidian + gitkraken + ]; + in + pkg: builtins.elem (lib.getName pkg) whitelist; + + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + grub = { + efiSupport = true; + device = "nodev"; + # useOSProber = true; + }; + }; + + # Enable initrd hook for virtual console customisation + # aka cool colours when bootting yay!! + console = { + enable = true; + earlySetup = true; # initrd pre hook + keyMap = "us"; + font = "Lat2-Terminus16"; + # ANSI 24-bit color definitions (theme: dracula) + colors = [ + "21222c" + "ff5555" + "50fa7b" + "f1fa8c" + "bd93f9" + "ff79c6" + "8be9fd" + "f8f8f2" + "6272a4" + "ff6e6e" + "69ff94" + "ffffa5" + "d6acff" + "ff92df" + "a4ffff" + "ffffff" + ]; + }; + + hardware = { + graphics = { + enable = true; + enable32Bit = true; + }; + + bluetooth = { + enable = true; + powerOnBoot = true; + }; + }; + + virtualisation.docker.enable = true; + + services = { + # systemd-resolved provides network name resolution + # to local processes via a D-Bus interface. + resolved = { + enable = true; + dnssec = "true"; + domains = ["~."]; + # Use CloudFlare's WARP+ 1.1.1.1 DNS service + fallbackDns = [ + "1.1.1.1#one.one.one.one" + "1.0.0.1#one.one.one.one" + ]; + dnsovertls = "true"; + }; + + # Multimedia Framework + # With backwards compatability for alsa/pulseaudio/jack + pipewire = { + enable = true; + audio.enable = true; + wireplumber.enable = true; + + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + }; + + security = { + rtkit.enable = true; # I *think* this is for pipewire + sudo.wheelNeedsPassword = lib.mkDefault true; + }; + + # ---- ENVIRONMENT VARIABLES ---- + environment = { + # always install "dev" derivation outputs + extraOutputsToInstall = ["dev" "man"]; + + sessionVariables = { + # folder names with capitalisation look awful! + XDG_DOWNLOAD_DIR = "$HOME/downloads"; + }; + }; + + documentation = { + enable = true; + doc.enable = true; # install /share/doc packages + man = { + enable = true; # install manpages + generateCaches = false; + }; + info.enable = true; # install GNU info + dev.enable = true; # install docs intended for developers + nixos = { + enable = true; # install NixOS documentation (ie man -k nix, & nixos-help) + options.splitBuild = true; + includeAllModules = false; + }; + }; +} diff --git a/groups/cryos/programs.nix b/groups/cryos/programs.nix new file mode 100644 index 0000000..3e58545 --- /dev/null +++ b/groups/cryos/programs.nix @@ -0,0 +1,121 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + # Shell + bash + fish + shellcheck + grc # colorise command outputs + moreutils + + # Systems Emulation + qemu # Fellice Bellard's Quick Emulator + # Binaries + binutils + strace + ltrace + perf-tools # ftrace + perf + radare2 + gdb + hexyl + # ASM + nasm + x86-manpages + # C Family + gcc + clang + clang-tools + gnumake + cmake + + # Rust + cargo + rustc + rustfmt + # Go + go + # Nim + nim + nimble + # Haskell + ghc + ghcid + ormolu + + # Nix + nix-prefetch-git + nix-index + nix-unit + + # Python + python312 # I use 3.12 since it's in a pretty stable state now + python314 # also 3.14 for latest features + poetry + # Sage + sageWithDoc # SageMath + HTML Documentation + + # .NET + dotnetCorePackages.dotnet_9.sdk + dotnetCorePackages.dotnet_9.aspnetcore + dotnetCorePackages.dotnet_9.runtime + + openvpn + inetutils + wireguard-tools + + # security tools + rustscan + nmap + dig + gobuster + nth + zap + + httpie + curlie + zoxide + doggo + tldr + btop + eza + yazi + lazygit + ripgrep + viddy # modern `watch` command + timg # terminal image (sixel) viewer + + # Pretty necessary + git + git-filter-repo + brightnessctl + acpi + # upower + vim + powertop + imagemagick + + # "Standard" Unix Commands + file + wget + tree + pstree + zip + unzip + unrar-free + lz4 + man-pages + man-pages-posix + + # Cryptography + gnupg + openssl + libargon2 + ]; + + programs = { + gnupg.agent = { + enable = true; + pinentryPackage = pkgs.pinentry-curses; + enableSSHSupport = true; + }; + }; +} diff --git a/groups/server/default.nix b/groups/server/default.nix new file mode 100644 index 0000000..32fe569 --- /dev/null +++ b/groups/server/default.nix @@ -0,0 +1,71 @@ +{lib, ...}: { + networking.firewall = { + allowedTCPPorts = [ + 42069 # ssh + ]; + }; + + security = { + # accept Lets Encrypt's security policy + acme = { + acceptTerms = true; + defaults.email = "eclarkboman@gmail.com"; + }; + + sudo = { + enable = true; + wheelNeedsPassword = true; + }; + # allow SSH keys for passwordless auth + pam = { + sshAgentAuth.enable = true; + services.sudo.sshAgentAuth = true; # pam_ssh_agent_auth module + }; + }; + + services = { + openssh = { + enable = true; + ports = [42069]; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + AllowUsers = ["cry"]; # DO NOT ALLOW ALL + UseDns = true; + X11Forwarding = false; + }; + }; + }; + + # simple fail2ban config (not production ready or anything though) + # refer to: https://nixos.wiki/wiki/Fail2Ban + services.fail2ban = { + enable = true; + + maxretry = 5; + bantime = "10m"; # 10 minute ban + bantime-increment = { + enable = true; + formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)"; + # multipliers = "1 2 4 8 16 32 64"; + maxtime = "168h"; # dont ban for more than 1 week + overalljails = true; + }; + }; + + users = { + users = { + # primary user + cry = { + isNormalUser = true; + home = "/home/cry"; + extraGroups = ["wheel"]; + openssh.authorizedKeys.keys = lib.mkDefault [ + (throw '' + Hosts in the `server` group must set `users.users.cry.openssh.authorizedKeys.keys = [ ... ]`. + '') + ]; + }; + }; + }; +} diff --git a/homes/ae/default.nix b/homes/ae/default.nix new file mode 100644 index 0000000..3c33619 --- /dev/null +++ b/homes/ae/default.nix @@ -0,0 +1,28 @@ +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: { + nixpkgs = { + config.allowUnfree = false; + }; + + imports = [ + ../modules/fish.nix + ../modules/bat.nix + ../modules/btop.nix + ]; + + home = { + username = "ae"; + homeDirectory = "/home/ae"; + }; + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + home.stateVersion = "24.11"; # DO NOT MODIFY +} diff --git a/homes/me/ags-end4/assets/icons/ai-openai-symbolic.svg b/homes/me/ags-end4/assets/icons/ai-openai-symbolic.svg deleted file mode 120000 index c9ee0b3..0000000 --- a/homes/me/ags-end4/assets/icons/ai-openai-symbolic.svg +++ /dev/null @@ -1 +0,0 @@ -openai-symbolic.svg \ No newline at end of file diff --git a/homes/me/ags-end4/assets/icons/ai-oxygen-symbolic.svg b/homes/me/ags-end4/assets/icons/ai-oxygen-symbolic.svg deleted file mode 100644 index 5e1cc19..0000000 --- a/homes/me/ags-end4/assets/icons/ai-oxygen-symbolic.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/ai-zukijourney.png b/homes/me/ags-end4/assets/icons/ai-zukijourney.png deleted file mode 100644 index 917335e..0000000 Binary files a/homes/me/ags-end4/assets/icons/ai-zukijourney.png and /dev/null differ diff --git a/homes/me/ags-end4/assets/icons/arch-symbolic.svg b/homes/me/ags-end4/assets/icons/arch-symbolic.svg deleted file mode 100644 index 7de9094..0000000 --- a/homes/me/ags-end4/assets/icons/arch-symbolic.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/cachyos-symbolic.svg b/homes/me/ags-end4/assets/icons/cachyos-symbolic.svg deleted file mode 100644 index 4a9db19..0000000 --- a/homes/me/ags-end4/assets/icons/cachyos-symbolic.svg +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/cloudflare-dns-symbolic.svg b/homes/me/ags-end4/assets/icons/cloudflare-dns-symbolic.svg deleted file mode 100644 index bd48d3c..0000000 --- a/homes/me/ags-end4/assets/icons/cloudflare-dns-symbolic.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/crosshair-symbolic.svg b/homes/me/ags-end4/assets/icons/crosshair-symbolic.svg deleted file mode 100644 index 2296749..0000000 --- a/homes/me/ags-end4/assets/icons/crosshair-symbolic.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - ionicons-v5_logos - - - - ionicons-v5_logos - - - - - - diff --git a/homes/me/ags-end4/assets/icons/debian-symbolic.svg b/homes/me/ags-end4/assets/icons/debian-symbolic.svg deleted file mode 100644 index 252f853..0000000 --- a/homes/me/ags-end4/assets/icons/debian-symbolic.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/endeavouros-symbolic.svg b/homes/me/ags-end4/assets/icons/endeavouros-symbolic.svg deleted file mode 100644 index 3be4cc4..0000000 --- a/homes/me/ags-end4/assets/icons/endeavouros-symbolic.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - - - EndeavourOS Logo - - - - image/svg+xml - - EndeavourOS Logo - - - - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/fedora-symbolic.svg b/homes/me/ags-end4/assets/icons/fedora-symbolic.svg deleted file mode 100644 index 1a4e8c8..0000000 --- a/homes/me/ags-end4/assets/icons/fedora-symbolic.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/flatpak-symbolic.svg b/homes/me/ags-end4/assets/icons/flatpak-symbolic.svg deleted file mode 100644 index 0c2bf62..0000000 --- a/homes/me/ags-end4/assets/icons/flatpak-symbolic.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Flatpak - - - - - Flatpak - - - - diff --git a/homes/me/ags-end4/assets/icons/github-symbolic.svg b/homes/me/ags-end4/assets/icons/github-symbolic.svg deleted file mode 100644 index c1c9f19..0000000 --- a/homes/me/ags-end4/assets/icons/github-symbolic.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - diff --git a/homes/me/ags-end4/assets/icons/google-gemini-symbolic.svg b/homes/me/ags-end4/assets/icons/google-gemini-symbolic.svg deleted file mode 100644 index 9de741b..0000000 --- a/homes/me/ags-end4/assets/icons/google-gemini-symbolic.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - ionicons-v5_logos - - - - - ionicons-v5_logos - - - - diff --git a/homes/me/ags-end4/assets/icons/linux-symbolic.svg b/homes/me/ags-end4/assets/icons/linux-symbolic.svg deleted file mode 100644 index 63f9c7e..0000000 --- a/homes/me/ags-end4/assets/icons/linux-symbolic.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/nixos-symbolic.svg b/homes/me/ags-end4/assets/icons/nixos-symbolic.svg deleted file mode 100644 index b697b0d..0000000 --- a/homes/me/ags-end4/assets/icons/nixos-symbolic.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/ollama-symbolic.svg b/homes/me/ags-end4/assets/icons/ollama-symbolic.svg deleted file mode 100644 index 0145481..0000000 --- a/homes/me/ags-end4/assets/icons/ollama-symbolic.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/icons/openai-symbolic.svg b/homes/me/ags-end4/assets/icons/openai-symbolic.svg deleted file mode 100644 index 8ffc912..0000000 --- a/homes/me/ags-end4/assets/icons/openai-symbolic.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - diff --git a/homes/me/ags-end4/assets/icons/openrouter-symbolic.svg b/homes/me/ags-end4/assets/icons/openrouter-symbolic.svg deleted file mode 100644 index 32aaaf5..0000000 --- a/homes/me/ags-end4/assets/icons/openrouter-symbolic.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - diff --git a/homes/me/ags-end4/assets/icons/ubuntu-symbolic.svg b/homes/me/ags-end4/assets/icons/ubuntu-symbolic.svg deleted file mode 100644 index 07746c9..0000000 --- a/homes/me/ags-end4/assets/icons/ubuntu-symbolic.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/homes/me/ags-end4/assets/themes/sourceviewtheme-dark-monokai-license.txt b/homes/me/ags-end4/assets/themes/sourceviewtheme-dark-monokai-license.txt deleted file mode 100644 index d159169..0000000 --- a/homes/me/ags-end4/assets/themes/sourceviewtheme-dark-monokai-license.txt +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/homes/me/ags-end4/assets/themes/sourceviewtheme-light.xml b/homes/me/ags-end4/assets/themes/sourceviewtheme-light.xml deleted file mode 100644 index bf39bfb..0000000 --- a/homes/me/ags-end4/assets/themes/sourceviewtheme-light.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - end_4 - <_description>Catppuccin port but very random - -