Compare commits

Author SHA1 Message Date
wymiller a4d6749411 Merge branch 'master' into import-overlays-from-config 2026-09-06 13:55:13 -05:00
wymiller c59dc1252a mod: updated fetcher and vendor hashes 2026-09-06 14:58:27 -04:00
wymiller e1620950b6 add: make sable great again
Publish packages to Attic / publish (push) Successful in 23m22s
2026-09-06 14:02:14 -04:00
wymiller 479ef575d8 Merge branch 'master' into import-overlays-from-config 2026-09-06 12:41:35 -05:00
gitea-actions[bot] 21037dae06 chore: update flake lock 2026-09-06 07:05:17 +00:00
wymiller 4f5ecae56b Merge pull request '⚙️ Fix publish workflow' (#14) from publish-fix into master
Publish packages to Attic / publish (push) Successful in 8m9s
Reviewed-on: #14
2026-09-05 20:29:50 -05:00
wymiller ff8dcd1587 chore: env variable fix 2026-09-05 20:28:25 -04:00
wymiller a65b09f6cb chore: fix publish workflow 2026-09-05 20:18:12 -04:00
wymiller 887845a8f7 add: diffnav, gh-dash, lazygit, k9s overrides
these are all overlays that were part of my nix config before i created
my nur. i am putting them here to reduce build time when building my nix
config
2026-09-03 13:32:14 -04:00
wymiller 1b5df8dea8 Merge pull request '📦 Add cliamp package' (#12) from cliamp into master
Publish packages to Attic / publish (push) Failing after 8m46s
Reviewed-on: #12
2026-09-02 12:42:27 -05:00
wymiller 2fc67cffe3 Merge branch 'master' into cliamp 2026-09-02 12:42:18 -05:00
wymiller c16695f5f4 mod: ci stuff 2026-09-02 13:42:59 -04:00
wymiller 2f16b8c56a Merge pull request '📦 Add OpenGOAL package' (#11) from opengoal into master
Publish packages to Attic / publish (push) Successful in 8m43s
Reviewed-on: #11
2026-09-02 12:42:03 -05:00
wymiller ecd0ec0c95 Merge branch 'opengoal' of ssh://scm.wyattjmiller.com:222/wymiller/nur into opengoal 2026-09-02 13:45:05 -04:00
wymiller 91c5fd7944 mod: ci stuff 2026-09-02 13:45:01 -04:00
wymiller 7dad6a62f0 add: cliamp build target 2026-09-02 13:41:37 -04:00
wymiller c736d31570 Merge branch 'master' into opengoal 2026-09-02 12:21:48 -05:00
wymiller 563be1867c Merge pull request '📦 Add container package' (#10) from container into master
Publish packages to Attic / publish (push) Successful in 8m32s
Reviewed-on: #10
2026-09-02 12:20:25 -05:00
wymiller 9b1238eb39 add: apple container build target 2026-09-02 13:21:30 -04:00
wymiller b7c6087115 mod: add opengoal build target 2026-08-31 13:51:35 -04:00
gitea-actions[bot] 52e8bf19e0 chore: update flake lock 2026-08-30 19:14:39 +00:00
wymiller af2ded56a4 Merge branch 'master' of ssh://scm.wyattjmiller.com:222/wymiller/nur
Publish packages to Attic / publish (push) Canceled after 22s
2026-08-30 15:13:25 -04:00
wymiller aa4d5e60bb chore: run publish workflow after update flake workflow 2026-08-30 15:13:20 -04:00
gitea-actions[bot] d9ad2edcb6 chore: update flake lock 2026-08-30 07:06:09 +00:00
wymiller af5b631490 chore: modify license file
Publish packages to Attic / publish (push) Successful in 7m20s
2026-08-26 22:19:45 -04:00
wymiller cafc818f5d Merge pull request '📦 Add atuin overlay' (#6) from overlay-atuin into master
Publish packages to Attic / publish (push) Successful in 16m52s
Reviewed-on: #6
2026-08-26 18:44:08 -05:00
wymiller fab444b00e chore: update flake 2026-08-26 19:47:21 -04:00
wymiller b7c830d887 Merge remote-tracking branch 'origin' into overlay-atuin 2026-08-26 19:44:04 -04:00
wymiller 760ff1b1a4 chore: make sure all inputs are following nixpkgs
Publish packages to Attic / publish (push) Successful in 7m4s
2026-08-26 19:36:40 -04:00
wymiller cb05f0550b Merge branch 'master' of ssh://scm.wyattjmiller.com:222/wymiller/nur
Publish packages to Attic / publish (push) Successful in 9m46s
2026-08-26 19:12:35 -04:00
wymiller d53fdf0d45 mod: adjusted sha to match
like i should've done in the first place
2026-08-26 19:12:29 -04:00
wymiller 7d0154e227 Merge pull request '⬆️ ani-cli-rs upgrade' (#9) from ani-cli-rs-package into master
Publish packages to Attic / publish (push) Failing after 6m1s
Reviewed-on: #9
2026-08-26 18:05:27 -05:00
wymiller fc6d702168 Merge branch 'master' into ani-cli-rs-package 2026-08-26 17:59:57 -05:00
wymiller c18ae03bd0 add: added scheduled flake update
Publish packages to Attic / publish (push) Successful in 7m24s
once a week, every sunday at 3AM
2026-08-26 18:57:30 -04:00
wymiller 8a671235d9 mod: update ani-cli-rs to 0.9.4 from 0.9.3 2026-08-26 14:06:23 -04:00
wymiller c101b7c7e6 chore: update flake lock
Publish packages to Attic / publish (push) Successful in 11m43s
2026-08-26 14:04:12 -04:00
wymiller 259bcff01c Merge pull request '📦 Add Caitsith package' (#8) from caitsith into master
Publish packages to Attic / publish (push) Successful in 8m3s
Reviewed-on: #8
2026-08-11 18:45:21 -05:00
wymiller f3a26325e4 add: caitsith discord bot input 2026-08-11 14:27:08 -04:00
wymiller ea7094e4e3 Merge pull request '📦 Add Hildibrand package' (#7) from discord-bots into master
Publish packages to Attic / publish (push) Successful in 7m31s
Reviewed-on: #7
2026-08-09 14:40:54 -05:00
wymiller d26bb0a0de Merge branch 'master' into discord-bots 2026-08-09 14:40:44 -05:00
wymiller 17f4274d0a Merge pull request '⬆️ Archon upgrade' (#5) from archon-upgrade into master
Publish packages to Attic / publish (push) Successful in 8m12s
Reviewed-on: #5
2026-08-09 14:40:33 -05:00
wymiller e3296b9c9f Merge branch 'master' into archon-upgrade 2026-08-09 14:40:24 -05:00
wymiller 71f2f4f199 Merge pull request '⬆️ Vintage Story upgrade' (#4) from vs-upgrade into master
Publish packages to Attic / publish (push) Successful in 8m32s
Reviewed-on: #4
2026-08-09 14:40:17 -05:00
wymiller 3c8c08ad5f Merge branch 'master' into vs-upgrade 2026-08-09 14:40:08 -05:00
wymiller 60dcecb7aa Merge pull request '📦 Add ani-cli-rs packge' (#3) from ani-cli-rs-package into master
Publish packages to Attic / publish (push) Successful in 9m31s
Reviewed-on: #3
2026-08-09 14:40:01 -05:00
wymiller 0ffb8f5493 add: add hildibrand input, package 2026-08-09 15:38:24 -04:00
wymiller d76f1d6453 add: added atuin overlay 2026-08-09 14:46:33 -04:00
wymiller 3207f9abec add: ani-cli-rs package
added package to publish to attic
2026-08-09 13:35:28 -04:00
wymiller 9c207d6ba8 mod: upgrade vintage story client, server 2026-08-09 13:12:39 -04:00
wymiller 2397ab4151 mod: upgrade archon version
added archon to application chooser
2026-08-09 13:01:27 -04:00
wymiller b43f2ace49 merge: conflict resolved
Publish packages to Attic / publish (push) Successful in 9m34s
2026-07-12 15:59:59 -04:00
wymiller ae29f9eefc mod: added archon, added to workflow file 2026-07-12 15:52:52 -04:00
wymiller 90afe7c81a mod: change package entirely
Publish packages to Attic / publish (push) Successful in 10m15s
2026-06-12 01:15:53 -04:00
wymiller 4ff256f9f6 mod: changed hash
Publish packages to Attic / publish (push) Failing after 8m58s
2026-06-12 00:56:42 -04:00
wymiller ee9745fef3 mod: update to nixpkgs 26.05, update vintage story to 1.22.3
Publish packages to Attic / publish (push) Failing after 6m15s
2026-06-12 00:46:53 -04:00
wymiller e4d85d9e49 Merge pull request '📦 Add yubilock package' (#1) from wm/yubilock-script into master
Publish packages to Attic / publish (push) Successful in 7m36s
Reviewed-on: #1
2026-06-08 21:02:28 -05:00
wymiller 7b0a09cf72 Merge branch 'master' into wm/yubilock-script 2026-06-08 21:02:21 -05:00
wymiller 7693a998cc mod: correct swaytreesave home-manager module import path
Publish packages to Attic / publish (push) Successful in 6m32s
2026-05-31 13:54:31 -04:00
wymiller bd663236a9 Merge branch 'master' into wm/yubilock-script 2026-05-31 12:41:21 -05:00
wymiller fb6b6f51c1 Merge pull request '🏠 swaytreesave Home Manager module' (#2) from swaytreesave-hm into master
Publish packages to Attic / publish (push) Successful in 6m25s
Reviewed-on: #2
2026-05-31 12:38:14 -05:00
wymiller 9f6b50277c add: swaytreesave home-manager module 2026-05-31 13:37:48 -04:00
wymiller 0f78716e90 add: readme addition 2026-05-29 16:38:58 -04:00
wymiller a81f667f94 add: yubilock nix package 2026-05-29 15:44:32 -04:00
wymiller aa5251a603 mod: adjusted title
Publish packages to Attic / publish (push) Has been cancelled
2026-05-25 18:20:05 -04:00
wymiller 8156b87975 mod: readme additions
Publish packages to Attic / publish (push) Has been cancelled
2026-05-25 18:17:31 -04:00
wymiller 60f43140e9 mod: add readme spacing
Publish packages to Attic / publish (push) Has been cancelled
2026-05-25 18:14:28 -04:00
24 changed files with 853 additions and 140 deletions
+11 -1
View File
@@ -4,6 +4,11 @@ on:
push: push:
branches: branches:
- master - master
workflow_run:
workflows:
- Update flake lock
types:
- completed
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -62,10 +67,15 @@ jobs:
system="$(nix eval --impure --raw --expr builtins.currentSystem)" system="$(nix eval --impure --raw --expr builtins.currentSystem)"
nix build --accept-flake-config --no-link --print-out-paths -L \ NIXPKGS_ALLOW_UNFREE=1 nix build --impure --sandbox --no-sandbox-fallback --accept-flake-config --no-link --print-out-paths -L \
".#packages.${system}.atuinLatest" \
".#packages.${system}.cliampLatest" \
".#packages.${system}.musicpresence" \ ".#packages.${system}.musicpresence" \
".#packages.${system}.vintage-story" \ ".#packages.${system}.vintage-story" \
".#packages.${system}.swaytreesave" \ ".#packages.${system}.swaytreesave" \
".#packages.${system}.archon" \
".#packages.${system}.ani-cli-rs" \
".#packages.${system}.opengoal" \
| tee built-paths.txt | tee built-paths.txt
- name: Push packages to Attic - name: Push packages to Attic
+40
View File
@@ -0,0 +1,40 @@
name: Update flake lock
on:
schedule:
# Gitea cron schedules use UTC. 07:00 UTC is 03:00 EDT.
- cron: "0 7 * * 0"
workflow_dispatch:
permissions:
contents: write
jobs:
update-flake-lock:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install upstream Nix
uses: cachix/install-nix-action@v31
- name: Update flake lock
run: nix flake update
- name: Commit and push changes
shell: bash
run: |
set -euo pipefail
if git diff --quiet -- flake.lock; then
echo "flake.lock is already up to date"
exit 0
fi
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@noreply.localhost"
git add flake.lock
git commit -m "chore: update flake lock"
git push
View File
+5 -1
View File
@@ -1,13 +1,17 @@
# Miller NUR # Miller Nix User Repository
Designed and developed by Wyatt J. Miller Designed and developed by Wyatt J. Miller
Copyright 2026, all rights reserved Copyright 2026, all rights reserved
Licensed by the EPL 2.0 Licensed by the EPL 2.0
## What is this? ## What is this?
These are Nix packages that are not in Nixpkgs but I still want to be accessible in a binary cache. More Nix packages to come! These are Nix packages that are not in Nixpkgs but I still want to be accessible in a binary cache. More Nix packages to come!
This issue came about when I had several computers compiling the same Nix packages (and overlays) over and over. Knowing a Nix binary cache and Nix substitutions existed, I knew I had to scratch my own itch.
Viewers are able to use these Nix packages and stand up their own Nix binary cache themselves (adhering to the license). Viewers are able to use these Nix packages and stand up their own Nix binary cache themselves (adhering to the license).
## Attribution ## Attribution
Generated
+236 -30
View File
@@ -1,5 +1,27 @@
{ {
"nodes": { "nodes": {
"caitsith": {
"inputs": {
"flake-schemas": "flake-schemas",
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1788133146,
"narHash": "sha256-rjxs1D9duSUWf/lnJV6JZXqdpTEbJ1ntX1hZyYHOuK4=",
"ref": "refs/heads/master",
"rev": "427757654f013e316b3e267dd345c3ab780da7b6",
"revCount": 22,
"type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/caitsith.git"
},
"original": {
"type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/caitsith.git"
}
},
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -7,11 +29,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779036909, "lastModified": 1786845137,
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=", "narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=",
"owner": "LnL7", "owner": "LnL7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "56c666e108467d87d13508936aade6d567f2a501", "rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -20,6 +42,50 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-schemas": {
"locked": {
"lastModified": 1761577921,
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
"revCount": 107,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
}
},
"flake-schemas_2": {
"locked": {
"lastModified": 1780327564,
"narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=",
"rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6",
"revCount": 149,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@@ -38,16 +104,107 @@
"type": "github" "type": "github"
} }
}, },
"home-manager": { "git-hooks": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs" "flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"go-overlay",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1779507042, "lastModified": 1778507602,
"narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=", "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"go-overlay",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"go-overlay": {
"inputs": {
"flake-utils": "flake-utils",
"git-hooks": "git-hooks",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1788301927,
"narHash": "sha256-Zmcvt5yW//YLT3HYe3bWN1Sf2txYrnBpa5jLULVokc0=",
"owner": "purpleclay",
"repo": "go-overlay",
"rev": "fe48ae4f56981f9f7c2bf03d4951fb0aa6e2095b",
"type": "github"
},
"original": {
"owner": "purpleclay",
"repo": "go-overlay",
"type": "github"
}
},
"hildibrand": {
"inputs": {
"flake-schemas": "flake-schemas_2",
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1788130254,
"narHash": "sha256-LR+73+2a51LOUKVTkEsP/XMVSZXm2P4hlgb7/KxdQ30=",
"ref": "refs/heads/master",
"rev": "f2049db9c29bf3ab0beff7cf0a990735d5571446",
"revCount": 6,
"type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/hildibrand.git"
},
"original": {
"type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/hildibrand.git"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1788651960,
"narHash": "sha256-v9wJd32eZ2bvhBzVOd7TIjLQd011P7nwOhjKtWlci5I=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34", "rev": "2c0350c759688177331b8f5242311fae8877bdb3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -58,42 +215,91 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1778443072, "lastModified": 1788584326,
"narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "narHash": "sha256-Fd3OB8J9JhgliQwOKcqx4M672CInxi1I5VnwsaXeSQo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "rev": "6713828a351efa628b025a1adf7f43cbf8597513",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1779467186,
"narHash": "sha256-nOesoDCiXcUftqbRBMz9tt4blI5PvljMWbm3kuCA+0s=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b77b3de8775677f84492abe84635f87b0e153f0f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"caitsith": "caitsith",
"darwin": "darwin", "darwin": "darwin",
"flake-utils": "flake-utils", "go-overlay": "go-overlay",
"hildibrand": "hildibrand",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay_3"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"caitsith",
"nixpkgs"
]
},
"locked": {
"lastModified": 1771729765,
"narHash": "sha256-HNsDSR5bhLSrIpi9bTb2uTK1qnPo1xFSBxs6YmFyprk=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "be926cb1a76e8450ab2b92121b2e88d09fa4d41c",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": [
"hildibrand",
"nixpkgs"
]
},
"locked": {
"lastModified": 1784438913,
"narHash": "sha256-NYF7ZM5ip0u+w1pBFDpIGEbrbgN/wpnLFAmBkWkYMXw=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "afacd6819d3765a05814ee8e3de74c77d42ac799",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_3": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1788678114,
"narHash": "sha256-pcqbpV4ZI79al6KAlr+WJjaEo/PYfgctRlG43D5BSJM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "4748ec2f5ed4a881474ed4c98aa71a5308cdac8d",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
} }
}, },
"systems": { "systems": {
+38 -12
View File
@@ -2,35 +2,58 @@
description = "Miller Nix User Repository"; description = "Miller Nix User Repository";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
flake-utils.url = "github:numtide/flake-utils";
home-manager.url = "github:nix-community/home-manager"; home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
darwin.url = "github:LnL7/nix-darwin"; darwin.url = "github:LnL7/nix-darwin";
darwin.inputs.nixpkgs.follows = "nixpkgs"; darwin.inputs.nixpkgs.follows = "nixpkgs";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
go-overlay = {
url = "github:purpleclay/go-overlay";
inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = inputs@{ self, nixpkgs, flake-utils, home-manager, darwin, ... }: hildibrand.url = "git+https://scm.wyattjmiller.com/wymiller/hildibrand.git";
hildibrand.inputs.nixpkgs.follows = "nixpkgs";
caitsith.url = "git+https://scm.wyattjmiller.com/wymiller/caitsith.git";
caitsith.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ self, nixpkgs, home-manager, darwin, rust-overlay, go-overlay, ... }:
let let
systems = [ supportedSystems = [
"x86_64-linux" "x86_64-linux"
"aarch64-linux" "aarch64-linux"
"aarch64-darwin" "aarch64-darwin"
]; ];
forAllSystems = f: nixpkgs.lib.genAttrs systems f; forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems f;
in in
{ {
packages = forAllSystems (system: packages = forAllSystems (
system:
let let
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
overlays = [ self.overlays.default ]; overlays = [ self.overlays.default ];
}; };
in in
import ./pkgs { inherit pkgs; } import ./pkgs {
inherit pkgs;
# packages that are already built with Nix go here
hildibrand = inputs.hildibrand.packages.${system}.default;
caitsith = inputs.caitsith.packages.${system}.default;
}
); );
devShells = forAllSystems (system: devShells = forAllSystems (
let pkgs = import nixpkgs { inherit system; }; in system:
let
pkgs = import nixpkgs { inherit system; };
in
{ {
default = pkgs.mkShell { default = pkgs.mkShell {
packages = with pkgs; [ packages = with pkgs; [
@@ -40,9 +63,12 @@
} }
); );
overlays.default = import ./overlays; overlays.default = nixpkgs.lib.composeManyExtensions [
rust-overlay.overlays.default
homeManagerModules.default = import ./modules/home-manager; go-overlay.overlays.default
(import ./overlays)
];
homeManagerModules = import ./modules/home-manager self;
nixosModules.default = import ./modules/nixos; nixosModules.default = import ./modules/nixos;
darwinModules.default = import ./modules/darwin; darwinModules.default = import ./modules/darwin;
}; };
+4
View File
@@ -0,0 +1,4 @@
self: {
# TODO: add more home-manager modules here
swaytreesave = import ./swaytreesave.nix self;
}
+20
View File
@@ -0,0 +1,20 @@
self: { config, lib, pkgs, ... }:
let
cfg = config.programs.swaytreesave;
in
{
options.programs.swaytreesave = {
enable = lib.mkEnableOption "swaytreesave";
package = lib.mkOption {
type = lib.types.package;
default = self.packages.${pkgs.system}.swaytreesave;
defaultText = lib.literalExpression "self.packages.\${pkgs.system}.swaytreesave";
description = "The swaytreesave package to install.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}
+43
View File
@@ -0,0 +1,43 @@
final: prev:
let
rustLatest = prev.rust-bin.stable.latest.default;
rustPlatform = prev.makeRustPlatform {
cargo = rustLatest;
rustc = rustLatest;
};
in
{
atuinLatest = (prev.atuin.override { inherit rustPlatform; }).overrideAttrs (oldAttrs: rec {
version = "18.19.0";
src = prev.fetchFromGitHub {
owner = "atuinsh";
repo = "atuin";
rev = "v${version}";
hash = "sha256-yAw+ty6FUnFbiRTdAe2QQHzj6uU24fZ/bEIXcHl/thg=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit src;
hash = "sha256-jirVe0+N5+UHZWioj8AipUhawMBameqEJJpa8HPTnfw=";
};
cargoBuildFeatures = [
"ai"
"client"
"clipboard"
"daemon"
"hex"
"sync"
];
cargoCheckFeatures = cargoBuildFeatures;
preCheck = (oldAttrs.preCheck or "") + ''
export HOME="$TMPDIR"
export XDG_CONFIG_HOME="$TMPDIR/.config"
export XDG_DATA_HOME="$TMPDIR/.local/share"
export XDG_STATE_HOME="$TMPDIR/.local/state"
mkdir -p "$XDG_CONFIG_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME"
'';
});
}
+24
View File
@@ -0,0 +1,24 @@
final: prev: {
cliampLatest = prev.cliamp.overrideAttrs (oldAttrs: rec {
version = "2.0.1";
src = prev.fetchFromGitHub {
owner = "bjarneo";
repo = "cliamp";
tag = "v${version}";
sha256 = "sha256-r7MrrcVt+/f+iPozn9jaczJmpPv431wAoW8LvHKBtB8=";
};
vendorHash = "sha256-rtwUWbft5XGEbuBCn0OMCn4TS5Ul+UXJNIqNOzXfU+M=";
buildInputs = with prev; [
libogg
libvorbis
flac
mpg123
]
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
];
});
}
+10
View File
@@ -0,0 +1,10 @@
final: prev: {
containerLatest = prev.container.overrideAttrs (oldAttrs: rec {
version = "1.3.1";
src = prev.fetchurl {
url = "https://github.com/apple/container/releases/download/${version}/container-${version}-installer-signed.pkg";
hash = "sha256-p8G515J9MIdfL2x70dDLBsLapspXzp6QpRROiY/fVKg=";
};
});
}
+10 -1
View File
@@ -1 +1,10 @@
final: prev: { } final: prev:
prev.lib.composeManyExtensions [
(import ./atuin.nix)
(import ./container.nix)
(import ./cliamp.nix)
(import ./diffnav.nix)
(import ./gh-dash.nix)
(import ./lazygit.nix)
(import ./k9s.nix)
] final prev
+25
View File
@@ -0,0 +1,25 @@
final: prev: let
golang_latest = prev.go-bin.latestStable;
buildGoModuleLatest = prev.buildGoModule.override {
go = golang_latest;
};
in {
diffNavLatest = (prev.diffnav.override {
buildGoModule = buildGoModuleLatest;
}).overrideAttrs (_: rec {
version = "0.12.0";
src = prev.fetchFromGitHub {
owner = "dlvhdr";
repo = "diffnav";
rev = "v${version}";
hash = "sha256-DrEbo9YYg4FCXQXuIkbPxO5Z3ZOPZJYeGoLoP/vT0Y0=";
};
vendorHash = "sha256-2OzHyBPsylQVXhPlqk2owEhiibFi3H1UENvGGDdzGss";
ldflags = [
"-s"
"-w"
];
});
}
+36
View File
@@ -0,0 +1,36 @@
final: prev: let
golang_latest = prev.go-bin.latestStable;
buildGoModuleLatest = prev.buildGoModule.override {
go = golang_latest;
};
in {
ghDashLatest = (prev.gh-dash.override {
buildGoModule = buildGoModuleLatest;
}).overrideAttrs (oldAttrs: rec {
version = "4.25.2";
src = prev.fetchFromGitHub {
owner = "dlvhdr";
repo = "gh-dash";
rev = "v${version}";
hash = "sha256-FUb4zrGT0L7S1O5EcOCop4n0zlx1ODsANzBcEl9bvOU=";
};
vendorHash = "sha256-3iUBuMvA2Xh7UjTiFNEs3tuZMCnSt/bIhTSEDD92yCU=";
doCheck = false;
checkFlags = [
"-skip=TestFullOutput"
];
ldflags = [
"-s"
"-w"
"-X github.com/dlvhdr/gh-dash/v4/cmd.Version=${version}"
];
passthru = (oldAttrs.passthru or {}) // {
tests = {
version = oldAttrs.testers.testVersion { package = final.ghDashLatest; };
};
};
});
}
+18
View File
@@ -0,0 +1,18 @@
final: prev: {
k9sLatest = prev.k9s.overrideAttrs (oldAttrs: rec {
version = "0.51.0";
src = prev.fetchFromGitHub {
owner = "derailed";
repo = "k9s";
rev = "v${version}";
hash = "sha256-70Rfu1BVd/QnwWXRRpwIeZ2UJNWIGixpdiOHo4v7adA=";
};
vendorHash = "sha256-PkYDJK2oGl+siCG9p4R8shC0e5BhGFdJsc+ksL9J5zw=";
ldflags = [
"-X github.com/derailed/k9s/version.Version=${version}"
"-X github.com/derailed/k9s/version.BuildSource=nix"
];
});
}
+18
View File
@@ -0,0 +1,18 @@
final: prev: {
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
version = "0.65.0";
src = prev.fetchFromGitHub {
owner = "jesseduffield";
repo = "lazygit";
rev = "v${version}";
hash = "sha256-W/Z/BnA5L8tXYrKn3bnekNnx7bEaaJRoHSGAeygcK0E=";
};
vendorHash = null;
subPackages = [ "." ];
ldflags = [
"-X main.version=${version}"
"-X main.buildSource=nix"
];
});
}
+28 -5
View File
@@ -1,6 +1,29 @@
{ pkgs }: { {
# sable-web = pkgs.callPackage ./common/sable.nix {}; pkgs,
swaytreesave = pkgs.callPackage ./linux/swaytreesave.nix {}; hildibrand ? null,
musicpresence = pkgs.callPackage ./linux/musicpresence.nix {}; caitsith ? null,
vintage-story = pkgs.callPackage ./linux/vintage-story.nix {}; }:
{
# any overlays we define here
atuinLatest = pkgs.atuinLatest;
containerLatest = pkgs.containerLatest;
cliampLatest = pkgs.cliampLatest;
lazygitLatest = pkgs.lazygitLatest;
ghDashLatest = pkgs.ghDashLatest;
diffNavLatest = pkgs.diffNavLatest;
k9sLatest = pkgs.k9sLatest;
# any packages that are added to pkgs and are inputs, we inherit them here
inherit hildibrand;
inherit caitsith;
# any packages that build instructions are in this repo, they go here
sable-web = pkgs.callPackage ./common/sable.nix { };
swaytreesave = pkgs.callPackage ./linux/swaytreesave.nix { };
musicpresence = pkgs.callPackage ./linux/musicpresence.nix { };
vintage-story = pkgs.callPackage ./linux/vintage-story.nix { };
archon = pkgs.callPackage ./linux/archon.nix { };
yubilock = pkgs.callPackage ./linux/yubilock/default.nix { };
ani-cli-rs = pkgs.callPackage ./linux/ani-cli-rs.nix { };
opengoal = pkgs.callPackage ./linux/opengoal.nix { };
} }
+27
View File
@@ -0,0 +1,27 @@
{ pkgs }:
let
pname = "ani-cli-rs";
version = "0.9.4";
src = pkgs.fetchFromGitHub {
owner = "vorlie";
repo = "ani-cli-rs";
rev = "${version}";
sha256 = "sha256-19U/p583B5d/Kd0O1raYhREz6zYMeudyTH7dh9bi/jU=";
};
in pkgs.rustPlatform.buildRustPackage {
inherit pname version src;
cargoLock = { lockFile = "${src}/Cargo.lock"; };
# tests make this package fail to build, this line skips them
doCheck = false;
meta = {
description = "A cross-platform Rust port of ani-cli with two independent Anikoto catalogs and native MegaPlay/KotoCDN playback";
mainProgram = "ani-cli-rs";
homepage = "https://github.com/vorlie/ani-cli-rs";
maintainers = [ "wymillerlinux" ];
platforms = [ "x86_64-linux" ];
changelog = "https://github.com/vorlie/ani-cli-rs/releases/tag/${version}";
};
}
+35
View File
@@ -0,0 +1,35 @@
{ pkgs }:
let
pname = "archon";
version = "9.5.8";
src = pkgs.fetchurl {
url = "https://github.com/RPGLogs/Uploaders-archon/releases/download/v${version}/${pname}-v${version}.AppImage";
hash = "sha256-tEMfDK0BCBvNWFlA78FKWcOvU1wzIorBM4ZmLQ+6hzU=";
};
appimageContents = pkgs.appimageTools.extract {
inherit pname version src;
};
in
pkgs.appimageTools.wrapType2 {
inherit pname version src;
nativeBuildInputs = with pkgs; [ makeWrapper ];
extraInstallCommands = ''
install -Dm444 "${appimageContents}/archon.desktop" "$out/share/applications/archon.desktop"
install -Dm444 "${appimageContents}/archon.png" "$out/share/icons/hicolor/512x512/apps/archon.png"
substituteInPlace "$out/share/applications/archon.desktop" \
--replace-fail "Exec=AppRun --no-sandbox %U" "Exec=archon --no-sandbox %U"
'';
meta = with pkgs.lib; {
description = "RPGLogs Archon uploader";
homepage = "https://github.com/RPGLogs/Uploaders-archon";
license = licenses.unfree;
platforms = platforms.linux;
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
mainProgram = "archon";
};
}
+49
View File
@@ -0,0 +1,49 @@
{ pkgs }:
let
pname = "OpenGOAL-Launcher";
version = "2.10.4";
src = pkgs.fetchurl {
url = "https://github.com/open-goal/launcher/releases/download/v${version}/${pname}_${version}_amd64.AppImage";
hash = "sha256-eikzjdOYNdJM9FM3O/HuCFDzf97Fm1nhbRedDyKZ1/s=";
};
in
pkgs.stdenvNoCC.mkDerivation {
inherit pname version src;
nativeBuildInputs = [ pkgs.makeWrapper ];
dontUnpack = true;
dontPatchELF = true;
installPhase = ''
runHook preInstall
cp "$src" "${pname}.AppImage"
chmod +x "${pname}.AppImage"
./"${pname}.AppImage" --appimage-extract
mkdir -p "$out/opt"
cp -a AppDir "$out/opt/opengoal-launcher"
rm -f "$out/opt/opengoal-launcher/share/icons/hicolor/scalable/apps/byobu.svg"
makeWrapper "$out/opt/opengoal-launcher/AppRun" "$out/bin/${pname}"
install -Dm444 "AppDir/${pname}.desktop" \
"$out/share/applications/${pname}.desktop"
install -Dm444 "AppDir/${pname}.png" \
"$out/share/icons/hicolor/256x256/apps/${pname}.png"
runHook postInstall
'';
passthru.updateScript = pkgs.nix-update-script { };
meta = with pkgs.lib; {
description = "Launcher for the OpenGOAL project";
homepage = "https://github.com/open-goal/launcher";
license = licenses.mit;
platforms = [ "x86_64-linux" ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
mainProgram = pname;
};
}
+84 -55
View File
@@ -1,48 +1,48 @@
{ pkgs }: {
let lib,
x11Support = true; stdenv,
waylandSupport = true; fetchurl,
in pkgs.stdenv.mkDerivation (finalAttrs: makeWrapper,
let makeDesktopItem,
inherit (pkgs) lib; copyDesktopItems,
in { versionCheckHook,
pname = "vintagestory"; cairo,
version = "1.21.6"; libGLU,
libglvnd,
pipewire,
libpulseaudio,
dotnet-runtime_10,
x11Support ? true,
libxi,
libxcursor,
libx11,
waylandSupport ? false,
wayland ? null,
libxkbcommon ? null,
}:
src = pkgs.fetchurl { assert x11Support || waylandSupport;
assert waylandSupport -> wayland != null;
assert waylandSupport -> libxkbcommon != null;
stdenv.mkDerivation (finalAttrs: {
pname = "vintagestory";
version = "1.22.6";
src = fetchurl {
url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${finalAttrs.version}.tar.gz"; url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${finalAttrs.version}.tar.gz";
hash = "sha256-LkiL/8W9MKpmJxtK+s5JvqhOza0BLap1SsaDvbLYR0c="; hash = "sha256-xJPyaYklEq2BeUX9+7hNPI6WC6ibcQDS+sKeqKYSh3A=";
}; };
nativeBuildInputs = with pkgs; [ __structuredAttrs = true;
nativeBuildInputs = [
makeWrapper makeWrapper
copyDesktopItems copyDesktopItems
]; ];
runtimeLibs = with pkgs; [
gtk2
sqlite
openal
cairo
libGLU
SDL2
freealut
libglvnd
pipewire
libpulseaudio
]
++ lib.optionals x11Support (with pkgs.xorg; [
libX11
libXi
libXcursor
])
++ lib.optionals waylandSupport (with pkgs; [
wayland
libxkbcommon
]);
desktopItems = [ desktopItems = [
(pkgs.makeDesktopItem { (makeDesktopItem {
name = "vintagestory"; name = "vintagestory";
desktopName = "Vintage Story"; desktopName = "Vintage Story";
exec = "vintagestory"; exec = "vintagestory";
@@ -51,7 +51,7 @@ in pkgs.stdenv.mkDerivation (finalAttrs:
categories = [ "Game" ]; categories = [ "Game" ];
}) })
(pkgs.makeDesktopItem { (makeDesktopItem {
name = "vsmodinstall-handler"; name = "vsmodinstall-handler";
desktopName = "Vintage Story 1-click Mod Install Handler"; desktopName = "Vintage Story 1-click Mod Install Handler";
comment = "Handler for vintagestorymodinstall:// URI scheme"; comment = "Handler for vintagestorymodinstall:// URI scheme";
@@ -65,30 +65,37 @@ in pkgs.stdenv.mkDerivation (finalAttrs:
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p $out/share/vintagestory $out/bin $out/share/pixmaps $out/share/fonts/truetype mkdir -p $out/share/vintagestory $out/bin $out/share/icons/hicolor/512x512/apps $out/share/fonts/truetype
cp -r * $out/share/vintagestory cp -r * $out/share/vintagestory
cp $out/share/vintagestory/assets/gameicon.xpm $out/share/pixmaps/vintagestory.xpm install -Dm444 $out/share/vintagestory/assets/gameicon.png $out/share/icons/hicolor/512x512/apps/vintagestory.png
cp $out/share/vintagestory/assets/game/fonts/*.ttf $out/share/fonts/truetype cp $out/share/vintagestory/assets/game/fonts/*.ttf $out/share/fonts/truetype
rm -rvf $out/share/vintagestory/{install,run,server}.sh
runHook postInstall runHook postInstall
''; '';
preFixup = makeWrapperArgs = [
let "--set-default"
runtimeLibs' = lib.strings.makeLibraryPath finalAttrs.runtimeLibs; "mesa_glthread"
in "true"
'' ]
makeWrapper ${lib.meta.getExe pkgs.dotnet-runtime_8} $out/bin/vintagestory \ ++ lib.optionals waylandSupport [
--prefix LD_LIBRARY_PATH : "${runtimeLibs'}" \ "--set-default"
--set-default mesa_glthread true \ "OPENTK_4_USE_WAYLAND"
${lib.strings.optionalString waylandSupport '' "1"
--set-default OPENTK_4_USE_WAYLAND 1 \ ];
''} \
runtimeLibraryPath = lib.makeLibraryPath finalAttrs.passthru.runtimeLibs;
preFixup = ''
makeWrapperArgs+=(--prefix LD_LIBRARY_PATH : "$runtimeLibraryPath")
makeWrapper ${lib.meta.getExe dotnet-runtime_10} $out/bin/vintagestory \
"''${makeWrapperArgs[@]}" \
--add-flags $out/share/vintagestory/Vintagestory.dll --add-flags $out/share/vintagestory/Vintagestory.dll
makeWrapper ${lib.meta.getExe pkgs.dotnet-runtime_8} $out/bin/vintagestory-server \ makeWrapper ${lib.getExe dotnet-runtime_10} $out/bin/vintagestory-server \
--prefix LD_LIBRARY_PATH : "${runtimeLibs'}" \ "''${makeWrapperArgs[@]}" \
--set-default mesa_glthread true \
--add-flags $out/share/vintagestory/VintagestoryServer.dll --add-flags $out/share/vintagestory/VintagestoryServer.dll
find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do
@@ -96,5 +103,27 @@ in pkgs.stdenv.mkDerivation (finalAttrs:
ln -sf "$filename" "''${file%/*}"/"''${filename,,}" ln -sf "$filename" "''${file%/*}"/"''${filename,,}"
done done
''; '';
}
) doInstallCheck = true;
installCheckInputs = [ versionCheckHook ];
passthru = {
updateScript = ./update.sh;
runtimeLibs = [
cairo
libGLU
libglvnd
pipewire
libpulseaudio
]
++ lib.optionals x11Support [
libx11
libxi
libxcursor
]
++ lib.optionals waylandSupport [
wayland
libxkbcommon
];
};
})
+3
View File
@@ -0,0 +1,3 @@
# Yubilock
A Yubikey unlocking script that allows unlocking of sessions when attached.
+21
View File
@@ -0,0 +1,21 @@
{ pkgs }:
let
name = "yubilock";
runtimeInputs = with pkgs; [
systemd
coreutils
yubikey-manager
gawk
getent
logger
];
yubilock = (pkgs.writeScriptBin name (builtins.readFile ./yubilock.sh)).overrideAttrs (old: {
buildCommand = "${old.buildCommand}\n patchShebangs $out";
});
in
pkgs.symlinkJoin {
inherit name;
paths = [ yubilock ] ++ runtimeInputs;
buildInputs = [ pkgs.makeWrapper ];
postBuild = "wrapProgram $out/bin/${name} --prefix PATH : $out/bin";
}
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
SESSIONS=($(loginctl list-sessions --no-legend | awk '{ print $1 }'))
for SESSION_ID in "${SESSIONS[@]}"
do
USERNAME=$(loginctl show-session ${SESSION_ID} -p Name --value)
SESSION_TYPE=$(loginctl show-session ${SESSION_ID} -p Type --value) # should be x11 or wayland
SESSION_LOCKED=$(loginctl show-session ${SESSION_ID} -p LockedHint --value) # yes/no
USER_DIR=$(getent passwd "$USERNAME" | cut -d: -f6)
KEY_FILE="$USER_DIR/.yubikeys"
if ! [[ "$SESSION_TYPE" == "x11" || "$SESSION_TYPE" == "wayland" ]]; then
continue
fi
if ! [ -e "$KEY_FILE" ]; then
continue
fi
MATCHING_KEYS=$(comm -12 <(ykman list --serials | sort) <(sort $KEY_FILE))
if [[ $MATCHING_KEYS == "" ]]; then
if [[ $SESSION_LOCKED == "no" ]]; then
logger "All YubiKeys Removed ($USERNAME)"
loginctl lock-session ${SESSION_ID}
fi
else
if [[ $SESSION_LOCKED == "yes" ]]; then
logger "YubiKey Found, Unlocking ($USERNAME)"
loginctl activate ${SESSION_ID}
loginctl unlock-session ${SESSION_ID}
fi
fi
done